<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.4.19 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-bgk-ccamp-merged-wdm-tunnel-00" category="std" consensus="true" submissionType="IETF">

  <front>
    <title abbrev="A YANG Data Model for WDM Tunnels">A YANG Data Model for WDM Tunnels</title>

    <author initials="A." surname="Guo" fullname="Aihua Guo">
      <organization>Futurewei Technologies</organization>
      <address>
        <email>aihuaguo.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="S." surname="Belotti" fullname="Sergio Belotti">
      <organization>Nokia</organization>
      <address>
        <email>Sergio.belotti@nokia.com</email>
      </address>
    </author>
    <author initials="G." surname="Galimberti" fullname="G. Galimberti">
      <organization>Individual</organization>
      <address>
        <email>ggalimbe56@gmail.com</email>
      </address>
    </author>
    <author initials="J.E.L.d.V." surname="Mendez" fullname="Jorge E. Lopez de Vergara Mendez">
      <organization>Naudit HPCN</organization>
      <address>
        <email>jorge.lopez_vergara@uam.es</email>
      </address>
    </author>
    <author initials="D.P." surname="Burrero" fullname="Daniel Perdices Burrero">
      <organization>Universidad Autonoma de Madrid</organization>
      <address>
        <email>daniel.perdices@uam.es</email>
      </address>
    </author>

    <date year="2023" month="October" day="23"/>

    
    <workgroup>CCAMP Working Group</workgroup>
    <keyword>next generation</keyword> <keyword>unicorn</keyword> <keyword>sparkling distributed ledger</keyword>

    <abstract>


<t>This document defines a YANG data model for the provisioning and management of Traffic Engineering (TE) tunnels and Label Switched Paths (LSPs) in Optical Networks (Wavelength Switched Optical Networks (WSON) and Flexi-Grid Dense Wavelength Division Multiplexing (DWDM) Networks).</t>

<t>The YANG data model defined in this document conforms to the Network Management Datastore Architecture (NMDA).</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>Transport networks have evolved from traditional Wavelength Switched Optical Networks (WSON) systems <xref target="RFC6163"/> based on only fixed-grid wavelength switching, towards elastic optical networks,
based on flexi-grid Dense Wavelength Division Multiplexing (DWDM) transmission and switching technologies <xref target="RFC7698"/>. Such technology aims
at increasing transport network scalability and flexibility, allowing bandwidth usage optimization.</t>

<t>While <xref target="RFC9094"/> <xref target="I-D.ietf-ccamp-flexigrid-yang"/> focus on flexi-grid objects such as nodes, transponders
and links, this document presents a YANG <xref target="RFC7950"/> model for the provisioning and management of Traffic Engineering (TE) tunnels and Label Switched Paths (LSPs) in DWDM Optical Networks, which can be Wavelength Switched Optical Networks (WSON) networks or Flexi-Grid Dense Wavelength Division Multiplexing (DWDM) Networks, or a mix of these two networks. This YANG module defines the path from a source transponder or node to the destination through several intermediate nodes in such a WDM optical network.</t>

<t>This document identifies the WDM tunnel components, parameters and their values, and
characterizes the features and the performances of the WDM elements. An application example is
provided towards the end of the document to understand their utility better.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

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

<t>The terminology for describing YANG data models is found in
   <xref target="RFC7950"/>.</t>

<t>Refer to <xref target="RFC7446"/> and <xref target="RFC7699"/> for the key terms used in this document.</t>

<t>The following terms are defined in <xref target="RFC7950"/> and are not redefined here:
   -  client</t>

<t><list style="symbols">
  <t>server</t>
  <t>augment</t>
  <t>data model</t>
  <t>data node</t>
</list></t>

<t>The following terms are defined in <xref target="RFC6241"/> and are not redefined here:
   -  configuration data</t>

<t><list style="symbols">
  <t>state data</t>
</list></t>

</section>
<section anchor="overview"><name>Overview</name>

<t>The generic TE tunnel attributes, such as source and destination node addresses, source and destination tunnel termination points (TTPs), are already defined by the base data model in <xref target="I-D.ietf-teas-yang-te"/>. The present model defines a WDM tunnel by augmenting the base model with the following
WDM technology-specific constructs:</t>

<t><list style="symbols">
  <t>Global WDM layer constraints that influence the TE path selection, e.g., whether wavelength conversion or regeneration is considered</t>
  <t>Global transponder/transceiver configuration constraints, e.g., operational modes, tuning constraints of the transceiver</t>
  <t>Global optical performance constraints, e.g. generalized Signal-to-noise (G-SNR) margin of a feasible optical path</t>
  <t>Path-scope WDM layer constraints, e.g. identities of transceivers assigned to the primary or secondary path</t>
  <t>List of links that defines the path</t>
  <t>Other optical attributes</t>
</list></t>

<t>Each path can be a segment path (only defined by the source and destination nodes or link termination points)
or an end-to-end path (additionally needs source and destination transponders). Therefore, all the attributes
are optional to support both situations.</t>

</section>
<section anchor="example-of-use"><name>Example of Use</name>

<t>In order to explain how this model is used, the following
   example is provided.  An optical network usually has multiple transponders,
   switches (nodes) and links. <xref target="fig-topology-example"/> shows a simple
   topology, where two physical paths interconnect two optical
   transponders via a combination of both WSON and Flexi-grid wavelength
   switched nodes and links.</t>

<figure title="Topology Example" anchor="fig-topology-example"><artwork><![CDATA[
                              WDM Tunnel
        <===================================================>
                         WDM Primary Path
        <--------------------------------------------------->

   +----------+                                        +----------+
   |  Flexi-  |                                        |  Flexi-  |
   |   grid   |                                        |   grid   |
   |  node A  |                                        |  node E  |
   |          |        +------+        +------+        |          |
   |          | Link 1 |Flexi-| Link 2 | WSON | Link 3 |          |
   |          |<------>| grid |<------>|      |<------>|          |
   |......... |        |node B|        |node C|        | .........|
   | Trans- : |        +------+        +------+        | : Trans- |
   | ponder : |                                        | : ponder |
   |    A   : |              +----------+              | :    E   |
   |........: |     Link 4   |Flexi-grid|   Link 5     | :........|
   |          |              |    D     |              |          |
   |          |<------------>|   node   |<------------>|          |
   |          |              +----------+              |          |
   +----------+                                        +----------+

        <--------------------------------------------------->
                          WDM Secondary Path
]]></artwork></figure>

<t>To configure an end-to-end WDM tunnel to interconnect
   transponders A and E, first of all we have to populate the
   flexi-grid topology YANG model with all elements in the network:</t>

<t><list style="symbols">
  <t>We define the transponders within nodes A and E as tunnel termination
