Amarisoft

UEsim LTE Multi UE

This tutorial is to show how to simulate multiple UEs with a single UEsim. For the simplicity, I am simulating only 5 UEs but you can simulate maximum of 500 or 1000 UEs with single Amari UEsim  

One of the difficulties of performing this type of test is about how to automate UE operation. It would be challenging the operate each of the UE manually when the number of UEs are high. There are roughly three types of automating UE if you are using Amarisoft UEsim (If you are using commercial UEs, you need to come out with your own way of manipulating UEs). The first way is to test completely manual mode and another way is to use GUI based automation called Scenario which is provided by WebGUI and the last way is to use event settings in configuration file. In this tutorial, I will be doing all the test mannually. For the operation with Scenario, you may refer to this tutorial and for the operation with event settings in configuration file, you may refer to other tutorial.

NOTE : Exact max number of active UE vary depending on product type, radio access technology and license type as shown in the following tables.

UESim LTE MultiUE MaxNoUE Simbox 01

For further details of the specification of AMARI UE Simbox Series, refer to this product datasheet.

UESim LTE MultiUE MaxNoUE SimboxE 01

For further details of the specification of AMARI UE SimboxE Series, refer to this product datasheet.

UESim LTE MultiUE MaxNoUE SimboxE 01

For further details of the specification of AMARI UE Simbox MBS Series, refer to this product datasheet.

Table of Contents

Introduction

Simulating multiple User Equipments (UEs) with a single UE simulator is a critical technique in wireless network testing and validation, enabling engineers and researchers to model real-world scenarios without the need for extensive hardware resources. Amarisoft's AMARI UEsim is a software-based UE simulator capable of emulating hundreds to thousands of UEs over a single computing platform, supporting various radio access technologies such as LTE and 5G NR. This flexibility is essential for performing large-scale, repeatable, and automated testing of network functions, core integration, mobility procedures, and radio interface performance. Architecturally, UEsim abstracts physical devices into virtual entities, each with unique parameters such as IMSI, security credentials, and radio profiles, operating concurrently within a unified simulation environment. The solution is engineered to interact seamlessly with commercial and open-source network equipment, delivering high-fidelity protocol emulation across all layers of the cellular stack. The simulator supports several modes of operation—manual control, GUI-driven scenarios, and configuration-based event automation—enabling diverse test methodologies for exhaustive functional and performance verification. In modern wireless deployment and research, the ability to simulate multiple UEs is indispensable for validating network scalability, conducting interoperability tests, and accelerating product development cycles. This tutorial provides a practical guide to manually simulating multiple UEs using a single UEsim instance, highlighting key configuration steps, operational tips, and best practices tailored for scalable network testing.

Summary of the Tutorial

This tutorial describes the procedure for conducting a multi-UE (User Equipment) LTE attach test using Amarisoft UEsim and Callbox. The focus is on configuring and verifying simultaneous registration and connectivity of multiple simulated UEs.

In summary, the tutorial guides the user through configuring, executing, and verifying a multi-UE LTE attach scenario, emphasizing correct parameter setup and status validation via command-line and logging tools.

Test Setup

Test setup for this tutorial is as shown below.  

The UEsim is the box on the left and the Callbox is the one on the right. Only one RF slot is used on each side, and a single cable runs between the two marked slots. All 5 UEs of this test share that one RF connection.

I am controlling the UEsim over WiFi here, through the WiFi card and the antenna above it. You do not have to do it this way. The ethernet port marked just under the WiFi card is the usual control path, and it sits at 192.168.1.80 in most installations.

UEsim and Callbox joined by one RF cable with the WiFi control port marked

Key Configuration Parameters

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

Configuration

I used the ue.default-multi-ue.cfg which is copied and modified from ue.default.cfg (LTE default configuration).

UEsim config directory with ue.cfg linked to ue.default-multi-ue.cfg

I used the enb.default.cfg (LTE default configuration).

Callbox config directory with enb.cfg linked to enb.default.cfg

I used the mme-ims-multi-ue.cfg  which is copied and modeified from mme-ims.cfg

Callbox config directory with mme.cfg linked to mme-ims-multi-ue.cfg

In the mme-ims-multi-ue.cfg, I changed the configuration so that ue_db-ims-multi-ue.cfg is used on Callbox.

The subscriber data is not held in mme-ims-multi-ue.cfg itself. It is pulled in with a single include line under the user data base comment. Changing that one file name is the whole edit.

The original ue_db-ims.cfg is still sitting in the same directory. You can go back to the stock subscriber set at any time by putting its name here instead.

mme-ims-multi-ue.cfg include line pointing at ue_db-ims-multi-ue.cfg

In this tutorial, following SIM information will be used within ue_db-ims-multi-ue.cfg. Make it sure to configure the same parameters on UE side as well. If you are using "xor" algorithm, you don't have to configure every UE with different imsi. You just put the starting imsi value and MME and UEsim will automatically handle the automatically incremented IMSI values.

