Amarisoft

Channel Simulator - UEsim

 

This tutorial is about how to configure channel simulator for UEsim and verify it using Amarisoft Callbox. Applying channel simulation to UEsim mean Uplink channel simulation. The channel model you can apply for UEsim is listed as follows

The most common channel simulation we do is Near / Far modeling as illustrated below. In this scenario, UEsim simulator a UE moving toward a certain direction at a constant speed and observe UL channel power (e.g, PUSCH, PUCCH power) and throughput from gNB.

 

Table of Contents

 

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 UEsim 1sdr 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 : Basic AWGN channel

In this test, we simulate a situation where a UE is moving away from the cell at a constant speed under simple awgn radio channel

 

Configuration

I have used gnb-sa-channel-sim.cfg that is copied and modified from gnb-sa.cfg. I will use the same file for all the test in this tutorial and just modify the parameters in the file without creating a new file.

Channel Simulator configuration or test result related to Config 01

I am using the default mme, ims config as shown below.

NR DSS Config 02

I used ue-nr-sa-chan-sim.cfg which is copied and modifed from ue-nr-sa.cfg on UEsim.

Channel Simulator configuration or test result related to Config 03

Following is the configuration on gNB. On gNB side, the configuration is almost identical to gnb-sa.cfg. The only difference is NR_BANDWIDTH which is changed to 40 (20 is the default value)

Channel Simulator configuration or test result related to Config 04

 

Following is the basic configuration in ue-nr-sa-chan-sim.cfg . The configuration here should match the configuration of Callbox(gNB). The only thing to be set independantly are tx_gain and rx_gain that should be adjusted depending on test setup.

Channel Simulator configuration or test result related to Config 07

