4G/LTE - X2

 

 

 

X2, X2AP, X2AP Service

 

X2 is the name of the interface that connects one eNB to another eNB as indicated in the illustration below. You can guess there will be a lot of information or messages running along this interface (basically connection line). As you know, almost any data/message exchange you would need some type of protocol. In real network, there are cases where multiple eNB from different vendor are connected. For those eNBs from multiple vendors to properly communicate each other, they would need some common communication protocol. This protocol for communication along X2 interface is called X2AP (X2 Application Protocol). Also you would know from experience, there are some speciall hardware or software or application at each end of any communication. These application that sits at the end of X2 interface (basically within eNB) is called X2AP Service.

Let's follow X2 in the order an eNB meets it. First the eNB has to find its neighbours and set up the X2 link. Then the link carries two kinds of information. One is handover signalling for a UE that moves between cells. The other is load and interference information about the cells themselves. The sections below take them in that order, and each one quotes the ASN.1 of its messages from 36.423.

 

X2 links between three eNBs and S1 links to two MMEs

 

In the illustration above, eNB 1, eNB 2 and eNB 3 are connected to each other by X2 links. Each eNB also connects to both MME 1 and MME 2 over S1. The X2AP Service sits inside eNB 2, at the end of its X2 links, and it speaks the X2 Application Protocol to its peers.

X2AP has many different functions as summarized below and the main contents of this page is go through each of these functions. (This list came from 3GPP 36.423).

 

X2AP functions and the elementary procedures that serve them

 

The picture above shows the functions of an early release of 36.423. The current version, v19.1.0, keeps all of them in Table 7-1 and adds more. The picture writes Resource Status Reporting Indication, but the procedure name in the specification is Resource Status Reporting Initiation. The functions added since then are the following.

  • Dual Connectivity, where one eNB provides extra radio resources to a UE that another eNB still controls
  • E-UTRA-NR Dual Connectivity, the same idea between an eNB and an en-gNB
  • X2 Release, Message Transfer and Registration, and Removing the X2, which manage the X2 connection itself
  • Inter-eNB UE Context Retrieval, used when a UE resumes or re-establishes its RRC connection in another eNB
  • Secondary RAT Data Usage Report, E-UTRA - NR Spectrum Sharing, EN-DC Configuration Transfer and UE Radio Capability ID Mapping

Mobility Management also gained Handover Success and Conditional Handover Cancel. Mobility Robustness Optimisation gained SCG Failure Information Report and SCG Failure Transfer. This page stays with the original LTE core of X2: setup, mobility and load information.

What are the most common information carried over X2 ?

Following informations would be the most common type of information that are being exchanged between one eNB and another eNB over X2 interface. The two kinds differ in what they are about. Handover information concerns one UE, so it uses UE-associated signalling. Load and interference information concerns a cell, so it uses non UE-associated signalling.

  • Handover related Information
  • load or interference related information

Each kind maps to a small set of 36.423 procedures. Handover information travels in Handover Preparation, SN Status Transfer and UE Context Release. Load and interference information travels in Load Indication, and in the Resource Status Reporting Initiation and Resource Status Reporting pair. The sections Communication over X2 for Mobility and Communication over X2 for Load/Interference Information take each group in turn.

Both kinds need one thing first. An eNB has to know which cells sit behind the other end of the link. X2 Setup provides that, because each side sends its complete list of served cells. The list gives the PCI, the ECGI, the TAC and the EARFCN of each cell. Later releases added more traffic to the same interface. Release 12 added dual connectivity between two eNBs, and Release 15 added EN-DC between an eNB and an en-gNB.

UE-associated signalling needs a way to name the UE on the link, and X2AP uses a pair of IDs for that. The source eNB allocates the Old eNB UE X2AP ID and sends it in HANDOVER REQUEST. The target eNB allocates the New eNB UE X2AP ID and returns it in HANDOVER REQUEST ACKNOWLEDGE. Each ID is an INTEGER from 0 to 4095, and it identifies the UE over X2 only within the eNB that allocated it.

  • Two kinds of information use two kinds of signalling : handover messages identify the UE by its X2AP IDs, while load messages identify the cell by its ECGI.
  • X2 Setup comes before everything else : the first message on a new TNL association must be X2 SETUP REQUEST, X2 SETUP RESPONSE or X2 SETUP FAILURE. Anything else is a logical error.
  • X2 is no longer LTE only : the same interface now carries dual connectivity and EN-DC signalling.

