Internet-Draft OTN Topology YANG Model March 2022
Zheng, et al. Expires 8 September 2022 [Page]
Workgroup:
CCAMP Working Group
Internet-Draft:
draft-ietf-ccamp-otn-topo-yang-14
Published:
Intended Status:
Standards Track
Expires:
Authors:
H. Zheng
Huawei Technologies
I. Busi
Huawei Technologies
X. Liu
Volta Networks
S. Belotti
Nokia
O. Gonzalez de Dios
Telefonica

A YANG Data Model for Optical Transport Network Topology

Abstract

This document describes a YANG data model to describe the topologies of an Optical Transport Network (OTN). It is independent of control plane protocols and captures topological and resource related information pertaining to OTN. This model enables clients, which interact with a transport domain controller, for OTN topology related operations such as obtaining the relevant topology resource information.

Requirements Language

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 8 September 2022.

Table of Contents

1. Introduction

A transport network is a server-layer network designed to provide connectivity services for a client-layer network to carry the client traffic transparently across the server-layer network resources. A transport network can be constructed of equipments utilizing any of a number of different transport technologies such as the Optical Transport Networks (OTN) or packet transport such as provided by the MPLS-Transport Profile (MPLS-TP).

This document defines a data model of an OTN network topology, using YANG [RFC7950]. The model can be used by an application exposing to a transport controller. Furthermore, it can be used by an application for the following purposes (but not limited to):

The YANG model defined in this document is independent of control plane protocols and captures topology related information pertaining to an Optical Transport Networks (OTN) electrical layer, as the scope specified by [RFC7062] . Furthermore, it is not a stand-alone model, but augmenting from the TE topology YANG model defined in [RFC8795], and importing from the generic Layer 1 types defined in [I-D.ietf-ccamp-layer1-types]. Following TE topology YANG model, the YANG model defined in this document is interface independent. The model is included in [I-D.ietf-teas-actn-yang], which indicates the typical usage of IETF YANG models in ACTN architecture specified by [RFC8453]. More specifically, the usage of this model between controllers is described in [I-D.ietf-ccamp-transport-nbi-app-statement].

2. Terminology and Notations

A simplified graphical representation of the data model is used in this document. The meaning of the symbols in the YANG data tree presented later in this document is defined in [RFC8340]. They are provided below for reference.

3. YANG Data Model for OTN Topology

3.1. OTN Topology Data Model Overview

This document aims to describe the data model for OTN topology. As a classic Traffic-engineering (TE) technology, OTN provide TDM switching in transport network [ITU-Tg709]. Therefore the YANG module presented in this document augments from a more generic Traffic Engineered (TE) network topology data model, i.e., the ietf-te-topology, as specified in [RFC8795]. In section 6 of [RFC8795], the guideline for augmenting TE topology model was provided, and in this draft we augment the TE topology model to describe the topology in OTN network. Common types, identities and groupings defined in [I-D.ietf-ccamp-layer1-types] are reused in this document. [RFC8345] describes a network topology model and provide the fundamental model for [RFC8795]. However, this work is not directly augmenting [RFC8345]. Figure 1 shows the augmentation relationship.


                     +------------------+
        TE generic   | ietf-te-topology |
                     +------------------+
                               ^
                               |
                               | Augments
                               |
                     +---------+---------+
        OTN          | ietf-otn-topology |
                     +-------------------+
    Figure 1 - Relationship between OTN and TE topology models

The entities and TE attributes, such as node, termination points and links, are still applicable for describing an OTN topology and the model presented in this document only specifies with technology-specific attributes/information. The OTN-specific attributes in [RFC7139], including the TPN, TS and TSG, can be used to represent the bandwidth and label information. These attributes have been specified in [I-D.ietf-ccamp-layer1-types], and used in this document for augmentation of the generic TE topology model.

The YANG module ietf-otn-topology defined in this document conforms to the Network Management Datastore Architecture (NMDA) defined in [RFC8342].

3.2. Attributes Augmentation

There are a few characteristics augmenting to the generic TE topology.

Following the guidelines in [RFC8795], a otn-topology network-type is specified as the indicator of OTN in the topology as follow.


     augment /nw:networks/nw:network/nw:network-types/tet:te-topology:
       +--rw otn-topology!

Two OTN technology-specific parameters are specified to augment the generic TE link attributes.


     augment /nw:networks/nw:network/nt:link/tet:te
               /tet:te-link-attributes:
       +--rw tsg?        identityref
       +--rw distance?   uint32

In OTN the resources is measured by the tributary slots (TS), as specified in [RFC7139]. The tributary slot granularity (TSG) attribute defines the granularity, such as 1.25G, 2.5G and 5G, used by the TSs of a given OTN link. The distance attribute describes the geographical distance between a pair of OTN link termination points. This is usually measured by the length of the fibre.

The OTN topology model allows reporting also the access links which are capable of supporting the transparent client signals, defined in [I-D.ietf-ccamp-layer1-types]. These links can also be multi-function access links that can support one or more transparent client signals as well as OTN.

A client-svc container is specified to augment the generic TE link termination point to describe if the point is capable of carrying client signal and what kind of signal can be carried as follow.


     augment /nw:networks/nw:network/nw:node/nt:termination-point
               /tet:te:
       +--rw client-svc!
          +--rw client-facing?             boolean
          +--rw supported-client-signal*   identityref

The client-facing is an indicator on whether the point is needed to carry client signal. A list of support-client-signal is used to provide the capabilities of client signal specified in [I-D.ietf-ccamp-layer1-types].

3.3. Bandwidth Augmentation

Following the guidelines in [RFC8795], the model augments all the occurrences of the te-bandwidth container with the OTN technology specific attributes using the otn-link-bandwidth and otn-path-bandwidth groupings defined in [I-D.ietf-ccamp-layer1-types].

3.4. Label Augmentation

The model augments all the occurrences of the label-restriction list with OTN technology specific attributes using the otn-label-range-info grouping defined in [I-D.ietf-ccamp-layer1-types].

Moreover, following the guidelines in [RFC8795], the model augments all the occurrences of the te-label container with the OTN technology specific attributes using the otn-label-start-end, otn-label-hop and otn-label-step groupings defined in [I-D.ietf-ccamp-layer1-types].

3.5. YANG Tree for OTN topology


