1 module o-ran-sc-du-hello-world {
3 namespace "urn:o-ran-sc:yang:o-ran-sc-du-hello-world";
7 "O-RAN Software Community";
11 "This module contains the O-RAN Software Community Distributed Unit
12 API description. This API data model describes Cell and Radio Resource
13 Management (RRM) parameters defined by 3GPP in the context
14 of the O-RAN Software Community E-Release and its
15 'Slice Resource Quota Provisioning and Assurance' use case.
17 The module is inspired by 3GPP TS 28.541 5G Network Resource Model (NRM).
18 The intent is to reduce the implementation efforts. It is not intended
19 to fragment the industry.
21 Due the reduction of the model in terms of scope and completeness this
22 module cannot and must not be used in production environments.
23 The main purpose is to show case the implemented functions by
24 O-RAN-SC O-DU project. The module name 'hello-world' highlights
27 Copyright 2021 the O-RAN Software Community.
29 Licensed under the Apache License, Version 2.0 (the 'License');
30 you may not use this file except in compliance with the License.
31 You may obtain a copy of the License at
33 http://www.apache.org/licenses/LICENSE-2.0
35 Unless required by applicable law or agreed to in writing, software
36 distributed under the License is distributed on an 'AS IS' BASIS,
37 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
38 See the License for the specific language governing permissions and
39 limitations under the License.";
43 "Updates based on the RSAC use case descriptions of O-RAN-SC E-Release.";
45 "https://jira.o-ran-sc.org/browse/OAM-230";
49 "Updates based on the RSAC use case descriptions of O-RAN-SC E-Release.";
51 "https://jira.o-ran-sc.org/browse/OAM-229
52 https://wiki.o-ran-sc.org/download/attachments/35881433/RSY-2021.08.04-OSC-Slice_Discovery%20and%20Registration_v01.pptx?api=v2";
56 "Updates based on the RSAC call 2021-04-08.";
58 "https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=20878423";
64 "https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=20878423";
69 feature distributed-unit {
71 "This feature indicates that the network-function implements
72 an O-RAN distributed function.";
74 "O-RAN.WG1.O-RAN-Architecture-Description-v04.00 - 4.3.5 O-DU";
79 typedef administrative-state {
84 "The resource is administratively prohibited from performing
85 services for its users.";
90 "The resource is administratively permitted to perform
91 services for its users. This is independent of its inherent
97 "Use of the resource is administratively permitted to
98 existing instances of use only. While the system remains in
99 the shutting down state the manager or the managed element
100 may at any time cause the resource to transition to the
105 "The administration of managed objects operates independently of the
106 operability and usage of managed objects and is described by the
107 administrative state attribute, which has three values. These are values
108 are called locked, unlocked and shutting down.";
110 "3GPP TS 28.625 and ITU-T X.731 / ISO/IEC 10164-2";
117 "The cell resources are not in use.";
121 "The cell resources shall not serve UEs.";
127 "The cell resources shall be able to serve UEs.";
133 "The cell state indicates the usage state of the cell instance.
134 It describes whether the cell is not currently in use (idle),
135 or currently in use but not configured to carry traffic (inactive)
136 or is currently in use and is configured to carry traffic (active).";
141 typedef connection-status {
146 "The connection to the remote network function is not established.";
151 "The system is about to connect to the remote network function.";
156 "The system is connected to the remote network function.";
161 "The system is about to disconnect from the remote network
164 enum unable-to-connect {
167 "This value is reported, when the system tried several times
168 to connect and finally gave up.";
172 "A non extensible enumeration representing a connection status.";
175 typedef distinguished-name {
177 pattern '([a-zA-Z][a-zA-Z0-9-]*=(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+,# ])'
178 + '((\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+,])*'
179 + '(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+, ]))?'
180 + '[,\+])*[a-zA-Z][a-zA-Z0-9-]*=(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+,# ])'
181 + '((\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})'
182 + '|[^\\><;"+,])*(\\( |#|\\|>|<|;|"|\+|,|[a-fA-F0-9]{2})|[^\\><;"+, ]))?';
185 "The type definition for distinguished names according to RFC 4512.";
187 "RFC 4512 Lightweight Directory Access Protocol (LDAP):
188 Directory Information Models
189 https://datatracker.ietf.org/doc/html/rfc4512#section-2.3.2";
192 typedef mobile-country-code-type {
194 pattern '^[02-79][0-9][0-9]$';
197 "The mobile country code consists of three decimal digits,
198 The first digit of the mobile country code identifies the geographic
199 region (the digits 1 and 8 are not used):";
201 "3GPP TS 23.003 subclause 2.2 and 12.1";
204 typedef mobile-network-code-type {
206 pattern '^[0-9]{2,3}$';
209 "The mobile network code consists of two or three
210 decimal digits (for example: MNC of 001 is not the same as MNC of 01)";
212 "3GPP TS 23.003 subclause 2.2 and 12.1";
215 typedef o-ru-reference {
217 path "/network-function/du-to-ru-connection/name";
220 "A reference to a remote network function representing an O-RU.";
223 typedef operational-state {
228 "The resource is totally inoperable.";
230 "CCITT Rec. X.731 (1992 E) - ISO/IEC 10164-2 : 1993 (E)
231 Chapter 7.1.1.2 Disable";
236 "The resource is partially or fully operable.";
238 "CCITT Rec. X.731 (1992 E) - ISO/IEC 10164-2 : 1993 (E)
239 Chapter 7.1.1.1 Enable";
243 "The operability of a resource is described by the operational state
244 attribute, which has two possible values: disabled and enabled.";
246 "3GPP TS 28.625 and ITU-T X.731 / ISO/IEC 10164-2";
249 typedef resource-type {
253 "Physical Resource Block (PRB)
254 for a cell of a distributed unit
255 for both downlink and uplink.";
259 "Physical Resource Block (PRB) uplink
260 for a cell of a distributed unit.";
264 "Physical Resource Block (PRB) downlink
265 for a cell of a distributed unit.";
269 "Radio Resource Control (RRC)
270 for a cell of a centralized unit.";
274 "Data radio bearer (DRB)
275 for a user plane function of a centralized unit.";
279 "A type describing the resource for radio-resource-management.";
281 "3GPP TS 28.541 V17.34.0 (2021-0609)";
284 typedef tracking-area-code-type {
289 "The type definition for a Tracking Area Code.";
291 "3GPP TS 23.003 clause 19.4.2.3";
294 // Abstract object classes - groupings
298 "Represents the cell object class.";
301 https://forge.3gpp.org/rep/sa5/MnS/blob/Rel17-draft/yang-models/_3gpp-nr-nrm-cell.yang
309 "Identifies a cell within a o-ran-sc-du-function. Together with the
310 corresponding o-ran-sc-du-function identifier in forms the cell
313 "NCI in 3GPP TS 38.300";
319 "Indicates whether the corresponding entity
320 - is not currently in use (idle), or
321 - currently in use but not configured to carry traffic (inactive), or
322 - currently in use and is configured to carry traffic (active).";
324 list public-land-mobile-networks {
325 key "mobile-country-code mobile-network-code slice-differentiator slice-service-type";
329 "The public-land-mobile-networks is a list of
330 public-land-mobile-network data type.
331 It defines which public-land-mobile-networks that can be served by
332 the cell, and which S-NSSAIs that can be supported by the cell for
333 corresponding public-land-mobile-network in case of network slicing
334 feature is supported. The public-land-mobile-network-id of the
335 first entry of the list is the public-land-mobile-network-id used to
336 construct the cell-global-identity.
337 If the public-land-mobile-network is associated with
338 a radio-resource-management-policy-ratio, then the settings of the
339 radio-resource-management-policy-ratio MUST be considered by
340 the distributed function implementation for this cell. ";
341 uses public-land-mobile-network;
343 leaf physical-cell-id {
349 "The Physical Cell Identity (PCI) of the cell.";
353 leaf tracking-area-code {
354 type tracking-area-code-type;
356 "The common 5GS Tracking Area Code for the public-land-mobile-networks.";
358 "3GPP TS 23.003, 3GPP TS 38.473";
360 container absolute-radio-frequency-channel-number {
362 "This container groups parameters related to
363 absolute radio frequency channel number (ARFCN).";
368 "Absolute Radio Frequency Channel Number (ARFCN) for
376 "Absolute Radio Frequency Channel Number (ARFCN) for
381 leaf supplementary-uplink {
384 "Absolute Radio Frequency Channel Number (ARFCN) for
385 supplementary uplink.";
390 container base-station-channel-bandwidth {
392 "This container groups parameters related to
393 base station channel bandwidth.";
398 "Base station channel bandwidth for downlink.";
406 "Base station channel bandwidth for uplink.";
410 leaf supplementary-uplink {
414 "Base station channel bandwidth for supplementary uplink.";
419 container synchronization-signal-block {
421 "This container groups parameters related to Synchronization Signal
423 leaf frequency-channel-number {
429 "Indicates cell defining Synchronization Signal Block (SSB) frequency
431 Frequency (in terms of NR-ARFCN) of the cell defining SSB
433 The frequency identifies the position of resource element RE=#0
434 (subcarrier #0) of resource block RB#10 of the SSB. The frequency
435 must be positioned on the global frequency raster, as defined in
436 3GPP TS 38.101-1, and within base station channel bandwidth down
443 range "5 | 10 | 20 | 40 | 80 | 160";
448 "Indicates cell defined Synchronization Signal Block (SSB)
449 periodicity. The SSB periodicity is used for the rate matching
452 leaf subcarrier-spacing {
454 range "15 | 30 | 120 | 240";
459 "Subcarrier spacing of Synchronization Signal Block (SSB).
460 Only the values 15 kHz or 30 kHz
461 (< 6 GHz), 120 kHz or 240 kHz (> 6 GHz) are applicable.";
472 "Indicates cell defining Synchronization Signal Block (SSB) time
473 domain position. Defined as the offset of the measurement window,
474 in which to receive Synchronization Signal/Physical Broadcast Channel
475 (SS/PBCH) blocks, where allowed values depend on the
476 Synchronization Signal Block periodicity.
478 synchronization-signal-block-offset is lower than
479 synchronization-signal-block-periodicity).";
488 "Duration of the measurement window in which to receive
489 Synchronization Signal/Physical Broadcast Channel (SS/PBCH) blocks.";
496 grouping connection-grp {
499 "An abstract object class representing a connection or link to an
500 external component.";
504 "It is proposed to use the network unique identifier of the remote
506 Note: After discussion the string was not restricted by a 'length'
507 statement of a 'pattern' statement. Please avoid leading and ending
508 spaces and consecutive spaces and any character outside of UTF-8-";
510 leaf operational-state {
514 "The resource is not functional.";
518 "The resource is functional.";
523 "Operational state of a connection. Indicates
524 whether the resource is functional (ENABLED) or not (DISABLED).";
526 "3GPP TS 28.625 and ITU-T X.731";
528 leaf administrative-state {
532 "LOCKED refers to a situation which is NOT considered as
533 ‘normal operation'. Therefore, the O-DU will shut down the
534 connection to the related O-RU, when the value is set to LOCKED.";
538 "UNLOCKED refers to a situation which is considered as
539 'normal operation'. Therefore, the O-DU will establish the
540 connection to the related O-RU, when the value is set to UNLOCKED.";
544 "This value should not be used. At least the system
545 behavior is not defined.";
550 "Administrative state of a connection.";
552 "3GPP TS 28.625 and ITU-T X.731";
558 "Indicates whether the O-RU is not in use.";
562 "Indicates whether the O-RU is in use but not
563 configured to carry traffic.";
567 "Indicates whether the O-RU is in use and
568 configured to carry traffic.";
573 "Cell state of the O-RU instance.";
578 type connection-status;
579 default "disconnected";
582 "The value represents the connection status. ";
586 grouping distributed-unit-function {
588 "A simplified and reduced object class for a DU function.";
590 // uses mf3gpp:ManagedFunctionContainedClasses;
594 "Represents the cell and its configuration management.";
597 https://forge.3gpp.org/rep/sa5/MnS/blob/Rel17-draft/yang-models/_3gpp-nr-nrm-cell.yang
602 list radio-resource-management-policy-ratio {
605 "The radio-resource-management-policy-ratio object class is one
606 realization of a radio-resource-management-policy object class.
607 This Radio Resource Management framework allows
608 adding new policies by inheriting from the
609 abstract radio-resource-management-policy object class.";
611 uses radio-resource-management-policy-ratio-grp;
615 grouping network-function {
617 "Represents telecommunications equipment or
618 TMN entities within the telecommunications network providing support
619 and/or service to the subscriber.";
620 leaf distinguished-name-prefix {
621 type distinguished-name;
623 "Provides naming context that allows the Managed
624 Elements to be partitioned into logical domains.
625 A Distinguished Name(DN) is defined by 3GPP TS 32.300,
626 which splits the DN into a DN Prefix and Local DN";
634 "The physical location (e.g. an address) of an entity
635 represented by a (derivative of) ManagedElement_. It may contain no
636 information to support the case where the derivative of
637 ManagedElement needs to represent a distributed multi-location NE.";
641 grouping network-function-grp {
644 "An abstract object class grouping the O-RAN-SC-DU parameters with
645 focus on RSAC D-release Closed-Loop use case.";
646 list du-to-ru-connection {
649 "A list of connection objects to O-RAN-SC radio units.";
650 uses connection-grp {
656 grouping public-land-mobile-network-id {
658 "The identity of a public land mobile network as complex type
659 constructed of two codes:
660 - mobile country code (MCC) and
661 - the mobile network code (MNC).";
666 leaf mobile-country-code {
667 type mobile-country-code-type;
670 "The fist part of the public-land-mobile-network-id";
672 leaf mobile-network-code {
673 type mobile-network-code-type;
676 "The second part of the public-land-mobile-network-id";
680 grouping public-land-mobile-network {
682 "The public-land-mobile-network data type define a S-NSSAI member
683 in a specific public-land-mobile-network-id, and it have two attributes
684 public-land-mobile-network-id and S-NSSAI (public-land-mobile-network-id,
686 The public-land-mobile-network-id represents a data type that is
687 comprised of mcc mobile country code) and mnc (mobile network code),
688 (See TS 23.003 subclause 2.2 and 12.1) and S-NSSAI represents an
689 data type, that is comprised of an slice-service-type
690 (Slice/Service type) and an optional slice-differentiator field.";
691 uses public-land-mobile-network-id;
692 uses single-network-slice-selection-assistance-info;
695 grouping radio-resource-management-policy-grp {
697 "This object class represents the properties of an abstract
698 radio-resource-management-policy. The radio-resource-management-policy
699 object class needs to be subclassed to be instantiated.
700 It defines two attributes apart from those inherited from
702 - the resource-type attribute defines type of resource (PRB, RRC
703 connected users, DRB usage etc.) and
704 - the radio-resource-management-policy-members attribute
705 defines the radio-resource-management-policy-members that are subject
707 An Radio Resource Management resource (defined in resource-type
708 attribute) is located in cell or distributed-unit-function.
709 The radio-resource-management-policy-ratio object class is one
710 realization of a radio-resource-management-policy object class.
711 This Radio Resource Management framework allows adding new
712 policies by inheriting from the abstract radio-resource-management-policy
718 "The resource-type attribute defines type of resource that is
721 list radio-resource-management-policy-members {
722 key "mobile-country-code mobile-network-code slice-differentiator slice-service-type";
725 "It represents the list of radio-resource-management-policy-members
726 that the managed object is supporting.
727 A radio-resource-management-policy-member <<dataType>> include
728 the public-land-mobile-network-identifier <<dataType>> and
729 S-NSSAI <<dataType>>.";
730 uses public-land-mobile-network;
734 grouping radio-resource-management-policy-ratio-grp {
736 "Represents the radio-resource-management-policy-ratio concrete
738 uses radio-resource-management-policy-grp;
739 leaf radio-resource-management-policy-max-ratio {
746 "This attribute specifies the maximum percentage of radio resources that
747 can be used by the associated
748 radio-resource-management-policy-members.
749 The maximum percentage of radio resource include at least one of
750 the shared resources, prioritized resources and dedicated resources.
751 The sum of the radio-resource-management-policy-max-ratio values
752 assigned to all radio-resource-management-policy-ratio(s)
753 name-contained by same ManagedEntity can be greater that 100.";
755 leaf radio-resource-management-policy-min-ratio {
762 "This attribute specifies the minimum percentage of radio resources that
763 can be used by the associated
764 radio-resource-management-policy-members.
765 The minimum percentage of radio resources including at least one of
766 prioritized resources and dedicated resources. The sum of the
767 radio-resource-management-policy-min-ratio values assigned to all
768 radio-resource-management-policy-ratios
769 name-contained by same ManagedEntity shall be less or equal 100.";
771 leaf radio-resource-management-policy-dedicated-ratio {
778 "This attribute specifies the percentage of radio resources that
779 dedicated used by the associated
780 radio-resource-management-policy-members.
781 The sum of the radio-resource-management-policy-dedicated-ratio values
782 assigned to all radio-resource-management-policy-ratios
783 name-contained by same ManagedEntity shall be less or equal 100.";
787 grouping rpc-output {
789 "A generic RPC output syntax.";
790 leaf response-status {
795 "The system has successfully performed that request.";
800 "The system has received and accepted the request. It continues
801 processing the request. The final status of the processing
802 procedures are reported by a notification service. This response
803 status is typically for long running transactions.";
805 enum internal-server-error {
808 "The request cannot be performed.";
813 "The response status related to the corresponding request.
814 Its values are inspired by HTTP response status codes.";
816 "RFC 7231 – Response Status Codes - Section 6.3.4";
821 "A human readable text complementary to the response status. ";
825 grouping single-network-slice-selection-assistance-info {
827 "Single Network Slice Selection Assistance Information (S-NSSAI)";
830 leaf slice-differentiator {
835 "Slice Differentiator can be used to identify and tag a slice.
836 If not needed, the value can be set to the value 16777215.";
840 leaf slice-service-type {
843 "Slice/Service Type as defined in 3GPP TS 23.501.";
851 "Ane abstract class supplying a naming attribute.";
858 "Key leaf (namingAttribute) for a class/list.
859 Should be used as a key leaf for lists representing
862 "3GPP TS 32.300 Name convention for managed objects";
864 leaf administrative-state {
865 type administrative-state;
868 "Administrative state of an object. Indicates the
869 permission to use or prohibition against the object, imposed
870 through the OAM services.";
872 leaf operational-state {
873 type operational-state;
877 "Operational state of the object. Indicates
878 whether the associated resource is installed and partially or fully
879 operable (enabled) or the associated resource is not installed or
880 not operable (disabled).";
887 "A user defined label of the object. There is no function associated to
889 However, the network function stores the value persistently.";
894 container network-function {
895 presence "network-function";
897 "The root container for the configuration and operational data.
898 The object class would be called by 3GPP 'ManagedElement' and by
899 ONF 'ControlConstruct'.";
901 uses network-function;
902 list distributed-unit-functions {
903 if-feature "distributed-unit";
906 "Represents the logical function distributed unit.";
909 uses distributed-unit-function;
911 uses network-function-grp {
916 // Remote procedure calls - actions on root level
921 "An action to establish the connection to a remote network function.";
923 leaf remote-network-function {
927 "An reference to a remote network function - an O-RU - to which
928 a connection should be established.";
939 "An action to destroy the connection to a remote network function.";
941 leaf remote-network-function {
945 "An reference to a remote network function - an O-RU - to which
946 the connection should be destroyed.";