This application note explains the procedure for testing data throughput using Amarisoft eNodeB and EPC (Enhanced Packet Core). We will focus on testing DL (downlink), UL (uplink) and bidirectional data transfers. We will also present recommended applications to be used with UDP and TCP as well as optimal TCP settings to achieve maximum throughput. Some configuration changes may apply if you use Amarisoft eNodeB with a third party EPC or if you use Amarisoft EPC with an external eNodeB. The verification steps could also be different depending on the commands available on third party EPC and eNodeB.
Following section gives you a brief background. Next chapter gives you some hints on the configuration and tools to be used as well as a step by step procedure to execute your throughput tests. The last two chapters focus on logging and troubleshooting to ease the debug process.
LTE is providing a very large increase in data transmission capacity of mobile networks. Advanced technologies such as MIMO (Multi-Input Multiple-Output) and CA (Carrier Aggregation) have yet enabled higher data rates.
The 3GPP TR (Technical Report) 37.901 document specifies application layer UE data throughput performance testing for both HSPA and LTE networks. It is proposed to test with both TCP and UDP as measurements utilizing each transport protocol are relevant.
There are several factors that could effectively affect the data throughput:
In the following chapter, we will go through all the above items giving recommendation on how to achieve the best throughput.
First thing to check before starting your throughput tests is the UE category. The UE category indicates the maximum theoretical UL and DL data rates that the UE can achieve. It could be found in the RRC message UE Capability Information.
The following example is an extract of OnePlus3 capability information.
UE Capability Information
{
message c1: ueCapabilityInformation: {
rrc-TransactionIdentifier 0,
criticalExtensions c1: ueCapabilityInformation-r8: {
ue-CapabilityRAT-ContainerList {
{
rat-Type eutra,
ueCapabilityRAT-Container {
accessStratumRelease rel11,
ue-Category 4,
...
},
nonCriticalExtension {
...
nonCriticalExtension {
ue-Category-v1020 6,
...
rf-Parameters-v1020 {
supportedBandCombination-r10 {
...
{
{
bandEUTRA-r10 7,
bandParametersUL-r10 {
{
ca-BandwidthClassUL-r10 a
}
},
bandParametersDL-r10 {
{
ca-BandwidthClassDL-r10 a,
supportedMIMO-CapabilityDL-r10 twoLayers
}
}
}
{
bandEUTRA-r10 3,
bandParametersDL-r10 {
{
ca-BandwidthClassDL-r10 a,
supportedMIMO-CapabilityDL-r10 twoLayers
}
}
}
},
...
}
},
...
nonCriticalExtension {
...
nonCriticalExtension {
nonCriticalExtension {
...
nonCriticalExtension {
nonCriticalExtension {
...
nonCriticalExtension {
nonCriticalExtension {
rf-Parameters-v1250 {
supportedBandListEUTRA-v1250 {
...
{
dl-256QAM-r12 supported,
ul-64QAM-r12 supported
}
}
},
ue-CategoryDL-r12 13,
ue-CategoryUL-r12 5
}
...
The field ue-Category of the UE Capability Information defines a combined uplink and downlink capability. The parameters set by the UE Category are defined in 3GPP TS 36.306. The following table depicts the DL physical layer parameters set by ue-Category.
The following table depicts the UL physical layer parameters set by ue-Category.
As can be seen in the above UE Capability Information message, the OnePlus3 phone declares to be a category 4 and category 6 device. LTE category 6 has only been added to the specification in release 10. As such, a category 6 device is required to report category 4 as well to be backward compatible with release 8 networks.
As a category 4 device, OnePlus3 is capable to support 150 Mbps in DL and 51 Mbps in UL at physical layer. DL throughput is achieved by using two layers spatial multiplexing and 64QAM modulation. As a category 6 device, OnePlus 3 device should achieve a max theoretical throughput of 301 Mbps in DL and 51 Mbps in DL.
The above ue-category tables only indicate the maximum theoretical throughput, but do not give any detail about the specific MIMO or CA configuration. As an example, a throughput of 301 Mbps in DL could be achieved either by combining two 20 MHZ carriers with each carrier supporting two layers spacial multiplexing or by using four layers spacial multiplexing in a single cell.
The most common case among commercial devices is to aggregate two carrier components of 20 MHZ each to achieve 301 Mbps in category 6. Looking back at OnePlus3 capabilities, we can see that the device is supporting carrier aggregation with two carrier components as seen in IE (Information Element) supportedBandCombination-r10. Its supported MIMO capability in DL in each carrier is two layers.
Starting from Release 12, a UE can indicate its DL category and UL category separately. The following table depicts the physical layer parameter values corresponding to ue-CategoryDL.
The following table depicts the physical layer parameter values corresponding to ue-CategoryUL.
OnePlus3 device is also declaring to be category 13 in DL with 391 Mbps in DL. This category requires support of 256QAM in DL allowing transport blocks to carry up to 97896 bits. As can be seen in OnePlus3 UE Capability Information message, it declares to support 256QAM modulation on top of CA with two carriers and two layers spacial multiplexing in DL. Combining all these features, the OnePlus3 device is able to receive a maximum of 4 transport blocks with 256QAM modulation in a TTI, ie. two transport blocks per TTI per carrier. This will give a DL rate of 4 x 97896 x 1000 = 391 Mbps.
Oneplus3 device is also declaring to be category 5 in UL with 75 Mbps in UL. This category requires support of 64QAM in UL allowing transport blocks to carry up to 75376 bits.
Once the device maximum supported data rate in UL and DL is figured out, next step would be to configure Amarisoft network. This is discussed in the next section.
It would be worthy to note that these throughput numbers are theoretical. All DL/UL TTIs do not carry only user data, there are also a certain portion of overhead due to control part such as SIBs, Signaling as well as user plane protocol headers. So real throughput you get will be less than the one listed in the above tables.
The eNodeB configuration plays an important role to achieve best performance. Once the UE category is deduced, it is important to start eNodeB with the right configuration file. The following parameters are important to achieve maximum throughput.
n_rb_dl parameter giving the number of resource blocks. This parameter is available in eNodeB configuration file.
n_rb_dl = 6, 15, 25, 50, 75, 100 for the bandwidths 1.4, 3, 5, 10, 15, 20 MHz.
transmission_mode and transmission_mode_opt parameters in the eNodeB configuration file.
transmission_mode parameter could be set to 3 or 4.
m_ri parameter configures the periodicity of CQI/PMI reports and it should be set to a non-zero value.
n_symb_cch parameter in eNodeB configuration file. A value of 0 means that eNodeB will automatically adjust the number of OFDM symbols. A value of 1 is the minimum that you can set for this parameter. The more UEs you have in your cell, the more OFDM symbols are required for PDCCH. So a value of 1 is useful for capacity testing to increase the number of resources blocks used for user data but in real life, this value should be set to 0 or > 1.
nRB-CQI and n1PUCCH-AN parameters in SIB2. Example below is taken from the default SIB2 and SIB3 configuration file sib2_3.asn used for a 20 MHZ cell in Amarisoft eNodeB. We can see that there are 20 resource blocks allocated for control in UL.
pucch-ConfigCommon {
deltaPUCCH-Shift ds2,
nRB-CQI 8,
nCS-AN 0,
n1PUCCH-AN 12
},
nRB-CQI and n1PUCCH-AN parameters could be decreased to 1 to gain a better UL throughput by editing the eNB configuration file and setting the parameters cqi_pucch_n_rb and n1_pucch_sr_count to 1. The more UEs you have in your cell, the more resources are required for PUCCH and CQI. So a value of 1 for nRB-CQI and n1PUCCH-AN is useful for capacity testing but in real life, this value should be set to > 1. You can as well check that the UL MCS is not limited by parameter pusch_max_mcs of eNodeB config file. If this is the case, you can comment the line.
dl_256qam parameter in eNodeB configuration file. If set to true, it allows 256QAM DL support for the release 12 UEs supporting this feature.
ul_64qam parameter in eNodeB configuration file. If set to true, it allows 64QAM UL support for the release 12 UEs supporting this feature.
Please note that
An LTE cell has a certain capacity based on its configuration. As an example a 20 MHZ cell, could provide a theoretical maximum rate of 151 Mbps. If there is one single UE in the cell, then potentially the eNodeB could allocate all the cell resources to this single UE. If there are more than 1 UE in the cell, then the resources are shared among them and based on the scheduling algorithm used by the eNodeB, they can get a share of the cell capacity.
A perfect radio channel is required to achieve high throughput. If you are using antennas and there are some interference in the LTE band that you are testing or if you are not in Line of Sight, then you can not achieve high rates.
We recommend the following setups in order to minimize the impact of interference in your testing
tx_gain and rx_gain are configurable in eNodeB configuration file.
iPerf tool is a commonly used network testing tool that can create TCP and UDP data streams and measure the end to end throughput. iPerf has a client and server functionality, and can measure the throughput between the two ends, either unidirectionally or bidirectionally. We recommend using iPerf for throughput tests as it is simple to use and install on a handset device.
In the following, we focus on throughput testing using iPerf.
First, you need to install iPerf on the PC where your core network is running. This is the PC where you have installed LTEMME component.
Assuming you are using a Fedora distribution, you can use the following command:
sudo dnf install iperf
For Ubuntu, the following command can be used:
sudo apt-get install iperf
You also need to install iPerf on your device under test. iPerf is available in Google Play for Android as shown below.
UDP does not require any particular configuration neither on the operating system side nor on iPerf side.
For TCP, in order to achieve maximum throughput, the TCP advertised receiver window size must be equal to or greater than the BDP (Bandwidth Delay Product), which can be expressed as follows:
BDP = TCP Bandwidth * RTT
Where
TCP bandwidth is the portion of the radio bearer used to send TCP data. This is the data rate that you would like to achieve based on your UE category and cell configuration. RTT is the Round Trip Time between TCP end-points as seen by the TCP sender. In order to have an idea of the RTT of your link, you can ping your UE from the core network PC.
Please note that some operating systems have limitations on max TCP window size. You can of course tweak your phone if you are root. If you have an Android device, you can check the following parameters with root privilege:
/proc/sys/net/ipv4/tcp_rmem: memory reserved for TCP receive buffers
/proc/sys/net/ipv4/tcp_wmem: memory reserved for TCP send buffers
/proc/sys/net/core/rmem_max: maximum receive window
/proc/sys/net/core/wmem_max: maximum send window
Parallel TCP connections could certainly help improve the TCP throughput if you can not change the above parameters in your device. With iPerf, you can use the -P <n> option to start n parallel TCP connections.
This section provides step by step instructions to test throughput using iPerf.
To do a simple downlink test in MIMO CAT 4 at 150 Mbps in UDP, you can proceed as follows:
iperf -s -u -i 1
iperf -c <UE IP address> -u -b 150M -i 1 -t 100
You can obtain the UE IP address, by typing ue command on MME monitor.
t command in eNodeB screen to activate UE statistics
You can check brate field in DL eNodeB stats for downlink throughput. You can as well check the iPerf application level throughput at the server window.
For a TCP connection, the steps are the same as above except for iPerf command. At UE side, you need to start iPerf in server mode as below:
iperf -s -i 1
The command to be used at core network PC side is:
iperf -c <UE IP address> -i 1 -t 100
To do a simple uplink test in MIMO CAT 4 at 50 Mbps in UDP, you can proceed as follows.
iperf -s -u -i 1
iperf -c <PDN Gateway IP address> -u -b 50M -i 1 -t 100
Where the PDN Gateway IP address could be found by looking at gateway parameter of the pdn object in LTEMME config file. In default configuration files, the gateway parameter is not set for PDNs. In this case, the first IP of the subnet in IPv4 will be used as gateway IP address.
t command in eNodeB screen to activate UE statistics.
You can check brate field in UL eNodeB stats for uplink throughput. You can as well check the iPerf application level throughput at the server window.
For a TCP connection, the steps are the same as above except for iPerf command. At the core network PC side, you can type the following command:
iperf -s -i 1
At the UE side, the command to run is as below:
iperf -c <PDN GATEWAY IP address> -i 1 -t 100
For simultaneous UL/DL test, you need to either run two instances of iPerf, one in UL and one in DL as described above or to use the -d option.
The below example is for bi-directional TCP test. On your core network PC, you can run
iperf -c <UE IP address> -d -i 1 -t 100
On your device, you can run
iperf -s -i 1
Following is an example of UE statistics when running simultaneous UL/DL throughput test:
The Amarisoft eNodeB generates a log file at /tmp/enb0.log that could be used for for further analysis and debugging. Best is to activate physical layer debug traces by adding phy.level=debug to log_options field in your eNodeB config file.
Below are some of the most common issues encountered during testing with recommended actions to address each issue.
| Issue | Cause/Correction |
|---|---|
| Can not achieve maximum data rate in DL |
|
| Can not achieve maximum data rate in UL |
|
This document is copyright (C) 2012-2024 Amarisoft. Its redistribution without authorization is prohibited.
This document is available without any express or implied warranty and is subject to change without notice. In no event will Amarisoft be held liable for any damages arising from the use of this document.
For any technical issue, please raise a ticket from our support site at https://support.amarisoft.com/.
To learn more about our technology and solutions, e-mail us at customer@amarisoft.com or visit https://www.amarisoft.com.