--- /dev/null
+../ietf/iana-hardware.yang
\ No newline at end of file
--- /dev/null
+../ietf/iana-if-type.yang
\ No newline at end of file
--- /dev/null
+../ietf/ietf-dhcpv6-types.yang
\ No newline at end of file
--- /dev/null
+../ietf/ietf-hardware.yang
\ No newline at end of file
--- /dev/null
+../ietf/ietf-inet-types.yang
\ No newline at end of file
--- /dev/null
+../ietf/ietf-interfaces.yang
\ No newline at end of file
--- /dev/null
+../ietf/ietf-ip.yang
\ No newline at end of file
--- /dev/null
+../ietf/ietf-yang-types.yang
\ No newline at end of file
--- /dev/null
+../openroadm/org-openroadm-user-mgmt@2017-12-15.yang
\ No newline at end of file
--- /dev/null
+module xran-alarm-id {
+ yang-version 1.1;
+ namespace "urn:xran:alarms:1.0";
+ prefix "xran-alarms";
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the alarm identities for the RU.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ typedef alarm-id {
+ type enumeration {
+ enum XRAN_HIGH_TEMP_ALARM {
+ value 1;
+ description "A temperature is higher than expected";
+ }
+ enum XRAN_OVERHEATING_ALARM {
+ value 2;
+ description "A temperature is dangerously high";
+ }
+ enum XRAN_AMBIENT_TEMP_ALARM {
+ value 3;
+ description "A temperature related alarm due to ambient temperature
+ value going outside the allowed ambient temperature range";
+ }
+ enum XRAN_TEMP_TOO_LOW_ALARM {
+ value 4;
+ description "A temperature related alarm due to the temperature inside
+ the unit being too low";
+ }
+ enum XRAN_BROKEN_FAN_ALARM {
+ value 5;
+ description "A broken fan";
+ }
+ enum XRAN_FAN_NOT_DETECTED_ALARM {
+ value 6;
+ description "A fan not detected";
+ }
+ enum XRAN_TUNING_ALARM {
+ value 7;
+ description "A tuning failure.";
+ }
+ enum XRAN_FILTER_ALARM {
+ value 8;
+ description "A faulty filter.";
+ }
+ enum XRAN_TX_QUALITY_ALARM {
+ value 9;
+ description "A transmission quality.";
+ }
+ enum XRAN_OVERVOLTAGE_ALARM {
+ value 10;
+ description "A RF overvoltage protection.";
+ }
+ enum XRAN_CONFIG_ALARM {
+ value 11;
+ description "A configuration failed.";
+ }
+ enum XRAN_CRITICAL_FILE_ALARM {
+ value 12;
+ description "A Critical file not found.";
+ }
+ enum XRAN_FILE_ALARM {
+ value 13;
+ description "A non-critical file not found.";
+ }
+ enum XRAN_CORRUPT_FILE_ALARM {
+ value 14;
+ description "A corrupt configuration file.";
+ }
+ enum XRAN_OPERATION_ALARM {
+ value 15;
+ description "A unit out of order.";
+ }
+ enum XRAN_NO_IDENTITY_ALARM {
+ value 16;
+ description "A unit cannot be identified.";
+ }
+ enum XRAN_NO_EXT_SYNC_SOURCE {
+ value 17;
+ description "An RU has no external sync source.";
+ }
+ enum XRAN_SYNC_ALARM {
+ value 18;
+ description "A unit is out of synchronization.";
+ }
+ enum XRAN_TX_OUT_OF_ORDER_ALARM {
+ value 19;
+ description "A TX path is not usable.";
+ }
+ enum XRAN_RX_OUT_OF_ORDER_ALARM {
+ value 20;
+ description "A RX path is not usable.";
+ }
+ enum XRAN_OPTICAL_BER_ALARM {
+ value 21;
+ description "An increased bit error rate on the optical link";
+ }
+ enum XRAN_SELF_TEST_ALARM {
+ value 22;
+ description "A power-on self test";
+ }
+ enum XRAN_FPGA_UPDATE_ALARM {
+ value 23;
+ description "An FPGA software update";
+ }
+ enum XRAN_UNIT_BLOCKED_ALARM {
+ value 24;
+ description "A unit is blocked";
+ }
+ enum XRAN_RESET_REQUEST_ALARM {
+ value 25;
+ description "A unit requires a reset";
+ }
+ enum XRAN_POWER_SUPPLY_FAULTY {
+ value 26;
+ description "A power supply unit has a fault";
+ }
+ enum XRAN_POWER_AMPLIFIER_FAULTY {
+ value 27;
+ description "A power amplifier unit has a fault";
+ }
+ enum XRAN_C_U_PLANE_LOGICAL_CONNECTION_FAULTY {
+ value 28;
+ description "A C/U-plane logical connection has a fault";
+ }
+ enum XRAN_TRANSCEIVER_FAULT {
+ value 29;
+ description "A transceiver unit has a fault";
+ }
+ enum XRAN_INTERFACE_FAULT {
+ value 30;
+ description "An interface unit has a fault";
+ }
+ }
+ description
+ "A typedef defining an enumerated list of XRAN alarms which corresponds to
+ the fault-id in the xran management plane specification.";
+ }
+}
--- /dev/null
+module xran-ald-port {
+ yang-version 1.1;
+ namespace "urn:xran:ald-port:1.0";
+ prefix "xran-ald-port";
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the input state and output configuration for
+ the xRAN Radio Unit Antenna Line Device capability.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ feature OVERCURRENT-SUPPORTED {
+ description
+ "This feature indicates that the RU supports the over-current notification
+ capability.";
+ }
+
+ container ald-ports-io {
+ description
+ "ALD port information.
+ ALD port of the RU that can be used to connect External Equipment (Antenna Line Devices).
+ Communication uses AISG over HDLC.
+ Physical connection depends on connector type offered by the port (RS-485 or antenna line)
+ Note: Single instance of ALD Port can point to more than one antenna line devices.";
+
+ leaf over-current-supported {
+ type boolean;
+ default false;
+ description
+ "Set to TRUE when the RU supports over curent notifications";
+ }
+
+ list ald-port {
+ key "name";
+ description
+ "Leaf nodes describing ALD Port";
+ leaf name {
+ type string {
+ length "1..255";
+ }
+ description
+ "A name that is unique across the RU that identifies a ald port instance.
+ This name may be used in fault management to refer to a fault source
+ or affected object";
+ }
+
+ leaf port-id {
+ type uint8;
+ config false;
+ mandatory true;
+
+ description
+ "A number which identifies an ALD Port.
+ The number of the Physical ALD port connector in the module.
+ If the module supports 2 ALD Port connectors, use 0 and 1.";
+ }
+
+ leaf dc-control-support{
+ type boolean;
+ config false;
+ mandatory true;
+
+ description
+ "It is shown that on/off in the DC power supply is possible.
+ In case of False, power supply is always on.";
+ }
+
+ leaf dc-enabled{
+ when "./../dc-control-support = 'true'";
+ type boolean;
+
+ description
+ "If dc-control-support is true case, this leaf is effective.
+ In case of true, the power supply is turned on.";
+ }
+
+ leaf supported-connector{
+ type enumeration {
+ enum ANTENNA_CONNECTOR {
+ description
+ "This ald port is related to antenna connector";
+ }
+ enum RS485_PORT {
+ description
+ "This ald port is related to RS485 port";
+ }
+ }
+ config false;
+ mandatory true;
+
+ description
+ "Informs about the connectors of Module which ALDs are connected to.
+ This value is depending on HW design.";
+ }
+ }
+ }
+
+ notification overcurrent-report {
+ if-feature OVERCURRENT-SUPPORTED;
+
+ description
+ "The RU is able to report overcurrent condition about Port.
+ This function is depending on HW design.
+ The notification depend on power consumption which connected ALD devices and module.";
+
+ container overload-condition {
+ description
+ "Container used in notification";
+
+ leaf-list overloaded-ports {
+ type leafref {
+ path "/ald-ports-io/ald-port/name";
+ }
+
+ description
+ "List of overloaded ports";
+ }
+ }
+ }
+}
--- /dev/null
+module xran-ald {
+ yang-version 1.1;
+ namespace "urn:xran:ald:1.0";
+ prefix "xran-ald";
+
+ import xran-ald-port {
+ prefix "ap";
+ }
+
+ organization "xRAN Alliance";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the module for the ald communication.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ // rpc-statements
+ rpc ald-communication {
+ description
+ "Rpc to support communication between lls-CU and Antenna Line Devices";
+
+ input {
+ leaf port-id {
+ type leafref {
+ path "/ap:ald-ports-io/ap:ald-port/ap:port-id";
+ }
+ mandatory true;
+ description
+ "Unique ALD port identifier reported by radio";
+ }
+
+ leaf ald-req-msg {
+ type binary {
+ length "0..1200";
+ }
+
+ description
+ "Response message to be forwarded to ALD in type of binary-string";
+ }
+ }
+
+ output {
+ leaf port-id {
+ type leafref {
+ path "/ap:ald-ports-io/ap:ald-port/ap:port-id";
+ }
+ mandatory true;
+ description
+ "Unique ALD port identifier reported by radio";
+ }
+
+ leaf status {
+ type enumeration {
+ enum ACCEPTED {
+ description
+ "Operation was accepted, message was processed towards ALD and response is provided";
+ }
+ enum REJECTED {
+ description
+ "Operation was rejected by RU";
+ }
+ }
+ mandatory true;
+
+ description
+ "Status of RPC handling seen from RU perspective";
+ }
+
+ leaf error-message {
+ when "../status='REJECTED'";
+ type string;
+
+ description
+ "Detailed error message when the status is rejected. E.g. wrong ALD port identifier was used in RPC received from Netconf Client";
+ }
+
+ leaf ald-resp-msg {
+ type binary {
+ length "0..1200";
+ }
+
+ description
+ "Response message forwarded from ALD in type of binary-string";
+ }
+
+ leaf frames-with-wrong-crc {
+ type uint32;
+
+ description
+ "Number of frames with incorrect CRC (FCS) received from ALD - running counter";
+ }
+
+ leaf frames-without-stop-flag {
+ type uint32;
+
+ description
+ "Number of frames without stop flag received from ALD - running counter";
+ }
+
+ leaf number-of-received-octets {
+ type uint32;
+
+ description
+ "Number of octets received from HDLC bus - running counter";
+ }
+ }
+ }
+}
--- /dev/null
+module xran-beamforming {
+ yang-version 1.1;
+ namespace "urn:xran:beamforming:1.0";
+ prefix "xran-bf";
+
+ import xran-uplane-conf {
+ prefix up;
+ }
+
+ import xran-module-cap {
+ prefix "mcap";
+ }
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the beamforming capabilitites of an RU.
+ Only RUs that support beamforming shall support this module.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ feature MODIFY-BF-CONFIG {
+ description
+ "This feature indicates that the RU supports an optional feature to
+ modify beamforming configuration information";
+ }
+
+ typedef beam-reference {
+ type leafref {
+ path "/xran-bf:beamforming-config/xran-bf:per-band-config/xran-bf:beam-information/xran-bf:beamforming-properties/xran-bf:beam-id";
+ }
+ description
+ "This type is used by data models that need to reference a beam.";
+ }
+ container beamforming-config {
+ config false;
+ description
+ "A set of configuration data for the RU's beam forming functionality";
+
+ list per-band-config {
+ key band-number;
+ description "beamforming information per band";
+ leaf band-number {
+ type leafref {
+ path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
+ }
+ description
+ "band information for the beamforming information
+ related to the band number of module capabilities";
+ }
+
+ leaf-list tx-array {
+ type leafref {
+ path "/up:user-plane-configuration/up:tx-arrays/up:name";
+ }
+ description "tx arrays belonging to this band number";
+ }
+ leaf-list rx-array {
+ type leafref {
+ path "/up:user-plane-configuration/up:rx-arrays/up:name";
+ }
+ description "rx arrays belonging to this band number";
+ }
+ container static-properties {
+ description
+ "the static beamforming related information";
+ leaf beamforming-type {
+ type enumeration {
+ enum COMMON {
+ description "A common beam ID is used for entire band";
+ }
+ enum DIFFERENT {
+ description "Different beam IDs can be assigned for each PRB/RE";
+ }
+ }
+ description
+ "This value indicates supporting beamforming type in RU";
+ }
+
+ leaf number-of-beams {
+ type uint16;
+ description
+ "This value indicates the number of beam patterns RU can generate
+ and apply to the signal of each RU port (both DL and UL).
+ This value is equivalent to the maximum number of used beam IDs.";
+ }
+
+ leaf number-of-polarizations {
+ type uint8;
+ description
+ "This value indicates the number of polarizations supported at RU.";
+ }
+
+ leaf number-of-panels {
+ type uint8;
+ description
+ "This value indicates the number of antenna panels supported at RU.";
+ }
+ }
+
+ container beam-information {
+ description
+ "beam information which relates to the current beamforming configuration";
+ leaf number-of-beamforming-properties {
+ type uint16;
+ description
+ "This parameter indicates the number of beamFormingProperties entries.";
+ }
+
+ list beamforming-properties {
+ key beam-id;
+ description
+ "Array for the beamforming properties at RU.
+ These parameters can be used by the beamforming control by the NETCONF client.
+ 'numberOfBeamformingProperties' indicaets the size of the array.";
+
+
+ leaf beam-id {
+ type uint16;
+ description
+ "This value indicates the beam ID whose beamforming properties are
+ described in the container.";
+ }
+
+ container beamforming-property {
+ description
+ "Structure containing single set of beamforming properties.";
+
+ leaf coarse-fine {
+ type enumeration {
+ enum COARSE-BEAM {
+ description "the beam-id corresponds to a coarse beam";
+ }
+ enum FINE-BEAM {
+ description "the beam-id corresponds to a fine beam";
+ }
+ }
+ description
+ "This value indicates the beam resolution.";
+ }
+
+ leaf beam-groups-id {
+ type uint16;
+ description
+ "Beams with same beamGroupsID can be transmitted simultaneously.";
+ }
+
+ leaf-list coarse-fine-beam-relation {
+ type beam-reference;
+ description
+ "list of related coarse/fine beam.";
+
+ }
+
+ leaf-list neighbor-beam {
+ type beam-reference;
+ description
+ "A list of neighbor beams which might restrict co-scheduling due
+ to interference.";
+ }
+ }
+ }
+ }
+ }
+ container ue-specific-beamforming {
+ presence
+ "Indicates that the RU supports optional Section Type '6' Fields
+ (used for sending channel information for a specific UE";
+ config false;
+ description
+ "Information related to supput by the RU of Section Type 6 for
+ signalling UE-specific channel information to the RU";
+ leaf max-number-of-ues {
+ type uint8;
+ description
+ "Indicates tha maximum number of UE -specific channel information
+ data sets supported by the RU";
+ }
+ }
+ container operational-properties {
+ if-feature MODIFY-BF-CONFIG;
+ description "properties for dynamic beam weight/attribute support";
+
+ leaf number-of-writeable-beamforming-files {
+ type uint8 {
+ range "1 .. max";
+ }
+ mandatory true;
+ description
+ "This leaf indicates the maximum number of writeable beamforming files
+ containing beamweights and/or attributes that the RU can store, taking
+ into account the maximum number of beam-IDs as defined by 3GPP
+ TS38.214 v15.x.x";
+ }
+
+ leaf update-bf-non-delete {
+ type boolean;
+ default false;
+ description
+ "When set to TRUE, indicates that an RU supports the capability
+ to apply the modified beamforming weight information by using rpc
+ activate-beamforming-weight without deletion of tx-array-carriers and
+ rx-array-carriers in advance, i.e., to a deactivated carrier";
+ }
+
+ leaf persistent-bf-files {
+ type boolean;
+ default false;
+ description
+ "When set to TRUE, indicates that the RU supports the capability
+ to store the modified beamforming weight information file in the
+ reset persistent memory";
+ }
+ }
+
+ leaf beamforming-trough-attributes-supported {
+ type boolean;
+ description
+ "Informs if beamforming can be controlled providing attributes to RU
+ (like angles, beamwidth).";
+ }
+
+ leaf beamforming-trough-ue-channel-info-supported {
+ type boolean;
+ description
+ "Informs if beamforming can be controlled by UE information.";
+ }
+ }
+
+ rpc activate-beamforming-config {
+ if-feature MODIFY-BF-CONFIG;
+ description
+ "rpc to activate beamforming config information by indicating the file
+ stored in the folder xRAN/beam-weights in advance";
+ input {
+ leaf beamforming-config-file {
+ type string;
+ mandatory true;
+ description
+ "file name stored in xRAN/beamforming/ folder is indicated";
+ }
+ leaf band-number {
+ type leafref {
+ path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
+ }
+ description
+ "The band to which the beam configuration applies";
+ }
+ }
+ output {
+ leaf status {
+ type enumeration {
+ enum ACCEPTED {
+ description "RU has accepted the beamforming weight/attribute file";
+ }
+ enum REJECTED {
+ description
+ "RU has rejected the beamforming weight/attribute file. The RU
+ should then use the default beamforming file.";
+ }
+ }
+ mandatory true;
+ description "Status of activation of beamforming config information";
+ }
+ leaf error-message {
+ when "../status='REJECTED'";
+ type string;
+ description
+ "Detailed error Message when the status is rejected, e.g.,
+ because new beam forming file is attempted to be applied to a
+ carrier which is still active, or the beam-id does not exist.";
+ }
+ }
+ }
+
+ //notification statement
+ notification beamforming-information-update {
+ leaf band-number {
+ type leafref {
+ path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
+ }
+ description
+ "The band to which the beamforming information is updated";
+ }
+ description
+ "this notification indicates that the beamforming properties are updated";
+
+ }
+}
--- /dev/null
+module xran-delay-management {
+ yang-version 1.1;
+ namespace "urn:xran:delay:1.0";
+ prefix "xran-delay";
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module covers off aspects of lls-CU to RU delay management,
+ including config data related to RU transmission and reception
+ windows.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ feature ADAPTIVE-RU-PROFILE {
+ description
+ "This feature indicates that the RU supports adaptive RU delay profile
+ based on information provided by the NETCONF client.";
+ }
+
+ container delay-management {
+ description "top level tree covering off lls-CU to RU delay management";
+
+ list bandwidth-scs-delay-state {
+ key "bandwidth subcarrier-spacing";
+ description
+ "Array of structures containing sets of parameters for delay management.";
+
+ leaf bandwidth {
+ type uint32 {
+ range "200 | 1400 | 3000 | 5000 | 10000 | 15000 | 20000 | 25000 |
+ 30000 | 40000 | 50000 | 60000 | 70000 | 80000 | 90000 | 100000
+ | 200000 | 400000" ;
+ }
+ units kilohertz;
+ description
+ "transmission bandwidth configuration in units of kHz -
+ covering NBIoT through to New Radio - see 38.104";
+ }
+ leaf subcarrier-spacing {
+ type uint32 {
+ range "0 .. 240000 ";
+ }
+ units Hertz;
+ description "subcarrier spacing in Hz";
+ }
+
+ container ru-delay-profile {
+ config false;
+ description "container for RU delay parameters";
+ leaf t2a-min-up {
+ type uint32;
+ units nanoseconds;
+ mandatory true;
+ description
+ "the minimum RU data processing delay between receiving IQ data
+ message over the fronthaul interface and transmitting
+ the corresponding first IQ sample at the antenna";
+ }
+ leaf t2a-max-up {
+ type uint32;
+ units nanoseconds;
+ mandatory true;
+ description
+ "the earliest allowable time when a data packet is received before
+ the corresponding first IQ sample is transmitted at the antenna";
+ }
+ leaf t2a-min-cp-dl {
+ type uint32;
+ units nanoseconds;
+ mandatory true;
+ description
+ "the minimum RU data processing delay between receiving downlink
+ real time control plane message over the fronthaul interface and
+ transmitting the corresponding first IQ sample at the antenna";
+ }
+ leaf t2a-max-cp-dl {
+ type uint32;
+ units nanoseconds;
+ mandatory true;
+ description
+ "the earliest allowable time when a downlink real time control message
+ is received before the corresponding first IQ sample is transmitted at
+ the antenna";
+ }
+ leaf tadv-cp-dl {
+ type uint32;
+ units nanoseconds;
+ mandatory true;
+ description
+ "the time difference (advance) between the reception window for
+ downlink real time Control messages and reception window for the
+ corresponding IQ data messages.";
+ }
+ leaf ta3-min {
+ type uint32;
+ units nanoseconds;
+ mandatory true;
+ description
+ "the minimum RU data processing delay between receiving an IQ sample
+ at the antenna and transmitting the last data sample over the
+ fronthaul interface";
+ }
+ leaf ta3-max {
+ type uint32;
+ units nanoseconds;
+ mandatory true;
+ description
+ "the maximum RU data processing delay between receiving an IQ sample
+ at the antenna and transmitting the first data sample over the
+ fronthaul interface";
+ }
+ leaf t2a-min-cp-ul {
+ type uint32;
+ units nanoseconds;
+ mandatory true;
+ description
+ "the minimum RU data processing delay between receiving real time
+ up-link control plane message over the fronthaul interface and
+ recieving the first IQ sample at the antenna";
+ }
+ leaf t2a-max-cp-ul {
+ type uint32;
+ units nanoseconds;
+ mandatory true;
+ description
+ "the earliest allowable time when a real time up-link control message
+ is received before the corresponding first IQ sample is received at
+ the antenna";
+ }
+ }
+ }
+
+ container adaptive-delay-configuration {
+ if-feature ADAPTIVE-RU-PROFILE;
+ description "container for adaptive delay parameters";
+ list bandwidth-scs-delay-state {
+ key "bandwidth subcarrier-spacing";
+ description
+ "Array of structures containing sets of parameters for delay management.";
+
+ leaf bandwidth {
+ type uint32 {
+ range "200 | 1400 | 3000 | 5000 | 10000 | 15000 | 20000 | 25000 |
+ 30000 | 40000 | 50000 | 60000 | 70000 | 80000 | 90000 | 100000
+ | 200000 | 400000" ;
+ }
+ units kilohertz;
+ description
+ "transmission bandwidth configuration in units of kHz -
+ covering NBIoT through to New Radio - see 38.104";
+ }
+ leaf subcarrier-spacing {
+ type uint32 {
+ range "0 .. 240000 ";
+ }
+ units Hertz;
+ description "subcarrier spacing in Hz";
+ }
+ container lls-cu-delay-profile {
+ description
+ "lls-CU provided delay profile for adaptive delay configuration";
+ leaf t1a-max-up-lls-cu {
+ type uint32;
+ units nanoseconds;
+ description
+ "the earliest possible time which the lls-CU can support transmiting
+ an IQ data message prior to transmission of the corresponding IQ
+ samples at the antenna";
+ }
+ leaf tx-max-lls-cu {
+ type uint32;
+ units nanoseconds;
+ description
+ "The maximum amount of time which the lls-CU requires to transmit
+ all downlink user plane IQ data message for a symbol";
+ }
+ leaf ta4-max-lls-cu {
+ type uint32;
+ units nanoseconds;
+ description
+ "the latest possible time which the lls-CU can support receiving the
+ last uplink user plane IQ data message for a symbol.";
+ }
+ leaf rx-max-lls-cu {
+ type uint32;
+ units nanoseconds;
+ description
+ "The maximum time difference the lls-CU can support between
+ receiving the first user plane IQ data message for a symbol and
+ receiving the last user plane IQ data message for the same symbol";
+ }
+ }
+ }
+
+ container transport-delay {
+ description
+ "lls-CU provided transport-delay parameters";
+ leaf t12-min {
+ type uint32;
+ units nanoseconds;
+ description
+ "the minimum measured delay between CU port-ID and RU port-ID";
+ }
+ leaf t34-min {
+ type uint32;
+ units nanoseconds;
+ description
+ "the minimum measured delay between RU port-ID and CU port-ID";
+ }
+// additional leaf added by Samsung
+ leaf t12-max {
+ type uint32;
+ units nanoseconds;
+ description
+ "the maximum measured delay between CU port-ID and RU port-ID";
+ }
+// additional leaf added by Samsung
+ leaf t34-max {
+ type uint32;
+ units nanoseconds;
+ description
+ "the maximum measured delay between RU port-ID and CU port-ID";
+ }
+ }
+ }
+ }
+}
--- /dev/null
+module xran-dhcp {
+ yang-version 1.1;
+ namespace "urn:xran:dhcp:1.0";
+ prefix "xran-dhcp";
+
+ import ietf-interfaces {
+ prefix "if";
+ }
+
+ import ietf-inet-types {
+ prefix "inet";
+ }
+
+ import ietf-dhcpv6-types {
+ prefix dhcpv6-type;
+ revision-date 2018-01-30;
+ }
+
+ organization "xRAN Alliance";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the YANG definitions for managng the DHCP client on
+ the xRAN Radio Unit.
+
+ Copyright 2018 Members of the xRAN alliance.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ typedef netconf-client-id {
+ type union {
+ type inet:ip-address;
+ type inet:uri;
+ }
+ description "A NETCONF client identifier";
+ }
+
+ grouping netconf-clients {
+ description "the netconf clients discovered using DHCP";
+ list netconf-clients{
+ key client;
+ description "A list of IP addresses or URIs for NETCONF clients";
+ leaf client{
+ type netconf-client-id;
+ description "the client identifier";
+ }
+ leaf optional-port {
+ type inet:port-number;
+ description "an optional (non-default) port";
+ }
+ }
+ }
+
+ grouping dhcpv4-option {
+ description "DHCPv4 Configuration options";
+
+ leaf dhcp-server-identifier {
+ type inet:ip-address;
+ description "DHCP server identifier";
+ }
+ leaf domain-name {
+ type string;
+ description "Name of the domain";
+ }
+ leaf-list domain-name-servers {
+ type inet:ip-address;
+ description "A list of DNS servers";
+ }
+ leaf interface-mtu {
+ type uint32 {
+ range "0..65535";
+ }
+ description "Minimum Transmission Unit (MTU) of the interface";
+ }
+ leaf-list default-gateways{
+ type inet:ip-address;
+ description "the list of default gateways on the RUs subnet";
+ }
+ leaf vendor-specific-option {
+ type string;
+ description "The vendor specific option #43";
+ }
+ uses netconf-clients;
+ }
+
+ grouping dhcpv6-option {
+ description "DHCPv6 Configuration options";
+
+ container dhcp-server-identifier{
+ description "dhcpv6 server identifief";
+ uses dhcpv6-type:duid;
+ }
+ leaf domain-name {
+ type string;
+ description "Name of the domain";
+ }
+ leaf-list domain-name-servers {
+ type inet:ip-address;
+ description "A list of DNS servers";
+ }
+ uses netconf-clients;
+ }
+
+ container dhcp {
+ config false;
+ description
+ "DHCP client configuration";
+
+ list interfaces {
+ key "interface";
+ description "Interface configuration";
+
+ leaf interface {
+ type if:interface-ref;
+ description "Name of the interface";
+ }
+
+ container dhcpv4 {
+ description "DHCPv4 information";
+ leaf client-id {
+ type string;
+ description "DHCP client identifier";
+ }
+ uses dhcpv4-option;
+ }
+ container dhcpv6 {
+ description "DHCPv6 information";
+ container dhcp-client-identifier{
+ description "dhcpv6 client identifief";
+ uses dhcpv6-type:duid;
+ }
+ uses dhcpv6-option;
+ }
+ }
+
+ container m-plane-dhcp {
+ description "leafs covering off DHCP aspects of m-plane operations";
+ leaf private-enterprise-number {
+ type uint16;
+ description "the private eneteprrise number allocated to xRAN";
+ }
+ leaf vendor-class-data {
+ type string;
+ description
+ "The string used in DHCPv4 option 60 or DHCPv4 option 124 and
+ DHCPv6 option 16";
+ }
+ }
+ }
+}
--- /dev/null
+module xran-ecpri-delay {
+ yang-version 1.1;
+ namespace "urn:xran:message5:1.0";
+ prefix "xran-msg5";
+
+ import xran-processing-element {
+ prefix "element";
+ }
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module is an optional module for supporting eCPRI message 5 handling
+ used for eCPRI based delay measurements.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ container ecpri-delay-message {
+ description "top level tree covering off lls-CU to RU msg5 delay measurement";
+
+ container ru-compensation {
+ config false;
+ description
+ "leafs for ru timing compensation based on message 5 handling";
+ leaf tcv2 {
+ type uint32;
+ units nanoseconds;
+ description
+ "a compensation value to account for expected delay from packet
+ receipt at R2 to timestamping in the RU";
+ }
+ leaf tcv1 {
+ type uint32;
+ units nanoseconds;
+ description
+ "a compensation value to account for expected processing time from
+ timestamping in the RU until actual packet transmission at R3";
+ }
+ }
+
+ leaf enable-message5 {
+ type boolean;
+ default false;
+ description
+ "whether RU's eCPRI message 5 handling is enabled.";
+ }
+
+ container message5-sessions {
+ description "session information for eCPRI message 5";
+
+ list session-parameters {
+ key "session-id";
+ description "list of MSG5 session information";
+ leaf session-id {
+ type uint32;
+ description "Session ID for MSG5 responder";
+ }
+ leaf processing-element-name {
+ type leafref {
+ path "/element:processing-elements/element:ru-elements/element:name";
+ }
+ description "the name of the processing element used for MSG5";
+ }
+ container flow-state {
+ config false;
+ description "MSG5 flow state";
+ leaf responses-transmitted {
+ type uint32;
+ description
+ "The total number of eCPRI mesage 5 response messages transmitted by
+ the RU.";
+ }
+ leaf requests-transmitted {
+ type uint32;
+ description
+ "The total number of eCPRI mesage 5 request messages transmitted by
+ the RU.";
+ }
+ leaf followups-transmitted {
+ type uint32;
+ description
+ "The total number of eCPRI mesage 5 follow up messages transmitted by
+ the RU.";
+ }
+ }
+ }
+ }
+ }
+}
--- /dev/null
+module xran-externalio {
+ yang-version 1.1;
+ namespace "urn:xran:external-io:1.0";
+ prefix "xran-io";
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the input state and output configuration for
+ the xRAN Radio Unit external IO.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ container external-io {
+ description
+ "External IO information.";
+ list input {
+ key "name";
+ config false;
+ description
+ "Leaf nodes describing external line inputs";
+ leaf name {
+ type string {
+ length "1..255";
+ }
+ description
+ "A name that is unique across the RU that identifies an input port instance.
+ This name may be used in fault management to refer to a fault source
+ or affected object";
+ }
+ leaf port-in {
+ type uint8;
+ description
+ "A number which identifies an external input port.";
+ }
+
+ leaf line-in {
+ type boolean;
+ default true;
+ description
+ "Value TRUE indicates that circuit is open.
+ Value FALSE indicates that circuit is closed.
+
+ Usually when nothing is connected to the line the value is TRUE.
+ The details of external line-in implementation are HW specific.";
+ }
+ }
+
+ list output {
+ key "name";
+ description
+ "Leaf nodes describing external line outputs";
+ leaf name {
+ type string {
+ length "1..255";
+ }
+ description
+ "A name that is unique across the RU that identifies an output port instance.
+ This name may be used in fault management to refer to a fault source
+ or affected object";
+ }
+ leaf port-out {
+ type uint8;
+ mandatory true;
+ description
+ "A number which identifies an external output port.";
+ }
+
+ leaf line-out {
+ type boolean;
+ default true;
+ description
+ "Value TRUE indicates that circuit is in its natural state.
+ Value FALSE indicates that circuit is not in its natural state.";
+ }
+ }
+ }
+
+ notification external-input-change {
+ description
+ "Notification used to indicate that external line input has changed state";
+ container current-input-notification {
+ description "a container for the state of the input ports";
+ list external-input {
+ key "name";
+ description "a list of the input ports and their state";
+ leaf name{
+ type leafref{
+ path "/external-io/input/name";
+ }
+ description "the name of the ald-port";
+ }
+ leaf io-port {
+ type leafref{
+ path "/external-io/input/port-in";
+ }
+ description "the external input port";
+ }
+ leaf line-in {
+ type leafref{
+ path "/external-io/input/line-in";
+ }
+ description "the state of the external input port";
+ }
+ }
+ }
+ }
+}
--- /dev/null
+module xran-fan {
+ yang-version 1.1;
+ namespace "urn:xran:fan:1.0";
+ prefix "xran-fan";
+
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the state of the RU's fans.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ typedef percent {
+ type uint16 {
+ range "0 .. 100";
+ }
+ description "Percentage";
+ }
+
+ container fan-tray {
+ config false;
+ description "top level tree covering off operational state of the fans";
+ list fan-state {
+ key name;
+ description "a list of the fans based on their unique names";
+ leaf name {
+ type string {
+ length "1..255";
+ }
+ description
+ "A name that is unique across the RU that identifies a fan instance.
+ This name may be used in fault management to refer to a fault source
+ or affected object";
+ }
+ leaf fan-location {
+ type uint8;
+ description "A number indicating the location of the FAN in the fan tray";
+ }
+ leaf present-and-operating {
+ type boolean;
+ mandatory true;
+ description
+ "Indicates if a fan is present and operating in the location";
+ }
+ leaf vendor-code {
+ when "../present-and-operating = 'true'";
+ type uint8 {
+ range "0..7";
+ }
+ description
+ "Indicates fan vendor code. Fan vendors are detected with ID pins
+ using 3 bits digital inputs.
+
+ Optional node included when the NETCONF Server has determined
+ the fan vendor code.";
+ }
+ leaf fan-speed {
+ when "../present-and-operating = 'true'";
+ type percent;
+ description
+ "Measured fan speed. Expressed as percentage of max fan speed.
+
+ Optional node included when the fan speed can be measured.";
+ }
+ leaf target-speed {
+ when "../present-and-operating = 'true'";
+ type uint16;
+ units rpm;
+ description "the target speed of the fan";
+ }
+ }
+ }
+}
--- /dev/null
+module xran-file-management {
+ yang-version 1.1;
+ namespace "urn:xran:file-management:1.0";
+ prefix "xran-file-mgmt";
+
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the configuration and operations for handling upload.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ grouping file-path-grouping {
+ description "Complete logical path of the file on the RU to upload/download
+ (no wildcard is allowed) ex : /xRAN/log/syslog.1";
+
+ leaf local-logical-file-path {
+ type string;
+ mandatory true;
+ description "Local logical file path";
+ }
+
+ leaf remote-file-path {
+ type string;
+ mandatory true;
+ description "URI specifying the remote-file-path on lls-CU/NMS.
+ Format:sftp://user[:password]@host[:port]/path";
+ }
+ }
+
+ grouping output-status-grouping {
+ description "Status grouping";
+
+ leaf status {
+ type enumeration {
+ enum SUCCESS {
+ description "";}
+ enum FAILURE {
+ description "";}
+ }
+ description "Operation status";
+ }
+
+ leaf reject-reason {
+ when "../status = 'FAILURE'";
+ type string;
+ description "";
+ }
+ }
+
+ grouping credential-information{
+ description "Type of authentication to use for SFTP upload or download.";
+ choice credentials {
+ case password {
+ container password {
+ presence true;
+ leaf password {
+ type string;
+ mandatory true;
+ description
+ "password needed for authentication.";
+ }
+ description
+ "password authentication method in use";
+ }
+ }
+ case certificate {
+ container certificate {
+ presence true;
+ description
+ "certificate authentication method in use";
+ }
+ }
+ description "";
+ }
+ }
+
+ rpc file-upload {
+ description "File upload over SFTP from RU to NETCONF client";
+ input {
+ uses file-path-grouping;
+ uses credential-information;
+ }
+ output {
+ uses output-status-grouping;
+ }
+ }
+
+ rpc retrieve-file-list {
+ description "List all the files in the logical xRAN unit (* is allowed as wild-card).";
+ input {
+ leaf logical-path {
+ type string;
+ mandatory true;
+ description "xRAN unit of which the files are to be listed.
+ ex : xRAN/log, xRAN/PM, xRAN/transceiver";
+ }
+ leaf file-name-filter {
+ type string;
+ description "Filter which are to be applied on the result list of file names (* is allowed as wild-card).";
+ }
+
+ }
+ output {
+ uses output-status-grouping;
+ leaf-list file-list {
+ when "../status = 'SUCCESS'";
+ type string;
+ description "List of files in the xRAN unit with the filter applied.";
+ }
+ }
+ }
+
+ notification file-upload-notification {
+ uses file-path-grouping;
+ uses output-status-grouping;
+ description "";
+ }
+
+ rpc file-download {
+ description
+ "Management plane triggered to generate the download file of RU.";
+ input {
+ uses file-path-grouping;
+ uses credential-information;
+ }
+ output {
+ uses output-status-grouping;
+ }
+ }
+
+ notification file-download-event {
+ uses file-path-grouping;
+ uses output-status-grouping;
+ description "";
+ }
+}
--- /dev/null
+module xran-fm {
+ yang-version 1.1;
+ namespace "urn:xran:fm:1.0";
+ prefix "xran-fm";
+
+ import ietf-yang-types {
+ prefix yang;
+ revision-date 2013-07-15;
+ }
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines alarm reporting mechanism.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ grouping alarm {
+ description
+ "Gropuping which can uniquely identify alarm";
+
+ leaf fault-id {
+ type uint16;
+ mandatory true;
+
+ description
+ "Fault specific Id that identifies the fault.";
+ }
+
+ leaf fault-source {
+ type string {
+ length "1..255";
+ }
+ mandatory true;
+
+ description
+ "Represents the Object or source that is suspected to be faulty.";
+ }
+
+ list affected-objects {
+ leaf name {
+ type string {
+ length "1..255";
+ }
+ mandatory true;
+
+ description
+ "Represents the Object or source that is suspected to be affected by this fault";
+ }
+ min-elements 1;
+ max-elements 100;
+
+ description
+ "List of affected-objects";
+ }
+
+ leaf fault-severity {
+ type enumeration {
+ enum CRITICAL {
+ description
+ "Critical alarm means that this device is not able to perform any further service";
+ }
+ enum MAJOR {
+ description
+ "Major alarm appeared on the device";
+ }
+ enum MINOR {
+ description
+ "Minor alarm appeared on the device";
+ }
+ enum WARNING {
+ description
+ "Warning is being reported by the device";
+ }
+ }
+ mandatory true;
+
+ description
+ "Fault severity defines the severity level of the fault. A notification, whose fault severity has the value 'warning',
+ is a special type of an alarm notification. For these alarm notifications,
+ the Master Agent does not expect to receive a clear alarm notification.";
+ }
+
+ leaf is-cleared {
+ type boolean;
+ mandatory true;
+
+ description
+ "Fault state determines the type of the event. Not used if faultSeverity is WARNING.";
+ }
+
+ leaf fault-text {
+ type string {
+ length "0..255";
+ }
+
+ description
+ "Textual description of the fault.";
+ }
+
+ leaf event-time {
+ type yang:date-and-time;
+ mandatory true;
+
+ description
+ "Timestamp to indicate the time when the fault is detected/cleared.";
+ }
+ }
+
+ container active-alarm-list {
+ list active-alarms {
+ uses alarm;
+
+ description
+ "List of currenty active alarms";
+ }
+ config false;
+
+ description
+ "List of currently active alarms. An alarm is removed from this table when the state transitions to clear.";
+ }
+
+ notification alarm-notif {
+ uses alarm;
+
+ description
+ "Notification sent on initial alarm creation, as well as any time the alarm changes state, including clear";
+ }
+}
--- /dev/null
+module xran-hardware {
+ yang-version 1.1;
+ namespace "urn:xran:hardware:1.0";
+ prefix "xran-hw";
+
+ import ietf-hardware {
+ prefix hw;
+ }
+ import iana-hardware {
+ prefix ianahw;
+ }
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the YANG definitions for managng the xRAN Radio Unit
+ hardware.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ feature ENERGYSAVING {
+ description
+ "Indicates that the Radio Unit supports energy saving state.";
+ }
+
+ // identity statements
+ identity XRAN-RADIO {
+ base ianahw:module;
+ description
+ "Module used as it represents a self-contained sub-system
+ used in /hw:/hardware/hw:component/hw:class";
+ }
+
+ // typedef statements
+ typedef energysaving-state {
+ type enumeration {
+ enum UNKNOWN {
+ description "The Radio Unit is unable to report energy saving state.";
+ }
+ enum SLEEPING {
+ description
+ "The Radio Unit is in a sleep state. The NETCONF management plane
+ connection is functioning. Other functions and hardware which are
+ not needed for management plane may be in energy saving mode.";
+ }
+ enum AWAKE {
+ description
+ "The Radio Unit is not in an energy saving state.";
+ }
+ }
+ description
+ "new typedef since ietf-hardware only covers pwer-state
+ for redundancy purposes and not power saving operations.";
+ }
+
+ typedef availability-type {
+ type enumeration {
+ enum UNKNOWN {
+ description "The Radio Unit is unable to report its availability state.";
+ }
+ enum NORMAL {
+ description
+ "The RU is functioning correctly.";
+ }
+ enum DEGRADED {
+ description
+ "The RU may be reporting a major alarm or may be reporting a critical
+ alarm that is only impacting one or more subcomponent, but where the
+ RU's implementation permit it to continue operation (server traffic)
+ in a degraded state.
+
+ Used for example, when the RU has M identical sub-components and
+ when a critical alarm is imapcting only N subcomponents, where N<M.";
+ }
+ enum FAULTY {
+ description
+ "The (sub-)components impacted by the critical alarm(s) impact the
+ ability of the RU to continue operation (serve traffic).";
+ }
+ }
+ description
+ "RU’s availability-state is derived by matching active faults
+ and their impact to module’s operation and enables an RU to indicate
+ that even though it may have one or more critical alarms, it can continue
+ to serve traffic.";
+ }
+
+ deviation /hw:hardware/hw:component/hw:name {
+ description
+ "Deviations for oryginal ietf-hardware/component/name to check if its pattern
+ and length mathes xRAN limitation
+
+ A name that is unique across the RU that identifies the RU instance.
+ This name may be used in fault management to refer to a fault source or
+ affected object corresponding to the generic RU.";
+
+ deviate add {
+ must "re-match(current(),'[a-zA-Z0-9]{1,255}')" {
+ error-message "Name must match pattern and length.";
+ }
+ }
+ }
+
+ augment "/hw:hardware/hw:component" {
+ when "derived-from-or-self(hw:class, 'XRAN-RADIO')";
+ description "New xRAN parameters for xran hardware";
+ container label-content {
+ config false;
+ description
+ "Which set of attributes are printed on the Radio Unit's label";
+ leaf model-name {
+ type boolean;
+ description
+ "indicates whether model-name is included on the RU's label";
+ }
+ leaf serial-number {
+ type boolean;
+ description
+ "indicates whether serial number is included on the RU's label";
+ }
+ // add in other leafs according to manufacturer feedback on labels
+ }
+ leaf product-code {
+ type string;
+ config false;
+ description
+ "xRAN term that is distinct from model-name in ietf-hardware.";
+ }
+ }
+
+ augment "/hw:hardware/hw:component/hw:state" {
+ when "derived-from-or-self(../hw:class, 'XRAN-RADIO')";
+ description
+ "new xRAN defined state";
+ leaf power-state {
+ if-feature "ENERGYSAVING";
+ type energysaving-state;
+ description
+ "The current power saving state for this component.
+ Note - hw:/hardware/compnent/state/standby-state defined in RFC 4268 is
+ used for redundancy purposes and not power saving operations.";
+ }
+ leaf availability-state {
+ type availability-type;
+ config false;
+ description
+ "RU’s availability-state is derived by matching active faults
+ and their impact to module’s operation and enables an RU to indicate
+ that even though it may have one or more critical alarms, it can continue
+ to serve traffic.";
+ }
+ }
+
+ augment "/hw:hardware-state-oper-enabled" {
+ description "new availability state";
+ leaf availability-state {
+ type leafref {
+ path "/hw:hardware/hw:component/hw:state/xran-hw:availability-state";
+ }
+ description
+ "The availability-state of the RU.";
+ }
+ }
+
+ augment "/hw:hardware-state-oper-disabled" {
+ description "new availability state";
+ leaf availability-state {
+ type leafref {
+ path "/hw:hardware/hw:component/hw:state/xran-hw:availability-state";
+ }
+ description
+ "The availability-state of the RU.";
+ }
+ }
+}
--- /dev/null
+module xran-interfaces {
+ yang-version 1.1;
+ namespace "urn:xran:interfaces:1.0";
+ prefix "xran-int";
+
+
+ import ietf-inet-types {
+ prefix "inet";
+ }
+
+ import iana-if-type {
+ prefix "ianaift";
+ }
+
+ import ietf-interfaces {
+ prefix "if";
+ }
+
+ import ietf-ip {
+ prefix "ip";
+ }
+
+ import ietf-hardware {
+ prefix "hw";
+ }
+
+ import ietf-yang-types {
+ prefix "yang";
+ }
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the YANG definitions for managng the xRAN Radio Unit
+ interfaces.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ identity XRAN-INTERFACE-TYPE {
+ base if:interface-type;
+ description
+ "This identity is used as a base for all interface types
+ defined by xRAN.";
+ }
+
+ identity ALIASMAC-INTERFACE {
+ base XRAN-INTERFACE-TYPE;
+ description
+ "Identity type for alias MAC based CU plane interface,
+ whwere multiple MAC addresses are used on the same Ethernet interface. ";
+ }
+
+ identity ETH-INTERFACE {
+ base XRAN-INTERFACE-TYPE;
+ description
+ "identity type for ethernet plus vlan based CU plane interface. ";
+ }
+
+ identity UDPIP-INTERFACE {
+ base XRAN-INTERFACE-TYPE;
+ description
+ "identity type for UDP/IP based CU plane interface. ";
+ }
+
+ feature UDPIP-BASED-CU-PLANE {
+ description
+ "This feature indicates that the RU supports the UDP/IP based transport
+ for the CU plane.";
+ }
+
+ feature ALIASMAC-BASED-CU-PLANE {
+ description
+ "This feature indicates that the RU supports the alias MAC address
+ based transport for the CU plane.";
+ }
+
+
+ typedef pcp {
+ type uint8 {
+ range "0..7";
+ }
+ description
+ "Priority Code Point. PCP is a 3-bit field that refers to the
+ class of service applied to a VLAN tagged frame. The
+ field specifies a priority value between 0 and 7, these values
+ can be used by quality of service (QoS) to prioritize
+ different classes of traffic.";
+ reference
+ "IEEE 802.1Q-2014: Virtual Bridged Local Area Networks";
+ }
+
+ grouping cos-marking {
+ description
+ "Configuration data for CU Plane ethernet CoS marking";
+ leaf u-plane-marking {
+ type pcp;
+ default 7;
+ description "7 represents highest priority for u-plane marking";
+ }
+ leaf c-plane-marking {
+ type pcp;
+ default 7;
+ description "7 represents highest priority for c-plane marking";
+ }
+ leaf m-plane-marking {
+ type pcp;
+ default 2;
+ description "2 represents highest excellent effort for m-plane marking";
+ }
+ leaf s-plane-marking {
+ type pcp;
+ default 7;
+ description "7 represents highest priority for s-plane marking";
+ }
+ leaf other-marking {
+ type pcp;
+ default 1;
+ description "1 represents best effort for other marking";
+ }
+ }
+
+ grouping xran-dscp-marking {
+ description
+ "Configuration data for CU Plane DSCP CoS marking";
+ leaf u-plane-marking {
+ type inet:dscp;
+ default 46;
+ description "46 represents expedited forwarding";
+ }
+ leaf c-plane-marking {
+ type inet:dscp;
+ default 46;
+ description "46 represents expedited forwarding";
+ }
+ leaf m-plane-marking {
+ type inet:dscp;
+ default 18;
+ description "18 represents AF21 or 'immediate traffic'";
+ }
+ leaf s-plane-marking {
+ type inet:dscp;
+ default 46;
+ description "46 represents expedited forwarding";
+ }
+ leaf other-marking {
+ type inet:dscp;
+ default 0;
+ description "0 represents best effort forwarding";
+ }
+ }
+
+
+ augment '/if:interfaces/if:interface' {
+ when "derived-from-or-self(if:type, 'xran-int:XRAN-INTERFACE-TYPE')";
+ description
+ "Applicable for xran interfaces which use references to a port
+ component.";
+
+ container port-reference {
+ description
+ "a port reference used by other xRAN modules";
+ leaf xran-port-name {
+ type leafref {
+ path '/hw:hardware/hw:component/hw:name';
+ }
+ description
+ "xRAN interfaces use a reference to a physical port component";
+ }
+ leaf xran-port-number {
+ type uint8;
+ description
+ "A number allocated by the server which identifies a port.
+ Port number value is 0 to N-1 where N is number of ports
+ in the device.
+
+ This value is fixed for the lifetime of the RU, i.e., cannot be
+ changed suring RU reboots.";
+ }
+ }
+ leaf last-cleared {
+ type yang:date-and-time;
+ config false;
+ description
+ "Timestamp of the last time the interface counters were
+ cleared.";
+ }
+ }
+
+ // Augmentation for lower layer definition
+
+ augment '/if:interfaces/if:interface' {
+ when "derived-from-or-self(if:type, 'xran-int:XRAN-INTERFACE-TYPE') and
+ not(if:lower-layer-if)" {
+ description
+ "Data specific for an xRAN bottom level interface, i.e.,
+ use relative path to check the current interface does not have any
+ lower-layer-if defined";
+ }
+ description
+ "Augments interfaces/interface with xRAN information .";
+ container physical-int {
+ description "container for physical interface";
+ leaf maximum-speed {
+ type enumeration {
+ enum 1000BASE {
+ description "1GbE";
+ }
+ enum 2.5GBASE {
+ description "2.5GbE";
+ }
+ enum 5GBASE{
+ description "5GbE";
+ }
+ enum 10GBASE{
+ description "10GbE";
+ }
+ enum 25GBASE{
+ description "25GbE";
+ }
+ enum 40GBASE{
+ description "40GbE";
+ }
+ enum 50GBASE{
+ description "50GbE";
+ }
+ enum 100GBASE{
+ description "100GbE";
+ }
+ }
+ config false;
+ description "maximum speed of physical interface";
+ }
+ leaf cable-type {
+ type enumeration {
+ enum TWISTED-PAIR{
+ description "twisted pair";
+ }
+ enum FIBER-OPTIC{
+ description "fiber optic";
+ }
+ }
+ config false;
+ description "type of cable";
+ }
+ }
+ }
+
+// Augmentation for basic Ethernet leafs
+
+ augment "/if:interfaces/if:interface" {
+ when "derived-from-or-self(if:type, 'ianaift:ethernetCsmacd') or
+ derived-from-or-self(if:type, 'ianaift:l2vlan')" {
+ description "Applies to Ethernet interfaces";
+ }
+ description
+ "Augment the interface model with parameters for all
+ Ethernet-like interfaces
+
+ Contains parameters for interfaces that use Ethernet framing
+ and expose an Ethernet MAC layer";
+ leaf l2-mtu {
+ type uint16 {
+ range "64 .. 65535";
+ }
+ units bytes;
+ default 1500;
+ description
+ "The maximum size of layer 2 frames that may be transmitted
+ or received on the interface (excluding any FCS overhead).
+ For Ethernet interfaces it also excludes the
+ 4-8 byte overhead of any known (i.e. explicitly matched by
+ a child sub-interface) 801.1Q VLAN tags.";
+ }
+ leaf mac-address {
+ type yang:mac-address;
+ description
+ "The MAC address of the interface.";
+ }
+ leaf bia-mac-address {
+ type yang:mac-address;
+ config false;
+ description
+ "The 'burnt-in' MAC address. I.e the default MAC address
+ assigned to the interface if no MAC address has been
+ explicitly configured on it.";
+ }
+ leaf-list alias-macs {
+ when "derived-from-or-self(../if:type, 'xran-int:ALIASMAC-INTERFACE')";
+ if-feature ALIASMAC-BASED-CU-PLANE;
+ type yang:mac-address;
+ config false;
+ description
+ "Augments interfaces with range of alias MAC addresses.";
+ }
+ leaf vlan-tagging {
+ type boolean;
+ default true;
+ description
+ "Indicates if VLAN tagging is used.
+ Default true is used to enable an RU to auonomously discover that it is
+ connected to a trunk port.";
+ }
+ uses cos-marking;
+ }
+
+// augmentation for VLAN definition
+
+ augment "/if:interfaces/if:interface" {
+ when "derived-from-or-self (if:type, 'ianaift:l2vlan')";
+ description "augments for VLAN definition";
+ leaf base-interface {
+ type if:interface-ref;
+ must "/if:interfaces/if:interface[if:name = current()]"
+ + "/xran-int:vlan-tagging = 'true'" {
+ description
+ "The base interface must have VLAN tagging enabled.";
+ }
+ description
+ "The base interface for the VLAN sub-interafce.";
+ }
+ leaf vlan-id {
+ type uint16 {
+ range "1..4094";
+ }
+ description
+ "The VLAN-ID.";
+ }
+ }
+
+ // Augmention to ietf-ip covering DSCP
+
+ augment "/if:interfaces/if:interface/ip:ipv4" {
+ when "derived-from-or-self(../if:type, 'xran-int:UDPIP-INTERFACE')";
+ if-feature UDPIP-BASED-CU-PLANE;
+ description "augments for IPv4 based transport";
+ uses xran-dscp-marking;
+ }
+ augment "/if:interfaces/if:interface/ip:ipv6" {
+ when "derived-from-or-self(../if:type, 'xran-int:UDPIP-INTERFACE')";
+ if-feature UDPIP-BASED-CU-PLANE;
+ description "augments for IPv6 based transport";
+ uses xran-dscp-marking;
+ }
+
+ rpc reset-interface-counters {
+ description
+ "Management plane triggered restart of the interface counters.";
+ }
+}
--- /dev/null
+module xran-lbm {\r
+ yang-version 1.1;\r
+ namespace "urn:xran:lbm:1.0";\r
+ prefix "xran-lbm";\r
+\r
+ import ietf-yang-types {\r
+ prefix yang;\r
+ revision-date 2013-07-15;\r
+ }\r
+\r
+ organization "xRAN Forum";\r
+\r
+ contact\r
+ "www.xran.org";\r
+\r
+ description\r
+ "This module defines the module capabilities for\r
+ the xRAN Radio loop-back protocol (IEEE 802.1ag).\r
+ It is derived from MEF-38 (Service OAM Fault Management YANG Modules, April 2012)\r
+\r
+ Copyright 2018 the xRAN Forum.\r
+\r
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\r
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ POSSIBILITY OF SUCH DAMAGE.\r
+\r
+ Redistribution and use in source and binary forms, with or without\r
+ modification, are permitted provided that the following conditions are met:\r
+\r
+ * Redistributions of source code must retain the above copyright notice,\r
+ this list of conditions and the above disclaimer.\r
+ * Redistributions in binary form must reproduce the above copyright notice,\r
+ this list of conditions and the above disclaimer in the documentation\r
+ and/or other materials provided with the distribution.\r
+ * Neither the Members of the xRAN Forum nor the names of its\r
+ contributors may be used to endorse or promote products derived from\r
+ this software without specific prior written permission.";\r
+\r
+ revision "2018-07-20" {\r
+ description\r
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.\r
+\r
+ This version of the model supports v01.00 of the corrsponding xRAN\r
+ M-Plane Specification.";\r
+ reference "XRAN-FH.MP.0-v01.00";\r
+ }\r
+\r
+ typedef priority-type {\r
+ type uint32 {\r
+ range "0..7";\r
+ }\r
+ description\r
+ "A 3 bit priority value to be used in the VLAN tag, if present\r
+ in the transmitted frame.";\r
+ reference "[802.1q] 12.14.7.3.2:e";\r
+ }\r
+\r
+\r
+ typedef mep-id-type {\r
+ type uint16 {\r
+ range "1..8191";\r
+ }\r
+ description\r
+ "Maintenance association End Point Identifier (MEPID): A small integer,\r
+ unique over a given Maintenance Association, identifying a\r
+ specific MEP.";\r
+ reference "[802.1q] 3.19 and 19.2.1";\r
+ }\r
+ typedef vlan-id-type {\r
+ type uint16 {\r
+ range "1..4094";\r
+ }\r
+ description\r
+ "The VLAN-ID that uniquely identifies a VLAN. This is the 12-bit VLAN-ID\r
+ used in the VLAN Tag header.";\r
+ reference "[802.1q] 9.6";\r
+ }\r
+\r
+ typedef md-level-type {\r
+ type int32 {\r
+ range "0..7";\r
+ }\r
+ description\r
+ "Maintenance Domain Level (MD Level) identifier. Higher numbers\r
+ correspond to higher Maintenance Domains, those with the greatest\r
+ physical reach, with the highest values for customers' CFM PDUs.\r
+ Lower numbers correspond to lower Maintenance Domains, those with\r
+ more limited physical reach, with the lowest values for CFM PDUs\r
+ protecting single bridges or physical links.";\r
+ reference "[802.1q] 18.3, 21.4.1, IEEE8021-CFM-MIB.Dot1agCfmMDLevel";\r
+ }\r
+\r
+ typedef lbm-transaction-id-type {\r
+ type uint32;\r
+ description\r
+ "A loopback transaction identifier";\r
+ reference "[802.1q] 21.7.3";\r
+ }\r
+\r
+ list maintenance-domain {\r
+ key "id";\r
+ description\r
+ "A Maintenance Domain managed object is required in order to create an MA\r
+ with a MAID that includes that Maintenance Domain’s Name. From\r
+ this Maintenance Domain managed object, all Maintenance\r
+ Association managed objects associated with that Maintenance\r
+ Domain managed object can be accessed, and thus controlled.";\r
+ reference "[802.1q] 12.14.5";\r
+ leaf id {\r
+ type string;\r
+ description\r
+ "A unique identifier of a Maintenance Domain";\r
+ reference "[802.1q] 12.14.5";\r
+ }\r
+\r
+ leaf name {\r
+ type string;\r
+ description\r
+ "The value for the Maintenance Domain Name. Only the name-type\r
+ 'character-string' is supported";\r
+ reference "[802.1q] 21.6.5.1 (Table 21-19), 12.14.5.3.2:a";\r
+ }\r
+\r
+ leaf md-level {\r
+ type md-level-type;\r
+ default 0;\r
+ description\r
+ "Integer identifying the Maintenance Domain Level (MD Level). Higher\r
+ numbers correspond to higher Maintenance Domains, those with the\r
+ greatest physical reach, with the highest values for customers'\r
+ CFM PDUs. Lower numbers correspond to lower Maintenance\r
+ Domains, those with more limited physical reach, with the lowest\r
+ values for CFM PDUs protecting single bridges or physical links.";\r
+ reference "[802.1q] 12.14.5.1.3:b";\r
+ }\r
+\r
+ list maintenance-association {\r
+ key "id";\r
+ description\r
+ "This list represents Maintenance Entity Groups (Y.1731) or\r
+ Maintenance Associations (802.1ag). MEGs/MAs are sets of\r
+ MEPs, each configured to the same service inside a common\r
+ OAM domain.";\r
+ leaf id {\r
+ type string;\r
+ description\r
+ "A unique identifier of a Maintenance Association";\r
+ reference "[802.1q] 12.14.6";\r
+ }\r
+ leaf name {\r
+ type string;\r
+\r
+ description\r
+ "The value for the Maintenance Association Name. Only the name-type\r
+ 'character-string' is supported";\r
+ reference "[802.1q] 12.14.5.3.2:b, Table 21-20";\r
+ }\r
+\r
+ list component-list {\r
+ key "component-id";\r
+ description\r
+ "A list of components each of which can be managed in a manner\r
+ essentially equivalent to an 802.1Q bridge.";\r
+ reference "[802.1q] IEEE8021-CFM-V2-MIB.ieee8021CfmMaCompTable";\r
+ leaf component-id {\r
+ type uint32;\r
+ description\r
+ "The bridge component within the system to which the information\r
+ in this maintenance-association applies";\r
+ reference "[802.1q] IEEE8021-CFM-V2-MIB.ieee8021CfmMaComponentId";\r
+ }\r
+ leaf name {\r
+ type string;\r
+\r
+ description\r
+ "The value for the Maintenance Association Name. Only the name-type\r
+ 'character-string' is supported";\r
+ reference "[802.1q] 12.14.5.3.2:b, Table 21-20";\r
+ }\r
+\r
+ leaf-list vid {\r
+ type vlan-id-type;\r
+ min-elements 1;\r
+ ordered-by user;\r
+ description\r
+ "The VID(s) monitored by this MA, or 0, if the MA is not attached to any\r
+ VID. The first VID returned is the MA's Primary VID";\r
+ reference "[802.1q] 12.14.5.3.2:b";\r
+ }\r
+\r
+ leaf-list remote-meps {\r
+ type mep-id-type;\r
+ description\r
+ "A list of the MEPIDs of the MEPs in the MA.";\r
+ reference "[802.1q] 12.14.6.1.3:g";\r
+ }\r
+ list maintenance-association-end-point {\r
+ key "mep-identifier";\r
+ description\r
+ "The list of Maintenance association End Points in a specific Maintance\r
+ Association.";\r
+ leaf mep-identifier {\r
+ type mep-id-type;\r
+ description\r
+ "Integer that is unique among all the MEPs in the same MA. Other\r
+ definition is: a small integer, unique over a given\r
+ Maintenance Association, identifying a specific Maintenance\r
+ association End Point.";\r
+ reference "[802.1q] 12.14.6.3.2:b";\r
+ }\r
+ leaf interface {\r
+ type string;\r
+ mandatory true;\r
+ description\r
+ "An interface, either a Bridge Port or an aggregated IEEE 802.3 port\r
+ within a Bridge Port, to which the MEP is attached. Each interface in\r
+ the system is uniquely identified by an interface-name. The structure\r
+ and content of the name is outside the scope of this specification.";\r
+ reference "[802.1q] 12.14.7.1.3:b";\r
+ }\r
+ leaf primary-vid {\r
+ type vlan-id-type;\r
+ mandatory true;\r
+ description\r
+ "The Primary VID of the MEP. The value 0 indicates that either the\r
+ Primary VID is that of the MEP's MA or that the MEP's MA is\r
+ associated with no VID";\r
+ reference "[802.1q] 12.14.7.1.3:d";\r
+ }\r
+ leaf administrative-state {\r
+ type boolean;\r
+ mandatory true;\r
+ description\r
+ "The administrative state of the MEP";\r
+ reference "[802.1q] 12.14.7.1.3:e";\r
+ }\r
+ leaf mac-address {\r
+ type yang:mac-address;\r
+ config false;\r
+ description\r
+ "The MAC address of the MEP";\r
+ reference "[802.1q] 12.14.7.1.3:i";\r
+ }\r
+ container loopback {\r
+ config false;\r
+ description\r
+ "Data definitions related to the Loopback function.";\r
+ leaf replies-transmitted {\r
+ type yang:counter32;\r
+ config false;\r
+ mandatory true;\r
+ description\r
+ "The total number of LBRs transmitted.";\r
+ reference "[802.1q] 12.14.7.1.3:ad";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+}\r
--- /dev/null
+module xran-module-cap {
+ yang-version 1.1;
+ namespace "urn:xran:module-cap:1.0";
+ prefix "xran-module-cap";
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the module capabilities for
+ the xRAN Radio Unit.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ grouping compression-method-grouping {
+ description
+ "Grouping for compression method.";
+
+ leaf compression-method {
+ type enumeration {
+ enum BLOCK_FLOATING_POINT {
+ description
+ "Block floating point compression and decompression will be used";
+ }
+
+ enum BLOCK_SCALING {
+ description
+ "Block scaling compression and decompresion will be used";
+ }
+
+ enum U_LAW {
+ description
+ "u-Law compression and decompresion method will be used";
+ }
+
+ enum BEAMSPACE {
+ description
+ "Beamspace compression and decompression will be used";
+ }
+
+ enum MODULATION {
+ description
+ "Modulation compression and decompression will be used";
+ }
+ }
+ description
+ "Compresion method which can be supported by the RU";
+ }
+ }
+
+ container module-capability {
+ config false;
+ description
+ "module capability object responsible for providing module capability.";
+
+ container ru-capabilities {
+ description
+ "Structure representing set of capabilities.";
+
+ leaf ru-supported-category {
+ type enumeration {
+ enum CAT_A {
+ description
+ "Informs that precoding is supported in lls-CU";
+ }
+ enum CAT_B {
+ description
+ "Informs that precoding is supported in RU";
+ }
+ }
+
+ description
+ "Informs about which category RU supports";
+ }
+
+ leaf number-of-ru-ports {
+ type uint8;
+ description
+ "This value indicates the maximum number of simultaneous beams per RU.
+ This value is derived by the products of “numberOfPolarizations” and “numberOfPanels”
+ and “the maximum number of simultaneous beams per sub-carrier”.";
+ }
+
+ leaf number-of-antenna-ports {
+ type uint8;
+ description
+ "This value indicates the number of antenna ports supported at RU.
+ This parameter is used by the precoding control between lls-CU and UE.
+ This value conforms to 3GPP TS38.214, Section 5.2. Value 0 means “unused”.";
+ }
+
+ leaf max-power-per-pa-antenna {
+ type decimal64{
+ fraction-digits 4;
+ }
+ description
+ "This value indicates Maximum Power per PA per antenna. Value unit is dBm.";
+ }
+
+ leaf min-power-per-pa-antenna {
+ type decimal64{
+ fraction-digits 4;
+ }
+ description
+ "This value indicates Minimum Power per PA per antenna. Value unit is dBm.";
+ }
+
+ leaf fronthaul-split-option {
+ type uint8 {
+ range "7";
+ }
+ description
+ "This value indicates the Fronthaul Split Option, i.e., 2 or 7 in this release.";
+ }
+
+ container format-of-iq-sample {
+ description
+ "Indicates module capabilities about IQ samples";
+
+ leaf dynamic-compression-supported {
+ type boolean;
+
+ description
+ "Informs if radio supports dynamic compression method";
+ }
+
+ leaf-list supported-bitwidths {
+ type uint8 {
+ range "1..16";
+ }
+
+ description
+ "List of supported bitwidths";
+ }
+
+ leaf realtime-variable-bit-width-supported {
+ type boolean;
+
+ description
+ "Informs if RU supports realtime variable bit with";
+ }
+
+ list compression-method-supported {
+ uses compression-method-grouping;
+
+ description
+ "List of supported compression methods by RU";
+ }
+
+ leaf variable-bit-width-per-channel-supported {
+ when "/module-capability/ru-capabilities/format-of-iq-sample/realtime-variable-bit-width-supported = 'true'";
+ type boolean;
+
+ description
+ "Informs if variable bit width per channel is supported or not";
+ }
+
+ leaf syminc-supported {
+ type boolean;
+
+ description
+ "Informs if symbol number increment command in a C-Plane is
+ supported or not";
+ }
+ }
+
+ list ul-mixed-num-required-guard-rbs {
+ key "scs-a scs-b";
+ description
+ "Required number of guard resource blocks for the combination of
+ subcarrier spacing values for uplink";
+ leaf scs-a{
+ type enumeration {
+ enum KHZ_15 {
+ value 0;
+ description
+ "15kHz sub carrier spacing";
+ }
+ enum KHZ_30 {
+ value 1;
+ description
+ "30kHz sub carrier spacing";
+ }
+ enum KHZ_60 {
+ value 2;
+ description
+ "60kHz sub carrier spacing";
+ }
+ enum KHZ_120 {
+ value 3;
+ description
+ "120kHz sub carrier spacing";
+ }
+ enum KHZ_240 {
+ value 4;
+ description
+ "240kHz sub carrier spacing";
+ }
+ enum KHZ_1_25 {
+ value 12;
+ description
+ "1,25kHz sub carrier spacing";
+ }
+ enum KHZ_5 {
+ value 14;
+ description
+ "5kHz sub carrier spacing";
+ }
+ }
+ description
+ "Sub-carrier spacing configuration";
+ }
+ leaf scs-b{
+ type enumeration {
+ enum KHZ_15 {
+ value 0;
+ description
+ "15kHz sub carrier spacing";
+ }
+ enum KHZ_30 {
+ value 1;
+ description
+ "30kHz sub carrier spacing";
+ }
+ enum KHZ_60 {
+ value 2;
+ description
+ "60kHz sub carrier spacing";
+ }
+ enum KHZ_120 {
+ value 3;
+ description
+ "120kHz sub carrier spacing";
+ }
+ enum KHZ_240 {
+ value 4;
+ description
+ "240kHz sub carrier spacing";
+ }
+ enum KHZ_1_25 {
+ value 12;
+ description
+ "1,25kHz sub carrier spacing";
+ }
+ enum KHZ_5 {
+ value 14;
+ description
+ "5kHz sub carrier spacing";
+ }
+ }
+ description
+ "Sub-carrier spacing configuration";
+ }
+ leaf number-of-guard-rbs-ul{
+ type uint8;
+ description
+ "This value indicates the required number of guard resource blocks
+ between the mixed numerologies, the RB using scs-a and the RB
+ using scs-b. It's number is based on scs-a";
+ }
+ }
+ list dl-mixed-num-required-guard-rbs {
+ key "scs-a scs-b";
+ description
+ "Required number of guard resource blocks for the combination of
+ subcarrier spacing values for downlink";
+ leaf scs-a{
+ type enumeration {
+ enum KHZ_15 {
+ value 0;
+ description
+ "15kHz sub carrier spacing";
+ }
+ enum KHZ_30 {
+ value 1;
+ description
+ "30kHz sub carrier spacing";
+ }
+ enum KHZ_60 {
+ value 2;
+ description
+ "60kHz sub carrier spacing";
+ }
+ enum KHZ_120 {
+ value 3;
+ description
+ "120kHz sub carrier spacing";
+ }
+ enum KHZ_240 {
+ value 4;
+ description
+ "240kHz sub carrier spacing";
+ }
+ enum KHZ_1_25 {
+ value 12;
+ description
+ "1,25kHz sub carrier spacing";
+ }
+ enum KHZ_5 {
+ value 14;
+ description
+ "5kHz sub carrier spacing";
+ }
+ }
+ description
+ "Sub-carrier spacing configuration";
+ }
+ leaf scs-b{
+ type enumeration {
+ enum KHZ_15 {
+ value 0;
+ description
+ "15kHz sub carrier spacing";
+ }
+ enum KHZ_30 {
+ value 1;
+ description
+ "30kHz sub carrier spacing";
+ }
+ enum KHZ_60 {
+ value 2;
+ description
+ "60kHz sub carrier spacing";
+ }
+ enum KHZ_120 {
+ value 3;
+ description
+ "120kHz sub carrier spacing";
+ }
+ enum KHZ_240 {
+ value 4;
+ description
+ "240kHz sub carrier spacing";
+ }
+ enum KHZ_1_25 {
+ value 12;
+ description
+ "1,25kHz sub carrier spacing";
+ }
+ enum KHZ_5 {
+ value 14;
+ description
+ "5kHz sub carrier spacing";
+ }
+ }
+ description
+ "Sub-carrier spacing configuration";
+ }
+ leaf number-of-guard-rbs-dl{
+ type uint8;
+ description
+ "This value indicates the required number of guard resource blocks
+ between the mixed numerologies, the RB using scs-a and the RB
+ using scs-b. It's number is based on scs-a";
+ }
+ }
+ }
+ list band-capabilities {
+ key band-number;
+ description
+ "Capabilities that are needed to be defined per each band";
+
+ leaf band-number {
+ type uint16;
+ description
+ "Band number";
+ }
+
+ leaf max-supported-frequency-dl {
+ type uint64;
+ description
+ "This value indicates Maximum supported downlink frequency. Value unit is Hz.";
+ }
+
+ leaf min-supported-frequency-dl {
+ type uint64;
+ description
+ "This value indicates Minimum supported downlink frequency. Value unit is Hz.";
+ }
+
+ leaf max-supported-bandwidth-dl {
+ type uint64;
+ description
+ "This value indicates Maximum total downlink bandwidth in module. Value unit is Hz.";
+ }
+
+ leaf max-num-carriers-dl {
+ type uint32;
+ description
+ "This value indicates Maximum number of downlink carriers in module.";
+ }
+
+ leaf max-carrier-bandwidth-dl {
+ type uint64;
+ description
+ "This value indicates Maximum bandwidth per downlink carrier. Value unit is Hz.";
+ }
+
+ leaf min-carrier-bandwidth-dl {
+ type uint64;
+ description
+ "This value indicates Minimum bandwidth per downlink carrier. Value unit is Hz.";
+ }
+
+ leaf max-supported-frequency-ul {
+ type uint64;
+ description
+ "This value indicates Maximum supported uplink frequency. Value unit is Hz.";
+ }
+
+ leaf min-supported-frequency-ul {
+ type uint64;
+ description
+ "This value indicates Minimum supported uplink frequency. Value unit is Hz.";
+ }
+
+ leaf max-supported-bandwidth-ul {
+ type uint64;
+ description
+ "This value indicates Maximum total uplink bandwidth in module. Value unit is Hz.";
+ }
+
+ leaf max-num-carriers-ul {
+ type uint32;
+ description
+ "This value indicates Maximum number of uplink carriers in module.";
+ }
+
+ leaf max-carrier-bandwidth-ul {
+ type uint64;
+ description
+ "This value indicates Maximum bandwidth per uplink carrier. Value unit is Hz.";
+ }
+
+ leaf min-carrier-bandwidth-ul {
+ type uint64;
+ description
+ "This value indicates Minimum bandwidth per uplink carrier. Value unit is Hz.";
+ }
+// leaf number-of-supported-streams {
+// when "/module-capability/ru-capabilities/ru-supported-category = 'CAT_A'"
+// type uint8;
+// description
+// "Number of supported spatial stream in case CAT-A is supported";
+// }
+// Fixed me if they are necessary.
+
+ leaf max-num-component-carriers {
+ type uint8;
+ description "maximum number of component carriers supported by the RU";
+ }
+
+ leaf max-num-bands {
+ type uint16;
+ description "maximum number of bands supported by the RU";
+ }
+
+ leaf max-num-sectors {
+ type uint8;
+ description "maximum number of sectors supported by the RU";
+ }
+
+ leaf max-power-per-antenna {
+ type decimal64{
+ fraction-digits 4;
+ }
+ description
+ "This value indicates Maximum Power per band per antenna. Value unit is dBm.";
+ }
+
+ leaf min-power-per-antenna {
+ type decimal64{
+ fraction-digits 4;
+ }
+ description
+ "This value indicates Minimum Power per band per antenna. Value unit is dBm.";
+ }
+
+ leaf codebook-configuration_ng {
+ type uint8;
+ description
+ "This parameter informs the precoder codebook_ng that are used for precoding";
+ }
+
+ leaf codebook-configuration_n1 {
+ type uint8;
+ description
+ "This parameter informs the precoder codebook_n1 that are used for precoding";
+ }
+
+ leaf codebook-configuration_n2 {
+ type uint8;
+ description
+ "This parameter informs the precoder codebook_n2 that are used for precoding";
+ }
+ }
+ }
+}
--- /dev/null
+module xran-mplane-int {
+ yang-version 1.1;
+ namespace "urn:xran:mplane-interfaces:1.0";
+ prefix "xran-mplane-int";
+
+ import ietf-inet-types {
+ prefix "inet";
+ }
+
+ import ietf-interfaces {
+ prefix "if";
+ }
+
+ import xran-interfaces {
+ prefix "xran-int";
+ }
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the YANG definitions for managng the xRAN Radio Unit
+ management plane interface.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ typedef vlan-id {
+ type uint16 {
+ range 1..4094;
+ }
+ description
+ "Type definition representing a single-tagged VLAN";
+ }
+ container mplane-info {
+ description "top level container for management plane information";
+ container searchable-mplane-access-vlans-info {
+ description
+ "These parameters shall be stored by the RU in reset persistant memory
+ to enable it to be re-used to optimize VALN discovery procerdures.";
+ leaf-list searchable-access-vlans {
+ type vlan-id;
+ description
+ "A list of access VLANs that may be operational on the transport
+ network. Can be used by the RU to optimize its VLAN searching - for
+ M-plane operations.";
+ }
+ container vlan-range {
+ description "the range of VLAN IDs that may be configured for M-Plane";
+ leaf lowest-vlan-id {
+ type vlan-id;
+ description
+ "Value of this parameter informs RU about lowest VID to be used
+ in VLAN scan procedure";
+ }
+ leaf highest-vlan-id {
+ type vlan-id;
+ description
+ "Value of this parameter informs RU about highest VID to be used
+ in VLAN scan procedure";
+ }
+ }
+ }
+
+ container m-plane-interfaces {
+ description "information concerning m-plane interfaces";
+ list m-plane-sub-interfaces {
+ key "interface-name sub-interface";
+ description "list of m-plane information";
+ leaf interface-name {
+ type leafref {
+ path "/if:interfaces/if:interface/if:name";
+ }
+ description "the name of the interface";
+ }
+ leaf sub-interface {
+ type leafref {
+ path "/if:interfaces/if:interface[if:name = current()/../interface-name]/xran-int:vlan-id";
+ }
+ description
+ "vlans used to communicate with management plane servers.";
+ }
+ container client-info {
+ description "the NETCONF client information";
+ list mplane-ipv4-info {
+ key mplane-ipv4;
+ description "list of IPv4 NETCONF clients";
+ leaf mplane-ipv4 {
+ type inet:ipv4-address;
+ description "The IPv4 address of M-Plane client discovered by the RU
+ or manually configured.";
+ }
+ leaf port {
+ type inet:port-number;
+ default "4334";
+ description
+ "The port number the call home server listens on.";
+ }
+ }
+ list mplane-ipv6-info {
+ key mplane-ipv6;
+ description "list of IPv6 NETCONF clients";
+ leaf mplane-ipv6 {
+ type inet:ipv6-address;
+ description "The IPv6 address of M-Plane client discovered by the RU
+ or manually configured.";
+ }
+ leaf port {
+ type inet:port-number;
+ default "4334";
+ description
+ "The port number the call home server listens on.";
+ }
+ }
+ leaf-list mplane-fqdn {
+ type inet:domain-name;
+ description "The discovered FQDN(s) of M-Plane client(s).";
+ }
+ }
+ }
+
+ container m-plane-ssh-ports {
+ description "leafs for managing SSH ports";
+ leaf call-home-ssh-port {
+ type inet:port-number;
+ default 4334;
+ description "call home server port number";
+ }
+ leaf server-ssh-port {
+ type inet:port-number;
+ default 830;
+ description "SSH server port number";
+ }
+ }
+ }
+ }
+}
--- /dev/null
+module xran-operations {
+ yang-version 1.1;
+ namespace "urn:xran:operations:1.0";
+ prefix "xran-ops";
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the YANG model used for RU operations.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ typedef xran-version {
+ type string {
+ pattern '[0-9]+(\.[0-9]+)';
+ }
+ description
+ "this type definition is used to represent the version of the xRAN
+ fronthaul interface.";
+ }
+
+ container operational-info{
+ config false;
+ description
+ "a collection of operational infor for the RU";
+
+ container xran-split {
+ description
+ "details about the xran split ";
+ leaf interface-version {
+ type xran-version;
+ default "1.0";
+ description "current version of the xRAN split sdupported by the RU";
+ }
+ leaf optional-header-support {
+ type enumeration {
+ enum NONE {
+ description
+ "Indicates that an RU only supports eCPRI C/U plane headers";
+ }
+ enum 1914POINT3 {
+ description
+ "Indicates that an RU supports the optional 1914.3 header format
+ for the C/U plane";
+ }
+ }
+ default NONE;
+ description
+ "Placeholder to enable future management plane aspects of 1914.3
+ headers to be included.";
+ }
+ leaf ecpri-concatenation-support {
+ type boolean;
+ default false;
+ description
+ "This leaf is used to indicate whether the RU supports the optional
+ eCPRI concatenation capability";
+ }
+ }
+
+ container operational-state {
+ description
+ "Operational state for the Radio Unit";
+ leaf restart-cause {
+ type enumeration {
+ enum POWER-ON {
+ description
+ "RU restarted because it was powered on";
+ }
+ enum SUPERVISION-WATCHDOG {
+ description
+ "RU restarted because it's supervision wathcdog timer wasn't reset
+ by a NETCONF client (inferring loss of NETCONF connectivity)";
+ }
+ enum MPLANE-TRIGGERED-RESTART {
+ description
+ "RU restarted because of an M-plane issued rpc";
+ }
+ enum SOFTWARE-FAILURE {
+ description
+ "RU restarted because of software failure";
+ }
+ enum OTHER-WATCHDOG-TIMER {
+ description
+ "RU restarted because of some other non NETCONF watchdog timer";
+ }
+ enum UNKNOWN {
+ description
+ "The restart reason for the RU is unknown";
+ }
+ }
+ description "the cause for the last restart of the RU";
+ }
+ }
+
+ leaf re-call-home-no-ssh-timer {
+ type uint16;
+ units seconds;
+ default 60;
+ description
+ "The timer used by the xRAN Radio Unit to repeatedley call home to
+ identified call home servers if it has not already an established SSH
+ connection to the identified server.";
+ }
+ }
+
+ rpc reset {
+ // TODO add nacm statement, e.g., nacm:default-deny-all;
+ description
+ "Management plane triggered restart of the radio unit.
+ A server SHOULD send an rpc reply to the client before
+ restarting the system.";
+
+ }
+}
--- /dev/null
+module xran-performance-management {
+ yang-version 1.1;
+ namespace "urn:xran:performance-management:1.0";
+ prefix "xran-pm";
+
+ import ietf-yang-types {
+ prefix "yang-types";
+ revision-date 2013-07-15;
+ }
+
+ // import idetifier for RU
+ import ietf-hardware {
+ prefix "hw";
+ }
+
+ // import ietf-interface
+ import ietf-interfaces {
+ prefix "if";
+ }
+
+ // import ietf-inet-type
+ import ietf-inet-types {
+ prefix "inet";
+ }
+
+ // import xran-port-number
+ import xran-interfaces {
+ prefix "xran-int";
+ }
+
+ // import ru-mac-address, lls-cu-mac-address and vlan-id
+ import xran-processing-element {
+ prefix "xran-elements";
+ }
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the configuration for performance measurement for
+ transceiver and rx-window measurement objects.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+
+ feature GRANULARITY-TRANSPORT-MEASUREMENT {
+ description
+ "This feature indicates that the RU supports an optional object-unit TRANSPORT in rx-window-measurement.";
+ }
+ feature GRANULARITY-EAXC-ID-MEASUREMENT {
+ description
+ "This feature indicates that the RU supports an optional object-unit EAXC_ID in rx-window-measurement.";
+ }
+
+ grouping start-and-end-time {
+ description
+ "Definition for start and end time for an event";
+
+ leaf start-time {
+ type yang-types:date-and-time;
+ description
+ "Start time for measurement of object stats";
+ }
+ leaf end-time {
+ type yang-types:date-and-time;
+ description
+ "End time for measurement of object stats";
+ }
+ }
+
+ grouping transceiver-measurement-result-grouping {
+ description
+ "transceiver-measurement-result are listed per port-number";
+
+ list transceiver-measurement-result {
+ key "object-unit-id";
+ config false;
+ leaf object-unit-id {
+ type leafref {
+ path "/if:interfaces/if:interface/xran-int:port-reference/xran-int:xran-port-number";
+ }
+
+ description
+ "port-number is used for the object-unit-id for the
+ transceiver-measurement-result, for which object-unit is
+ PORT_NUMBER only";
+ }
+ container min {
+ description
+ "minimum value with recorded time are included for the
+ measurement-object";
+
+ leaf value {
+ type decimal64 {
+ fraction-digits 4;
+ }
+
+ description
+ "minimum value for the measurment-object";
+ }
+ leaf time {
+ type yang-types:date-and-time;
+
+ description
+ "recorded time for the minimum value";
+ }
+ }
+ container max {
+ description
+ "maximum value with recorded time are included for the
+ measurement-object";
+
+ leaf value {
+ type decimal64 {
+ fraction-digits 4;
+ }
+
+ description
+ "maximum value for the measurment-object";
+ }
+ leaf time {
+ type yang-types:date-and-time;
+
+ description
+ "recorded time for the maximum value";
+ }
+ }
+ container first {
+ description
+ "first value with the recorded time are included for the
+ measurement-object";
+
+ leaf value {
+ type decimal64 {
+ fraction-digits 4;
+ }
+
+ description
+ "first value of the measurement-object";
+ }
+ leaf time {
+ type yang-types:date-and-time;
+
+ description
+ "recorded time for the first value";
+ }
+ }
+ container latest {
+ description
+ "latest value with the recorded time are included for the
+ measurement-object";
+
+ leaf value {
+ type decimal64 {
+ fraction-digits 4;
+ }
+
+ description
+ "latest value of the measurement-object";
+ }
+ leaf time {
+ type yang-types:date-and-time;
+
+ description
+ "recorded time for the latest value";
+ }
+ }
+ leaf-list frequeny-table {
+ type uint32;
+
+ description
+ "frequency-table for the measurment-object are included per bin.
+ The configuration parameters for this frequency-table are defined
+ by bin-count, lower-bound and upper-bound";
+ }
+
+ description
+ "List of transceiver measurement results";
+ }
+ }
+
+ grouping rx-window-measurement-result-grouping{
+ description
+ "Group of measurement reasults for rx window measurements";
+
+ choice object-unit-id {
+ config false;
+ case RU {
+ leaf name{
+ type leafref {
+ path "/hw:hardware/hw:component/hw:name";
+ }
+
+ description
+ "the name of RU in ietf-hardware/component is used
+ when RU is selected as object-unit for the reception window
+ stats.";
+ }
+ leaf count {
+ type uint64;
+ mandatory true;
+
+ description
+ "the number of data packet are counted for the reception
+ window stats per RU.";
+ }
+ }
+
+ case TRANSPORT {
+ list tr-measured-result{
+ leaf name{
+ type leafref{
+ path "/xran-elements:processing-elements/xran-elements:ru-elements/xran-elements:name";
+ }
+
+ description
+ "the name of ru-elements in xran-processing-elements
+ when TRANSPORT is selected as object-unit for the reception
+ window stats.";
+ }
+ leaf count {
+ type uint64;
+ mandatory true;
+
+ description
+ "the number of data packet are counted for the reception
+ window stats.";
+ }
+
+ description
+ "the number of data packet are counted for the reception
+ window stats per TRANSPORT.";
+ }
+ }
+
+ case EAXC_ID {
+ list eaxc-measured-result {
+ leaf eaxc-id{
+ type uint16;
+
+ description
+ "eaxc-id is used
+ when EAXC_ID is selected as object-unit for the reception
+ window stats.
+ EAXC_ID consists of CU-Port-Id, Band-Selector, CC-id and
+ RU-Port-Id to be used in header of C/U-plane data packet.";
+ }
+ leaf count {
+ type uint64;
+ mandatory true;
+
+ description
+ "the number of data packet are counted for the reception
+ window stats.";
+ }
+ leaf transport-name {
+ type leafref{
+ path "/xran-elements:processing-elements/xran-elements:ru-elements/xran-elements:name";
+ }
+
+ description
+ "the name of ru-elements in xran-processing-elements for the
+ transport information corresponding to this eaxc-id";
+ }
+
+ description
+ "the number of data packet are counted for the reception
+ window stats per EAXC-ID.";
+ }
+ }
+
+ description
+ "measurement-result for the reception window stats depends on the
+ configured object-unit, RU, TRANSPORT or EAXC_ID";
+ }
+ }
+
+ container performance-measurement-objects {
+ description
+ "configuration for performance management and measurement-result are
+ included";
+
+ leaf enable-SFTP-upload {
+ type boolean;
+ default false;
+ description
+ "Flag to enable upload of performance measurement result files.";
+ }
+
+ leaf enable-random-file-upload {
+ type boolean;
+ default false;
+ description
+ "Flag to enable upload of performance measurement result files at
+ random within file-upload-interval.";
+ }
+
+ list remote-SFTP-uploads {
+ key remote-SFTP-upload-path;
+ description
+ "SFTP upload can be done to one or more than one SFTP servers";
+
+ leaf remote-SFTP-upload-path {
+ type inet:uri;
+ description
+ "URI specifying the remote location where the files are to uploaded.
+ The following format is possible:
+ sftp://<username>@<host>[:<port>]";
+ }
+
+ choice credentials {
+ description
+ "Type of authentication to use for SFTP upload.";
+
+ case password {
+ container password {
+ presence true;
+ leaf password {
+ type string;
+ mandatory true;
+
+ description
+ "password needed for authentication.";
+ }
+ description
+ "password authentication method in use";
+ }
+ }
+ case certificate {
+ container certificate {
+ presence true;
+ description
+ "certificate authentication method in use";
+ }
+ }
+ }
+ }
+
+ leaf transceiver-measurement-interval {
+ type uint16;
+ description
+ "measurement interval to measure the performance of transceiver
+ measurement objects periodically.";
+ }
+
+ leaf rx-window-measurement-interval {
+ type uint16;
+ description
+ "measurement interval to measure the performance of reception
+ window measurement objects periodically.";
+ }
+
+ leaf notification-interval {
+ type uint16;
+ description
+ "notification interval for the measurement result to be notified
+ periodically.";
+ }
+
+ leaf file-upload-interval {
+ type uint16;
+ description
+ "file upload interval for the measurement result file to be
+ uploaded periodically.";
+ }
+
+ list transceiver-measurement-objects {
+ key "measurement-object";
+ leaf measurement-object {
+ type enumeration {
+ enum RX_POWER {
+ description
+ "Measured Rx input power in mW";
+ }
+ enum TX_POPWER {
+ description
+ "Measured Tx input power in mW.";
+ }
+ enum TX_BIAS_COUNT {
+ description
+ "Internally measured Tx Bias Current in mA";
+ }
+ enum VOLTAGE {
+ description
+ "Internally measured transceiver supply voltage in mV";
+ }
+ enum TEMPERATURE {
+ description
+ "Internally measured optional laser temperature in degrees Celsius.";
+ }
+ }
+ description "Target metric to measure the performance";
+ }
+
+ leaf active {
+ type boolean;
+ default false;
+ description
+ "Enable/disable the performance measurement per Object";
+ }
+
+ leaf-list report-info {
+ type enumeration {
+ enum MAXIMUM {
+ description
+ "to report maximum value and its recorded time within the
+ measurement-interval for the measurement-object.";
+ }
+ enum MINIMUM {
+ description
+ "to report minimum value and its recorded time within the
+ measurement-interval for the measurement-object.";
+ }
+ enum FIRST {
+ description
+ "to report first value and its recorded time within the
+ measurement-interval for the measurement-object.";
+ }
+ enum LATEST {
+ description
+ "to report latest value and its recorded time within the
+ measurement-interval for the measurement-object.";
+ }
+ enum FREQUENCY_TABLE {
+ description
+ "to report frequency bin table within the
+ measurement-interval for the measurement-object.";
+ }
+ }
+ description "The reporting info to the measurement object.";
+ }
+
+ leaf object-unit {
+ type enumeration {
+ enum PORT_NUMBER {
+ description
+ "unit to measure the performance per object-id";
+ }
+ }
+ mandatory true;
+ description "unit to measure the performance per object-id.";
+ }
+
+ leaf function {
+ type enumeration {
+ enum RAW {
+ description
+ "the value is expressed by real value.";
+ }
+ enum LOG_10 {
+ description
+ "the value is expressed by logarithm with base 10.";
+ }
+ }
+
+ description
+ "the value to be recorded for transceiver-measurement
+ by real value or log 10.";
+ }
+
+ leaf bin-count {
+ type uint32;
+
+ description
+ "the number of bin for the frequency table.";
+ }
+
+ leaf lower-bound {
+ type decimal64 {
+ fraction-digits 4;
+ }
+
+ description
+ "the lower value of the first bin of frequency table.";
+ }
+
+ leaf upper-bound {
+ type decimal64 {
+ fraction-digits 4;
+ }
+
+ description
+ "the upper value of the last bin of frequency table.";
+ }
+ uses transceiver-measurement-result-grouping;
+
+ description
+ "configuration and measurement result for the transceiver-measurement.";
+ }
+
+ list rx-window-measurement-objects {
+ key "measurement-object";
+ leaf measurement-object {
+ type enumeration {
+ enum RX_ON_TIME {
+ description
+ "the number of data packets, received on time within
+ the reception window.";
+ }
+ enum RX_EARLY {
+ description
+ "the number of data packets, received before
+ the reception window.";
+ }
+ enum RX_LATE {
+ description
+ "the number of data packets, received after
+ the reception window.";
+ }
+ enum RX_CORRUPT {
+ description
+ "the number of data packets, which are corrupt or whose header
+ is incorrect.";
+ }
+ enum RX_DUPL {
+ description
+ "the number of data packets, which is duplicated with other packets,
+ received within the measurement period.";
+ }
+ enum RX_TOTAL {
+ description
+ "the total number of received data packets.";
+ }
+ }
+ description
+ "target reception window metric to measure the performance.";
+ }
+
+ leaf active {
+ type boolean;
+ default false;
+ description
+ "Enable/disable the performance measurement per reception window
+ measurement object.";
+ }
+
+ leaf object-unit {
+ type enumeration {
+ enum RU {
+ description
+ "the reception window stats are counted per RU.";
+ }
+ enum TRANSPORT {
+ if-feature GRANULARITY-TRANSPORT-MEASUREMENT;
+ description
+ "the reception window stats are counted per transport flow.
+ When there are multiple transport flows between lls-CU and RU,
+ e.g. multiple sets of lls-cu mac address, ru mac address and
+ vlan-id, the reception window stats per transport flow
+ are counted in this case.
+ This configuration is allowed only when RU supports
+ a feature GRANULARITY-TRANSPORT-MEASUREMENT.";
+ }
+ enum EAXC_ID {
+ if-feature GRANULARITY-EAXC-ID-MEASUREMENT;
+
+ description
+ "the reception window stats are counted per eAxC ID, which is
+ used in the header of receivd data packet.
+ This configuration is allowed only when RU supports
+ a feature GRANULARITY-EAXC-ID-MEASUREMENT.";
+ }
+ }
+ description
+ "unit to measure the performance per object-id.";
+ }
+
+ leaf report-info {
+ type enumeration {
+ enum COUNT {
+ description
+ "the number of data packet are counted for the reception
+ window stats.";
+ }
+ }
+ description
+ "The reporting info to the measurement object.";
+ }
+
+ uses rx-window-measurement-result-grouping;
+
+ description
+ "configuration and measurement result for the reception window stats";
+ }
+ }
+
+ notification measurement-result-stats {
+ list transceiver-stats {
+ key "measurement-object";
+ leaf measurement-object {
+ type leafref {
+ path "/performance-measurement-objects/transceiver-measurement-objects/measurement-object";
+ }
+
+ description
+ "measurement-object for the transceiver-measurement";
+ }
+
+ uses start-and-end-time;
+ uses transceiver-measurement-result-grouping;
+
+ description
+ "measurement result of transceiver-measurement per measurement-object";
+ }
+
+ list rx-window-stats {
+ key "measurement-object";
+ leaf measurement-object {
+ type leafref {
+ path "/performance-measurement-objects/rx-window-measurement-objects/measurement-object";
+ }
+
+ description
+ "measurement-object for the reception window measurement";
+ }
+ uses start-and-end-time;
+ uses rx-window-measurement-result-grouping;
+
+ description
+ "measurement result for the reception window measurement per
+ measurement-object";
+
+ }
+
+ description
+ "notification may contain measurement result for transceiver-stats
+ and/or rx-window-stats";
+ }
+}
--- /dev/null
+module xran-processing-element {
+ yang-version 1.1;
+ namespace "urn:xran:processing-element:1.0";
+ prefix "xran-elements";
+
+ import ietf-yang-types {
+ prefix yang;
+ }
+
+ import ietf-inet-types {
+ prefix "inet";
+ }
+
+ import ietf-interfaces {
+ prefix "if";
+ }
+
+ import ietf-ip {
+ prefix "ip";
+ }
+
+ import xran-interfaces {
+ prefix "xran-int";
+ }
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the YANG definitions for mapping of transport flows to
+ processing elements. Three options are supported:
+ i) virtual MAC based mapping
+ ii) MAC addrress + VLAN-ID based mapping
+ iii) UDP/IP based mapping
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ identity XRAN-INTERFACE-TYPE {
+ base if:interface-type;
+ description
+ "This identity is used as a base for all interface types
+ defined by xRAN.";
+ }
+
+ identity ALIASMAC-INTERFACE {
+ base XRAN-INTERFACE-TYPE;
+ description
+ "Identity type for alias MAC based CU plane interface,
+ whwere multiple MAC addresses are used on the same Ethernet interface. ";
+ }
+
+ identity ETH-INTERFACE {
+ base XRAN-INTERFACE-TYPE;
+ description
+ "identity type for ethernet plus vlan based CU plane interface. ";
+ }
+
+ identity UDPIP-INTERFACE {
+ base XRAN-INTERFACE-TYPE;
+ description
+ "identity type for UDP/IP based CU plane interface. ";
+ }
+
+ container processing-elements {
+ description
+ "a model defining the mapping between transport flows and arbitrary
+ xRAN processing elements. A processing element may be then defined for
+ handling connectivity or delay procedures, or defined with a corresponding
+ eaxcid for CU plane operations";
+ leaf transport-session-type {
+ type identityref {
+ base XRAN-INTERFACE-TYPE;
+ }
+ description
+ "the type of transport session used for identifying different processing
+ elements";
+ }
+ list ru-elements {
+ key "name";
+ description
+ "the list of transport definitions for each processing element";
+ leaf name {
+ type string {
+ length "1..255";
+ }
+ description
+ "A name that is unique across the RU that identifies a processing
+ element instance.
+
+ This name may be used in fault management to refer to a fault source
+ or affected object";
+ }
+ container transport-flow {
+ description
+ "container for the transport-flow used for CU plane";
+ leaf interface-name {
+ type leafref {
+ path "/if:interfaces/if:interface/if:name";
+ }
+ description "the interface name ";
+ }
+ container aliasmac-flow {
+ when "derived-from(../../../transport-session-type, 'ALIASMAC-INTERFACE')";
+ if-feature xran-int:ALIASMAC-BASED-CU-PLANE;
+ description "leafs for virtual mac type data flows";
+ leaf ru-aliasmac-address {
+ type leafref {
+ path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/xran-int:alias-macs";
+ }
+ config false;
+ mandatory true;
+ description
+ "RU's alias MAC address used for alias MAC based flow";
+ }
+ leaf vlan-id {
+ type leafref {
+ path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/xran-int:vlan-id";
+ }
+ description
+ "RU's VLAN-ID used for alias MAC based flow";
+ }
+ leaf llscu-mac-address {
+ type yang:mac-address;
+ mandatory true;
+ description
+ "lls-CU's MAC address used for alias MAC based flow";
+ }
+ }
+ container eth-flow {
+ when "derived-from(../../../transport-session-type, 'ETH-INTERFACE')";
+ description "leafs for mac + vlan-id type data flows";
+ leaf ru-mac-address {
+ type leafref {
+ path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/xran-int:mac-address";
+ }
+ mandatory true;
+ description
+ "RU's MAC address used for Ethernet based flow";
+ }
+ leaf vlan-id {
+ type leafref {
+ path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/xran-int:vlan-id";
+ }
+ mandatory true;
+ description
+ "RU's VLAN-ID used for Ethernet based flow";
+ }
+ leaf llscu-mac-address {
+ type yang:mac-address;
+ mandatory true;
+ description
+ "lls-CU's MAC address used for alias MAC based flow";
+ }
+ }
+ container udpip-flow {
+ when "derived-from(../../../transport-session-type, 'UDPIP-INTERFACE')";
+ if-feature xran-int:UDPIP-BASED-CU-PLANE;
+ description "leafs for UDP/IP type data flows";
+ choice address {
+ leaf ru-ipv4-address {
+ type leafref {
+ path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/ip:ipv4/ip:address/ip:ip";
+ }
+ description "RU's IPv4 address";
+ }
+ leaf ru-ipv6-address {
+ type leafref {
+ path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/ip:ipv6/ip:address/ip:ip";
+ }
+ description "RU's IPv6 address";
+ }
+ mandatory true;
+ description "choice of RU IPv4 or IPv6 address";
+ }
+ leaf llscu-ip-address {
+ type inet:ip-address;
+ mandatory true;
+ description "lls-CU's IPv address";
+ }
+ leaf ru-ephemeral-udp-port {
+ type inet:port-number;
+ mandatory true;
+ description
+ "ephemeral port used by RU";
+ }
+ leaf llscu-ephemeral-udp-port {
+ type inet:port-number;
+ mandatory true;
+ description
+ "ephemeral port used by lls-CU";
+ }
+ leaf destination-udp {
+ type inet:port-number;
+ mandatory true;
+ description "the well known UDP port number used by eCPRI";
+ // fixme - add in a default when allocated by IANA
+ }
+ }
+ }
+ }
+ }
+}
--- /dev/null
+module xran-software-management {
+ yang-version 1.1;
+ namespace "urn:xran:software-management:1.0";
+ prefix xran-swm;
+
+ import ietf-inet-types {
+ prefix "inet";
+ revision-date 2013-07-15;
+ }
+
+ import ietf-hardware {
+ prefix "hw";
+ }
+
+ import xran-hardware {
+ prefix "xran-hw";
+ }
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines operations and configuration for the management of software packages.
+ This module is derived out of opencpe-firmware-mgmt@2014-02-06.yang
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ // typedef statements
+
+ container software-inventory {
+ config false;
+ description
+ "Contains information about each software slot and its content.";
+
+ list software-slot {
+ key name;
+ min-elements 2;
+
+ description
+ "Information about available software-slots and their software.";
+
+ leaf name {
+ type string;
+
+ description
+ "Name of the software package. This shall be unique to identify the software-slot.";
+ }
+
+ leaf status {
+ type enumeration {
+ enum VALID {
+ description
+ "Slot Contains software build considered as proven valid";
+ }
+ enum INVALID {
+ description
+ "software build is not currently used by RU. The software is considered by RU as damaged (e.g. wrong CRC)";
+ }
+ enum EMPTY {
+ description
+ "W slot does not contain software package.";
+ }
+ }
+ config false;
+ mandatory true;
+
+ description "Indicates the status of the software slot";
+ }
+
+ leaf active {
+ type boolean;
+ must "../status = 'VALID'";
+ config false;
+ description
+ "informs if software stored in particular slot is activated at the moment";
+ }
+
+ leaf running {
+ type boolean;
+ must "../status = 'VALID'";
+ config false;
+ description
+ "informs if software stored in particular slot is used at the moment";
+ }
+
+ leaf access {
+ type enumeration {
+ enum READ_ONLY {
+ description
+ "slot intended only for factory software,
+ activation of such software slot means getting back to factory defaults";
+ }
+ enum READ_WRITE {
+ description
+ "slot used for updating software";
+ }
+ }
+ default READ_WRITE;
+ config false;
+
+ description
+ "Indicates the writability of the slot.
+ A Read-Only software slot is one which has a factory installed software-slot";
+ }
+
+ leaf product-code {
+ type leafref {
+ path "/hw:hardware/hw:component/xran-hw:product-code";
+ }
+ config false;
+
+ description "product code provided by the vendor, specific to the product. This is derived from manifest file.";
+ }
+
+ leaf vendor-code {
+ type string {
+ length 1..2;
+ }
+ config false;
+
+ description
+ "Unique code of the vendor. This is derived from manifest file.";
+ }
+
+ leaf build-id {
+ type string;
+ config false;
+
+ description
+ "Identity associated with the software build. This is derived from manifest file.";
+ }
+
+ leaf build-name {
+ type string;
+ config false;
+
+ description
+ "Name of the build. This is derived from manifest file.";
+ }
+
+ leaf build-version {
+ type leafref{
+ path "/hw:hardware/hw:component/hw:software-rev";
+ }
+ description "Version of the software build. This is derived from manifest file.";
+ }
+
+ list files {
+ key "name";
+ config false;
+
+ description "List of all the files present in the software package.";
+
+ leaf name {
+ type string;
+
+ description
+ "Name of the file installed in the slot.";
+ }
+
+ leaf version {
+ type string;
+
+ description
+ "Version of the file installed in the slot";
+ }
+ leaf local-path {
+ type string;
+ mandatory true;
+
+ description
+ "Complete path of the file stored locally";
+ }
+
+ leaf integrity {
+ type enumeration {
+ enum OK {
+ description "OK - indicates that file integrity is correct";
+ }
+ enum NOK {
+ description "NOK - indicates corrupted file";
+ }
+ }
+ config false;
+
+ description
+ "Result of the file integrity check (checksum calculation) during installation.";
+ }
+ }
+ }
+ }
+ // rpc statements
+
+ rpc software-download {
+ description
+ "Rpc needed to perform software download operation.";
+
+ input {
+ leaf remote-file-path {
+ type inet:uri;
+ mandatory true;
+ description
+ "URI of the software image including username.
+ The following format is possible:
+ sftp://<username>@<host>[:<port>]";
+ }
+
+ choice credentials {
+ description
+ "Type of authentication to use for software downloads.";
+
+ case password {
+ container password {
+ presence true;
+ leaf password {
+ type string;
+ mandatory true;
+
+ description
+ "password needed for authentication.";
+ }
+
+ description
+ "password authentication method in use";
+ }
+ }
+ case certificate {
+ container certificate {
+ presence true;
+ description
+ "certificate authentication method in use";
+ }
+ }
+ }
+ }
+ output {
+ leaf status {
+ type enumeration {
+ enum STARTED {
+ description
+ "Operation has been started without error.";
+ }
+ enum FAILED {
+ description
+ "Operation cannot be started because of error, more detailed information can be found in error-message.";
+ }
+ }
+ mandatory true;
+
+ description
+ "Status of the software files download";
+ }
+ leaf error-message {
+ when "../status = 'FAILED'";
+ type string;
+
+ description
+ "Detailed error Message when the status is failed.";
+ }
+
+ leaf notification-timeout {
+ type int32;
+ units seconds;
+ default 30;
+
+ description
+ "Notification timeout is the time NETCONF client shall
+ wait for a 'download-event' notification from RU. If there is no
+ 'download-event' notification received within notification-timeout,
+ NETCONF client shall assume the download timeout/failure, and follow necessary steps.";
+ }
+ }
+ }
+
+ rpc software-install {
+ description
+ "Install a previously downloaded software package.";
+
+ input {
+ leaf slot-name {
+ type leafref {
+ path "/software-inventory/software-slot/name";
+ }
+ must "/software-inventory/software-slot[name = current()][active = 'false' and running = 'false']" {
+ error-message "software-install may be requested only against active::false and running::false slot!";
+ }
+ mandatory true;
+
+ description
+ "software-slot to which the software shall be installed to.";
+ }
+
+ leaf-list file-names {
+ type string;
+
+ description
+ "Names of the files within software package to be installed";
+ }
+ }
+ output {
+ leaf status {
+ type enumeration {
+ enum STARTED {
+ description
+ "Operation has been started without error.";
+ }
+ enum FAILED {
+ description
+ "Operation cannot be started because of error, more detailed information can be found in error-message.";
+ }
+ }
+ mandatory true;
+
+ description
+ "Status of the software package install.";
+ }
+ leaf error-message {
+ when "../status = 'FAILED'";
+ type string;
+
+ description
+ "Detailed error Message when the status is failed.";
+ }
+ }
+ }
+
+ rpc software-activate {
+ description
+ "Activate a previously installed software.";
+ input {
+ leaf slot-name {
+ type leafref {
+ path "/software-inventory/software-slot/name";
+ }
+ mandatory true;
+
+ description
+ "Slot name on which software has to be activated.";
+ }
+ }
+ output {
+ leaf status {
+ type enumeration {
+ enum STARTED {
+ description
+ "Operation has been started without error.";
+ }
+ enum FAILED {
+ description
+ "Operation cannot be started because of error, more detailed information can be found in error-message.";
+ }
+ }
+ mandatory true;
+
+ description
+ "Status of the software files activation";
+ }
+ leaf error-message {
+ when "../status = 'FAILED'";
+ type string;
+
+ description
+ "Detailed error Message when the status is failed.";
+ }
+
+ leaf notification-timeout {
+ type int32;
+ units seconds;
+ default 30;
+
+ description
+ "Timeout on client waiting for the activate event";
+ }
+ }
+ }
+
+ // notification definitions
+ notification download-event {
+ description "Notification event structure for download completion";
+ leaf file-name {
+ type string;
+ mandatory true;
+
+ description
+ "File name of downloaded software package";
+ }
+
+ leaf status {
+ type enumeration {
+ enum COMPLETED {
+ description
+ "Operation completed succesfully";
+ }
+ enum AUTHENTICATION_ERROR {
+ description "source available, wrong credentials";
+ }
+ enum PROTOCOL_ERROR {
+ description "SFTP errors";
+ }
+ enum FILE_NOT_FOUND {
+ description "source not available.";
+ }
+ enum APPLICATION_ERROR {
+ description "Application related errors";
+ }
+ enum TIMEOUT {
+ description "Timeout waiting for download";
+ }
+ }
+
+ description
+ "Status of finished operation execution";
+ }
+ leaf error-message {
+ when "../status != 'COMPLETED'";
+ type string;
+
+ description
+ "Detailed description of faulty situation";
+ }
+
+ }
+
+ notification install-event {
+ description "Notification event structure for installation completion";
+ leaf slot-name {
+ type leafref {
+ path "/software-inventory/software-slot/name";
+ }
+
+ description
+ "Name of the slot to which software was installed.";
+ }
+ leaf status {
+ type enumeration {
+ enum COMPLETED {
+ description
+ "Operation completed succesfully";
+ }
+ enum FILE_ERROR {
+ description "operation on the file resulted in in error, disk failure, not enough disk space,
+ incompatible file format";
+ }
+ enum INTEGRITY_ERROR {
+ description "file is corrupted";
+ }
+ enum APPLICATION_ERROR {
+ description "operation failed due to internal reason";
+ }
+ }
+
+ description
+ "Status of finished operation execution";
+ }
+ leaf error-message {
+ when "../status != 'COMPLETED'";
+ type string;
+
+ description
+ "Detailed description of faulty situation";
+ }
+ }
+
+ notification activation-event {
+ description "Notification event structure for activation completion";
+ leaf slot-name {
+ type leafref {
+ path "/software-inventory/software-slot/name";
+ }
+
+ description
+ "Name of the slot which was activated";
+ }
+
+ leaf status {
+ type enumeration {
+ enum COMPLETED {
+ description
+ "Operation completed succesfully";
+ }
+ enum APPLICATION_ERROR {
+ description
+ "Operation finished with error, more details can by found in error-message";
+ }
+ }
+
+ description
+ "Status of finished operation execution";
+ }
+ leaf return-code {
+ type uint8;
+
+ description
+ "status code return when the software is tried to activate";
+ }
+ leaf error-message {
+ when "../status != 'COMPLETED'";
+ type string;
+
+ description
+ "Detailed description of faulty situation";
+ }
+ }
+}
--- /dev/null
+module xran-supervision {\r
+ yang-version 1.1;\r
+ namespace "urn:xran:supervision:1.0";\r
+ prefix "xran-supervision";\r
+\r
+ import ietf-yang-types {\r
+ prefix yang;\r
+ }\r
+\r
+ organization "xRAN Forum";\r
+\r
+ contact\r
+ "www.xran.org";\r
+\r
+ description\r
+ "This module defines the configuration data and supervision RPCs that are\r
+ used by the NETCONF client and NETCONF server to detect loss of NETCONF\r
+ connectivity.\r
+\r
+ Copyright 2018 the xRAN Forum.\r
+\r
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\r
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ POSSIBILITY OF SUCH DAMAGE.\r
+\r
+ Redistribution and use in source and binary forms, with or without\r
+ modification, are permitted provided that the following conditions are met:\r
+\r
+ * Redistributions of source code must retain the above copyright notice,\r
+ this list of conditions and the above disclaimer.\r
+ * Redistributions in binary form must reproduce the above copyright notice,\r
+ this list of conditions and the above disclaimer in the documentation\r
+ and/or other materials provided with the distribution.\r
+ * Neither the Members of the xRAN Forum nor the names of its\r
+ contributors may be used to endorse or promote products derived from\r
+ this software without specific prior written permission.";\r
+\r
+ revision "2018-07-20" {\r
+ description\r
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.\r
+\r
+ This version of the model supports v01.00 of the corrsponding xRAN\r
+ M-Plane Specification.";\r
+ reference "XRAN-FH.MP.0-v01.00";\r
+ }\r
+\r
+ rpc supervision-watchdog-reset {\r
+ description\r
+ "rpc to reset the watchdog timer";\r
+ input {\r
+\r
+ leaf supervision-notification-interval {\r
+ type uint16;\r
+ units seconds;\r
+ default 60;\r
+ description\r
+ "The interval in seconds at which supervision notifications are sent.\r
+ If not specified the default value of 60 seconds shall apply.";\r
+ }\r
+ leaf guard-timer-overhead {\r
+ type uint16;\r
+ units seconds;\r
+ default 10;\r
+ description\r
+ "This is overhead added to the supervision timer used to calculate the\r
+ supervision wathcdog timer. i.e.,\r
+\r
+ supervision timer = notification timer + guard-timer-overhead\r
+\r
+ If not specified the default value of 10 seconds shall apply.\r
+\r
+ Failure to send this rpc again within the timeout sets the radio into\r
+ 'loss of supervision' state.\r
+\r
+ NOTE - The supervision timer MUST not be less that the confimed\r
+ timeout timer (when the feature is supported).\r
+\r
+ This type of constraint (using an RPCs input) cannot be formally\r
+ expressed in YANG.";\r
+ }\r
+ }\r
+ }\r
+\r
+ notification supervision-notification {\r
+ description\r
+ "Notification to indicate that NETCONF management interface is up\r
+ and also indicate the values of the timers for this NETCONF session";\r
+\r
+ leaf next-update-at {\r
+ type yang:date-and-time;\r
+ description\r
+ "Indicates the time when the next supervision notification is expected.";\r
+ }\r
+ }\r
+}\r
--- /dev/null
+module xran-sync {
+ yang-version 1.1;
+ namespace "urn:xran:sync:1.0";
+ prefix "xran-sync";
+
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines synchronization mechanism for the xRAN Radio Unit.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ typedef geographic-coordinate-degree {
+ type decimal64 {
+ fraction-digits 8;
+ }
+ description
+ "Decimal degree (DD) used to express latitude and longitude
+ geographic coordinates.";
+ }
+
+ feature GNSS {
+ description
+ "This feature indicates that the RU supports integrated GNSS functionality.";
+ }
+
+ container sync {
+ description
+ "Main containter for sync related parameters";
+
+ container sync-status {
+ config false;
+
+ description
+ "Object of this class provides synchronization state of the module.";
+
+ leaf sync-state {
+ type enumeration {
+ enum LOCKED {
+ description
+ "RU is in the locked mode, as defined in ITU-T G.810";
+ }
+ enum HOLDOVER {
+ description
+ "RU clock is in holdover mode";
+ }
+ enum FREERUN {
+ description
+ "RU clock isn’t locked to an input reference, and is not in the holdover mode";
+ }
+ }
+ mandatory true;
+ description
+ "State of DU synchronization";
+ }
+
+ list supported-reference-types {
+ key item;
+ min-elements 1;
+ description
+ "Type of a synchronization supported source.";
+ leaf item {
+ type enumeration {
+ enum GNSS {
+ description
+ "GPS can be taken as a synchronization source";
+ }
+ enum PTP {
+ description
+ "Precision Time Protocol can be taken as a synchronization source";
+ }
+ enum SYNCE {
+ description
+ "Synchronous Ethernet can be taken as a synchronization source";
+ }
+ }
+ mandatory true;
+
+ description
+ "supported reference-type";
+ }
+ }
+ }
+
+ container sync-capability {
+ config false;
+
+ description
+ "Object of this class provides synchronization capabilities of the module.";
+
+ leaf sync-t-tsc {
+ type enumeration {
+ enum STANDARD {
+ description
+ "Standard accuracy for synchronization is supported by the device";
+ }
+ enum ENCHANCED {
+ description
+ "Enchanced accuracy for synchronization is supported by the device";
+ }
+ }
+ mandatory true;
+ description
+ "This will provide information about T-TSC capability";
+
+ reference "T-TSC: ITU-T G.8275.1/Y.1369.1";
+ }
+ }
+
+ container ptp-config {
+ description
+ "This MO defines configuration of Precise Time Protocol.";
+ leaf domain-number {
+ type uint8;
+ default 24;
+ description
+ "This parameter indicates Domain Number for PTP announce messages.";
+ }
+
+ leaf multicast-mac-address {
+ type enumeration {
+ enum FORWARDABLE {
+ description
+ "means, that PTP shall use 01-80-C2-00-00-0E destination MAC address";
+ }
+ enum NONFORWARDABLE {
+ description
+ "means, that PTP shall use 01-1B-19-00-00-00 destination MAC address";
+ }
+ }
+ default FORWARDABLE;
+ description
+ "The parameter defines destination MAC address, used by the DU in the egress PTP messages.";
+ }
+
+ list accepted-clock-classes {
+ key clock-classes;
+ leaf clock-classes {
+ type uint8;
+ description
+ "PTP Clock Class accepted by the RU";
+ }
+ description
+ "Contains list of PTP acceptable Clock Classes, sorted in the descending order.";
+ }
+
+ leaf delay-asymmetry {
+ type int16 {
+ range -10000..10000;
+ }
+ default 0;
+ description
+ "Defines static phase error in the recovered PTP timing signal to be compensated at the RU.
+ The error is defined in units of nanoseconds in the range ±10 000 ns.";
+ }
+ }
+
+ container ptp-status {
+ description
+ "ptp status container";
+ leaf reporting-period {
+ type uint8;
+ default 10;
+ description
+ "This parameter defines minimum period in seconds between reports,
+ sent by the NETCONF Client, for parameters in this container.";
+ }
+ leaf lock-state {
+ type enumeration {
+ enum LOCKED {
+ description
+ "The integrated ordinary clock is synchronizing to the reference, recovered from PTP flow";
+ }
+ enum UNLOCKED {
+ description
+ "The integrated ordinary clock is not synchronizing to the reference, recovered from PTP flow";
+ }
+ }
+ config false;
+ description
+ "This parameter indicates, whether the integrated ordinary clock is
+ synchronizing to the reference, recovered from PTP signal.
+ The exact definition when to indicate locked or unlocked is up to specific
+ implementation.";
+ }
+
+ leaf clock-class {
+ type uint8;
+ config false;
+ description
+ "This parameter contains the clock class of the clock, controlled by the RU";
+ }
+
+ leaf clock-identity {
+ type string {
+ length 18;
+ pattern "0[xX][0-9a-fA-F]";
+ }
+ config false;
+ description
+ "This parameter contains identity of the clock,
+ according to IEEE 1588-2008 defintion, controlled by the RU.
+ The string shall be formatted as an 8-octet hex value with the “0x” prefix.";
+ }
+
+ leaf partial-timing-supported {
+ type boolean;
+
+ description
+ "Provides information wheter G.8275.2 (partial timing support from network) is supported.";
+ }
+
+ list sources {
+ key local-port-number;
+ config false;
+
+ description
+ "Synchronisation sources";
+
+ leaf local-port-number {
+ type uint16;
+ // fixme - change to a leafref once interface design is agreed
+ description
+ "This is reference to portNumber of ExternalEthernetPort to identify the port,
+ where the PTP signal is located.";
+ }
+
+ leaf state {
+ type enumeration {
+ enum PARENT {
+ description
+ "Indicates that this source is the current master clock, i.e. the clock,
+ which the clock, controlled by the Netconf Server, is synchronized to";
+ }
+ enum OK {
+ description
+ "Indicates that this source is an alternate master, which the clock,
+ controlled by the Netconf Server, can potentially synchronize to,
+ i.e. clock class and priority, announced by the master clock is lower,
+ compared to those of the clock, controlled by the Netconf Server,
+ and and the clock class is accepted";
+ }
+ enum NOK {
+ description
+ "Indicates that this source is an alternate master, which the clock,
+ controlled by the Netconf Server, has an operational connection to,
+ but the class or priority of the master clock is higher or equal
+ to those of the clock, controlled by the Netconf Server,
+ or the clock class is not accepted";
+ }
+ enum DISABLED {
+ description
+ "Indicates that this source is an alternate master, which the clock,
+ controlled by the Netconf Server, has no operational connection to";
+ }
+ }
+ description
+ "This parameter indicates status of the PTP source";
+ }
+
+ leaf two-step-flag {
+ type boolean;
+ description
+ "This parameter reflects status of the twoStepFlag attribute in Sync messages,
+ received from the PTP source.";
+ }
+
+ leaf leap61 {
+ type boolean;
+ description
+ "This parameter reflects status of the leap61 flag in Announce messages,
+ received from the PTP source.
+ When true, the last minute of the current UTC day contains 61 seconds.";
+ }
+
+ leaf leap59 {
+ type boolean;
+ description
+ "This parameter reflects status of the leap59 flag in Announce messages,
+ received from the PTP source.
+ When true, the last minute of the current UTC day contains 59 seconds.";
+ }
+
+ leaf current-utc-offset-valid {
+ type boolean;
+ description
+ "This parameter reflects status of the currentUtcOffsetValid flag in
+ Announce messages, received from the PTP source.
+ When true, the current UTC offset is valid.";
+ }
+
+ leaf ptp-timescale {
+ type boolean;
+ description
+ "This parameter reflects status of the ptpTimescale flag in Announce
+ messages, received from the PTP source.
+
+ When set, the clock timescale of the grandmaster clock is PTP;
+ otherwise, the timescale is ARB (arbitrary)";
+ }
+
+ leaf time-traceable {
+ type boolean;
+ description
+ "This parameter reflects status of the timeTraceable flag in Announce
+ messages, received from the PTP source.
+
+ When true, the timescale and the currentUtcOffset are traceable to a
+ primary reference";
+ }
+
+ leaf frequency-traceable {
+ type boolean;
+ description
+ "This parameter reflects status of the frequencyTraceable flag in
+ Announce messages, received from the PTP source.
+
+ When true, the frequency determining the timescale is traceable to a
+ primary reference";
+ }
+
+ leaf source-clock-identity {
+ type string {
+ length 18;
+ pattern "0[xX][0-9a-fA-F]";
+ }
+ description
+ "This parameter reflects value of the sourceClockIdentity attribute in
+ Announce messages, received from the PTP source.
+
+ The string shall be formatted as an 8-octet hex value with the “0x”
+ prefix.";
+ }
+
+ leaf source-port-number {
+ type uint16;
+ description
+ "This parameter reflects value of the sourcePortNumber attribute in
+ Announce messages, received from the PTP source.";
+ }
+
+ leaf current-utc-offset {
+ type int16;
+ description
+ "The offset between TAI and UTC when the epoch of the PTP system is
+ the PTP epoch, i.e., when ptp-timescale is TRUE; otherwise, the value
+ has no meaning";
+ }
+
+ leaf priority1 {
+ type int8;
+ description
+ "This parameter reflects value of the priority1 attribute in Announce
+ messages, received from the PTP source.";
+ }
+
+ leaf clock-class {
+ type int8;
+ description
+ "This parameter reflects value of the clockClass attribute in
+ Announce messages, received from the PTP source.";
+ }
+
+ leaf clock-accuracy {
+ type int8;
+ description
+ "This parameter reflects value of the clockAccuracy attribute in
+ Announce messages, received from the PTP source.";
+ }
+
+ leaf offset-scaled-log-variance {
+ type uint16;
+ description
+ "This parameter reflects value of the offsetScaledLogVariance
+ attribute in Announce messages, received from the PTP source.";
+ }
+
+ leaf priority2 {
+ type uint8;
+ description
+ "This parameter reflects value of the priority2 attribute in Announce
+ messages, received from the PTP source.";
+ }
+
+ leaf grandmaster-clock-identity {
+ type string;
+ description
+ "This parameter reflects value of the grandmasterClockIdentity
+ attribute in Announce messages, received from the PTP source.
+
+ The string shall be formatted as an 8-octet hex value with the “0x”
+ prefix.";
+ }
+
+ leaf steps-removed {
+ type uint16;
+ description
+ "This parameter reflects value of the stepsRemoved attribute in
+ Announce messages, received from the PTP source.
+
+ It indicates the number of communication paths traversed
+ between the local clock and the grandmaster clock.";
+ }
+
+ leaf time-source {
+ type uint8;
+ description
+ "This parameter reflects value of the timeSource attribute in
+ Announce messages, received from the PTP source.";
+ }
+ }
+ }
+
+ container synce-status {
+ description
+ "SyncE status container";
+
+ leaf reporting-period {
+ type uint8;
+ default 10;
+ description
+ "This parameter defines minimum period in seconds between reports,
+ sent by the NETCONF client, for parameters in this container.";
+ }
+
+ leaf lock-state {
+ type enumeration {
+ enum LOCKED {
+ description
+ "The integrated ordinary clock is synchronizing to the reference, recovered from SyncE signal";
+ }
+ enum UNLOCKED {
+ description
+ "The integrated ordinary clock is not synchronizing to the reference, recovered from SyncE signal";
+ }
+ }
+ config false;
+ description
+ "This parameter indicates, whether the integrated ordinary clock is
+ synchronizing to the reference, recovered from SyncE signal.
+
+ The exact definition when to indicate locked or unlocked is up to
+ specific implementation.";
+ }
+
+ list sources {
+ key local-port-number;
+ config false;
+ leaf local-port-number {
+ type uint16;
+ //fixme - change to leafref once interfaces ae agreed
+ description
+ "This is reference to portNumber of ExternalEthernetPort to identify
+ the port, where the SyncE signal is located.";
+ }
+
+ leaf state {
+ type enumeration {
+ enum PARENT {
+ description
+ "Indicates that this source is the current master clock, i.e. the clock,
+ which the clock, controlled by the Netconf Server, is synchronized to";
+ }
+ enum OK {
+ description
+ "Indicates that this source is an alternate master, which the clock,
+ controlled by the Netconf Server, can potentially synchronize to,
+ i.e. clock class and priority, announced by the master clock is lower,
+ compared to those of the clock, controlled by the Netconf Server,
+ and and the clock class is accepted";
+ }
+ enum NOK {
+ description
+ "Indicates that this source is an alternate master, which the clock,
+ controlled by the Netconf Server, has an operational connection to,
+ but the class or priority of the master clock is higher or equal
+ to those of the clock, controlled by the Netconf Server,
+ or the clock class is not accepted";
+ }
+ enum DISABLED {
+ description
+ "Indicates that this source is an alternate master, which the clock,
+ controlled by the Netconf Server, has no operational connection to";
+ }
+ }
+ description
+ "This parameter indicates status of the SyncE source";
+ }
+
+ leaf quality-level {
+ type uint8 {
+ range 0..15;
+ }
+ description
+ "This parameter contains value of the SSM clock quality level,
+ received in SSM messages from the SyncE source.";
+ }
+ min-elements 1;
+ description
+ "This parameter contains characteristics of SyncE sources of the clock, controlled by the RU.";
+ }
+ }
+ container gnss-state {
+ if-feature GNSS;
+ config false;
+ description
+ "Provides information about state of gps receiver";
+ leaf name {
+ type string {
+ length "1..255";
+ }
+ description
+ "A name that is unique across the RU that identifies a GNSS instance.
+ This name may be used in fault management to refer to a
+ fault source or affected object";
+ }
+ leaf gnss-status {
+ type enumeration {
+ enum SYNCHRONIZED {
+ description "GNSS functionality is synchronized";
+ }
+ enum ACQUIRING-SYNC {
+ description "GNSS functionality is acquiring sync";
+ }
+ enum ANTENNA-DISCONNECTED {
+ description "GNSS functionality has its antenna disconnected";
+ }
+ enum BOOTING {
+ description "GNSS functionality is booting";
+ }
+ enum ANTENNA-SHORT-CIRCUIT {
+ description "GNSS functionality has an antenna short circuit";
+ }
+ }
+ description "when available, indicates the status of the gnss receiver.";
+ }
+ container gnss-data {
+ when "../gnss-status='SYNCHRONIZED'";
+ description
+ "GPS data contained";
+ leaf satellites-tracked {
+ type uint8;
+ description "Number of satellites tracked";
+ }
+ container location {
+ description
+ "Containes information about geo location";
+ leaf altitude {
+ type int64;
+ units millimeter;
+ description
+ "Distance above the sea level.";
+ }
+ leaf latitude {
+ type geographic-coordinate-degree {
+ range "-90..90";
+ }
+ description
+ "Relative position north or south on the Earth's surface.";
+ }
+ leaf longitude {
+ type geographic-coordinate-degree {
+ range "-180..180";
+ }
+ description
+ "Angular distance east or west on the Earth's surface.";
+ }
+ }
+ }
+ }
+ }
+
+ //notification statement
+ notification synchronization-state-change {
+ description
+ "Notification used to inform about synchronization state change";
+
+ leaf sync-state {
+ type leafref {
+ path "/sync/sync-status/sync-state";
+ }
+ description
+ "State of RU synchronization is notified at state change";
+ }
+ }
+
+ notification ptp-state-change {
+ description
+ "Notification used to inform about ptp synchronization state change";
+
+ leaf ptp-state{
+ type leafref{
+ path "/sync/ptp-status/lock-state";
+ }
+ description
+ "ptp-state-change notification is signalled from RU at state change";
+ }
+ }
+ notification synce-state-change {
+ description
+ "Notification used to inform about synce synchronization state change";
+
+ leaf synce-state{
+ type leafref{
+ path "/sync/synce-status/lock-state";
+ }
+ description
+ "synce-state change notification is signalled from RU at state change";
+ }
+ }
+ notification gnss-state-change {
+ if-feature GNSS;
+ description
+ "Notification used to inform about gnss synchronization state change";
+
+ leaf gnss-state{
+ type leafref{
+ path "/sync/gnss-state/gnss-status";
+ }
+ description
+ "gnss-state-change notification is signalled from RU at state change";
+ }
+ }
+
+}
--- /dev/null
+module xran-transceiver {
+ yang-version 1.1;
+ namespace "urn:xran:transceiver:1.0";
+ prefix "xran-transceiver";
+
+ import xran-interfaces {
+ prefix "xran-int";
+ }
+
+ import ietf-interfaces {
+ prefix "if";
+ }
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the operational state data for SFP transceivers used in
+ an xRAN Radio Unit.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ container port-transceivers {
+ description
+ "Container for Port transceiver information.
+ Leaf nodes providing parameters status and diagnostic
+ information for pluggable transceiver module (like SFP,
+ SFP+, SFP28)";
+ list port-transceiver-data {
+ key "interface-name port-number";
+ description "data recovered from port transceivers";
+ leaf interface-name {
+ type leafref {
+ path "/if:interfaces/if:interface/if:name";
+ }
+ description "Name of interface";
+ }
+ leaf port-number {
+ type leafref {
+ path "/if:interfaces/if:interface[if:name = current()/../interface-name]/xran-int:port-reference/xran-int:xran-port-number";
+ }
+ description
+ "A number which identifies a port. In case of SFP/SFP+
+ port, port number value is 0 to N-1 where N is number of ports
+ in the device. Numbers 0 to N-1 are assigned to ports in order
+ following order of labels on the device (labels for ports are
+ not necessarily numbers starting from zero)";
+ }
+
+ leaf name {
+ type string {
+ length "1..255";
+ }
+ description
+ "A name that is unique across the RU that identifies a transceiver instance.
+ This name may be used in fault management to refer to a fault source
+ or affected object";
+ }
+
+ leaf present {
+ type boolean;
+ config false;
+ mandatory true;
+ description
+ "Indicates if pluggable transceiver module is present.";
+ }
+
+ leaf vendor-id {
+ type string {
+ length 1..16;
+ }
+ config false;
+ description
+ "Name of the transciever vendor Full name of transceiver vendor,
+ that contains ASCII characters, left-aligned with
+ any padding on the right with ASCII spaces (20h), or ASCII nul
+ (00h) removed, and ASCII less-than (3Ch) replaced with ASCII
+ open-brace (7Bh) and ASCII more-than (3Eh) replaced with ASCII
+ close-brace (7Dh).
+
+ Optional node included when the NETCONF Server has determined
+ the vendor ID.";
+ }
+
+ leaf vendor-part {
+ type string {
+ length 1..16;
+ }
+ config false;
+ description
+ "Transceiver vendors part number, that contains ASCII characters,
+ left-aligned with any padding on the right with ASCII spaces
+ (20h), or ASCII nul (00h) removed, and ASCII less-than (3Ch)
+ replaced with ASCII open-brace (7Bh) and ASCII more-than (3Eh)
+ replaced with ASCII close-brace (7Dh).
+
+ Optional node included when the NETCONF Server has determined
+ the vendor part number.";
+ }
+
+ leaf vendor-rev {
+ type string {
+ length 1..2;
+ }
+ config false;
+ description
+ "Transceiver vendors revision number. 2-octet field that
+ contains ASCII characters.
+
+ Optional node included when the NETCONF Server has determined
+ the vendor revision number";
+ }
+
+ leaf serial-no {
+ type string {
+ length 1..16;
+ }
+ config false;
+ description
+ "Transceiver serial number encoded using ASCII characters,
+ left-aligned with any padding on the right with ASCII spaces
+ (20h), or ASCII nul (00h) removed, and ASCII less-than (3Ch)
+ replaced with ASCII open-brace (7Bh) and ASCII more-than (3Eh)
+ replaced with ASCII close-brace (7Dh).
+
+ Optional node included when the NETCONF Server has determined
+ the serial number.";
+ }
+
+ leaf SFF8472-compliance-code {
+ type enumeration {
+ enum diagnostics-undefined {
+ description "undefined compliance code";
+ }
+ enum rev9.3-diagnostics {
+ description "diagnostics published 08-01-02";
+ }
+ enum rev9.5-diagnostics{
+ description "diagnostics published 06-01-04";
+ }
+ enum rev10.2-diagnostics{
+ description "diagnostics published 06-01-07";
+ }
+ enum rev11.0-diagnostics{
+ description "diagnostics published 05-21-10";
+ }
+ enum rev11.3-diagnostics{
+ description "diagnostics published 06-11-13";
+ }
+ enum rev11.4-diagnostics{
+ description "diagnostics published 07-24-14";
+ }
+ enum rev12.0-diagnostics{
+ description "diagnostics published 08-28-14";
+ }
+ }
+ config false;
+ description
+ "Indication of which feature set(s) are
+ implemented in the transceiver from Byte 94 of address A0h
+ https://ta.snia.org/higherlogic/ws/public/download/294/SFF-8472.PDF";
+
+ // FIXME is this optional or mandatory?
+ reference "https://ta.snia.org/higherlogic/ws/public/download/294/SFF-8472.PDF";
+ }
+
+ leaf connector-type {
+ type enumeration {
+ enum unknown {
+ description "encoded as 00h in Table 4-3 of SFF-8024";
+ }
+ enum subscrber-connector {
+ description "encoded as 01h in Table 4-3 of SFF-8024";
+ }
+ enum fiber-jack {
+ description "encoded as 06h in Table 4-3 of SFF-8024";
+ }
+ enum lucent-connector {
+ description "encoded as 07h in Table 4-3 of SFF-8024";
+ }
+ enum mt-rj {
+ description "encoded as 08h in Table 4-3 of SFF-8024";
+ }
+ enum multiple-optical {
+ description "encoded as 09h in Table 4-3 of SFF-8024";
+ }
+ enum sg {
+ description "encoded as 0Ah in Table 4-3 of SFF-8024";
+ }
+ enum optical-pigtail {
+ description "encoded as 0Bh in Table 4-3 of SFF-8024";
+ }
+ enum multi-fiber-parralel-optic-1x12 {
+ description "encoded as 0Ch in Table 4-3 of SFF-8024";
+ }
+ enum multi-fiber-parralel-optic-2x16 {
+ description "encoded as 0Dh in Table 4-3 of SFF-8024";
+ }
+ enum hssdc_2{
+ description "encoded as 20h in Table 4-3 of SFF-8024";
+ }
+ enum copper-pigtail{
+ description "encoded as 21h in Table 4-3 of SFF-8024";
+ }
+ enum rj45{
+ description "encoded as 22h in Table 4-3 of SFF-8024";
+ }
+ enum no-separable-connector{
+ description "encoded as 23h in Table 4-3 of SFF-8024";
+ }
+ enum mxc-2x16{
+ description "encoded as 24h in Table 4-3 of SFF-8024";
+ }
+ }
+ config false;
+ // TOCHECK: Remove any enumerations which are not applicable
+ description
+ "Connector-type indicates the external optical or electrical cable
+ connector provided as the media interface as defined in the connector
+ types derived from table 4-3 in SFF-8024.";
+ // FIXME is this optional or mandatory?
+ reference "https://ta.snia.org/higherlogic/ws/public/document?document_id=944";
+ }
+
+ leaf nominal-bitrate {
+ type uint32;
+ config false;
+ description
+ "Nominal bitrate in Mb/s (10^6 bits per second).
+ If needed actual value is rounded to nearest integer.
+
+ Optional node included when the NETCONF Server has determined
+ the nominal bit rate.";
+ }
+
+ leaf low-bitrate-margin {
+ type uint8;
+ config false;
+ description
+ "Minimum supported bitrate as percentage of nominal bitrate
+ below nominal bitrate.
+
+ Optional node included when the NETCONF Server has determined
+ the low bit rate margin";
+ }
+
+ leaf high-bitrate-margin {
+ type uint8;
+ config false;
+ description
+ "Maximum supported bitrate as percentage of nominal bitrate
+ above nominal bitrate.
+
+ Optional node included when the NETCONF Server has determined
+ the high bitrate margin.";
+ }
+
+ leaf rx-power-type {
+ type enumeration {
+ enum oma {
+ description "oma = optical modulation amplitude";
+ }
+ enum avp{
+ description "avp = average power";
+ }
+ }
+ config false;
+ description
+ "Receieved power measurement type
+ oma = optical modulation amplitude
+ avp = average power";
+ // FIXME is this optional or mandatory?
+ }
+
+ leaf rx-power {
+ type decimal64{
+ fraction-digits 4;
+ }
+ config false;
+ description
+ "Measured RX input power in mW.
+
+ Optional node included when the NETCONF Server has determined
+ the measured RX power.";
+ }
+
+ leaf tx-power {
+ type decimal64{
+ fraction-digits 4;
+ }
+ config false;
+ description
+ "Measured coupled TX output power in mW.
+
+ Optional node included when the NETCONF Server has determined
+ the measured coupled TX power.";
+ }
+
+ leaf tx-bias-current {
+ type decimal64{
+ fraction-digits 4;
+ }
+ config false;
+ description
+ "Measured transmitter laser bias current in mA.
+
+ Optional node included when the NETCONF Server has determined
+ the tx bias current.";
+ }
+
+ leaf voltage {
+ type decimal64{
+ fraction-digits 4;
+ }
+ config false;
+ description
+ "Internally measured supply voltage in mV.
+
+ Optional node included when the NETCONF Server has determined
+ the internally measured voltage.";
+ }
+
+ leaf temperature {
+ type decimal64 {
+ fraction-digits 4;
+ }
+ config false;
+ description
+ "Internally measured module temperature in degrees Celcius.";
+ // FIXME is this optional or mandatory?
+ }
+ }
+ }
+}
--- /dev/null
+module xran-troubleshooting {
+ yang-version 1.1;
+ namespace "urn:xran:troubleshooting:1.0";
+ prefix "xran-trblsht";
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the operations for the troubleshooting logs on the RU.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+
+ grouping troubleshooting-status-grouping {
+ description "grouping used for troubleshooting RPCs";
+ leaf status {
+ type enumeration {
+ enum SUCCESS {
+ description "rpc completed correctly";
+ }
+ enum FAILURE {
+ description "rpc failed";
+ }
+ }
+ description "result of rpc operation";
+ }
+ leaf failure-reason {
+ when "../status = 'FAILURE'";
+ type string;
+ description "free form text description why error occurred";
+ }
+ }
+
+ rpc start-troubleshooting-logs {
+ description
+ "Management plane triggered to start collecting the troubleshooting logs files of RU.";
+ output {
+ uses troubleshooting-status-grouping;
+ }
+ }
+
+ rpc stop-troubleshooting-logs {
+ description
+ "Management plane triggered to stop collecting the troubleshooting logs files of RU.";
+ output {
+ uses troubleshooting-status-grouping;
+ }
+ }
+
+ notification troubleshooting-log-generated {
+ description
+ "When new log file generated, send this notification.";
+ leaf-list log-file-name {
+ type string;
+ description
+ "The list of troubleshooting log file names on the RU.";
+ }
+ }
+}
--- /dev/null
+module xran-udp-echo {
+ yang-version 1.1;
+ namespace "urn:xran:udpecho:1.0";
+ prefix "xran-echo";
+
+ import xran-interfaces {
+ prefix "xran-int";
+ }
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module covers off aspects of llss-CU to RU interface transport
+ verification for UDP/IP based C/U plane connections based on UDP Echo.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ container udp-echo-configuration {
+ if-feature xran-int:UDPIP-BASED-CU-PLANE;
+ description "container for the configuration of udp echo";
+
+ leaf enable-udp-echo {
+ type boolean;
+ default false;
+ description
+ "whether RU's UDP ech server is enabled";
+ }
+
+ leaf dscp-config {
+ type enumeration {
+ enum REFLECTIVE {
+ description
+ "DSCP in echoed datagrams is copied from received datagram";
+ }
+ enum EF {
+ description
+ "DSCP in echoed datagrams is always be set to expeditied
+ forwarding Per Hop Behaviour.";
+ }
+ }
+ default EF;
+ description "configuration of UDP echo DSCP";
+ }
+
+ leaf echo-replies-transmitted {
+ type uint32;
+ config false;
+ description
+ "The total number of UDP echo replies transmitted by the RU.";
+ }
+ }
+}
--- /dev/null
+module xran-uplane-conf {
+ yang-version 1.1;
+ namespace "urn:xran:uplane-conf:1.0";
+ prefix "xran-uplane-conf";
+
+ import xran-processing-element {
+ prefix "xran-pe";
+ }
+
+ import ietf-interfaces {
+ prefix "if";
+ }
+
+ import xran-module-cap {
+ prefix "mcap";
+ }
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the module capabilities for
+ the xRAN Radio Unit U-Plane configuration.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ grouping eaxc {
+ description
+ "One eAxC identifier (eAxC ID) comprises a band and sector
+ identifier (BandSector_ID), a component-carrier identifier (CC_ID) and a
+ spatial stream identifier (RU_Port_ID).
+
+ In this version of the specification, one eAxC contains only one spatial
+ stream (i.e. one beam per subcarrier) at a time.
+
+ Bit allocation is subdivided as follows:
+ * CU_Port_ID: Used to differentiate processing units at lls-CU
+ * BandSector_ID: Aggregated cell identifier
+ * CC_ID: distinguishes Carrier Components
+ * RU_Port_ID: Used to differentiate spatial streams or beams on the RU
+
+ The bitwidth of each of the above fields is variable this model is supposed to check
+ if we are occpying bits continuously but we do not have to occupy all 16 bits";
+
+
+ leaf cu-port-bitmask {
+ type uint16;
+ mandatory true;
+ description
+ "mask for eaxc-id bits used to encode CU Port ID";
+ }
+
+ leaf band-sector-bitmask {
+ type uint16;
+ mandatory true;
+ description
+ "mask for eaxc-id bits used to encode the band sector ID";
+ }
+
+ leaf ccid-bitmask {
+ type uint16;
+ mandatory true;
+ description
+ "mask for eaxc-id bits used to encode the component carrier id";
+ }
+
+ leaf ru-port-bitmask {
+ type uint16;
+ mandatory true;
+ description
+ "mask for eaxc-id bits used to encode the RU Port ID";
+ }
+
+ leaf eaxc-id {
+ type uint16;
+ mandatory true;
+ description
+ "encoded value of eaxcid to be read by CU-Plane";
+ }
+ }
+
+ container user-plane-configuration {
+ description "top level container for user plane configuration";
+
+ container compression {
+ description
+ "Container which consists of global configurable parameters for compression";
+
+ leaf compression-type {
+ type enumeration {
+ enum STATIC {
+ description
+ "Indicates that static compression method will be used (both compression and IQ bitwidth)";
+ }
+
+ enum DYNAMIC {
+ description
+ "Indicates that dynamic compresion method will be used";
+ }
+ }
+ description
+ "Compression type that lls-CU wants to be supported";
+ }
+
+ leaf bitwidth {
+ when "./../compression-type = 'STATIC'";
+ type uint8;
+ description
+ "Bitwidth to be used in compression";
+ }
+
+ leaf compression-method {
+ when "./../compression-type = 'STATIC'";
+ type enumeration {
+ enum BLOCK_FLOATING_POINT {
+ description
+ "Block floating point compression and decompression will be used";
+ }
+
+ enum BLOCK_SCALING {
+ description
+ "Block scaling compression and decompresion will be used";
+ }
+
+ enum U_LAW {
+ description
+ "u-Law compression and decompresion method will be used";
+ }
+
+ enum BEAMSPACE {
+ description
+ "Beamspace compression and decompression will be used";
+ }
+
+ enum MODULATION {
+ description
+ "Modulation compression and decompression will be used";
+ }
+ }
+ description
+ "Compresion method which can be supported by the RU";
+ }
+ }
+
+ list low-level-tx-links {
+ key name;
+ description
+ "Object model for low-level-tx-link configuration";
+
+ leaf name {
+ type string;
+ description
+ "Unique name of low-level-tx-link object.";
+ }
+
+ leaf processing-element {
+ type leafref {
+ path "/xran-pe:processing-elements/xran-pe:ru-elements/xran-pe:name";
+ }
+ mandatory true;
+ description
+ "Contains name of processing-element to be used as transport by low-level-tx-link";
+ }
+
+ leaf tx-array-carrier {
+ type leafref {
+ path "/user-plane-configuration/tx-array-carriers/name";
+ }
+ mandatory true;
+ description
+ "Contains name of tx-array-carriers MO to be used as transport by low-level-tx-link";
+ }
+
+ leaf low-level-tx-endpoint {
+ type string;
+ must "boolean(../../low-level-tx-endpoints[name = current()])" {
+ error-message "low-level-tx-endpoint you want to set does not exists in /low-level-tx-endpoints/name";
+ }
+ mandatory true;
+ description
+ "Contains name of low-level-tx-endpoints MO to be used as transport by low-level-tx-link";
+ }
+
+ container remote-address {
+ uses eaxc;
+
+ must "( cu-port-bitmask + band-sector-bitmask + ccid-bitmask + ru-port-bitmask ) =
+ '(0 | 1 | 3 | 7 | 15 | 31 | 63 | 127 | 255 | 511 | 1023 | 2047 | 4095 | 8191 | 16383 | 32767 | 65535)'" {
+ error-message "Bitmasks for eaxc-id is badly formatted";
+ }
+
+ description
+ "Contains address of remote TX endpoint served by NETCONF client.";
+ }
+ }
+
+ list low-level-rx-links {
+ key name;
+ description
+ "Object model for low-level-rx-links configuration";
+
+ leaf name {
+ type string;
+
+ description
+ "Unique name of low-level-rx-links object.";
+ }
+
+ leaf processing-element {
+ type leafref {
+ path "/xran-pe:processing-elements/xran-pe:ru-elements/xran-pe:name";
+ }
+ mandatory true;
+ description
+ "Contains name of processing-element to be used as transport by LowLevelTxLink";
+ }
+
+ leaf rx-array-carrier {
+ type leafref {
+ path "/user-plane-configuration/rx-array-carriers/name";
+ }
+ mandatory true;
+
+ description
+ "Contains name of rx-array-carriers MO to be used as transport by low-level-rx-links";
+ }
+
+ leaf low-level-rx-endpoint {
+ type string;
+ must "boolean(../../low-level-rx-endpoints[name = current()])" {
+ error-message "low-level-rx-endpoint you want to set does not exists in /low-level-rx-endpoints/name";
+ }
+ mandatory true;
+
+ description
+ "Contains name of low-level-rx-endpoints MO to be used as transport by low-level-rx-links";
+ }
+
+ container remote-address {
+ uses eaxc;
+
+ must "( cu-port-bitmask + band-sector-bitmask +ccid-bitmask + ru-port-bitmask ) =
+ '(0 | 1 | 3 | 7 | 15 | 31 | 63 | 127 | 255 | 511 | 1023 | 2047 | 4095 | 8191 | 16383 | 32767 | 65535)'" {
+ error-message "Bitmasks for eaxc-id is badly formatted";
+ }
+
+ description
+ "Contains address of remote RX endpoint served by Netconf client.";
+ }
+
+ leaf priority {
+ type enumeration {
+ enum HIGH {
+ description
+ "Means high priority for link";
+ }
+ enum LOW {
+ description
+ "Means low priority for link";
+ }
+ }
+
+ description
+ "Parameter to set priority for this link";
+ }
+ }
+
+ list static-low-level-tx-endpoints {
+ key name;
+ config false;
+ description
+ "Object model for static-low-level-tx-endpoints configuration";
+
+ leaf name {
+ type string;
+
+ description
+ "Unique name of static-low-level-tx-endpoints object.";
+ }
+
+ leaf interface {
+ type string;
+ must "boolean(/if:interfaces/if:interface[if:name = current()])" {
+ error-message "ethernet-interface you want to set does not exists in /interfaces/interface/name";
+ }
+
+ description
+ "Contains name of ietf:interface to be used as transport by low-level-tx-endpoints";
+ }
+
+ leaf array {
+ type leafref {
+ path "/user-plane-configuration/tx-arrays/name";
+ }
+ description
+ "Contains distname of tx-arrays, particular low-level-tx-endpoints is in hardware dependency with.
+ Note: single instance of tx-arrays can be referenced by many instances of low-level-tx-endpoints
+ (e.g. to allow DU to handle multiple fronthauls and multiple component carriers).";
+ }
+ }
+
+ list static-low-level-rx-endpoints {
+ key name;
+ config false;
+ description
+ "Object model for static-low-level-rx-endpoints configuration";
+
+ leaf name {
+ type string;
+
+ description
+ "Unique name of static-low-level-rx-endpoints object.";
+ }
+
+ leaf interface {
+ type string;
+ must "boolean(/if:interfaces/if:interface[if:name = current()])" {
+ error-message "interface you want to set does not exists in /interfaces/interface/name";
+ }
+
+ description
+ "Contains name of ietf:interface to be used as transport by low-level-rx-endpoints";
+ }
+
+ leaf array {
+ type leafref {
+ path "/user-plane-configuration/rx-arrays/name";
+ }
+ description
+ "Contains distname of rx-arrays, particular low-level-rx-endpoints is in hardware dependency with.
+ Note: single instance of rx-arrays can be referenced by many instances of low-level-rx-endpoints
+ (e.g. to allow DU to handle multiple fronthauls and multiple component carriers).";
+ }
+ }
+
+ list low-level-tx-endpoints {
+ key name;
+ description
+ "Object model for low-level-tx-endpoints configuration - augmented static-low-level-tx-endpoints by local-address
+ which cannot be added to static low-level-tx-endpoints as we cannot have modificable element in static object";
+
+ leaf name {
+ type string;
+ must "boolean(../../static-low-level-tx-endpoints[name = current()])" {
+ error-message "name you want to set does not exist in /static-low-level-tx-endpoints/name";
+ }
+
+ description
+ "Unique name of low-level-tx-endpoint object.";
+ }
+
+ container local-address {
+ uses eaxc;
+
+ must "( cu-port-bitmask + band-sector-bitmask + ccid-bitmask + ru-port-bitmask ) =
+ '(0 | 1 | 3 | 7 | 15 | 31 | 63 | 127 | 255 | 511 | 1023 | 2047 | 4095 | 8191 | 16383 | 32767 | 65535)'" {
+ error-message "Bitmasks for eaxc-id is badly formatted";
+ }
+ description
+ "Contains local address of low level TX endpoint offered by Netconf server.";
+ }
+ }
+
+
+ list low-level-rx-endpoints {
+ key name;
+ description
+ "Object model for low-level-rx-endpoint configuration - augmented static-low-level-rx-endpoints by local-address
+ which cannot be added to static low-level-rx-endpoints as we cannot have modificable element in static object";
+
+ leaf name {
+ type string;
+ must "boolean(../../static-low-level-rx-endpoints[name = current()])" {
+ error-message "name you want to set does not exist in /static-low-level-rx-endpoints/name";
+ }
+
+ description
+ "Unique name of low-level-rx-endpoint object.";
+ }
+
+ container local-address {
+ uses eaxc;
+
+ must "( cu-port-bitmask + band-sector-bitmask + ccid-bitmask + ru-port-bitmask ) =
+ '(0 | 1 | 3 | 7 | 15 | 31 | 63 | 127 | 255 | 511 | 1023 | 2047 | 4095 | 8191 | 16383 | 32767 | 65535)'" {
+ error-message "Bitmasks for eaxc-id is badly formatted";
+ }
+
+ description
+ "Contains local address of low level RX endpoint offered by Netconf server.";
+ }
+ }
+
+ list tx-array-carriers {
+ key name;
+ description
+ "Object model for tx-array-carriers configuration";
+
+ leaf name {
+ type string;
+
+ description
+ "Unique name of tx-array-carriers object.";
+ }
+
+ leaf absolute-frequency-center {
+ type uint32;
+ mandatory true;
+ description
+ "Absolute Radio Frequency Channel Number - indirectly indicates RF center carrier frequency of downlink signal.";
+ }
+
+ leaf center-of-channel-bandwidth {
+ type uint64;
+ units Hz;
+ mandatory true;
+ description
+ "Center frequency of channel bandwidth in Hz. Common for all numerologies.";
+ }
+
+ leaf channel-bandwidth {
+ type uint64;
+ units Hz;
+ mandatory true;
+
+ description
+ "Width of carrier given in Hertz";
+ }
+
+
+ leaf power {
+ type decimal64 {
+ fraction-digits 4;
+ }
+ mandatory true;
+
+ description
+ "Transmission power in dBm. Value applicable to each array element carrier belonging to array carrier.";
+ }
+
+ leaf active {
+ type enumeration {
+ enum INACTIVE {
+ description
+ "carrier does not provide signal - transmission is disabled";
+ }
+ enum SLEEP{
+ description
+ "carrier is fully configured and was active but is energy saving mode";
+ }
+ enum ACTIVE{
+ description
+ "carrier is fully configured and properly providing the signal";
+ }
+ }
+ default INACTIVE;
+
+ description
+ "Indicates if transmission is enabled for this tx-array-carriers. Note that Netconf server uses state parameter
+ to indicate actual state of tx-array-carriers operation. When tx-array-carriers is in sleep status,
+ Netconf server rejects all other operation request to tx-array-carriers object except either request to change from sleep
+ to active status or delete MO operation (see 4.8) to the object.";
+ }
+
+ leaf state {
+ type enumeration {
+ enum DISABLED {
+ description
+ "tx-array-carrier is not active - transmission of signal is disabled.";
+ }
+ enum BUSY {
+ description
+ "tx-array-carrier is processing an operation requested by change of active parameter.
+ When tx-array-carriers is BUSY the transmission of signal is not guaranteed.";
+ }
+ enum READY {
+ description
+ "tx-array-carrier had completed activation operation - is active and transmission of signal is ongoing.";
+ }
+ }
+ config false;
+
+ description
+ "Indicates state of tx-array-carriers activation operation";
+ }
+
+ leaf type {
+ type enumeration {
+ enum NR {
+ description
+ "5G technology";
+ }
+ }
+ config false;
+
+ description
+ "Type of carrier. Indicates array-carrier technology.";
+ }
+
+ leaf fft-size {
+ type uint32;
+
+ description
+ "The FFT size defines the number of bins used for dividing the window into equal strips, or bins.
+ Hence, a bin is a spectrum sample, and defines the frequency resolution of the window.";
+ }
+
+ leaf downlink-radio-frame-offset {
+ type uint32 {
+ range 0..12288000;
+ }
+ mandatory true;
+
+ description
+ "This parameter is used for offsetting the starting position of 10ms radio frame.
+ Note: The value should have same value within DU to all tx-array-carrierss that have same frequency and bandwidth.
+ Note2: Unit is 1/1.2288e9 Hz and accuracy is 1/4 Tc. Then, its range is calculated 0..12288000.";
+ }
+
+ leaf downlink-sfn-offset {
+ type int16 {
+ range -32768..32767;
+ }
+ mandatory true;
+
+ description
+ "This parameter is used for offsetting SFN value.
+ Unit is in 10ms.
+ Note: The value should have same value within DU to all tx-array-carrierss that have same frequency and bandwidth.";
+ }
+
+ leaf default-scs {
+ type enumeration {
+ enum KHZ_15 {
+ value 0;
+ description
+ "15kHz sub carrier spacing";
+ }
+ enum KHZ_30 {
+ value 1;
+ description
+ "30kHz sub carrier spacing";
+ }
+ enum KHZ_60 {
+ value 2;
+ description
+ "60kHz sub carrier spacing";
+ }
+ enum KHZ_120 {
+ value 3;
+ description
+ "120kHz sub carrier spacing";
+ }
+ enum KHZ_240 {
+ value 4;
+ description
+ "240kHz sub carrier spacing";
+ }
+ enum KHZ_1_25 {
+ value 12;
+ description
+ "1,25kHz sub carrier spacing";
+ }
+ enum KHZ_5 {
+ value 14;
+ description
+ "5kHz sub carrier spacing";
+ }
+ }
+
+ mandatory true;
+
+ description
+ "Sub-carrier spacing configuration";
+ }
+
+ list scs-specific-config {
+ key scs;
+ description
+ "List of scs-specific configurations";
+ uses scs-config;
+ }
+ leaf cp-length {
+ type uint32;
+ description
+ "CP length woud be determined by deployment types that has different
+ delay spread requirements, and/or determined by frequency bands, service type
+ or determined by whether beam forming technology is used or not";
+ }
+ }
+
+ list rx-array-carriers {
+ key name;
+ description
+ "Object model for rx-array-carriers configuration";
+
+ leaf name {
+ type string;
+ description
+ "Unique name of rx-array-carriers object.";
+ }
+
+
+ leaf absolute-frequency-center {
+ type uint32;
+ mandatory true;
+ description
+ "Absolute Radio Frequency Channel Number - indirectly indicates RF center carrier frequency of downlink signal.";
+ }
+ leaf center-of-channel-bandwidth {
+ type uint64;
+ units Hz;
+ mandatory true;
+ description
+ "Center frequency of channel bandwidth. Common for all numerologies.";
+ }
+ leaf channel-bandwidth {
+ type uint64;
+ units Hz;
+ mandatory true;
+ description
+ "Width of carrier given in Hertz";
+ }
+
+
+ leaf active {
+ type enumeration {
+ enum INACTIVE {
+ description
+ "carrier does not provide signal - transmission is disabled";
+ }
+ enum SLEEP{
+ description
+ "carrier is fully configured and was active but is energy saving mode";
+ }
+ enum ACTIVE{
+ description
+ "carrier is fully configured and properly providing the signal";
+ }
+ }
+ default INACTIVE;
+ description
+ "Indicates if transmission is enabled for this rx-array-carriers. Note that Netconf server uses state parameter
+ to indicate actual state of rx-array-carriers operation. When rx-array-carriers is in sleep status,
+ Netconf server rejects all other operation request to rx-array-carriers object except either request to change from sleep
+ to active status or delete MO operation (see 4.8) to the object.";
+ }
+
+ leaf state {
+ type enumeration {
+ enum DISABLED {
+ description
+ "rx-array-carrier is not active - transmission of signal is disabled.";
+ }
+ enum BUSY {
+ description
+ "rx-array-carrier is processing an operation requested by change of active parameter.
+ When tx-array-carriers is BUSY the transmission of signal is not guaranteed.";
+ }
+ enum READY {
+ description
+ "rx-array-carrier had completed activation operation - is active and transmission of signal is ongoing.";
+ }
+ }
+ config false;
+
+ description
+ "Indicates state of rx-array-carriers activation operation";
+ }
+
+ leaf type {
+ type enumeration {
+ enum NR {
+ description
+ "5G technology";
+ }
+ }
+ config false;
+
+ description
+ "Type of carrier. Indicates array-carrier technology.";
+ }
+
+ leaf fft-size {
+ type uint32;
+ description
+ "FFT size";
+ }
+
+ leaf ul-fft-sampling-offset {
+ type uint32;
+ description
+ "uplink FFT sampling offset";
+ }
+
+ leaf n-ta-offset {
+ type uint32;
+ description
+ "Value of configurable N-TA offset";
+ }
+ leaf default-scs {
+ type enumeration {
+ enum KHZ_15 {
+ value 0;
+ description
+ "15kHz sub carrier spacing";
+ }
+ enum KHZ_30 {
+ value 1;
+ description
+ "30kHz sub carrier spacing";
+ }
+ enum KHZ_60 {
+ value 2;
+ description
+ "60kHz sub carrier spacing";
+ }
+ enum KHZ_120 {
+ value 3;
+ description
+ "120kHz sub carrier spacing";
+ }
+ enum KHZ_240 {
+ value 4;
+ description
+ "240kHz sub carrier spacing";
+ }
+ enum KHZ_1_25 {
+ value 12;
+ description
+ "1,25kHz sub carrier spacing";
+ }
+ enum KHZ_5 {
+ value 14;
+ description
+ "5kHz sub carrier spacing";
+ }
+ }
+ mandatory true;
+
+ description
+ "Sub-carrier spacing configuration";
+ }
+
+ list scs-specific-config {
+ key scs;
+ description
+ "List of static scs-specific configurations";
+ uses scs-config;
+ }
+
+
+ leaf cp-length {
+ type uint32;
+ description
+ "CP length woud be determined by deployment types that has different
+ delay spread requirements, and/or determined by frequency bands, service type
+ or determined by whether beam forming technology is used or not";
+ }
+
+ }
+
+ list tx-arrays {
+ key name;
+ config false;
+ description
+ "Object model for tx-arrays configuration";
+
+ leaf name {
+ type string;
+ description
+ "Unique name of tx-arrays object.";
+ }
+
+ leaf polarisation {
+ type int8 {
+ range "-45 | 0 | 45 | 90";
+ }
+ description
+ "This parameter informing which polarization is served by particular antenna array
+ as per HW design. Expected values are +45 deg, -45 deg, 0 deg and 90 deg.
+ Note: In case of multi-band RU orthogonality is assumed to exist per band, meaning:
+ either pair of +45 deg and -45 deg or pair of 0 deg and 90 deg are expected per band.
+ Non-orthogonal pairs like e.g 0 deg and +45 deg are not expected.";
+ }
+
+ leaf panel-id {
+ type uint8;
+ description
+ "This parameter informing panel particular antenna array is built into.
+ Intended use is to indicate if two orthogonal arrays occupy the same physical panel (e.g. as cross-polarized
+ radiators) or if arrays of different polarizations are built into physically separated panels.";
+ }
+
+ leaf band-number {
+ type leafref {
+ path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
+ }
+ description
+ "This parameter informing which frequency band particular antenna
+ array is serving for.
+ Intended use is to deal with multiband solutions.";
+ }
+ }
+
+ list rx-arrays {
+ key name;
+ config false;
+ description
+ "Object model for rx-arrays configuration";
+
+ leaf name {
+ type string;
+ description
+ "Unique name of rx-arrays object.";
+ }
+
+ leaf polarisation {
+ type int8 {
+ range "-45 | 0 | 45 | 90";
+ }
+ description
+ "This parameter informing which polarization is served by particular antenna array
+ as per HW design. Expected values are +45 deg, -45 deg, 0 deg and 90 deg.
+ Note: In case of multi-band RU orthogonality is assumed to exist per band, meaning:
+ either pair of +45 deg and -45 deg or pair of 0 deg and 90 deg are expected per band.
+ Non-orthogonal pairs like e.g 0 deg and +45 deg are not expected.";
+ }
+
+ leaf panel-id {
+ type uint8;
+ description
+ "This parameter informing panel particular antenna array is built
+ into.
+ Intended use is to indicate if two orthogonal arrays occupy the same
+ physical panel (e.g. as cross-polarized radiators) or if arrays of
+ different polarizations are built into physically separated panels.";
+ }
+
+ leaf band-number {
+ type leafref {
+ path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
+ }
+ description
+ "This parameter informing which frequency band particular antenna
+ array is serving for.
+ Intended use is to deal with multiband solutions.";
+ }
+ }
+ }
+
+ grouping scs-config {
+ description
+ "It groups all parameters related to SCS configuration";
+
+ leaf scs {
+ type enumeration {
+ enum KHZ_15 {
+ value 0;
+ description
+ "15kHz sub carrier spacing";
+ }
+ enum KHZ_30 {
+ value 1;
+ description
+ "30kHz sub carrier spacing";
+ }
+ enum KHZ_60 {
+ value 2;
+ description
+ "60kHz sub carrier spacing";
+ }
+ enum KHZ_120 {
+ value 3;
+ description
+ "120kHz sub carrier spacing";
+ }
+ enum KHZ_240 {
+ value 4;
+ description
+ "240kHz sub carrier spacing";
+ }
+ enum KHZ_1_25 {
+ value 12;
+ description
+ "1,25kHz sub carrier spacing";
+ }
+ enum KHZ_5 {
+ value 14;
+ description
+ "5kHz sub carrier spacing";
+ }
+ }
+ description
+ "Sub-carrier spacing configuration";
+ }
+ leaf offset-to-absolute-frequency-center {
+ type int32;
+ mandatory true;
+ description
+ "Offset to center-of-carrier-bandwidth. Mostly negative value. Granularity of this parameter is 0.5 SCS";
+ }
+
+ leaf number-of-prbs {
+ type uint32;
+ mandatory true;
+ description
+ "Number of physical resource blocks.";
+ }
+ }
+
+
+}
--- /dev/null
+module xran-usermgmt {
+ yang-version 1.1;
+ namespace "urn:xran:user-mgmt:1.0";
+ prefix "xran-usermgmt";
+
+ // import openroadm user management
+ import org-openroadm-user-mgmt {
+ prefix openroadm;
+ revision-date 2017-12-15;
+ }
+
+ organization "xRAN Forum";
+
+ contact
+ "www.xran.org";
+
+ description
+ "This module defines the user management model for the xRAN Radio Unit.
+ The model is an augmentation of the user management model defined by
+ the openroadm MSA.
+
+ Copyright 2018 the xRAN Forum.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the above disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the above disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the Members of the xRAN Forum nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.";
+
+ revision "2018-07-20" {
+ description
+ "version 1.0.0 - First release of the xRAN YANG M-Plane models.
+
+ This version of the model supports v01.00 of the corrsponding xRAN
+ M-Plane Specification.";
+ reference "XRAN-FH.MP.0-v01.00";
+ }
+
+ grouping extended-xran-groups {
+ description
+ "New user permissions defined by xran.
+ Imported openroadm model only supports 'sudo' superuser permissions.";
+ leaf-list xran-group {
+ type enumeration {
+ enum nms {
+ description "Network Management System permissions";
+ }
+ enum fm-pm {
+ description
+ "permissions for fault and performance management.";
+ }
+ enum swm {
+ description
+ "permissions for software managemet.";
+ }
+ }
+ description
+ "new group privileges defined by xRAN - a non sudo account may have
+ multiple group privileges.
+
+ See the xRAN management Plane specification for a list of YANG module
+ privileges";
+ }
+ }
+
+ container xran-user-profile {
+ description "baseline open-roadm user profile";
+ uses openroadm:user-profile;
+ }
+
+ augment "/xran-usermgmt:xran-user-profile/xran-usermgmt:user" {
+ description "add in new xran user group permissions";
+ uses extended-xran-groups;
+ leaf enabled {
+ type boolean;
+ must "count(../enabled='true') > 0" {
+ error-message "At least one account needs to be enabled.";
+ }
+ description
+ "Indicates whether an account is enabled or disabled.";
+ }
+ }
+}