<?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.5.26 (Ruby 2.7.2) -->


<!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-01" 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="March" day="07"/>

    
    <workgroup>CCAMP Working Group</workgroup>
    

    <abstract>


<t>This document describes YANG data models for Remote Procedure Calls (RPCs) to request Path Computation in Optical Networks (OTN, WSON and Flexi-grid).</t>

<t>The YANG data models defined in this
document conforms to the Network Management Datastore Architecture
(NMDA).</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>

<t>The YANG data model defined in this document conforms to the Network
Management Datastore Architecture <xref target="RFC8342"/>.</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><xref target="RFC9093"/></c>
      <c>l0-types-ext</c>
      <c>ietf-layer0-types-ext</c>
      <c>[RFCYYYY]</c>
      <c>l0-types</c>
      <c>ietf-layer0-types</c>
      <c><xref target="RFC8776"/></c>
      <c>l1-types</c>
      <c>ietf-layer1-types</c>
      <c>[RFCZZZZ]</c>
      <c>te</c>
      <c>ietf-te</c>
      <c>[RFCKKKK]</c>
      <c>tep</c>
      <c>ietf-te-path-computation</c>
      <c>[RFCJJJJ]</c>
      <c>flexg-pc</c>
      <c>ietf-flexi-grid-path-computation</c>
      <c>RFCXXXX</c>
      <c>wson-pc</c>
      <c>ietf-wson-path-computation</c>
      <c>RFCXXXX</c>
      <c>otn-pc</c>
      <c>ietf-otn-path-computation</c>
      <c>RFCXXXX</c>
</texttable>

<t>RFC Editor Note:
Please replace XXXX with the RFC number assigned to this document.
Please replace YYYY with the RFC number assigned to <xref target="I-D.ietf-ccamp-layer0-types-ext"/>.
Please replace ZZZZ with the RFC number assigned to <xref target="I-D.ietf-ccamp-layer1-types"/>.
Please replace KKKK with the RFC number assigned to <xref target="I-D.ietf-teas-yang-te"/>.
Please replace JJJJ 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, Flexi-grid and OTN 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, OTN and TE path computation models" anchor="fig-optical-pc"><artwork><![CDATA[
                    +--------------------------+    o: augment
       TE generic   | ietf-te-path-computation |
                    +--------------------------+
                          o      o      o
                          |      |      |
                          |      |      |
              +-----------+      |      +-----------+
              |                  |                  |
              |                  |                  |
              |                  |                  |
              |    +---------------------------+    |
              |    | ietf-otn-path-computation |    |
              |    +---------------------------+    |
              |                 OTN                 |
              |                                     |
              |                                     |
+----------------------------+                      |
| ietf-wson-path-computation |                      |
+----------------------------+                      |
            WSON                                    |
                                +----------------------------------+
                                | ietf-flexi-grid-path-computation |
                                +----------------------------------+
                                            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, Flexi-grid and OTN path computation and the models defined in this document only specifies the additional technology-specific attributes/information, using the attributes defined in <xref target="RFC9093"/>, <xref target="I-D.ietf-ccamp-layer0-types-ext"/> and <xref target="I-D.ietf-ccamp-layer1-types"/>.</t>

<t>The YANG modules ietf-wson-path-computation, ietf-flexi-grid-path-computation and ietf-otn-path-computation defined in this document conforms
to the Network Management Datastore Architecture (NMDA) defined in
<xref target="RFC8342"/>.</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-layer0-types-ext"/> 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>