The first entry of ue_db is the one used in this test. sim_algo is xor, imsi is 001010123456789 and K is 00112233445566778899aabbccddeeff. sqn is left at the default 000000000000. For the XOR algorithm the actual sqn value does not matter. The imsi and K lines commented out around them are the values for Agilent and R&S test USIMs.

count is set to 5 and that is the parameter which creates the extra subscribers. The MME builds 5 user entries by incrementing the IMSI and the K from the starting values. The IMSIs it ends up accepting run from 001010123456789 through 001010123456793. Set count to the same number of UEs you configure on the UEsim side. If it is smaller, the last UEs will find no matching subscriber and the attach fails.

multi_sim is set to true in the same entry. It is only allowed with the XOR algorithm, which is what this entry uses.

A second ue_db entry follows below, with sim_algo milenage and imsi 001010000000001. It is not used in this tutorial.

ue_db entry with xor sim_algo, multi_sim true and count set to 5

In ue.default-multi-ue.cfg on UEsim, Make it sure that imsi and K value in this file matches the value on enb side shown in previous slide. You see here that multi_ue is set to true and ue_count is set to the number greater than 1. If authentication algorithm (sim_algo) is set to "xor", IMSI automatically increment from the starting value through (starting imsi+ue_count-1)

multi_ue set to true is what puts UEsim into multiple UE mode. With it set to false you get the real UE mode with a single instance. ue_count does not carry a number directly. It takes the UE_COUNT macro defined at the top of the same file, and that is 5 here.

UEsim then creates 5 user entries by incrementing the IMSI and the K from 001010123456789, so the last one is 001010123456793. The same 5 entries have to exist on the MME side. That is what count: 5 in ue_db does.

global_timing_advance is set to 10. This parameter is only meaningful in multiple UE mode. It fixes the uplink timing advance relative to the downlink, and the unit is 1/1.92 us for an LTE cell. The default value is -1, which tells UEsim to use the timing advance from the first received RAR instead.

The rest of the entry is not exercised in this test. as_release and ue_category are both 13, external_sim and tun_setup_script are left commented out, and the CHANNEL_SIM branch only takes effect when the file is built with CHANNEL_SIM set to 1.

UEsim ue_list entry with multi_ue true and ue_count set to UE_COUNT

Following is the configuration in enb.default.cfg on Callbox. The parameters here is not critical for multi UE test. You can use any settings as long as there is not problem with the attach.

The cell in this run is FDD, since TDD is 0. N_RB_DL is 25, which is a 5 MHz cell. N_ANTENNA_DL and N_ANTENNA_UL are both 1, so the cell is SISO. CHANNEL_SIM is 0 and NG_ENB is 0, so the channel simulator is off and the eNB is not acting as an ng-eNB.

enb.default.cfg defines with FDD, 25 resource blocks and single antenna

This is optional. In enb.default.cfg, I made a small change as shown below. I set the inactivity_timer to 1 minutes (60000 ms) to wait for enough time untill all the UE are registerred before releasing RRC (This is not mandatory)

inactivity_timer makes the eNB send an RRC connection release after that many ms of network inactivity. At 60000 ms the 5 UEs stay in connected mode much longer. You get time to run the ue command on the UEsim, on the eNB and on the MME before any of them drops to idle. Lower it back if you would rather watch the release happen.

The rest of the cell is the stock configuration. The broadcast PLMN is 00101, n_id_cell is 1, cell_id is 0x01, tac is 0x0001 and root_sequence_index is 204. TDD is 0 in this build, so the #else branch is taken and dl_earfcn is 3350. That is a DL center frequency of 2680 MHz in band 7.

The plmn_list_5gc block above is not used, because NG_ENB is 0.

enb cell_list with inactivity_timer set to 60000 ms

Following is the configuration in ue.default-multi-ue.cfg on UE sim.  Set UE_COUNT to 5 (whatever number you want) and other parameters are not important for this test.

UE_COUNT is the macro that ue_count reads in the ue_list entry. Raising it here is the only change needed on the UEsim side to simulate more UEs. Remember to raise count in ue_db on the MME side by the same amount.

The other defines line up with the eNB side. TDD is 0 for FDD and CELL_BANDWIDTH is 5 for a 5 MHz cell. Both antenna counts are 1, and CHANNEL_SIM is 0 so the UE channel simulator is off.

ue.default-multi-ue.cfg defines with UE_COUNT set to 5

Perform the test

Start trace logging on Callbox.

The command is a single t typed at the (enb) prompt of the Callbox console. The trace then keeps printing until you press return again. Start it before you power the UEs on, otherwise you miss the attach.

t command entered on the enb console to start the trace

Power on UE on UE sim. '*' indicates powering on all the UEs configured.

This one is typed at the (ue) prompt of the UEsim console, not on the Callbox. With the 5 UEs configured in this test, one power_on * brings all 5 of them up at the same time.

