1. CCC Control Request¶
1.1 XappCccControlRequestPublisherPubData¶
The XappCccControlRequestPublisherPubData is responsible for sending CCC (Cell Configuration and Control) requests to the E2 nodes.
These control requests are used to adjust various aspects of the network, such as shutting down cells, bringing cells up, or modifying specific configurations.
Each control request involves specifying control actions and parameters that define the specific type of adjustment or control that the xApp aims to execute on the RAN via the E2 interface.
1.2 Examples¶
Info
To publish a Cell Shutdown Request, the following NATS subject must be used:
e2-t.E2SM-CCC-CONTROL-REQUEST
The following Python example demonstrates how to send a CCC Control Request.
Example
Send CCC Control example:
# Add Accelleran xapp library
from xapp_lib import xapp_lib
# Add protobuf definitions
from xapp_lib.proto_pb2.accelleran.e2 import genCcc_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 XappCccControlRequestPublisherPubData python dictionary
cell_shutdown_config = {
"E2smCccRicControlRequest": {
"RicRequestId": {
"RicRequestorId": req_id,
"RicInstanceId": node_a_ins_id
},
...
}
}
# Serialize the shutdown request message
e2sm_ccc_control_request_msg = genCcc_pb2.XappCccControlRequestPublisherPubData()
ParseDict(cell_shutdown_config, e2sm_ccc_control_request_msg)
# Send E2SM CCC request message
xapp.nats(endpoint="NATS_URL_5G").send_data(
"e2-t.E2SM-CCC-CONTROL-REQUEST", e2sm_ccc_control_request_msg.SerializeToString()
)
1.2.1 Cell Shutdown Request¶
Example XappCccControlRequestPublisherPubData message for cell shutdown:
E2 CCC Cell Shutdown Request example
{
"E2smCccRicControlRequest": {
"GlobalE2NodeId": {
"GlobalGnbId": {
"PlmnIdentity": {
"Data": [
153,
249,
153
]
},
"GnbId": {
"Value": 1,
"Length": 22
}
},
"OptionalGnbDuId": 1
},
"RicRequestId": {
"RicRequestorId": 23,
"RicInstanceId": 153563
},
"RanFunctionName": "ORAN-E2SM-CCC",
"RanFunctionId": 1,
"RicCallProcessId": {
"items": [0]
},
"RicControlAckRequest": genE2apMsgData_pb2.RIC_CONTROL_ACK_REQUEST_ACK,
"RicControlHeader": json.dumps({
"RIC-Control-Header": {
"E2SM-CCC-ControlHeaderFormat1": {
"ricStyleType": 2
}
}
}),
"RicControlMessage": json.dumps({
"controlMessageFormat": {
"E2SM-CCC-ControlMessageFormat2": {
"listOfCellsControlled": [
{
"cellGlobalId": {
"plmnIdentity": {
"mcc": "311",
"mnc": "48"
},
"nRCellIdentity": "16385"
},
"listOfConfigurationStructures": [
{
"ranConfigurationStructureName": "O-CESManagementFunction",
"oldValuesOfAttributes": {
"ranConfigurationStructure": {
"energySavingControl": "toBeEnergySaving"
}
},
"newValuesOfAttributes": {
"ranConfigurationStructure": {
"energySavingControl": "toBeEnergySaving"
}
}
}
]
}
]
}
}
})
}
}
1.2.2 Cell Bring-up Request¶
Example XappCccControlRequestPublisherPubData message for cell bring-up:
E2 CCC Bring-up Request example
{
"E2smCccRicControlRequest": {
"GlobalE2NodeId": {
"GlobalGnbId": {
"PlmnIdentity": {
"Data": [
153,
249,
153
]
},
"GnbId": {
"Value": 1,
"Length": 22
}
},
"OptionalGnbDuId": 1
},
"RicRequestId": {
"RicRequestorId": 23,
"RicInstanceId": 153563
},
"RanFunctionName": "ORAN-E2SM-CCC",
"RanFunctionId": 1,
"RicCallProcessId": {
"items": [0]
},
"RicControlAckRequest": genE2apMsgData_pb2.RIC_CONTROL_ACK_REQUEST_ACK,
"RicControlHeader": json.dumps({
"RIC-Control-Header": {
"E2SM-CCC-ControlHeaderFormat1": {
"ricStyleType": 2
}
}
}),
"RicControlMessage": json.dumps({
"controlMessageFormat": {
"E2SM-CCC-ControlMessageFormat2" : {
"listOfCellsControlled": [
{
"cellGlobalId": {
"plmnIdentity": {
"mcc": "311",
"mnc": "48"
},
"nRCellIdentity": "16385"
},
"listOfConfigurationStructures": [
{
"ranConfigurationStructureName": "O-CESManagementFunction",
"oldValuesOfAttributes": {
"ranConfigurationStructure": {
"energySavingControl": "toBeEnergySaving"
}
},
"newValuesOfAttributes": {
"ranConfigurationStructure": {
"energySavingControl": "toBeNotEnergySaving"
}
}
}
]
}
]
}
}
})
}
}
1.3 Schema¶
This section provides the JSON schema for the E2 CCC Control Request, which outlines the expected structure and data types.
E2 CCC Control Request schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"$ref": "#/definitions/XappCccControlRequestPublisherPubData",
"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.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.RicRequestId": {
"properties": {
"RicRequestorId": {
"type": "integer"
},
"RicInstanceId": {
"type": "integer"
}
},
"additionalProperties": true,
"type": "object",
"title": "Ric Request Id"
},
"PBXAppCccData.E2smCccRicControlRequest": {
"properties": {
"GlobalE2NodeId": {
"$ref": "#/definitions/PBE2apMsgData.GlobalE2NodeId",
"additionalProperties": true
},
"RicRequestId": {
"$ref": "#/definitions/PBE2apMsgData.RicRequestId",
"additionalProperties": true
},
"RanFunctionName": {
"type": "string"
},
"RanFunctionId": {
"type": "integer"
},
"RicCallProcessId": {
"$ref": "#/definitions/PBE2apMsgData.RicCallProcessId",
"additionalProperties": true
},
"RicControlAckRequest": {
"enum": [
"RIC_CONTROL_ACK_REQUEST_NO_ACK",
"RIC_CONTROL_ACK_REQUEST_ACK"
],
"type": "string",
"title": "Ric Control Ack Request"
},
"RicControlHeader": {
"type": "string"
},
"RicControlMessage": {
"type": "string"
}
},
"additionalProperties": true,
"type": "object",
"title": "E 2 Sm Ccc Ric Control Request"
},
"XappCccControlRequestPublisherPubData": {
"properties": {
"E2smCccRicControlRequest": {
"$ref": "#/definitions/PBXAppCccData.E2smCccRicControlRequest",
"additionalProperties": true,
"description": "See E2smCccRicControlRequest 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 Control Request Publisher Pub Data",
"description": "* Publisher : XappCccControlRequestPublisher Topic : E2SM-CCC-CONTROL-REQUEST Description : Publishes E2 CCC Control Request initiated by the XAPP to the SMCCC"
}
}
}