Skip to content

1. CCC Subscription Request

1.1 XappCccSubscriptionRequestPublisherPubData

The XappCccSubscriptionRequestPublisherPubData defines the subscription parameters for managing Cell Configuration and Control (CCC) between the E2 nodes and the RAN Intelligent Controller (RIC) over the E2 interface.

This data structure enables the RIC to subscribe to real-time updates and control mechanisms related to cell configuration and operational parameters in the radio access network (RAN).

It plays a crucial role in dynamically managing and optimizing cell configurations to ensure efficient network performance and adaptability to changing conditions.

The key components of XappCccSubscriptionRequestPublisherPubData are as follows:

  • Cell Configuration Information: Specifies the parameters related to the configuration of cells, such as physical cell ID, frequency allocations, power settings, and other operational parameters.
  • Control Actions: Defines the set of control actions that the RIC can perform on the E2 nodes, including adjusting power levels, modifying cell boundaries, or triggering handover operations.
  • Node Information: Identifies the E2 node(s) (e.g., eNB or gNB) where the cell configuration and control actions are being applied.
  • Trigger Conditions: Specifies the conditions that trigger the reporting of cell configuration changes or control actions, such as network performance degradation, user load variations, or pre-defined thresholds.
  • Reporting Interval: Defines the time intervals for periodic reports or immediate notifications of configuration changes or control actions performed by the RIC.
  • Report Format: Determines how the cell configuration and control data should be sent to the RIC for processing and decision-making in real time.

1.2 Examples

Info

To publish a CCC Subscription request, the following NATS subject must be used:

e2-t.E2SM-CCC-SUBSCRIBE
This subject is responsible for sending the CCC subscription message.

The following Python example demonstrates how to build and send a CCC subscription request.

Example

Send CCC Subscription example:

# Add Accelleran xapp library
from xapp_lib import xapp_lib
# Add protobuf definitions
from xapp_lib.proto_pb2.accelleran.e2 import genXappCcc_pb2
# Add function to serialize json dict in protobuf
from google.protobuf.json_format import ParseDict

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()

    # Define the XappCccSubscriptionRequestPublisherPubData python dictionary
    e2sm_ccc_subscription_config = {
        "E2smCccSubscriptionData": {
            "RequestId": {
                "RicRequestorId": req_id,
                "RicInstanceId": node_a_ins_id
            },
            # Additional fields go here...
        }
    }

    # Serialize the subscription request message
    e2sm_ccc_subscription_request_msg = genXappCcc_pb2.XappCccSubscriptionRequestPublisherPubData()
    ParseDict(e2sm_ccc_subscription_config, e2sm_ccc_subscription_request_msg)

    # Send e2sm ccc subscription message
    xapp.nats(endpoint="NATS_URL_5G").send_data(
        "e2-t.E2SM-CCC-SUBSCRIBE", e2sm_ccc_subscription_request_msg.SerializeToString()
    )

1.2.1 Subscription Request

Example XappCccSubscriptionRequestPublisherPubData message for subscription:

E2 CCC Subscription Request example
{
    "E2smCccSubscriptionData": {
        "RequestId": {
            "RicRequestorId": 23,
            "RicInstanceId": 153563
        },
        "RanFunctionName": "ORAN-E2SM-CCC",
        "NodeId": {
            "GlobalGnbId": {
                "PlmnIdentity": {
                    "Data": [
                        153,
                        249,
                        153
                    ]
                },
                "GnbId": {
                    "Value": 1,
                    "Length": 22
                }
            },
            "OptionalGnbDuId": 1
        },
        "EventTriggerDefinition": json.dumps({
            "EventTriggerStyle": {
                "eventTriggerStyleType": 1,
                "eventTriggerStyleName": "CellLevelConfigurationChange",
                "eventTriggerFormatType": 2
            },
            "eventTriggerDefinitionFormat": {
                "listOfCellLevelConfigurationStructuresForEventTrigger": [
                    {
                        "cellGlobalId": {
                            "plmnIdentity": {
                                "mcc": "311",
                                "mnc": "48"
                            },
                            "nRCellIdentity": "16385"
                        },
                        "listOfRANConfigurationStructuresForEventTrigger": [
                            {
                                "listOfSupportedAttributes": [
                                    {
                                        "attributeName": "energySavingControl"
                                    }
                                ],
                                "ranConfigurationStructureName": "O-CESManagementFunction"
                            }
                        ]
                    }
                ]
            }
        }),
        "RicActionToBeSetupList": {
            "items": [
                {
                    "RicActionId": 1,
                    "RicActionType": genE2apMsgData_pb2.RIC_ACTION_TYPE_REPORT,
                    "ActionDefinition": json.dumps({
                        "ricStyleType": 2,
                        "actionDefinitionFormat": {
                            "listOfCellConfigurationsToBeReportedForADF": [
                                {
                                    "cellGlobalId": {
                                        "plmnIdentity": {
                                            "mcc": "311",
                                            "mnc": "48"
                                        },
                                        "nRCellIdentity": "16385"
                                    },
                                    "listOfCellLevelRANConfigurationStructuresForADF": [
                                        {
                                            "listOfAttributes": [
                                                {
                                                    "attributeName": "energySavingControl"
                                                }
                                            ],
                                            "ranConfigurationStructureName": "O-CESManagementFunction",
                                            "reportType": 0
                                        }
                                    ]
                                }
                            ]
                        }
                    })
                }
            ]
        }
    }
}