How to setup an X2 between one eNB and another eNB ?

In order for a eNB to make a connection to another eNB, first it has to know which eNBs located around itself. How an eNB knows the information about other eNBs around it ?

There are roughly two types of methods being used for this as listed below.

  • By predefined configuration
  • By Automatic Neighbor Relation Function (ANRF)

In ANRF, eNB uses UEs which are connected to it in order to find neighbouring eNBs. It can instruct UE to read the global cell identity (CGI) of neighbouing eNB and report them to the serving eNB. Actually ANRF can be a good example of SON (Self Organizing Network).

Once a eNB find neighbouring eNBs and decided to which one it want to connect, it finds the IP address of the destination eNB and establish TNL (Transport Network Layer). Then you may ask "How an eNB can figure out the IP of a neighbouring eNB ?". Also.. here you can think of roughly two methods.

  • By predefined configuration
  • By some kind of automatic method. For example, it can query the IP over S1 interface.

The automatic method in the second bullet is defined in S1AP, TS 36.413. The eNB sends an eNB CONFIGURATION TRANSFER message to the MME. Its SON Information Request asks for the X2 TNL Configuration Info of the target eNB. The MME forwards the request to the target eNB in an MME CONFIGURATION TRANSFER message. The target eNB answers along the same path, and its SON Information Reply carries the X2 TNL Configuration Info with its transport layer addresses. The requesting eNB can then set up the TNL and start X2 Setup.

Once a TNL between two eNBs are established, the eNB send X2 SETUP REQUEST message to the other eNB and the other eNB respond with X2 SETUP RESPONSE message as shown below.

 

< 36.423 Figure 8.3.3.2-1: X2 Setup, successful operation >

X2 Setup successful operation between eNB1 and eNB2

 

The diagram above has only two messages, but the rules around them matter. First, eNB1 sends the complete list of its served cells and, if available, its GU Group IDs. In return, eNB2 sends its own complete list. A cell that is switched off for energy saving is activated first, and it still appears in the list. The procedure also erases any existing application level configuration data in both nodes. It resets the X2 interface as a Reset procedure would. If eNB2 cannot accept the setup, it answers with X2 SETUP FAILURE instead. That message may carry a Time To Wait, and eNB1 then waits at least that long before it tries again.

What kind of information is carried by X2 Setup Request message ? Some important information carried by this message are as follows (The other party would send similar information via X2 Setup Response message) :

  • Physical Cell IDs for the cell it manages
  • Frequency Band
  • Tracking Area Identity and/or the associated PLMN
  • Neighbour Information (Optional)
  • Number of Antenna Ports (Optional)
  • PRACH Configuration (Optional)
  • MBSFN Subframe Info (Optional)
  • CSG ID (mandatory if the eNB is CSG Cell or Hybrid Cell)
  • MultibandInfoList (Optional)

Most of the items above are not at the top level of the listing below. PCI, ECGI and TAC sit in ServedCell-Information, and the EARFCN sits in the EUTRA-Mode-Info it carries. Number of Antenna Ports, PRACH Configuration, MBSFN Subframe Info, CSG ID and MultibandInfoList are extensions in ServedCell-Information-ExtIEs. The CSG ID is optional in the ASN.1. Even so, the procedure text requires it for each CSG cell or hybrid cell.

X2 SETUP REQUEST

The listing below goes from the message down to the cell details. X2SetupRequest-IEs holds only four IEs, and the served cell details sit two levels deeper. Compared with the original listing on this page, the latest release adds three things here. ENB-ID gained short-Macro-eNB-ID of 18 bits and long-Macro-eNB-ID of 21 bits after its extension marker. The message gained the optional LHN-ID. ServedCell-Information-ExtIEs, now added to the listing, holds twelve extensions.

Following is based on 36.423 v19.1.0 (Release 19)

