Internet-Draft ETH Topology Transport YANG Model October 2024
Yu, et al. Expires 17 April 2025 [Page]
Workgroup:
CCAMP Working Group
Internet-Draft:
draft-ietf-ccamp-eth-client-te-topo-yang-07
Published:
Intended Status:
Standards Track
Expires:
Authors:
C. Yu
Huawei Technologies
H. Zheng
Huawei Technologies
A. Guo
Futurewei
I. Busi
Huawei Technologies
Y. Xu
CAICT
Y. Zhao
China Mobile
X. Liu
Alef Edge

A YANG Data Model for Ethernet TE Topology

Abstract

This document describes a YANG data model for Ethernet networks when used either as a client-layer network of an underlay transport network (e.g., an Optical Transport Network (OTN)) or as a transport network itself.

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 17 April 2025.

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 typically utilizes several different transport technologies such as the Optical Transport Networks (OTN) or packet transport such as provided by the MPLS-Transport Profile (MPLS-TP).

An Ethernet network can be either a client-layer network of an underlay transport network or a transport network itself.

This document describes a YANG data model for Ethernet networks when used as a client-layer network of an underlay transport network (e.g., an Optical Transport Network (OTN)) or as a transport network technology.

The YANG model defined in this document augments from the TE topology YANG model defined in [RFC8795], and imports from the generic Ethernet types defined in [I-D.ietf-ccamp-client-signal-yang].

The YANG data model in this document conforms to the Network Management Datastore Architecture defined in [RFC8342].

1.1. Terminology and Notations

The following terms are defined in [RFC7950] and are not redefined here:

  • client

  • server

  • augment

  • data model

  • data node

The following terms are defined in [RFC6241] and are not redefined here:

  • configuration data

  • state data

The terminology for describing YANG data models is found in [RFC7950].

1.2. Tree Diagram

A simplified graphical representation of the data model is used in Section 3 of this document. The meaning of the symbols in these diagrams is defined in [RFC8340].

1.3. Prefix in Data Node Names

In this document, the names of data nodes and other data model objects are prefixed using the standard prefix associated with the corresponding YANG imported modules, as shown in Table 1.

In this document, names of data nodes and other data model objects are prefixed using the standard prefix associated with the corresponding YANG imported modules, as shown in Table 1.

Table 1: Prefixes and corresponding YANG modules
Prefix YANG module Reference
yang ietf-yang-types [RFC6991]
etht-types ietf-eth-tran-types [RFCYYYY]
nw ietf-network [RFC8345]
nt ietf-network-topology [RFC8345]
tet ietf-te-topology [RFC8795]
etht ietf-eth-te-topology RFCXXXX

RFC Editor Note: Please replace YYYY and XXXX with the number assigned to the RFC once this draft becomes an RFC.

2. Ethernet Topology Model Overview

This document aims to describe the data model for Ethernet topology.

As a classic Traffic-engineering (TE) technology, Ethernet can provide packet switching in transport network [ITU_G.8021].

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 Ethernet network. Common types, identities and groupings defined in [I-D.ietf-ccamp-client-signal-yang] is reused in this document. [RFC8345] describes a network topology model and provides 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
                                   |
                      +------------+------------+
         Ethernet     |  ietf-eth-te-topology   |
                      +-------------------------+
Figure 1: Relationship between Ethernet and TE topology models

The entities and TE attributes, such as node, termination points and links, are still applicable for describing an Ethernet topology and the model presented in this document only specifies technology-specific attributes/information.

2.1. Attributes Augmentation

Given the guidance for augmentation in [RFC8795], the following technology-specific augmentations need to be provided:

  • A network-type to indicate that the TE topology is an Ethernet Topology, as follow:

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

2.2. TE Bandwidth Augmentations

Following the guidelines in [RFC8795], the model augments all the occurrences of the te-bandwidth container with the Ethernet technology specific attributes using the eth-bandwidth grouping defined in [I-D.ietf-ccamp-client-signal-yang].

2.3. TE Label Augmentations

The model augments all the occurrences of the label-restriction list with Ethernet technology specific attributes using the eth-label-restriction grouping defined in [I-D.ietf-ccamp-client-signal-yang].

