module org-openroadm-otn-odu-interfaces { yang-version 1.1; namespace "http://org/openroadm/otn-odu-interfaces"; prefix org-openroadm-otn-odu-interfaces; import org-openroadm-device { prefix org-openroadm-device; revision-date 2023-05-26; } import org-openroadm-interfaces { prefix openROADM-if; revision-date 2022-09-30; } import org-openroadm-maintenance-testsignal { prefix org-openroadm-maint-testsignal; revision-date 2023-05-26; } import org-openroadm-otn-common { prefix org-openroadm-otn-common; revision-date 2022-03-25; } import org-openroadm-otn-common-types { prefix org-openroadm-otn-common-types; revision-date 2021-09-24; } import org-openroadm-common-attributes { prefix org-openroadm-common-attributes; revision-date 2021-09-24; } organization "Open ROADM MSA"; contact "OpenROADM.org"; description "YANG definitions for device facility otnodu interfaces. Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016, All other rights reserved. 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 following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the Members of the Open ROADM MSA Agreement nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT ''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 THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT 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. Also contains code components extracted from IETF Interfaces. These code components are copyrighted and licensed as follows: Copyright (c) 2016 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License."; revision 2023-05-26 { description "Version 13.1"; } revision 2023-03-31 { description "Version 13.0"; } revision 2022-12-09 { description "Version 12.1"; } revision 2022-09-30 { description "Version 12.0"; } revision 2022-05-27 { description "Version 11.1"; } revision 2022-03-25 { description "Version 11.0"; } revision 2021-12-10 { description "Version 10.1"; } revision 2021-09-24 { description "Version 10.0"; } revision 2021-05-28 { description "Version 9.1"; } revision 2021-03-26 { description "Version 9.0"; } revision 2020-12-11 { description "Version 8.1"; } revision 2020-09-25 { description "Version 8.0"; } revision 2020-05-29 { description "Version 7.1.0"; } revision 2020-03-27 { description "Version 7.0.0"; } revision 2019-11-29 { description "Version 6.1.0"; } revision 2019-09-27 { description "Version 6.0.0"; } revision 2019-05-31 { description "Version 5.1.0"; } revision 2019-03-29 { description "Version 5.0.0"; } revision 2018-11-30 { description "Version 4.1.0"; } revision 2018-09-28 { description "Version 4.0.0"; } revision 2018-05-30 { description "Version 3.1.0"; } revision 2018-03-30 { description "Version 3.0.0"; } revision 2017-12-15 { description "Version 2.2"; } revision 2017-09-29 { description "Version 2.1"; } revision 2017-07-28 { description "Version 2.0.1 - added revision-date to imports"; } revision 2017-06-26 { description "Version 2.0"; } revision 2016-10-14 { description "Version 1.2"; } grouping msi-entry { description "OPU Multiplex Structure Identifier (G.709 clause 19.4.1)"; leaf trib-slot { type uint16; description "tributary slot (TS)"; } leaf odtu-type { type identityref { base org-openroadm-otn-common-types:odtu-type-identity; } description "ODTU type, part of the MSI (Multiplex Structure Identifier)"; } leaf trib-port { type uint16; description "Tributary Port Number (0-based), part of the MSI"; } } grouping opucn-msi-entry { description "OPUCn Multiplex Structure Identifier (G.709 clause 20.4.1)"; leaf opucn-trib-slot { type org-openroadm-otn-common-types:opucn-trib-slot-def; description "OPUCn tributary slot (TS)"; } leaf availability { type boolean; description "available"; } leaf occupation { type boolean; description "occupied"; } leaf trib-port { type uint16; description "OPUCn Tributary Port Number (0-based), part of the MSI"; } } grouping odu-attributes { description "ODU attributes"; leaf rate { type identityref { base org-openroadm-otn-common-types:odu-rate-identity; } description "rate identity of the ODU. 'identityref' is used to allow to extend for future higher rates"; } leaf oducn-n-rate { when "../rate = 'org-openroadm-otn-common-types:ODUCn'"; type uint16; description "ODUCn rate"; } leaf oduflex-cbr-service { type identityref { base org-openroadm-otn-common-types:ODUflex-cbr-identity; } description "ODUflex for CBR client signals (G.709)"; } leaf oduflex-gfp-num-ts { type uint16; description "For ODUflex GFP-F mapped client signals (G.709), the number of tributary slot as per G.709 Table 7-8"; } leaf oduflex-gfp-ts-bandwidth { type uint16; config false; description "The tributary slot minimum bit rates in the approximated value [Mbps] given ODUflex (GFP) 100 ppm (G.709 Table 7-8) : 1249 Mbps [1 249 052.312 277 kbps] (n = 1 to 8) (ODU2.ts) 1254 Mbps [1 254 344.906 9646 kbps] (n = 9 to 32) ODU3.ts) 1301 Mbps [1 301 336.986 2867 kbps] (n = 33 to 80) (ODU4.ts)"; } leaf oduflex-imp-s { type uint16; description "For ODUflex IMP (Idle insertion Mapping Procedure) mapped client signals, s = 2, 8, n x 5 with N >= 1 (G.709 12.2.6 & Table 7-3)"; } leaf oduflex-flexe-n { type uint16; description "For ODUflex for FlexE-aware client signals, n in the range of 1 to 20*254 (G.709 17.12)"; } leaf odu-function { type identityref { base org-openroadm-otn-common-types:odu-function-identity; } description "function of the ODU interface"; } leaf monitoring-mode { type enumeration { enum not-terminated { description "Not Terminated: no detection or generation. Overhead is passed through the interface transparently in receive direction"; } enum terminated { description "Terminated: detection and generation enabled. Overhead is erased (replaced with all zeros) in receive direction"; } enum monitored { description "Monitored: detection enabled. Overhead is passed through the interface transparently in receive direction"; } } description "Monitoring mode of the ODU Overhead"; } leaf no-oam-function { type empty; description "No OAM functionality exists for this ODU interface, the entity exists in software only. This entity does not report alarms or PM and does not support TCM, TTI, delay measurement, loopbacks, test signal and other hardware-based functions. This is an optional parameter, only needs to be present when no-oam-function supported for this interface."; } leaf no-maint-testsignal-function { type empty; description "No test signal function exists for this ODU interface. Similar to no-oam-function this entity does not support test signal generation, but all the other functions are available. This is an optional parameter, only needs to be present when test signal generation is not supported by this interface."; } leaf proactive-delay-measurement-enabled { type boolean; description "enable/disable proactive Delay Measurement"; } uses org-openroadm-common-attributes:parent-odu-allocation; uses org-openroadm-otn-common:trail-trace; uses org-openroadm-common-attributes:deg-threshold; list tcm { key "layer tcm-direction"; max-elements 12; description "Tandem Connection Management"; uses tcm-attributes; } uses opu; } grouping opu { description "OPU group"; container opu { when "../monitoring-mode = 'terminated' or ../monitoring-mode = 'monitored'"; description "Optical Channel Payload Unit (OPU)"; leaf payload-type { type org-openroadm-otn-common-types:payload-type-def; description "Payload Type"; } leaf rx-payload-type { type org-openroadm-otn-common-types:payload-type-def; description "Received Payload Type"; } leaf exp-payload-type { type org-openroadm-otn-common-types:payload-type-def; description "Expected Payload Type"; } container msi { when "../payload-type = '20' or ../payload-type = '21'"; description "Multiple Structure Identifier"; list tx-msi { key "trib-slot"; description "Transmit MSI"; uses msi-entry; } list rx-msi { key "trib-slot"; description "Received MSI"; uses msi-entry; } list exp-msi { key "trib-slot"; description "Expected MSI"; uses msi-entry; } } container opucn-msi { when "../payload-type = '22'"; description "OPUCn Mutiplex Structure Identifier (G.709 clause 20.4.1)"; list tx-msi { key "opucn-trib-slot"; description "Transmit MSI"; uses opucn-msi-entry; } list rx-msi { key "opucn-trib-slot"; description "Received MSI"; uses opucn-msi-entry; } list exp-msi { key "opucn-trib-slot"; description "Expected MSI"; uses opucn-msi-entry; } } } } grouping tcm-attributes { description "Tandem Connection Monitoring (TCM) attributes"; leaf layer { type uint8 { range "1..6"; } description "TCM layer"; } leaf monitoring-mode { type enumeration { enum not-terminated { status obsolete; description "Not Terminated: no detection or generation. Overhead is passed through the interface transparently in receive direction unless extension is set for erase"; } enum terminated { description "Terminated: detection and generation enabled. Overhead is erased (replaced with all zeros) in receive direction, unless extension is set to passthrough"; } enum monitored { description "Monitored: detection enabled. Overhead is passed through the interface transparently in receive direction unless extension is set for erase"; } } description "Monitoring mode of the TCM layer"; } leaf ltc-act-enabled { type boolean; description "enable/disable alarm transfer on detection of Loss of Tandem Connection (LTC)"; } leaf proactive-delay-measurement-enabled { type boolean; description "enable/disable proactive Delay Measurement for TCM"; } leaf tcm-direction { type org-openroadm-otn-common-types:tcm-direction-enum; description "Direction of TCM."; } uses org-openroadm-otn-common:trail-trace; uses org-openroadm-common-attributes:deg-threshold; } grouping odu-container { description "ODU container group"; container odu { presence "Attribute Nodes for Optical Data Unit (ODU)"; description "Optical Channel Data Unit (ODU)"; uses odu-attributes { refine "opu/rx-payload-type" { config false; } refine "opu/msi" { config false; } refine "opu/opucn-msi" { config false; } refine "no-oam-function" { config false; } refine "no-maint-testsignal-function" { config false; } } uses org-openroadm-maint-testsignal:maint-testsignal; } } augment "/org-openroadm-device:org-openroadm-device/org-openroadm-device:interface" { when "org-openroadm-device:type = 'openROADM-if:otnOdu'"; description "augment for ODU container"; uses odu-container; } }