X2SetupRequest ::= SEQUENCE {
    protocolIEs     ProtocolIE-Container    {{X2SetupRequest-IEs}},
    ...
}

X2SetupRequest-IEs X2AP-PROTOCOL-IES ::= {
    { ID id-GlobalENB-ID            CRITICALITY reject  TYPE GlobalENB-ID           PRESENCE mandatory}|
    { ID id-ServedCells             CRITICALITY reject  TYPE ServedCells            PRESENCE mandatory}|
    { ID id-GUGroupIDList           CRITICALITY reject  TYPE GUGroupIDList          PRESENCE optional}|
    { ID id-LHN-ID                  CRITICALITY ignore  TYPE LHN-ID                 PRESENCE optional},
...
}

GlobalENB-ID ::= SEQUENCE {
    pLMN-Identity           PLMN-Identity,
    eNB-ID                  ENB-ID,
    iE-Extensions           ProtocolExtensionContainer { {GlobalENB-ID-ExtIEs} } OPTIONAL,
    ...
}

ENB-ID ::= CHOICE {
    macro-eNB-ID    BIT STRING (SIZE (20)),
    home-eNB-ID     BIT STRING (SIZE (28)),
    ... ,
    short-Macro-eNB-ID      BIT STRING (SIZE(18)),
    long-Macro-eNB-ID       BIT STRING (SIZE(21))
}

ServedCells ::= SEQUENCE (SIZE (1.. maxCellineNB)) OF SEQUENCE {
    servedCellInfo                  ServedCell-Information,
    neighbour-Info                  Neighbour-Information           OPTIONAL,
    iE-Extensions                   ProtocolExtensionContainer { {ServedCell-ExtIEs} } OPTIONAL,
    ...
}

ServedCell-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
    { ID id-NRNeighbourInfoToAdd            CRITICALITY ignore  EXTENSION NRNeighbour-Information               PRESENCE optional }|
    { ID id-ServedCellSpecificInfoReq-NR    CRITICALITY ignore EXTENSION    ServedCellSpecificInfoReq-NR    PRESENCE optional },
    ...
}

ServedCell-Information ::= SEQUENCE {
    pCI                 PCI,
    cellId              ECGI,
    tAC                 TAC,
    broadcastPLMNs      BroadcastPLMNs-Item,
    eUTRA-Mode-Info     EUTRA-Mode-Info,
    iE-Extensions       ProtocolExtensionContainer { {ServedCell-Information-ExtIEs} } OPTIONAL,
    ...
}

ServedCell-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
    { ID id-Number-of-Antennaports              CRITICALITY ignore  EXTENSION Number-of-Antennaports                    PRESENCE optional}|
    { ID id-PRACH-Configuration                 CRITICALITY ignore  EXTENSION PRACH-Configuration                       PRESENCE optional}|
    { ID id-MBSFN-Subframe-Info                 CRITICALITY ignore  EXTENSION MBSFN-Subframe-Infolist               PRESENCE optional}|
    { ID id-CSG-Id                              CRITICALITY ignore  EXTENSION CSG-Id                                    PRESENCE optional}|
    { ID id-MBMS-Service-Area-List              CRITICALITY ignore  EXTENSION MBMS-Service-Area-Identity-List       PRESENCE optional}|
    { ID id-MultibandInfoList                   CRITICALITY ignore  EXTENSION MultibandInfoList                         PRESENCE optional}|
    { ID id-FreqBandIndicatorPriority           CRITICALITY ignore  EXTENSION FreqBandIndicatorPriority             PRESENCE optional}|
    { ID id-BandwidthReducedSI                  CRITICALITY ignore  EXTENSION BandwidthReducedSI                        PRESENCE optional}|
    { ID id-ProtectedEUTRAResourceIndication    CRITICALITY ignore  EXTENSION ProtectedEUTRAResourceIndication  PRESENCE optional}|
    { ID id-BPLMN-ID-Info-EUTRA                 CRITICALITY ignore  EXTENSION BPLMN-ID-Info-EUTRA                       PRESENCE optional}|
    { ID id-NPRACHConfiguration                 CRITICALITY ignore  EXTENSION   NPRACHConfiguration                 PRESENCE optional}|
    { ID id-SFN-Offset                          CRITICALITY ignore  EXTENSION SFN-Offset                                PRESENCE optional},
    ...
}