points (TTPs) and provide their internal local link connectivity
towards the node interfaces.  We also provide nodes A and B identifiers,
addresses and interfaces.</t>
  <t>We do the same for the nodes B, C and D, providing their
identifiers, addresses and interfaces, as well as the internal
connectivity matrix between interfaces.</t>
  <t>Then, we also define the links 1 to 5 that interconnect nodes,
indicating which WSON or flexi-grid labels are available.</t>
  <t>Other information, such as the slot frequency and granularity are
also provided.</t>
</list></t>

<t>After the nodes, links and transponders have been defined using
   <xref target="I-D.ietf-ccamp-flexigrid-yang"/> and <xref target="RFC9094"/> we can
   configure the tunnel from the information we have stored in the
   flexi-grid topology, by querying which elements are available, and
   planning the resources that have to be provided on each situation, taking into
   account the global and path-specific WDM tunnel constraints.
   Note that every element in the flexi-grid topology has a reference,
   and this is the way in which they are called in the tunnel.</t>

<t><list style="symbols">
  <t>Depending on the case, it is possible to define either the source
and destination node ports, or the source and destination node and
transponder.  In our case, we would define a network tunnel, with
source transponder A and source node B, and destination
transponder E and destination node C.  Thus, we are going to
follow path x.</t>
  <t>Then, for each link in the path x, we indicate which channel we
are going to use, providing information about the slots, and what
nodes are connected.</t>
  <t>Finally, the flexi-grid topology has to be updated with each
element usage status each time a tunnel is created or torn down.</t>
</list></t>

</section>
<section anchor="yang-model-for-wdm-tunnel"><name>YANG Model for WDM Tunnel</name>

<section anchor="yang-tree"><name>YANG Tree</name>

