Amarisoft

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.

NOTE : you can do the same test with RemoteAPI instead of changing the configuration file. If you want to change these low layer parameters while you are running a test (e.g, for troubleshooting purpose), it would be better to use RemoteAPI rather than setting those parameters in configuration file. Check out this tutorial for the test with Remote API.

Table of Contents

Introduction

The ability to diagnose and isolate throughput issues in wireless communication systems is critical for ensuring optimal performance and reliability. In the context of 4G and 5G radio access networks, the physical downlink shared channel (PDSCH) and physical uplink shared channel (PUSCH) are fundamental components responsible for user data transmission between the user equipment (UE) and the base station. This tutorial focuses on leveraging a Callbox—a versatile network simulator used in lab environments—to force the scheduling of PDSCH and PUSCH channels without the involvement of higher layer IP data. By bypassing the IP layer and directly configuring the scheduling of physical channels, engineers can effectively isolate and analyze radio link performance or identify whether reduced throughput originates from physical layer constraints or higher layer bottlenecks. The approach involves configuring the Callbox to maximize the usage of available transmission opportunities in both downlink and uplink directions in accordance with TDD (Time Division Duplex) UL/DL patterns, using fixed resource block (RB) and modulation and coding scheme (MCS) parameters. This method provides valuable insight into the achievable throughput at the PHY/MAC layer, forming the basis for benchmarking and troubleshooting within the radio access network architecture. Understanding this process is essential for radio engineers, testers, and network optimization specialists aiming to validate physical layer performance independently from higher layer protocol influences, thus ensuring a robust and methodical approach to wireless system testing and troubleshooting.

Summary of the Tutorial

This tutorial provides a procedure for low layer physical throughput testing in an NR Standalone (SA) environment, with a focus on configuring the gNB and UE for data generation at the physical layer. The overall methodology is designed to measure maximum possible physical layer throughput without engaging higher layer data traffic.

This procedure enables physical layer throughput assessment in a controlled environment, relying primarily on gNB parameter configuration and basic RF tuning, without requiring complex higher-layer or IP-level setup.

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.

TestSetup Callbox UE 2sdr 01

Key Configuration Parameters

Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.

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.

NR SA PhyTp Test 1 Config 01

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.

NR SA PhyTp Test 1 Config 02

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.

NR SA PhyTp Test 1 Config 03

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)

NR SA PhyTp Test 1 Run 01

If you are not achieving high enough throughput(brate), you may try followings:

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.  

NR SA PhyTp Test 1 Config 01

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.

NR SA PhyTp Test 2 Config 02

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.

NR SA PhyTp Test 2 Config 03

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)

NR SA PhyTp Test 2 Run 01

If you are not achieving high enough throughput(brate), you may try followings:

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

NR SA PhyTp AdditionalInfo 01

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.

NR SA PhyTp AdditionalInfo 02