Neighbour-Information ::= SEQUENCE (SIZE (0..maxnoofNeighbours)) OF SEQUENCE {
    eCGI                        ECGI,
    pCI                         PCI,
    eARFCN                      EARFCN,
    iE-Extensions               ProtocolExtensionContainer { {Neighbour-Information-ExtIEs} } OPTIONAL,
    ...
}

Neighbour-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
    { ID id-NeighbourTAC        CRITICALITY ignore  EXTENSION TAC               PRESENCE optional}|
    { ID id-eARFCNExtension     CRITICALITY reject  EXTENSION EARFCNExtension   PRESENCE optional},
    ...
}

GUGroupIDList       ::= SEQUENCE (SIZE (1..maxPools)) OF GU-Group-ID

GU-Group-ID         ::= SEQUENCE {
    pLMN-Identity       PLMN-Identity,
    mME-Group-ID        MME-Group-ID,
    iE-Extensions       ProtocolExtensionContainer { {GU-Group-ID-ExtIEs} } OPTIONAL,
    ...
}

The procedure text in 36.423 8.3.3.2 gives the purpose of several newer extensions. BandwidthReducedSI helps the receiving eNB choose a target for BL UEs or UEs in CE. NPRACHConfiguration carries the NB-IoT random access setup, which the peer may use for RACH optimisation. Neighbour-Information-ExtIEs can now carry the TAC of each neighbour. ServedCell-ExtIEs adds NR neighbour information, limited to NR cells that can do EN-DC with the served E-UTRA cell.

X2 SETUP RESPONSE

The response mirrors the request. In it, eNB2 sends its own GlobalENB-ID and its complete served cell list, so after one exchange each end knows the cells of the other. The response adds one IE that the request does not have. CriticalityDiagnostics reports IEs that eNB2 did not comprehend or found missing in the request.

Following is based on 36.423 v19.1.0 (Release 19)

X2SetupResponse ::= SEQUENCE {
    protocolIEs     ProtocolIE-Container    {{X2SetupResponse-IEs}},
    ...
}

X2SetupResponse-IEs X2AP-PROTOCOL-IES ::= {
    { ID id-GlobalENB-ID                CRITICALITY reject  TYPE GlobalENB-ID           PRESENCE mandatory}|
    { ID id-ServedCells                 CRITICALITY reject  TYPE ServedCells            PRESENCE mandatory}|
    { ID id-GUGroupIDList               CRITICALITY reject  TYPE GUGroupIDList          PRESENCE optional}|
    { ID id-CriticalityDiagnostics      CRITICALITY ignore  TYPE CriticalityDiagnostics PRESENCE optional}|
    { ID id-LHN-ID                      CRITICALITY ignore  TYPE LHN-ID                 PRESENCE optional},
    ...
}

CriticalityDiagnostics ::= SEQUENCE {
    procedureCode                   ProcedureCode                   OPTIONAL,
    triggeringMessage               TriggeringMessage               OPTIONAL,
    procedureCriticality            Criticality                     OPTIONAL,
    iEsCriticalityDiagnostics       CriticalityDiagnostics-IE-List  OPTIONAL,
    iE-Extensions                   ProtocolExtensionContainer { {CriticalityDiagnostics-ExtIEs} }  OPTIONAL,
    ...
}

ProcedureCode       ::= INTEGER (0..255)

