Internet-Draft ETH Topology Transport YANG Model March 2023
Zheng, et al. Expires 7 September 2023 [Page]
Workgroup:
CCAMP Working Group
Internet-Draft:
draft-ietf-ccamp-eth-client-te-topo-yang-04
Published:
Intended Status:
Standards Track
Expires:
Authors:
H. Zheng
Huawei Technologies
A. Guo
Futurewei
I. Busi
Huawei Technologies
Y. Xu
CAICT
Y. Zhao
China Mobile
X. Liu
Volta Networks

A YANG Data Model for Ethernet TE Topology

Abstract

A transport network is a server-layer network to provide connectivity services to its client. In this draft the topology of Ethernet with TE is described with YANG data model.

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 7 September 2023.

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. The topology model in Traffic-Engineered network has been defined in both generic way and technology-specific way. The generic model, which is the base TE YANG model, can be found at [RFC8795]. Technology-specific models, such as OTN/WSON topology model, have also been defined in [I-D.ietf-ccamp-otn-topo-yang] and [RFC9094] respectively. Corresponding topology on client-layer is also required, to have a complete topology view from the perspective of network controllers.

This document defines a data model of all client-layer Topology, using YANG language defined in [RFC7950]. The model is augmenting the generic TE topology model, and can be used by either applications exposing to a network controller or among controllers. Furthermore, it can be used by an application for topology description in client-layer network.

2. Terminology and Notations

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

3. YANG Model for Topology of Client Layer

3.1. 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
            /nt:termination-point:
    +--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
    +--rw eth-svc!
       +--rw client-facing?               boolean
       +--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
  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/tet:technology:
    +--:(eth)
       +--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
            /tet:technology:
    +--:(eth)
       +--rw eth-bandwidth?   uint64
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes/tet:unreserved-bandwidth
            /tet:te-bandwidth/tet:technology:
    +--:(eth)
       +--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
            /tet:technology:
    +--:(eth)
       +--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
            /tet:technology:
    +--:(eth)
       +--ro eth-bandwidth?   uint64
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:information-source-entry
            /tet:unreserved-bandwidth/tet:te-bandwidth
            /tet:technology:
    +--:(eth)
       +--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
            /tet:technology:
    +--:(eth)
       +--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
            /tet:technology:
    +--:(eth)
       +--rw eth-bandwidth?   uint64
  augment /nw:networks/tet:te/tet:templates
            /tet:link-template/tet:te-link-attributes
            /tet:unreserved-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:label-restrictions/tet:label-restriction:
    +--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:
    +--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
            /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:
    +--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
            /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:
    +--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: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:
    +--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
            /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:
    +--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
            /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:
    +--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: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:
    +--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
            /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:
    +--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/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:
    +--ro tag-type?   etht-types:eth-tag-type
    +--ro priority?   uint8
  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:
    +--rw tag-type?   etht-types:eth-tag-type
    +--rw priority?   uint8
  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


4. YANG Code for Topology Client Layer

4.1. The ETH Topology YANG Code

<CODE BEGINS> file "ietf-eth-te-topology@2019-11-18.yang"

module ietf-eth-te-topology {

  namespace "urn:ietf:params:xml:ns:yang:ietf-eth-te-topology";

  prefix "ethtetopo";

  import ietf-network {
    prefix "nw";
  }

  import ietf-network-topology {
    prefix "nt";
  }

  import ietf-te-topology {
    prefix "tet";
  }

  import ietf-yang-types {
    prefix "yang";
  }

  import ietf-eth-tran-types {
    prefix "etht-types";
  }

  organization
    "Internet Engineering Task Force (IETF) CCAMP WG";
  contact
    "
      WG List: <mailto:ccamp@ietf.org>

