Internet-Draft | YANG for OTN Path Computation | October 2023 |
Busi, et al. | Expires 22 April 2024 | [Page] |
This document provides a mechanism to request path computation in an Optical Transport Network (OTN) by augmenting the Remote Procedure Calls (RPCs) defined in RFC YYYY.¶
[RFC EDITOR NOTE: Please replace RFC YYYY with the RFC number of draft-ietf-teas-yang-path-computation once it has been published.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 22 April 2024.¶
Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
[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 an Optical Transport Network (OTN).¶
This document defines a YANG data model, which augment the generic Path Computation RPC defined in [I-D.ietf-teas-yang-path-computation], with OTN technology-specific augmentations required to request path computation to an underlying OTN SDN controller. These models allow a client to delegate path computation tasks to the underlying SDN controller without having to obtain OTN detailed information from the controller and performing feasible path computation itself.¶
Refer to [I-D.ietf-ccamp-otn-topo-yang] and [I-D.ietf-ccamp-layer1-types] for the OTN specific terms used in this document.¶
The following terms are defined in [RFC7950] and are not redefined here:¶
The following terms are defined in [RFC6241] and are not redefined here:¶
The terminology for describing YANG data models is found in [RFC7950].¶
A simplified graphical representation of the data model is used in Section 3 of this document. The meaning of the symbols in these diagrams is defined in [RFC8340].¶
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 Table 1.¶
Prefix | YANG module | Reference |
---|---|---|
l1-types | ietf-layer1-types | [RFCZZZZ] |
te | ietf-te | [RFCKKKK] |
te-pc | ietf-te-path-computation | [RFCYYYY] |
otn-pc | ietf-otn-path-computation | RFCXXXX |
RFC Editor Note: Please replace XXXX with the RFC number assigned to this document. Please replace YYYY with the RFC number assigned to [I-D.ietf-teas-yang-path-computation]. Please replace ZZZZ with the RFC number assigned to [I-D.ietf-ccamp-layer1-types]. Please replace KKKK with the RFC number assigned to [I-D.ietf-teas-yang-te]. Please remove this note.¶
The YANG data model for requesting OTN path computation is defined as an augmentation of the generic Path Computation RPC defined in [I-D.ietf-teas-yang-path-computation], as shown in Figure 1.¶
+--------------------------+ o: augment TE generic | ietf-te-path-computation | +--------------------------+ o | | | +---------------------------+ OTN | ietf-otn-path-computation | +---------------------------+
The entities and Traffic Engineering (TE) attributes, such as requested path and tunnel attributes, defined in [I-D.ietf-teas-yang-path-computation], are still applicable when requesting OTN path computation and the models defined in this document only specifies the additional OTN technology-specific attributes/information, using the attributes defined in [I-D.ietf-ccamp-layer1-types].¶
The YANG module ietf-otn-path-computation defined in this document conforms to the Network Management Datastore Architecture (NMDA) defined in [RFC8342].¶
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 [I-D.ietf-ccamp-layer1-types].¶
The OTN path computation model augments all the occurrences of the label-restriction list with OTN technology-specific attributes using the otn-label-range-info grouping defined in [I-D.ietf-ccamp-layer1-types].¶
Moreover, the model augments all the occurrences of the te-label container with the OTN technology-specific attributes using the otn-label-start-end, otn-label-hop and otn-label-step groupings defined in [I-D.ietf-ccamp-layer1-types].¶
Figure 2 below shows the tree diagram of the YANG data model defined in module ietf-otn-path-computation.yang.¶
module: ietf-otn-path-computation augment /te:tunnels-path-compute/te:input/te:path-compute-info /te-pc:path-request/te-pc:te-bandwidth/te-pc:technology: +--:(otn) +-- otn +-- odu-type? identityref +-- (oduflex-type)? +--:(generic) | +-- nominal-bit-rate union +--:(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 union augment /te:tunnels-path-compute/te:input/te:path-compute-info /te-pc:tunnel-attributes/te-pc:te-bandwidth /te-pc:technology: +--:(otn) +-- otn +-- odu-type? identityref +-- (oduflex-type)? +--:(generic) | +-- nominal-bit-rate union +--:(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 union augment /te:tunnels-path-compute/te:output/te:path-compute-result /te-pc:response/te-pc:computed-paths-properties /te-pc:computed-path-properties/te-pc:path-properties /te-pc:te-bandwidth/te-pc:technology: +--:(otn) +--ro otn +--ro odu-type? identityref +--ro (oduflex-type)? +--:(generic) | +--ro nominal-bit-rate union +--:(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 union augment /te:tunnels-path-compute/te:input/te:path-compute-info /te-pc:path-request/te-pc:path-in-segment /te-pc:label-restrictions/te-pc:label-restriction: +-- otn-label-range +-- 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 /te-pc:path-request/te-pc:path-out-segment /te-pc:label-restrictions/te-pc:label-restriction: +-- otn-label-range +-- 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 /te-pc:path-request/te-pc:optimizations/te-pc:algorithm /te-pc:metric/te-pc:optimization-metric /te-pc:explicit-route-exclude-objects /te-pc:route-object-exclude-object/te-pc:type/te-pc:label /te-pc:label-hop/te-pc:te-label/te-pc:technology: +--:(otn) +-- otn +-- tpn? otn-tpn +-- tsg? identityref +-- ts-list? string augment /te:tunnels-path-compute/te:input/te:path-compute-info /te-pc:path-request/te-pc:optimizations/te-pc:algorithm /te-pc:metric/te-pc:optimization-metric /te-pc:explicit-route-include-objects /te-pc:route-object-include-object/te-pc:type/te-pc:label /te-pc:label-hop/te-pc:te-label/te-pc:technology: +--:(otn) +-- otn +-- tpn? otn-tpn +-- tsg? identityref +-- ts-list? string augment /te:tunnels-path-compute/te:input/te:path-compute-info /te-pc:path-request/te-pc:explicit-route-objects-always /te-pc:route-object-exclude-always/te-pc:type/te-pc:label /te-pc:label-hop/te-pc:te-label/te-pc:technology: +--:(otn) +-- otn +-- tpn? otn-tpn +-- tsg? identityref +-- ts-list? string augment /te:tunnels-path-compute/te:input/te:path-compute-info /te-pc:path-request/te-pc:explicit-route-objects-always /te-pc:route-object-include-exclude/te-pc:type /te-pc:label/te-pc:label-hop/te-pc:te-label /te-pc:technology: +--:(otn) +-- otn +-- tpn? otn-tpn +-- tsg? identityref +-- ts-list? string augment /te:tunnels-path-compute/te:input/te:path-compute-info /te-pc:path-request/te-pc:path-in-segment /te-pc:label-restrictions/te-pc:label-restriction /te-pc:label-start/te-pc:te-label/te-pc:technology: +--:(otn) +-- otn +-- (range-type)? +--:(trib-port) | +-- tpn? otn-tpn +--:(trib-slot) +-- ts? otn-ts augment /te:tunnels-path-compute/te:input/te:path-compute-info /te-pc:path-request/te-pc:path-in-segment /te-pc:label-restrictions/te-pc:label-restriction /te-pc:label-end/te-pc:te-label/te-pc:technology: +--:(otn) +-- otn +-- (range-type)? +--:(trib-port) | +-- tpn? otn-tpn +--:(trib-slot) +-- ts? otn-ts augment /te:tunnels-path-compute/te:input/te:path-compute-info /te-pc:path-request/te-pc:path-in-segment /te-pc:label-restrictions/te-pc:label-restriction /te-pc:label-step/te-pc:technology: +--:(otn) +-- otn +-- (range-type)? +--:(trib-port) | +-- tpn? otn-tpn +--:(trib-slot) +-- ts? otn-ts augment /te:tunnels-path-compute/te:input/te:path-compute-info /te-pc:path-request/te-pc:path-out-segment /te-pc:label-restrictions/te-pc:label-restriction /te-pc:label-start/te-pc:te-label/te-pc:technology: +--:(otn) +-- otn +-- (range-type)? +--:(trib-port) | +-- tpn? otn-tpn +--:(trib-slot) +-- ts? otn-ts augment /te:tunnels-path-compute/te:input/te:path-compute-info /te-pc:path-request/te-pc:path-out-segment /te-pc:label-restrictions/te-pc:label-restriction /te-pc:label-end/te-pc:te-label/te-pc:technology: +--:(otn) +-- otn +-- (range-type)? +--:(trib-port) | +-- tpn? otn-tpn +--:(trib-slot) +-- ts? otn-ts augment /te:tunnels-path-compute/te:input/te:path-compute-info /te-pc:path-request/te-pc:path-out-segment /te-pc:label-restrictions/te-pc:label-restriction /te-pc:label-step/te-pc:technology: +--:(otn) +-- otn +-- (range-type)? +--:(trib-port) | +-- tpn? otn-tpn +--:(trib-slot) +-- ts? otn-ts augment /te:tunnels-path-compute/te:input/te:path-compute-info /te-pc:synchronization/te-pc:exclude-objects /te-pc:excludes/te-pc:type/te-pc:label/te-pc:label-hop /te-pc:te-label/te-pc:technology: +--:(otn) +-- otn +-- tpn? otn-tpn +-- tsg? identityref +-- ts-list? string augment /te:tunnels-path-compute/te:output/te:path-compute-result /te-pc:response/te-pc:computed-paths-properties /te-pc:computed-path-properties/te-pc:path-properties /te-pc:path-route-objects/te-pc:path-route-object /te-pc:type/te-pc:label/te-pc:label-hop/te-pc:te-label /te-pc:technology: +--:(otn) +--ro otn +--ro tpn? otn-tpn +--ro tsg? identityref +--ro ts-list? string
<CODE BEGINS> file "ietf-otn-path-computation@2022-07-10.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 "te-pc"; 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: <https://datatracker.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) 2022 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Revised BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; revision "2022-09-12" { description "Initial version."; reference "RFC XXXX: A YANG Data Model for requesting Path Computation in an Optical Transport Network (OTN)"; // 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/" + "te-pc:path-request/te-pc:te-bandwidth/te-pc: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/" + "te-pc:tunnel-attributes/te-pc:te-bandwidth/" + "te-pc: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/te-pc:response/" + "te-pc:computed-paths-properties/" + "te-pc:computed-path-properties/te-pc:path-properties/" + "te-pc:te-bandwidth/te-pc: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/" + "te-pc:path-request/te-pc:path-in-segment/" + "te-pc:label-restrictions/te-pc: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/" + "te-pc:path-request/te-pc:path-out-segment/" + "te-pc:label-restrictions/te-pc: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/" + "te-pc:path-request/te-pc:optimizations/te-pc:algorithm/" + "te-pc:metric/te-pc:optimization-metric/" + "te-pc:explicit-route-exclude-objects/" + "te-pc:route-object-exclude-object/te-pc:type/te-pc:label/" + "te-pc:label-hop/te-pc:te-label/te-pc: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/" + "te-pc:path-request/te-pc:optimizations/te-pc:algorithm/" + "te-pc:metric/te-pc:optimization-metric/" + "te-pc:explicit-route-include-objects/" + "te-pc:route-object-include-object/te-pc:type/te-pc:label/" + "te-pc:label-hop/te-pc:te-label/te-pc: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/" + "te-pc:path-request/te-pc:explicit-route-objects-always/" + "te-pc:route-object-exclude-always/te-pc:type/te-pc:label/" + "te-pc:label-hop/te-pc:te-label/te-pc: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/" + "te-pc:path-request/te-pc:explicit-route-objects-always/" + "te-pc:route-object-include-exclude/te-pc:type/" + "te-pc:label/te-pc:label-hop/te-pc:te-label/" + "te-pc: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/" + "te-pc:path-request/te-pc:path-in-segment/" + "te-pc:label-restrictions/te-pc:label-restriction/" + "te-pc:label-start/te-pc:te-label/te-pc: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/" + "te-pc:path-request/te-pc:path-in-segment/" + "te-pc:label-restrictions/te-pc:label-restriction/" + "te-pc:label-end/te-pc:te-label/te-pc: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/" + "te-pc:path-request/te-pc:path-in-segment/" + "te-pc:label-restrictions/te-pc:label-restriction/" + "te-pc:label-step/te-pc: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/" + "te-pc:path-request/te-pc:path-out-segment/" + "te-pc:label-restrictions/te-pc:label-restriction/" + "te-pc:label-start/te-pc:te-label/te-pc: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/" + "te-pc:path-request/te-pc:path-out-segment/" + "te-pc:label-restrictions/te-pc:label-restriction/" + "te-pc:label-end/te-pc:te-label/te-pc: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/" + "te-pc:path-request/te-pc:path-out-segment/" + "te-pc:label-restrictions/te-pc:label-restriction/" + "te-pc:label-step/te-pc: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/" + "te-pc:synchronization/te-pc:exclude-objects/" + "te-pc:excludes/te-pc:type/te-pc:label/te-pc:label-hop/" + "te-pc:te-label/te-pc: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/te-pc:response/" + "te-pc:computed-paths-properties/" + "te-pc:computed-path-properties/te-pc:path-properties/" + "te-pc:path-route-objects/te-pc:path-route-object/" + "te-pc:type/te-pc:label/" + "te-pc:label-hop/te-pc:te-label/te-pc:technology" { description "Augment TE label hop for the route object of the computed path."; case otn { uses l1-types:otn-label-hop; } } } <CODE ENDS>
This document provides a method for requesting path computations for OTN tunnels. Consideration of mechanisms to gather and collate information required for the path computations will be necessary. Furthermore, storing path computation requests and responses and triggering actions will also need to be carefully managed and secured.¶
Future versions of this document will contain additional information.¶
The YANG module defined in this document will be accessed via the NETCONF protocol [RFC6241] or RESTCONF protocol [RFC8040]. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS and the mandatory-to-implement secure transport is TLS [RFC8446].¶
The Network Configuration Access Control Model (NACM) [RFC8341] provides the means to restrict access to particular NETCONF or RESTCONF users to a pre-configured subset of all available NETCONF or RESTCONF protocol operations and content.¶
Some of the RPC operations defined in this YANG module may be considered sensitive or vulnerable in some network environments. It is thus essential to control access to these operations.¶
Operations defined in this document, and their sensitivities and possible vulnerabilities, will be discussed further in future versions of this document.¶
This document registers the following URIs in the "ns" subregistry within the "IETF XML registry" [RFC3688].¶
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.¶
This document registers the following YANG module in the "YANG Module Names" registry [RFC7950].¶
name: ietf-otn-path-computation namespace: urn:ietf:params:xml:ns:yang:ietf-otn-path-computation prefix: otn-pc reference: this document¶
The initial YANG data model requesting path computation in optical networks was draft-gbb-ccamp-optical-path-computation-yang-00. This document included path computation request capabilities for WSON, Flexi-Grid and OTN technologies. However, it was proposed at IETF 113 (March 25, 2022) to split the initial document into separate documents for WDM (WSON and Flexi-Grid) and OTN technologies, as each technology may be developed and implemented separately.¶
The WDM technology capabilities were kept in [I-D.draft-gbb-ccamp-optical-path-computation-yang], and the OTN capabilities were moved into this document.¶
Editors note, please remove this appendix before publication.¶
The authors of this document would like to thank the authors of [I-D.ietf-teas-actn-poi-applicability] for having identified the gap and requirements to trigger this work.¶
This document was prepared using kramdown.¶