id-handoverPreparation                                          ProcedureCode ::= 0
id-handoverCancel                                               ProcedureCode ::= 1
id-loadIndication                                               ProcedureCode ::= 2
id-errorIndication                                              ProcedureCode ::= 3
id-snStatusTransfer                                             ProcedureCode ::= 4
id-uEContextRelease                                             ProcedureCode ::= 5
id-x2Setup                                                      ProcedureCode ::= 6
id-reset                                                        ProcedureCode ::= 7
id-eNBConfigurationUpdate                                       ProcedureCode ::= 8
id-resourceStatusReportingInitiation                            ProcedureCode ::= 9
id-resourceStatusReporting                                      ProcedureCode ::= 10
id-privateMessage                                               ProcedureCode ::= 11
id-mobilitySettingsChange                                       ProcedureCode ::= 12
id-rLFIndication                                                ProcedureCode ::= 13
id-handoverReport                                               ProcedureCode ::= 14
id-cellActivation                                               ProcedureCode ::= 15
id-x2Release                                                    ProcedureCode ::= 16
id-x2APMessageTransfer                                          ProcedureCode ::= 17
id-x2Removal                                                    ProcedureCode ::= 18
id-seNBAdditionPreparation                                      ProcedureCode ::= 19
id-seNBReconfigurationCompletion                                ProcedureCode ::= 20
id-meNBinitiatedSeNBModificationPreparation                     ProcedureCode ::= 21
id-seNBinitiatedSeNBModification                                ProcedureCode ::= 22
id-meNBinitiatedSeNBRelease                                     ProcedureCode ::= 23
id-seNBinitiatedSeNBRelease                                     ProcedureCode ::= 24
id-seNBCounterCheck                                             ProcedureCode ::= 25
id-retrieveUEContext                                            ProcedureCode ::= 26
id-sgNBAdditionPreparation                                      ProcedureCode ::= 27
id-sgNBReconfigurationCompletion                                ProcedureCode ::= 28
id-meNBinitiatedSgNBModificationPreparation                     ProcedureCode ::= 29
id-sgNBinitiatedSgNBModification                                ProcedureCode ::= 30
id-meNBinitiatedSgNBRelease                                     ProcedureCode ::= 31
id-sgNBinitiatedSgNBRelease                                     ProcedureCode ::= 32
id-sgNBCounterCheck                                             ProcedureCode ::= 33
id-sgNBChange                                                   ProcedureCode ::= 34
id-rRCTransfer                                                  ProcedureCode ::= 35
id-endcX2Setup                                                  ProcedureCode ::= 36
id-endcConfigurationUpdate                                      ProcedureCode ::= 37
id-secondaryRATDataUsageReport                                  ProcedureCode ::= 38
id-endcCellActivation                                           ProcedureCode ::= 39
id-endcPartialReset                                             ProcedureCode ::= 40
id-eUTRANRCellResourceCoordination                              ProcedureCode ::= 41
id-SgNBActivityNotification                                     ProcedureCode ::= 42
id-endcX2Removal                                                ProcedureCode ::= 43
id-dataForwardingAddressIndication                              ProcedureCode ::= 44
id-gNBStatusIndication                                          ProcedureCode ::= 45
id-deactivateTrace                                              ProcedureCode ::= 46
id-traceStart                                                   ProcedureCode ::= 47
id-endcConfigurationTransfer                                    ProcedureCode ::= 48
id-handoverSuccess                                              ProcedureCode ::= 49
id-conditionalHandoverCancel                                    ProcedureCode ::= 50
id-earlyStatusTransfer                                          ProcedureCode ::= 51
id-cellTrafficTrace                                             ProcedureCode ::= 52
id-endcresourceStatusReporting                                  ProcedureCode ::= 53
id-endcresourceStatusReportingInitiation                        ProcedureCode ::= 54
id-f1CTrafficTransfer                                           ProcedureCode ::= 55
id-UERadioCapabilityIDMapping                                   ProcedureCode ::= 56
id-accessAndMobilityIndication                                  ProcedureCode ::= 57
id-procedure-code-58-not-to-be-used                             ProcedureCode ::= 58
id-CPC-cancel                                                   ProcedureCode ::= 59
id-rachIndication                                               ProcedureCode ::= 60
id-scgFailureInformationReport                                  ProcedureCode ::= 61
id-scgFailureTransfer                                           ProcedureCode ::= 62

TriggeringMessage   ::= ENUMERATED { initiating-message, successful-outcome, unsuccessful-outcome}

Criticality     ::= ENUMERATED { reject, ignore, notify }

CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..maxNrOfErrors)) OF
    SEQUENCE {
        iECriticality           Criticality,
        iE-ID                   ProtocolIE-ID,
        typeOfError             TypeOfError,
        iE-Extensions           ProtocolExtensionContainer { {CriticalityDiagnostics-IE-List-ExtIEs} } OPTIONAL,
        ...
}