Moreover, following the guidelines in [RFC8795], the model augments all the occurrences of the te-label container with the Ethernet technology specific attributes using the eth-label and eth-label-step groupings defined in [I-D.ietf-ccamp-client-signal-yang].

3. YANG Tree for Ethernet Topology

module: ietf-eth-te-topology

  augment /nw:networks/nw:network/nw:network-types/tet:te-topology:
    +--rw eth-tran-topology!
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes:
    +--rw eth-node!
  augment /nw:networks/nw:network/nt:link:
    +--rw eth-svc!
  augment /nw:networks/nw:network/nw:node/nt:termination-point:
    +--rw eth-svc!
    |  +--rw supported-classification
    |  |  +--rw port-classification?   boolean
    |  |  +--rw vlan-classification
    |  |     +--rw vlan-tag-classification?   boolean
    |  |     +--rw outer-tag
    |  |     |  +--rw supported-tag-types*
    |  |     |  |       etht-types:eth-tag-classify
    |  |     |  +--rw vlan-bundling?         boolean
    |  |     |  +--rw vlan-range?
    |  |     |          etht-types:vid-range-type
    |  |     +--rw second-tag
    |  |        +--rw second-tag-classification?   boolean
    |  |        +--rw supported-tag-types*
    |  |        |       etht-types:eth-tag-classify
    |  |        +--rw vlan-bundling?               boolean
    |  |        +--rw vlan-range?
    |  |                etht-types:vid-range-type
    |  +--rw supported-vlan-operations
    |     +--rw asymmetrical-operations?       boolean
    |     +--rw transparent-vlan-operations?   boolean
    |     +--rw vlan-pop
    |     |  +--rw vlan-pop-operations?   boolean
    |     |  +--rw max-pop-tags?          uint8
    |     +--rw vlan-push
    |        +--rw vlan-push-operation?   boolean
    |        +--rw outer-tag
    |        |  +--rw supported-tag-types*   etht-types:eth-tag-type
    |        |  +--rw vlan-range?
    |        |          etht-types:vid-range-type
    |        +--rw second-tag
    |           +--rw push-second-tag?       boolean
    |           +--rw supported-tag-types*   etht-types:eth-tag-type
    |           +--rw vlan-range?
    |                   etht-types:vid-range-type
    +--rw eth-link-tp
       +--rw ltp-mac-address?
       |       yang:mac-address
       +--rw port-vlan-id?
       |       etht-types:vlanid
       +--rw maximum-frame-size?                       uint16
       +--rw (direction)?
          +--:(symmetrical)
          |  +--rw ingress-egress-bandwidth-profile
          |     +--rw bandwidth-profile-type?
          |     |       etht-types:bandwidth-profile-type
          |     +--rw CIR?                      uint64
          |     +--rw CBS?                      uint64
          |     +--rw EIR?                      uint64
          |     +--rw EBS?                      uint64
          |     +--rw color-aware?              boolean
          |     +--rw coupling-flag?            boolean
          +--:(asymmetrical)
             +--rw ingress-bandwidth-profile
             |  +--rw bandwidth-profile-type?
             |  |       etht-types:bandwidth-profile-type
             |  +--rw CIR?                      uint64
             |  +--rw CBS?                      uint64
             |  +--rw EIR?                      uint64
             |  +--rw EBS?                      uint64
             |  +--rw color-aware?              boolean
             |  +--rw coupling-flag?            boolean
             +--rw egress-bandwidth-profile
                +--rw bandwidth-profile-type?
                |       etht-types:bandwidth-profile-type
                +--rw CIR?                      uint64
                +--rw CBS?                      uint64
                +--rw EIR?                      uint64
                +--rw EBS?                      uint64
                +--rw color-aware?              boolean
                +--rw coupling-flag?            boolean
  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:
    +--:(eth)
       +--rw eth-bandwidth?   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:
    +--:(eth)
       +--rw eth-bandwidth?   uint64
  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:
    +--:(eth)
       +--rw eth-bandwidth?   uint64
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:path-constraints/tet:te-bandwidth/tet:technology:
    +--:(eth)
       +--ro eth-bandwidth?   uint64
  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:
    +--:(eth)
       +--ro eth-bandwidth?   uint64
  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:
    +--:(eth)
       +--rw eth-bandwidth?   uint64
  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:
    +--:(eth)
       +--rw eth-bandwidth?   uint64
  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:
    +--:(eth)
       +--rw eth-bandwidth?   uint64
  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:
    +--:(eth)
       +--rw eth-bandwidth?   uint64
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes/tet:max-link-bandwidth
            /tet:te-bandwidth:
    +--rw eth-bandwidth?   uint64
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes/tet:max-resv-link-bandwidth
            /tet:te-bandwidth:
    +--rw eth-bandwidth?   uint64
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes/tet:unreserved-bandwidth
            /tet:te-bandwidth:
    +--rw eth-bandwidth?   uint64
  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:
    +--:(eth)
       +--ro eth-bandwidth?   uint64
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:information-source-entry/tet:max-link-bandwidth
            /tet:te-bandwidth:
    +--ro eth-bandwidth?   uint64
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:information-source-entry/tet:max-resv-link-bandwidth
            /tet:te-bandwidth:
    +--ro eth-bandwidth?   uint64
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:information-source-entry/tet:unreserved-bandwidth
            /tet:te-bandwidth:
    +--ro eth-bandwidth?   uint64
  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:
    +--:(eth)
       +--rw eth-bandwidth?   uint64
  augment /nw:networks/tet:te/tet:templates/tet:link-template
            /tet:te-link-attributes/tet:max-link-bandwidth
            /tet:te-bandwidth:
    +--rw eth-bandwidth?   uint64
  augment /nw:networks/tet:te/tet:templates/tet:link-template
            /tet:te-link-attributes/tet:max-resv-link-bandwidth
            /tet:te-bandwidth:
    +--rw eth-bandwidth?   uint64
  augment /nw:networks/tet:te/tet:templates/tet:link-template
            /tet:te-link-attributes/tet:unreserved-bandwidth
            /tet:te-bandwidth:
    +--rw eth-bandwidth?   uint64
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:label-restrictions/tet:label-restriction:
    +--rw ethernet-label-range!
       +--rw tag-type?   etht-types:eth-tag-type
       +--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 ethernet-label-range!
       +--rw tag-type?   etht-types:eth-tag-type
       +--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 ethernet-label-range!
       +--rw tag-type?   etht-types:eth-tag-type
       +--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 ethernet-label-range!
       +--ro tag-type?   etht-types:eth-tag-type
       +--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 ethernet-label-range!
       +--ro tag-type?   etht-types:eth-tag-type
       +--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 ethernet-label-range!
       +--ro tag-type?   etht-types:eth-tag-type
       +--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 ethernet-label-range!
       +--rw tag-type?   etht-types:eth-tag-type
       +--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 ethernet-label-range!
       +--rw tag-type?   etht-types:eth-tag-type
       +--rw priority?   uint8
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes/tet:label-restrictions
            /tet:label-restriction:
    +--rw ethernet-label-range!
       +--rw tag-type?   etht-types:eth-tag-type
       +--rw priority?   uint8
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:information-source-entry/tet:label-restrictions
            /tet:label-restriction:
    +--ro ethernet-label-range!
       +--ro tag-type?   etht-types:eth-tag-type
       +--ro priority?   uint8
  augment /nw:networks/tet:te/tet:templates/tet:link-template
            /tet:te-link-attributes/tet:label-restrictions
            /tet:label-restriction:
    +--rw ethernet-label-range!
       +--rw tag-type?   etht-types:eth-tag-type
       +--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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw eth-step?   uint16
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw eth-step?   uint16
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw eth-step?   uint16
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro eth-step?   uint16
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro eth-step?   uint16
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro eth-step?   uint16
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw eth-step?   uint16
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw eth-step?   uint16
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes/tet:label-restrictions
            /tet:label-restriction/tet:label-step/tet:technology:
    +--:(eth)
       +--rw eth-step?   uint16
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--ro vlanid?   etht-types:vlanid
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:information-source-entry/tet:label-restrictions
            /tet:label-restriction/tet:label-step/tet:technology:
    +--:(eth)
       +--ro eth-step?   uint16
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw vlanid?   etht-types:vlanid
  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:
    +--:(eth)
       +--rw eth-step?   uint16