      ID-draft editor:
        Haomian Zheng (zhenghaomian@huawei.com);
        Italo Busi (italo.busi@huawei.com);
        Aihua Guo (aihuaguo.ietf@gmail.com);
        Yunbin Xu (xuyunbin@caict.ac.cn);
        Yang Zhao (zhaoyangyjy@chinamobile.com);
        Xufeng Liu (xufeng.liu.ietf@gmail.com);
    ";

  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) 2019 IETF Trust and the persons
     identified as authors of the code.  All rights reserved.

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

  revision 2019-11-18 {
    description
      "Initial Revision";
    reference
      "RFC XXXX: A YANG Data Model for Client-layer Topology";
    // RFC Ed.: replace XXXX with actual RFC number, update date
    // information and remove this note
  }

  /*
   * Groupings
   */

  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 attributes";

    /*
     * Open Issue: should we remove this attribute
     * (duplicates with I2RS L2 attributes)?
     */
    leaf ltp-mac-address {
      type yang:mac-address;
      description "the MAC address of the LTP.";
    }
    /*
     * Open Issue: should we remove this attribute
     * (duplicates with I2RS L2 attributes)?
     */
    leaf port-vlan-id {
      type etht-types:vlanid;
      description "the port VLAN ID of the LTP.";
    }
    /*
     * Open Issue: should we remove this attribute
     * (duplicates with I2RS L2 attributes)?
     */
    leaf maximum-frame-size {
      type uint16 {
        range "64 .. 65535";
      }
      description
        "Maximum frame size";
    }
      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.";
    }
    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.";
    }
    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-ltp-svc-attributes {
    description
      "Ethernet link termination point (LTP) service attributes.";

    container supported-classification {
      description
        "Service classification capability supported by the ETH 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.";
        /*
         * Open issue: indicates that second-tag-classification
         * can be True only if outer-tag-classification is also True.
        */
          leaf second-tag-classification {
            type boolean;
            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/nt:termination-point" {
    when "../../nw:network-types/tet:te-topology/"
      + "ethtetopo:eth-tran-topology" {
      description
        "Augment only for ETH transport network";
    }
    description
      "Augment ETH LTP attributes";

    uses eth-ltp-attributes;

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

      leaf client-facing {
        type boolean;
        default "false";
        description
          "Indicates whether this LTP is a client-facing LTP.";
      }
      uses eth-ltp-svc-attributes;
    }
  }

  /*
   * Augment TE bandwidth
   */

  /* Augment maximum LSP bandwidth of link terminationpoint (LTP) */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }
  /* Augment bandwidth path constraints of connectivity-matrices */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment bandwidth path constraints of connectivity-matrix */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment bandwidth path constraints of connectivity-matrices
   * information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment bandwidth path constraints of connectivity-matrix
   * information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment client bandwidth of tunnel termination point (TTP) */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment bandwidth path constraints of local-link-connectivities */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment bandwidth path constraints of local-link-connectivity */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment maximum LSP bandwidth of TE link */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment maximum bandwidth of TE link */
  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:max-link-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment maximum reservable bandwidth of TE link */
  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:max-resv-link-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment unreserved bandwidth of TE Link */
  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:te-link-attributes/"
        + "tet:unreserved-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }
  /* Augment maximum LSP bandwidth of TE link information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment maximum bandwidth of TE link information-source */
  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:information-source-entry/"
        + "tet:max-link-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment maximum reservable bandwidth of TE link
   * information-source */
  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:information-source-entry/"
        + "tet:max-resv-link-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment unreserved bandwidth of TE link information-source */
  augment "/nw:networks/nw:network/nt:link/tet:te/"
        + "tet:information-source-entry/"
        + "tet:unreserved-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
    when "../../../../../nw:network-types/tet:te-topology/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment maximum LSP bandwidth of TE link template */
  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" {
/*
    when "../../../../../../nw:network-types/tet:te-topology/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
*/
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment maximum bandwidth of TE link template */
  augment "/nw:networks/tet:te/tet:templates/"
        + "tet:link-template/tet:te-link-attributes/"
        + "tet:max-link-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
/*
    when "../../../../../nw:network-types/tet:te-topology/"
        + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
*/
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment maximum reservable bandwidth of TE link template */
  augment "/nw:networks/tet:te/tet:templates/"
        + "tet:link-template/tet:te-link-attributes/"
        + "tet:max-resv-link-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