The ProcedureCode list shows how much X2 has grown. The original listing on this page stopped at id-cellActivation, code 15. The latest release runs to id-scgFailureTransfer, code 62. Codes 19 to 25 belong to dual connectivity with an SeNB, and most codes from 27 to 43 belong to EN-DC with an en-gNB. Code 58 is reserved as id-procedure-code-58-not-to-be-used. In CriticalityDiagnostics, procedureCode names the procedure of the faulty message. The triggeringMessage field then says whether that message was an initiating message, a successful outcome or an unsuccessful outcome.

  • Find the neighbour, find its address, then set up X2 : ANR or configuration gives the neighbour, and configuration or S1 gives its transport address.
  • X2 Setup replaces everything : it erases old configuration data in both nodes and resets the interface.
  • The served cell list is the main payload : each side sends every cell it serves, including cells switched off for energy saving.
  • Most detail lives in extensions : antenna ports, PRACH, MBSFN, CSG and band information are all in ServedCell-Information-ExtIEs.

Communication over X2 for Mobility

An X2 handover moves a UE from a source eNB to a target eNB, and the two eNBs prepare it between themselves. The MME and S-GW join only at the end, when the target eNB asks them to switch the downlink path. The sequence below shows which steps run over X2, which run over S1 and which run over the air.

Following illustration is duplicated from The LTE Network Architecture - A Comprehensive Tutorial (Alcatel Lucent Whitepaper)

 

X2 handover sequence between UE, source eNB, target eNB and MME or S-GW

 

The numbered steps in the sequence above map to 3GPP procedures as follows.

  • Steps 1 to 3 happen before any X2 message : the MME provides the area restriction, and the source eNB configures UE measurements and decides on the handover.
  • Steps 4 and 6 are X2 Handover Preparation, 36.423 8.2.1 : HANDOVER REQUEST goes to the target eNB and HANDOVER REQUEST ACKNOWLEDGE comes back. The source eNB starts the timer TRELOCprep when it sends the request.
  • Step 5 is admission control in the target eNB : the target reserves resources for the E-RABs it admits before it acknowledges.
  • Step 7 is RRC, not X2 : the source eNB sends the handover command to the UE. The target eNB built that command and returned it inside the acknowledgement.
  • Step 8 is SN STATUS TRANSFER, 36.423 8.2.2 : it gives the target eNB the PDCP sequence number status, so forwarded data continues without loss or duplication.
  • The green area is user plane forwarding : the source eNB forwards user data to the target eNB over X2-U, not over X2AP.
  • Steps 10 and 11 are S1AP Path Switch Request, 36.413 8.4.4 : the target eNB asks the MME to move the downlink path from the source eNB to itself.
  • Step 12 is UE CONTEXT RELEASE, 36.423 8.2.3 : the target eNB informs the source eNB of handover success, and the source eNB releases the UE resources.

Two timers in the source eNB guard this sequence. TRELOCprep starts when HANDOVER REQUEST is sent, and it stops when HANDOVER REQUEST ACKNOWLEDGE arrives. If no response arrives before it expires, the source eNB cancels the preparation with the Handover Cancel procedure. For an immediate handover, the source eNB then starts TX2RELOCoverall. If no UE CONTEXT RELEASE arrives before that timer expires, the source eNB asks the MME to release the UE context. If the UE comes back to the source eNB first, the source eNB stops TX2RELOCoverall and keeps serving the UE.

Communication over X2 for Load/Interference Information

A eNB frequently exchanges with Neighbouring eNBs about Load and Interference related information for Load balencing or Interference Management (e.g, Interference Coordination as in ABS configuration for eICIC).

How often they exchanges these information would depend on the purpose of these information exchange. There are roughly two kinds of purpose of these information as listed below.

  • Load Balancing :  The frequency of this information exchange is relatively low.
  • RRM Optimization (e.g, Interference Coordination) : The frequency of this information exchange is relatively high (once in every tens of milliseconds).

The two purposes use different procedures. Load balancing information is requested with Resource Status Reporting Initiation. It is then delivered in RESOURCE STATUS UPDATE messages of the Resource Status Reporting procedure.

