Skip to content

1. RC Control Request Failure

1.1 RcXappRicControlFailurePublisherPubData

The RcXappRicControlFailurePublisherPubData message provides details about the failure of a previously issued RC Control Request.

This response is sent by the E2 node when it cannot execute the control action requested, such as cell barring or mobility control.

Failures may occur due to various reasons, including invalid parameters, network conditions, or the inability of the RAN to process the request.

The control failure message is crucial for identifying and troubleshooting issues within the RAN control process, allowing xApps to adjust their operations accordingly.

1.2 Examples

Info

To receive a Control Request Failure message, the following NATS subject must be used:

e2-t.E2SM-RANCTL-CONTROL-FAILURE
This subject is responsible for receiving the control failure message after the RAN fails to execute a control action.

Below is a Python example demonstrating how to receive and handle an RC Control Request Failure.

Example

Receive RC Control Failure example:

# Add Accelleran xapp library
from xapp_lib import xapp_lib
# Add protobuf definitions
from xapp_lib.proto_pb2.accelleran.e2 import genXappRc_pb2
# Add function to deserialize protobuf message to a dict
from google.protobuf.json_format import MessageToDict

def e2sm_rc_control_failure(encoded_data):
    data = genRcXapp_pb2.RcXappRicControlFailurePublisherPubData()
    data.ParseFromString(encoded_data)
    return data.RicControlFailure

msgList = [
    ("E2SM-RANCTL-CONTROL-FAILURE", e2sm_rc_subscription_delete_resp),
]

def get_subject_list(req_id, ins_id):
    subjects = []
    for msg in msgList:
        subjects.append(
            "e2-t."
            + msg[0]
            + ".RIC_REQUESTOR="
            + str(req_id)
            + ".RIC_INSTANCE="
            + str(ins_id)
        )
    return subjects

def decoder(subject, encoded_data):
    item = [item for item in msgList if item[0] == subject and item[1] != None]
    if not item:
        logging.error(f"Subject not supported: {subject}. Cannot decode the message.")
        return None
    return dict(item)[subject](encoded_data)

def extract_subject(input_string):
    components = input_string.split(".")
    for component in components:
        for subject, _ in msgList:
            if subject in component:
                return subject
    return None

def main():

    ### Use xApp Builder to create the xApp
    builder = xapp_lib.XAppBuilder("../..", absolute=False)
    builder.metadata("core/xapp_metadata.json")
    builder.endpoints("config/xapp_endpoints.json")
    builder.config("config/xapp_config.json")
    builder.readme("README.md")
    xapp = builder.build()

    # Get xApp request id
    req_id = xapp.id
    # Get xApp instance id
    node_a_ins_id = xapp.transaction_id_gen.get()

    # Listen for control failure responses
    e2_node_a_subjects = get_subject_list(req_id, node_a_ins_id)
    xapp.nats(endpoint="NATS_URL_5G").subscribe(e2_node_a_subjects)

    # Reception of Control Failure Response
    for _ in range(10):
        data = xapp.nats().recv_data()
        subject = extract_subject(data[0])
        decoded_resp = decoder(subject, data[1])
        logging.info("Received message: {data}".format(data=decoded_resp))

1.3 Schema

This section provides the JSON schema for the RC Control Request Failure message, outlining the expected structure and data types.