module: ietf-otn-topology

  augment /nw:networks/nw:network/nw:network-types/tet:te-topology:
    +--rw otn-topology!
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes:
    +--rw tsg?        identityref
    +--rw distance?   uint32
  augment /nw:networks/nw:network/nw:node/nt:termination-point
            /tet:te:
    +--rw client-svc!
       +--rw client-facing?             boolean
       +--rw supported-client-signal*   identityref
  augment /nw:networks/nw:network/nw:node/nt:termination-point/tet:te
            /tet:interface-switching-capability/tet:max-lsp-bandwidth
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--rw otn
          +--rw odu-type?                     identityref
          +--rw (oduflex-type)?
             +--:(generic)
             |  +--rw nominal-bit-rate        uint64
             +--:(cbr)
             |  +--rw client-type             identityref
             +--:(gfp-n-k)
             |  +--rw gfp-n                   uint8
             |  +--rw gfp-k?                  gfp-k
             +--:(flexe-client)
             |  +--rw flexe-client            flexe-client-rate
             +--:(flexe-aware)
             |  +--rw flexe-aware-n           uint16
             +--:(packet)
                +--rw opuflex-payload-rate    uint64
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:path-constraints/tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--rw odulist* [odu-type]
          +--rw odu-type    identityref
          +--rw number?     uint16
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:path-constraints
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--rw odulist* [odu-type]
          +--rw odu-type    identityref
          +--rw number?     uint16
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:path-constraints/tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--ro odulist* [odu-type]
          +--ro odu-type    identityref
          +--ro number?     uint16
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:path-constraints
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--ro odulist* [odu-type]
          +--ro odu-type    identityref
          +--ro number?     uint16
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point/tet:client-layer-adaptation
            /tet:switching-capability/tet:te-bandwidth
            /tet:technology:
    +--:(otn)
       +--rw odulist* [odu-type]
          +--rw odu-type    identityref
          +--rw number?     uint16
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities/tet:path-constraints
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--rw odulist* [odu-type]
          +--rw odu-type    identityref
          +--rw number?     uint16
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities
            /tet:local-link-connectivity/tet:path-constraints
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--rw odulist* [odu-type]
          +--rw odu-type    identityref
          +--rw number?     uint16
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes
            /tet:interface-switching-capability/tet:max-lsp-bandwidth
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--rw otn
          +--rw odu-type?                     identityref
          +--rw (oduflex-type)?
             +--:(generic)
             |  +--rw nominal-bit-rate        uint64
             +--:(cbr)
             |  +--rw client-type             identityref
             +--:(gfp-n-k)
             |  +--rw gfp-n                   uint8
             |  +--rw gfp-k?                  gfp-k
             +--:(flexe-client)
             |  +--rw flexe-client            flexe-client-rate
             +--:(flexe-aware)
             |  +--rw flexe-aware-n           uint16
             +--:(packet)
                +--rw opuflex-payload-rate    uint64
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes/tet:max-link-bandwidth
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--rw odulist* [odu-type]
          +--rw odu-type    identityref
          +--rw number?     uint16
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes/tet:max-resv-link-bandwidth
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--rw odulist* [odu-type]
          +--rw odu-type    identityref
          +--rw number?     uint16
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes/tet:unreserved-bandwidth
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--rw odulist* [odu-type]
          +--rw odu-type    identityref
          +--rw number?     uint16
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:information-source-entry
            /tet:interface-switching-capability/tet:max-lsp-bandwidth
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--ro otn
          +--ro odu-type?                     identityref
          +--ro (oduflex-type)?
             +--:(generic)
             |  +--ro nominal-bit-rate        uint64
             +--:(cbr)
             |  +--ro client-type             identityref
             +--:(gfp-n-k)
             |  +--ro gfp-n                   uint8
             |  +--ro gfp-k?                  gfp-k
             +--:(flexe-client)
             |  +--ro flexe-client            flexe-client-rate
             +--:(flexe-aware)
             |  +--ro flexe-aware-n           uint16
             +--:(packet)
                +--ro opuflex-payload-rate    uint64
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:information-source-entry/tet:max-link-bandwidth
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--ro odulist* [odu-type]
          +--ro odu-type    identityref
          +--ro number?     uint16
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:information-source-entry/tet:max-resv-link-bandwidth
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--ro odulist* [odu-type]
          +--ro odu-type    identityref
          +--ro number?     uint16
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:information-source-entry/tet:unreserved-bandwidth
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--ro odulist* [odu-type]
          +--ro odu-type    identityref
          +--ro number?     uint16
  augment /nw:networks/tet:te/tet:templates/tet:link-template
            /tet:te-link-attributes
            /tet:interface-switching-capability/tet:max-lsp-bandwidth
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--rw otn
          +--rw odu-type?                     identityref
          +--rw (oduflex-type)?
             +--:(generic)
             |  +--rw nominal-bit-rate        uint64
             +--:(cbr)
             |  +--rw client-type             identityref
             +--:(gfp-n-k)
             |  +--rw gfp-n                   uint8
             |  +--rw gfp-k?                  gfp-k
             +--:(flexe-client)
             |  +--rw flexe-client            flexe-client-rate
             +--:(flexe-aware)
             |  +--rw flexe-aware-n           uint16
             +--:(packet)
                +--rw opuflex-payload-rate    uint64
  augment /nw:networks/tet:te/tet:templates/tet:link-template
            /tet:te-link-attributes/tet:max-link-bandwidth
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--rw odulist* [odu-type]
          +--rw odu-type    identityref
          +--rw number?     uint16
  augment /nw:networks/tet:te/tet:templates/tet:link-template
            /tet:te-link-attributes/tet:max-resv-link-bandwidth
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--rw odulist* [odu-type]
          +--rw odu-type    identityref
          +--rw number?     uint16
  augment /nw:networks/tet:te/tet:templates/tet:link-template
            /tet:te-link-attributes/tet:unreserved-bandwidth
            /tet:te-bandwidth/tet:technology:
    +--:(otn)
       +--rw odulist* [odu-type]
          +--rw odu-type    identityref
          +--rw number?     uint16
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:label-restrictions/tet:label-restriction:
    +--rw range-type?      otn-label-range-type
    +--rw tsg?             identityref
    +--rw odu-type-list*   identityref
    +--rw priority?        uint8
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:from/tet:label-restrictions
            /tet:label-restriction:
    +--rw range-type?      otn-label-range-type
    +--rw tsg?             identityref
    +--rw odu-type-list*   identityref
    +--rw priority?        uint8
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:to/tet:label-restrictions
            /tet:label-restriction:
    +--rw range-type?      otn-label-range-type
    +--rw tsg?             identityref
    +--rw odu-type-list*   identityref
    +--rw priority?        uint8
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:label-restrictions/tet:label-restriction:
    +--ro range-type?      otn-label-range-type
    +--ro tsg?             identityref
    +--ro odu-type-list*   identityref
    +--ro priority?        uint8
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:from/tet:label-restrictions
            /tet:label-restriction:
    +--ro range-type?      otn-label-range-type
    +--ro tsg?             identityref
    +--ro odu-type-list*   identityref
    +--ro priority?        uint8
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:to/tet:label-restrictions
            /tet:label-restriction:
    +--ro range-type?      otn-label-range-type
    +--ro tsg?             identityref
    +--ro odu-type-list*   identityref
    +--ro priority?        uint8
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities/tet:label-restrictions
            /tet:label-restriction:
    +--rw range-type?      otn-label-range-type
    +--rw tsg?             identityref
    +--rw odu-type-list*   identityref
    +--rw priority?        uint8
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities
            /tet:local-link-connectivity/tet:label-restrictions
            /tet:label-restriction:
    +--rw range-type?      otn-label-range-type
    +--rw tsg?             identityref
    +--rw odu-type-list*   identityref
    +--rw priority?        uint8
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes/tet:label-restrictions
            /tet:label-restriction:
    +--rw range-type?      otn-label-range-type
    +--rw tsg?             identityref
    +--rw odu-type-list*   identityref
    +--rw priority?        uint8
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:information-source-entry/tet:label-restrictions
            /tet:label-restriction:
    +--ro range-type?      otn-label-range-type
    +--ro tsg?             identityref
    +--ro odu-type-list*   identityref
    +--ro priority?        uint8
  augment /nw:networks/tet:te/tet:templates/tet:link-template
            /tet:te-link-attributes/tet:label-restrictions
            /tet:label-restriction:
    +--rw range-type?      otn-label-range-type
    +--rw tsg?             identityref
    +--rw odu-type-list*   identityref
    +--rw priority?        uint8
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:label-restrictions/tet:label-restriction
            /tet:label-start/tet:te-label/tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:label-restrictions/tet:label-restriction
            /tet:label-end/tet:te-label/tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:label-restrictions/tet:label-restriction
            /tet:label-step/tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:underlay/tet:primary-path/tet:path-element/tet:type
            /tet:label/tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:underlay/tet:backup-path/tet:path-element/tet:type
            /tet:label/tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:optimizations/tet:algorithm/tet:metric
            /tet:optimization-metric
            /tet:explicit-route-exclude-objects
            /tet:route-object-exclude-object/tet:type/tet:label
            /tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:optimizations/tet:algorithm/tet:metric
            /tet:optimization-metric
            /tet:explicit-route-include-objects
            /tet:route-object-include-object/tet:type/tet:label
            /tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:path-properties/tet:path-route-objects
            /tet:path-route-object/tet:type/tet:label/tet:label-hop
            /tet:te-label/tet:technology:
    +--:(otn)
       +--ro otn-tpn?   otn-tpn
       +--ro tsg?       identityref
       +--ro ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:from/tet:label-restrictions
            /tet:label-restriction/tet:label-start/tet:te-label
            /tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:from/tet:label-restrictions
            /tet:label-restriction/tet:label-end/tet:te-label
            /tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:from/tet:label-restrictions
            /tet:label-restriction/tet:label-step/tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:to/tet:label-restrictions
            /tet:label-restriction/tet:label-start/tet:te-label
            /tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:to/tet:label-restrictions
            /tet:label-restriction/tet:label-end/tet:te-label
            /tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:to/tet:label-restrictions
            /tet:label-restriction/tet:label-step/tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:underlay/tet:primary-path
            /tet:path-element/tet:type/tet:label/tet:label-hop
            /tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:underlay/tet:backup-path
            /tet:path-element/tet:type/tet:label/tet:label-hop
            /tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:optimizations/tet:algorithm
            /tet:metric/tet:optimization-metric
            /tet:explicit-route-exclude-objects
            /tet:route-object-exclude-object/tet:type/tet:label
            /tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:optimizations/tet:algorithm
            /tet:metric/tet:optimization-metric
            /tet:explicit-route-include-objects
            /tet:route-object-include-object/tet:type/tet:label
            /tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:path-properties
            /tet:path-route-objects/tet:path-route-object/tet:type
            /tet:label/tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--ro otn-tpn?   otn-tpn
       +--ro tsg?       identityref
       +--ro ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:label-restrictions/tet:label-restriction
            /tet:label-start/tet:te-label/tet:technology:
    +--:(otn)
       +--ro (range-type)?
          +--:(trib-port)
          |  +--ro otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--ro otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:label-restrictions/tet:label-restriction
            /tet:label-end/tet:te-label/tet:technology:
    +--:(otn)
       +--ro (range-type)?
          +--:(trib-port)
          |  +--ro otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--ro otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:label-restrictions/tet:label-restriction
            /tet:label-step/tet:technology:
    +--:(otn)
       +--ro (range-type)?
          +--:(trib-port)
          |  +--ro otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--ro otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:underlay/tet:primary-path/tet:path-element/tet:type
            /tet:label/tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--ro otn-tpn?   otn-tpn
       +--ro tsg?       identityref
       +--ro ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:underlay/tet:backup-path/tet:path-element/tet:type
            /tet:label/tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--ro otn-tpn?   otn-tpn
       +--ro tsg?       identityref
       +--ro ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:optimizations/tet:algorithm/tet:metric
            /tet:optimization-metric
            /tet:explicit-route-exclude-objects
            /tet:route-object-exclude-object/tet:type/tet:label
            /tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--ro otn-tpn?   otn-tpn
       +--ro tsg?       identityref
       +--ro ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:optimizations/tet:algorithm/tet:metric
            /tet:optimization-metric
            /tet:explicit-route-include-objects
            /tet:route-object-include-object/tet:type/tet:label
            /tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--ro otn-tpn?   otn-tpn
       +--ro tsg?       identityref
       +--ro ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:path-properties/tet:path-route-objects
            /tet:path-route-object/tet:type/tet:label/tet:label-hop
            /tet:te-label/tet:technology:
    +--:(otn)
       +--ro otn-tpn?   otn-tpn
       +--ro tsg?       identityref
       +--ro ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:from/tet:label-restrictions
            /tet:label-restriction/tet:label-start/tet:te-label
            /tet:technology:
    +--:(otn)
       +--ro (range-type)?
          +--:(trib-port)
          |  +--ro otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--ro otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:from/tet:label-restrictions
            /tet:label-restriction/tet:label-end/tet:te-label
            /tet:technology:
    +--:(otn)
       +--ro (range-type)?
          +--:(trib-port)
          |  +--ro otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--ro otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:from/tet:label-restrictions
            /tet:label-restriction/tet:label-step/tet:technology:
    +--:(otn)
       +--ro (range-type)?
          +--:(trib-port)
          |  +--ro otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--ro otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:to/tet:label-restrictions
            /tet:label-restriction/tet:label-start/tet:te-label
            /tet:technology:
    +--:(otn)
       +--ro (range-type)?
          +--:(trib-port)
          |  +--ro otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--ro otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:to/tet:label-restrictions
            /tet:label-restriction/tet:label-end/tet:te-label
            /tet:technology:
    +--:(otn)
       +--ro (range-type)?
          +--:(trib-port)
          |  +--ro otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--ro otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:to/tet:label-restrictions
            /tet:label-restriction/tet:label-step/tet:technology:
    +--:(otn)
       +--ro (range-type)?
          +--:(trib-port)
          |  +--ro otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--ro otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:underlay/tet:primary-path
            /tet:path-element/tet:type/tet:label/tet:label-hop
            /tet:te-label/tet:technology:
    +--:(otn)
       +--ro otn-tpn?   otn-tpn
       +--ro tsg?       identityref
       +--ro ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:underlay/tet:backup-path
            /tet:path-element/tet:type/tet:label/tet:label-hop
            /tet:te-label/tet:technology:
    +--:(otn)
       +--ro otn-tpn?   otn-tpn
       +--ro tsg?       identityref
       +--ro ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:optimizations/tet:algorithm
            /tet:metric/tet:optimization-metric
            /tet:explicit-route-exclude-objects
            /tet:route-object-exclude-object/tet:type/tet:label
            /tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--ro otn-tpn?   otn-tpn
       +--ro tsg?       identityref
       +--ro ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:optimizations/tet:algorithm
            /tet:metric/tet:optimization-metric
            /tet:explicit-route-include-objects
            /tet:route-object-include-object/tet:type/tet:label
            /tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--ro otn-tpn?   otn-tpn
       +--ro tsg?       identityref
       +--ro ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:path-properties
            /tet:path-route-objects/tet:path-route-object/tet:type
            /tet:label/tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--ro otn-tpn?   otn-tpn
       +--ro tsg?       identityref
       +--ro ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities/tet:label-restrictions
            /tet:label-restriction/tet:label-start/tet:te-label
            /tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities/tet:label-restrictions
            /tet:label-restriction/tet:label-end/tet:te-label
            /tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities/tet:label-restrictions
            /tet:label-restriction/tet:label-step/tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities/tet:underlay
            /tet:primary-path/tet:path-element/tet:type/tet:label
            /tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities/tet:underlay
            /tet:backup-path/tet:path-element/tet:type/tet:label
            /tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities/tet:optimizations
            /tet:algorithm/tet:metric/tet:optimization-metric
            /tet:explicit-route-exclude-objects
            /tet:route-object-exclude-object/tet:type/tet:label
            /tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities/tet:optimizations
            /tet:algorithm/tet:metric/tet:optimization-metric
            /tet:explicit-route-include-objects
            /tet:route-object-include-object/tet:type/tet:label
            /tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities/tet:path-properties
            /tet:path-route-objects/tet:path-route-object/tet:type
            /tet:label/tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--ro otn-tpn?   otn-tpn
       +--ro tsg?       identityref
       +--ro ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities
            /tet:local-link-connectivity/tet:label-restrictions
            /tet:label-restriction/tet:label-start/tet:te-label
            /tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities
            /tet:local-link-connectivity/tet:label-restrictions
            /tet:label-restriction/tet:label-end/tet:te-label
            /tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities
            /tet:local-link-connectivity/tet:label-restrictions
            /tet:label-restriction/tet:label-step/tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities
            /tet:local-link-connectivity/tet:underlay
            /tet:primary-path/tet:path-element/tet:type/tet:label
            /tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities
            /tet:local-link-connectivity/tet:underlay/tet:backup-path
            /tet:path-element/tet:type/tet:label/tet:label-hop
            /tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities
            /tet:local-link-connectivity/tet:optimizations
            /tet:algorithm/tet:metric/tet:optimization-metric
            /tet:explicit-route-exclude-objects
            /tet:route-object-exclude-object/tet:type/tet:label
            /tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities
            /tet:local-link-connectivity/tet:optimizations
            /tet:algorithm/tet:metric/tet:optimization-metric
            /tet:explicit-route-include-objects
            /tet:route-object-include-object/tet:type/tet:label
            /tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities
            /tet:local-link-connectivity/tet:path-properties
            /tet:path-route-objects/tet:path-route-object/tet:type
            /tet:label/tet:label-hop/tet:te-label/tet:technology:
    +--:(otn)
       +--ro otn-tpn?   otn-tpn
       +--ro tsg?       identityref
       +--ro ts-list?   string
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes/tet:underlay/tet:primary-path
            /tet:path-element/tet:type/tet:label/tet:label-hop
            /tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes/tet:underlay/tet:backup-path
            /tet:path-element/tet:type/tet:label/tet:label-hop
            /tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes/tet:label-restrictions
            /tet:label-restriction/tet:label-start/tet:te-label
            /tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes/tet:label-restrictions
            /tet:label-restriction/tet:label-end/tet:te-label
            /tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes/tet:label-restrictions
            /tet:label-restriction/tet:label-step/tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:information-source-entry/tet:label-restrictions
            /tet:label-restriction/tet:label-start/tet:te-label
            /tet:technology:
    +--:(otn)
       +--ro (range-type)?
          +--:(trib-port)
          |  +--ro otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--ro otn-ts?    otn-ts
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:information-source-entry/tet:label-restrictions
            /tet:label-restriction/tet:label-end/tet:te-label
            /tet:technology:
    +--:(otn)
       +--ro (range-type)?
          +--:(trib-port)
          |  +--ro otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--ro otn-ts?    otn-ts
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:information-source-entry/tet:label-restrictions
            /tet:label-restriction/tet:label-step/tet:technology:
    +--:(otn)
       +--ro (range-type)?
          +--:(trib-port)
          |  +--ro otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--ro otn-ts?    otn-ts
  augment /nw:networks/tet:te/tet:templates/tet:link-template
            /tet:te-link-attributes/tet:underlay/tet:primary-path
            /tet:path-element/tet:type/tet:label/tet:label-hop
            /tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/tet:te/tet:templates/tet:link-template
            /tet:te-link-attributes/tet:underlay/tet:backup-path
            /tet:path-element/tet:type/tet:label/tet:label-hop
            /tet:te-label/tet:technology:
    +--:(otn)
       +--rw otn-tpn?   otn-tpn
       +--rw tsg?       identityref
       +--rw ts-list?   string
  augment /nw:networks/tet:te/tet:templates/tet:link-template
            /tet:te-link-attributes/tet:label-restrictions
            /tet:label-restriction/tet:label-start/tet:te-label
            /tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/tet:te/tet:templates/tet:link-template
            /tet:te-link-attributes/tet:label-restrictions
            /tet:label-restriction/tet:label-end/tet:te-label
            /tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts
  augment /nw:networks/tet:te/tet:templates/tet:link-template
            /tet:te-link-attributes/tet:label-restrictions
            /tet:label-restriction/tet:label-step/tet:technology:
    +--:(otn)
       +--rw (range-type)?
          +--:(trib-port)
          |  +--rw otn-tpn?   otn-tpn
          +--:(trib-slot)
             +--rw otn-ts?    otn-ts