<t>The OTN path computation model augments all the occurrences of the te-bandwidth container
with the OTN technology-specific attributes using the otn-link-bandwidth and otn-path-bandwidth groupings defined in <xref target="I-D.ietf-ccamp-layer1-types"/>.</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, Flexi-grid and OTN technology-specific attributes using the 
l0-label-range-info and flexi-grid-label-range-info groupings defined in <xref target="RFC9093"/> and the
otn-label-range-info grouping defined in <xref target="I-D.ietf-ccamp-layer1-types"/>.</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="RFC9093"/> and the
otn-label-start-end, otn-label-hop and otn-label-step groupings defined in <xref target="I-D.ietf-ccamp-layer1-types"/>.</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><![CDATA[
module: ietf-wson-path-computation

  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request:
    +-- fec-type?                identityref
    +-- termination-type?        identityref
    +-- 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><![CDATA[
module: ietf-flexi-grid-path-computation

  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request:
    +-- fec-type?                identityref
    +-- termination-type?        identityref
    +-- 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 anchor="otn-pc-tree"><name>OTN Path Computation Tree Diagrams</name>

<t><xref target="fig-otn-pc-tree"/> below shows the tree diagram of the YANG data model defined in module ietf-otn-path-computation.yang.</t>

<figure title="OTN path computation tree diagram" anchor="fig-otn-pc-tree"><artwork><![CDATA[
module: ietf-otn-path-computation

  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:te-bandwidth/tepc:technology:
    +--:(otn)
       +-- otn
          +-- odu-type?                     identityref
          +-- (oduflex-type)?
             +--:(generic)
             |  +-- nominal-bit-rate        uint64
             +--:(cbr)
             |  +-- client-type             identityref
             +--:(gfp-n-k)
             |  +-- gfp-n                   uint8
             |  +-- gfp-k?                  gfp-k
             +--:(flexe-client)
             |  +-- flexe-client            flexe-client-rate
             +--:(flexe-aware)
             |  +-- flexe-aware-n           uint16
             +--:(packet)
                +-- opuflex-payload-rate    uint64
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:tunnel-attributes/tepc:te-bandwidth
            /tepc:technology:
    +--:(otn)
       +-- otn
          +-- odu-type?                     identityref
          +-- (oduflex-type)?
             +--:(generic)
             |  +-- nominal-bit-rate        uint64
             +--:(cbr)
             |  +-- client-type             identityref
             +--:(gfp-n-k)
             |  +-- gfp-n                   uint8
             |  +-- gfp-k?                  gfp-k
             +--:(flexe-client)
             |  +-- flexe-client            flexe-client-rate
             +--:(flexe-aware)
             |  +-- flexe-aware-n           uint16
             +--:(packet)
                +-- opuflex-payload-rate    uint64
  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:te-bandwidth/tepc:technology:
    +--:(otn)
       +--ro otn
          +--ro odu-type?                     identityref
          +--ro (oduflex-type)?
             +--:(generic)
             |  +--ro nominal-bit-rate        uint64
             +--:(cbr)
             |  +--ro client-type             identityref
             +--:(gfp-n-k)
             |  +--ro gfp-n                   uint8
             |  +--ro gfp-k?                  gfp-k
             +--:(flexe-client)
             |  +--ro flexe-client            flexe-client-rate
             +--:(flexe-aware)
             |  +--ro flexe-aware-n           uint16
             +--:(packet)
                +--ro opuflex-payload-rate    uint64
  augment /te:tunnels-path-compute/te:input/te:path-compute-info
            /tepc:path-request/tepc:path-in-segment
            /tepc:label-restrictions/tepc:label-restriction:
    +-- range-type?      otn-label-range-type
    +-- tsg?             identityref
    +-- odu-type-list*   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:
    +-- range-type?      otn-label-range-type
    +-- tsg?             identityref
    +-- odu-type-list*   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:
    +--:(otn)
       +-- otn-tpn?   otn-tpn
       +-- tsg?       identityref
       +-- ts-list?   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/tepc:label
            /tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(otn)
       +-- otn-tpn?   otn-tpn
       +-- tsg?       identityref
       +-- ts-list?   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/tepc:label
            /tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(otn)
       +-- otn-tpn?   otn-tpn
       +-- tsg?       identityref
       +-- ts-list?   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/tepc:label
            /tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(otn)
       +-- otn-tpn?   otn-tpn
       +-- tsg?       identityref
       +-- ts-list?   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
            /tepc:label-start/tepc:te-label/tepc:technology:
    +--:(otn)
       +-- (range-type)?
          +--:(trib-port)
          |  +-- otn-tpn?   otn-tpn
          +--:(trib-slot)
             +-- otn-ts?    otn-ts
  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:
    +--:(otn)
       +-- (range-type)?
          +--:(trib-port)
          |  +-- otn-tpn?   otn-tpn
          +--:(trib-slot)
             +-- otn-ts?    otn-ts
  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:
    +--:(otn)
       +-- (range-type)?
          +--:(trib-port)
          |  +-- otn-tpn?   otn-tpn
          +--:(trib-slot)
             +-- otn-ts?    otn-ts
  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:
    +--:(otn)
       +-- (range-type)?
          +--:(trib-port)
          |  +-- otn-tpn?   otn-tpn
          +--:(trib-slot)
             +-- otn-ts?    otn-ts
  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:
    +--:(otn)
       +-- (range-type)?
          +--:(trib-port)
          |  +-- otn-tpn?   otn-tpn
          +--:(trib-slot)
             +-- otn-ts?    otn-ts
  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:
    +--:(otn)
       +-- (range-type)?
          +--:(trib-port)
          |  +-- otn-tpn?   otn-tpn
          +--:(trib-slot)
             +-- otn-ts?    otn-ts
  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:
    +--:(otn)
       +-- otn-tpn?   otn-tpn
       +-- tsg?       identityref
       +-- ts-list?   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
            /tepc:label/tepc:label-hop/tepc:te-label/tepc:technology:
    +--:(otn)
       +--ro otn-tpn?   otn-tpn
       +--ro tsg?       identityref
       +--ro ts-list?   string
]]></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"><artwork><![CDATA[
<CODE BEGINS> file "ietf-wson-path-computation@2022-03-07.yang"
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";
  }

  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 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 "2022-03-07" {
    description
      "Initial version.";
    reference
      "RFC XXXX: YANG Model for OTN and Optical Path Computation";
    // 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;
    }
  }
}
<CODE ENDS>
]]></artwork></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"><artwork><![CDATA[
<CODE BEGINS> file "ietf-flexi-grid-path-computation@2022-03-07.yang"
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";
  }

  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 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 "2022-03-07" {
    description
      "Initial version.";
    reference
      "RFC XXXX: YANG Model for OTN and Optical Path Computation";
    // 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;
    }
  }
}
<CODE ENDS>
]]></artwork></figure>