Figure 2: Ethernet topology YANG tree

4. Ethernet Topology YANG Code

<CODE BEGINS> file "[email protected]"

module ietf-eth-te-topology {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-eth-te-topology";
  prefix "etht";

  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-yang-types {
    prefix "yang";
    reference
     "RFC 6991: Common YANG Data Types";
  }

  import ietf-eth-tran-types {
    prefix "etht-types";
    reference
     "RFC YYYY: A YANG Data Model for Transport Network Client
     Signals";
  }
  // RFC Ed.: replace YYYY with actual RFC number, update date
  // information and remove this note

  organization
    "IETF CCAMP Working Group";
  contact
    "WG Web: <https://datatracker.ietf.org/wg/ccamp/>
     WG List: <mailto:[email protected]>

     Editor: Haomian Zheng
       <mailto:[email protected]>

     Editor: Italo Busi
       <mailto:[email protected]>

     Editor: Aihua Guo
       <mailto:[email protected]>

     Editor: Yunbin Xu
       <mailto:[email protected]>

     Editor: Yang Zhao
       <mailto:[email protected]>

     Editor: Xufeng Liu
       <mailto:[email protected]>";

  description
    "This module defines a YANG data model for describing
     layer-2 Ethernet transport topologies. The model fully
     conforms to the Network Management Datastore
     Architecture (NMDA).