The interference coordination information is carried by a X2 message Load Indication as shown below.

 

< 36.423 Figure 8.3.1.2-1: Load Indication, successful operation >

Load Indication successful operation from eNB1 to eNB2

 

The diagram above has no response message. Load Indication is a Class 2 procedure, so eNB1 sends LOAD INFORMATION and eNB2 answers with nothing. The receiving eNB keeps each received value valid until a new LOAD INFORMATION message carries an update of the same IE.

You can figure out exact contents of informations carried by Load Information from ASN structure of the message as listed below.

 

Following is based on 36.423 v19.1.0 (Release 19)

LoadInformation ::= SEQUENCE {
    protocolIEs     ProtocolIE-Container    {{LoadInformation-IEs}},
    ...
}

LoadInformation-IEs X2AP-PROTOCOL-IES ::= {
    { ID id-CellInformation             CRITICALITY ignore  TYPE CellInformation-List       PRESENCE mandatory} ,
    ...
}

CellInformation-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CellInformation-ItemIEs} }

CellInformation-ItemIEs X2AP-PROTOCOL-IES ::= {
    { ID id-CellInformation-Item    CRITICALITY ignore  TYPE CellInformation-Item   PRESENCE mandatory  }
}

CellInformation-Item ::= SEQUENCE {
    cell-ID                         ECGI,
    ul-InterferenceOverloadIndication       UL-InterferenceOverloadIndication       OPTIONAL,
    ul-HighInterferenceIndicationInfo       UL-HighInterferenceIndicationInfo       OPTIONAL,
    relativeNarrowbandTxPower               RelativeNarrowbandTxPower               OPTIONAL,
    iE-Extensions                           ProtocolExtensionContainer { {CellInformation-Item-ExtIEs} }    OPTIONAL,
    ...
}

UL-InterferenceOverloadIndication ::= SEQUENCE (SIZE(1..maxnoofPRBs)) OF UL-InterferenceOverloadIndication-Item

UL-InterferenceOverloadIndication-Item ::= ENUMERATED {
    high-interference,
    medium-interference,
    low-interference,
    ...
}

UL-HighInterferenceIndicationInfo ::= SEQUENCE (SIZE(1..maxCellineNB)) OF UL-HighInterferenceIndicationInfo-Item

UL-HighInterferenceIndicationInfo-Item ::= SEQUENCE {
    target-Cell-ID                  ECGI,
    ul-interferenceindication       UL-HighInterferenceIndication,
    iE-Extensions                   ProtocolExtensionContainer { {UL-HighInterferenceIndicationInfo-Item-ExtIEs} } OPTIONAL,
    ...
}

UL-HighInterferenceIndication ::= BIT STRING (SIZE(1..110, ...))

Three fields in CellInformation-Item carry the interference picture, and each one works per PRB. The ul-InterferenceOverloadIndication field reports the uplink interference level that the sending cell experiences on each PRB, as high, medium or low. The ul-HighInterferenceIndicationInfo field names a target cell and gives one bit per PRB. A 1 marks high interference sensitivity as seen from the sending eNB. The receiving eNB should then try to avoid scheduling its cell edge UEs on that PRB. The relativeNarrowbandTxPower field covers the downlink. For each PRB, a 0 bit promises that the transmit power does not exceed the RNTP threshold.

The extension container is where most of the later interference features went. The listing below adds the ABS information for eICIC. It also adds four extensions that the original listing on this page did not have: IntendedULDLConfiguration, ExtendedULInterferenceOverloadInfo, CoMPInformation and DynamicDLTransmissionInformation. InvokeIndication also gained two values, naics-information-start and naics-information-stop.

Following is based on 36.423 v19.1.0 (Release 19)