1.3 Schema

This section provides the JSON schema for the E2 CCC Subscription Request, which outlines the expected structure and data types.

E2 CCC Subscription Request schema
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "$ref": "#/definitions/XappCccSubscriptionRequestPublisherPubData",
    "definitions": {
        "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.RicRequestId": {
            "properties": {
                "RicRequestorId": {
                    "type": "integer"
                },
                "RicInstanceId": {
                    "type": "integer"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Ric Request Id"
        },
        "PBE2apMsgData.RicSubsequentAction": {
            "properties": {
                "RicSubsequentActionType": {
                    "enum": [
                        "RIC_SUBSEQUENT_ACTION_TYPE_CONTINUE",
                        "RIC_SUBSEQUENT_ACTION_TYPE_HALT"
                    ],
                    "type": "string",
                    "title": "Ric Subsequent Action Type"
                },
                "RicTimeToWait": {
                    "enum": [
                        "ric_time_to_wait_unknown",
                        "ric_time_to_wait_1",
                        "ric_time_to_wait_2",
                        "ric_time_to_wait_5",
                        "ric_time_to_wait_10",
                        "ric_time_to_wait_20",
                        "ric_time_to_wait_30",
                        "ric_time_to_wait_40",
                        "ric_time_to_wait_50",
                        "ric_time_to_wait_100",
                        "ric_time_to_wait_200",
                        "ric_time_to_wait_500",
                        "ric_time_to_wait_1000",
                        "ric_time_to_wait_2000",
                        "ric_time_to_wait_5000",
                        "ric_time_to_wait_10000",
                        "ric_time_to_wait_20000",
                        "ric_time_to_wait_60000"
                    ],
                    "type": "string",
                    "title": "Ric Time To Wait"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Ric Subsequent Action"
        },
        "PBXAppCccData.E2smCccSubscriptionData": {
            "properties": {
                "RequestId": {
                    "$ref": "#/definitions/PBE2apMsgData.RicRequestId",
                    "additionalProperties": true
                },
                "RanFunctionName": {
                    "type": "string"
                },
                "RanFunctionId": {
                    "type": "integer"
                },
                "NodeId": {
                    "$ref": "#/definitions/PBE2apMsgData.GlobalE2NodeId",
                    "additionalProperties": true
                },
                "EventTriggerDefinition": {
                    "type": "string"
                },
                "RicActionToBeSetupList": {
                    "$ref": "#/definitions/PBXAppCccData.RicActionToBeSetupList",
                    "additionalProperties": true
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "E 2 Sm Ccc Subscription Data"
        },
        "PBXAppCccData.RicActionToBeSetupItem": {
            "properties": {
                "RicActionId": {
                    "type": "integer"
                },
                "RicActionType": {
                    "enum": [
                        "RIC_ACTION_TYPE_INSERT",
                        "RIC_ACTION_TYPE_REPORT",
                        "RIC_ACTION_TYPE_POLICY"
                    ],
                    "type": "string",
                    "title": "Ric Action Type"
                },
                "RicSubsequentAction": {
                    "$ref": "#/definitions/PBE2apMsgData.RicSubsequentAction",
                    "additionalProperties": true
                },
                "ActionDefinition": {
                    "type": "string"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Ric Action To Be Setup Item"
        },
        "PBXAppCccData.RicActionToBeSetupList": {
            "properties": {
                "items": {
                    "items": {
                        "$ref": "#/definitions/PBXAppCccData.RicActionToBeSetupItem"
                    },
                    "type": "array",
                    "description": "Carries max e2ap_msg_data::MAX_NO_RIC_ACTIONS elements of type RicActionToBeSetupItem"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Ric Action To Be Setup List"
        },
        "XappCccSubscriptionRequestPublisherPubData": {
            "properties": {
                "E2smCccSubscriptionData": {
                    "$ref": "#/definitions/PBXAppCccData.E2smCccSubscriptionData",
                    "additionalProperties": true,
                    "description": "See E2smCccSubscriptionData 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": "Xapp Ccc Subscription Request Publisher Pub Data",
            "description": "* Publisher : XappCccSubscriptionRequestPublisher Topic : E2SM-CCC-SUBSCRIBE Description : Publishes E2 Subscription Request initiated by the XAPP to the SMCCC"
        }
    }
}