     Copyright (c) 2023 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 Revised 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.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.";

  revision 2023-09-28 {
    description
      "Initial Revision";
    reference
      "RFC XXXX: A YANG Data Model for Ethernet TE Topology";
    // RFC Ed.: replace XXXX with actual RFC number, update date
    // information and remove this note
  }

  /*
   * Groupings
   */

  grouping label-range-info {
    description
      "Ethernet technology-specific label range related
      information with a presence container indicating that the
      label range is an Ethernet technology-specific label range.

      This grouping SHOULD be used together with the
      eth-label and eth-label-step groupings to provide Ethernet
      technology-specific label information to the models which
      use the label-restriction-info grouping defined in the module
      ietf-te-types.";

    container ethernet-label-range {
      presence
        "Indicates the label range is an Ethernet label range.

        This container must not be present if there are other
        presence containers or attributes indicating another type
        of label range.";
      description
        "Ethernet-specific label range related information.";

      uses etht-types:eth-label-restriction;
    }
  }

  grouping eth-tran-topology-type {
    description
      "Identifies the Ethernet Transport topology type";

    container eth-tran-topology {
      presence "indicates a topology type of
                Ethernet Transport Network.";
      description "Eth transport topology type";
    }
  }

  grouping ltp-bandwidth-profiles {
    description
      "A grouping which represents the bandwidth profile(s)
      for the ETH LTP.";

    choice direction {
      description
        "Whether the bandwidth profiles are symmetrical or
         asymmetrical";
      case symmetrical {
        description
          "The same bandwidth profile is used to describe the ingress
           and the egress bandwidth profile.";

        container ingress-egress-bandwidth-profile {
          description
            "The bandwith profile used in the ingress and egress
             direction.";
          uses etht-types:etht-bandwidth-profiles;
        }
      }
      case asymmetrical {
        description
          "Different ingress and egress bandwidth profiles
           can be specified.";
        container ingress-bandwidth-profile {
          description
            "The bandwidth profile used in the ingress direction.";
          uses etht-types:etht-bandwidth-profiles;
        }
        container egress-bandwidth-profile {
          description
            "The bandwidth profile used in the egress direction.";
          uses etht-types:etht-bandwidth-profiles;
        }
      }
    }
  }