CellInformation-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
{ ID id-ABSInformation                      CRITICALITY ignore  EXTENSION ABSInformation                            PRESENCE optional }|
{ ID id-InvokeIndication                    CRITICALITY ignore  EXTENSION InvokeIndication                          PRESENCE optional }|
{ ID id-IntendedULDLConfiguration           CRITICALITY ignore  EXTENSION SubframeAssignment                        PRESENCE optional }|
{ ID id-ExtendedULInterferenceOverloadInfo  CRITICALITY ignore  EXTENSION ExtendedULInterferenceOverloadInfo    PRESENCE optional }|
{ ID id-CoMPInformation                     CRITICALITY ignore  EXTENSION CoMPInformation                           PRESENCE optional }|
{ ID id-DynamicDLTransmissionInformation    CRITICALITY ignore  EXTENSION DynamicDLTransmissionInformation      PRESENCE optional },
    ...
}

ABSInformation ::= CHOICE {
    fdd                 ABSInformationFDD,
    tdd                 ABSInformationTDD,
    abs-inactive        NULL,
    ...
}

ABSInformationFDD ::= SEQUENCE {
    abs-pattern-info                    BIT STRING (SIZE(40)),
    numberOfCellSpecificAntennaPorts    ENUMERATED {one, two, four, ...},
    measurement-subset                  BIT STRING (SIZE(40)),
    iE-Extensions                       ProtocolExtensionContainer { {ABSInformationFDD-ExtIEs} } OPTIONAL,
    ...
}

ABSInformationFDD-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
    ...
}

ABSInformationTDD ::= SEQUENCE {
    abs-pattern-info                    BIT STRING (SIZE(1..70, ...)),
    numberOfCellSpecificAntennaPorts    ENUMERATED {one, two, four, ...},
    measurement-subset                  BIT STRING (SIZE(1..70, ...)),
    iE-Extensions                       ProtocolExtensionContainer { {ABSInformationTDD-ExtIEs} } OPTIONAL,
    ...
}

InvokeIndication ::= ENUMERATED{
    abs-information,
    ...,
    naics-information-start,
    naics-information-stop
}

UsableABSInformation ::= CHOICE {
    fdd                 UsableABSInformationFDD,
    tdd                 UsableABSInformationTDD,
    ...
}

UsableABSInformationFDD ::= SEQUENCE {
    usable-abs-pattern-info             BIT STRING (SIZE(40)),
    iE-Extensions                       ProtocolExtensionContainer { {UsableABSInformationFDD-ExtIEs} } OPTIONAL,
    ...
}

UsableABSInformationFDD-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
    ...
}

UsableABSInformationTDD ::= SEQUENCE {
    usaable-abs-pattern-info            BIT STRING (SIZE(1..70, ...)),
    iE-Extensions                       ProtocolExtensionContainer { {UsableABSInformationTDD-ExtIEs} } OPTIONAL,
    ...
}

The ABS pattern is a bitmap over subframes. For FDD it has 40 bits, one per DL subframe, and a 1 marks an almost blank subframe. The first bit corresponds to subframe 0 in the radio frame where SFN = 0, and the pattern repeats continuously. For TDD the length depends on the UL/DL configuration. It is 20 bits for configurations 1 to 5, 60 for configuration 6 and 70 for configuration 0. The measurement-subset field marks the subset of those ABS that the receiving eNB may use to configure specific UE measurements. An InvokeIndication set to abs-information asks the peer to send back its own ABS pattern.

The UsableABSInformation types at the end of the listing are not part of LOAD INFORMATION. They belong to the ABS Status IE, which travels in RESOURCE STATUS UPDATE. The eNB that received an ABS pattern reports there which of those ABS it can use for protected DL scheduling, and what share of their resources it uses. The eNB that designated the ABS uses this report to decide whether to change its pattern. Note that usaable-abs-pattern-info keeps the double a exactly as 36.423 spells it.

  • Load Indication is one way : it is a Class 2 procedure with no response message.
  • Interference reports work per PRB : overload indication and HII cover the uplink, and RNTP covers the downlink.
  • eICIC works per subframe instead : the ABS pattern marks subframes, not PRBs.
  • Load balancing uses a different procedure : Resource Status Reporting carries the measurement reports, including ABS Status.

Reference

  • TS 36.423 v19.1.0 - E-UTRAN; X2 Application Protocol - X2AP
  • TS 36.413 v19.2.0 - E-UTRAN; S1 Application Protocol - S1AP
  • TS 36.300 v19.2.0 - E-UTRA and E-UTRAN; Overall description; Stage 2