</section>
<section anchor="otn-pc-yang"><name>YANG Model for OTN Path Computation</name>

<figure title="OTN path computation YANG module" anchor="fig-otn-pc-yang"><artwork><![CDATA[
<CODE BEGINS> file "ietf-otn-path-computation@2021-10-07.yang"
module ietf-otn-path-computation {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-otn-path-computation";
  prefix "otn-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-layer1-types {
    prefix "l1-types";
    reference 
    "I-D.ietf-ccamp-layer1-types: 
     A YANG Data Model for Layer 1 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
    OTN Path Computation.

    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 "2021-10-07" {
    description
      "Initial version.";
    reference
      "RFC XXXX: YANG Model for OTN and Optical Path Computation";
    // RFC Ed.: replace XXXX with actual RFC number, update date 
    // information and remove this note
  }

 /*
  * Data nodes
  */

  /*
   * Augment TE bandwidth
   */

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:path-request/tepc:te-bandwidth/tepc:technology" {
    description
      "Augment TE bandwidth of the requested path.";
    case otn {
      uses l1-types:otn-path-bandwidth;
    }
  }

  augment "/te:tunnels-path-compute/te:input/te:path-compute-info/"
        + "tepc:tunnel-attributes/tepc:te-bandwidth/"
        + "tepc:technology" {
    description
      "Augment TE bandwidth of the requested tunnel attributes.";
    case otn {
      uses l1-types:otn-path-bandwidth;
    }
  }

  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:te-bandwidth/tepc:technology" {
    description
      "Augment TE bandwidth of the computed path properties.";
    case otn {
      uses l1-types:otn-path-bandwidth;
    }
  }

  /*
   * 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 l1-types:otn-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 l1-types:otn-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 otn {
      uses l1-types:otn-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 otn {
      uses l1-types:otn-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 otn {
      uses l1-types:otn-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 otn {
      uses l1-types:otn-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 otn {
      uses l1-types:otn-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 otn {
      uses l1-types:otn-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 otn {
      uses l1-types:otn-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 otn {
      uses l1-types:otn-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 otn {
      uses l1-types:otn-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 otn {
      uses l1-types:otn-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 otn {
      uses l1-types:otn-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 otn {
      uses l1-types:otn-label-hop;
    }
  }
}
<CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="manageability-considerations"><name>Manageability Considerations</name>

<t>TBD.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>&lt;Add any security considerations&gt;</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-otn-path-computation
  Registrant Contact:  The IESG.
  XML: N/A, the requested URI is an XML namespace.

  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-otn-path-computation
  namespace: urn:ietf:params:xml:ns:yang:ietf-otn-path-computation
  prefix:    otn-pc
  reference: this document

  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='Yan Shi'>
	 <organization>China Unicom</organization>
      </author>
      <author fullname='Daniele Ceccarelli'>
	 <organization>Ericsson</organization>
      </author>
      <date day='7' 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-17'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-teas-yang-path-computation-17.txt' type='TXT'/>
</reference>



<reference anchor='RFC8342' target='https://www.rfc-editor.org/info/rfc8342'>
<front>
<title>Network Management Datastore Architecture (NMDA)</title>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<author fullname='J. Schoenwaelder' initials='J.' surname='Schoenwaelder'><organization/></author>
<author fullname='P. Shafer' initials='P.' surname='Shafer'><organization/></author>
<author fullname='K. Watsen' initials='K.' surname='Watsen'><organization/></author>
<author fullname='R. Wilton' initials='R.' surname='Wilton'><organization/></author>
<date month='March' year='2018'/>
<abstract><t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model.  This document updates RFC 7950.</t></abstract>
</front>
<seriesInfo name='RFC' value='8342'/>
<seriesInfo name='DOI' value='10.17487/RFC8342'/>
</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='RFC9093' target='https://www.rfc-editor.org/info/rfc9093'>
<front>
<title>A YANG Data Model for Layer 0 Types</title>
<author fullname='H. Zheng' initials='H.' surname='Zheng'><organization/></author>
<author fullname='Y. Lee' initials='Y.' surname='Lee'><organization/></author>
<author fullname='A. Guo' initials='A.' surname='Guo'><organization/></author>
<author fullname='V. Lopez' initials='V.' surname='Lopez'><organization/></author>
<author fullname='D. King' initials='D.' surname='King'><organization/></author>
<date month='August' year='2021'/>
<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.</t></abstract>
</front>
<seriesInfo name='RFC' value='9093'/>
<seriesInfo name='DOI' value='10.17487/RFC9093'/>
</reference>



<reference anchor='RFC8776' target='https://www.rfc-editor.org/info/rfc8776'>
<front>
<title>Common YANG Data Types for Traffic Engineering</title>
<author fullname='T. Saad' initials='T.' surname='Saad'><organization/></author>
<author fullname='R. Gandhi' initials='R.' surname='Gandhi'><organization/></author>
<author fullname='X. Liu' initials='X.' surname='Liu'><organization/></author>
<author fullname='V. Beeram' initials='V.' surname='Beeram'><organization/></author>
<author fullname='I. Bryskin' initials='I.' surname='Bryskin'><organization/></author>
<date month='June' year='2020'/>
<abstract><t>This document defines a collection of common data types and groupings in YANG data modeling language. These derived common types and groupings are intended to be imported by modules that model Traffic Engineering (TE) configuration and state capabilities.</t></abstract>
</front>
<seriesInfo name='RFC' value='8776'/>
<seriesInfo name='DOI' value='10.17487/RFC8776'/>
</reference>


<reference anchor='I-D.ietf-ccamp-layer0-types-ext'>
   <front>
      <title>A YANG Data Model for Layer 0 Types - Revision 2</title>
      <author fullname='Dieter Beller'>
	 <organization>Nokia</organization>
      </author>
      <author fullname='Sergio Belotti'>
	 <organization>Nokia</organization>
      </author>
      <author fullname='Haomian Zheng'>
	 <organization>Huawei</organization>
      </author>
      <author fullname='Italo Busi'>
	 <organization>Huawei</organization>
      </author>
      <author fullname='Esther Le Rouzic'>
	 <organization>Orange</organization>
      </author>
      <date day='25' month='October' year='2021'/>
      <abstract>
	 <t>   This document defines a collection of common data types and groupings
   in the YANG data modeling language, which are used in several YANG
   modules for wavelength Division multiplexing (WDM) transport
   networks.  The YANG module ietf-layer0-types-ext updates ietf-
   layer0-types defined in [RFC9093], which has been reduced in scope
   prior to publication to only cover spectrum management related
   aspects required for the YANG module ietf-wson-topology defined in
   [RFC9094].

   To be completed

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-ccamp-layer0-types-ext-01'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-ccamp-layer0-types-ext-01.txt' type='TXT'/>
</reference>


<reference anchor='I-D.ietf-ccamp-layer1-types'>
   <front>
      <title>A YANG Data Model for Layer 1 Types</title>
      <author fullname='Haomian Zheng'>
	 <organization>Huawei Technologies</organization>
      </author>
      <author fullname='Italo Busi'>
	 <organization>Huawei Technologies</organization>
      </author>
      <date day='7' month='September' year='2021'/>
      <abstract>
	 <t>   This document defines a collection of common data types and groupings
   in the YANG data modeling language for use with layer 1 networks.
   These derived common types and groupings are intended to be imported
   by modules that specify OTN networks, such as topology, tunnel,
   client signal adaptation and service.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-ccamp-layer1-types-11'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-ccamp-layer1-types-11.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>Volta Networks</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='7' month='February' 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 is divided into YANG modules that
   classify data into generic, device-specific, technology agnostic, and
   technology-specific elements.

   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-29'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-teas-yang-te-29.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='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='7' month='March' 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-06'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-teas-actn-poi-applicability-06.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='22' month='October' year='2021'/>
      <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-06'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-ccamp-wson-tunnel-model-06.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='Oscar Gonzalez de Dios'>
	 <organization>Telefonica I+D/GCTO</organization>
      </author>
      <author fullname='Young Lee'>
	 <organization>Samsung</organization>
      </author>
      <author fullname='G. Galimberti'>
	 <organization>Cisco</organization>
      </author>
      <date day='9' month='November' year='2021'/>
      <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-00'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-ccamp-flexigrid-tunnel-yang-00.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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
P2o5UlxKHAEA

-->

</rfc>