Enable channel_sim and delay_sim in cell_groups and specify the position, antenna radiation type (antenna: {type :"isotropic"}, cell reference power(ref_signal_power) broadcast in SIB1. (NOTE : you need to figure out cell reference power from the SIB1 message for gNB/eNB or UEsim log. Refer to this tutorial on how to figure out the cell reference power). ul_power_attenuation is Real uplink analog attenuation (in dB) actually present between the UE simulator and the eNodeB which is described in details here.

Then specify UE position (position), noise floor(noise_spd) and channel type( channel:{ type:"awgn"} in ue_list:[{  }]. The position specified here is the initial position, you can move this position while running with RemoteAPI.

This part is mainly for automation of the test process. But this is not mandatory, you can perform all of these operation manually. Just for this specific test, power_on, running LteSimServer and power_off is done automatically without human intervention.

 

Perform the Test

I will follow the same procedure as shown here for all the test in this tutorial.

Check if the cell is configured as intended by checking the output of 'cell phy'

Channel Simulator configuration or test result related to Run 01

Start lte service on Callbox(gNB) and UEsim(UE) and make it sure that the UE is connected.

Once the initial attach is complete, go to /root/ue directory on UEsim and run the following remote API. This specific command is to move UE (ue_id 1) to move away from the cell at the speed of 10 km/h.

./ws.js ue '{"message" : "ue_move", "ue_id" : 1, "speed" : 10, "direction" : 0}'

Then check how some of physical layer measurement changes in gNB trace log. Followings are some of the highlights you would notice :

Channel Simulator configuration or test result related to Run 02

To check the effect of channel simulation on downlink, you can check out the 't' output on UEsim. You would notice that SINR and RSRP for DL decreases as UE moves farther away from the cell.

 

Log Analysis

Sample Log

You can analyze the channel characteristics with Callbox log or UEsim log, but I think Callbox log is better option since it is based on real measurement.

First let's check out SNR and Power(EPRE) for uplink data channel (PUSCH). As you see in the [SNR] tab, you see both SNR and EPRE for PUSCH(UL data) gradually decreseas as the mobile phone gets farther from gNB.

Now let's check out PHR(Power Headroom). As you see in the [Power head room] tab, you see the phr gradually decreseas as the mobile phone gets farther from gNB.

Then let's check out throughput. As you see in the [Throughput] tab, you see the throughput gradually decreseas as the mobile phone gets farther from gNB.

Now let's look into RX/TX packet status. I want to focus on RX Bad CRC. You may expect this to be increasing as UE get farther away from gNB, but in this result it stay same over most of the location except where the UE got very far away. The CRC Bad stays at very low becaues gNB is performing link adaption procedure (e.g, changing MCS to prevent CRC error)

You can confirm how link adaptation goes on in [MCS] tab. You see that gNB reduces MCS as UE gets farther away from the cell.

Since the UE is getting farther away, you may guess that there would  be continuous adjustment of UL transmission timing with Timing Advance. This can be confirmed by the MAC CE with TA field. (NOTE : 'ta' in the log indicates TAspecified in 38.213-4.2. So ta=31 indicates no Timining Advance change(i.e, no changes in UL transmission timing), otherwise it advance or delay the UL transmission timing)

Sample Log

This is optional. You can do the same analysis shown above with UEsim log. An advantage of analyzing the log on UEsim would be that you can figure out exact point of the time that UE start moving from the log print ('move x=10 y=0 speed=10 dir=0 elevation=0' in this case). All other analysis is same as we checked with gNB log.

 

 

Test 2 : 3GPP Profile - EPA

In this test, we simulate a situation where a UE is moving away from the cell at a constant speed under one of 3GPP predefined channel model named "EPA"

 

Configuration

I have used gnb-sa-channel-sim.cfg that is copied and modified from gnb-sa.cfg. I will use the same file for all the test in this tutorial and just modify the parameters in the file without creating a new file.

Channel Simulator configuration or test result related to Config 01

I am using the default mme, ims config as shown below.

NR DSS Config 02

I used ue-nr-sa-chan-sim-epa.cfg which is copied and modifed from ue-nr-sa.cfg on UEsim.

Channel Simulator configuration or test result related to Config 03

Following is the configuration on gNB. On gNB side, the configuration is almost identical to gnb-sa.cfg. The only difference is NR_BANDWIDTH which is changed to 40 (20 is the default value)

Channel Simulator configuration or test result related to Config 04

 

Following is the basic configuration in ue-nr-sa-chan-sim.cfg . The configuration here should match the configuration of Callbox(gNB). The only thing to be set independantly are tx_gain and rx_gain that should be adjusted depending on test setup.

Channel Simulator configuration or test result related to Config 07

Enable channel_sim and delay_sim in cell_groups and specify the position, antenna radiation type (antenna: {type :"isotropic"}, cell reference power(ref_signal_power) broadcast in SIB1. (NOTE : you need to figure out cell reference power from the SIB1 message for gNB/eNB or UEsim log. Refer to this tutorial on how to figure out the cell reference power). ul_power_attenuation is Real uplink analog attenuation (in dB) actually present between the UE simulator and the eNodeB which is described in details here.

Then specify UE position (position), noise floor(noise_spd) and channel type( channel:{ type:"epa", freq_doppler: 50, mimo_correlation: "low"} in ue_list:[{  }]. The position specified here is the initial position, you can move this position while running with RemoteAPI.

This part is mainly for automation of the test process. But this is not mandatory, you can perform all of these operation manually. Just for this specific test, power_on, running LteSimServer and power_off is done automatically without human intervention.

 

Perform the Test

I will follow the same procedure as shown here for all the test in this tutorial.

Check if the cell is configured as intended by checking the output of 'cell phy'

Channel Simulator configuration or test result related to Run 01

Start lte service on Callbox(gNB) and UEsim(UE) and make it sure that the UE is connected.

Once the initial attach is complete, go to /root/ue directory on UEsim and run the following remote API. This specific command is to move UE (ue_id 1) to move away from the cell at the speed of 10 km/h.

./ws.js ue '{"message" : "ue_move", "ue_id" : 1, "speed" : 10, "direction" : 0}'

Then check how some of physical layer measurement changes in gNB trace log. Followings are some of the highlights you would notice :

Channel Simulator configuration or test result related to Run 02

To check the effect of channel simulation on downlink, you can check out the 't' output on UEsim. You would notice that SINR and RSRP for DL decreases as UE moves farther away from the cell.

 

Test 3 : Triggering PingPong Handover by Channel Simulator - LTE/Single UE

In this test, we simulate a situation where a UE is moving away from the cell at a constant speed under simple pedesterial channel. It is similar to previous test cases, but the difference is that we move UE using internal configuration parameter instead of remote API. This method would be much handy than remote API in some scenario where you want to trigger Handover for multiple UEs and to trigger handover repeatedly (e.g, ping pong handover)

Configuration

I have used enb-pingpong-ho.cfg that is copied and modified from gnb-sa.cfg. I will use the same file for all the test in this tutorial and just modify the parameters in the file without creating a new file.

Channel Simulator configuration or test result related to Config 01

I am using the default mme, ims config as shown below.

NR DSS Config 02

I used ue-pingpong-ho.cfg which is copied and modifed from ue-nr-sa.cfg on UEsim.

Channel Simulator configuration or test result related to Config 03

Following is the configuration on eNB. On eNB side, the configuration is almost identical to enb-2cell-ho.cfg.

Obviously we set N_CELL to 2 because this is handover scenario between two cells. and I set TDD to 1 (i.e, TDD), but you can do the same thing for FDD as well.

Channel Simulator configuration or test result related to Config 04

Now let's configure the two cells that will be involved in handover.  Note that we configured the different frequency for the two cells. It means that we will perform inter frequency handover in this test.

This is the configuration for the first cell. Note that the second cell (n_id_cell 2) is configured as a neighbour cell (ncell_list) to the first cell

This is the configuration for the second cell. Note that the first cell (n_id_cell 1) is configured as a neighbour cell (ncell_list) to the second cell

With Amarisoft, you can do both blind handover and measurement based handover. In this test, we will do measurement based handover. In order to do measurement based handover, you need to configure appropriate measurement condition for the handover. We usually configure this in cell_default block.

Configure measurement condition for source cell measurement and destination/handover measurement condition(a3 event in this case) as follows. In this test, we will do inter frequency handover, so we need to configure measurement gap (meas_gap_config) as well.

In  ue-pingpong-ho.cfg , followings are configured. Since the main purpose of this test is to show how to simulate UE moving back and forth between two cells triggering pinpong handover. The UEsim configuration is the main part to be noted.

As in eNB case, N_CELL is set to 2 since this is the handover between the two cells. TDD is set to 1 (i.e, TDD) which is just to match the eNB configuration. Important to note is that CHANNEL_SIM is set to 1 which indicates the channel simulator will be used.

Now in cell_groups, channel_sim is set true which enables channel simulation functionality.

The position of the first cell is set to [50,0] and reference signal power(ref_signal_power), ul_power_attenuation and antenna type is configured for the simulated radio channel. In the same way, the simulated channel configuration for the second cell is set. The position of the cell is set to [-50,0] and all other configurations are same as the first cell.

Following(ue_list) is the configuration that applies to a specific UE. Here you see the channel parameters that applies to the UE. First, UE is positioned at the [0,0] which is at the mid point between the two cells. It start moving towards the right cell (direction 0 meaning angle 0 degree). When it reaches the max_distance (in meters), it bounces back (turn 180 degree) and moves until it reaches min_distance (default 0). The moving speed is set to 5 km/h (speed: 5) in this test. The radio channel for this test is set to a 3GPP standard channel ("eva").

Following is optional configuration to automatically generate IP data stream. You can generate the IP data manually (e.g, ping)

 

Perform the Test

Now run the callbox and check out basic physical cell configuration. Note that two cells are configured for inter cellular frquency (NOTE : You can try with intra cellular configuration as well, but in this case the UE would be suffering from serious interference. If you use Amarisoft UEsim, the intracell interference can easily been resolved by connecting eNB to UEsim via RF cable instead of antenna).

Then Start UEsim and power on UE and let it alone for some time. Then you will see the cell that the UE connected are switching back and forth between the two cells. Note that RSRP increases and descrease by itself implying that UE is getting closer and farther from the cell.

 

Log Analysis

Sample Log(eNB)

Sample Log(UEsim)

First it is always good to check with UE capability.

Since this test is configured for inter frequency handover, make it sure that UE capability support the related features (Interfrequency measurement report and interfrequency handover)

Now eNB sets up measurement configuration. First, defines measurement object that sets up the measurement frequency in measObjectToAddModList.

Then configures measurement events. In this case, two types of the events eventA2 and event A3 are defined in reportConfigToAddModList.

Combining the measurement object and report configuration, specific measurement configurations are defined in measIdToAddModList. In this case, two measurement configurations are defined. One with measObjectId 1 and reportConfigId 1 and the second one with measObjectId 2 and reportConfig 2. At this point, measurementGap is not configured yet.

If the measurement requirement is met, UE send measurement Report for the PCell. By measId, you would notice that this is the report for event A2

When the event A2 report is recieved, eNB activates measurement Gap. (NOTE : How the measurements are configured in various situation would be a little complicated. Refer to meas_config_desc for further details)

Now UE sends measurement report for both PCell and neighbor cell. By the measId and its definition shown above, you would notice this is the report for event A3.

Now eNB sends RRC Connection Reconfiguration to UE for handover. In addition to handover configuration, various measurement reconfiguration are done in the same message as well.

First the unnecessary measurement configurations at this points are removed.

Then some ReportConfigurations are sets up again.

Finally Handover configuration is configured and handover is done in both UE and eNB.

Here I want to share various plots showing different states / quality of the radio channel. Since fading is being applied during the test, the plots may not always obvious in terms of triggering handover, but I just want to let you know that you can use these plots for more intuitive analysis. If you apply more simple channel model (e.g, with constant awgn channel rather than fading channel), you may have a little bit clearer correlation between these plots and the UE movement(position change)

At this moment, I am not much interested in throughput related plots. I like to check plots more related to radio channel quality.

Check out SNR plots and see how each of the physical channel characterstics varies.

Check out CQI plot and see how it varies

Check out Rank plot and see how it changes

Check out Timing Advance. You see the drastic discontinuity at the point of handover.

Check out TPC command plot. You see the drastic discontinuity at the point of handover.

Check out Power headroom plot. You see the drastic discontinuity at the point of handover.

 

Test 4 : Triggering PingPong Handover by Channel Simulator - LTE/64 UE

In this test, we simulate a situation where a UE is moving away from the cell at a constant speed under simple pedesterial channel. In terms of protocol sequence and mechanism, this test is almost same as the previous test (Test 3). The difference is that the previous test is with only one UE whereas this test is with multiple UEs (64 UEs). This test can be a good reference test to check how a gNB can handle the overloaded handover process (i.e, triggering and processing the handover for many UEs in short time span).

 

Configuration

I have used gnb-sa-pingpong-ho-64ue.cfg that is copied and modified from gnb-sa.cfg. I will use the same file for all the test in this tutorial and just modify the parameters in the file without creating a new file.

Channel Simulator configuration or test result related to Config 01

I am using the mme-ims-64.cfg as shown below. Within mme-ims-64.cfg, ue_db_64-UE.cfg is used (included)

NR DSS Config 02

I used ue-nr-sa-pingpong-ho-64ue.cfg which is copied and modifed from ue-nr-sa.cfg on UEsim.

Channel Simulator configuration or test result related to Config 03

Following is the configuration on gNB.

In this test, we set the bandwidth of both cells to 100 Mhz. If you are using the callbox with sdr 50, I would suggest you to set narrower bandwidth (e.g, 20 or 40 Mhz) to avoid other complications (e.g, configuring rf_driver).

Channel Simulator configuration or test result related to Config 04

Now let's configure the two cells that will be involved in handover.  Note that we configured the different frequency for the two cells. It means that we will perform inter frequency handover in this test.

As shown here, the second cell (cell_id 2) is set as the neighbour cell (ncell_list) of the first cell and the first cell (cell_id 1) is set as the neighbour cell (ncell_list) of the second cell

With Amarisoft, you can do both blind handover and measurement based handover. In this test, we will do measurement based handover. In order to do measurement based handover, you need to configure appropriate measurement condition for the handover. We usually configure this in cell_default block.

Configure measurement condition for source cell measurement and destination/handover measurement condition(a3 event in this case) as follows. In this test, we will do inter frequency handover, so we need to configure measurement gap (meas_gap_config) as well.

Since this test should handle multiple UE, you need to include ue data base carrying the USIM information of all the UEs (ue_db_64-UE.cfg)

Within ue_db_64-UE.cfg , USIM information of all the UEs are defined as shown below (In this test, we will use the USIMs that differs only in terms of imsi and all other parameters are set to same value)

In  ue-nr-sa-pingpong-ho-64ue.cfg , followings are configured. Since the main purpose of this test is to show how to simulate UE moving back and forth between two cells triggering pinpong handover. The UEsim configuration is the main part to be noted.

TDD is set to 1 (i.e, TDD) which is just to match the eNB configuration. Important to note is that CHANNEL_SIM is set to 1 which indicates the channel simulator will be used.

Now in cell_groups, channel_sim is set true which enables channel simulation functionality.

The position of the first cell is set to [50,0] and reference signal power(ref_signal_power), ul_power_attenuation and antenna type is configured for the simulated radio channel. In the same way, the simulated channel configuration for the second cell is set. The position of the cell is set to [-50,0] and all other configurations are same as the first cell.

Following(ue_list) is the configuration that applies to a specific UE. Here you see the channel parameters that applies to the UE. First, UE is positioned at the [0,0] which is at the mid point between the two cells. It start moving towards the right cell (direction 0 meaning angle 0 degree). When it reaches the max_distance (in meters), it bounces back (turn 180 degree) and moves until it reaches min_distance (default 0). The moving speed is set to 5 km/h (speed: 5) in this test. The radio channel for this test is set to a 3GPP standard channel ("epa").

 

Perform the Test

Now run the callbox and check out basic physical cell configuration. Note that two cells are configured for inter cellular frquency (NOTE : You can try with intra cellular configuration as well, but in this case the UE would be suffering from serious interference. If you use Amarisoft UEsim, the intracell interference can easily been resolved by connecting gNB to UEsim via RF cable instead of antenna).

In this test, we used the UE scenarion function of UEsim WebGUI to generate USIM parameters automatically (NOTE : Refer to this tutorial for the details of UEsim operation)

Then [Start] Scenario and you will see the registration process of all the UEs

You can check some of high level KPIs (e.g, Bitrate, Packets, Signals etc)

You can check out the high level status of each UEs with t command. Check out CL column value for each UE to check which cell a UE is connected to.

 

Log Analysis

Sample Log(eNB)

You can check out if all the UEs completed registration. You may also the total amount of time for the registration completion of all 64 UEs.

After the completion of the registration, gNB start the process of handover by sending measurement report configuration for each UEs.

If a specific UE reaches a location where the channel condition(recieved cell power) mets the condition of the measurement configuration, it send measurement report required for the handover

Once gNB recieves the measurement report that satisfy the handover condition, it triggers handover with RRC Reconfiguration carrying spCellConfig.reconfigrationwithSync.spCellConfigCommon.phyCellId <PCID of Destination Cell> (NOTE : For easy analysis, you may specify a specific UE ID in UE ID dropbox)

For more intuitive analysis, let check out how some of KPI(e.g, throughput) and lower layer measurement changes during the UE movement and handover.

You see throughput goes down as UE moves away from the serving cell and reach the location where it switches the cell (handover)

You see SNR goes down as UE moves away from the serving cell and reach the location where it switches the cell (handover). Depending on radio channel quality of each cells, you would see discontinuity of SNR between the cells.

MCS change over the UE movement and handover is not that obvious, but still see some general tendency that MCS gets lower as UE move away from the cell and reach the cell boundary where handover happens

You can check out the TA (Timing Advance) changes while the UE moves back and forth between the two cells

Now let's look into some aspects of KPI and other measurements for the consolidation of all 64 UEs.

First check out the Throughput profile as all the UEs moves back and forth between the two cells undergoing handover.

Then check out the Tx Error Rate (TX retransmission) and RX error. You see that both TX error and RX error reaches peak around handover point.

Now you can check out the number of UEs connected to each cell over time. This plot is a good indicator to verify on how well the handover of the multiple UEs went through.

You can also check out SNR profile and notice the SNR shows distinctive pattern as UEs gets closer and farther away (to) from the connected cells.

You can do similar analysis from UEsim log as well (NOTE : I wouldn't comment anything specifically on this, but you may rely more on UEsim log analysis for the test if you are using your own gNBs)

Sample Log(UEsim)