LTE SimServer
The purpose of this tutorial is to show you how to do throughput test with LTE SimServer. LTE SimServer is a built in utiliy that comes with LTE callbox that generate UDP packets for throughput test. In this tutorial, I will demonstrate not only the basic operations of LTESimServer but also throughuts for various different bandwidth.
If you are using iperf, there are cases where it is very hard to get very high throughput mainly because it is difficult to find exact options to flood enough amount of packets from iperf to radio protocol stack. Even if you managed to figure out those options with one setup(e.g, for one PC) and it may not work with another setup and you need to figure it out again for the changed setup. With LteSimServer, you can easily reach near max throughput as long as PHY throughput support (
It is assumed that you are familiar with the basic operations of the callbox and I would not explain about the very basic operations of callbox. If you are not familiar with the basic operation of the callbox, refer to other tutorials like LTE Attach, SA setup, NSA setup etc.
NOTE : In some test, you will see the throughput does not reach the ideal throughput. It is because the test is done with commercial mobile phone which does not expose RF port to perform the test in conductive way.
Table of Contents
Introduction
LTE SimServer is an integrated utility designed for LTE callboxes, primarily utilized for conducting high-performance throughput testing within LTE networks. By generating UDP packets at the radio protocol layer, LTE SimServer enables precise evaluation of data transmission capabilities across different channel bandwidth configurations, providing a practical alternative to conventional user-space tools such as iperf. Unlike iperf, which often struggles to saturate the radio protocol stack due to host-level limitations and complex tuning requirements, LTE SimServer leverages its close integration with the callbox hardware and protocol stack to achieve throughput results that closely reflect the maximum capabilities offered by the physical layer (PHY), assuming optimal radio conditions and minimal CRC errors. Architecturally, LTE SimServer operates within the LTE eNodeB emulation environment, interfacing directly with the network interface and the protocol stack, thereby bypassing many of the bottlenecks and variabilities encountered in traditional software-based throughput tests. This makes it a powerful tool for benchmarking, troubleshooting, and validating LTE data performance under diverse test scenarios and device configurations. The significance of LTE SimServer lies in its ability to provide consistent, reproducible, and accurate measurements crucial for radio access network development, device validation, and quality assurance. In the broader telecommunications ecosystem, such throughput testing is essential for optimizing network resources, ensuring device interoperability, and maintaining compliance with evolving 3GPP standards. This tutorial focuses on demonstrating the operational workflow of LTE SimServer, highlighting its efficiency in producing meaningful throughput results across varying bandwidths, and providing guidance on interpreting and troubleshooting the outcomes. It is assumed that users possess foundational knowledge of LTE callbox operation, and the tutorial is structured to expand on throughput testing methodology rather than introductory callbox procedures.
-
Context and Background
- LTE SimServer is a built-in utility within LTE callboxes, allowing for direct throughput testing by generating UDP traffic at the protocol stack level.
- Throughput testing is fundamental in evaluating the efficiency and capacity of LTE devices and networks, and LTE SimServer offers a more reliable and precise method compared to general-purpose tools like iperf.
- The tool integrates tightly with the callbox architecture, interfacing directly with the eNodeB simulation and radio protocol stack to reflect realistic performance conditions.
-
Relevance and Importance
- Accurate throughput measurement is critical for device validation, network optimization, and troubleshooting performance issues in LTE systems.
- LTE SimServer provides a means to assess maximum achievable throughput, taking into account physical layer limitations and real-world device behaviors.
- This tutorial addresses common challenges faced with alternative tools and demonstrates best practices for leveraging LTE SimServer in various test scenarios.
-
Learning Outcomes
- Understand the operational principles and workflow of LTE SimServer for conducting throughput tests.
- Gain practical skills in configuring and executing throughput tests across different LTE bandwidths using LTE SimServer.
- Learn how to interpret throughput results, identify potential issues, and apply troubleshooting techniques relevant to test outcomes.
- Appreciate the importance of physical layer throughput constraints and the impact of test setup (e.g., connection method, device limitations) on measured results.
-
Prerequisites
- Familiarity with basic LTE callbox operations and setup procedures is assumed; foundational knowledge of LTE network architecture and key concepts is beneficial.
- Prior exposure to throughput testing concepts and general understanding of UDP/IP networking will enhance comprehension.
- It is recommended to review introductory callbox tutorials (such as LTE Attach, SA setup, NSA setup) if you are new to these tools.
Summary of the Tutorial
This tutorial provides detailed steps for performing out-of-the-box throughput tests on LTE and NR SA systems with various configurations. The following summarizes the procedures and methodologies for each test case described:
-
Test Setup
- Utilize the default configuration file without any modifications for out-of-the-box testing.
- Use the supplied SIM card as delivered with the system.
- For custom configuration, refer to the corresponding configuration guide.
-
Test 1: LTE FDD b7 BW 5 MHz 2x2 MIMO
- Use the default LTE configuration file as provided.
- Verify cell configuration parameters such as frequency, band, bandwidth, and MIMO settings.
- Power on the UE, attach it to the cell, and confirm the assigned IP address.
- Navigate to /root/mme and execute ./ltesim_server to start the test server.
- Generate IP throughput traffic.
- Monitor and verify throughput using the 't' command. Adjust radio link conditions to optimize throughput.
-
Test 2: LTE FDD b7 BW 20 MHz 2x2 MIMO
- Employ a configuration file modified from enb-b7-20Mhz-2x2.cfg, which is based on gnb-sa.cfg.
- Confirm cell configuration parameters as in Test 1.
- Power on the UE, attach to the cell, and check the assigned IP address.
- Run ./ltesim_server from /root/mme.
- Generate and measure IP throughput.
- Verify throughput with the 't' command and make necessary adjustments to radio link conditions.
-
Test 3: NR SA TDD n78 BW 20 MHz 2x2 MIMO
- Use the default NR SA configuration (gnb-sa.cfg).
- Check all cell configuration settings (frequency, band, bandwidth, MIMO).
- Power on the UE, confirm cell attachment, and verify IP assignment.
- Execute ./ltesim_server from /root/mme.
- Generate IP throughput and monitor the results.
- Use the 't' command to verify throughput. Adjust radio link as needed for optimal performance.
-
Test 4: NR SA TDD n78 BW 50 MHz 2x2 MIMO
- Use the gnb-sa-50Mhz.cfg file, which is a modified version of gnb-sa.cfg.
- Perform the same configuration verification as previous tests.
- Power on the UE, attach to the cell, and check IP assignment.
- Start ./ltesim_server in /root/mme.
- Generate and verify IP throughput.
- Validate throughput using the 't' command and adjust radio link conditions as needed.
-
Test 5: NR SA TDD n78 BW 100 MHz 2x2 MIMO, 2 x sdr50
- Apply the configuration file gnb-sa-2sdr-0-1.cfg, modified from gnb-sa.cfg.
- Verify all cell configuration settings.
- Power up the UE, ensure attachment to the cell, and check IP assignment.
- Run ./ltesim_server from /root/mme.
- Generate IP throughput and monitor performance.
- Use the 't' command to monitor throughput and adjust radio link conditions accordingly for optimal results.
General Methodology:
- For each test, begin with the correct configuration file (default or modified as indicated).
- Verify cell parameters are set as intended for the specific test case.
- Bring up the UE, attach it to the cell, and confirm network connectivity by verifying the assigned IP.
- Start the required server process to facilitate throughput testing.
- Initiate and monitor IP throughput generation, using built-in tools (such as the 't' command) to observe and validate performance metrics.
- Adjust radio link conditions as needed to achieve and verify optimal throughput.
Test Setup
Test setup for this tutorial is as shown below.
- Since this test is for Out of the box testing, I used the default configuration(cfg) file without changing anything in it
- 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
I connected the antennas to the first and second SDR cards, labeled RF 1,2 / sdr 0,1. The UE connects to the eNB over the air.

Test 1 : LTE FDD b7 BW 5 Mhz 2x2 MIMO
I start with enb.default.cfg and send traffic to the UE with LTE SimServer. The eNB trace provides the radio throughput and link-quality values for this baseline test.
Configuration :
In this test, I used default LTE configuration as shown below.

Following is the configuration in enb.default.cfg
I set N_RB_DL to 25 for 5 MHz and N_ANTENNA_DL to 2 for 2x2 MIMO. TDD is 0, which selects FDD.
N_ANTENNA_UL is 2, and CHANNEL_SIM is 0 to disable the channel simulator. NG_ENB is also 0. Change N_RB_DL when you want to use another LTE bandwidth.

Peform the Test
Check cell configuration and confirm that they (frequency, band, bandwidth, mimo etc) are configured as you intented
I use cell phy to verify LTE band 7 with a 5 MHz bandwidth. The downlink ARFCN is 3350, and the uplink ARFCN is 21350.
The downlink has ANT 2 and NL 2, with SCS 15 and QAM 256. The uplink has ANT 2 and NL 1, with SCS 15 and QAM 64.
The cell command reports PCI 1, TAC 0x0001, and PLMN 00101. Check these values along with the frequency and bandwidth before attaching the UE.

Power on UE and Get UE attached to the cell and check the IP assigned to UE
I use ue at the MME prompt to check the subscriber entry. REG is Y, and IP_ADDR includes 192.168.3.2 and 192.168.4.2. I use 192.168.3.2 as the destination for the traffic command.

Go to the directory /root/mme and run ./ltesim_server
After ./ltesim_server starts, I enter help at the (sim) prompt to list the available commands. cbr_send starts the sending simulation, and cbr_recv starts the receiving simulation. quit stops the Simulation server and exits.

Generate IP throughput
I use cbr_send with destination 192.168.3.2, data rate 100M, and duration 600 seconds. The first argument is the UE IP address. The second sets the data rate, and the third sets the test duration in seconds.
Set the data rate a little higher than the maximum throughput the UE can achieve. If the UE receives a different IP address, use that address as the destination.

Verify the throughput
Verify the throughput with 't' command and tweak radio link condition to achieve the throughput as much as possible.
The DL brate is mostly 41.8M, with one entry at 42.3M. CQI is 15, ri is 2, mcs is 25.9, and retx is 0.
For these checks, aim for mcs near 28 with 64QAM or 27 with 256QAM. Low CQI or high retx can prevent this. Compare DL brate with the expected maximum for the channel bandwidth and maximum modulation scheme.
Adjust distance, antenna direction, or cable connections to reach CQI 15 and ri 2 for the configured MIMO. Keep retx as low as possible.

Test 2 : LTE FDD b7 BW 20 Mhz 2x2 MIMO
I increase the LTE bandwidth by setting N_RB_DL to 100. I then use a higher traffic rate to check throughput with the wider channel.
Configuration :
In this test, I used a configuration file that are modified from enb-b7-20Mhz-2x2.cfg which was copied from gnb-sa.cfg as shown below.

Following is the configuration in enb-b7-20Mhz-2x2.cfg
I set N_RB_DL to 100 for 20 MHz and N_ANTENNA_DL to 2 for 2x2 MIMO. TDD is 0, which selects FDD.
N_ANTENNA_UL is 2, and CHANNEL_SIM is 0 to disable the channel simulator. NG_ENB is also 0. Change N_RB_DL when you want to use another LTE bandwidth.

Peform the Test
Check cell configuration and confirm that they (frequency, band, bandwidth, mimo etc) are configured as you intented
I use cell phy to verify LTE band 7 with a 20 MHz bandwidth. The downlink ARFCN is 3350, and the uplink ARFCN is 21350.
The downlink has ANT 2 and NL 2, with SCS 15 and QAM 256. The uplink has ANT 2 and NL 1, with SCS 15 and QAM 64.
The cell command reports PCI 1, TAC 0x0001, and PLMN 00101. Check these values along with the frequency and bandwidth before attaching the UE.

Power on UE and Get UE attached to the cell and check the IP assigned to UE
I use ue at the MME prompt to check the subscriber entry. REG is Y, and IP_ADDR includes 192.168.3.2 and 192.168.4.2. I use 192.168.3.2 as the destination for the traffic command.

Go to the directory /root/mme and run ./ltesim_server
After ./ltesim_server starts, I enter help at the (sim) prompt to list the available commands. cbr_send starts the sending simulation, and cbr_recv starts the receiving simulation. quit stops the Simulation server and exits.

Generate IP throughput
I use cbr_send with destination 192.168.3.2, data rate 200M, and duration 600 seconds. The first argument is the UE IP address. The second sets the data rate, and the third sets the test duration in seconds.
Set the data rate a little higher than the maximum throughput the UE can achieve. If the UE receives a different IP address, use that address as the destination.

Verify the throughput
Verify the throughput with 't' command and tweak radio link condition to achieve the throughput as much as possible.
The DL brate ranges from 193M to 195M. CQI is 15, ri is 2, and mcs is 27.0. The retx values range from 1 to 37.
For these checks, aim for mcs near 28 with 64QAM or 27 with 256QAM. Low CQI or high retx can prevent this. Compare DL brate with the expected maximum for the channel bandwidth and maximum modulation scheme.
Adjust distance, antenna direction, or cable connections to reach CQI 15 and ri 2 for the configured MIMO. Keep retx as low as possible.

Test 3 : NR SA TDD n78 BW20 Mhz 2x2 MIMO
I select gnb-sa.cfg for the NR test and send traffic to the UE with LTE SimServer. The gNB trace lets me check throughput together with CQI and retransmissions.
Configuration :
In this test, I used default NR SA configuration (gnb-sa.cfg) as shown below.

Following is the configuration in gnb-sa.cfg
NR_TDD is 1 for TDD, and FR2 is 0 for FR1. NR_BANDWIDTH is 20 MHz, and N_ANTENNA_DL is 2 for 2x2 MIMO.
NR_TDD_CONFIG is 2, N_ANTENNA_UL is 1, and NR_LONG_PUCCH_FORMAT is 2. Change NR_BANDWIDTH when you want to use another NR channel bandwidth.

Peform the Test
Check cell configuration and confirm that they (frequency, band, bandwidth, mimo etc) are configured as you intented
I use cell phy to verify NR band n78 with a 20 MHz bandwidth. The downlink and uplink ARFCN values are both 632628.
The downlink has ANT 2 and NL 2, while the uplink has ANT 1 and NL 1. Both use SCS 30 and QAM 256. The SSB ARFCN is 632544, with SCS 30.
The cell command reports PCI 500, TAC 0x000064, and PLMN 00101. Check these values along with the frequency and bandwidth before attaching the UE.

Power on UE and Get UE attached to the cell and check the IP assigned to UE
I use ue at the MME prompt to check the subscriber entry. REG is Y, and IP_ADDR includes 192.168.3.2 and 192.168.4.2. I use 192.168.3.2 as the destination for the traffic command.

Go to the directory /root/mme and run ./ltesim_server
After ./ltesim_server starts, I enter help at the (sim) prompt to list the available commands. cbr_send starts the sending simulation, and cbr_recv starts the receiving simulation. quit stops the Simulation server and exits.

Generate IP throughput
I use cbr_send with destination 192.168.3.2, data rate 300M, and duration 600 seconds. The first argument is the UE IP address. The second sets the data rate, and the third sets the test duration in seconds.
Set the data rate a little higher than the maximum throughput the UE can achieve. If the UE receives a different IP address, use that address as the destination.

Verify the throughput
Verify the throughput with 't' command and tweak radio link condition to achieve the throughput as much as possible.
The DL brate is mostly 108M, with one entry at 110M. CQI is 15 and ri is 2, but mcs remains 23.0. After the first entry, retx is about 300.
For these checks, aim for mcs near 28 with 64QAM or 27 with 256QAM. Low CQI or high retx can prevent this. Compare DL brate with the expected maximum for the channel bandwidth and maximum modulation scheme.
Adjust distance, antenna direction, or cable connections to reach CQI 15 and ri 2 for the configured MIMO. Keep retx as low as possible.
Check that frequency, band, bandwidth, and MIMO match the intended configuration. Here, high retx from CRC errors makes the network schedule below the maximum even with CQI 15. You may improve the radio link by using an RF cable instead of antennas, or by trying a lower frequency. This needs trial and error; there is no single fix.

Test 4 : NR SA TDD n78 BW50 Mhz 2x2 MIMO
I use gnb-sa-50Mhz.cfg to increase NR_BANDWIDTH to 50. I repeat the traffic test and check whether retransmissions limit the throughput.
Configuration :
In this test, I used gnb-sa-50Mhz.cfg which is copied and modified from gnb-sa.cfg as shown below.

Following is the configuration in gnb-sa-50Mhz.cfg
NR_TDD is 1 for TDD, and FR2 is 0 for FR1. NR_BANDWIDTH is 50 MHz, and N_ANTENNA_DL is 2 for 2x2 MIMO.
NR_TDD_CONFIG is 2, N_ANTENNA_UL is 1, and NR_LONG_PUCCH_FORMAT is 2. Change NR_BANDWIDTH when you want to use another NR channel bandwidth.

Peform the Test
Check cell configuration and confirm that they (frequency, band, bandwidth, mimo etc) are configured as you intented
I use cell phy to verify NR band n78 with a 50 MHz bandwidth. The downlink and uplink ARFCN values are both 632628.
The downlink has ANT 2 and NL 2, while the uplink has ANT 1 and NL 1. Both use SCS 30 and QAM 256. The SSB ARFCN is 631584, with SCS 30.
The cell command reports PCI 500, TAC 0x000064, and PLMN 00101. Check these values along with the frequency and bandwidth before attaching the UE.

Power on UE and Get UE attached to the cell and check the IP assigned to UE
I use ue at the MME prompt to check the subscriber entry. REG is Y, and IP_ADDR includes 192.168.3.2 and 192.168.4.2. I use 192.168.3.2 as the destination for the traffic command.

Go to the directory /root/mme and run ./ltesim_server
After ./ltesim_server starts, I enter help at the (sim) prompt to list the available commands. cbr_send starts the sending simulation, and cbr_recv starts the receiving simulation. quit stops the Simulation server and exits.

Generate IP throughput
I use cbr_send with destination 192.168.3.2, data rate 300M, and duration 600 seconds. The first argument is the UE IP address. The second sets the data rate, and the third sets the test duration in seconds.
Set the data rate a little higher than the maximum throughput the UE can achieve. If the UE receives a different IP address, use that address as the destination.

Verify the throughput
Verify the throughput with 't' command and tweak radio link condition to achieve the throughput as much as possible.
The DL brate is mostly 206M, with one entry at 212M. CQI is 15 and ri is 2, but mcs remains 23.0. After the first entry, retx is about 400.
For these checks, aim for mcs near 28 with 64QAM or 27 with 256QAM. Low CQI or high retx can prevent this. Compare DL brate with the expected maximum for the channel bandwidth and maximum modulation scheme.
Adjust distance, antenna direction, or cable connections to reach CQI 15 and ri 2 for the configured MIMO. Keep retx as low as possible.
Check that frequency, band, bandwidth, and MIMO match the intended configuration. Here, high retx from CRC errors makes the network schedule below the maximum even with CQI 15. You may improve the radio link by using an RF cable instead of antennas, or by trying a lower frequency. This needs trial and error; there is no single fix.

Test 5 : NR SA TDD n78 BW100 Mhz 2x2 MIMO, 2 x sdr50
I use gnb-sa-2sdr-0-1.cfg with /dev/sdr0 and /dev/sdr1 for this test. I raise the traffic rate to 600M before checking the gNB throughput.
Configuration :
In this test, I used the configuration gnb-sa-2sdr-0-1.cfg which was copied and modified from gnb-sa.cfg as shown below.

Following is the configuration in gnb-sa-2sdr-0-1.cfg
NR_TDD is 1 for TDD, and FR2 is 0 for FR1. NR_BANDWIDTH is 100 MHz, and N_ANTENNA_DL is 2 for 2x2 MIMO.
NR_TDD_CONFIG is 2, N_ANTENNA_UL is 1, and NR_LONG_PUCCH_FORMAT is 2. Change NR_BANDWIDTH when you want to use another NR channel bandwidth.
I set rf_driver.name to "sdr" and args to "dev0=/dev/sdr0,dev1=/dev/sdr1" in the #else branch. dev0 is always the master device. The N_ANTENNA_DL >= 4 branch is not used because N_ANTENNA_DL is 2.

Peform the Test
Check cell configuration and confirm that they (frequency, band, bandwidth, mimo etc) are configured as you intented
I use cell phy to verify NR band n78 with a 100 MHz bandwidth. The downlink and uplink ARFCN values are both 632628.
The downlink has ANT 2 and NL 2, while the uplink has ANT 1 and NL 1. Both use SCS 30 and QAM 256. The SSB ARFCN is 629952, with SCS 30.
The cell command reports PCI 500, TAC 0x000064, and PLMN 00101. Check these values along with the frequency and bandwidth before attaching the UE.

Power on UE and Get UE attached to the cell and check the IP assigned to UE
I use ue at the MME prompt to check the subscriber entry. REG is Y, and IP_ADDR includes 192.168.3.2 and 192.168.4.2. I use 192.168.3.2 as the destination for the traffic command.

Go to the directory /root/mme and run ./ltesim_server
After ./ltesim_server starts, I enter help at the (sim) prompt to list the available commands. cbr_send starts the sending simulation, and cbr_recv starts the receiving simulation. quit stops the Simulation server and exits.

Generate IP throughput
I use cbr_send with destination 192.168.3.2, data rate 600M, and duration 600 seconds. The first argument is the UE IP address. The second sets the data rate, and the third sets the test duration in seconds.
Set the data rate a little higher than the maximum throughput the UE can achieve. If the UE receives a different IP address, use that address as the destination.

Verify the throughput
Verify the throughput with 't' command and tweak radio link condition to achieve the throughput as much as possible.
The DL brate is mostly 573M, with one entry at 559M. CQI is 15 and ri is 2, but mcs remains 23.0. After the first entry, retx is about 400.
For these checks, aim for mcs near 28 with 64QAM or 27 with 256QAM. Low CQI or high retx can prevent this. Compare DL brate with the expected maximum for the channel bandwidth and maximum modulation scheme.
Adjust distance, antenna direction, or cable connections to reach CQI 15 and ri 2 for the configured MIMO. Keep retx as low as possible.
Check that frequency, band, bandwidth, and MIMO match the intended configuration. Here, high retx from CRC errors makes the network schedule below the maximum even with CQI 15. You may improve the radio link by using an RF cable instead of antennas, or by trying a lower frequency. This needs trial and error; there is no single fix.