4. The YANG Code

<CODE BEGINS> file "ietf-otn-topology@2021-07-08.yang"

module ietf-otn-topology {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-otn-topology";
  prefix "otnt";

  import ietf-network {
    prefix "nw";
    reference "RFC 8345: A YANG Data Model for Network Topologies";
  }

  import ietf-network-topology {
    prefix "nt";
    reference "RFC 8345: A YANG Data Model for Network Topologies";
  }

  import ietf-te-topology {
    prefix "tet";
    reference
      "RFC 8795: YANG Data Model for Traffic Engineering
       (TE) Topologies";
  }

  import ietf-layer1-types {
    prefix "l1-types";
    reference
      "I-D.ietf-ccamp-layer1-types: A YANG Data Model
       for Layer 1 Types";
  }

  organization
    "IETF CCAMP Working Group";
  contact
    "WG Web: <http://tools.ietf.org/wg/ccamp/>
     WG List: <mailto:ccamp@ietf.org>

     Editor: Haomian Zheng
             <mailto:zhenghaomian@huawei.com>

     Editor: Italo Busi
             <mailto:italo.busi@huawei.com>

     Editor: Xufeng Liu
             <mailto:xufeng.liu.ietf@gmail.com>

     Editor: Sergio Belotti
             <mailto:sergio.belotti@nokia.com>

