Amarisoft

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.

UESim LTE HO LL Overview 01

NOTE : For the Handover with commercial UE, check out following tutorials.

 

 

Table of Contents

 

 

Test Setup

 

Test setup for this tutorial is as shown below.  (NOTE : The image is a little bit misleading. You need to connect antenna at least on two sdr cards on both Callbox and UEsim).

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 : LTE to LTE Interfrequency Handover / Triggered by eNB Power Change

This test is 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

UESim LTE HO LL Test1 Config 01

UESim LTE HO LL Test1 Config 02

I used the ue-ho-LL.cfg on gNB which is copied and modified from ue-2cc.cfg

UESim LTE HO LL Test1 Config 03

 

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.

UESim LTE HO LL Test1 Config 04

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.

UESim LTE HO LL Test1 Config 05

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.

UESim LTE HO LL Test1 Config 06

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.

UESim LTE HO LL Test1 Config 07

NOTE :  UEsim Rx dynamic range may not be as good as commercial UE. The radio link may get brocken if the cell power gets as low as the cell boundrary in the field. So I increased rsrp threshold for me measurement to trigger measurement report before cell power gets too low.

 

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.

UESim LTE HO LL Test1 Config 08

UESim LTE HO LL Test1 Config 09

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.

UESim LTE HO LL Test1 Config 10

UESim LTE HO LL Test1 Config 11

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 second cell on Callbox.

UESim LTE HO LL Test1 Config 12

 

Perform the Test

Check if the cell is configured as intended.  You can check these out with 'cell phy' and 'cell' command.

UESim LTE HO LL Test1 Run 01

UESim LTE HO LL Test1 Run 02

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.

UESim LTE HO LL Test1 Run 03

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.

UESim LTE HO LL Test1 Run 04

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.

UESim LTE HO LL Test1 Run 05

 

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'.

UESim LTE HO LL Test1 Run 06

Wait until the initial attach is complete.

UESim LTE HO LL Test1 Run 07

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.

UESim LTE HO LL Test1 Run 08

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.

UESim LTE HO LL Test1 Run 09

 

Log Analysis

Sample Log

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. Then check reportConfigToAddModList and see if all the events are configured as intented. Here you see that event-a1 is configured.

UESim LTE HO LL Test1 Log 01

Here you see that event a2 and a3 are configured.

UESim LTE HO LL Test1 Log 02

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.

UESim LTE HO LL Test1 Log 03

Now you see that UE send measurement report for a2 event indicating that Serving becomes worse than threshold.

UESim LTE HO LL Test1 Log 04

With the reception of a2 event, eNB enables measurement gap that is need to perform the measurement for interRAT target cell.

UESim LTE HO LL Test1 Log 05

Now UE send measurement report for event 3 indicating that Neighbour becomes offset better than serving.

UESim LTE HO LL Test1 Log 06

On reception of the measurement for the target cell(event a3), eNB send RRC Connection Reconfiguration for handover.

UESim LTE HO LL Test1 Log 07

With the reception of RRC Connection Reconfiguration for handover, UE triggers RACH to the destination cell for handover.

UESim LTE HO LL Test1 Log 08

 

 

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. (NOTE : You would see some IEs that has a specific assigned vale here, but consider it as just an example value. Those values should vary depending on test requirement)

 

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.

 

UESim LTE HO LL Tip TriggerInConsole 01

 

UESim LTE HO LL Tip TriggerInConsole 02

 

UESim LTE HO LL Tip TriggerInConsole 03

 

UESim LTE HO LL Tip TriggerInConsole 04

 

NOTE :  I would suggest you to double check on UE ID for the current connection. If there was not any issues, it is likely for the UE to be the RAN_UE_ID of 1 but it may have been changed if the call dropped and reconnected before you try out this command. If you run the command 'ue', it will return the current RAN UE ID.