Introduction
This design matches the requirements in the following USs:
Jira |
---|
server | ORAN Jira |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
serverId | 5ec52304-b77c-3ce7-af6a-112cb13e6008 |
---|
key | RIC-431 |
---|
|
...
Jira |
---|
server | ORAN Jira |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
serverId | 5ec52304-b77c-3ce7-af6a-112cb13e6008 |
---|
key | RIC-433 |
---|
|
Jira |
---|
server | ORAN Jira |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
serverId | 5ec52304-b77c-3ce7-af6a-112cb13e6008 |
---|
|
...
RnibReader Changes
We shall modify the ServedCellInfo message inside the Enb proto message:Current enb.protoadd a new proto message, named AdditionalCellInformation
:
Code Block |
---|
message EnbAdditionalCellInformation {
EnbType enb_type float cell_latitude = 1;
repeated ServedCellInfo served_cells float cell_longitude = 2;
repeated string gu_group_ids float antenna_height = 3;
}
message ServedCellInfo {
uint32 pci = 1;
string cell_id = 2;
string tac = 3;
repeated string broadcast_plmns float antenna_azimuth_direction = 4;
ChoiceEUTRAMode choice_eutra_mode float antenna_tilt_angle = 5;
Eutra.Mode eutra_mode float antenna_max_transmit = 6;
NumberOfAntennaPorts number_of_antenna_ports float antenna_max_gain = 7;
PrachConfiguration prach_configuration uint32 sector_id = 8;
} |
- Expand ServedCellInfo (enb.proto) with this proto message:
Code Block |
---|
|
message repeated MbsfnSubframe mbsfn_subframe_infos = 9;Enb {
stringEnbType csgenb_idtype = 101;
repeated stringServedCellInfo mbms_service_area_identitiesserved_cells = 112;
repeated uint32string multiband_infos = 12;
FreqBandIndicatorPriority freq_band_indicator_priority = 13;
BandwidthReducedSI bandwidth_reduced_si = 14;
repeated NeighbourInformation neighbour_infos = 15;
}
|
We shall add the following:
Code Block |
---|
gu_group_ids = 3;
}
message ServedCellInfo {
...
AdditionalCellInformation additional_cell_information = 16;
}
|
- Expand ServedNRCellInformation (gnb.proto) with this proto message:
Code Block |
---|
|
message Gnb {
repeated ServedNRCell served_nr_cells
message AdditionalCellInformation {
float cell_latitude = 1;
float cell_longitude repeated RanFunction ran_functions = 2;
float antenna_height = 3;
float antenna_azimuth_direction = 4;
float antenna_tilt_angle = 5;
float antenna_max_transmit = 6;
float antenna_max_gain = 7;
uint32 sector_id = 8
}
message ServedNRCell {
ServedNRCellInformation served_nr_cell_information = 1;
repeated NrNeighbourInformation nr_neighbour_infos = 2;
}
message ServedNRCellInformation {
...
AdditionalCellInformation additional_cell_information = 16;
} |
E2 Manager Configuration Changes
Configuration
Add a new configuration key to the yaml file.
...
Info |
---|
This key will be used by RnibWriter for adding/updating/deleting eNBs and updating gNBs. RnibWriter will trigger Sdl.SetAndPublish method, sending the RAN_MANIPULATION channel, and one of the following events: <RAN_NAME>_ADDED
<RAN_NAME>_UPDATED
<RAN_NAME>_DELETED
|
RnibWriter Changes
- Modify the following method:
Code Block |
---|
|
SaveNodeb(nbIdentity *entities.NbIdentity, nbnodebInfo *entities.NodebInfo) error |
→ For Gnb type, we execute sdl's Set method.
→ For Enb type, we execute sdl's SetAndPublish method instead, sending RAN_MANIPULATION channel and <RAN_NAME>_ADDED event.
...
- Add the following methods:
Code Block |
---|
RemoveServedCells(inventoryName string, servedCells []*entities.ServedCellInfo) error
UpdateEnb(nodebInfo *entities.NodebInfo, servedCells []*entities.ServedCellInfo) error
DeleteEnb(nodebInfo *entities.NodebInfo) error
|
Info |
---|
I've already added the below method as part of the gNB update cells US (for a case we get an empty list from the client): Code Block |
---|
RemoveServedNrCells(inventoryName string, servedNrCells []*entities.ServedNRCell) error
|
|
Add eNB REST API
Info |
---|
|
POST /v1/nodeb/enb is triggered, request body is validated- Execute
GetNodeb with RAN name coming from the request.
|
Request Body:
- If we have a DB error or if it already exists → error
- Create a NodebInfo struct with an Enb configuration, populate it with the request data and set its connection status to DISCONNECTED
- Execute
SaveNodeb , where sdl.SetAndPublish will be triggered for eNB type, sending the RAN_MANIPULATION channel and the <RAN_NAME>_ADDED event. - Return
Status |
---|
colour | Green |
---|
title | 201 Created |
---|
| with NodebInfo response.
|
POST /v1/nodeb/enb
Code Block |
---|
|
Code Block |
---|
{
"ranName": "",
"globalNbId": {
plmnId: "",
nbId: ""
},
"ip": "",
"port": 1234,
"enb": {
"enbType": "",
"servedCells": [{}],
"guGroupIds": [""]
}
} |
AddEnbRequestHandler
Code Block |
---|
title | AddEnbRequestHandler |
---|
|
type AddEnbRequestHandler struct {
logger *logger.Logger
rnibDataService services.RNibDataService
} |
Sequence Diagram
Image Added
Update eNB REST API & Update gNB REST API
Info |
---|
|
eNB | gNB | Notes |
---|
PUT /v1/nodeb/enb/<RAN_NAME> is triggered
| PUT /v1/nodeb/gnb/<RAN_NAME> is triggered
| → Request body is validated |
Execute GetNodeb with RAN name coming from the request | → If we have a DB error or if it doesn't exist → error | Execute RemoveServedCells to remove the existing eNB cells | Execute RemoveServedNrCells to remove the existing gNB cells |
| Set the nodeb with the request's data |
| Execute UpdateEnb | Execute UpdateGnbCells | → Set cells in both Cell ID key & PCI key → Set nodeb in both RAN ID key & RAN NAME key → Execute sdl.SetAndPublish , sending the RAN_MANIPULATION channel and the <RAN_NAME>_UPDATED event. | Return with NodebInfo response. |
|
|
PUT /v1/nodeb/enb/<RAN_NAME> | PUT /v1/nodeb/gnb/<RAN_NAME> |
Code Block |
---|
| {
"enb": {
"enbType": "",
"servedCells": [{}],
"guGroupIds": [""]
}
} |
|
Code Block |
---|
| {
"servedNrCells": [
{
"servedNrCellInformation": {},
"nrNeighbourInfos": [{}]
}
]
} |
|
UpdateNodebHandler
Image Added
Sequence Diagram
Image Added
View file |
---|
name | Update eNB & Update gNB REST APIs.txt |
---|
height | 150 |
---|
|
Delete eNB REST API
Info |
---|
|
DELETE /v1/nodeb/enb/<RAN_NAME> is triggered.- Execute
GetNodeb with RAN name coming from the request.- If we have a DB error or if it doesn't exist → error
- If nodeb is of type gNB → error
- Execute
RemoveEnb - Remove cells from both Cell ID key & PCI key (call RemoveServedCells)
- Remove nodeb from both RAN ID key & RAN NAME key
- Remove nbIdentity
- Execute sdl.SetAndPublish(data,"RAN_MANIPULATION", "<RAN_NAME>_DELETED")
- Return
Status |
---|
| |
---|
colour | Green |
---|
title | 204 No Content |
---|
| response.
|
DELETE /v1/nodeb/enb/<RAN_NAME>
Code Block |
---|
title | DeleteEnbRequestHandler |
---|
|
type DeleteEnbRequestHandler struct {
logger *logger.Logger
rnibDataService services.RNibDataService
} |
Sequence Diagram
Image Added