     Editor: Oscar Gonzalez de Dios
             <mailto:oscar.gonzalezdedios@telefonica.com>";

  description
    "This module defines a protocol independent Layer 1/ODU topology
     data model. The model fully conforms
     to the Network Management Datastore Architecture (NMDA).

     Copyright (c) 2021 IETF Trust and the persons
     identified as authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Simplified BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).
     This version of this YANG module is part of RFC XXXX; see
     the RFC itself for full legal notices.";

  revision 2021-07-08 {
    description
      "Initial Revision";
    reference
      "RFC XXXX: A YANG Data Model for Optical Transport Network
      Topology";
    // RFC Ed.: replace XXXX with actual RFC number, update date
    // information and remove this note
  }

 /*
  * Data nodes
  */

  augment "/nw:networks/nw:network/nw:network-types/"
        + "tet:te-topology" {
    container otn-topology {
      presence "indicates a topology type of Optical Transport
                Network (OTN)-electrical layer.";
      description "otn topology type";
    }
    description "augment network types to include otn newtork";
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes" {
    when "../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description "Augment only for otn network.";
    }
    description "Augment link configuration";

    leaf tsg {
      type identityref {
        base l1-types:tributary-slot-granularity;
      }
      description "Tributary slot granularity.";
      reference
        "G.709/Y.1331, February 2016: Interfaces for the
         Optical Transport Network (OTN)";
    }
    leaf distance {
      type uint32;
      description "distance in the unit of kilometers";
    }
  }

  augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
        + "tet:te" {
    when "../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description "Augment only for otn network";
    }
    description "OTN TP attributes config in ODU topology.";

    container client-svc {
      presence "client-facing LTP.";
      description
        "OTN LTP Service attributes.";

      leaf client-facing {
        type boolean;
        default 'false';
        description
          "Indicates whether this LTP is a client-facing LTP.";
      }
      leaf-list supported-client-signal {
        type identityref {
          base l1-types:client-signal;
        }
        description
          "List of client signal types supported by the LTP.";
      }
    }
  }

  /*
   * Augment TE bandwidth
   */

  augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
        + "tet:te/"
        + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment maximum LSP TE bandwidth for the link termination
       point (LTP).";
    case otn {
      uses l1-types:otn-path-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
    when "../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE bandwidth path constraints of the TE node
       connectivity matrices.";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
    when "../../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE bandwidth path constraints of the
       connectivity matrix entry.";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
    when "../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE bandwidth path constraints of the TE node
       connectivity matrices information source.";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
    when "../../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE bandwidth path constraints of the
       connectivity matrix entry information source";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:client-layer-adaptation/tet:switching-capability/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment client TE bandwidth of the tunnel termination point
       (TTP)";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/tet:path-constraints/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE bandwidth path constraints for the TTP
       Local Link Connectivities.";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:local-link-connectivity/tet:path-constraints/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE bandwidth path constraints for the TTP
       Local Link Connectivity entry.";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment maximum LSP TE bandwidth for the TE link.";
    case otn {
      uses l1-types:otn-path-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:max-link-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment maximum TE bandwidth for the TE link";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:max-resv-link-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment maximum reservable TE bandwidth for the TE link";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:unreserved-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment unreserved TE bandwidth for the TE Link";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:information-source-entry/"
        + "tet:interface-switching-capability/"
        + "tet:max-lsp-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment maximum LSP TE bandwidth for the TE link
       information source";
    case otn {
      uses l1-types:otn-path-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:information-source-entry/"
        + "tet:max-link-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment maximum TE bandwidth for the TE link
       information source";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:information-source-entry/"
        + "tet:max-resv-link-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment maximum reservable TE bandwidth for the TE link
       information-source";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:information-source-entry/"
        + "tet:unreserved-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment unreserved TE bandwidth of the TE link
       information source";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  augment "/nw:networks/tet:te/tet:templates/"
        + "tet:link-template/tet:te-link-attributes/"
        + "tet:interface-switching-capability/"
        + "tet:max-lsp-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    description
      "Augment maximum LSP TE bandwidth of the TE link
       template";
    case otn {
      uses l1-types:otn-path-bandwidth;
    }
  }

  augment "/nw:networks/tet:te/tet:templates/"
        + "tet:link-template/tet:te-link-attributes/"
        + "tet:max-link-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    description
      "Augment maximum TE bandwidth the TE link template";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  augment "/nw:networks/tet:te/tet:templates/"
        + "tet:link-template/tet:te-link-attributes/"
        + "tet:max-resv-link-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    description
      "Augment maximum reservable TE bandwidth for the TE link
       template.";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  augment "/nw:networks/tet:te/tet:templates/"
        + "tet:link-template/tet:te-link-attributes/"
        + "tet:unreserved-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    description
      "Augment unreserved TE bandwidth the TE link template";
    case otn {
      uses l1-types:otn-link-bandwidth;
    }
  }

  /*
   * Augment TE label range information
   */

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:label-restrictions/tet:label-restriction" {
    when "../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range information for the TE node
       connectivity matrices.";
    uses l1-types:otn-label-range-info;
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/tet:from/"
        + "tet:label-restrictions/tet:label-restriction" {
    when "../../../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range information for the source LTP
       of the connectivity matrix entry.";
    uses l1-types:otn-label-range-info;
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/tet:to/"
        + "tet:label-restrictions/tet:label-restriction" {
    when "../../../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range information for the destination LTP
       of the connectivity matrix entry.";
    uses l1-types:otn-label-range-info;
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/"
        + "tet:connectivity-matrices/tet:label-restrictions/"
        + "tet:label-restriction" {
    when "../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range information for the TE node
       connectivity matrices information source.";
    uses l1-types:otn-label-range-info;
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:from/tet:label-restrictions/tet:label-restriction" {
    when "../../../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range information for the source LTP
       of the connectivity matrix entry information source.";
    uses l1-types:otn-label-range-info;
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:to/tet:label-restrictions/tet:label-restriction" {
    when "../../../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range information for the destination LTP
       of the connectivity matrix entry information source.";
    uses l1-types:otn-label-range-info;
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:label-restrictions/tet:label-restriction" {
    when "../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range information for the TTP
       Local Link Connectivities.";
    uses l1-types:otn-label-range-info;
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:local-link-connectivity/"
        + "tet:label-restrictions/tet:label-restriction" {
    when "../../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range information for the TTP
       Local Link Connectivity entry.";
    uses l1-types:otn-label-range-info;
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:label-restrictions/tet:label-restriction" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range information for the TE link.";
    uses l1-types:otn-label-range-info;
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:information-source-entry/"
        + "tet:label-restrictions/tet:label-restriction" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range information for the TE link
       information source.";
    uses l1-types:otn-label-range-info;
  }

  augment "/nw:networks/tet:te/tet:templates/"
        + "tet:link-template/tet:te-link-attributes/"
        + "tet:label-restrictions/tet:label-restriction" {
    description
      "Augment TE label range information for the TE link template.";
    uses l1-types:otn-label-range-info;
  }

  /*
   * Augment TE label
   */

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-start/"
        + "tet:te-label/tet:technology" {
    when "../../../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range start for the TE node
       connectivity matrices";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:label-restrictions/"
        + "tet:label-restriction/tet:label-end/"
        + "tet:te-label/tet:technology" {
    when "../../../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range end for the TE node
       connectivity matrices";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:label-restrictions/"
        + "tet:label-restriction/tet:label-step/"
        + "tet:technology" {
    when "../../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range step for the TE node
       connectivity matrices";
    case otn {
      uses l1-types:otn-label-step;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:underlay/tet:primary-path/tet:path-element/"
        + "tet:type/tet:label/tet:label-hop/"
        + "tet:te-label/tet:technology" {
    when "../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the underlay primary path of the
       TE node connectivity matrices";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:underlay/tet:backup-path/tet:path-element/"
        + "tet:type/tet:label/tet:label-hop/"
        + "tet:te-label/tet:technology" {
    when "../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the underlay backup path of the
       TE node connectivity matrices";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:optimizations/tet:algorithm/tet:metric/"
        + "tet:optimization-metric/"
        + "tet:explicit-route-exclude-objects/"
        + "tet:route-object-exclude-object/"
        + "tet:type/tet:label/tet:label-hop/"
        + "tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects excluded
       by the path computation of the TE node connectivity
       matrices";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:optimizations/tet:algorithm/tet:metric/"
        + "tet:optimization-metric/"
        + "tet:explicit-route-include-objects/"
        + "tet:route-object-include-object/"
        + "tet:type/tet:label/tet:label-hop/"
        + "tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects included
       by the path computation of the TE node connectivity
       matrices";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:path-properties/tet:path-route-objects/"
        + "tet:path-route-object/tet:type/tet:label/tet:label-hop/"
        + "tet:te-label/tet:technology" {
    when "../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the computed path route objects
       of the TE node connectivity matrices";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/tet:from/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-start/"
        + "tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range start for the source LTP
       of the connectivity matrix entry.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/tet:from/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-end/"
        + "tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range end for the source LTP
       of the connectivity matrix entry.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/tet:from/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-step/"
        + "tet:technology" {
    when "../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range step for the source LTP
       of the connectivity matrix entry.";
    case otn {
      uses l1-types:otn-label-step;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/tet:to/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-start/"
        + "tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range start for the destination LTP
       of the connectivity matrix entry.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/tet:to/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-end/"
        + "tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range end for the destination LTP
       of the connectivity matrix entry.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/tet:to/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-step/"
        + "tet:technology" {
    when "../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range step for the destination LTP
       of the connectivity matrix entry.";
    case otn {
      uses l1-types:otn-label-step;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:underlay/tet:primary-path/tet:path-element/"
        + "tet:type/tet:label/tet:label-hop/"
        + "tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the underlay primary path
       of the connectivity matrix entry.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:underlay/tet:backup-path/tet:path-element/"
        + "tet:type/tet:label/tet:label-hop/"
        + "tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the underlay backup path
       of the connectivity matrix entry.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/tet:optimizations/"
        + "tet:algorithm/tet:metric/tet:optimization-metric/"
        + "tet:explicit-route-exclude-objects/"
        + "tet:route-object-exclude-object/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects excluded
       by the path computation of the connectivity matrix entry.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/tet:optimizations/"
        + "tet:algorithm/tet:metric/tet:optimization-metric/"
        + "tet:explicit-route-include-objects/"
        + "tet:route-object-include-object/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects included
       by the path computation of the connectivity matrix entry.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:te-node-attributes/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:path-properties/tet:path-route-objects/"
        + "tet:path-route-object/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the computed path route objects
       of the connectivity matrix entry.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/"
        + "tet:connectivity-matrices/tet:label-restrictions/"
        + "tet:label-restriction/"
        + "tet:label-start/tet:te-label/tet:technology" {
    when "../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range start for the TE node connectivity
       matrices information source.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/"
        + "tet:connectivity-matrices/tet:label-restrictions/"
        + "tet:label-restriction/"
        + "tet:label-end/tet:te-label/tet:technology" {
    when "../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range end for the TE node connectivity
       matrices information source.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/"
        + "tet:connectivity-matrices/tet:label-restrictions/"
        + "tet:label-restriction/"
        + "tet:label-step/tet:technology" {
    when "../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range step for the TE node connectivity
       matrices information source.";
    case otn {
      uses l1-types:otn-label-step;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the underlay primary path
       of the TE node connectivity matrices of the information
       source entry.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the underlay backup path
       of the TE node connectivity matrices of the information
       source entry.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:optimizations/tet:algorithm/tet:metric/"
        + "tet:optimization-metric/"
        + "tet:explicit-route-exclude-objects/"
        + "tet:route-object-exclude-object/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects excluded
       by the path computation of the TE node connectivity matrices
       information source.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:optimizations/tet:algorithm/tet:metric/"
        + "tet:optimization-metric/"
        + "tet:explicit-route-include-objects/"
        + "tet:route-object-include-object/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects included
       by the path computation of the TE node connectivity matrices
       information source.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:path-properties/tet:path-route-objects/"
        + "tet:path-route-object/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the computed path route objects
       of the TE node connectivity matrices information source.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:from/tet:label-restrictions/"
        + "tet:label-restriction/"
        + "tet:label-start/tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range start for the source LTP
       of the connectivity matrix entry information source.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }
  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:from/tet:label-restrictions/"
        + "tet:label-restriction/"
        + "tet:label-end/tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range end for the source LTP
       of the connectivity matrix entry information source.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:from/tet:label-restrictions/"
        + "tet:label-restriction/"
        + "tet:label-step/tet:technology" {
    when "../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range step for the source LTP
       of the connectivity matrix entry information source.";
    case otn {
      uses l1-types:otn-label-step;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:to/tet:label-restrictions/tet:label-restriction/"
        + "tet:label-start/tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range start for the destination LTP
       of the connectivity matrix entry information source.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:to/tet:label-restrictions/tet:label-restriction/"
        + "tet:label-end/tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range end for the destination LTP
       of the connectivity matrix entry information source.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:to/tet:label-restrictions/tet:label-restriction/"
        + "tet:label-step/tet:technology" {
    when "../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range step for the destination LTP
       of the connectivity matrix entry information source.";
    case otn {
      uses l1-types:otn-label-step;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the underlay primary path
       of the connectivity matrix entry information source.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the underlay backup path
       of the connectivity matrix entry information source.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:optimizations/tet:algorithm/tet:metric/"
        + "tet:optimization-metric/"
        + "tet:explicit-route-exclude-objects/"
        + "tet:route-object-exclude-object/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects excluded
       by the path computation of the connectivity matrix entry
       information source.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:optimizations/tet:algorithm/tet:metric/"
        + "tet:optimization-metric/"
        + "tet:explicit-route-include-objects/"
        + "tet:route-object-include-object/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects included
       by the path computation of the connectivity matrix entry
       information source.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:information-source-entry/tet:connectivity-matrices/"
        + "tet:connectivity-matrix/"
        + "tet:path-properties/tet:path-route-objects/"
        + "tet:path-route-object/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the computed path route objects
       of the connectivity matrix entry information source.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
      + "tet:tunnel-termination-point/"
      + "tet:local-link-connectivities/"
      + "tet:label-restrictions/tet:label-restriction/"
      + "tet:label-start/"
      + "tet:te-label/tet:technology" {
    when "../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range start for the TTP
       Local Link Connectivities.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-end/"
        + "tet:te-label/tet:technology"{
    when "../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range end for the TTP
       Local Link Connectivities.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-step/"
        + "tet:technology"{
    when "../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range step for the TTP
       Local Link Connectivities.";
    case otn {
      uses l1-types:otn-label-step;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the underlay primary path
       of the TTP Local Link Connectivities.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the underlay backup path
       of the TTP Local Link Connectivities.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:optimizations/tet:algorithm/tet:metric/"
        + "tet:optimization-metric/"
        + "tet:explicit-route-exclude-objects/"
        + "tet:route-object-exclude-object/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects excluded
       by the path computation of the TTP Local Link
       Connectivities.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:optimizations/tet:algorithm/tet:metric/"
        + "tet:optimization-metric/"
        + "tet:explicit-route-include-objects/"
        + "tet:route-object-include-object/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects included
       by the path computation of the TTP Local Link
       Connectivities.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:path-properties/tet:path-route-objects/"
        + "tet:path-route-object/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the computed path route objects
       of the TTP Local Link Connectivities.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:local-link-connectivity/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-start/tet:te-label/tet:technology" {
    when "../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range start for the TTP
       Local Link Connectivity entry.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:local-link-connectivity/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-end/tet:te-label/tet:technology" {
    when "../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range end for the TTP
       Local Link Connectivity entry.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:local-link-connectivity/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-step/tet:technology" {
    when "../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range step for the TTP
       Local Link Connectivity entry.";
    case otn {
      uses l1-types:otn-label-step;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:local-link-connectivity/"
        + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the underlay primary path
       of the TTP Local Link Connectivity entry.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:local-link-connectivity/"
        + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the underlay backup path
       of the TTP Local Link Connectivity entry.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:local-link-connectivity/"
        + "tet:optimizations/tet:algorithm/tet:metric/"
        + "tet:optimization-metric/"
        + "tet:explicit-route-exclude-objects/"
        + "tet:route-object-exclude-object/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects excluded
       by the path computation of the TTP Local Link
       Connectivity entry.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:local-link-connectivity/"
        + "tet:optimizations/tet:algorithm/tet:metric/"
        + "tet:optimization-metric/"
        + "tet:explicit-route-include-objects/"
        + "tet:route-object-include-object/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects included
       by the path computation of the TTP Local Link
       Connectivity entry.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nw:node/tet:te/"
        + "tet:tunnel-termination-point/"
        + "tet:local-link-connectivities/"
        + "tet:local-link-connectivity/"
        + "tet:path-properties/tet:path-route-objects/"
        + "tet:path-route-object/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the computed path route objects
       of the TTP Local Link Connectivity entry.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }
  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the underlay primary path
       of the TE link.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    when "../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label hop for the underlay backup path
       of the TE link.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-start/tet:te-label/tet:technology" {
    when "../../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range start for the TE link.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-end/tet:te-label/tet:technology" {
    when "../../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range end for the TE link.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-step/tet:technology" {
    when "../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range step for the TE link.";
    case otn {
      uses l1-types:otn-label-step;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:information-source-entry/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-start/tet:te-label/tet:technology" {
    when "../../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range start for the TE link
       information source.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:information-source-entry/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-end/tet:te-label/tet:technology" {
    when "../../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range end for the TE link
       information source.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:information-source-entry/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-step/tet:technology" {
    when "../../../../../../nw:network-types/tet:te-topology/"
       + "otnt:otn-topology" {
      description
        "Augmentation parameters apply only for networks with
         OTN topology type.";
    }
    description
      "Augment TE label range step for the TE link
       information source.";
    case otn {
      uses l1-types:otn-label-step;
    }
  }

  augment "/nw:networks/tet:te/tet:templates/"
        + "tet:link-template/tet:te-link-attributes/"
        + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    description
      "Augment TE label hop for the underlay primary path
       of the TE link template.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/tet:te/tet:templates/"
        + "tet:link-template/tet:te-link-attributes/"
        + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
        + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
    description
      "Augment TE label hop for the underlay backup path
       of the TE link template.";
    case otn {
      uses l1-types:otn-label-hop;
    }
  }

  augment "/nw:networks/tet:te/tet:templates/"
        + "tet:link-template/tet:te-link-attributes/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-start/tet:te-label/tet:technology" {
    description
      "Augment TE label range start for the TE link template.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/tet:te/tet:templates/"
        + "tet:link-template/tet:te-link-attributes/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-end/tet:te-label/tet:technology" {
    description
      "Augment TE label range end for the TE link template.";
    case otn {
      uses l1-types:otn-label-start-end;
    }
  }

  augment "/nw:networks/tet:te/tet:templates/"
        + "tet:link-template/tet:te-link-attributes/"
        + "tet:label-restrictions/tet:label-restriction/"
        + "tet:label-step/tet:technology" {
    description
      "Augment TE label range step for the TE link template.";
    case otn {
      uses l1-types:otn-label-step;
    }
  }
}


<CODE ENDS>

5. IANA Considerations

It is proposed to IANA to assign new URIs from the "IETF XML Registry" [RFC3688] as follows:


      URI: urn:ietf:params:xml:ns:yang:ietf-otn-topology
      Registrant Contact: The IESG
      XML: N/A; the requested URI is an XML namespace.

This document registers a YANG module in the YANG Module Names registry [RFC7950].


   name:         ietf-otn-topology
   namespace:    urn:ietf:params:xml:ns:yang:ietf-otn-topology
   prefix:       otnt
   reference:    RFC XXXX

6. Security Considerations

The YANG module specified in this document defines a schema for data that is designed to be accessed via network management protocols such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS [RFC8446].

The NETCONF access control model [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.

There are a number of data nodes defined in this YANG module that are writable/creatable/deletable (i.e., config true, which is the default). These data nodes may be considered sensitive or vulnerable in some network environments. Write operations (e.g., edit-config) to these data nodes without proper protection can have a negative effect on network operations. Considerations in Section 8 of [RFC8795]are also applicable to their subtrees in the module defined in this document.

Some of the readable data nodes in this YANG module may be considered sensitive or vulnerable in some network environments. It is thus important to control read access (e.g., via get, get-config, or notification) to these data nodes. Considerations in Section 8 of [RFC8795]are also applicable to their subtrees in the module defined in this document.

7. Acknowledgements

We would like to thank Igor Bryskin, Zhe Liu, Zheyu Fan and Daniele Ceccarelli for their comments and discussions.

8. Contributors

Aihua Guo Futurewei Email: aihuaguo.ietf@gmail.com

Anurag Sharma Google Email: ansha@google.com

Yunbin Xu CAICT Email: xuyunbin@caict.ac.cn

Lei Wang China Mobile Email: wangleiyj@chinamobile.com

Baoquan Rao Huawei Technologies Email: raobaoquan@huawei.com

Xian Zhang Huawei Technologies Email: zhang.xian@huawei.com

Huub van Helvoort Hai Gaoming BV the Netherlands Email: huubatwork@gmail.com

Victor Lopez Nokia Email: victor.lopez@nokia.com

Yunbo Li China Mobile Email: liyunbo@chinamobile.com

Dieter Beller Nokia Email: dieter.beller@nokia.com

Yanlei Zheng China Unicom Email: zhengyanlei@chinaunicom.cn

9. References

9.1. Normative References

[I-D.ietf-ccamp-layer1-types]
Zheng, H. and I. Busi, "A YANG Data Model for Layer 1 Types", Work in Progress, Internet-Draft, draft-ietf-ccamp-layer1-types-12, , <https://www.ietf.org/archive/id/draft-ietf-ccamp-layer1-types-12.txt>.
[I-D.ietf-ccamp-otn-tunnel-model]
Zheng, H., Busi, I., Belotti, S., Lopez, V., and Y. Xu, "OTN Tunnel YANG Model", Work in Progress, Internet-Draft, draft-ietf-ccamp-otn-tunnel-model-14, , <https://www.ietf.org/archive/id/draft-ietf-ccamp-otn-tunnel-model-14.txt>.
[ITU-Tg709]
ITU-, T., "SERIES G: TRANSMISSION SYSTEMS AND MEDIA, DIGITAL SYSTEMS AND NETWORKS; Digital networks; Interfaces for the optical transport network", ITU-T Rec. G.709 , .
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
[RFC3688]
Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, , <https://www.rfc-editor.org/info/rfc3688>.
[RFC4203]
Kompella, K., Ed. and Y. Rekhter, Ed., "OSPF Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS)", RFC 4203, DOI 10.17487/RFC4203, , <https://www.rfc-editor.org/info/rfc4203>.
[RFC6241]
Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, , <https://www.rfc-editor.org/info/rfc6241>.
[RFC6242]
Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, , <https://www.rfc-editor.org/info/rfc6242>.
[RFC7138]
Ceccarelli, D., Ed., Zhang, F., Belotti, S., Rao, R., and J. Drake, "Traffic Engineering Extensions to OSPF for GMPLS Control of Evolving G.709 Optical Transport Networks", RFC 7138, DOI 10.17487/RFC7138, , <https://www.rfc-editor.org/info/rfc7138>.
[RFC7139]
Zhang, F., Ed., Zhang, G., Belotti, S., Ceccarelli, D., and K. Pithewan, "GMPLS Signaling Extensions for Control of Evolving G.709 Optical Transport Networks", RFC 7139, DOI 10.17487/RFC7139, , <https://www.rfc-editor.org/info/rfc7139>.
[RFC7950]
Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, , <https://www.rfc-editor.org/info/rfc7950>.
[RFC8040]
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, , <https://www.rfc-editor.org/info/rfc8040>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
[RFC8341]
Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10.17487/RFC8341, , <https://www.rfc-editor.org/info/rfc8341>.
[RFC8342]
Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, "Network Management Datastore Architecture (NMDA)", RFC 8342, DOI 10.17487/RFC8342, , <https://www.rfc-editor.org/info/rfc8342>.
[RFC8345]
Clemm, A., Medved, J., Varga, R., Bahadur, N., Ananthakrishnan, H., and X. Liu, "A YANG Data Model for Network Topologies", RFC 8345, DOI 10.17487/RFC8345, , <https://www.rfc-editor.org/info/rfc8345>.
[RFC8446]
Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, , <https://www.rfc-editor.org/info/rfc8446>.
[RFC8795]
Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and O. Gonzalez de Dios, "YANG Data Model for Traffic Engineering (TE) Topologies", RFC 8795, DOI 10.17487/RFC8795, , <https://www.rfc-editor.org/info/rfc8795>.

9.2. Informative References

[I-D.ietf-ccamp-transport-nbi-app-statement]
Busi, I., King, D., Zheng, H., and Y. Xu, "Transport Northbound Interface Applicability Statement", Work in Progress, Internet-Draft, draft-ietf-ccamp-transport-nbi-app-statement-13, , <https://www.ietf.org/archive/id/draft-ietf-ccamp-transport-nbi-app-statement-13.txt>.
[I-D.ietf-teas-actn-yang]
Lee, Y., Zheng, H., Ceccarelli, D., Yoon, B. Y., and S. Belotti, "Applicability of YANG models for Abstraction and Control of Traffic Engineered Networks", Work in Progress, Internet-Draft, draft-ietf-teas-actn-yang-08, , <https://www.ietf.org/archive/id/draft-ietf-teas-actn-yang-08.txt>.
[RFC7062]
Zhang, F., Ed., Li, D., Li, H., Belotti, S., and D. Ceccarelli, "Framework for GMPLS and PCE Control of G.709 Optical Transport Networks", RFC 7062, DOI 10.17487/RFC7062, , <https://www.rfc-editor.org/info/rfc7062>.
[RFC8340]
Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, , <https://www.rfc-editor.org/info/rfc8340>.
[RFC8453]
Ceccarelli, D., Ed. and Y. Lee, Ed., "Framework for Abstraction and Control of TE Networks (ACTN)", RFC 8453, DOI 10.17487/RFC8453, , <https://www.rfc-editor.org/info/rfc8453>.

Authors' Addresses

Haomian Zheng
Huawei Technologies
H1, Huawei Industrial Base, Songshan Lake
Dongguan
Guangdong, 523808
China
Italo Busi
Huawei Technologies
HUAWEI TECHNOLOGIES ITALIA Srl Centro Direzionale Milano 2
20090 Milan Milan
Italy
Xufeng Liu
Volta Networks
Sergio Belotti
Nokia
Oscar Gonzalez de Dios
Telefonica