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


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-gbb-ccamp-optical-path-computation-yang-02" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Yang for Optical Path Computation">YANG Data Models for requesting Path Computation in Optical Networks</title>

    <author initials="I." surname="Busi" fullname="Italo Busi">
      <organization>Huawei Technologies</organization>
      <address>
        <email>italo.busi@huawei.com</email>
      </address>
    </author>
    <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>

    <date year="2022" month="September" day="12"/>

    
    <workgroup>CCAMP Working Group</workgroup>
    

    <abstract>


<t>This document provides a mechanism to request path computation in Optical Networks (WSON and Flexi-grid) by augmenting the Remote Procedure Calls (RPCs) defined in RFC YYYY.</t>

<t>[RFC EDITOR NOTE: Please replace RFC YYYY with the RFC number of
draft-ietf-teas-yang-path-computation once it has been published.</t>



    </abstract>



  </front>

  <middle>


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

<t><xref target="I-D.ietf-teas-yang-path-computation"/> describes key use cases, where a client needs to request
underlying SDN controllers for path computation. In some of these use cases, the
underlying SDN controller can control a single-layer optical technologies, including 
Optical Transport Network (OTN), Wavelength Switched Optical Networks (WSON), Flexi-grid, 
and multi-layer Optical network.</t>

<t>This document defines YANG data models, which augment the generic Path Computation RPC defined in <xref target="I-D.ietf-teas-yang-path-computation"/>, with technology-specific augmentations required to request path computation to an underlying Optical SDN controller. These models allow
a client to delegate path computation tasks to the underlying Optical SDN controller without having to obtain optical-layer information from the controller and performing feasible path computation itself. This is especially helpful in cases where computing optically-feasible paths require knowledge of physical-layer states, such as optical impairments, which are visible only to the Optical controller.</t>

<section anchor="terminology-and-notations"><name>Terminology and Notations</name>

<t>Refer to <xref target="RFC7446"/> and <xref target="RFC7581"/> for the key terms used in this
  document.  The following terms are defined in <xref target="RFC7950"/> and are not
  redefined here:</t>

<t><list style="symbols">
  <t>client</t>
  <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:</t>

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

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

</section>
<section anchor="tree-diagram"><name>Tree Diagram</name>

<t>A simplified graphical representation of the data model is used in
  <xref target="optical-pc-tree"/> of this document.  The meaning of the symbols in these
  diagrams is defined in <xref target="RFC8340"/>.</t>

</section>
<section anchor="prefix-in-data-node-names"><name>Prefix in Data Node Names</name>

<t>In this document, names of data nodes and other data model objects
  are prefixed using the standard prefix associated with the
  corresponding YANG imported modules, as shown in
  <xref target="tab-prefixes"/>.</t>

<texttable title="Prefixes and corresponding YANG modules" anchor="tab-prefixes">
      <ttcol align='left'>Prefix</ttcol>
      <ttcol align='left'>YANG module</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>l0-types</c>
      <c>ietf-layer0-types</c>
      <c>[RFCZZZZ]</c>
      <c>te</c>
      <c>ietf-te</c>
      <c>[RFCKKKK]</c>
      <c>tepc</c>
      <c>ietf-te-path-computation</c>
      <c>[RFCYYYY]</c>
      <c>wson-pc</c>
      <c>ietf-wson-path-computation</c>
      <c>RFCXXXX</c>
      <c>flexg-pc</c>
      <c>ietf-flexi-grid-path-computation</c>
      <c>RFCXXXX</c>
</texttable>

<t>RFC Editor Note:
Please replace XXXX with the RFC number assigned to this document.
Please replace ZZZZ with the RFC number assigned to <xref target="I-D.ietf-ccamp-rfc9093-bis"/>.
Please replace KKKK with the RFC number assigned to <xref target="I-D.ietf-teas-yang-te"/>.
Please replace YYYY with the RFC number assigned to <xref target="I-D.ietf-teas-yang-path-computation"/>.
Please remove this note.</t>

</section>
</section>
<section anchor="yang-data-models-for-optical-path-computation"><name>YANG Data Models for Optical Path Computation</name>

<section anchor="yang-models-overview"><name>YANG Models Overview</name>

<t>The YANG data models for requesting WSON and Flexi-grid path computation are defined as augmentations of the generic Path Computation RPC defined in <xref target="I-D.ietf-teas-yang-path-computation"/>, as shown in <xref target="fig-optical-pc"/>.</t>

<figure title="Relationship between WSON, Flexi-grid and TE path computation models" anchor="fig-optical-pc"><artwork type="ascii-art" name="optical-path-computation.txt"><![CDATA[
                    +--------------------------+    o: augment
       TE generic   | ietf-te-path-computation |
                    +--------------------------+
                          o             o
                          |             |
                          |             |
              +-----------+             +-----------+
              |                                     |
              |                                     |
+----------------------------+  +----------------------------------+
| ietf-wson-path-computation |  | ietf-flexi-grid-path-computation |
+----------------------------+  +----------------------------------+
            WSON                            Flexi-grid

]]></artwork></figure>

<t>The entities and Traffic Engineering (TE) attributes, such as requested path and tunnel attributes, defined in <xref target="I-D.ietf-teas-yang-path-computation"/>, are still applicable when requesting WSON and Flexi-grid path computation and the models defined in this document only specifies the additional technology-specific attributes/information, using the attributes defined in <xref target="I-D.ietf-ccamp-rfc9093-bis"/>.</t>

</section>
<section anchor="attributes-augmentation"><name>Attributes Augmentation</name>

<t>The common characteristics for layer 0 (WSON and Flexi-grid) tunnels are under definition in <xref target="I-D.ietf-ccamp-rfc9093-bis"/> and re-used in the ietf-wson-path-computation and ietf-flexi-grid-path-computation YANG models</t>

</section>
<section anchor="optical-te-bandwidh"><name>Bandwidth Augmentation</name>

<t>As described in Section 4.2 of <xref target="RFC7699"/>, there is some overlap
between bandwidth and label in layer0.</t>

<t>The WSON and flexi-grid label resource information described in <xref target="optical-te-label"/>,
is sufficient to describe also the spectrum resources within WSON and
flexi-grid networks. Therefore, the model does not define any augmentation
for the te-bandwidth containers defined in <xref target="I-D.ietf-teas-yang-path-computation"/>.</t>

</section>
<section anchor="optical-te-label"><name>Label Augmentations</name>

<t>The models augment all the occurrences of the label-restriction list
with WSON and Flexi-grid technology-specific attributes using the 
l0-label-range-info and flexi-grid-label-range-info groupings defined in <xref target="I-D.ietf-ccamp-rfc9093-bis"/>.</t>

<t>Moreover, the models augment all the occurrences of the te-label
container with the WSON, Flexi-grid and OTN technology-specific attributes using the
wson-label-start-end, wson-label-hop, wson-label-step,
flexi-grid-label-start-end, flexi-grid-label-hop and flexi-grid-label-step defined in <xref target="I-D.ietf-ccamp-rfc9093-bis"/>.</t>

</section>
</section>
<section anchor="optical-pc-tree"><name>Optical Path Computation Tree Diagrams</name>

<section anchor="wson-pc-tree"><name>WSON Path Computation Tree Diagrams</name>

<t><xref target="fig-wson-pc-tree"/> below shows the tree diagram of the YANG data model defined in module ietf-wson-path-computation.yang.</t>

<figure title="WSON path computation tree diagram" anchor="fig-wson-pc-tree"><artwork type="ascii-art" name="ietf-wson-path-computation.tree"><![CDATA[
module: ietf-wson-path-computation

  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request:
    +-- bit-stuffing?            boolean
    +-- wavelength-assignment?   identityref
    +-- gsnr-margin?             snr
  augment /te:tunnels-path-compute/te:output/te:path-compute-result
            /tepc:response/tepc:computed-paths-properties
            /tepc:computed-path-properties/tepc:path-properties:
    +--ro estimated-gsnr?   snr
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:optimizations/tepc:algorithm
            /tepc:metric/tepc:optimization-metric
            /tepc:explicit-route-exclude-objects
            /tepc:route-object-exclude-object/tepc:type:
    +--:(oms-element)
       +-- oms-element-uid?   string
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:optimizations/tepc:algorithm
            /tepc:metric/tepc:optimization-metric
            /tepc:explicit-route-include-objects
            /tepc:route-object-include-object/tepc:type:
    +--:(oms-element)
       +-- oms-element-uid?   string
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:explicit-route-objects-always
            /tepc:route-object-exclude-always/tepc:type:
    +--:(oms-element)
       +-- oms-element-uid?   string
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:explicit-route-objects-always
            /tepc:route-object-include-exclude/tepc:type:
    +--:(oms-element)
       +-- oms-element-uid?   string
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:synchronization/tepc:exclude-objects/tepc:excludes
            /tepc:type:
    +--:(oms-element)
       +-- oms-element-uid?   string
  augment /te:tunnels-path-compute/te:output/te:path-compute-result
            /tepc:response/tepc:computed-paths-properties
            /tepc:computed-path-properties/tepc:path-properties
            /tepc:path-route-objects/tepc:path-route-object
            /tepc:type:
    +--:(oms-element)
       +--ro oms-element-uid?   string
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-in-segment
            /tepc:label-restrictions/tepc:label-restriction:
    +-- grid-type?   identityref
    +-- priority?    uint8
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-out-segment
            /tepc:label-restrictions/tepc:label-restriction:
    +-- grid-type?   identityref
    +-- priority?    uint8
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:optimizations/tepc:algorithm
            /tepc:metric/tepc:optimization-metric
            /tepc:explicit-route-exclude-objects
            /tepc:route-object-exclude-object/tepc:type/tepc:label
            /tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(wson)
       +-- (grid-type)?
          +--:(dwdm)
          |  +-- (single-or-super-channel)?
          |     +--:(single)
          |     |  +-- dwdm-n?              l0-types:dwdm-n
          |     +--:(super)
          |        +-- subcarrier-dwdm-n*   l0-types:dwdm-n
          +--:(cwdm)
             +-- cwdm-n?                    l0-types:cwdm-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:optimizations/tepc:algorithm
            /tepc:metric/tepc:optimization-metric
            /tepc:explicit-route-include-objects
            /tepc:route-object-include-object/tepc:type/tepc:label
            /tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(wson)
       +-- (grid-type)?
          +--:(dwdm)
          |  +-- (single-or-super-channel)?
          |     +--:(single)
          |     |  +-- dwdm-n?              l0-types:dwdm-n
          |     +--:(super)
          |        +-- subcarrier-dwdm-n*   l0-types:dwdm-n
          +--:(cwdm)
             +-- cwdm-n?                    l0-types:cwdm-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:explicit-route-objects-always
            /tepc:route-object-exclude-always/tepc:type/tepc:label
            /tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(wson)
       +-- (grid-type)?
          +--:(dwdm)
          |  +-- (single-or-super-channel)?
          |     +--:(single)
          |     |  +-- dwdm-n?              l0-types:dwdm-n
          |     +--:(super)
          |        +-- subcarrier-dwdm-n*   l0-types:dwdm-n
          +--:(cwdm)
             +-- cwdm-n?                    l0-types:cwdm-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:explicit-route-objects-always
            /tepc:route-object-include-exclude/tepc:type/tepc:label
            /tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(wson)
       +-- (grid-type)?
          +--:(dwdm)
          |  +-- (single-or-super-channel)?
          |     +--:(single)
          |     |  +-- dwdm-n?              l0-types:dwdm-n
          |     +--:(super)
          |        +-- subcarrier-dwdm-n*   l0-types:dwdm-n
          +--:(cwdm)
             +-- cwdm-n?                    l0-types:cwdm-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-in-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-start/tepc:te-label/tepc:technology:
    +--:(wson)
       +-- (grid-type)?
          +--:(dwdm)
          |  +-- dwdm-n?   l0-types:dwdm-n
          +--:(cwdm)
             +-- cwdm-n?   l0-types:cwdm-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-in-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-end/tepc:te-label/tepc:technology:
    +--:(wson)
       +-- (grid-type)?
          +--:(dwdm)
          |  +-- dwdm-n?   l0-types:dwdm-n
          +--:(cwdm)
             +-- cwdm-n?   l0-types:cwdm-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-in-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-step/tepc:technology:
    +--:(wson)
       +-- (l0-grid-type)?
          +--:(dwdm)
          |  +-- wson-dwdm-channel-spacing?   identityref
          +--:(cwdm)
             +-- wson-cwdm-channel-spacing?   identityref
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-out-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-start/tepc:te-label/tepc:technology:
    +--:(wson)
       +-- (grid-type)?
          +--:(dwdm)
          |  +-- dwdm-n?   l0-types:dwdm-n
          +--:(cwdm)
             +-- cwdm-n?   l0-types:cwdm-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-out-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-end/tepc:te-label/tepc:technology:
    +--:(wson)
       +-- (grid-type)?
          +--:(dwdm)
          |  +-- dwdm-n?   l0-types:dwdm-n
          +--:(cwdm)
             +-- cwdm-n?   l0-types:cwdm-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-out-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-step/tepc:technology:
    +--:(wson)
       +-- (l0-grid-type)?
          +--:(dwdm)
          |  +-- wson-dwdm-channel-spacing?   identityref
          +--:(cwdm)
             +-- wson-cwdm-channel-spacing?   identityref
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:synchronization/tepc:exclude-objects/tepc:excludes
            /tepc:type/tepc:label/tepc:label-hop/tepc:te-label
            /tepc:technology:
    +--:(wson)
       +-- (grid-type)?
          +--:(dwdm)
          |  +-- (single-or-super-channel)?
          |     +--:(single)
          |     |  +-- dwdm-n?              l0-types:dwdm-n
          |     +--:(super)
          |        +-- subcarrier-dwdm-n*   l0-types:dwdm-n
          +--:(cwdm)
             +-- cwdm-n?                    l0-types:cwdm-n
  augment /te:tunnels-path-compute/te:output/te:path-compute-result
            /tepc:response/tepc:computed-paths-properties
            /tepc:computed-path-properties/tepc:path-properties
            /tepc:path-route-objects/tepc:path-route-object/tepc:type
            /tepc:label/tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(wson)
       +--ro (grid-type)?
          +--:(dwdm)
          |  +--ro (single-or-super-channel)?
          |     +--:(single)
          |     |  +--ro dwdm-n?              l0-types:dwdm-n
          |     +--:(super)
          |        +--ro subcarrier-dwdm-n*   l0-types:dwdm-n
          +--:(cwdm)
             +--ro cwdm-n?                    l0-types:cwdm-n
]]></artwork></figure>

</section>
<section anchor="flexg-pc-tree"><name>Flexi-grid Path Computation Tree Diagrams</name>

<t><xref target="fig-flexg-pc-tree"/> below shows the tree diagram of the YANG data model defined in module ietf-flexi-grid-path-computation.yang.</t>

<figure title="Flexi-grid path computation tree diagram" anchor="fig-flexg-pc-tree"><artwork type="ascii-art" name="ietf-flexi-grid-path-computation.tree"><![CDATA[
module: ietf-flexi-grid-path-computation

  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request:
    +-- bit-stuffing?            boolean
    +-- wavelength-assignment?   identityref
    +-- gsnr-margin?             snr
  augment /te:tunnels-path-compute/te:output/te:path-compute-result
            /tepc:response/tepc:computed-paths-properties
            /tepc:computed-path-properties/tepc:path-properties:
    +--ro estimated-gsnr?   snr
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:optimizations/tepc:algorithm
            /tepc:metric/tepc:optimization-metric
            /tepc:explicit-route-exclude-objects
            /tepc:route-object-exclude-object/tepc:type:
    +--:(oms-element)
       +-- oms-element-uid?   string
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:optimizations/tepc:algorithm
            /tepc:metric/tepc:optimization-metric
            /tepc:explicit-route-include-objects
            /tepc:route-object-include-object/tepc:type:
    +--:(oms-element)
       +-- oms-element-uid?   string
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:explicit-route-objects-always
            /tepc:route-object-exclude-always/tepc:type:
    +--:(oms-element)
       +-- oms-element-uid?   string
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:explicit-route-objects-always
            /tepc:route-object-include-exclude/tepc:type:
    +--:(oms-element)
       +-- oms-element-uid?   string
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:synchronization/tepc:exclude-objects/tepc:excludes
            /tepc:type:
    +--:(oms-element)
       +-- oms-element-uid?   string
  augment /te:tunnels-path-compute/te:output/te:path-compute-result
            /tepc:response/tepc:computed-paths-properties
            /tepc:computed-path-properties/tepc:path-properties
            /tepc:path-route-objects/tepc:path-route-object
            /tepc:type:
    +--:(oms-element)
       +--ro oms-element-uid?   string
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-in-segment
            /tepc:label-restrictions/tepc:label-restriction:
    +-- grid-type?    identityref
    +-- priority?     uint8
    +-- flexi-grid
       +-- slot-width-granularity?   identityref
       +-- min-slot-width-factor?    uint16
       +-- max-slot-width-factor?    uint16
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-out-segment
            /tepc:label-restrictions/tepc:label-restriction:
    +-- grid-type?    identityref
    +-- priority?     uint8
    +-- flexi-grid
       +-- slot-width-granularity?   identityref
       +-- min-slot-width-factor?    uint16
       +-- max-slot-width-factor?    uint16
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:optimizations/tepc:algorithm
            /tepc:metric/tepc:optimization-metric
            /tepc:explicit-route-exclude-objects
            /tepc:route-object-exclude-object/tepc:type/tepc:label
            /tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(flexi-grid)
       +-- (single-or-super-channel)?
          +--:(single)
          |  +-- flexi-n?              l0-types:flexi-n
          |  +-- flexi-m?              l0-types:flexi-m
          +--:(super)
             +-- subcarrier-flexi-n* [flexi-n]
                +-- flexi-n    l0-types:flexi-n
                +-- flexi-m?   l0-types:flexi-m
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:optimizations/tepc:algorithm
            /tepc:metric/tepc:optimization-metric
            /tepc:explicit-route-include-objects
            /tepc:route-object-include-object/tepc:type/tepc:label
            /tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(flexi-grid)
       +-- (single-or-super-channel)?
          +--:(single)
          |  +-- flexi-n?              l0-types:flexi-n
          |  +-- flexi-m?              l0-types:flexi-m
          +--:(super)
             +-- subcarrier-flexi-n* [flexi-n]
                +-- flexi-n    l0-types:flexi-n
                +-- flexi-m?   l0-types:flexi-m
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:explicit-route-objects-always
            /tepc:route-object-exclude-always/tepc:type/tepc:label
            /tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(flexi-grid)
       +-- (single-or-super-channel)?
          +--:(single)
          |  +-- flexi-n?              l0-types:flexi-n
          |  +-- flexi-m?              l0-types:flexi-m
          +--:(super)
             +-- subcarrier-flexi-n* [flexi-n]
                +-- flexi-n    l0-types:flexi-n
                +-- flexi-m?   l0-types:flexi-m
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:explicit-route-objects-always
            /tepc:route-object-include-exclude/tepc:type/tepc:label
            /tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(flexi-grid)
       +-- (single-or-super-channel)?
          +--:(single)
          |  +-- flexi-n?              l0-types:flexi-n
          |  +-- flexi-m?              l0-types:flexi-m
          +--:(super)
             +-- subcarrier-flexi-n* [flexi-n]
                +-- flexi-n    l0-types:flexi-n
                +-- flexi-m?   l0-types:flexi-m
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-in-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-start/tepc:te-label/tepc:technology:
    +--:(flexi-grid)
       +-- flexi-n?   l0-types:flexi-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-in-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-end/tepc:te-label/tepc:technology:
    +--:(flexi-grid)
       +-- flexi-n?   l0-types:flexi-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-in-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-step/tepc:technology:
    +--:(flexi-grid)
       +-- flexi-grid-channel-spacing?   identityref
       +-- flexi-n-step?                 uint8
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-out-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-start/tepc:te-label/tepc:technology:
    +--:(flexi-grid)
       +-- flexi-n?   l0-types:flexi-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-out-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-end/tepc:te-label/tepc:technology:
    +--:(flexi-grid)
       +-- flexi-n?   l0-types:flexi-n
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-out-segment
            /tepc:label-restrictions/tepc:label-restriction
            /tepc:label-step/tepc:technology:
    +--:(flexi-grid)
       +-- flexi-grid-channel-spacing?   identityref
       +-- flexi-n-step?                 uint8
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:synchronization/tepc:exclude-objects/tepc:excludes
            /tepc:type/tepc:label/tepc:label-hop/tepc:te-label
            /tepc:technology:
    +--:(flexi-grid)
       +-- (single-or-super-channel)?
          +--:(single)
          |  +-- flexi-n?              l0-types:flexi-n
          |  +-- flexi-m?              l0-types:flexi-m
          +--:(super)
             +-- subcarrier-flexi-n* [flexi-n]
                +-- flexi-n    l0-types:flexi-n
                +-- flexi-m?   l0-types:flexi-m
  augment /te:tunnels-path-compute/te:output/te:path-compute-result
            /tepc:response/tepc:computed-paths-properties
            /tepc:computed-path-properties/tepc:path-properties
            /tepc:path-route-objects/tepc:path-route-object/tepc:type
            /tepc:label/tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(flexi-grid)
       +--ro (single-or-super-channel)?
          +--:(single)
          |  +--ro flexi-n?              l0-types:flexi-n
          |  +--ro flexi-m?              l0-types:flexi-m
          +--:(super)
             +--ro subcarrier-flexi-n* [flexi-n]
                +--ro flexi-n    l0-types:flexi-n
                +--ro flexi-m?   l0-types:flexi-m
]]></artwork></figure>

</section>
</section>
<section anchor="optical-pc-yang"><name>YANG Models for Optical Path Computation</name>

<section anchor="wson-pc-yang"><name>YANG Model for WSON Path Computation</name>

<figure title="WSON path computation YANG module" anchor="fig-wson-pc-yang"><sourcecode type="yang" markers="true" name="ietf-wson-path-computation@2022-09-08.yang"><![CDATA[
module ietf-wson-path-computation {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-wson-path-computation";
  prefix "wson-pc";

  import ietf-te-path-computation {
    prefix "tepc";
    revision-date "2021-09-06";
    reference 
      "I-D.ietf-teas-yang-path-computation-14: Yang model
      for requesting Path Computation.";
  }

  import ietf-te {
    prefix "te";
    revision-date "2021-02-20";
    reference
      "I-D.ietf-teas-yang-te-19: A YANG Data Model for Traffic
      Engineering Tunnels and Interfaces. ";
  }

  import ietf-layer0-types {
    prefix "l0-types";
    reference
      "I-D.ietf-ccamp-rfc9093-bis: A YANG Data Model for Layer 0
      Types.";
  }

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

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

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

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

  description
    "This module defines a model for requesting
    WSON Path Computation.

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

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

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

  revision "2022-09-08" {
    description
      "Initial version.";
    reference
      "RFC XXXX: YANG Data Models for requesting Path Computation
      in Optical Networks.";
    // RFC Ed.: replace XXXX with actual RFC number, update date 
    // information and remove this note
  }

 /*
  * Data nodes
  */

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request" {
    description
       "Augment with additional constraints for WSON paths.";
    uses l0-types:l0-tunnel-attributes;
    uses l0-types:l0-path-constraints;
  }

  augment "/te:tunnels-path-compute/te:output/"
        + "te:path-compute-result/tepc:response/"
        + "tepc:computed-paths-properties/"
        + "tepc:computed-path-properties/tepc:path-properties" {
    description
       "Augment with additional properties for WSON paths.";
    uses l0-types:l0-path-properties;
  }

  /*
   * Augment Route Hop
   */

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:optimizations/tepc:algorithm/"
        + "tepc:metric/tepc:optimization-metric/"
        + "tepc:explicit-route-exclude-objects/"
        + "tepc:route-object-exclude-object/tepc:type" {
    description
      "Augment the route hop for the optimization of the explicit
      route objects excluded by the path computation of the requested
      path.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:optimizations/tepc:algorithm/"
        + "tepc:metric/tepc:optimization-metric/"
        + "tepc:explicit-route-include-objects/"
        + "tepc:route-object-include-object/tepc:type" {
    description
      "Augment the route hop for the optimization of the explicit
      route objects included by the path computation of the requested
      path.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:explicit-route-objects-always/"
        + "tepc:route-object-exclude-always/tepc:type" {
    description
      "Augment the route hop for the explicit route objects always
      excluded by the path computation of the requested path.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:explicit-route-objects-always/"
        + "tepc:route-object-include-exclude/tepc:type" {
    description
      "Augment the route hop for the explicit route objects included
      or excluded by the path computation of the requested path.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:synchronization/tepc:exclude-objects/tepc:excludes/"
        + "tepc:type" {
    description
      "Augment the route hop for the explicit route objects to always
      exclude from synchronized path computation.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  augment "/te:tunnels-path-compute/te:output/"
        + "te:path-compute-result/tepc:response/"
        + "tepc:computed-paths-properties/"
        + "tepc:computed-path-properties/tepc:path-properties/"
        + "tepc:path-route-objects/tepc:path-route-object/"
        + "tepc:type" {
    description
      "Augment the route hop for the route object of the computed
      path.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  /*
   * Augment TE label range information
   */

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-in-segment/"
        + "tepc:label-restrictions/tepc:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the requested path.";
    uses l0-types:l0-label-range-info;
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-out-segment/"
        + "tepc:label-restrictions/tepc:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the requested path.";
    uses l0-types:l0-label-range-info;
  }

  /*
   * Augment TE label.
   */

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:optimizations/tepc:algorithm/"
        + "tepc:metric/tepc:optimization-metric/"
        + "tepc:explicit-route-exclude-objects/"
        + "tepc:route-object-exclude-object/tepc:type/tepc:label/"
        + "tepc:label-hop/tepc:te-label/tepc:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects excluded by the path computation of the requested
      path.";
    case wson {
      uses l0-types:wson-label-hop;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:optimizations/tepc:algorithm/"
        + "tepc:metric/tepc:optimization-metric/"
        + "tepc:explicit-route-include-objects/"
        + "tepc:route-object-include-object/tepc:type/tepc:label/"
        + "tepc:label-hop/tepc:te-label/tepc:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects included by the path computation of the requested
      path.";
    case wson {
      uses l0-types:wson-label-hop;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:explicit-route-objects-always/"
        + "tepc:route-object-exclude-always/tepc:type/tepc:label/"
        + "tepc:label-hop/tepc:te-label/tepc:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation of the requested path.";
    case wson {
      uses l0-types:wson-label-hop;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:explicit-route-objects-always/"
        + "tepc:route-object-include-exclude/tepc:type/tepc:label/"
        + "tepc:label-hop/tepc:te-label/tepc:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation of the requested path.";
    case wson {
      uses l0-types:wson-label-hop;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-in-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-start/tepc:te-label/tepc:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the requested path.";
    case wson {
      uses l0-types:wson-label-start-end;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-in-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-end/tepc:te-label/tepc:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the requested path.";
    case wson {
      uses l0-types:wson-label-start-end;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-in-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-step/tepc:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the requested path.";
    case wson {
      uses l0-types:wson-label-step;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-out-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-start/tepc:te-label/tepc:technology" {
    description
      "Augment TE label range start for the egress segment
      of the requested path.";
    case wson {
      uses l0-types:wson-label-start-end;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-out-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-end/tepc:te-label/tepc:technology" {
    description
      "Augment TE label range end for the egress segment
      of the requested path.";
    case wson {
      uses l0-types:wson-label-start-end;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-out-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-step/tepc:technology" {
    description
      "Augment TE label range end for the egress segment
      of the requested path.";
    case wson {
      uses l0-types:wson-label-step;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:synchronization/tepc:exclude-objects/tepc:excludes/"
        + "tepc:type/tepc:label/tepc:label-hop/"
        + "tepc:te-label/tepc:technology" {
    description
      "Augment TE label hop for the explicit route objects to always
      exclude from synchronized path computation.";
    case wson {
      uses l0-types:wson-label-hop;
    }
  }

  augment "/te:tunnels-path-compute/te:output/"
        + "te:path-compute-result/tepc:response/"
        + "tepc:computed-paths-properties/"
        + "tepc:computed-path-properties/tepc:path-properties/"
        + "tepc:path-route-objects/tepc:path-route-object/"
        + "tepc:type/tepc:label/"
        + "tepc:label-hop/tepc:te-label/tepc:technology" {
    description
      "Augment TE label hop for the route object of the computed
      path.";
    case wson {
      uses l0-types:wson-label-hop;
    }
  }
}
]]></sourcecode></figure>

</section>
<section anchor="flexg-pc-yang"><name>YANG Model for Flexi-grid Path Computation</name>

<figure title="Flexi-grid path computation YANG module" anchor="fig-flexg-pc-yang"><sourcecode type="yang" markers="true" name="ietf-flexi-grid-path-computation@2022-09-08.yang"><![CDATA[
module ietf-flexi-grid-path-computation {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-flexi-grid-path-computation";
  prefix "flexg-pc";

  import ietf-te-path-computation {
    prefix "tepc";
    revision-date "2021-09-06";
    reference 
      "I-D.ietf-teas-yang-path-computation-14: Yang model
      for requesting Path Computation.";
  }

  import ietf-te {
    prefix "te";
    revision-date "2021-02-20";
    reference
      "I-D.ietf-teas-yang-te-19: A YANG Data Model for Traffic
      Engineering Tunnels and Interfaces.";
  }

  import ietf-layer0-types {
    prefix "l0-types";
    reference
      "I-D.ietf-ccamp-rfc9093-bis: A YANG Data Model for Layer 0
      Types.";
  }

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

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

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

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

  description
    "This module defines a model for requesting
    Flexi-grid Path Computation.

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

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

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

  revision "2022-09-08" {
    description
      "Initial version.";
    reference
      "RFC XXXX: YANG Data Models for requesting Path Computation
      in Optical Networks.";
    // RFC Ed.: replace XXXX with actual RFC number, update date 
    // information and remove this note
  }

 /*
  * Data nodes
  */

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request" {
    description
       "Augment with additional constraints flexi-grid
        media channel.";
    uses l0-types:l0-tunnel-attributes;
    uses l0-types:l0-path-constraints;
  }

  augment "/te:tunnels-path-compute/te:output/"
        + "te:path-compute-result/tepc:response/"
        + "tepc:computed-paths-properties/"
        + "tepc:computed-path-properties/tepc:path-properties" {
    description
       "Augment with additional properties for Flexi-grid paths.";
    uses l0-types:l0-path-properties;
  }

  /*
   * Augment Route Hop
   */

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:optimizations/tepc:algorithm/"
        + "tepc:metric/tepc:optimization-metric/"
        + "tepc:explicit-route-exclude-objects/"
        + "tepc:route-object-exclude-object/tepc:type" {
    description
      "Augment the route hop for the optimization of the explicit
      route objects excluded by the path computation of the requested
      path.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:optimizations/tepc:algorithm/"
        + "tepc:metric/tepc:optimization-metric/"
        + "tepc:explicit-route-include-objects/"
        + "tepc:route-object-include-object/tepc:type" {
    description
      "Augment the route hop for the optimization of the explicit
      route objects included by the path computation of the requested
      path.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:explicit-route-objects-always/"
        + "tepc:route-object-exclude-always/tepc:type" {
    description
      "Augment the route hop for the explicit route objects always
      excluded by the path computation of the requested path.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:explicit-route-objects-always/"
        + "tepc:route-object-include-exclude/tepc:type" {
    description
      "Augment the route hop for the explicit route objects included
      or excluded by the path computation of the requested path.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:synchronization/tepc:exclude-objects/tepc:excludes/"
        + "tepc:type" {
    description
      "Augment the route hop for the explicit route objects to always
      exclude from synchronized path computation.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  augment "/te:tunnels-path-compute/te:output/"
        + "te:path-compute-result/tepc:response/"
        + "tepc:computed-paths-properties/"
        + "tepc:computed-path-properties/tepc:path-properties/"
        + "tepc:path-route-objects/tepc:path-route-object/"
        + "tepc:type" {
    description
      "Augment the route hop for the route object of the computed
      path.";
    case oms-element {
      leaf oms-element-uid {
        type string;
        description
          "The unique id of the OMS element.";
      }
      description
        "The OMS element route hop type";
    }
  }

  /*
   * Augment TE label range information
   */

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-in-segment/"
        + "tepc:label-restrictions/tepc:label-restriction" {
    description
      "Augment TE label range information for the ingress segment
      of the requested path.";
    uses l0-types:flexi-grid-label-range-info;
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-out-segment/"
        + "tepc:label-restrictions/tepc:label-restriction" {
    description
      "Augment TE label range information for the egress segment
      of the requested path.";
    uses l0-types:flexi-grid-label-range-info;
  }

  /*
   * Augment TE label.
   */

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:optimizations/tepc:algorithm/"
        + "tepc:metric/tepc:optimization-metric/"
        + "tepc:explicit-route-exclude-objects/"
        + "tepc:route-object-exclude-object/tepc:type/tepc:label/"
        + "tepc:label-hop/tepc:te-label/tepc:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects excluded by the path computation of the requested
      path.";
    case flexi-grid {
      uses l0-types:flexi-grid-label-hop;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:optimizations/tepc:algorithm/"
        + "tepc:metric/tepc:optimization-metric/"
        + "tepc:explicit-route-include-objects/"
        + "tepc:route-object-include-object/tepc:type/tepc:label/"
        + "tepc:label-hop/tepc:te-label/tepc:technology" {
    description
      "Augment TE label hop for the optimization of the explicit
      route objects included by the path computation of the requested
      path.";
    case flexi-grid {
      uses l0-types:flexi-grid-label-hop;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:explicit-route-objects-always/"
        + "tepc:route-object-exclude-always/tepc:type/tepc:label/"
        + "tepc:label-hop/tepc:te-label/tepc:technology" {
    description
      "Augment TE label hop for the explicit route objects always
      excluded by the path computation of the requested path.";
    case flexi-grid {
      uses l0-types:flexi-grid-label-hop;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:explicit-route-objects-always/"
        + "tepc:route-object-include-exclude/tepc:type/tepc:label/"
        + "tepc:label-hop/tepc:te-label/tepc:technology" {
    description
      "Augment TE label hop for the explicit route objects included
      or excluded by the path computation of the requested path.";
    case flexi-grid {
      uses l0-types:flexi-grid-label-hop;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-in-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-start/tepc:te-label/tepc:technology" {
    description
      "Augment TE label range start for the ingress segment
      of the requested path.";
    case flexi-grid {
      uses l0-types:flexi-grid-label-start-end;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-in-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-end/tepc:te-label/tepc:technology" {
    description
      "Augment TE label range end for the ingress segment
      of the requested path.";
    case flexi-grid {
      uses l0-types:flexi-grid-label-start-end;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-in-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-step/tepc:technology" {
    description
      "Augment TE label range step for the ingress segment
      of the requested path.";
    case flexi-grid {
      uses l0-types:flexi-grid-label-step;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-out-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-start/tepc:te-label/tepc:technology" {
    description
      "Augment TE label range start for the egress segment
      of the requested path.";
    case flexi-grid {
      uses l0-types:flexi-grid-label-start-end;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-out-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-end/tepc:te-label/tepc:technology" {
    description
      "Augment TE label range end for the egress segment
      of the requested path.";
    case flexi-grid {
      uses l0-types:flexi-grid-label-start-end;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:path-out-segment/"
        + "tepc:label-restrictions/tepc:label-restriction/"
        + "tepc:label-step/tepc:technology" {
    description
      "Augment TE label range end for the egress segment
      of the requested path.";
    case flexi-grid {
      uses l0-types:flexi-grid-label-step;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:synchronization/tepc:exclude-objects/tepc:excludes/"
        + "tepc:type/tepc:label/tepc:label-hop/"
        + "tepc:te-label/tepc:technology" {
    description
      "Augment TE label hop for the explicit route objects to always
      exclude from synchronized path computation.";
    case flexi-grid {
      uses l0-types:flexi-grid-label-hop;
    }
  }

  augment "/te:tunnels-path-compute/te:output/"
        + "te:path-compute-result/tepc:response/"
        + "tepc:computed-paths-properties/"
        + "tepc:computed-path-properties/tepc:path-properties/"
        + "tepc:path-route-objects/tepc:path-route-object/"
        + "tepc:type/tepc:label/"
        + "tepc:label-hop/tepc:te-label/tepc:technology" {
    description
      "Augment TE label hop for the route object of the computed
      path.";
    case flexi-grid {
      uses l0-types:flexi-grid-label-hop;
    }
  }
}
]]></sourcecode></figure>

</section>
</section>
<section anchor="manageability-considerations"><name>Manageability Considerations</name>

<t>This document provides a method for requesting path computations for WSON and Flexi-Grid tunnels. Consideration of mechanisms to gather and collate information required for the path computations will be necessary. Furthermore, storing path computation requests and responses and triggering actions will also need to be carefully managed and secured.</t>

<t>Future versions of this document will contain additional information.</t>

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

<t>The YANG module defined in this document will be accessed via the NETCONF protocol <xref target="RFC6241"/> or RESTCONF protocol <xref target="RFC8040"/>. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) <xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS and the mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.</t>

<t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/> provides the means to restrict access to particular NETCONF or RESTCONF users to a pre-configured subset of all available NETCONF or RESTCONF protocol operations and content.</t>

<t>Some of the RPC operations defined in this YANG module may be
considered sensitive or vulnerable in some network environments. It is thus essential to control access to these operations.</t>

<t>Operations defined in this document, and their sensitivities and possible vulnerabilities, will be discussed further in future versions of this document.</t>

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

<t>This document registers the following URIs in the "ns" subregistry
   within the "IETF XML registry" <xref target="RFC3688"/>.</t>

<figure><artwork><![CDATA[
  URI: urn:ietf:params:xml:ns:yang:ietf-wson-path-computation
  Registrant Contact:  The IESG.
  XML: N/A, the requested URI is an XML namespace.

  URI: urn:ietf:params:xml:ns:yang:ietf-flexi-grid-path-computation
  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="RFC7950"/>.</t>

<figure><artwork><![CDATA[
  name:      ietf-wson-path-computation
  namespace: urn:ietf:params:xml:ns:yang:ietf-wson-path-computation
  prefix:    wson-pc
  reference: this document

  name:      ietf-flexi-grid-path-computation
  namespace: ietf:params:xml:ns:yang:ietf-flexi-grid-path-computation
  prefix:    flexg-pc
  reference: this document
]]></artwork></figure>

</section>


  </middle>

  <back>


    <references title='Normative References'>




<reference anchor='I-D.ietf-teas-yang-path-computation'>
   <front>
      <title>A YANG Data Model for requesting path computation</title>
      <author fullname='Italo Busi'>
	 <organization>Huawei Technologies</organization>
      </author>
      <author fullname='Sergio Belotti'>
	 <organization>Nokia</organization>
      </author>
      <author fullname='Oscar Gonzalez de Dios'>
	 <organization>Telefonica</organization>
      </author>
      <author fullname='Anurag Sharma'>
	 <organization>Google</organization>
      </author>
      <author fullname='Daniele Ceccarelli'>
	 <organization>Ericsson</organization>
      </author>
      <date day='22' month='March' year='2022'/>
      <abstract>
	 <t>   There are scenarios, typically in a hierarchical Software-Defined
   Networking (SDN) context, where the topology information provided by
   a Traffic Engineering (TE) network provider may be insufficient for
   its client to perform multi-domain path computation.  In these cases
   the client would need to request the TE network provider to compute
   some intra-domain paths.

   This document defines a YANG data model which contains Remote
   Procedure Calls (RPCs) to request path computation.  This model
   complements the solution, defined in RFC YYYY, to configure a TE
   tunnel path in &quot;compute-only&quot; mode.

   [RFC EDITOR NOTE: Please replace RFC YYYY with the RFC number of
   draft-ietf-teas-yang-te once it has been published.

   Moreover, this document describes some use cases where the path
   computation request, via YANG-based protocols (e.g., NETCONF or
   RESTCONF), can be needed.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-teas-yang-path-computation-18'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-teas-yang-path-computation-18.txt' type='TXT'/>
</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'><organization/></author>
<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='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'><organization/></author>
<author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'><organization/></author>
<author fullname='J. Schoenwaelder' initials='J.' role='editor' surname='Schoenwaelder'><organization/></author>
<author fullname='A. Bierman' initials='A.' role='editor' surname='Bierman'><organization/></author>
<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='RFC8340' target='https://www.rfc-editor.org/info/rfc8340'>
<front>
<title>YANG Tree Diagrams</title>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<author fullname='L. Berger' initials='L.' role='editor' surname='Berger'><organization/></author>
<date month='March' year='2018'/>
<abstract><t>This document captures the current syntax used in YANG module tree diagrams.  The purpose of this document is to provide a single location for this definition.  This syntax may be updated from time to time based on the evolution of the YANG language.</t></abstract>
</front>
<seriesInfo name='BCP' value='215'/>
<seriesInfo name='RFC' value='8340'/>
<seriesInfo name='DOI' value='10.17487/RFC8340'/>
</reference>


<reference anchor='I-D.ietf-ccamp-rfc9093-bis'>
   <front>
      <title>A YANG Data Model for Layer 0 Types</title>
      <author fullname='Haomian Zheng'>
	 <organization>Huawei</organization>
      </author>
      <author fullname='Young Lee'>
	 <organization>Samsung</organization>
      </author>
      <author fullname='Aihua Guo'>
	 <organization>Futurewei Technologies</organization>
      </author>
      <author fullname='Victor Lopez'>
	 <organization>Nokia</organization>
      </author>
      <author fullname='Daniel King'>
	 <organization>University of Lancaster</organization>
      </author>
      <author fullname='Dieter Beller'>
	 <organization>Nokia</organization>
      </author>
      <author fullname='Sergio Belotti'>
	 <organization>Nokia</organization>
      </author>
      <author fullname='Italo Busi'>
	 <organization>Huawei</organization>
      </author>
      <author fullname='Esther Le Rouzic'>
	 <organization>Orange</organization>
      </author>
      <date day='11' month='July' year='2022'/>
      <abstract>
	 <t>   This document defines a collection of common data types and groupings
   in the YANG data modeling language.  These derived common types and
   groupings are intended to be imported by modules that model Layer 0
   optical Traffic Engineering (TE) configuration and state capabilities
   such as Wavelength Switched Optical Networks (WSONs) and flexi-grid
   Dense Wavelength Division Multiplexing (DWDM) networks.

   This document obsoletes RFC 9093.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-ccamp-rfc9093-bis-01'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-ccamp-rfc9093-bis-01.txt' type='TXT'/>
</reference>


<reference anchor='I-D.ietf-teas-yang-te'>
   <front>
      <title>A YANG Data Model for Traffic Engineering Tunnels, Label Switched Paths and Interfaces</title>
      <author fullname='Tarek Saad'>
	 <organization>Juniper Networks</organization>
      </author>
      <author fullname='Rakesh Gandhi'>
	 <organization>Cisco Systems Inc</organization>
      </author>
      <author fullname='Xufeng Liu'>
	 <organization>IBM Corporation</organization>
      </author>
      <author fullname='Vishnu Pavan Beeram'>
	 <organization>Juniper Networks</organization>
      </author>
      <author fullname='Igor Bryskin'>
	 <organization>Individual</organization>
      </author>
      <author fullname='Oscar Gonzalez de Dios'>
	 <organization>Telefonica</organization>
      </author>
      <date day='11' month='July' year='2022'/>
      <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-30'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-teas-yang-te-30.txt' type='TXT'/>
</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'><organization/></author>
<author fullname='D. King' initials='D.' surname='King'><organization/></author>
<author fullname='Y. Li' initials='Y.' surname='Li'><organization/></author>
<author fullname='F. Zhang' initials='F.' surname='Zhang'><organization/></author>
<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='RFC8040' target='https://www.rfc-editor.org/info/rfc8040'>
<front>
<title>RESTCONF Protocol</title>
<author fullname='A. Bierman' initials='A.' surname='Bierman'><organization/></author>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<author fullname='K. Watsen' initials='K.' surname='Watsen'><organization/></author>
<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='RFC6242' target='https://www.rfc-editor.org/info/rfc6242'>
<front>
<title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
<author fullname='M. Wasserman' initials='M.' surname='Wasserman'><organization/></author>
<date month='June' year='2011'/>
<abstract><t>This document describes a method for invoking and running the Network Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SSH subsystem.  This document obsoletes RFC 4742.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6242'/>
<seriesInfo name='DOI' value='10.17487/RFC6242'/>
</reference>



<reference anchor='RFC8446' target='https://www.rfc-editor.org/info/rfc8446'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
<author fullname='E. Rescorla' initials='E.' surname='Rescorla'><organization/></author>
<date month='August' year='2018'/>
<abstract><t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t><t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='8446'/>
<seriesInfo name='DOI' value='10.17487/RFC8446'/>
</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'><organization/></author>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<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'><organization/></author>
<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>




    </references>

    <references title='Informative References'>





<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'><organization/></author>
<author fullname='G. Bernstein' initials='G.' role='editor' surname='Bernstein'><organization/></author>
<author fullname='D. Li' initials='D.' surname='Li'><organization/></author>
<author fullname='W. Imajuku' initials='W.' surname='Imajuku'><organization/></author>
<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='RFC7581' target='https://www.rfc-editor.org/info/rfc7581'>
<front>
<title>Routing and Wavelength Assignment Information Encoding for Wavelength Switched Optical Networks</title>
<author fullname='G. Bernstein' initials='G.' role='editor' surname='Bernstein'><organization/></author>
<author fullname='Y. Lee' initials='Y.' role='editor' surname='Lee'><organization/></author>
<author fullname='D. Li' initials='D.' surname='Li'><organization/></author>
<author fullname='W. Imajuku' initials='W.' surname='Imajuku'><organization/></author>
<author fullname='J. Han' initials='J.' surname='Han'><organization/></author>
<date month='June' year='2015'/>
<abstract><t>A Wavelength Switched Optical Network (WSON) requires certain key information fields be made available to facilitate path computation and the establishment of Label Switched Paths (LSPs). The information model described in &quot;Routing and Wavelength                           Assignment Information Model for Wavelength Switched Optical Networks&quot; (RFC 7446) shows what information is required at specific points in the WSON. Part of the WSON information model contains aspects that may be of general applicability to other technologies, while other parts are specific to WSONs.</t><t>This document provides efficient, protocol-agnostic encodings for the WSON-specific information fields.  It is intended that protocol- specific documents will reference this memo to describe how information is carried for specific uses.  Such encodings can be used to extend GMPLS signaling and routing protocols.  In addition, these encodings could be used by other mechanisms to convey this same information to a Path Computation Element (PCE).</t></abstract>
</front>
<seriesInfo name='RFC' value='7581'/>
<seriesInfo name='DOI' value='10.17487/RFC7581'/>
</reference>


<reference anchor='I-D.ietf-teas-actn-poi-applicability'>
   <front>
      <title>Applicability of Abstraction and Control of Traffic Engineered Networks (ACTN) to Packet Optical Integration (POI)</title>
      <author fullname='Fabio Peruzzini'>
	 <organization>TIM</organization>
      </author>
      <author fullname='Jean-Francois Bouquier'>
	 <organization>Vodafone</organization>
      </author>
      <author fullname='Italo Busi'>
	 <organization>Huawei</organization>
      </author>
      <author fullname='Daniel King'>
	 <organization>Old Dog Consulting</organization>
      </author>
      <author fullname='Daniele Ceccarelli'>
	 <organization>Ericsson</organization>
      </author>
      <date day='10' month='July' year='2022'/>
      <abstract>
	 <t>   This document considers the applicability of Abstraction and Control
   of TE Networks (ACTN) architecture to Packet Optical Integration
   (POI)in the context of IP/MPLS and optical internetworking. It
   identifies the YANG data models being defined by the IETF to support
   this deployment architecture and specific scenarios relevant for
   Service Providers.

   Existing IETF protocols and data models are identified for each
   multi-layer (packet over optical) scenario with a specific focus on
   the MPI (Multi-Domain Service Coordinator to Provisioning Network
   Controllers Interface)in the ACTN architecture.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-teas-actn-poi-applicability-07'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-teas-actn-poi-applicability-07.txt' type='TXT'/>
</reference>


<reference anchor='I-D.ietf-ccamp-wson-tunnel-model'>
   <front>
      <title>A Yang Data Model for WSON Tunnel</title>
      <author fullname='Young Lee'>
	 <organization>Samsung</organization>
      </author>
      <author fullname='Haomian Zheng'>
	 <organization>Huawei Technologies</organization>
      </author>
      <author fullname='Aihua Guo'>
	 <organization>Futurewei</organization>
      </author>
      <author fullname='Victor Lopez'>
	 <organization>Nokia</organization>
      </author>
      <author fullname='Daniel King'>
	 <organization>University of Lancaster</organization>
      </author>
      <author fullname='Bin Yeong Yoon'>
	 <organization>ETRI</organization>
      </author>
      <author fullname='Ricard Vilalta'>
	 <organization>CTTC</organization>
      </author>
      <date day='11' month='July' year='2022'/>
      <abstract>
	 <t>   This document provides a YANG data model for WSON TE tunnel.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-ccamp-wson-tunnel-model-07'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-ccamp-wson-tunnel-model-07.txt' type='TXT'/>
</reference>


<reference anchor='I-D.ietf-ccamp-flexigrid-tunnel-yang'>
   <front>
      <title>A YANG Data Model for Flexi-Grid Tunnels</title>
      <author fullname='Jorge E. Lopez de Vergara Mendez'>
	 <organization>Naudit HPCN</organization>
      </author>
      <author fullname='Daniel Perdices Burrero'>
	 <organization>Universidad Autonoma de Madrid</organization>
      </author>
      <author fullname='Daniel King'>
	 <organization>Old Dog Consulting</organization>
      </author>
      <author fullname='Victor Lopez'>
	 <organization>Nokia</organization>
      </author>
      <author fullname='Italo Busi'>
	 <organization>Huawei Technologies</organization>
      </author>
      <author fullname='Sergio Belotti'>
	 <organization>Nokia</organization>
      </author>
      <author fullname='G. Galimberti'>
	 <organization>Cisco</organization>
      </author>
      <date day='11' month='July' year='2022'/>
      <abstract>
	 <t>   This document defines a YANG model for managing flexi-grid optical
   tunnels (media-channels), complementing the information provided by
   the flexi-grid topology model.

   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-tunnel-yang-01'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-ccamp-flexigrid-tunnel-yang-01.txt' type='TXT'/>
</reference>




    </references>


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

<t>The authors of this document would like to thank the authors of <xref target="I-D.ietf-teas-actn-poi-applicability"/> for having identified the gap and requirements to trigger this work.</t>

<t>The authors of this document would also like to thank 
Young Lee, 
Haomian Zheng, 
Victor Lopex, 
Ricard Vilalta, 
Bin Yeong Yoon, 
Jorge E. Lopez de Vergara Mendez, 
Daniel Perdices Burrero, 
Oscar Gonzalez de Dios, 
Gabriele Galimberti, 
Zafar Ali, 
Daniel Michaud Vallinoto and 
Dhruv Dhody 
who have contributed to the development of path computation augmentations for WSON and Flexi-grid topology in earlier versions of
<xref target="I-D.ietf-ccamp-wson-tunnel-model"/> and of <xref target="I-D.ietf-ccamp-flexigrid-tunnel-yang"/>.</t>

<t>This document was prepared using kramdown.</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>
    </section>

  </back>

<!-- ##markdown-source:
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
qG9nYIyBmGCw+v/uroTNvNoAAA==

-->

</rfc>

