UEsim LTE Handover - LTE to LTE
The overall callbox logic and 3GPP related with UEsim Handover is same as in Commercial UE handover. The main focus on this tutorial is to highlight on UEsim side configuration for LTE to LTE handover. Since the configuration on UEsim for handover can be a little bit complicated, I would like you to have some big picture on the call box and UEsim configuration and relationship between them as illustrated below.
What I want to highlight is that you need to configure multiple cells not only in eNB side, but also in UEsim side. In commercial UE, you don't have to care about this since all of those configuration is done internally.
- LTE to LTE Handover IntraFrequency (Commercial UE)
- LTE to LTE Handover InterFrequency (Commercial UE)
- LTE to NR Handover (UEsim)
Table of Contents
- UEsim LTE Handover - LTE to LTE
- Test Setup
- Key Configuration Parameters
- Test 1 : LTE to LTE Interband/Interfrequency Handover / Triggered by eNB Power Change
- Test 2 : LTE to LTE Intraband/Interfrequency Handover / Triggered by eNB Power Change
- RRC / NAS Signaling
- RrcConnectionReconfiguration - Measurement Configuration
- RrcConnectionReconfiguration - Enabling Measurement Gap
- RrcConnectionReconfiguration - Handover
- Tips
Test Setup
Test setup for this tutorial is as shown below. (
Key Configuration Parameters
Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.
- ncell_list : In this link, you would get the descriptions for all the items listed below
- rat
- cell_id
- meas_config_desc : In this link, you would get the descriptions for all the items listed below
- a1_report_type
- a1_rsrp
- a1_hysteresis
- a1_time_to_trigger
- a2_report_type
- a2_hysteresis
- a2_time_to_trigger
- a3_report_type
- a3_offset
- a3_hysteresis
- a3_time_to_trigger
- meas_gap_config
- ho_from_meas
- cell_groups
- ue_list
Test 1 : LTE to LTE Interband/Interfrequency Handover / Triggered by eNB Power Change
This test is to show how to test LTE to LTE handover triggered by cell power change from callbox (eNB).
Configuration
I used the enb-2cell-ho-b7-b3.cfg on gNB which is copied and modified from enb-2cell-ho.cfg
I used the ue-ho-LL.cfg on gNB which is copied and modified from ue-2cc.cfg
In enb-2cell-ho-b7-b3.cfg , the configuration is done as follows. Since this is a scenario that requires 2 cells, you need to set N_CELL to 2.
This is the configuration of the first cell. It is important to note that you need to specify the second cell (n_id_cell : 2) into ncell_list(Neighbour cell list) configuration.
This is the configuration of the second cell. It is important to note that you need to specify the first cell cell (n_id_cell : 1) into ncell_list(Neighbour cell list) configuration.
In cell_default configuration, I set meas_config_desc to trigger the handover only when the expected measurement report is recieved. I also increased the value for inactivity_timer just to give user enough time to tweak cell power to trigger appropriate measurement report.
In ue-ho-LL.cfg, the configuration is done as follows. Since this is a scenario that requires 2 cells, you need to set N_CELL to 2.
This is the cell configuration of the first cell. It does not require any specific configuration. You only neet to set dl_earfcn and bandwidth to match the configuration of the first cell on Callbox.
This is the configuration of the first ue. It does not require any specific configuration. You only neet to set dl_earfcn and bandwidth to match the configuration of the second cell on Callbox.
Perform the Test
Check if the cell is configured as intended. You can check these out with 'cell phy' and 'cell' command.
This is not mandatory, but I would recommend to log SIB messages for a short time and stop so that you can confirm all the sibs for each cells. But I would not recommend you to capture the SIB log all the time since it may make it difficult to analyze other RRC / NAS messages. So I would just collect SIB log just a few seconds at the beginning and stop logging. You can do it with 'log bcch' command.
Then adjust the cell power of each cell with 'cell_gain'. The exact cell power you need to set would vary depending on your test setup. I would suggest you to use cell_gain instead of tx_gain in this case because if you change the cell power with tx_gain, the reference power broadcast in SIB1 changes and UE may behave differently from what you expect.
You can confirm on the result of cell power changes done by cell_gain from the result of 'cell' command. You can confirm on it under dl_gain column.
Power on UE on UE sim. In this test, I wanted to make it sure that only one UE attempt to camp on. So I did 'power_on 1'.
Wait until the initial attach is complete.
Then tweak the cell power to trigger measurement report and handover. You cannot check if the result of the measurement report in 't' output (trace log), but if the measurement report comes in as expect and handover is properly done, you would see that cell ID under 'CL' column change to the destination cell.
You can confirm handover on UEsim console (screen window) as well. Once the handover is complete, you see that the cell index under 'CL' column switches to the target cell.
Log Analysis
Since this test is for Handover based on measurement report, check if eNB transmits RRC Connection Reconfiguration with measurement configuration and see if the contents of the messages are all set as intended.
First check measObjectToAddModList and see the frequency of both the source and target cells are configured.
Here you see that event a2 and a3 are configured.
Now check out measIDToAddModList and see if the measurement conditions are configured as intended. Here you see a2 measurement is registered as measId 2 and a3 measurement is registered as measId3.
Now you see that UE send measurement report for a2 event indicating that Serving becomes worse than threshold.
With the reception of a2 event, eNB enables measurement gap that is need to perform the measurement for interRAT target cell.
Now UE send measurement report for event 3 indicating that Neighbour becomes offset better than serving.
On reception of the measurement for the target cell(event a3), eNB send RRC Connection Reconfiguration for handover.
With the reception of RRC Connection Reconfiguration for handover, UE triggers RACH to the destination cell for handover.
Test 2 : LTE to LTE Intraband/Interfrequency Handover / Triggered by eNB Power Change
This test is to show how to test LTE to LTE handover triggered by cell power change from callbox (eNB). The main purpose of this tutorial is to introduce the measurement logging capability of Amarisoft UEsim (UE simulator) which is great helpful not only for troubleshooting but also for understanding the detailed process of measurement report before Handover.
Configuration
I used the enb-2cell-ho-b48-inter.cfg on gNB which is copied and modified from enb-2cell-ho.cfg
For the core network, I haven't changed anything and used the default configuration (mme-ims.cfg) as it is.
I used the ue-2cell-ho-b48-inter.cfg on gNB which is copied and modified from ue-2cc.cfg
In enb-2cell-ho-b48-inter.cfg, the configuration is done as follows. Since this is a scenario that requires 2 cells, you need to set N_CELL to 2. In this tutorial, I used two TDD cells (TDD 1), but you can configure it in anyway you like.
This is the configuration of the first cell. It is important to note that you need to specify the second cell (n_id_cell : 2) into ncell_list(Neighbour cell list) configuration.
This is the configuration of the second cell. It is important to note that you need to specify the first cell cell (n_id_cell : 1) into ncell_list(Neighbour cell list) configuration.
In cell_default configuration, I set meas_config_desc to trigger the handover only when the expected measurement report is recieved. Just to make it easy to configure cell power for the measurement report, I increased a2_rsrp but you can tweak the rsrp criteria in any way that suits your test setup.
In ue-2cell-ho-b48-inter.cfg , the configuration is done as follows. Since this is a scenario that requires 2 cells, you need to set N_CELL to 2 and I configured the cells to TDD (TDD 1) to match it to eNB configuration.
This is the cell configuration of the two cells. It does not require any specific configuration. You only neet to set dl_earfcn and bandwidth to match the configuration of the first cell on Callbox.
This is the configuration of the first ue. It does not require any specific configuration. You only neet to set dl_earfcn and bandwidth to match the configuration of the second cell on Callbox.
Perform the Test
Check if the cell is configured as intended. You can check these out with 'cell phy' and 'cell' command.
This is not mandatory, but I would recommend to log SIB messages for a short time and stop so that you can confirm all the sibs for each cells. But I would not recommend you to capture the SIB log all the time since it may make it difficult to analyze other RRC / NAS messages. So I would just collect SIB log just a few seconds at the beginning and stop logging. You can do it with 'log bcch' command.
Then adjust the cell power of each cell with 'cell_gain'. The exact cell power you need to set would vary depending on your test setup. I would suggest you to use cell_gain instead of tx_gain in this case because if you change the cell power with tx_gain, the reference power broadcast in SIB1 changes and UE may behave differently from what you expect.
You can confirm on the result of cell power changes done by cell_gain from the result of 'cell' command. You can confirm on it under dl_gain column.
Power on UE on UE sim. In this test, I wanted to make it sure that only one UE attempt to camp on. So I did 'power_on 1'.
Wait until the initial attach is complete.
Then tweak the cell power to trigger measurement report and handover.
You cannot check if the result of the measurement report in 't' output (trace log), but if the measurement report comes in as expect and handover is properly done, you would see that cell ID under 'CL' column change to the destination cell.
You can confirm handover on UEsim console (screen window) as well. Once the handover is complete, you see that the cell index under 'CL' column switches to the target cell.
Log Analysis
Here I put both eNB log and UEsim log. For overall procedure of handover, I will describe based on eNB log. But I would suggest the readers to look into UEsim log and see what is exactly going on within the UE especially during the measurement process.
eNB
Since this test is for Handover based on measurement report, check if eNB transmits RRC Connection Reconfiguration with measurement configuration and see if the contents of the messages are all set as intended.
For handover test, it is always good practice to confirm that UE support the necessary feature which is required for the handover.
Ensure that measurement gap and inter-frequency meansurement report are supported.
First check measObjectToAddModList and see the frequency of both the source and target cells are configured.
The measurement object for the first and second cell are configured. The measObjectId 1 is for the first cell and the measObjectId 2 is for the second cell
Here you see that event a1,a2 and a3 are configured. The reportConfigID 1 is for Event A1, the reportConfigID 2 is for Event A2 and the reportConfigID 3 is for Event A3.
Now check out measIDToAddModList and see if the measurement conditions are configured as intended. Here you see a2 measurement is registered as measId 2 and a3 measurement is registered as measId3.
Now you see that UE send measurement report for a2 event indicating that Serving becomes worse than threshold.
With the reception of a2 event, eNB enables measurement gap that is need to perform the measurement for interRAT target cell.
Now UE send measurement report for event 3 indicating that Neighbour becomes offset better than serving.
On reception of the measurement for the target cell(event a3), eNB send RRC Connection Reconfiguration for handover.
With the reception of RRC Connection Reconfiguration for handover, UE triggers RACH to the destination cell for handover.
UEsim
The final decision to trigger the handover is supposed to be made by eNB, but the information required for the decision making is supposed to be collected and provided by UE. For troubleshooting for handover failure (especially due to no measurement report from UE), it is important to get access to the detailed logging capability on UE side. Amarisoft UEsim provides great logging capability for the process.
In order to collect the log for this process on UEsim, enable "Cell meas" flags in logging configuration setup as shown below.
Amarisoft UEsim prints various information related to RRC measurement : Measurement Result, Measurement ID entering condition etc as shown below.
RRC / NAS Signaling
Here I will just list required message from callbox and I haven't put the required messages from UE side. For the messages from UE, refer to the log analysis and check further with the sample log linked above.
This is the RrcReconfiguration sent by gNB to configure measurement and handover. (
RrcConnectionReconfiguration - Measurement Configuration
{
message c1: rrcConnectionReconfiguration: {
rrc-TransactionIdentifier 0,
criticalExtensions c1: rrcConnectionReconfiguration-r8: {
measConfig {
measObjectToAddModList {
{
measObjectId 1,
measObject measObjectEUTRA: {
carrierFreq 3100,
allowedMeasBandwidth mbw100,
presenceAntennaPort1 TRUE,
neighCellConfig '01'B
}
},
{
measObjectId 2,
measObject measObjectEUTRA: {
carrierFreq 1575,
allowedMeasBandwidth mbw100,
presenceAntennaPort1 TRUE,
neighCellConfig '01'B
}
}
},
reportConfigToAddModList {
{
reportConfigId 1,
reportConfig reportConfigEUTRA: {
triggerType event: {
eventId eventA1: {
a1-Threshold threshold-RSRP: 80
},
hysteresis 0,
timeToTrigger ms640
},
triggerQuantity rsrp,
reportQuantity both,
maxReportCells 1,
reportInterval ms120,
reportAmount r1
}
},
{
reportConfigId 2,
reportConfig reportConfigEUTRA: {
triggerType event: {
eventId eventA2: {
a2-Threshold threshold-RSRP: 80
},
hysteresis 0,
timeToTrigger ms640
},
triggerQuantity rsrp,
reportQuantity both,
maxReportCells 1,
reportInterval ms120,
reportAmount r1
}
},
{
reportConfigId 3,
reportConfig reportConfigEUTRA: {
triggerType event: {
eventId eventA3: {
a3-Offset 6,
reportOnLeave FALSE
},
hysteresis 0,
timeToTrigger ms480
},
triggerQuantity rsrp,
reportQuantity both,
maxReportCells 8,
reportInterval ms120,
reportAmount r1
}
}
},
measIdToAddModList {
{
measId 2,
measObjectId 1,
reportConfigId 2
},
{
measId 3,
measObjectId 2,
reportConfigId 3
}
},
quantityConfig {
quantityConfigEUTRA {
}
},
measGapConfig release: NULL
},
dedicatedInfoNASList {
'2776859E94010742013E060000F110000100445....'H
},
radioResourceConfigDedicated {
srb-ToAddModList {
{
srb-Identity 2,
rlc-Config explicitValue: am: {
ul-AM-RLC {
t-PollRetransmit ms60,
pollPDU pInfinity,
pollByte kBinfinity,
maxRetxThreshold t32
},
dl-AM-RLC {
t-Reordering ms45,
t-StatusProhibit ms0
}
},
logicalChannelConfig defaultValue: NULL
}
},
drb-ToAddModList {
{
eps-BearerIdentity 5,
drb-Identity 1,
pdcp-Config {
discardTimer infinity,
rlc-AM {
statusReportRequired TRUE
},
headerCompression notUsed: NULL
},
rlc-Config am: {
ul-AM-RLC {
t-PollRetransmit ms80,
pollPDU p64,
pollByte kB125,
maxRetxThreshold t32
},
dl-AM-RLC {
t-Reordering ms35,
t-StatusProhibit ms10
}
},
logicalChannelIdentity 3,
logicalChannelConfig {
ul-SpecificParameters {
priority 15,
prioritisedBitRate kBps8,
bucketSizeDuration ms100,
logicalChannelGroup 3
}
}
}
},
physicalConfigDedicated {
antennaInfo-r10 explicitValue-r10: {
transmissionMode-r10 tm3,
codebookSubsetRestriction-r10 '11'B,
ue-TransmitAntennaSelection release: NULL
},
cqi-ReportConfig-r10 {
nomPDSCH-RS-EPRE-Offset 0,
cqi-ReportPeriodic-r10 setup: {
cqi-PUCCH-ResourceIndex-r10 0,
cqi-pmi-ConfigIndex 44,
cqi-FormatIndicatorPeriodic-r10 widebandCQI-r10: {
},
ri-ConfigIndex 483,
simultaneousAckNackAndCQI TRUE
}
},
cqi-ReportConfigPCell-v1250 {
altCQI-Table-r12 allSubframes
}
}
}
}
}
}
RrcConnectionReconfiguration - Enabling Measurement Gap
{
message c1: rrcConnectionReconfiguration: {
rrc-TransactionIdentifier 0,
criticalExtensions c1: rrcConnectionReconfiguration-r8: {
measConfig {
measIdToRemoveList {
2
},
measIdToAddModList {
{
measId 1,
measObjectId 1,
reportConfigId 1
}
},
measGapConfig setup: {
gapOffset gp0: 0
}
}
}
}
}
RrcConnectionReconfiguration - Handover
{
message c1: rrcConnectionReconfiguration: {
rrc-TransactionIdentifier 0,
criticalExtensions c1: rrcConnectionReconfiguration-r8: {
......
mobilityControlInfo {
targetPhysCellId 2,
carrierFreq {
dl-CarrierFreq 1575
},
t304 ms1000,
newUE-Identity '003E'H,
radioResourceConfigCommon {
prach-Config {
rootSequenceIndex 28
},
pdsch-ConfigCommon {
referenceSignalPower -31,
p-b 1
},
pusch-ConfigCommon {
pusch-ConfigBasic {
n-SB 1,
hoppingMode interSubFrame,
pusch-HoppingOffset 8,
enable64QAM TRUE
},
ul-ReferenceSignalsPUSCH {
groupHoppingEnabled FALSE,
groupAssignmentPUSCH 0,
sequenceHoppingEnabled FALSE,
cyclicShift 0
}
},
p-Max 10,
ul-CyclicPrefixLength len1,
pusch-ConfigCommon-v1270 {
enable64QAM-v1270 true
}
},
sameSFN-Indication-r14 true
},
radioResourceConfigDedicated {
mac-MainConfig explicitValue: {
ul-SCH-Config {
maxHARQ-Tx n5,
periodicBSR-Timer sf20,
retxBSR-Timer sf320,
ttiBundling FALSE
},
drx-Config release: NULL,
timeAlignmentTimerDedicated infinity,
phr-Config setup: {
periodicPHR-Timer sf500,
prohibitPHR-Timer sf200,
dl-PathlossChange dB3
}
},
physicalConfigDedicated {
pdsch-ConfigDedicated {
p-a dB-3
},
pucch-ConfigDedicated {
ackNackRepetition release: NULL
},
pusch-ConfigDedicated {
betaOffset-ACK-Index 9,
betaOffset-RI-Index 6,
betaOffset-CQI-Index 6
},
uplinkPowerControlDedicated {
p0-UE-PUSCH 0,
deltaMCS-Enabled en0,
accumulationEnabled TRUE,
p0-UE-PUCCH 0,
pSRS-Offset 3
},
soundingRS-UL-ConfigDedicated setup: {
srs-Bandwidth bw3,
srs-HoppingBandwidth hbw0,
freqDomainPosition 0,
duration TRUE,
srs-ConfigIndex 47,
transmissionComb 0,
cyclicShift cs4
},
schedulingRequestConfig setup: {
sr-PUCCH-ResourceIndex 0,
sr-ConfigIndex 15,
dsr-TransMax n64
},
antennaInfo-r10 explicitValue-r10: {
transmissionMode-r10 tm3,
codebookSubsetRestriction-r10 '11'B,
ue-TransmitAntennaSelection release: NULL
},
cqi-ReportConfig-r10 {
nomPDSCH-RS-EPRE-Offset 0,
cqi-ReportPeriodic-r10 setup: {
cqi-PUCCH-ResourceIndex-r10 0,
cqi-pmi-ConfigIndex 44,
cqi-FormatIndicatorPeriodic-r10 widebandCQI-r10: {
},
ri-ConfigIndex 483,
simultaneousAckNackAndCQI TRUE
}
},
cqi-ReportConfigPCell-v1250 {
altCQI-Table-r12 allSubframes
}
}
},
securityConfigHO {
handoverType intraLTE: {
keyChangeIndicator FALSE,
nextHopChainingCount 0
}
},
nonCriticalExtension {
nonCriticalExtension {
otherConfig-r9 {
powerPrefIndicationConfig-r11 release: NULL
}
}
}
}
}
}
Tips
Triggering Handover from Screen Command
You can trigger the handover regardless of measurement configuration / report or cell power. You can force eNB to triggger handover by screen command "handover" as shown below.