  grouping eth-ltp-attributes {
    description
      "Ethernet transport Link Termination Point (LTP) attributes";

    leaf ltp-mac-address {
      type yang:mac-address;
      description
        "The MAC address of the Ethernet LTP.";
    }
    leaf port-vlan-id {
      type etht-types:vlanid;
      description
        "The Port VLAN ID of the Ethernet LTP.";
      reference
        "IEEE 802.1Q: Virtual Bridged Local Area Networks";
    }
    leaf maximum-frame-size {
      type uint16 {
        range "64 .. 65535";
      }
      description
        "Maximum frame size";
      reference
        "IEEE 802.1Q: Virtual Bridged Local Area Networks";
    }
      uses ltp-bandwidth-profiles;
  }

  grouping svc-vlan-classification {
    description
      "Grouping defining the capabilities for VLAN classification.";

    leaf-list supported-tag-types {
      type etht-types:eth-tag-classify;
      description
        "List of VLAN tag types that can be used for the VLAN
         classification. In case VLAN classification is not
         supported, the list is empty.";
    }
    leaf vlan-bundling {
      type boolean;
      description
        "In case VLAN classification is supported, indicates whether
        VLAN bundling classification is also supported.";
      reference
        "MEF 10.3: Ethernet Services Attributes Phase 3";
    }
    leaf vlan-range {
      type etht-types:vid-range-type;
      description
        "In case VLAN classification is supported, indicates the
        of available VLAN ID values.";
    }
  }

  grouping svc-vlan-push {
    description
      "Grouping defining the capabilities for VLAN push or swap
       operations.";

    leaf-list supported-tag-types {
      type etht-types:eth-tag-type;
      description
        "List of VLAN tag types that can be used to push or swap a
         VLAN tag. In case VLAN push/swap is not supported, the list
         is empty.";
      reference
        "IEEE 802.1Q: Virtual Bridged Local Area Networks";
    }
    leaf vlan-range {
      type etht-types:vid-range-type;
      description
        "In case VLAN push/swap operation is supported, the range
        of available VLAN ID values.";
    }
  }

  grouping eth-svc-attributes {
    description
      "Ethernet Link Termination Point (LTP) service attributes.";

    container supported-classification {
      description
        "Service classification capability supported by the
        Ethernet Link Termination Point (LTP).";

      leaf port-classification {
        type boolean;
        description
          "Indicates that the ETH LTP support port-based service
          classification.";
      }
      container vlan-classification {
        description
          "Service classification capabilities based on the VLAN
           tag(s) supported by the ETH LTP.";

        leaf vlan-tag-classification {
          type boolean;
          description
            "Indicates that the ETH LTP supports VLAN service
            classification.";
        }
        container outer-tag {
          description
            "Service classification capabilities based on the outer
             VLAN tag, supported by the ETH LTP.";
          uses svc-vlan-classification;
        }
        container second-tag {
          description
            "Service classification capabilities based on the second
             VLAN tag, supported by the ETH LTP.";
          leaf second-tag-classification {
            type boolean;
            must ". = 'false' or "
               + "../../vlan-tag-classification = 'true'" {
              description
                "VLAN service classification based on the second
                VLAN tag can be supported only when VLAN service
                classification";
            }
            description
              "Indicates that the ETH LTP support  VLAN service
               classification based on the second VLAN tag.";
          }
          uses svc-vlan-classification;
        }
      }
    }

    container supported-vlan-operations {
      description
        "Reports the VLAN operations supported by the ETH LTP.";

      leaf asymmetrical-operations {
        type boolean;
        description
          "Indicates whether the ETH LTP supports also asymmetrical
           VLAN operations.It is assumed that symmetrical VLAN
           operations are alwyas supported.";
      }
      leaf transparent-vlan-operations {
        type boolean;
        description
          "Indicates that the ETH LTP supports transparent
          operations.";
      }
      container vlan-pop {
        description
          "Indicates VLAN pop or swap operations capabilities.";

        leaf vlan-pop-operations {
          type boolean;
          description
            "Indicates that the ETH LTP supports VLAN pop or
             swap operations.";
        }
        leaf max-pop-tags {
          type uint8 {
            range "1..2";
          }
          description
            "Indicates the maximum number of tags that can be
             popped/swapped.";
        }
      }
      container vlan-push {
        description
          "Indicates VLAN push or swap operations capabilities.";

        leaf vlan-push-operation {
          type boolean;
          description
            "Indicates that the ETH LTP supports VLAN push or
             swap operations.";
        }
        container outer-tag {
          description
            "Indicates the supported VLAN operation capabilities
             on the outer VLAN tag.";
          uses svc-vlan-push;
        }
        container second-tag {
          description
            "Indicates the supported VLAN operation capabilities
             on the second VLAN tag.";
          leaf push-second-tag {
            type boolean;
            description
              "Indicates that the ETH LTP supports VLAN push or swap
               operations for the second VLAN tag.";
          }
          uses svc-vlan-push;
        }
      }
    }
  }

