<?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-ietf-ccamp-wdm-tunnel-yang-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="November" day="21"/>

    
    <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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
/f8Bly2XS5CqAQA=

-->

</rfc>

