NR SA PHY Throughput
This tutorial shows you how to force Callbox to schedule physical channel (PDSCH / PUSCH) without any data coming from higher layer (IP data). This can be useful to check/troubleshoot radio link problems or to identify whether a low throughput issue is based on higher layer issue or phyical layer issue.
- Whenever you are getting the low throughput than you are expecting, I always recommend you try the PHY/MAC level throughput testing first.
- Whatever the conditions are, IP layer throughput can never be greater than PHY/MAC level throughput. Therefore, figuring out proper condition to achieve the expected PHY/MAC level throughput is the first step for all other throughput test.
- In this tutorial, I will let (force) the call box to schedule every possible DL / UL slot allowed by TDD UL/DL pattern with fixed number of RB, MCS.
Table of Contents
- NR SA PHY Throughput
Test Setup
Test setup for this tutorial is as shown below. This is just for low layer testing, you may not need any complicated IP layer setup.
- SIM Card used in this tutorial is the one delivered with the system as it is.
- If you want to change the configuration, The tutorial Configuration Guide would help
Key Configuration Parameters
Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.
- force_dl_scheduler
- force_full_bsr
- pdsch_mcs
- pdsch_fixed_rb_alloc
- pdsch_fixed_rb_start
- pdsch_fixed_l_crb
- pusch_fixed_rb_alloc
- pusch_fixed_rb_start
- pusch_fixed_l_crb
Test 1 : NR SA - BW 20 Mhz
The purpose of this test is to show how to configure the gNB to generate physical layer data in both uplink and downlink without any higher layer data. The channel bandwidth is configured to be 20Mhz. I will configure max (near max) for downlink and configure continuous scheduling for uplink but not necessarily max throughput. Uplink throughput will be varying depending gNB scheduling.
Configuration
I have used gnb-sa-phyTp.cfg which is copied and modified from gnb-sa.cfg.
In gnb-sa-phyTp.cfg, I configured parameters as follows. In this test, TDD is applied but you can configure it to FDD if you like. You can select any specific tdd pattern with the parameter NR_TDD_CONFIG. I set NR_TDD_CONFIG to 2 which is one of default sample configuration provided by Amarisoft sample configuration. Channel bandwidth is set to 20Mhz by NR_BANDWIDTH.
Followings are the key parameters for this tutorial. You should be careful so that pdsch_fixed_rb_start + pdsch_fxied_l_crb should not go over the maximum RBs for the channel bandwidth you specified. In addition, be careful about setting pdsch_mcs. If you put too high value for this parameter when radio link condition is not good enough, call drop may happen.
force_dl_scheduler : true is to force the gNB to schedule every DL slot. pdsch_fixed_rb_start:0 and pdsch_fixed_l_crb:51 is to configure the full RB allocation for the channel bandwidth 20Mhz. pdsch_mcs:27 is to set MCS to 27 for every PDSCH transmission.
force_full_bsr: true is to force gNB to schedule every possible UL slot. The number of RB and mcs will be set automatically by gNB in this test since I haven't set any pusch RB and mcs parameter setting here.
Perform the Test
Power on UE and let it attach. You would see high data rate without generating IP throughput (e.g, no iperf, no LteSimserver)
If you are not achieving high enough throughput(brate), you may try followings:
-
Tune RF condition (e.g, the distance between UE and Antenna, tx/rx gain, tighten the RF cable / connector if you are testing in conductive way) until you get max value for CQI and RI. 15 is the max for CQI and the max for RI varies depending on MIMO configuration (e.g, 2 is max RI for 2x2 MIMO, 4 is max RI for 4x4 MIMO etc)
-
Tune RF condition until you get near zero values for retx
-
Tune RF condition until you get good UL snr value (I think around 15 or higher is pretty reasonable)
-
If it is not possible to get the condition mentioned above, reduce the pdsch_mcs value in the configuration until you achieve the condition mentioned above (NOTE : If you decrease the mcs value, you cannot achieve the ideal max throughput)
-
If you see negative value or too small value on phr (power headroom report), tweak rx_gain values to have higher positive phr value
Test 2 : NR SA - BW 100 Mhz
The purpose of this test is to show how to configure the gNB to generate physical layer data in both uplink and downlink without any higher layer data. The channel bandwidth is configured to be 100Mhz. I will configure max (near max) for downlink and configure continuous scheduling for uplink but not necessarily max throughput. Uplink throughput will be varying depending gNB scheduling.
Configuration
I have used gnb-sa-phyTp.cfg which is copied and modified from gnb-sa.cfg.
In gnb-sa-phyTp.cfg, I configured parameters as follows. In this test, TDD is applied but you can configure it to FDD if you like. You can select any specific tdd pattern with the parameter NR_TDD_CONFIG. I set NR_TDD_CONFIG to 2 which is one of default sample configuration provided by Amarisoft sample configuration. Channel bandwidth is set to 100Mhz by NR_BANDWIDTH.
Followings are the key parameters for this tutorial. You should be careful so that pdsch_fixed_rb_start + pdsch_fxied_l_crb should not go over the maximum RBs for the channel bandwidth you specified. In addition, be careful about setting pdsch_mcs. If you put too high value for this parameter when radio link condition is not good enough, call drop may happen.
force_dl_scheduler : true is to force the gNB to schedule every DL slot. pdsch_fixed_rb_start:0 and pdsch_fixed_l_crb:273 is to configure the full RB allocation for the channel bandwidth 100Mhz. pdsch_mcs:27 is to set MCS to 27 for every PDSCH transmission.
force_full_bsr: true is to force gNB to schedule every possible UL slot. The number of RB and mcs will be set automatically by gNB in this test since I haven't set any pusch RB and mcs parameter setting here.
Perform the Test
Power on UE and let it attach. You would see high data rate without generating IP throughput (e.g, no iperf, no LteSimserver)
If you are not achieving high enough throughput(brate), you may try followings:
-
Tune RF condition (e.g, the distance between UE and Antenna, tx/rx gain, tighten the RF cable / connector if you are testing in conductive way) until you get max value for CQI and RI. 15 is the max for CQI and the max for RI varies depending on MIMO configuration (e.g, 2 is max RI for 2x2 MIMO, 4 is max RI for 4x4 MIMO etc)
-
Tune RF condition until you get near zero values for retx
-
Tune RF condition until you get good UL snr value (I think around 15 or higher is pretty reasonable)
-
If it is not possible to get the condition mentioned above, reduce the pdsch_mcs value in the configuration until you achieve the condition mentioned above (NOTE : If you decrease the mcs value, you cannot achieve the ideal max throughput)
-
If you see negative value or too small value on phr (power headroom report), tweak rx_gain values to have higher positive phr value
Additional Information
It is observed that ping delay improves much (delay being shortened) comparing to default scheduling. It appears that UL timing (ping reply) would be improved since SR/BSR procedure (one of the possible delay factor) would not be necessary and UE can transmit PUSCH as soon as it has data to send
You can confirm that all the possible k1 and k2 set in RRC are used in PHY layer traffic implying that all possible DL and UL slots are scheduled.