  /*
   * Data nodes
   */

  augment "/nw:networks/nw:network/nw:network-types/"
        + "tet:te-topology" {
    description
      "Augment network types to include ETH transport newtork";

    uses eth-tran-topology-type;
  }

  augment "/nw:networks/nw:network/nw:node/tet:te"
        + "/tet:te-node-attributes" {
    when "../../../nw:network-types/tet:te-topology/"
       + "etht:eth-tran-topology" {
      description "Augment only for Ethernet transport network.";
    }
    description "Augment TE node attributes.";
    container eth-node {
      presence "The TE node is an Ethernet node.";
      description
        "Presence container used only to indicate that the TE node
        is an Ethernet node.";
    }
  }

  augment "/nw:networks/nw:network/nt:link" {
    when "../nw:network-types/tet:te-topology/"
       + "etht:eth-tran-topology" {
      description "Augment only for Ethernet transport network.";
    }
    description "Augment link configuration";

    container eth-svc {
      presence
        "When present, indicates that the Link supports Ethernet
        client signals.";
      description
        "Presence container used only to indicate that the link
        supports Ethernet client signals.";
    }
  }

  augment "/nw:networks/nw:network/nw:node/nt:termination-point" {
    when "../../nw:network-types/tet:te-topology/"
       + "etht:eth-tran-topology" {
      description "Augment only for Ethernet transport network.";
    }
    description
      "Augment ETH LTP attributes";

    container eth-svc {
      presence
        "When present, indicates that the Link Termination Point
        (LTP) supports Ethernet client signals.";
      description
        "ETH LTP Service attributes.";

      uses eth-svc-attributes;
    }
    container eth-link-tp {
      description
        "Attributes of the Ethernet Link Termination Point (LTP).";
      uses eth-ltp-attributes;
    }
  }