power_on with an asterisk entered on the UEsim console

Then you see following traces on Callbox and confirm all the UEs get attached. You can check out which UEs are camped on via the numbers under UE_ID column.

Five PRACH lines come first, one for each UE. Each line gives the preamble sequence, the timing advance and the SNR, for example seq=15 ta=4 snr=20.8 dB. Five lines is what you want to see. More than five means some of the RACH attempts failed and were retried.

The table below has one row per UE. UE_ID runs from 5 down to 1, and each UE holds its own RNTI, from 0x0041 down to 0x003d. Five distinct UE_ID values is the check that all five got onto the cell. CL reads 001 on every row, so they are all on the same cell.

The two blocks are two reporting intervals. In the first one cqi is 3 and the DL mcs sits between 1.0 and 2.0. In the second one cqi has come up to 5 and the DL mcs is between 6.7 and 8.8, with the UL snr in the 30 to 39 dB range.

enb trace with five PRACH lines and five UE_ID rows

You can check the list of all the UE status with 'ue' command on UE sim.  Make it sure that you see all the UE under 'UE_ID' column and the EMM_STATE of all the UE is marked 'registered'.

The leading # column is only the row index and it runs 0 to 4. UE_ID is the identifier you use in commands, and it runs 1 to 5. All five rows are marked 4G, RRC_STATE is running on every one, and #ERAB is 1 so each UE has one bearer up.

IP_ADDR holds the address the core assigned to each UE. They are all different: 192.168.2.18, 192.168.2.2, 192.168.2.6, 192.168.2.10 and 192.168.2.14. These are the addresses to ping later. The RNTI column carries the same 3d to 41 values that the eNB trace printed.

UEsim ue command listing five registered UEs with their IP addresses

You can check the list of all the UE status with 'ue' command on (enb) on Callbox. The UE ID will be shown here only when a UE is in connection mode. So it is OK if you don't see all the UEs here.

All five UEs are still in connected mode in this run, so all five rows are present. RAN_UE_ID is the identifier the eNB uses and CN_UE_ID is the one the core uses for the same UE. The two do not run in step. RAN_UE_ID 5 maps to CN_UE_ID 104 and RAN_UE_ID 1 maps to 100.

Cell is 0x001 on every row, and the RNTI values are the same 0x003d to 0x0041 seen in the trace. A UE that has gone to idle disappears from this list. It is still there in the MME list below.

enb ue command listing five connected UEs with RAN_UE_ID and CN_UE_ID

You can check the list of all the UE connected to MME with 'ue' command on (mme) on Callbox. Make it sure that you see all the UEs shown here with different SUPI and all UE is marked 'Y'(Yes) under REG column.

The five SUPI values run from 001010123456789 to 001010123456793. That is the starting IMSI through the starting IMSI plus count minus 1, which is exactly what count: 5 in ue_db was set up to produce. Each row also carries its own IMEISV, from 0123456700000101 to 0123456700000501.

CN reads EPC on every row, so all five attached to the LTE core rather than to 5GC. Each UE has one bearer and its own M-TMSI. The IP_ADDR column holds the same five addresses the ue command listed on the UEsim. Both sides agree on which UE got which address.

mme ue command listing five SUPI values all marked registered

You may try ping from Callbox to all of the UEs. ping to each and every IPs that are assigned to each UE.

Each ping is run with -c 3, so it sends three requests and then exits. All three are answered every time, with ttl 64. The addresses come straight from the IP_ADDR column of the ue command output.

The first reply of each burst is usually the slowest one, up to 1187 ms on 192.168.2.14. The replies after it settle in the 30 to 50 ms range. If a ping gets no answer at all, check that the UE is still listed by the ue command before you look anywhere else.

ping bursts sent from the Callbox to each UE address

Log Analysis

Sample Log

I would not go through all the log since this would just be the repetition of basic LTE attach procedure. The only thing that I want to highlight is the Attach Request from UE sim log showing different IMSI values for each UE as shown below.

Five Attach request messages appear on the EMM layer, one from each UE, and the UE ID column keeps them apart. The IMSI in each one is different. They run 001010123456789, then 790, 791, 792 and 793. That is the automatic increment from the starting IMSI arriving at the network.

The decode of the first one is on the right. Message type is 0x41 for Attach request and EPS attach type is 1 for EPS attach. The security header is 0x0, so this first NAS message goes as a plain message with no integrity protection. The identity carried is the IMSI itself and not an old GUTI.

The ESM message container inside it is a PDN connectivity request with request type 1 and PDN type 3, so IPv4v6 is asked for. The protocol configuration options ask for the P-CSCF and DNS server addresses on both IPv4 and IPv6. Below the five attach requests you see the RRC connection request, connection setup and connection setup complete for each of the five UEs.

WebGUI log with five Attach request messages carrying different IMSI values