/*
    when "../../../../../nw:network-types/tet:te-topology/"
        + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
*/
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /* Augment unreserved bandwidth of TE link template */
  augment "/nw:networks/tet:te/tet:templates/"
        + "tet:link-template/tet:te-link-attributes/"
        + "tet:unreserved-bandwidth/"
        + "tet:te-bandwidth/tet:technology" {
/*
    when "../../../../../../nw:network-types/tet:te-topology/"
        + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE bandwidth";
    }
*/
    description "Ethernet bandwidth.";
    case eth {
      uses etht-types:eth-bandwidth;
    }
  }

  /*
   * Augment TE label.
   */

  /* Augment label restrictions of connectivity-matrices */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label restriction.";
    uses etht-types:eth-label-restriction;
  }

  /* Augment label restrictions start of connectivity-matrices */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions end of connectivity-matrices */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions step of connectivity-matrices */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label-step;
    }
  }

  /* Augment label hop of underlay primary path of
   * connectivity-matrices */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }
  /* Augment label hop of underlay backup path of
   * connectivity-matrices */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of route-exclude of connectivity-matrices */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of route-include of connectivity-matrices */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of path-route of connectivity-matrices */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment ingress label restrictions of connectivity-matrix */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    uses etht-types:eth-label-restriction;
  }

  /* Augment ingress label restrictions start of
   * connectivity-matrix */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment ingress label restrictions end of connectivity-matrix */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment ingress label restrictions step of connectivity-matrix */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label-step;
    }
  }

  /* Augment egress label restrictions of connectivity-matrix */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    uses etht-types:eth-label-restriction;
  }

  /* Augment egress label restrictions start of
   * connectivity-matrix */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment egress label restrictions end of connectivity-matrix */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment egress label restrictions step of connectivity-matrix */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label-step;
    }
  }

/* Augment label hop of underlay primary path of connectivity-matrix */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

/* Augment label hop of underlay backup path of connectivity-matrix */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of route-exclude of connectivity-matrix */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of route-include of connectivity-matrix */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of path-route of connectivity-matrix */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions of connectivity-matrices
   * information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    uses etht-types:eth-label-restriction;
  }

  /* Augment label restrictions start of connectivity-matrices
   * information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions end of connectivity-matrices
   * information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions step of connectivity-matrices
   * information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label-step;
    }
  }

  /* Augment label hop of underlay primary path of
   * connectivity-matrices information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of underlay backup path of
   * connectivity-matrices information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of route-exclude of
   * connectivity-matrices information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of route-include of
   * connectivity-matrices information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of path-route of
   * connectivity-matrices information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment ingress label restrictions of
   * connectivity-matrix information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    uses etht-types:eth-label-restriction;
  }

  /* Augment ingress label restrictions start of
   * connectivity-matrix information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment ingress label restrictions end of
   * connectivity-matrix information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment ingress label restrictions step of
   * connectivity-matrix information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label-step;
    }
  }

  /* Augment egress label restrictions of
   * connectivity-matrix information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    uses etht-types:eth-label-restriction;
  }

  /* Augment egress label restrictions start of
   * connectivity-matrix information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment egress label restrictions end of
   * connectivity-matrix information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment egress label restrictions step of
   * connectivity-matrix information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label-step;
    }
  }

  /* Augment label hop of underlay primary path of
   * connectivity-matrix information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of underlay backup path of
   * connectivity-matrix information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of route-exclude of
   * connectivity-matrix information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of route-include of
   * connectivity-matrix information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of path-route of
   * connectivity-matrix information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }
  /* Augment label restrictions of local-link-connectivities */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    uses etht-types:eth-label-restriction;
  }

  /* Augment label restrictions start of local-link-connectivities */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions end of local-link-connectivities */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions step of local-link-connectivities */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label-step;
    }
  }

  /* Augment label hop of underlay primary path of
   * local-link-connectivities */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of underlay backup path of
   * local-link-connectivities */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of route-exclude of
   * local-link-connectivities */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of route-include of
   * local-link-connectivities */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of path-route of local-link-connectivities */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions of local-link-connectivity  */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    uses etht-types:eth-label-restriction;
  }

  /* Augment label restrictions start of local-link-connectivity */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions end of local-link-connectivity */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions step of local-link-connectivity  */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label-step;
    }
  }

  /* Augment label hop of underlay primary path of
   * local-link-connectivity */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of underlay backup path of
   * local-link-connectivity (LLC) */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of route-exclude of
   * local-link-connectivity (LLC) */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of route-include of
   * local-link-connectivity (LLC) */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of path-route of
   * local-link-connectivity (LLC) */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of underlay primary path of TE link */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of underlay backup path of TE link */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions of TE link */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    uses etht-types:eth-label-restriction;
  }

  /* Augment label restrictions start of TE link */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions end of TE link */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions step of TE link */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label-step;
    }
  }

  /* Augment label restrictions of TE link information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    uses etht-types:eth-label-restriction;
  }

  /* Augment label restrictions start of TE link information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }
  /* Augment label restrictions end of TE link information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions step of TE link information-source */
  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/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label-step;
    }
  }

  /* Augment label hop of underlay primary path of TE link template */
  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" {