E2 RC Control Request Failure schema
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "$ref": "#/definitions/RcXappRicControlFailurePublisherPubData",
    "definitions": {
        "PBE2apMsgData.CauseData": {
            "properties": {
                "CauseType": {
                    "enum": [
                        "CAUSE_TYPE_RIC_REQUEST",
                        "CAUSE_TYPE_RIC_SERVICE",
                        "CAUSE_TYPE_E2_NODE",
                        "CAUSE_TYPE_TRANSPORT",
                        "CAUSE_TYPE_PROTOCOL",
                        "CAUSE_TYPE_MISC"
                    ],
                    "type": "string",
                    "title": "Cause Type",
                    "description": "*O-RAN.WG3.E2AP-v02.00 9.2.1 Cause - for particular even for E2AP"
                },
                "RrCauseValue": {
                    "enum": [
                        "RR_UNSPECIFIED",
                        "RR_RAN_FUNCTION_ID_INVALID",
                        "RR_ACTION_NOT_SUPPORTED",
                        "RR_EXCESSIVE_ACTIONS",
                        "RR_DUPLICATE_ACTION",
                        "RR_DUPLICATE_EVENT_TRIGGER",
                        "RR_FUNCTION_RESOURCE_LIMIT",
                        "RR_REQUEST_ID_UNKNOWN",
                        "RR_INCONSISTENT_ACTION_SUBSEQUENT_ACTION_SEQUENCE",
                        "RR_CONTROL_MESSAGE_INVALID",
                        "RR_RIC_CALL_PROCESS_ID_INVALID",
                        "RR_CONTROL_TIMER_EXPIRED",
                        "RR_CONTROL_FAILED_TO_EXECUTE",
                        "RR_SYSTEM_NOT_READY"
                    ],
                    "type": "string",
                    "title": "Ric Request Cause Value",
                    "description": "*RIC request cause values in E2AP messages"
                },
                "RsCauseValue": {
                    "enum": [
                        "RS_RAN_FUNCTION_NOT_SUPPORTED",
                        "RS_EXCESSIVE_FUNCTIONS",
                        "RS_RIC_RESOURCE_LIMIT"
                    ],
                    "type": "string",
                    "title": "Ric Service Cause Value",
                    "description": "*RIC service cause values in E2AP messages"
                },
                "EnCauseValue": {
                    "enum": [
                        "EN_E2NODE_COMPONENT_UNKNOWN"
                    ],
                    "type": "string",
                    "title": "E 2 Node Cause Value",
                    "description": "*RIC service cause values in E2AP messages"
                },
                "TpCauseValue": {
                    "enum": [
                        "TL_UNSPECIFIED",
                        "TL_TRANSPORT_RES_UNAVAIL"
                    ],
                    "type": "string",
                    "title": "Transport Cause Value",
                    "description": "*transport cause values in E2AP messages"
                },
                "ProtocolCauseValue": {
                    "enum": [
                        "PR_TRANSFER_SYNTAX_ERR",
                        "PR_ABSTRACT_SYNTAX_ERR_REJECT",
                        "PR_ABSTRACT_SYNTAX_ERR_IGNORE_AND_NOTIFY",
                        "PR_MSG_NOT_COMPATIBLE_WITH_RECEIVER_STATE",
                        "PR_SEMANTIC_ERR",
                        "PR_ABSTRACT_SYNTAX_ERR",
                        "PR_UNSPECIFIED"
                    ],
                    "type": "string",
                    "title": "Protocol Cause Value",
                    "description": "*protocol cause values in E2AP messages"
                },
                "MiscCauseValue": {
                    "enum": [
                        "MI_CTRL_PROCESSING_OVERLOAD",
                        "MI_HW_FAILURE",
                        "MI_OM_INTERVENTION",
                        "MI_UNSPECIFIED"
                    ],
                    "type": "string",
                    "title": "Misc Cause Value",
                    "description": "*misc cause values in E2AP messages"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Cause Data"
        },
        "PBE2apMsgData.GlobalE2NodeId": {
            "properties": {
                "GlobalGnbId": {
                    "$ref": "#/definitions/PBE2apMsgData.GlobalGnbId",
                    "additionalProperties": true
                },
                "OptionalGnbCuUpId": {
                    "type": "string"
                },
                "OptionalGnbDuId": {
                    "type": "string"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Global E 2 Node Id",
            "description": "*O-RAN.WG3.E2AP-v02.00 9.2.6 Global E2 Node ID"
        },
        "PBE2apMsgData.GlobalGnbId": {
            "properties": {
                "PlmnIdentity": {
                    "$ref": "#/definitions/PBE2apMsgData.PlmnIdentity",
                    "additionalProperties": true
                },
                "GnbId": {
                    "$ref": "#/definitions/PBE2apMsgData.GnbId",
                    "additionalProperties": true
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Global Gnb Id"
        },
        "PBE2apMsgData.GnbId": {
            "properties": {
                "Value": {
                    "type": "integer"
                },
                "Length": {
                    "type": "integer",
                    "description": "Number of bits used in the gnbId. This may vary from 22 to 32"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Gnb Id"
        },
        "PBE2apMsgData.PlmnIdentity": {
            "properties": {
                "Data": {
                    "items": {
                        "type": "integer"
                    },
                    "type": "array"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Plmn Identity",
            "description": "*O-RAN.WG3.E2SM-R003-v03.00 6.2.3.1 PLMN Identity"
        },
        "PBE2apMsgData.RicCallProcessId": {
            "properties": {
                "items": {
                    "items": {
                        "type": "integer"
                    },
                    "type": "array",
                    "description": "Carries max 4096 elements of type uint32"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Ric Call Process Id"
        },
        "PBE2apMsgData.RicControlFailure": {
            "properties": {
                "GlobalE2NodeId": {
                    "$ref": "#/definitions/PBE2apMsgData.GlobalE2NodeId",
                    "additionalProperties": true
                },
                "RicRequestId": {
                    "$ref": "#/definitions/PBE2apMsgData.RicRequestId",
                    "additionalProperties": true
                },
                "RanFunctionId": {
                    "type": "integer"
                },
                "RicCallProcessId": {
                    "$ref": "#/definitions/PBE2apMsgData.RicCallProcessId",
                    "additionalProperties": true
                },
                "Cause": {
                    "$ref": "#/definitions/PBE2apMsgData.CauseData",
                    "additionalProperties": true
                },
                "RicControlOutcome": {
                    "$ref": "#/definitions/PBE2apMsgData.RicControlOutcome",
                    "additionalProperties": true
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Ric Control Failure"
        },
        "PBE2apMsgData.RicControlOutcome": {
            "properties": {
                "items": {
                    "items": {
                        "type": "integer"
                    },
                    "type": "array",
                    "description": "Carries max 4096 elements of type uint32"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Ric Control Outcome"
        },
        "PBE2apMsgData.RicRequestId": {
            "properties": {
                "RicRequestorId": {
                    "type": "integer"
                },
                "RicInstanceId": {
                    "type": "integer"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Ric Request Id"
        },
        "RcXappRicControlFailurePublisherPubData": {
            "properties": {
                "RicControlFailure": {
                    "$ref": "#/definitions/PBE2apMsgData.RicControlFailure",
                    "additionalProperties": true,
                    "description": "See RicControlFailure for detailed description of this field"
                },
                "tlpublishTime": {
                    "type": "string",
                    "description": "Contains the time of publishing in EPOCH milliseconds"
                },
                "spanContext": {
                    "type": "string",
                    "description": "Contains an opentracing spancontext",
                    "format": "binary",
                    "binaryEncoding": "base64"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Rc Xapp Ric Control Failure Publisher Pub Data",
            "description": "* Publisher : RcXappRicControlFailurePublisher Topic : E2SM-RANCTL-CONTROL-FAILURE.RIC_REQUESTOR=*.RIC_INSTANCE=* Description : Publishes the E2 control failure received from the               E2 Termination node to the xAPP"
        }
    }
}