O1 specifics
Table of Contents
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 |
---|---|
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