Tweaking downlink data rates #89
Replies: 2 comments 4 replies
-
A quick note on the tuning tips for FDD: the above mentioned tips are of course also applicable for FDD configurations. But be aware that many phones have limited bandwidth support for FDD. The Edge 30 Pro used for example seems to only support up to 40 MHz bandwidth in FDD. And that also only in band n1 and n7. Band n8 and n20 are limited to 20 MHz. With this config the achievable rate goes up to almost 190 Mbit/s.
|
Beta Was this translation helpful? Give feedback.
-
Great, thanks for this! I have a Ettus USRP B200 and when I tested the last config attached, where you reach 200mbit, I'm getting buffer underflows and the UE never attaches.. |
Beta Was this translation helpful? Give feedback.
-
Hey folks,
with the most recent public code push we've introduced a few more features and configuration knobs that allow you to achieve higher data rates. They aren't enabled by default (yet) and are easy to miss so I'd like to share them here in case anyone want's to give them a shot.
Setup details
But let's start with a baseline benchmark first. For all the experiments here I am using my standard development laptop - running Ubuntu on an Intel i7-1260P. No tweaks or special configuration. The only thing I did was to set the CPU governor to performance. Further I am using a Ettus USRP B200 mini attached to the laptop. As user equipment I am using a Motorola Edge 30 Pro. Downlink traffic is generated using iperf running on the same computer as the gNB in the Docker container hosting open5gs. To generate uplink traffic I am using Magic iPerf that I control from the phone. Both DL and UL iperf use UDP as transport protocol.
Setting the base
Ok, so let's see what we get with the baseline config using a 20 MHz TDD SISO cell. The config can be found here. With this config and gains tuned a bit to match my local setup here I get around 38 Mbit/s and 19 Mbit/s in DL and UL respectively. Not too bad. But maybe we can get a bit more even.
Reducing the SSB period
One of those new config options is the periodicity in which the SSB is broadcast. The default is every 10ms. Since the SSB occupies downlink resources that cannot be used for user traffic a higher SSB periodicity results in lower DL rates. Here you can find some more details. For this example let's set the SSB periodicity to 20ms and see what rates we get. This can be done by adding the
ssb_period
param to thecell_cfg
section in the config file or by just overwriting the default value on the command line../gnb -c config/gnb_rf_b200_tdd_n78_20mhz.yml cell_cfg --ssb_period=20
With this I could observe slightly higher DL rates - 1 Mbit/s more to be precise.
You might have noticed that the article referenced above also mentions 40ms, 80ms and even 160ms as SSB periods. Those currently can't be set because they require CORESET multiplexing pattern 2 and 3 which we currently don't use. Besides that it's probably also good to not increase the periodicity too much in order to keep cell search/selection duration low.
Enabling QAM256 in the Downlink
One of the new features added recently is the addtion of QAM256 modulation in the downlink. Under very good channel conditions this allows to send 8 Bits in every modulated symbol instead of 6 Bits using QAM64. The feature can be enabled in the config file by adding a new PDSCH subsection to the cell config.
With QAM256 enabled we can increase the DL rate significantly - by 35% to be precise. Nice!
We'll add auto-selection of QAM256 based on the UE's capabilities in one of the upcoming releases.
Increasing the cell bandwidth
Up until now we've used the default 20 MHz bandwidth. However, the Ettus B2xx series of devices can support up to 56 MHz analog bandwidth per channel. This is enough to run a 50 MHz cell. So let's give this a try and see what rates we can achieve with a 50 MHz cell. For this to work however we need to tune a few more parameters in the config. In particular we need to increase the sample rate to support the wider bandwidth.
Running the gNB with this we can get a whopping 112 Mbit/s in the downlink. Not too bad for a tiny B200mini on a standard laptop.
Here is a screenshot of NSG showing the statistics as seen from the phone.
Next steps
For this configuration with a single channel SDR in TDD mode there aren't any further big increases to be expected. With a different TDD configuration we could certainly amplify the downlink a bit further.
Please give this a try and let us know how it works for you.
Happy hacking!
Beta Was this translation helpful? Give feedback.
All reactions