O1 specifics

O1 specifics

Scope

This page describes O1 - and O1 like - implementations of the e2e-integration use case.

NETCONF

The test equipment uses standard yang model by 3GPP.

Of interest to enable and disable a cell (flow #7) it is recommended to modify the administrative state of the NRCellDU object class.

The yang tree can be generated with the following command

(pyang) $ pyang --version pyang 2.6.1 (pyang) $ pyang -f tree -o e2e-integration-yang.tree _3gpp-common-managed-element.yang _3gpp-common-managed-function.yang _3gpp-nr-nrm-gnbdufunction.yang _3gpp-nr-nrm-nrcelldu.yang

Please see _3gpp-nr-nrm-nrcelldu@2021-10-28.yang.
| +--rw nrcelldu3gpp:administrativeState? types3gpp:AdministrativeState
The revision date 2021-10-28 indicates the implementation of 3GPP Rel17. The values of the nrcelldu3gpp:administrativeState are described in _3gpp-common-yang-types@2022-02-09.yang:

Value of nrcelldu3gpp:administrativeState

Meaning in e2e integration use case

Value of nrcelldu3gpp:administrativeState

Meaning in e2e integration use case

LOCKED

The related cell is turned off and does not perform its function.

UNLOCKED

The related cell is turned on. If the related nrcelldu3gpp:operationalState has the value ENABLED, then the cell provides its function.

SHUTTINGDOWN

The value must not be set, however if the NETCONF server provides this value the cell should be considered as “turned off”.

YANG tree (selected)

Here the selected part of the generated yang tree:

module: _3gpp-common-managed-element
+--rw ManagedElement* [id]
+--rw id string
+--rw attributes
| +--rw userLabel? string
| +--ro locationName? string
| +--ro vendorName? string
| +--ro swVersion? string
+--rw PerfMetricJob* [id] {MeasurementsUnderManagedElement}?
| +--rw id string
| +--rw attributes
| +--rw administrativeState? types3gpp:AdministrativeState
| +--ro operationalState types3gpp:OperationalState
| +--rw jobId? string
| +--rw performanceMetrics* string
| +--rw granularityPeriod uint32
| +--rw objectInstances* types3gpp:DistinguishedName
| +--rw rootObjectInstances* types3gpp:DistinguishedName
| +--rw (reportingCtrl)
| +--:(file-based-reporting)
| | +--rw fileReportingPeriod uint32
| | +--rw fileLocation? string
| +--:(stream-based-reporting)
| +--rw streamTarget string
+--rw ThresholdMonitor* [id] {MeasurementsUnderManagedElement}?
| +--rw id string
+--rw NtfSubscriptionControl* [id] {SubscriptionControlUnderManagedElement}?
| +--rw id string
| +--rw attributes
| | +--rw notificationRecipientAddress string
| | +--rw notificationTypes* string
| | +--rw scope* [scopeType]
| | | +--rw scopeType enumeration
| | | +--rw scopeLevel uint16
| | +--rw notificationFilter? string
| +--rw HeartbeatControl* [id]
| +--rw id string
| +--rw attributes
| +--rw heartbeatNtfPeriod uint32
+--rw AlarmList* [id] {FmUnderManagedElement}?
| +--rw id string
| +--rw attributes
| +--rw administrativeState? types3gpp:AdministrativeState
| +--ro operationalState? types3gpp:OperationalState
| +--ro numOfAlarmRecords uint32
| +--ro lastModification? yang:date-and-time
| +--rw alarmRecords* [alarmId]
+--rw TraceJob* [id] {TraceUnderManagedElement}?
| +--rw id string
| +--rw attributes
| +--rw tjJobType? enumeration
+--rw gnbdu3gpp:GNBDUFunction* [id]
+--rw gnbdu3gpp:id string
+--rw gnbdu3gpp:attributes
| +--rw gnbdu3gpp:userLabel? string
| +--ro gnbdu3gpp:SupportedPerfMetricGroup* []
| | +--ro gnbdu3gpp:performanceMetrics* string
| | +--ro gnbdu3gpp:granularityPeriods* uint32
| | +--ro gnbdu3gpp:reportingMethods* enumeration
| | +--ro gnbdu3gpp:monitorGranularityPeriods* uint32
| +--rw gnbdu3gpp:resourceType enumeration
+--rw gnbdu3gpp:ManagedNFService* [id]
| +--rw gnbdu3gpp:id string
| +--rw gnbdu3gpp:attributes
| +--rw gnbdu3gpp:userLabel? string
| +--ro gnbdu3gpp:nFServiceType string
| +--rw gnbdu3gpp:sAP* [host port]
| | +--rw gnbdu3gpp:host inet:host
| | +--rw gnbdu3gpp:port inet:port-number
| +--rw gnbdu3gpp:operations* [name]
| | +--rw gnbdu3gpp:name string
| | +--rw gnbdu3gpp:allowedNFTypes* string
| | +--ro gnbdu3gpp:operationSemantics enumeration
| +--rw gnbdu3gpp:administrativeState types3gpp:AdministrativeState
| +--ro gnbdu3gpp:operationalState types3gpp:OperationalState
| +--ro gnbdu3gpp:usageState types3gpp:usageState
| +--ro gnbdu3gpp:registrationState? enumeration
+--rw gnbdu3gpp:PerfMetricJob* [id] {MeasurementsUnderManagedFunction}?
| +--rw gnbdu3gpp:id string
| +--rw gnbdu3gpp:attributes
| +--rw gnbdu3gpp:administrativeState? types3gpp:AdministrativeState
| +--ro gnbdu3gpp:operationalState types3gpp:OperationalState
| +--rw gnbdu3gpp:jobId? string
| +--rw gnbdu3gpp:performanceMetrics* string
| +--rw gnbdu3gpp:granularityPeriod uint32
| +--rw gnbdu3gpp:objectInstances* types3gpp:DistinguishedName
| +--rw gnbdu3gpp:rootObjectInstances* types3gpp:DistinguishedName
| +--rw (gnbdu3gpp:reportingCtrl)
| +--:(gnbdu3gpp:file-based-reporting)
| | +--rw gnbdu3gpp:fileReportingPeriod uint32
| | +--rw gnbdu3gpp:fileLocation? string
| +--:(gnbdu3gpp:stream-based-reporting)
| +--rw gnbdu3gpp:streamTarget string
+--rw gnbdu3gpp:ThresholdMonitor* [id] {MeasurementsUnderManagedFunction}?
| +--rw gnbdu3gpp:id string
+--rw gnbdu3gpp:TraceJob* [id] {TraceUnderManagedFunction}?
| +--rw gnbdu3gpp:id string
+--rw nrcelldu3gpp:NRCellDU* [id]
+--rw nrcelldu3gpp:id string
+--rw nrcelldu3gpp:attributes
| +--rw nrcelldu3gpp:userLabel? string
| +--rw nrcelldu3gpp:vnfParametersList* [vnfInstanceId]
| | +--rw nrcelldu3gpp:vnfInstanceId string
| | +--rw nrcelldu3gpp:vnfdId? string
| | +--rw nrcelldu3gpp:flavourId? string
| | +--rw nrcelldu3gpp:autoScalable boolean
| +--rw nrcelldu3gpp:peeParametersList* [idx]
| | +--rw nrcelldu3gpp:idx uint32
| | +--rw nrcelldu3gpp:siteIdentification string
| | +--rw nrcelldu3gpp:siteLatitude? decimal64
| | +--rw nrcelldu3gpp:siteLongitude? decimal64
| | +--rw nrcelldu3gpp:siteAltitude? decimal64
| | +--rw nrcelldu3gpp:siteDescription string
| | +--rw nrcelldu3gpp:equipmentType string
| | +--rw nrcelldu3gpp:environmentType string
| | +--rw nrcelldu3gpp:powerInterface string
| +--rw nrcelldu3gpp:priorityLabel uint32
| +--ro nrcelldu3gpp:SupportedPerfMetricGroup* []
| | +--ro nrcelldu3gpp:performanceMetrics* string
| | +--ro nrcelldu3gpp:granularityPeriods* uint32
| | +--ro nrcelldu3gpp:reportingMethods* enumeration
| | +--ro nrcelldu3gpp:monitorGranularityPeriods* uint32
| +--rw nrcelldu3gpp:resourceType enumeration
| +--rw nrcelldu3gpp:rRMPolicyMemberList* [mcc mnc sd sst]
| | +--rw nrcelldu3gpp:mcc Mcc
| | +--rw nrcelldu3gpp:mnc Mnc
| | +--rw nrcelldu3gpp:sd string
| | +--rw nrcelldu3gpp:sst uint8
| +--rw nrcelldu3gpp:cellLocalId int32
| +--ro nrcelldu3gpp:operationalState? types3gpp:OperationalState
| +--rw nrcelldu3gpp:administrativeState? types3gpp:AdministrativeState
| +--ro nrcelldu3gpp:cellState? types3gpp:CellState
| +--rw nrcelldu3gpp:pLMNInfoList* [mcc mnc sd sst]
| | +--rw nrcelldu3gpp:mcc Mcc
| | +--rw nrcelldu3gpp:mnc Mnc
| | +--rw nrcelldu3gpp:sd string
| | +--rw nrcelldu3gpp:sst uint8
| +--rw nrcelldu3gpp:nPNIdentityList* [idx]
| | +--rw nrcelldu3gpp:idx uint32
| | +--rw nrcelldu3gpp:plmnid* [mcc mnc]
| | | +--rw nrcelldu3gpp:mcc Mcc
| | | +--rw nrcelldu3gpp:mnc Mnc
| | +--rw nrcelldu3gpp:cAGIdList string
| | +--rw nrcelldu3gpp:nIDList string
| +--rw nrcelldu3gpp:nRPCI int32
| +--rw nrcelldu3gpp:nRTAC? types3gpp:Tac
| +--rw nrcelldu3gpp:arfcnDL int32
| +--rw nrcelldu3gpp:arfcnUL? int32
| +--rw nrcelldu3gpp:arfcnSUL? int32
| +--rw nrcelldu3gpp:bSChannelBwDL? int32
| +--rw nrcelldu3gpp:rimRSMonitoringStartTime yang:date-and-time
| +--rw nrcelldu3gpp:rimRSMonitoringStopTime yang:date-and-time
| +--rw nrcelldu3gpp:rimRSMonitoringWindowDuration uint32
| +--rw nrcelldu3gpp:rimRSMonitoringWindowStartingOffset uint8
| +--rw nrcelldu3gpp:rimRSMonitoringWindowPeriodicity uint8
| +--rw nrcelldu3gpp:rimRSMonitoringOccasionInterval uint32
| +--rw nrcelldu3gpp:rimRSMonitoringOccasionStartingOffset uint32
| +--rw nrcelldu3gpp:ssbFrequency int32
| +--rw nrcelldu3gpp:ssbPeriodicity int32
| +--rw nrcelldu3gpp:ssbSubCarrierSpacing int32
| +--rw nrcelldu3gpp:ssbOffset int32
| +--rw nrcelldu3gpp:ssbDuration int32
| +--rw nrcelldu3gpp:bSChannelBwUL? int32
| +--rw nrcelldu3gpp:bSChannelBwSUL? int32
| +--rw nrcelldu3gpp:nRSectorCarrierRef* types3gpp:DistinguishedName
| +--rw nrcelldu3gpp:bWPRef* types3gpp:DistinguishedName
| +--rw nrcelldu3gpp:nRFrequencyRef* types3gpp:DistinguishedName
| +--rw nrcelldu3gpp:victimSetRef types3gpp:DistinguishedName
| +--rw nrcelldu3gpp:aggressorSetRef types3gpp:DistinguishedName
+--rw nrcelldu3gpp:ManagedNFService* [id]
| +--rw nrcelldu3gpp:id string
| +--rw nrcelldu3gpp:attributes
| +--rw nrcelldu3gpp:userLabel? string
| +--ro nrcelldu3gpp:nFServiceType string
| +--rw nrcelldu3gpp:sAP* [host port]
| | +--rw nrcelldu3gpp:host inet:host
| | +--rw nrcelldu3gpp:port inet:port-number
| +--rw nrcelldu3gpp:operations* [name]
| | +--rw nrcelldu3gpp:name string
| | +--rw nrcelldu3gpp:allowedNFTypes* string
| | +--ro nrcelldu3gpp:operationSemantics enumeration
| +--rw nrcelldu3gpp:administrativeState types3gpp:AdministrativeState
| +--ro nrcelldu3gpp:operationalState types3gpp:OperationalState
| +--ro nrcelldu3gpp:usageState types3gpp:usageState
| +--ro nrcelldu3gpp:registrationState? enumeration
+--rw nrcelldu3gpp:PerfMetricJob* [id] {MeasurementsUnderManagedFunction}?
| +--rw nrcelldu3gpp:id string
| +--rw nrcelldu3gpp:attributes
| +--rw nrcelldu3gpp:administrativeState? types3gpp:AdministrativeState
| +--ro nrcelldu3gpp:operationalState types3gpp:OperationalState
| +--rw nrcelldu3gpp:jobId? string
| +--rw nrcelldu3gpp:performanceMetrics* string
| +--rw nrcelldu3gpp:granularityPeriod uint32
| +--rw nrcelldu3gpp:objectInstances* types3gpp:DistinguishedName
| +--rw nrcelldu3gpp:rootObjectInstances* types3gpp:DistinguishedName
| +--rw (nrcelldu3gpp:reportingCtrl)
| +--:(nrcelldu3gpp:file-based-reporting)
| | +--rw nrcelldu3gpp:fileReportingPeriod uint32
| | +--rw nrcelldu3gpp:fileLocation? string
| +--:(nrcelldu3gpp:stream-based-reporting)
| +--rw nrcelldu3gpp:streamTarget string
+--rw nrcelldu3gpp:ThresholdMonitor* [id] {MeasurementsUnderManagedFunction}?
| +--rw nrcelldu3gpp:id string
+--rw nrcelldu3gpp:TraceJob* [id] {TraceUnderManagedFunction}?
+--rw nrcelldu3gpp:id string

 

RESTCONF

To access the O1 interface from Northbound of the OAM Controller, the RESTCONF interface can be used. This can be used by the rApp directly, as a first step before the R1 interface is fully used.

Example usage on retrieving the administrativeState with RESTCONF:

### @name getAdministrativeState # baseUrl needs to be replaced by the OAM FQDN SDN Controller RESTCONF interface (e.g. https://odlux.oam.smo.o-ran-sc.org) # {{node}} needs to be replaced by the name of the O-DU (e.g. pynts-o-du-o1) curl -X GET -H "Content-Type: application/yang-data+json" -H "Accept: application/yang-data+json" -u admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U {{baseUrl}}/rests/data/network-topology:network-topology/topology=topology-netconf/node={{node}}/yang-ext:mount/_3gpp-common-managed-element:ManagedElement=ManagedElement-002/_3gpp-nr-nrm-gnbdufunction:GNBDUFunction=GNBDUFunction-001/_3gpp-nr-nrm-nrcelldu:NRCellDU=NRCellDU-001/attributes/administrativeState