<figure><artwork><![CDATA[
module: ietf-wdm-tunnel

  augment /te:te/te:tunnels/te:tunnel:
    +--rw wdm-constraint
       +--rw transceiver-constraint
       |  +--rw operational-modes*     string
       |  +--rw tx-tune-constraints
       |     +--rw min-central-frequency?    frequency-thz
       |     +--rw max-central-frequency?    frequency-thz
       |     +--rw transceiver-tunability?   frequency-ghz
       +--rw gsnr-margin?                   snr
       +--rw use-regen?                     boolean
       +--rw wavelength-conversion?         boolean
       +--rw bit-stuffing?                  boolean
       +--rw wavelength-assignment?         identityref
       +--rw guard-band-size?               l0-types:frequency-thz
       +--rw matching-fwd-rev-wavelength?   boolean
       +--rw allow-retuning?                boolean
       +--rw delta-power?
               l0-types:gain-in-db-or-null
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:explicit-route-objects-always
            /te:route-object-exclude-always/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--rw path-in-transceiver
    |  +--rw transponder-id?        uint32
    |  +--rw transceivers* [lane-id]
    |  |  +--rw lane-id           uint8
    |  |  +--rw transceiver-id?   uint32
    |  +--rw operational-modes*     string
    |  +--rw tx-tune-constraints
    |     +--rw min-central-frequency?    frequency-thz
    |     +--rw max-central-frequency?    frequency-thz
    |     +--rw transceiver-tunability?   frequency-ghz
    +--rw path-out-transceiver
       +--rw transponder-id?        uint32
       +--rw transceivers* [lane-id]
       |  +--rw lane-id           uint8
       |  +--rw transceiver-id?   uint32
       +--rw operational-modes*     string
       +--rw tx-tune-constraints
          +--rw min-central-frequency?    frequency-thz
          +--rw max-central-frequency?    frequency-thz
          +--rw transceiver-tunability?   frequency-ghz
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:explicit-route-objects-always
            /te:route-object-exclude-always/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--rw path-in-transceiver
    |  +--rw transponder-id?        uint32
    |  +--rw transceivers* [lane-id]
    |  |  +--rw lane-id           uint8
    |  |  +--rw transceiver-id?   uint32
    |  +--rw operational-modes*     string
    |  +--rw tx-tune-constraints
    |     +--rw min-central-frequency?    frequency-thz
    |     +--rw max-central-frequency?    frequency-thz
    |     +--rw transceiver-tunability?   frequency-ghz
    +--rw path-out-transceiver
       +--rw transponder-id?        uint32
       +--rw transceivers* [lane-id]
       |  +--rw lane-id           uint8
       |  +--rw transceiver-id?   uint32
       +--rw operational-modes*     string
       +--rw tx-tune-constraints
          +--rw min-central-frequency?    frequency-thz
          +--rw max-central-frequency?    frequency-thz
          +--rw transceiver-tunability?   frequency-ghz
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties:
    +--ro estimated-gsnr?          snr
    +--ro estimated-eol-gsnr?      snr
    +--ro estimated-lowest-gsnr?   snr
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:computed-paths-properties/te:computed-path-properties
            /te:path-properties:
    +--ro estimated-gsnr?          snr
    +--ro estimated-eol-gsnr?      snr
    +--ro estimated-lowest-gsnr?   snr
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:explicit-route-objects-always
            /te:route-object-exclude-always/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--rw path-in-transceiver
    |  +--rw transponder-id?        uint32
    |  +--rw transceivers* [lane-id]
    |  |  +--rw lane-id           uint8
    |  |  +--rw transceiver-id?   uint32
    |  +--rw operational-modes*     string
    |  +--rw tx-tune-constraints
    |     +--rw min-central-frequency?    frequency-thz
    |     +--rw max-central-frequency?    frequency-thz
    |     +--rw transceiver-tunability?   frequency-ghz
    +--rw path-out-transceiver
       +--rw transponder-id?        uint32
       +--rw transceivers* [lane-id]
       |  +--rw lane-id           uint8
       |  +--rw transceiver-id?   uint32
       +--rw operational-modes*     string
       +--rw tx-tune-constraints
          +--rw min-central-frequency?    frequency-thz
          +--rw max-central-frequency?    frequency-thz
          +--rw transceiver-tunability?   frequency-ghz
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path
            /te:explicit-route-objects-always
            /te:route-object-exclude-always/te:type
            /te:numbered-node-hop/te:numbered-node-hop:
    +--rw path-in-transceiver
    |  +--rw transponder-id?        uint32
    |  +--rw transceivers* [lane-id]
    |  |  +--rw lane-id           uint8
    |  |  +--rw transceiver-id?   uint32
    |  +--rw operational-modes*     string
    |  +--rw tx-tune-constraints
    |     +--rw min-central-frequency?    frequency-thz
    |     +--rw max-central-frequency?    frequency-thz
    |     +--rw transceiver-tunability?   frequency-ghz
    +--rw path-out-transceiver
       +--rw transponder-id?        uint32
       +--rw transceivers* [lane-id]
       |  +--rw lane-id           uint8
       |  +--rw transceiver-id?   uint32
       +--rw operational-modes*     string
       +--rw tx-tune-constraints
          +--rw min-central-frequency?    frequency-thz
          +--rw max-central-frequency?    frequency-thz
          +--rw transceiver-tunability?   frequency-ghz
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties:
    +--ro estimated-gsnr?          snr
    +--ro estimated-eol-gsnr?      snr
    +--ro estimated-lowest-gsnr?   snr
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties:
    +--ro estimated-gsnr?          snr
    +--ro estimated-eol-gsnr?      snr
    +--ro estimated-lowest-gsnr?   snr
  augment /te:te/te:lsps/te:lsp/te:lsp-actual-route-information:
    +--ro wdm-path-state
       +--ro gsnr?   l0-types:snr
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-in-segment
            /te:label-restrictions/te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-out-segment
            /te:label-restrictions/te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-in-segment/te:label-restrictions
            /te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-in-segment/te:label-restrictions
            /te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-out-segment/te:label-restrictions
            /te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction:
    +--rw grid-type?    identityref
    +--rw priority?     uint8
    +--rw flexi-grid
       +--rw slot-width-granularity?   identityref
       +--rw min-slot-width-factor?    uint16
       +--rw max-slot-width-factor?    uint16
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint
            /te:explicit-route-objects-always
            /te:route-object-exclude-always/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint
            /te:explicit-route-objects-always
            /te:route-object-include-exclude/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-in-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-out-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:globals/te:named-path-constraints
            /te:named-path-constraint/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:optimizations/te:algorithm/te:metric
            /te:optimization-metric/te:explicit-route-exclude-objects
            /te:route-object-exclude-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:optimizations/te:algorithm/te:metric
            /te:optimization-metric/te:explicit-route-include-objects
            /te:route-object-include-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:explicit-route-objects-always
            /te:route-object-exclude-always/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:explicit-route-objects-always
            /te:route-object-include-exclude/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-start/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-end/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-step/te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties
            /te:path-route-objects/te:path-route-object/te:type
            /te:label/te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--ro (grid-type)?
          +--:(fixed-dwdm)
          |  +--ro (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--ro subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--ro cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--ro (single-or-super-channel)?
                +--:(single)
                |  +--ro flexi-n?              l0-types:flexi-n
                |  +--ro flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--ro subcarrier-flexi-n* [flexi-n]
                |     +--ro flexi-n    l0-types:flexi-n
                |     +--ro flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--ro frequency-slots
                      +--ro frequency-slot* [flexi-n]
                         +--ro flexi-n    l0-types:flexi-n
                         +--ro flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path/te:optimizations
            /te:algorithm/te:metric/te:optimization-metric
            /te:explicit-route-exclude-objects
            /te:route-object-exclude-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path/te:optimizations
            /te:algorithm/te:metric/te:optimization-metric
            /te:explicit-route-include-objects
            /te:route-object-include-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:explicit-route-objects-always
            /te:route-object-exclude-always/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:explicit-route-objects-always
            /te:route-object-include-exclude/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-start/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-end/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-in-segment/te:label-restrictions
            /te:label-restriction/te:label-step/te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-out-segment/te:label-restrictions
            /te:label-restriction/te:label-start/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-out-segment/te:label-restrictions
            /te:label-restriction/te:label-end/te:te-label
            /te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:path-out-segment/te:label-restrictions
            /te:label-restriction/te:label-step/te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:primary-paths
            /te:primary-path/te:primary-reverse-path
            /te:computed-paths-properties/te:computed-path-properties
            /te:path-properties/te:path-route-objects
            /te:path-route-object/te:type/te:label/te:label-hop
            /te:te-label/te:technology:
    +--:(wdm)
       +--ro (grid-type)?
          +--:(fixed-dwdm)
          |  +--ro (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--ro subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--ro cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--ro (single-or-super-channel)?
                +--:(single)
                |  +--ro flexi-n?              l0-types:flexi-n
                |  +--ro flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--ro subcarrier-flexi-n* [flexi-n]
                |     +--ro flexi-n    l0-types:flexi-n
                |     +--ro flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--ro frequency-slots
                      +--ro frequency-slot* [flexi-n]
                         +--ro flexi-n    l0-types:flexi-n
                         +--ro flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:optimizations/te:algorithm
            /te:metric/te:optimization-metric
            /te:explicit-route-exclude-objects
            /te:route-object-exclude-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:optimizations/te:algorithm
            /te:metric/te:optimization-metric
            /te:explicit-route-include-objects
            /te:route-object-include-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:explicit-route-objects-always
            /te:route-object-exclude-always/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:explicit-route-objects-always
            /te:route-object-include-exclude/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
            /te:secondary-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties
            /te:path-route-objects/te:path-route-object/te:type
            /te:label/te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--ro (grid-type)?
          +--:(fixed-dwdm)
          |  +--ro (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--ro subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--ro cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--ro (single-or-super-channel)?
                +--:(single)
                |  +--ro flexi-n?              l0-types:flexi-n
                |  +--ro flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--ro subcarrier-flexi-n* [flexi-n]
                |     +--ro flexi-n    l0-types:flexi-n
                |     +--ro flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--ro frequency-slots
                      +--ro frequency-slot* [flexi-n]
                         +--ro flexi-n    l0-types:flexi-n
                         +--ro flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:optimizations/te:algorithm
            /te:metric/te:optimization-metric
            /te:explicit-route-exclude-objects
            /te:route-object-exclude-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:optimizations/te:algorithm
            /te:metric/te:optimization-metric
            /te:explicit-route-include-objects
            /te:route-object-include-object/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path
            /te:explicit-route-objects-always
            /te:route-object-exclude-always/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path
            /te:explicit-route-objects-always
            /te:route-object-include-exclude/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--rw dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--rw subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw (single-or-super-channel)?
                +--:(single)
                |  +--rw flexi-n?              l0-types:flexi-n
                |  +--rw flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--rw subcarrier-flexi-n* [flexi-n]
                |     +--rw flexi-n    l0-types:flexi-n
                |     +--rw flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--rw frequency-slots
                      +--rw frequency-slot* [flexi-n]
                         +--rw flexi-n    l0-types:flexi-n
                         +--rw flexi-m?   l0-types:flexi-m
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-in-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction
            /te:label-start/te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-end
            /te:te-label/te:technology:
    +--:(wdm)
       +--rw (grid-type)?
          +--:(fixed-dwdm)
          |  +--rw dwdm-n?    l0-types:dwdm-n
          +--:(cwdm)
          |  +--rw cwdm-n?    l0-types:cwdm-n
          +--:(flexi-grid)
             +--rw flexi-n?   l0-types:flexi-n
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:path-out-segment
            /te:label-restrictions/te:label-restriction/te:label-step
            /te:technology:
    +--:(wdm)
       +--rw (l0-grid-type)?
          +--:(fixed-dwdm)
          |  +--rw wson-dwdm-channel-spacing?    identityref
          +--:(cwdm)
          |  +--rw wson-cwdm-channel-spacing?    identityref
          +--:(flexi-grid)
             x--rw flexi-grid-channel-spacing?   identityref
             +--rw flexi-ncfg?                   identityref
             +--rw flexi-n-step?                 uint8
  augment /te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths
            /te:secondary-reverse-path/te:computed-paths-properties
            /te:computed-path-properties/te:path-properties
            /te:path-route-objects/te:path-route-object/te:type
            /te:label/te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--ro (grid-type)?
          +--:(fixed-dwdm)
          |  +--ro (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--ro subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--ro cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--ro (single-or-super-channel)?
                +--:(single)
                |  +--ro flexi-n?              l0-types:flexi-n
                |  +--ro flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--ro subcarrier-flexi-n* [flexi-n]
                |     +--ro flexi-n    l0-types:flexi-n
                |     +--ro flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--ro frequency-slots
                      +--ro frequency-slot* [flexi-n]
                         +--ro flexi-n    l0-types:flexi-n
                         +--ro flexi-m?   l0-types:flexi-m
  augment /te:te/te:lsps/te:lsp/te:lsp-actual-route-information
            /te:lsp-actual-route-information/te:type/te:label
            /te:label-hop/te:te-label/te:technology:
    +--:(wdm)
       +--ro (grid-type)?
          +--:(fixed-dwdm)
          |  +--ro (fixed-single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?               l0-types:dwdm-n
          |     +--:(multi)
          |        +--ro subcarrier-dwdm-n*    l0-types:dwdm-n
          +--:(cwdm)
          |  +--ro cwdm-n?                     l0-types:cwdm-n
          +--:(flexi-grid)
             +--ro (single-or-super-channel)?
                +--:(single)
                |  +--ro flexi-n?              l0-types:flexi-n
                |  +--ro flexi-m?              l0-types:flexi-m
                x--:(super)
                |  +--ro subcarrier-flexi-n* [flexi-n]
                |     +--ro flexi-n    l0-types:flexi-n
                |     +--ro flexi-m?   l0-types:flexi-m
                +--:(multi)
                   +--ro frequency-slots
                      +--ro frequency-slot* [flexi-n]
                         +--ro flexi-n    l0-types:flexi-n
                         +--ro flexi-m?   l0-types:flexi-m
]]></artwork></figure>

</section>
<section anchor="yang-code"><name>YANG Code</name>

<figure><artwork><![CDATA[
   <CODE BEGINS> file "ietf-wdm-tunnel@2023-10-22.yang"
module ietf-wdm-tunnel {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-wdm-tunnel";
  prefix "wdm-tnl";

  import ietf-te {
    prefix "te";
    revision-date "2023-06-16";
    reference
      "I-D.ietf-teas-yang-te-34: A YANG Data Model for Traffic
      Engineering Tunnels, Label Switched Paths and Interfaces.";
  }

  import ietf-layer0-types {
    prefix "l0-types";
  }

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

     Editor:   Jorge E. Lopez de Vergara
               <jorge.lopez_vergara@uam.es>

     Editor:   Daniel Perdices
               <daniel.perdices@naudit.es>

     Editor:   Victor Lopez
               <victor.lopez@nokia.com>

     Editor:   Italo Busi
               <italo.busi@nokia.com>

     Editor:   Aihua Guo
               <aihuaguo.ietf@gmail.com>";

  description
    "This module defines a YANG data model for configuring
     and managing Wavelength-Division Multiplexing (WDM) switched
     optical tunnels.

    The model fully conforms to the Network Management 
    Datastore Architecture (NMDA).
    
    Copyright (c) 2021 IETF Trust and the persons
    identified as authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or
    without modification, is permitted pursuant to, and subject
    to the license terms contained in, the Simplified BSD License
    set forth in Section 4.c of the IETF Trust's Legal Provisions
    Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX; see
    the RFC itself for full legal notices.";

  revision "2023-10-22" {
    description
      "Updated revision with combined WSON and Flexi-grid tunnel
       YANG model";

    reference
      "RFC XXXX: YANG data model for WDM tunnels";
    // RFC Ed.: replace XXXX with actual RFC number, update date 
    // information and remove this note
  }

  /*
   * Identities
   */
  identity lower-first-wavelength-assignment {
    base l0-types:wavelength-assignment;
    description
      "Assign first available wavelength starting from the
       lowest frequency towards the highest frequency in
       the allowable frequency range.";
  }

  identity upper-first-wavelength-assignment {
    base l0-types:wavelength-assignment;
    description
      "Assign first available wavelength starting from the
       highest frequency towards the lowest frequency in
       the allowable frequency range.";
  }

  /*
   * Groupings
   */
  grouping tx-tune-constraints {
    description
      "This grouping defines the transmitter's allowed tuning
       frequency range.";

    container tx-tune-constraints {
      description
        "Transmitter's allowed tuning frequency range.";

      uses l0-types:transmitter-tuning-range;
    }
  }

  grouping transceiver-constraints-grp {
    description
      "This grouping defines constraints for transceiver
       configurations";

    leaf-list operational-modes {
      type string { 
        length "1..255";
      }
      description
        "List of operational mode ids of the transceiver.";
    }

    uses tx-tune-constraints;
  }

  grouping path-transceiver-config-grp {
    description
      "This grouping defines explicit transceiver configurations
       on an end-to-end path.";

    leaf transponder-id {
      type uint32;
      description "transponder identifier";
    }

    list transceivers {
      key "lane-id";
      description
        "List of transceivers for all lanes.";

      leaf lane-id {
        type uint8;
        must '. >= 1' {
          error-message
            "Lane identifier must be greater than or equal to 1.";
        }
        description
          "Lane identifier starting from 1.";
      }
      leaf transceiver-id {
        type uint32;
        description
        "transceiver identifier";
      }
    }
      
    uses transceiver-constraints-grp;
  }
  
  grouping path-transceiver-grp {
    description
      "This grouping defines group of transceivers on a node
       functioning as starting, terminating transceivers, or
       regenerators.";

    container path-in-transceiver {
      description
        "Constraints for incoming direction transceiver
         configurations";

      uses path-transceiver-config-grp;
    }

    container path-out-transceiver {
      description
        "Constraints for outgoing direction transceiver
         configurations";

      uses path-transceiver-config-grp;
    }
  }
  
  grouping global-transceiver-constraint {
    description
      "This grouping defines the constraints for transceiver
       configurations.";

    container transceiver-constraint {
      description
        "Constraints for transceiver configurations";

      uses transceiver-constraints-grp;
    }
  }

  grouping wdm-constraint {
    description
      "Grouping for WDM tunnel constraints";

    container wdm-constraint {
      description
        "WDM tunnel constraints.";

      uses global-transceiver-constraint;
      uses l0-types:l0-path-constraints;
      
      leaf use-regen {
        type boolean;
        default false;
        description
          "Indicate whether or not regenerators (e.g. 3R) should be
           considered. When this parameter is set to true, the
           tunnel path may include a regen when the path is not
           feasible for direct optical reach.";
      }

      leaf wavelength-conversion {
        when '../use-regen = "true"' {
          description
            "Regenerator must be enabled for wavelength conversion
             to be considered.";
        }
        type boolean;
        default false;
        description
          "Indicate whether or not wavelength conversion is allowed
           along the tunnel path. Applicable only when 3R
           regeneration is enabled.";
      }

      uses l0-types:l0-tunnel-attributes;

      leaf guard-band-size {
        type l0-types:frequency-thz;
        description
          "Guard band size in THz.";
      }

      leaf matching-fwd-rev-wavelength {
        type boolean;
        default true;
        description
          "Indicate whether or not the assigned channels for
           forward and reverse wavelength path must be the same.";
      }

      leaf allow-retuning {
        type boolean;
        default false;
        description
          "Indicate whether or not re-tuning is allowed when one or
           more paths of a WDM tunnel is being restored. Typically,
           wavelength retuning is not preferred for wavelength
           planning considerations.";
      }
      leaf delta-power {
        type l0-types:gain-in-db-or-null;
        units "dB";
        description
          "Delta power in dB indicating the per-channel power
           deviation from the nominal power per channel at the
           output of an OMS.";
      }
    }
  }

  grouping wdm-path-state {
    description
      "Grouping for WDM path state.";

    container wdm-path-state {
      config false;
      description
        "WDM path state.";

      leaf gsnr {
        type l0-types:snr;
        description
          "Actual received GSNR for the WDM path.";
      }
    }
  }

  /*
   * Data nodes
   */

  /*
   * Global constraints for WDM tunnel
   */
  augment "/te:te/te:tunnels/te:tunnel" {
    description
      "Augment with additional parameters required for WDM
       tunnel configurations.";
    uses wdm-constraint;
  }

  /*
   * Transceiver constraints for primary path
   * Applicable to starting, terminating and regenerator
   * transceivers.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:explicit-route-objects-always/"
        + "te:route-object-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE primary path with transceiver configurations.";
      
    uses path-transceiver-grp;
  }

  /*
   * Transceiver constraints for primary reverse path
   * Applicable to starting, terminating and regenerator
   * transceivers.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE primary reverse path with transceiver
       configurations.";
      
    uses path-transceiver-grp;
  }

  /*
   * Computed path properties for primary path.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties" {
    description
      "Augment TE computed primary path with WDM properties.";
      
    uses l0-types:l0-path-properties;
  }

  /*
   * Computed path properties for primary reverse path.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/"
        + "te:primary-path/te:primary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties" {
    description
      "Augment TE computed primary reverse path with WDM
       properties.";
      
    uses l0-types:l0-path-properties;
  }

  /*
   * Transceiver constraints for secondary path
   * Applicable to starting, terminating and regenerator
   * transceivers.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:explicit-route-objects-always/"
        + "te:route-object-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE secondary path with transceiver configurations.";
      
    uses path-transceiver-grp;
  }

  /*
   * Transceiver constraints for secondary reverse path
   * Applicable to starting, terminating and regenerator
   * transceivers.
   */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-exclude-always/te:type/"
        + "te:numbered-node-hop/te:numbered-node-hop" {
    description
      "Augment TE secondary reverse path with transceiver
       configurations.";
      
    uses path-transceiver-grp;
  }

  /*
   * Computed path properties for secondary path.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths/"
        + "te:secondary-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties" {
    description
      "Augment TE computed secondary path with WDM properties.";
      
    uses l0-types:l0-path-properties;
  }

  /*
   * Computed path properties for secondary reverse path.
   */
  augment "/te:te/te:tunnels/te:tunnel/te:secondary-reverse-paths/"
        + "te:secondary-reverse-path/te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties" {
    description
      "Augment TE computed secondary reverse path with WDM
       properties.";
      
    uses l0-types:l0-path-properties;
  }

  /*
   * WDM path state
   */
  augment "/te:te/te:lsps/te:lsp/"
        + "te:lsp-actual-route-information" {
    description
      "Augment TE LSP to with WDM path state.";
      
    uses wdm-path-state;
  }

  /*
   * Augment TE label range information
   */

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:label-restrictions/te:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the named path constraint.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-out-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the named path constraint.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the primay path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the primay path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the primay reverse path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the primay reverse path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the secondary path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the secondary path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the secondary reverse path.";
    uses l0-types:wdm-label-range-info;
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the secondary reverse path.";
    uses l0-types:wdm-label-range-info;
  }

  /*
   * Augment TE label.
   */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation with the named path
      constraint.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation with the named path
      constraint.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:label-restrictions/te:label-restriction/"
        + "te:label-step/te:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-out-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the egress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-out-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-out-segment/"
        + "te:label-restrictions/te:label-restriction/"
        + "te:label-step/te:technology" {
    description
      "Augment TE label range step for the egress segment
      of the named path constraint.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects excluded by the path computation of the primary
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects included by the path computation of the primary
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation of the primary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation of the primary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the egress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the primay path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-route-object/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the route object of the computed
      primary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects excluded by the path computation of the primary
      reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects included by the path computation of the primary
      reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-exclude-always/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation of the primary reverse
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-include-exclude/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation of the primary reverse
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the egress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the egress segment
      of the primay reverse path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:primary-paths/te:primary-path/"
        + "te:primary-reverse-path/"
        + "te:computed-paths-properties/te:computed-path-properties/"
        + "te:path-properties/te:path-route-objects/"
        + "te:path-route-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the route object of the computed
      primary reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects excluded by the path computation of the
      secondary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects included by the path computation of the
      secondary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the egress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the egress segment
      of the secondary path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-paths/te:secondary-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/"
        + "te:path-properties/te:path-route-objects/"
        + "te:path-route-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the route object of the computed
      secondary path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects excluded by the path computation of the
      secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects included by the path computation of the
      secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation of the secondary reverse
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation of the secondary reverse
      path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range start for the egress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description
      "Augment TE label range end for the egress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-start-end;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-step/te:technology" {
    description
      "Augment TE label range step for the egress segment
      of the secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-step;
    }
  }

  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:secondary-reverse-paths/te:secondary-reverse-path/"
        + "te:computed-paths-properties/"
        + "te:computed-path-properties/"
        + "te:path-properties/te:path-route-objects/"
        + "te:path-route-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the route object of the computed
      secondary reverse path.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }

  augment "/te:te/te:lsps/"
        + "te:lsp/te:lsp-actual-route-information/"
        + "te:lsp-actual-route-information/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description
      "Augment TE label hop for the actual route of the LSP.";
    case wdm {
      uses l0-types:wdm-label-hop;
    }
  }
}
   <CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The configuration, state, and action data defined in this document
   are designed to be accessed via a management protocol with a secure
   transport layer, such as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>.
   The NETCONF access control model <xref target="RFC8341"/> provides the means to
   restrict access for particular NETCONF users to a preconfigured
   subset of all available NETCONF protocol operations and content.</t>

<t>There are a number of data nodes defined in this YANG module that are
   writable/creatable/deletable (i.e., config true, which is the
   default).  These data nodes may be considered sensitive or vulnerable
   in some network environments.  Write operations (e.g., edit-config)
   to these data nodes without proper protection can have a negative
   effect on network operations.  These are the subtrees and data nodes
   and their sensitivity/vulnerability:</t>

<t><list style="symbols">
  <t>/te:te/te:tunnels/te:tunnel</t>
  <t>/te:te/.../te:te-bandwidth/te:technology</t>
  <t>/te:te/.../te:type/te:label/te:label-hop/te:te-label/te:technology</t>
  <t>/te:te/.../te:label-restrictions/te:label-restriction/te:label-
start/te:te-label/te:technology</t>
  <t>/te:te/.../te:label-restrictions/te:label-restriction/te:label-
end/te:te-label/te:technology</t>
  <t>/te:te/.../te:label-restrictions/te:label-restriction/</t>
</list></t>

<t>Editors note: we are using simplified description by folding similar
   branches to avoid repetition.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>It is proposed to IANA to assign new URIs from the "IETF XML
   Registry" <xref target="RFC3688"/> as follows:</t>

<figure><artwork><![CDATA[
   URI: urn:ietf:params:xml:ns:yang:ietf-wdm-tunnel
   Registrant Contact: The IESG
   XML: N/A; the requested URI is an XML namespace.
]]></artwork></figure>

<t>This document registers the following YANG module in the YANG Module Names
   registry <xref target="RFC6020"/>.</t>

<figure><artwork><![CDATA[
   name: ietf-wdm-tunnel
   namespace: urn:ietf:params:xml:ns:yang:ietf-wdm-tunnel
   prefix: wdm-tnl
   reference: RFC XXXX
]]></artwork></figure>

</section>


  </middle>

  <back>

    <references title='Normative References'>



<reference anchor='RFC9094' target='https://www.rfc-editor.org/info/rfc9094'>
  <front>
    <title>A YANG Data Model for Wavelength Switched Optical Networks (WSONs)</title>
    <author fullname='H. Zheng' initials='H.' surname='Zheng'/>
    <author fullname='Y. Lee' initials='Y.' surname='Lee'/>
    <author fullname='A. Guo' initials='A.' surname='Guo'/>
    <author fullname='V. Lopez' initials='V.' surname='Lopez'/>
    <author fullname='D. King' initials='D.' surname='King'/>
    <date month='August' year='2021'/>
    <abstract>
      <t>This document provides a YANG data model for the routing and wavelength assignment (RWA) TE topology in Wavelength Switched Optical Networks (WSONs). The YANG data model defined in this document conforms to the Network Management Datastore Architecture (NMDA).</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='9094'/>
  <seriesInfo name='DOI' value='10.17487/RFC9094'/>
</reference>


<reference anchor='I-D.ietf-ccamp-flexigrid-yang' target='https://datatracker.ietf.org/doc/html/draft-ietf-ccamp-flexigrid-yang-15'>
   <front>
      <title>A YANG Data Model for Flexi-Grid Optical Networks</title>
      <author fullname='Universidad Autonoma de Madrid' initials='U. A.' surname='de Madrid'>
         <organization>Naudit HPCN</organization>
      </author>
      <author fullname='Daniel Perdices Burrero' initials='D. P.' surname='Burrero'>
         <organization>Universidad Autonoma de Madrid</organization>
      </author>
      <author fullname='Daniel King' initials='D.' surname='King'>
         <organization>Old Dog Consulting</organization>
      </author>
      <author fullname='Young Lee' initials='Y.' surname='Lee'>
         <organization>Samsung</organization>
      </author>
      <author fullname='Haomian Zheng' initials='H.' surname='Zheng'>
         <organization>Huawei Technologies</organization>
      </author>
      <date day='10' month='July' year='2023'/>
      <abstract>
	 <t>   This document defines a YANG module for managing flexi-grid optical
   networks.  The model defined in this document specifies a flexi-grid
   traffic engineering database that is used to describe the topology of
   a flexi-grid network.  It is based on and augments existing YANG
   models that describe network and traffic engineering topologies.

   The YANG data model defined in this document conforms to the Network
   Management Datastore Architecture (NMDA).

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-ccamp-flexigrid-yang-15'/>
   
</reference>

<reference anchor='RFC7950' target='https://www.rfc-editor.org/info/rfc7950'>
  <front>
    <title>The YANG 1.1 Data Modeling Language</title>
    <author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'/>
    <date month='August' year='2016'/>
    <abstract>
      <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='7950'/>
  <seriesInfo name='DOI' value='10.17487/RFC7950'/>
</reference>

<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname='S. Bradner' initials='S.' surname='Bradner'/>
    <date month='March' year='1997'/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='2119'/>
  <seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>

<reference anchor='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'>
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname='B. Leiba' initials='B.' surname='Leiba'/>
    <date month='May' year='2017'/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='8174'/>
  <seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>

<reference anchor='RFC7446' target='https://www.rfc-editor.org/info/rfc7446'>
  <front>
    <title>Routing and Wavelength Assignment Information Model for Wavelength Switched Optical Networks</title>
    <author fullname='Y. Lee' initials='Y.' role='editor' surname='Lee'/>
    <author fullname='G. Bernstein' initials='G.' role='editor' surname='Bernstein'/>
    <author fullname='D. Li' initials='D.' surname='Li'/>
    <author fullname='W. Imajuku' initials='W.' surname='Imajuku'/>
    <date month='February' year='2015'/>
    <abstract>
      <t>This document provides a model of information needed by the Routing and Wavelength Assignment (RWA) process in Wavelength Switched Optical Networks (WSONs). The purpose of the information described in this model is to facilitate constrained optical path computation in WSONs. This model takes into account compatibility constraints between WSON signal attributes and network elements but does not include constraints due to optical impairments. Aspects of this information that may be of use to other technologies utilizing a GMPLS control plane are discussed.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='7446'/>
  <seriesInfo name='DOI' value='10.17487/RFC7446'/>
</reference>

<reference anchor='RFC7699' target='https://www.rfc-editor.org/info/rfc7699'>
  <front>
    <title>Generalized Labels for the Flexi-Grid in Lambda Switch Capable (LSC) Label Switching Routers</title>
    <author fullname='A. Farrel' initials='A.' surname='Farrel'/>
    <author fullname='D. King' initials='D.' surname='King'/>
    <author fullname='Y. Li' initials='Y.' surname='Li'/>
    <author fullname='F. Zhang' initials='F.' surname='Zhang'/>
    <date month='November' year='2015'/>
    <abstract>
      <t>GMPLS supports the description of optical switching by identifying entries in fixed lists of switchable wavelengths (called grids) through the encoding of lambda labels. Work within the ITU-T Study Group 15 has defined a finer-granularity grid, and the facility to flexibly select different widths of spectrum from the grid. This document defines a new GMPLS lambda label format to support this flexi-grid.</t>
      <t>This document updates RFCs 3471 and 6205 by introducing a new label format.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='7699'/>
  <seriesInfo name='DOI' value='10.17487/RFC7699'/>
</reference>

<reference anchor='RFC6241' target='https://www.rfc-editor.org/info/rfc6241'>
  <front>
    <title>Network Configuration Protocol (NETCONF)</title>
    <author fullname='R. Enns' initials='R.' role='editor' surname='Enns'/>
    <author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'/>
    <author fullname='J. Schoenwaelder' initials='J.' role='editor' surname='Schoenwaelder'/>
    <author fullname='A. Bierman' initials='A.' role='editor' surname='Bierman'/>
    <date month='June' year='2011'/>
    <abstract>
      <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='6241'/>
  <seriesInfo name='DOI' value='10.17487/RFC6241'/>
</reference>


<reference anchor='I-D.ietf-teas-yang-te' target='https://datatracker.ietf.org/doc/html/draft-ietf-teas-yang-te-34'>
   <front>
      <title>A YANG Data Model for Traffic Engineering Tunnels, Label Switched Paths and Interfaces</title>
      <author fullname='Tarek Saad' initials='T.' surname='Saad'>
         <organization>Cisco Systems Inc</organization>
      </author>
      <author fullname='Rakesh Gandhi' initials='R.' surname='Gandhi'>
         <organization>Cisco Systems Inc</organization>
      </author>
      <author fullname='Xufeng Liu' initials='X.' surname='Liu'>
         <organization>Alef Edge</organization>
      </author>
      <author fullname='Vishnu Pavan Beeram' initials='V. P.' surname='Beeram'>
         <organization>Juniper Networks</organization>
      </author>
      <author fullname='Igor Bryskin' initials='I.' surname='Bryskin'>
         <organization>Individual</organization>
      </author>
      <date day='1' month='October' year='2023'/>
      <abstract>
	 <t>   This document defines a YANG data model for the provisioning and
   management of Traffic Engineering (TE) tunnels, Label Switched Paths
   (LSPs), and interfaces.  The model covers data that is independent of
   any technology or dataplane encapsulation and is divided into two
   YANG modules that cover device-specific, and device independent data.

   This model covers data for configuration, operational state, remote
   procedural calls, and event notifications.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-teas-yang-te-34'/>
   
</reference>

<reference anchor='RFC8040' target='https://www.rfc-editor.org/info/rfc8040'>
  <front>
    <title>RESTCONF Protocol</title>
    <author fullname='A. Bierman' initials='A.' surname='Bierman'/>
    <author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'/>
    <author fullname='K. Watsen' initials='K.' surname='Watsen'/>
    <date month='January' year='2017'/>
    <abstract>
      <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8040'/>
  <seriesInfo name='DOI' value='10.17487/RFC8040'/>
</reference>

<reference anchor='RFC8341' target='https://www.rfc-editor.org/info/rfc8341'>
  <front>
    <title>Network Configuration Access Control Model</title>
    <author fullname='A. Bierman' initials='A.' surname='Bierman'/>
    <author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'/>
    <date month='March' year='2018'/>
    <abstract>
      <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
      <t>This document obsoletes RFC 6536.</t>
    </abstract>
  </front>
  <seriesInfo name='STD' value='91'/>
  <seriesInfo name='RFC' value='8341'/>
  <seriesInfo name='DOI' value='10.17487/RFC8341'/>
</reference>

<reference anchor='RFC3688' target='https://www.rfc-editor.org/info/rfc3688'>
  <front>
    <title>The IETF XML Registry</title>
    <author fullname='M. Mealling' initials='M.' surname='Mealling'/>
    <date month='January' year='2004'/>
    <abstract>
      <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='81'/>
  <seriesInfo name='RFC' value='3688'/>
  <seriesInfo name='DOI' value='10.17487/RFC3688'/>
</reference>

<reference anchor='RFC6020' target='https://www.rfc-editor.org/info/rfc6020'>
  <front>
    <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
    <author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'/>
    <date month='October' year='2010'/>
    <abstract>
      <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='6020'/>
  <seriesInfo name='DOI' value='10.17487/RFC6020'/>
</reference>




    </references>

    <references title='Informative References'>



<reference anchor='RFC6163' target='https://www.rfc-editor.org/info/rfc6163'>
  <front>
    <title>Framework for GMPLS and Path Computation Element (PCE) Control of Wavelength Switched Optical Networks (WSONs)</title>
    <author fullname='Y. Lee' initials='Y.' role='editor' surname='Lee'/>
    <author fullname='G. Bernstein' initials='G.' role='editor' surname='Bernstein'/>
    <author fullname='W. Imajuku' initials='W.' surname='Imajuku'/>
    <date month='April' year='2011'/>
    <abstract>
      <t>This document provides a framework for applying Generalized Multi-Protocol Label Switching (GMPLS) and the Path Computation Element (PCE) architecture to the control of Wavelength Switched Optical Networks (WSONs). In particular, it examines Routing and Wavelength Assignment (RWA) of optical paths.</t>
      <t>This document focuses on topological elements and path selection constraints that are common across different WSON environments; as such, it does not address optical impairments in any depth. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='6163'/>
  <seriesInfo name='DOI' value='10.17487/RFC6163'/>
</reference>

<reference anchor='RFC7698' target='https://www.rfc-editor.org/info/rfc7698'>
  <front>
    <title>Framework and Requirements for GMPLS-Based Control of Flexi-Grid Dense Wavelength Division Multiplexing (DWDM) Networks</title>
    <author fullname='O. Gonzalez de Dios' initials='O.' role='editor' surname='Gonzalez de Dios'/>
    <author fullname='R. Casellas' initials='R.' role='editor' surname='Casellas'/>
    <author fullname='F. Zhang' initials='F.' surname='Zhang'/>
    <author fullname='X. Fu' initials='X.' surname='Fu'/>
    <author fullname='D. Ceccarelli' initials='D.' surname='Ceccarelli'/>
    <author fullname='I. Hussain' initials='I.' surname='Hussain'/>
    <date month='November' year='2015'/>
    <abstract>
      <t>To allow efficient allocation of optical spectral bandwidth for systems that have high bit-rates, the International Telecommunication Union Telecommunication Standardization Sector (ITU-T) has extended its Recommendations G.694.1 and G.872 to include a new Dense Wavelength Division Multiplexing (DWDM) grid by defining a set of nominal central frequencies, channel spacings, and the concept of the "frequency slot". In such an environment, a data-plane connection is switched based on allocated, variable-sized frequency ranges within the optical spectrum, creating what is known as a flexible grid (flexi-grid).</t>
      <t>Given the specific characteristics of flexi-grid optical networks and their associated technology, this document defines a framework and the associated control-plane requirements for the application of the existing GMPLS architecture and control-plane protocols to the control of flexi-grid DWDM networks. The actual extensions to the GMPLS protocols will be defined in companion documents.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='7698'/>
  <seriesInfo name='DOI' value='10.17487/RFC7698'/>
</reference>




    </references>


<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>This work is also partially funded by the Spanish State Research
   Agency under the project AgileMon (AEI PID2019-104451RB-C21) and by
   the Spanish Ministry of Science, Innovation and Universities under
   the program for the training of university lecturers (Grant number:
   FPU19/05678).</t>

</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="D." surname="King" fullname="Daniel King">
      <organization>Old Dog Consulting</organization>
      <address>
        <email>daniel@olddog.co.uk</email>
      </address>
    </contact>
    <contact initials="H." surname="Zheng" fullname="Haomian Zheng">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>H1, Xiliu Beipo Village, Songshan Lake</street>
          <city>Dongguan</city>
          <country>China</country>
        </postal>
        <email>zhenghaomian@huawei.com</email>
      </address>
    </contact>
    <contact initials="I." surname="Busi" fullname="Italo Busi">
      <organization>Huawei Technologies</organization>
      <address>
        <email>italo.busi@huawei.com</email>
      </address>
    </contact>
    <contact initials="O." surname="Gonzalez de Dios" fullname="Oscar Gonzalez de Dios">
      <organization>Telefonica</organization>
      <address>
        <email>oscar.gonzalezdedios@telefonica.com</email>
      </address>
    </contact>
    <contact initials="V." surname="Lopez" fullname="Victor Lopez">
      <organization>Nokia</organization>
      <address>
        <email>victor.lopez@nokia.com</email>
      </address>
    </contact>
    <contact initials="D." surname="Beller" fullname="Dieter Beller">
      <organization>Nokia</organization>
      <address>
        <email>Dieter.Beller@nokia.com</email>
      </address>
    </contact>
    <contact initials="R." surname="Vilalta" fullname="Ricard Vilalta">
      <organization>CTTC</organization>
      <address>
        <email>ricard.vilalta@cttc.es</email>
      </address>
    </contact>
    <contact initials="Y." surname="Lee" fullname="Young Lee">
      <organization>Samsung</organization>
      <address>
        <email>younglee.tx@gmail.com</email>
      </address>
    </contact>
    <contact initials="B.Y." surname="Yoon" fullname="Bin Yeong Yoon">
      <organization>ETRI</organization>
      <address>
        <email>byyun@etri.re.kr</email>
      </address>
    </contact>
    <contact initials="D.M." surname="Vallinoto" fullname="Daniel Michaud Vallinoto">
      <organization>Universidad Autonoma de Madrid</organization>
      <address>
        <email>daniel.michaud@estudiante.uam.es</email>
      </address>
    </contact>
    <contact initials="Z." surname="Ali" fullname="Zafar Ali">
      <organization>Cisco</organization>
      <address>
        <email>zali@cisco.com</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
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
1cVLC5d8rZQmXKy5SVVctpB0TrLSmnFOswrFY2PUtXfAC83N0bJpgQMZeq9f
59/vLjTcezINxutVuT0pdL5uH+Sj0fq3cAJ7ErN6oOY6fgEgFHjCL8kmeMhV
H0CukPujJKqHrzcuFmRxPa9xrLNoy+jL7bTp661N0sVmk6zv8ziWwKUm8/Vi
0kTUn7d/v5XRGrt+K83STdYrGs0lu4xMLXJNmdZY1evVeS0PlOrL580fL54/
bsz/RMzhDhbwZinF8PE1+7t59Y+2aay2q2W3wlp2c+4W2u3KvowEi3Y4HZ1v
Gzhn7KKt1ideYLetU+dt+F7goow0Lhp8dMCY/zlgdMBopjEHjPcDGK+xspoz
L0l5nN4+8lkQdQ3gcTWssFy7xSzug27LD0XxlceSiNPsQ9BskopJi2qXUyfs
/vIanSYq0tHeBFEvmXA//wZYS1l+roKJon8JinP1/anWVGgj3E63biz+oO3r
e0tOJi01p+fNj3txV9oFilWFk2tQrosUj0C1LlQ8xFBxDXee7V/jJkI8HGKP
fjTGN2P8OX+/QcSe5OkxLS2avB1tWjWLezTVwa5Fk/+5Fo1r0ZhprLarZbfC
WnbjWjT3D0/zNvZSeFod7PA0/3N46vDUTGMOT1cfT91xCAeBDgIdBJ4/1kGg
O/lQXnQYWPLpMNBhYHPivcLAa/qa0oJ7V43J7m7Horsdq6hTEQVOow9Ko3hD
xN2psv4e8Z0qd5jhoSKGO8TgVOoOL5xD0YWEW/oV1OaqeL3Se2n9NG+utNv7
1Zsr6vKYpG6muaJurrmirrW5om6suaKuu7mirthcUTfYXFGXbq6oSzZX1HU3
V9QFmiv1sUs3Vy6229apt9tcafn1kcZZhgaVloMNc84yNKa6g2Kuo+062sx1
tM8f+3A72ncMuu40mQPdumQd6DrQfXSgex5QuiNnDidrknU46XDS4aQ7l+aA
0gElc0B5/tjHDZTu8NoDvMt9J4p3J9wepdrdMTh35uFOHhXgQs69xJ5r1byL
OY9T7y7ouKBzIRO8kWdpFx9Vmkzts9pO4xX2XOkitYCYO43nTuO1sOpO47nT
eFdtKV38qUbzf0WoMdmdvCsvuZ6969m3znc9+wfds19dgHWn7BzA1iXrANYB
7IMHWHeIzsGgg0EHg+ePdTBYzHdn5KpkHQ46HHQ42DLx3uGge2LdfbgvfWd6
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
bH23+fSbl3/5dr3b+X8O1iSJOKkBAA==

-->

</rfc>

