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.yangPlease 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