/*
    when "../../../../../../../../../../"
       + "nw:network-types/tet:te-topology/"
       + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
*/
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label hop of underlay backup path of TE link template */
  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" {
/*
    when "../../../../../../../../../../nw:network-types/"
        + "tet:te-topology/ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
*/
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions of TE link template */
  augment "/nw:networks/tet:te/tet:templates/"
        + "tet:link-template/tet:te-link-attributes/"
        + "tet:label-restrictions/tet:label-restriction" {
/*
    when "../../../../../nw:network-types/tet:te-topology/"
        + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
*/
    description "Ethernet label.";
    uses etht-types:eth-label-restriction;
  }

  /* Augment label restrictions start of TE link template */
  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" {
/*
    when "../../../../../../../nw:network-types/tet:te-topology/"
        + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
*/
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions end of TE link template */
  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" {
/*
    when "../../../../../../../nw:network-types/tet:te-topology/"
        + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
*/
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label;
    }
  }

  /* Augment label restrictions step of TE link template */
  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" {
/*
    when "../../../../../../nw:network-types/tet:te-topology/"
        + "ethtetopo:eth-tran-topology" {
      description "Ethernet TE label";
    }
*/
    description "Ethernet label.";
    case eth {
      uses etht-types:eth-label-step;
    }
  }

}


<CODE ENDS>

5. Considerations and Open Issue

Editor Notes: This section is used to note temporary discussion/conclusion that to be fixed in the future version, and will be removed before publication.

Update in draft-zheng-ccamp-client-topo-yang-10: there is no open issue in this version.

201902: we have noticed that Ethernet is the only client signal (on the perspective of OTN) which need a topology. So it is possible that the title of this document will be changed to "A YANG Data Model for Ethernet Topology". The proposal of this work is that the document will follow up the progress of draft-zheng-ccamp-client-signal-yang, with draft-zheng-ccamp-client-tunnel-yang together. (solved in -06)

201902: will have to align with TE topology model, currently is a totally different format with necessary parameters, a big change is expected. (solved in -06.)

6. 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:       ethtetopo
         reference:    RFC XXXX (This document)

7. Manageability Considerations

TBD.

8. 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.

9. Acknowledgements

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

10. Contributors

Yanlei Zheng China Unicom Email: zhengyanlei@chinaunicom.cn

Zhe Liu Huawei Technologies, Email: liuzhe123@huawei.com

Sergio Belotti Nokia, Email: sergio.belotti@nokia.com

Yingxi Yao Shanghai Bell, yingxi.yao@nokia-sbell.com

Giuseppe Fioccola Huawei Technologies giuseppe.fioccola@huawei.com

11. References

11.1. Normative References

[I-D.ietf-ccamp-otn-topo-yang]
Zheng, H., Busi, I., Liu, X., Belotti, S., and O. G. de Dios, "A YANG Data Model for Optical Transport Network Topology", Work in Progress, Internet-Draft, draft-ietf-ccamp-otn-topo-yang-16, , <https://datatracker.ietf.org/doc/html/draft-ietf-ccamp-otn-topo-yang-16>.
[RFC3688]
Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, , <https://www.rfc-editor.org/info/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/info/rfc6241>.
[RFC7950]
Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, , <https://www.rfc-editor.org/info/rfc7950>.
[RFC8040]
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, , <https://www.rfc-editor.org/info/rfc8040>.
[RFC8795]
Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and O. Gonzalez de Dios, "YANG Data Model for Traffic Engineering (TE) Topologies", RFC 8795, DOI 10.17487/RFC8795, , <https://www.rfc-editor.org/info/rfc8795>.

11.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/info/rfc8340>.
[RFC9094]
Zheng, H., Lee, Y., Guo, A., Lopez, V., and D. King, "A YANG Data Model for Wavelength Switched Optical Networks (WSONs)", RFC 9094, DOI 10.17487/RFC9094, , <https://www.rfc-editor.org/info/rfc9094>.

Authors' Addresses

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
Volta Networks