Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Introduction

This design matches the requirements in the following USs:   

Jira
serverORAN Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId5ec52304-b77c-3ce7-af6a-112cb13e6008
keyRIC-431

...

Jira
serverORAN Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId5ec52304-b77c-3ce7-af6a-112cb13e6008
keyRIC-433

Jira
serverORAN Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution

RnibReader changes

We shall modify the ServedCellInfo message inside the Enb proto message:

serverId5ec52304-b77c-3ce7-af6a-112cb13e6008
keyRIC-434

RnibReader Changes

We shall add a new proto message, named AdditionalCellInformationCurrent enb.proto:

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
titleenb.proto
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_prioritygu_group_ids = 13;
    BandwidthReducedSI bandwidth_reduced_si = 14;
    repeated NeighbourInformation neighbour_infos = 15;
}

We shall add the following:

Code Block
3;
}

message ServedCellInfo {
	...
	AdditionalCellInformation additional_cell_information = 16;
}

message AdditionalCellInformation {
	float cell_latitude
  • Expand ServedNRCellInformation (gnb.proto) with this proto message:

Code Block
titlegnb.proto
message Gnb {
    repeated ServedNRCell served_nr_cells = 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
themeConfluence
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(nbnodebInfo *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
titleAgenda
  • POST /v1/nodeb/enb is triggered, request body is validated
  • Execute GetNodeb

...

  • with RAN name coming from the request

...

  • .
    • 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
    colourGreen
    title
  • 201 Created

...

  •  with NodebInfo response.


POST /v1/nodeb/enb

Code Block
titleRequest Body

...

code
{
	"ranName": "",
	"globalNbId": {
					plmnId: "",
					nbId:	""
	},
	"ip": "",
	"port": 1234,
	"enb": {
			"enbType": "",
			"servedCells": [{}],
			"guGroupIds": [""]
	}
}


AddEnbRequestHandler

Code Block
titleAddEnbRequestHandler
type AddEnbRequestHandler struct {
	logger 				*logger.Logger		
	rnibDataService		services.RNibDataService
}


Sequence Diagram

Image RemovedImage Added


Update eNB REST API & Update gNB REST API


Info
titleAgenda



eNBgNBNotes

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 

Status
colourGreen
title200 OK
 with NodebInfo response.





PUT /v1/nodeb/enb/<RAN_NAME>PUT /v1/nodeb/gnb/<RAN_NAME>


Code Block
titleRequest Body
{
	"enb": {
			"enbType": "",
			"servedCells": [{}],
			"guGroupIds": [""]
	}
}



Code Block
titleRequest Body
{
  "servedNrCells": [
    {
      "servedNrCellInformation": {},
      "nrNeighbourInfos": [{}]
    }
  ]
}




UpdateNodebHandler

Image Added


Sequence Diagram

Image Added

View file
nameUpdate eNB & Update gNB REST APIs.txt
height150

Delete eNB REST API


Info
titleAgenda
  • 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
    colourGreen
    title204 No Content
     response.


DELETE /v1/nodeb/enb/<RAN_NAME>


Code Block
titleDeleteEnbRequestHandler
type DeleteEnbRequestHandler struct {
	logger 				*logger.Logger		
	rnibDataService		services.RNibDataService
}


Sequence Diagram

Image Added