  /*
   * 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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment maximum LSP TE bandwidth for the link termination
       point (LTP).";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE bandwidth path constraints of the TE node
       connectivity matrices.";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE bandwidth path constraints of the
       connectivity matrix entry.";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE bandwidth path constraints of the TE node
       connectivity matrices information source.";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE bandwidth path constraints of the
       connectivity matrix entry information source";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment client TE bandwidth of the tunnel termination point
       (TTP)";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE bandwidth path constraints for the TTP
       Local Link Connectivities.";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE bandwidth path constraints for the TTP
       Local Link Connectivity entry.";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment maximum LSP TE bandwidth for the TE link.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:max-link-bandwidth/"
        + "tet:te-bandwidth" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment maximum TE bandwidth for the TE link";
    uses etht-types:eth-bandwidth;
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:max-resv-link-bandwidth/"
        + "tet:te-bandwidth" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment maximum reservable TE bandwidth for the TE link";
    uses etht-types:eth-bandwidth;
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:unreserved-bandwidth/"
        + "tet:te-bandwidth" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment unreserved TE bandwidth for the TE Link";
    uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment maximum LSP TE bandwidth for the TE link
       information source";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:information-source-entry/"
        + "tet:max-link-bandwidth/"
        + "tet:te-bandwidth" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment maximum TE bandwidth for the TE link
       information source";
    uses etht-types:eth-bandwidth;
  }

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

  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:information-source-entry/"
        + "tet:unreserved-bandwidth/"
        + "tet:te-bandwidth" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment unreserved TE bandwidth of the TE link
       information source";
    uses etht-types:eth-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 eth {
      uses etht-types:eth-bandwidth;
    }
  }

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

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

  augment "/nw:networks/tet:te/tet:templates/"
        + "tet:link-template/tet:te-link-attributes/"
        + "tet:unreserved-bandwidth/"
        + "tet:te-bandwidth" {
    description
      "Augment unreserved TE bandwidth the TE link template";
    uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE label range information for the TE node
       connectivity matrices.";
    uses 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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE label range information for the source LTP
       of the connectivity matrix entry.";
    uses 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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE label range information for the destination LTP
       of the connectivity matrix entry.";
    uses 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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE label range information for the TE node
       connectivity matrices information source.";
    uses 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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE label range information for the source LTP
       of the connectivity matrix entry information source.";
    uses 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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE label range information for the destination LTP
       of the connectivity matrix entry information source.";
    uses 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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE label range information for the TTP
       Local Link Connectivities.";
    uses 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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE label range information for the TTP
       Local Link Connectivity entry.";
    uses 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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE label range information for the TE link.";
    uses 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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
        Ethernet topology type.";
    }
    description
      "Augment TE label range information for the TE link
       information source.";
    uses 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 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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range start for the TE node
       connectivity matrices";
    case eth {
      uses etht-types:eth-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-end/"
        + "tet:te-label/tet:technology" {
    when "../../../../../../../../nw:network-types/tet:te-topology/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range end for the TE node
       connectivity matrices";
    case eth {
      uses etht-types:eth-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-step/"
        + "tet:technology" {
    when "../../../../../../../nw:network-types/tet:te-topology/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range step for the TE node
       connectivity matrices";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the underlay primary path of the
       TE node connectivity matrices";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the underlay backup path of the
       TE node connectivity matrices";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects excluded
       by the path computation of the TE node connectivity
       matrices";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects included
       by the path computation of the TE node connectivity
       matrices";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the computed path route objects
       of the TE node connectivity matrices";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range start for the source LTP
       of the connectivity matrix entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range end for the source LTP
       of the connectivity matrix entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range step for the source LTP
       of the connectivity matrix entry.";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range start for the destination LTP
       of the connectivity matrix entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range end for the destination LTP
       of the connectivity matrix entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range step for the destination LTP
       of the connectivity matrix entry.";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the underlay primary path
       of the connectivity matrix entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the underlay backup path
       of the connectivity matrix entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects excluded
       by the path computation of the connectivity matrix entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects included
       by the path computation of the connectivity matrix entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the computed path route objects
       of the connectivity matrix entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range start for the TE node connectivity
       matrices information source.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range end for the TE node connectivity
       matrices information source.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range step for the TE node connectivity
       matrices information source.";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the underlay primary path
       of the TE node connectivity matrices of the information
       source entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the underlay backup path
       of the TE node connectivity matrices of the information
       source entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet 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 eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet 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 eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the computed path route objects
       of the TE node connectivity matrices information source.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range start for the source LTP
       of the connectivity matrix entry information source.";
    case eth {
      uses etht-types:eth-label;
    }
  }
  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range end for the source LTP
       of the connectivity matrix entry information source.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range step for the source LTP
       of the connectivity matrix entry information source.";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range start for the destination LTP
       of the connectivity matrix entry information source.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range end for the destination LTP
       of the connectivity matrix entry information source.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range step for the destination LTP
       of the connectivity matrix entry information source.";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the underlay primary path
       of the connectivity matrix entry information source.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the underlay backup path
       of the connectivity matrix entry information source.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet 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 eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet 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 eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the computed path route objects
       of the connectivity matrix entry information source.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range start for the TTP
       Local Link Connectivities.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range end for the TTP
       Local Link Connectivities.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range step for the TTP
       Local Link Connectivities.";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the underlay primary path
       of the TTP Local Link Connectivities.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the underlay backup path
       of the TTP Local Link Connectivities.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects excluded
       by the path computation of the TTP Local Link
       Connectivities.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the explicit route objects included
       by the path computation of the TTP Local Link
       Connectivities.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the computed path route objects
       of the TTP Local Link Connectivities.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range start for the TTP
       Local Link Connectivity entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range end for the TTP
       Local Link Connectivity entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range step for the TTP
       Local Link Connectivity entry.";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the underlay primary path
       of the TTP Local Link Connectivity entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the underlay backup path
       of the TTP Local Link Connectivity entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet 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 eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet 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 eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the computed path route objects
       of the TTP Local Link Connectivity entry.";
    case eth {
      uses etht-types:eth-label;
    }
  }
  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the underlay primary path
       of the TE link.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label hop for the underlay backup path
       of the TE link.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range start for the TE link.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range end for the TE link.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range step for the TE link.";
    case eth {
      uses etht-types:eth-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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range start for the TE link
       information source.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range end for the TE link
       information source.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  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/"
       + "etht:eth-tran-topology" {
      description
        "Augmentation parameters apply only for networks with
         Ethernet topology type.";
    }
    description
      "Augment TE label range step for the TE link
       information source.";
    case eth {
      uses etht-types:eth-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 eth {
      uses etht-types:eth-label;
    }
  }

  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 eth {
      uses etht-types:eth-label;
    }
  }

  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 eth {
      uses etht-types:eth-label;
    }
  }

  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 eth {
      uses etht-types:eth-label;
    }
  }

  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 eth {
      uses etht-types:eth-label-step;
    }
  }

}

<CODE ENDS>
Figure 3: Ethernet topology YANG module

5. IANA Considerations

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

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

This document registers following YANG modules in the YANG Module Names registry [RFC7950].

      name:      ietf-eth-te-topology
      namespace: urn:ietf:params:xml:ns:yang:ietf-eth-te-topology
      prefix:    etht
      reference: RFC XXXX

RFC Editor: Please replace XXXX with the RFC number assigned to this document.

6. Manageability Considerations

TBD.

7. Security Considerations

The data following the model defined in this document is exchanged via, for example, the interface between an orchestrator and a transport network controller. The security concerns mentioned in [RFC8795] for using ietf-te-topology.yang model also applies to this document.

The YANG module defined in this document can be accessed via the RESTCONF protocol defined in [RFC8040], or maybe via the NETCONF protocol [RFC6241].

There are a number of data nodes defined in the YANG module which 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., POST) to these data nodes without proper protection can have a negative effect on network operations.

Editors note: to list specific subtrees and data nodes and their sensitivity/vulnerability.

8. References

8.1. Normative References

[I-D.ietf-ccamp-client-signal-yang]
Zheng, H., Guo, A., Busi, I., Snitser, A., and C. Yu, "A YANG Data Model for Transport Network Client Signals", Work in Progress, Internet-Draft, draft-ietf-ccamp-client-signal-yang-13, , <https://datatracker.ietf.org/doc/html/draft-ietf-ccamp-client-signal-yang-13>.
[ITU_G.8021]
ITU-T Recommendation G.8021, "Characteristics of Ethernet transport network equipment functional blocks", ITU-T G.8021 , .
[RFC3688]
Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, , <https://www.rfc-editor.org/rfc/rfc3688>.
[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/rfc/rfc6241>.
[RFC6991]
Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, DOI 10.17487/RFC6991, , <https://www.rfc-editor.org/rfc/rfc6991>.
[RFC7950]
Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, , <https://www.rfc-editor.org/rfc/rfc7950>.
[RFC8040]
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, , <https://www.rfc-editor.org/rfc/rfc8040>.
[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/rfc/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/rfc/rfc8345>.
[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/rfc/rfc8795>.

8.2. Informative References

[RFC8340]
Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, , <https://www.rfc-editor.org/rfc/rfc8340>.

Acknowledgments

We would like to thank Igor Bryskin and Daniel King for their comments and discussions.

Contributors

Zhe Liu
Huawei Technologies
Sergio Belotti
Nokia
Yingxi Yao
Shanghai Bell
Giuseppe Fioccola
Huawei Technologies
Yanlei Zheng
China Unicom

Authors' Addresses

Chaode Yu
Huawei Technologies
Haomian Zheng
Huawei Technologies
H1, Huawei Xiliu Beipo Village, Songshan Lake
Dongguan
Guangdong, 523808
China
Aihua Guo
Futurewei
Italo Busi
Huawei Technologies
Yunbin Xu
CAICT
Yang Zhao
China Mobile
Xufeng Liu
Alef Edge