Traffic Steering xAPP

User’s Guide

Traffic Steering xAPP

Introduction

The Traffic Steering Use Case demonstrates intelligent inferences in the Near-RT RIC and E2 interaction in order to execute on the inferences.

The current Use Case is comprised of five xApps:

  • KPI Monitoring xApp: Gathers the radio and system Key Performance Indicators (KPI) metrics from E2 Nodes and stores them in the Shared Data Layer (SDL).

  • Anomaly Detection (AD) xApp: Fetches UE data regularly from SDL, monitors UE metrics and sends the anomalous UEs to Traffic Steering xApp.

  • Traffic Steering xApp (this one): Consumes A1 Policy Intent, listens for badly performing UEs, sends prediction requests to QP xApp, and listens for messages from QP that show UE throughput predictions in different cells to make decisions about UE Handover.

  • QoE Prediction (QP) xApp: Generates a feature set of metrics based on SDL lookups in UE-Metric and Cell-Metric namespaces for a given UE, and outputs Throughput predictions on the Serving and any Neighbor cells to the Traffic Steering xApp.

  • RAN Control (RC) xApp: Provides basic implementation of spec compliant E2-SM RC to send RIC Control Request messages to RAN/E2 Nodes.

A1 Policy

A1 Policy is sent to Traffic Steering xApp to define the Intent which will drive the Traffic Steering behavior.

Policy Type ID is 20008.

Currently, there is only one parameter that can be provided in A1 Policy: threshold

An example Policy follows:

{ "threshold": 5 }

This Policy instructs Traffic Steering xApp to hand-off any UE whose downlink throughput of its current serving cell is 5% below the throughput of any neighboring cell.

Receiving Anomaly Detection

Traffic Sterring xApp defines a callback to listen to Anomaly Detection messages received from AD xApp. The RMR message type is 30003. The following is an example message body:

[
    {
        "du-id":1010,
        "ue-id":"Train passenger 2",
        "measTimeStampRf":1620835470108,
        "Degradation":"RSRP RSSINR"
    }
]

Sending QoE Prediction Request

Traffic Steering listens for badly performing UEs. Each Anomaly Detection message received from AD xApp, results in a QoE Prediction Request to QP xApp. The RMR Message Type is 30000. The following is an example message body:

{ "UEPredictionSet": ["Train passenger 2"] }

Receiving QoE Prediction

Traffic Steering xApp defines a callback for QoE Prediction received from QP xApp. The RMR message type is 30002. The following is an example message body:

{
    "Train passenger 2":{
        "310-680-200-555001":[2000000, 1200000],
        "310-680-200-555002":[1000000, 4000000],
        "310-680-200-555003":[5000000, 4000000]
    }
}

This message provides throughput predictions of three cells for the UE ID “Train passenger 2”. For each service cell, it lists an array containing two elements: DL Throughput and UL Throughput predictions.

Traffic Steering xApp checks for the Service Cell ID for UE ID, and determines if the predicted throughput is higher in a neighbor cell. The first cell in this prediction message is assumed to be the serving cell.

If predicted throughput is higher than the A1 policy “threshold” in a given neighbor cell, Traffic Steering sends the CONTROL message to a given endpoint. Since RC xApp is not mandatory for the Traffic Steering use case, TS xApp sends CONTROL messages using either REST or gRPC calls. The CONTROL endpoint is set up in the xApp descriptor file called “config-file.json”. Please, check out the “schema.json” file for configuration examples.

The following is an example of a REST message that requests the handover of a given UE:

{
    "command": "HandOff",
    "seqNo": 1,
    "ue": "Train passenger 2",
    "fromCell": "310-680-200-555001",
    "toCell": "310-680-200-555003",
    "timestamp": "Sat May 22 10:35:33 2021",
    "reason": "Hand-Off Control Request from TS xApp",
    "ttl": 10
}

Control messages might also be exchanged with E2 Simulators that implement REST-based interfaces. Traffic Steering then logs the REST response showing whether or not the control operation has succeeded.

The gRPC interface is only required to exchange messages with the RC xApp. The following is an example of the gRPC message (string representation) which requests the RC xApp to handover a given UE:

e2NodeID: "000000000001001000110100"
plmnID: "02F829"
ranName: "enb_208_092_001235"
    RICE2APHeaderData {
    RanFuncId: 300
    RICRequestorID: 1001
}
RICControlHeaderData {
    ControlStyle: 3
    ControlActionId: 1
    UEID: "Train passenger 2"
}
RICControlMessageData {
    TargetCellID: "mnop"
}

TS xApp also requires to fetch additional RAN information from the E2 Manager to communicate with RC xApp. By default, TS xApp requests information to the default endpoint of E2 Manager in the Kubernetes cluster. Currently, this is done once on startup. Finally, the default E2 Manager endpoint from TS can be changed using the env variable “SERVICE_E2MGR_HTTP_BASE_URL”.

Traffic Steering xAPP

2023 Jan 6 Version 1.2.5

Improve error handling on rest api Fix communication between TS and QP xApp

2022 Jun 29 Version 1.2.4

Fix Proto file

2022 May 10 Version 1.2.3

Update TS to enforce A1 policy on throughput predictions

2022 Mar 26 Version 1.2.2

Fix dummy values in gRPC message sent to RC xApp

2022 Feb 9 Version 1.2.1

Update both xapp-frame-cpp and RMR dependencies

2021 Dec 8 Version 1.2.0

Update TS xApp for Release E use case and changes to integrate with RC xApp

2021 June 24 Version 1.1.1

Fixes the extra nil character sent in RMR payload and other potential bugs

2021 May 28 Version 1.1.0

Changes to integrate with the traffic steering use case for Release D

2020 Dec 8 Version 1.0.13

Small changes to integrate with RAN data written by KPIMON xApp

2020 Dec 7 Version 1.0.12

Change by HCL to support AD xapp

2020 June 11 Version 1.0.11

Removed extraneous logging messages

2020 June 8 Version 1.0.10

Set env. variable RMR_SRC_ID to bet K8s RMR Service Host and Port

2020 June 2 Version 1.0.9

Fix xapp descriptor to have rmr-data sections instead of rmr-data-in

2020 May 26 Version 1.0.7

Fix issue with parsing of prediction message

2020 May 20 Version 1.0.5

Support parsing of A1 Policy Create message

2020 May 20 Version 1.0.4

Ensure that the SDL libraries are included in the image.

2020 April 28 Version 1.0.0

Initial release.