idnits 2.17.1 draft-gbb-ccamp-optical-path-computation-yang-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 710 has weird spacing: '...ad-rate uin...' == Line 730 has weird spacing: '...ad-rate uin...' == Line 751 has weird spacing: '...ad-rate uin...' -- The document date (7 March 2022) is 780 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'RFCYYYY' is mentioned on line 149, but not defined == Missing Reference: 'RFCZZZZ' is mentioned on line 153, but not defined == Missing Reference: 'RFCKKKK' is mentioned on line 155, but not defined == Missing Reference: 'RFCJJJJ' is mentioned on line 157, but not defined == Unused Reference: 'I-D.ietf-ccamp-flexigrid-tunnel-yang' is defined on line 2135, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-teas-actn-poi-applicability' is defined on line 2125, but no explicit reference was found in the text == Outdated reference: A later version (-18) exists of draft-ietf-ccamp-layer1-types-11 == Outdated reference: A later version (-22) exists of draft-ietf-teas-yang-path-computation-17 == Outdated reference: A later version (-36) exists of draft-ietf-teas-yang-te-29 == Outdated reference: A later version (-09) exists of draft-ietf-ccamp-wson-tunnel-model-06 Summary: 0 errors (**), 0 flaws (~~), 14 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 CCAMP Working Group I. Busi 3 Internet-Draft Huawei Technologies 4 Intended status: Standards Track A. Guo 5 Expires: 8 September 2022 Futurewei Technologies 6 S. Belotti 7 Nokia 8 7 March 2022 10 YANG Data Models for requesting Path Computation in Optical Networks 11 draft-gbb-ccamp-optical-path-computation-yang-01 13 Abstract 15 This document describes YANG data models for Remote Procedure Calls 16 (RPCs) to request Path Computation in Optical Networks (OTN, WSON and 17 Flexi-grid). 19 The YANG data models defined in this document conforms to the Network 20 Management Datastore Architecture (NMDA). 22 Status of This Memo 24 This Internet-Draft is submitted in full conformance with the 25 provisions of BCP 78 and BCP 79. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF). Note that other groups may also distribute 29 working documents as Internet-Drafts. The list of current Internet- 30 Drafts is at https://datatracker.ietf.org/drafts/current/. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 This Internet-Draft will expire on 8 September 2022. 39 Copyright Notice 41 Copyright (c) 2022 IETF Trust and the persons identified as the 42 document authors. All rights reserved. 44 This document is subject to BCP 78 and the IETF Trust's Legal 45 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 46 license-info) in effect on the date of publication of this document. 47 Please review these documents carefully, as they describe your rights 48 and restrictions with respect to this document. Code Components 49 extracted from this document must include Revised BSD License text as 50 described in Section 4.e of the Trust Legal Provisions and are 51 provided without warranty as described in the Revised BSD License. 53 Table of Contents 55 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 56 1.1. Terminology and Notations . . . . . . . . . . . . . . . . 3 57 1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 58 1.3. Prefix in Data Node Names . . . . . . . . . . . . . . . . 3 59 2. YANG Data Models for Optical Path Computation . . . . . . . . 4 60 2.1. YANG Models Overview . . . . . . . . . . . . . . . . . . 4 61 2.2. Attributes Augmentation . . . . . . . . . . . . . . . . . 5 62 2.3. Bandwidth Augmentation . . . . . . . . . . . . . . . . . 6 63 2.4. Label Augmentations . . . . . . . . . . . . . . . . . . . 6 64 3. Optical Path Computation Tree Diagrams . . . . . . . . . . . 6 65 3.1. WSON Path Computation Tree Diagrams . . . . . . . . . . . 6 66 3.2. Flexi-grid Path Computation Tree Diagrams . . . . . . . . 11 67 3.3. OTN Path Computation Tree Diagrams . . . . . . . . . . . 15 68 4. YANG Models for Optical Path Computation . . . . . . . . . . 19 69 4.1. YANG Model for WSON Path Computation . . . . . . . . . . 19 70 4.2. YANG Model for Flexi-grid Path Computation . . . . . . . 27 71 4.3. YANG Model for OTN Path Computation . . . . . . . . . . . 35 72 5. Manageability Considerations . . . . . . . . . . . . . . . . 41 73 6. Security Considerations . . . . . . . . . . . . . . . . . . . 42 74 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 42 75 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 42 76 8.1. Normative References . . . . . . . . . . . . . . . . . . 42 77 8.2. Informative References . . . . . . . . . . . . . . . . . 44 78 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 45 79 Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 45 80 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 45 82 1. Introduction 84 [I-D.ietf-teas-yang-path-computation] describes key use cases, where 85 a client needs to request underlying SDN controllers for path 86 computation. In some of these use cases, the underlying SDN 87 controller can control a single-layer optical technologies, including 88 Optical Transport Network (OTN), Wavelength Switched Optical Networks 89 (WSON), Flexi-grid, and multi-layer Optical network. 91 This document defines YANG data models, which augment the generic 92 Path Computation RPC defined in 93 [I-D.ietf-teas-yang-path-computation], with technology-specific 94 augmentations required to request path computation to an underlying 95 Optical SDN controller. These models allow a client to delegate path 96 computation tasks to the underlying Optical SDN controller without 97 having to obtain optical-layer information from the controller and 98 performing feasible path computation itself. This is especially 99 helpful in cases where computing optically-feasible paths require 100 knowledge of physical-layer states, such as optical impairments, 101 which are visible only to the Optical controller. 103 The YANG data model defined in this document conforms to the Network 104 Management Datastore Architecture [RFC8342]. 106 1.1. Terminology and Notations 108 Refer to [RFC7446] and [RFC7581] for the key terms used in this 109 document. The following terms are defined in [RFC7950] and are not 110 redefined here: 112 * client 114 * server 116 * augment 118 * data model 120 * data node 122 The following terms are defined in [RFC6241] and are not redefined 123 here: 125 * configuration data 127 * state data 129 The terminology for describing YANG data models is found in 130 [RFC7950]. 132 1.2. Tree Diagram 134 A simplified graphical representation of the data model is used in 135 Section 3 of this document. The meaning of the symbols in these 136 diagrams is defined in [RFC8340]. 138 1.3. Prefix in Data Node Names 140 In this document, names of data nodes and other data model objects 141 are prefixed using the standard prefix associated with the 142 corresponding YANG imported modules, as shown in Table 1. 144 +==============+==================================+===========+ 145 | Prefix | YANG module | Reference | 146 +==============+==================================+===========+ 147 | l0-types | ietf-layer0-types | [RFC9093] | 148 +--------------+----------------------------------+-----------+ 149 | l0-types-ext | ietf-layer0-types-ext | [RFCYYYY] | 150 +--------------+----------------------------------+-----------+ 151 | l0-types | ietf-layer0-types | [RFC8776] | 152 +--------------+----------------------------------+-----------+ 153 | l1-types | ietf-layer1-types | [RFCZZZZ] | 154 +--------------+----------------------------------+-----------+ 155 | te | ietf-te | [RFCKKKK] | 156 +--------------+----------------------------------+-----------+ 157 | tep | ietf-te-path-computation | [RFCJJJJ] | 158 +--------------+----------------------------------+-----------+ 159 | flexg-pc | ietf-flexi-grid-path-computation | RFCXXXX | 160 +--------------+----------------------------------+-----------+ 161 | wson-pc | ietf-wson-path-computation | RFCXXXX | 162 +--------------+----------------------------------+-----------+ 163 | otn-pc | ietf-otn-path-computation | RFCXXXX | 164 +--------------+----------------------------------+-----------+ 166 Table 1: Prefixes and corresponding YANG modules 168 RFC Editor Note: Please replace XXXX with the RFC number assigned to 169 this document. Please replace YYYY with the RFC number assigned to 170 [I-D.ietf-ccamp-layer0-types-ext]. Please replace ZZZZ with the RFC 171 number assigned to [I-D.ietf-ccamp-layer1-types]. Please replace 172 KKKK with the RFC number assigned to [I-D.ietf-teas-yang-te]. Please 173 replace JJJJ with the RFC number assigned to 174 [I-D.ietf-teas-yang-path-computation]. Please remove this note. 176 2. YANG Data Models for Optical Path Computation 178 2.1. YANG Models Overview 180 The YANG data models for requesting WSON, Flexi-grid and OTN path 181 computation are defined as augmentations of the generic Path 182 Computation RPC defined in [I-D.ietf-teas-yang-path-computation], as 183 shown in Figure 1. 185 +--------------------------+ o: augment 186 TE generic | ietf-te-path-computation | 187 +--------------------------+ 188 o o o 189 | | | 190 | | | 191 +-----------+ | +-----------+ 192 | | | 193 | | | 194 | | | 195 | +---------------------------+ | 196 | | ietf-otn-path-computation | | 197 | +---------------------------+ | 198 | OTN | 199 | | 200 | | 201 +----------------------------+ | 202 | ietf-wson-path-computation | | 203 +----------------------------+ | 204 WSON | 205 +----------------------------------+ 206 | ietf-flexi-grid-path-computation | 207 +----------------------------------+ 208 Flexi-grid 210 Figure 1: Relationship between WSON, Flexi-grid, OTN and TE path 211 computation models 213 The entities and Traffic Engineering (TE) attributes, such as 214 requested path and tunnel attributes, defined in 215 [I-D.ietf-teas-yang-path-computation], are still applicable when 216 requesting WSON, Flexi-grid and OTN path computation and the models 217 defined in this document only specifies the additional technology- 218 specific attributes/information, using the attributes defined in 219 [RFC9093], [I-D.ietf-ccamp-layer0-types-ext] and 220 [I-D.ietf-ccamp-layer1-types]. 222 The YANG modules ietf-wson-path-computation, ietf-flexi-grid-path- 223 computation and ietf-otn-path-computation defined in this document 224 conforms to the Network Management Datastore Architecture (NMDA) 225 defined in [RFC8342]. 227 2.2. Attributes Augmentation 229 The common characteristics for layer 0 (WSON and Flexi-grid) tunnels 230 are under definition in [I-D.ietf-ccamp-layer0-types-ext] and re-used 231 in the ietf-wson-path-computation and ietf-flexi-grid-path- 232 computation YANG models 234 2.3. Bandwidth Augmentation 236 As described in Section 4.2 of [RFC7699], there is some overlap 237 between bandwidth and label in layer0. 239 The WSON and flexi-grid label resource information described in 240 Section 2.4, is sufficient to describe also the spectrum resources 241 within WSON and flexi-grid networks. Therefore, the model does not 242 define any augmentation for the te-bandwidth containers defined in 243 [I-D.ietf-teas-yang-path-computation]. 245 The OTN path computation model augments all the occurrences of the 246 te-bandwidth container with the OTN technology-specific attributes 247 using the otn-link-bandwidth and otn-path-bandwidth groupings defined 248 in [I-D.ietf-ccamp-layer1-types]. 250 2.4. Label Augmentations 252 The models augment all the occurrences of the label-restriction list 253 with WSON, Flexi-grid and OTN technology-specific attributes using 254 the l0-label-range-info and flexi-grid-label-range-info groupings 255 defined in [RFC9093] and the otn-label-range-info grouping defined in 256 [I-D.ietf-ccamp-layer1-types]. 258 Moreover, the models augment all the occurrences of the te-label 259 container with the WSON, Flexi-grid and OTN technology-specific 260 attributes using the wson-label-start-end, wson-label-hop, wson- 261 label-step, flexi-grid-label-start-end, flexi-grid-label-hop and 262 flexi-grid-label-step defined in [RFC9093] and the otn-label-start- 263 end, otn-label-hop and otn-label-step groupings defined in 264 [I-D.ietf-ccamp-layer1-types]. 266 3. Optical Path Computation Tree Diagrams 268 3.1. WSON Path Computation Tree Diagrams 270 Figure 2 below shows the tree diagram of the YANG data model defined 271 in module ietf-wson-path-computation.yang. 273 module: ietf-wson-path-computation 275 augment /te:tunnels-path-compute/te:input/te:path-compute-info 276 /tepc:path-request: 277 +-- fec-type? identityref 278 +-- termination-type? identityref 279 +-- bit-stuffing? boolean 280 +-- wavelength-assignment? identityref 281 +-- gsnr-margin? snr 283 augment /te:tunnels-path-compute/te:output/te:path-compute-result 284 /tepc:response/tepc:computed-paths-properties 285 /tepc:computed-path-properties/tepc:path-properties: 286 +--ro estimated-gsnr? snr 287 augment /te:tunnels-path-compute/te:input/te:path-compute-info 288 /tepc:path-request/tepc:optimizations/tepc:algorithm 289 /tepc:metric/tepc:optimization-metric 290 /tepc:explicit-route-exclude-objects 291 /tepc:route-object-exclude-object/tepc:type: 292 +--:(oms-element) 293 +-- oms-element-uid? string 294 augment /te:tunnels-path-compute/te:input/te:path-compute-info 295 /tepc:path-request/tepc:optimizations/tepc:algorithm 296 /tepc:metric/tepc:optimization-metric 297 /tepc:explicit-route-include-objects 298 /tepc:route-object-include-object/tepc:type: 299 +--:(oms-element) 300 +-- oms-element-uid? string 301 augment /te:tunnels-path-compute/te:input/te:path-compute-info 302 /tepc:path-request/tepc:explicit-route-objects-always 303 /tepc:route-object-exclude-always/tepc:type: 304 +--:(oms-element) 305 +-- oms-element-uid? string 306 augment /te:tunnels-path-compute/te:input/te:path-compute-info 307 /tepc:path-request/tepc:explicit-route-objects-always 308 /tepc:route-object-include-exclude/tepc:type: 309 +--:(oms-element) 310 +-- oms-element-uid? string 311 augment /te:tunnels-path-compute/te:input/te:path-compute-info 312 /tepc:synchronization/tepc:exclude-objects/tepc:excludes 313 /tepc:type: 314 +--:(oms-element) 315 +-- oms-element-uid? string 316 augment /te:tunnels-path-compute/te:output/te:path-compute-result 317 /tepc:response/tepc:computed-paths-properties 318 /tepc:computed-path-properties/tepc:path-properties 319 /tepc:path-route-objects/tepc:path-route-object 320 /tepc:type: 321 +--:(oms-element) 322 +--ro oms-element-uid? string 323 augment /te:tunnels-path-compute/te:input/te:path-compute-info 324 /tepc:path-request/tepc:path-in-segment 325 /tepc:label-restrictions/tepc:label-restriction: 326 +-- grid-type? identityref 327 +-- priority? uint8 328 augment /te:tunnels-path-compute/te:input/te:path-compute-info 329 /tepc:path-request/tepc:path-out-segment 330 /tepc:label-restrictions/tepc:label-restriction: 332 +-- grid-type? identityref 333 +-- priority? uint8 334 augment /te:tunnels-path-compute/te:input/te:path-compute-info 335 /tepc:path-request/tepc:optimizations/tepc:algorithm 336 /tepc:metric/tepc:optimization-metric 337 /tepc:explicit-route-exclude-objects 338 /tepc:route-object-exclude-object/tepc:type/tepc:label 339 /tepc:label-hop/tepc:te-label/tepc:technology: 340 +--:(wson) 341 +-- (grid-type)? 342 +--:(dwdm) 343 | +-- (single-or-super-channel)? 344 | +--:(single) 345 | | +-- dwdm-n? l0-types:dwdm-n 346 | +--:(super) 347 | +-- subcarrier-dwdm-n* l0-types:dwdm-n 348 +--:(cwdm) 349 +-- cwdm-n? l0-types:cwdm-n 350 augment /te:tunnels-path-compute/te:input/te:path-compute-info 351 /tepc:path-request/tepc:optimizations/tepc:algorithm 352 /tepc:metric/tepc:optimization-metric 353 /tepc:explicit-route-include-objects 354 /tepc:route-object-include-object/tepc:type/tepc:label 355 /tepc:label-hop/tepc:te-label/tepc:technology: 356 +--:(wson) 357 +-- (grid-type)? 358 +--:(dwdm) 359 | +-- (single-or-super-channel)? 360 | +--:(single) 361 | | +-- dwdm-n? l0-types:dwdm-n 362 | +--:(super) 363 | +-- subcarrier-dwdm-n* l0-types:dwdm-n 364 +--:(cwdm) 365 +-- cwdm-n? l0-types:cwdm-n 366 augment /te:tunnels-path-compute/te:input/te:path-compute-info 367 /tepc:path-request/tepc:explicit-route-objects-always 368 /tepc:route-object-exclude-always/tepc:type/tepc:label 369 /tepc:label-hop/tepc:te-label/tepc:technology: 370 +--:(wson) 371 +-- (grid-type)? 372 +--:(dwdm) 373 | +-- (single-or-super-channel)? 374 | +--:(single) 375 | | +-- dwdm-n? l0-types:dwdm-n 376 | +--:(super) 377 | +-- subcarrier-dwdm-n* l0-types:dwdm-n 378 +--:(cwdm) 379 +-- cwdm-n? l0-types:cwdm-n 381 augment /te:tunnels-path-compute/te:input/te:path-compute-info 382 /tepc:path-request/tepc:explicit-route-objects-always 383 /tepc:route-object-include-exclude/tepc:type/tepc:label 384 /tepc:label-hop/tepc:te-label/tepc:technology: 385 +--:(wson) 386 +-- (grid-type)? 387 +--:(dwdm) 388 | +-- (single-or-super-channel)? 389 | +--:(single) 390 | | +-- dwdm-n? l0-types:dwdm-n 391 | +--:(super) 392 | +-- subcarrier-dwdm-n* l0-types:dwdm-n 393 +--:(cwdm) 394 +-- cwdm-n? l0-types:cwdm-n 395 augment /te:tunnels-path-compute/te:input/te:path-compute-info 396 /tepc:path-request/tepc:path-in-segment 397 /tepc:label-restrictions/tepc:label-restriction 398 /tepc:label-start/tepc:te-label/tepc:technology: 399 +--:(wson) 400 +-- (grid-type)? 401 +--:(dwdm) 402 | +-- dwdm-n? l0-types:dwdm-n 403 +--:(cwdm) 404 +-- cwdm-n? l0-types:cwdm-n 405 augment /te:tunnels-path-compute/te:input/te:path-compute-info 406 /tepc:path-request/tepc:path-in-segment 407 /tepc:label-restrictions/tepc:label-restriction 408 /tepc:label-end/tepc:te-label/tepc:technology: 409 +--:(wson) 410 +-- (grid-type)? 411 +--:(dwdm) 412 | +-- dwdm-n? l0-types:dwdm-n 413 +--:(cwdm) 414 +-- cwdm-n? l0-types:cwdm-n 415 augment /te:tunnels-path-compute/te:input/te:path-compute-info 416 /tepc:path-request/tepc:path-in-segment 417 /tepc:label-restrictions/tepc:label-restriction 418 /tepc:label-step/tepc:technology: 419 +--:(wson) 420 +-- (l0-grid-type)? 421 +--:(dwdm) 422 | +-- wson-dwdm-channel-spacing? identityref 423 +--:(cwdm) 424 +-- wson-cwdm-channel-spacing? identityref 425 augment /te:tunnels-path-compute/te:input/te:path-compute-info 426 /tepc:path-request/tepc:path-out-segment 427 /tepc:label-restrictions/tepc:label-restriction 428 /tepc:label-start/tepc:te-label/tepc:technology: 430 +--:(wson) 431 +-- (grid-type)? 432 +--:(dwdm) 433 | +-- dwdm-n? l0-types:dwdm-n 434 +--:(cwdm) 435 +-- cwdm-n? l0-types:cwdm-n 436 augment /te:tunnels-path-compute/te:input/te:path-compute-info 437 /tepc:path-request/tepc:path-out-segment 438 /tepc:label-restrictions/tepc:label-restriction 439 /tepc:label-end/tepc:te-label/tepc:technology: 440 +--:(wson) 441 +-- (grid-type)? 442 +--:(dwdm) 443 | +-- dwdm-n? l0-types:dwdm-n 444 +--:(cwdm) 445 +-- cwdm-n? l0-types:cwdm-n 446 augment /te:tunnels-path-compute/te:input/te:path-compute-info 447 /tepc:path-request/tepc:path-out-segment 448 /tepc:label-restrictions/tepc:label-restriction 449 /tepc:label-step/tepc:technology: 450 +--:(wson) 451 +-- (l0-grid-type)? 452 +--:(dwdm) 453 | +-- wson-dwdm-channel-spacing? identityref 454 +--:(cwdm) 455 +-- wson-cwdm-channel-spacing? identityref 456 augment /te:tunnels-path-compute/te:input/te:path-compute-info 457 /tepc:synchronization/tepc:exclude-objects/tepc:excludes 458 /tepc:type/tepc:label/tepc:label-hop/tepc:te-label 459 /tepc:technology: 460 +--:(wson) 461 +-- (grid-type)? 462 +--:(dwdm) 463 | +-- (single-or-super-channel)? 464 | +--:(single) 465 | | +-- dwdm-n? l0-types:dwdm-n 466 | +--:(super) 467 | +-- subcarrier-dwdm-n* l0-types:dwdm-n 468 +--:(cwdm) 469 +-- cwdm-n? l0-types:cwdm-n 470 augment /te:tunnels-path-compute/te:output/te:path-compute-result 471 /tepc:response/tepc:computed-paths-properties 472 /tepc:computed-path-properties/tepc:path-properties 473 /tepc:path-route-objects/tepc:path-route-object/tepc:type 474 /tepc:label/tepc:label-hop/tepc:te-label/tepc:technology: 475 +--:(wson) 476 +--ro (grid-type)? 477 +--:(dwdm) 478 | +--ro (single-or-super-channel)? 479 | +--:(single) 480 | | +--ro dwdm-n? l0-types:dwdm-n 481 | +--:(super) 482 | +--ro subcarrier-dwdm-n* l0-types:dwdm-n 483 +--:(cwdm) 484 +--ro cwdm-n? l0-types:cwdm-n 486 Figure 2: WSON path computation tree diagram 488 3.2. Flexi-grid Path Computation Tree Diagrams 490 Figure 3 below shows the tree diagram of the YANG data model defined 491 in module ietf-flexi-grid-path-computation.yang. 493 module: ietf-flexi-grid-path-computation 495 augment /te:tunnels-path-compute/te:input/te:path-compute-info 496 /tepc:path-request: 497 +-- fec-type? identityref 498 +-- termination-type? identityref 499 +-- bit-stuffing? boolean 500 +-- wavelength-assignment? identityref 501 +-- gsnr-margin? snr 502 augment /te:tunnels-path-compute/te:output/te:path-compute-result 503 /tepc:response/tepc:computed-paths-properties 504 /tepc:computed-path-properties/tepc:path-properties: 505 +--ro estimated-gsnr? snr 506 augment /te:tunnels-path-compute/te:input/te:path-compute-info 507 /tepc:path-request/tepc:optimizations/tepc:algorithm 508 /tepc:metric/tepc:optimization-metric 509 /tepc:explicit-route-exclude-objects 510 /tepc:route-object-exclude-object/tepc:type: 511 +--:(oms-element) 512 +-- oms-element-uid? string 513 augment /te:tunnels-path-compute/te:input/te:path-compute-info 514 /tepc:path-request/tepc:optimizations/tepc:algorithm 515 /tepc:metric/tepc:optimization-metric 516 /tepc:explicit-route-include-objects 517 /tepc:route-object-include-object/tepc:type: 518 +--:(oms-element) 519 +-- oms-element-uid? string 520 augment /te:tunnels-path-compute/te:input/te:path-compute-info 521 /tepc:path-request/tepc:explicit-route-objects-always 522 /tepc:route-object-exclude-always/tepc:type: 523 +--:(oms-element) 524 +-- oms-element-uid? string 525 augment /te:tunnels-path-compute/te:input/te:path-compute-info 526 /tepc:path-request/tepc:explicit-route-objects-always 527 /tepc:route-object-include-exclude/tepc:type: 528 +--:(oms-element) 529 +-- oms-element-uid? string 530 augment /te:tunnels-path-compute/te:input/te:path-compute-info 531 /tepc:synchronization/tepc:exclude-objects/tepc:excludes 532 /tepc:type: 533 +--:(oms-element) 534 +-- oms-element-uid? string 535 augment /te:tunnels-path-compute/te:output/te:path-compute-result 536 /tepc:response/tepc:computed-paths-properties 537 /tepc:computed-path-properties/tepc:path-properties 538 /tepc:path-route-objects/tepc:path-route-object 539 /tepc:type: 540 +--:(oms-element) 541 +--ro oms-element-uid? string 542 augment /te:tunnels-path-compute/te:input/te:path-compute-info 543 /tepc:path-request/tepc:path-in-segment 544 /tepc:label-restrictions/tepc:label-restriction: 545 +-- grid-type? identityref 546 +-- priority? uint8 547 +-- flexi-grid 548 +-- slot-width-granularity? identityref 549 +-- min-slot-width-factor? uint16 550 +-- max-slot-width-factor? uint16 551 augment /te:tunnels-path-compute/te:input/te:path-compute-info 552 /tepc:path-request/tepc:path-out-segment 553 /tepc:label-restrictions/tepc:label-restriction: 554 +-- grid-type? identityref 555 +-- priority? uint8 556 +-- flexi-grid 557 +-- slot-width-granularity? identityref 558 +-- min-slot-width-factor? uint16 559 +-- max-slot-width-factor? uint16 560 augment /te:tunnels-path-compute/te:input/te:path-compute-info 561 /tepc:path-request/tepc:optimizations/tepc:algorithm 562 /tepc:metric/tepc:optimization-metric 563 /tepc:explicit-route-exclude-objects 564 /tepc:route-object-exclude-object/tepc:type/tepc:label 565 /tepc:label-hop/tepc:te-label/tepc:technology: 566 +--:(flexi-grid) 567 +-- (single-or-super-channel)? 568 +--:(single) 569 | +-- flexi-n? l0-types:flexi-n 570 | +-- flexi-m? l0-types:flexi-m 571 +--:(super) 572 +-- subcarrier-flexi-n* [flexi-n] 573 +-- flexi-n l0-types:flexi-n 574 +-- flexi-m? l0-types:flexi-m 575 augment /te:tunnels-path-compute/te:input/te:path-compute-info 576 /tepc:path-request/tepc:optimizations/tepc:algorithm 577 /tepc:metric/tepc:optimization-metric 578 /tepc:explicit-route-include-objects 579 /tepc:route-object-include-object/tepc:type/tepc:label 580 /tepc:label-hop/tepc:te-label/tepc:technology: 581 +--:(flexi-grid) 582 +-- (single-or-super-channel)? 583 +--:(single) 584 | +-- flexi-n? l0-types:flexi-n 585 | +-- flexi-m? l0-types:flexi-m 586 +--:(super) 587 +-- subcarrier-flexi-n* [flexi-n] 588 +-- flexi-n l0-types:flexi-n 589 +-- flexi-m? l0-types:flexi-m 590 augment /te:tunnels-path-compute/te:input/te:path-compute-info 591 /tepc:path-request/tepc:explicit-route-objects-always 592 /tepc:route-object-exclude-always/tepc:type/tepc:label 593 /tepc:label-hop/tepc:te-label/tepc:technology: 594 +--:(flexi-grid) 595 +-- (single-or-super-channel)? 596 +--:(single) 597 | +-- flexi-n? l0-types:flexi-n 598 | +-- flexi-m? l0-types:flexi-m 599 +--:(super) 600 +-- subcarrier-flexi-n* [flexi-n] 601 +-- flexi-n l0-types:flexi-n 602 +-- flexi-m? l0-types:flexi-m 603 augment /te:tunnels-path-compute/te:input/te:path-compute-info 604 /tepc:path-request/tepc:explicit-route-objects-always 605 /tepc:route-object-include-exclude/tepc:type/tepc:label 606 /tepc:label-hop/tepc:te-label/tepc:technology: 607 +--:(flexi-grid) 608 +-- (single-or-super-channel)? 609 +--:(single) 610 | +-- flexi-n? l0-types:flexi-n 611 | +-- flexi-m? l0-types:flexi-m 612 +--:(super) 613 +-- subcarrier-flexi-n* [flexi-n] 614 +-- flexi-n l0-types:flexi-n 615 +-- flexi-m? l0-types:flexi-m 616 augment /te:tunnels-path-compute/te:input/te:path-compute-info 617 /tepc:path-request/tepc:path-in-segment 618 /tepc:label-restrictions/tepc:label-restriction 619 /tepc:label-start/tepc:te-label/tepc:technology: 620 +--:(flexi-grid) 621 +-- flexi-n? l0-types:flexi-n 623 augment /te:tunnels-path-compute/te:input/te:path-compute-info 624 /tepc:path-request/tepc:path-in-segment 625 /tepc:label-restrictions/tepc:label-restriction 626 /tepc:label-end/tepc:te-label/tepc:technology: 627 +--:(flexi-grid) 628 +-- flexi-n? l0-types:flexi-n 629 augment /te:tunnels-path-compute/te:input/te:path-compute-info 630 /tepc:path-request/tepc:path-in-segment 631 /tepc:label-restrictions/tepc:label-restriction 632 /tepc:label-step/tepc:technology: 633 +--:(flexi-grid) 634 +-- flexi-grid-channel-spacing? identityref 635 +-- flexi-n-step? uint8 636 augment /te:tunnels-path-compute/te:input/te:path-compute-info 637 /tepc:path-request/tepc:path-out-segment 638 /tepc:label-restrictions/tepc:label-restriction 639 /tepc:label-start/tepc:te-label/tepc:technology: 640 +--:(flexi-grid) 641 +-- flexi-n? l0-types:flexi-n 642 augment /te:tunnels-path-compute/te:input/te:path-compute-info 643 /tepc:path-request/tepc:path-out-segment 644 /tepc:label-restrictions/tepc:label-restriction 645 /tepc:label-end/tepc:te-label/tepc:technology: 646 +--:(flexi-grid) 647 +-- flexi-n? l0-types:flexi-n 648 augment /te:tunnels-path-compute/te:input/te:path-compute-info 649 /tepc:path-request/tepc:path-out-segment 650 /tepc:label-restrictions/tepc:label-restriction 651 /tepc:label-step/tepc:technology: 652 +--:(flexi-grid) 653 +-- flexi-grid-channel-spacing? identityref 654 +-- flexi-n-step? uint8 655 augment /te:tunnels-path-compute/te:input/te:path-compute-info 656 /tepc:synchronization/tepc:exclude-objects/tepc:excludes 657 /tepc:type/tepc:label/tepc:label-hop/tepc:te-label 658 /tepc:technology: 659 +--:(flexi-grid) 660 +-- (single-or-super-channel)? 661 +--:(single) 662 | +-- flexi-n? l0-types:flexi-n 663 | +-- flexi-m? l0-types:flexi-m 664 +--:(super) 665 +-- subcarrier-flexi-n* [flexi-n] 666 +-- flexi-n l0-types:flexi-n 667 +-- flexi-m? l0-types:flexi-m 668 augment /te:tunnels-path-compute/te:output/te:path-compute-result 669 /tepc:response/tepc:computed-paths-properties 670 /tepc:computed-path-properties/tepc:path-properties 671 /tepc:path-route-objects/tepc:path-route-object/tepc:type 672 /tepc:label/tepc:label-hop/tepc:te-label/tepc:technology: 673 +--:(flexi-grid) 674 +--ro (single-or-super-channel)? 675 +--:(single) 676 | +--ro flexi-n? l0-types:flexi-n 677 | +--ro flexi-m? l0-types:flexi-m 678 +--:(super) 679 +--ro subcarrier-flexi-n* [flexi-n] 680 +--ro flexi-n l0-types:flexi-n 681 +--ro flexi-m? l0-types:flexi-m 683 Figure 3: Flexi-grid path computation tree diagram 685 3.3. OTN Path Computation Tree Diagrams 687 Figure 4 below shows the tree diagram of the YANG data model defined 688 in module ietf-otn-path-computation.yang. 690 module: ietf-otn-path-computation 692 augment /te:tunnels-path-compute/te:input/te:path-compute-info 693 /tepc:path-request/tepc:te-bandwidth/tepc:technology: 694 +--:(otn) 695 +-- otn 696 +-- odu-type? identityref 697 +-- (oduflex-type)? 698 +--:(generic) 699 | +-- nominal-bit-rate uint64 700 +--:(cbr) 701 | +-- client-type identityref 702 +--:(gfp-n-k) 703 | +-- gfp-n uint8 704 | +-- gfp-k? gfp-k 705 +--:(flexe-client) 706 | +-- flexe-client flexe-client-rate 707 +--:(flexe-aware) 708 | +-- flexe-aware-n uint16 709 +--:(packet) 710 +-- opuflex-payload-rate uint64 711 augment /te:tunnels-path-compute/te:input/te:path-compute-info 712 /tepc:tunnel-attributes/tepc:te-bandwidth 713 /tepc:technology: 714 +--:(otn) 715 +-- otn 716 +-- odu-type? identityref 717 +-- (oduflex-type)? 718 +--:(generic) 719 | +-- nominal-bit-rate uint64 720 +--:(cbr) 721 | +-- client-type identityref 722 +--:(gfp-n-k) 723 | +-- gfp-n uint8 724 | +-- gfp-k? gfp-k 725 +--:(flexe-client) 726 | +-- flexe-client flexe-client-rate 727 +--:(flexe-aware) 728 | +-- flexe-aware-n uint16 729 +--:(packet) 730 +-- opuflex-payload-rate uint64 731 augment /te:tunnels-path-compute/te:output/te:path-compute-result 732 /tepc:response/tepc:computed-paths-properties 733 /tepc:computed-path-properties/tepc:path-properties 734 /tepc:te-bandwidth/tepc:technology: 735 +--:(otn) 736 +--ro otn 737 +--ro odu-type? identityref 738 +--ro (oduflex-type)? 739 +--:(generic) 740 | +--ro nominal-bit-rate uint64 741 +--:(cbr) 742 | +--ro client-type identityref 743 +--:(gfp-n-k) 744 | +--ro gfp-n uint8 745 | +--ro gfp-k? gfp-k 746 +--:(flexe-client) 747 | +--ro flexe-client flexe-client-rate 748 +--:(flexe-aware) 749 | +--ro flexe-aware-n uint16 750 +--:(packet) 751 +--ro opuflex-payload-rate uint64 752 augment /te:tunnels-path-compute/te:input/te:path-compute-info 753 /tepc:path-request/tepc:path-in-segment 754 /tepc:label-restrictions/tepc:label-restriction: 755 +-- range-type? otn-label-range-type 756 +-- tsg? identityref 757 +-- odu-type-list* identityref 758 +-- priority? uint8 759 augment /te:tunnels-path-compute/te:input/te:path-compute-info 760 /tepc:path-request/tepc:path-out-segment 761 /tepc:label-restrictions/tepc:label-restriction: 762 +-- range-type? otn-label-range-type 763 +-- tsg? identityref 764 +-- odu-type-list* identityref 765 +-- priority? uint8 766 augment /te:tunnels-path-compute/te:input/te:path-compute-info 767 /tepc:path-request/tepc:optimizations/tepc:algorithm 768 /tepc:metric/tepc:optimization-metric 769 /tepc:explicit-route-exclude-objects 770 /tepc:route-object-exclude-object/tepc:type/tepc:label 771 /tepc:label-hop/tepc:te-label/tepc:technology: 772 +--:(otn) 773 +-- otn-tpn? otn-tpn 774 +-- tsg? identityref 775 +-- ts-list? string 776 augment /te:tunnels-path-compute/te:input/te:path-compute-info 777 /tepc:path-request/tepc:optimizations/tepc:algorithm 778 /tepc:metric/tepc:optimization-metric 779 /tepc:explicit-route-include-objects 780 /tepc:route-object-include-object/tepc:type/tepc:label 781 /tepc:label-hop/tepc:te-label/tepc:technology: 782 +--:(otn) 783 +-- otn-tpn? otn-tpn 784 +-- tsg? identityref 785 +-- ts-list? string 786 augment /te:tunnels-path-compute/te:input/te:path-compute-info 787 /tepc:path-request/tepc:explicit-route-objects-always 788 /tepc:route-object-exclude-always/tepc:type/tepc:label 789 /tepc:label-hop/tepc:te-label/tepc:technology: 790 +--:(otn) 791 +-- otn-tpn? otn-tpn 792 +-- tsg? identityref 793 +-- ts-list? string 794 augment /te:tunnels-path-compute/te:input/te:path-compute-info 795 /tepc:path-request/tepc:explicit-route-objects-always 796 /tepc:route-object-include-exclude/tepc:type/tepc:label 797 /tepc:label-hop/tepc:te-label/tepc:technology: 798 +--:(otn) 799 +-- otn-tpn? otn-tpn 800 +-- tsg? identityref 801 +-- ts-list? string 802 augment /te:tunnels-path-compute/te:input/te:path-compute-info 803 /tepc:path-request/tepc:path-in-segment 804 /tepc:label-restrictions/tepc:label-restriction 805 /tepc:label-start/tepc:te-label/tepc:technology: 806 +--:(otn) 807 +-- (range-type)? 808 +--:(trib-port) 809 | +-- otn-tpn? otn-tpn 810 +--:(trib-slot) 811 +-- otn-ts? otn-ts 812 augment /te:tunnels-path-compute/te:input/te:path-compute-info 813 /tepc:path-request/tepc:path-in-segment 814 /tepc:label-restrictions/tepc:label-restriction 815 /tepc:label-end/tepc:te-label/tepc:technology: 816 +--:(otn) 817 +-- (range-type)? 818 +--:(trib-port) 819 | +-- otn-tpn? otn-tpn 820 +--:(trib-slot) 821 +-- otn-ts? otn-ts 822 augment /te:tunnels-path-compute/te:input/te:path-compute-info 823 /tepc:path-request/tepc:path-in-segment 824 /tepc:label-restrictions/tepc:label-restriction 825 /tepc:label-step/tepc:technology: 826 +--:(otn) 827 +-- (range-type)? 828 +--:(trib-port) 829 | +-- otn-tpn? otn-tpn 830 +--:(trib-slot) 831 +-- otn-ts? otn-ts 832 augment /te:tunnels-path-compute/te:input/te:path-compute-info 833 /tepc:path-request/tepc:path-out-segment 834 /tepc:label-restrictions/tepc:label-restriction 835 /tepc:label-start/tepc:te-label/tepc:technology: 836 +--:(otn) 837 +-- (range-type)? 838 +--:(trib-port) 839 | +-- otn-tpn? otn-tpn 840 +--:(trib-slot) 841 +-- otn-ts? otn-ts 842 augment /te:tunnels-path-compute/te:input/te:path-compute-info 843 /tepc:path-request/tepc:path-out-segment 844 /tepc:label-restrictions/tepc:label-restriction 845 /tepc:label-end/tepc:te-label/tepc:technology: 846 +--:(otn) 847 +-- (range-type)? 848 +--:(trib-port) 849 | +-- otn-tpn? otn-tpn 850 +--:(trib-slot) 851 +-- otn-ts? otn-ts 852 augment /te:tunnels-path-compute/te:input/te:path-compute-info 853 /tepc:path-request/tepc:path-out-segment 854 /tepc:label-restrictions/tepc:label-restriction 855 /tepc:label-step/tepc:technology: 856 +--:(otn) 857 +-- (range-type)? 858 +--:(trib-port) 859 | +-- otn-tpn? otn-tpn 860 +--:(trib-slot) 861 +-- otn-ts? otn-ts 862 augment /te:tunnels-path-compute/te:input/te:path-compute-info 863 /tepc:synchronization/tepc:exclude-objects/tepc:excludes 864 /tepc:type/tepc:label/tepc:label-hop/tepc:te-label 865 /tepc:technology: 866 +--:(otn) 867 +-- otn-tpn? otn-tpn 868 +-- tsg? identityref 869 +-- ts-list? string 870 augment /te:tunnels-path-compute/te:output/te:path-compute-result 871 /tepc:response/tepc:computed-paths-properties 872 /tepc:computed-path-properties/tepc:path-properties 873 /tepc:path-route-objects/tepc:path-route-object/tepc:type 874 /tepc:label/tepc:label-hop/tepc:te-label/tepc:technology: 875 +--:(otn) 876 +--ro otn-tpn? otn-tpn 877 +--ro tsg? identityref 878 +--ro ts-list? string 880 Figure 4: OTN path computation tree diagram 882 4. YANG Models for Optical Path Computation 884 4.1. YANG Model for WSON Path Computation 886 file "ietf-wson-path-computation@2022-03-07.yang" 887 module ietf-wson-path-computation { 888 yang-version 1.1; 889 namespace "urn:ietf:params:xml:ns:yang:ietf-wson-path-computation"; 890 prefix "wson-pc"; 892 import ietf-te-path-computation { 893 prefix "tepc"; 894 revision-date "2021-09-06"; 895 reference 896 "I-D.ietf-teas-yang-path-computation-14: Yang model 897 for requesting Path Computation."; 898 } 900 import ietf-te { 901 prefix "te"; 902 revision-date "2021-02-20"; 903 reference 904 "I-D.ietf-teas-yang-te-19: A YANG Data Model for Traffic 905 Engineering Tunnels and Interfaces. "; 906 } 908 import ietf-layer0-types { 909 prefix "l0-types"; 910 } 911 organization 912 "IETF CCAMP Working Group"; 913 contact 914 "WG Web: 915 WG List: 917 Editor: Aihua Guo 918 920 Editor: Italo Busi 921 923 Editor: Sergio Belotti 924 "; 926 description 927 "This module defines a model for requesting 928 WSON Path Computation. 930 The model fully conforms to the Network Management 931 Datastore Architecture (NMDA). 933 Copyright (c) 2022 IETF Trust and the persons 934 identified as authors of the code. All rights reserved. 936 Redistribution and use in source and binary forms, with or 937 without modification, is permitted pursuant to, and subject 938 to the license terms contained in, the Simplified BSD License 939 set forth in Section 4.c of the IETF Trust's Legal Provisions 940 Relating to IETF Documents 941 (https://trustee.ietf.org/license-info). 943 This version of this YANG module is part of RFC XXXX; see 944 the RFC itself for full legal notices."; 946 revision "2022-03-07" { 947 description 948 "Initial version."; 949 reference 950 "RFC XXXX: YANG Model for OTN and Optical Path Computation"; 951 // RFC Ed.: replace XXXX with actual RFC number, update date 952 // information and remove this note 953 } 955 /* 956 * Data nodes 957 */ 958 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 959 + "tepc:path-request" { 960 description 961 "Augment with additional constraints for WSON paths."; 962 uses l0-types:l0-tunnel-attributes; 963 uses l0-types:l0-path-constraints; 964 } 966 augment "/te:tunnels-path-compute/te:output/" 967 + "te:path-compute-result/tepc:response/" 968 + "tepc:computed-paths-properties/" 969 + "tepc:computed-path-properties/tepc:path-properties" { 970 description 971 "Augment with additional properties for WSON paths."; 972 uses l0-types:l0-path-properties; 973 } 975 /* 976 * Augment Route Hop 977 */ 979 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 980 + "tepc:path-request/tepc:optimizations/tepc:algorithm/" 981 + "tepc:metric/tepc:optimization-metric/" 982 + "tepc:explicit-route-exclude-objects/" 983 + "tepc:route-object-exclude-object/tepc:type" { 984 description 985 "Augment the route hop for the optimization of the explicit 986 route objects excluded by the path computation of the requested 987 path."; 988 case oms-element { 989 leaf oms-element-uid { 990 type string; 991 description 992 "The unique id of the OMS element."; 993 } 994 description 995 "The OMS element route hop type"; 996 } 997 } 999 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1000 + "tepc:path-request/tepc:optimizations/tepc:algorithm/" 1001 + "tepc:metric/tepc:optimization-metric/" 1002 + "tepc:explicit-route-include-objects/" 1003 + "tepc:route-object-include-object/tepc:type" { 1004 description 1005 "Augment the route hop for the optimization of the explicit 1006 route objects included by the path computation of the requested 1007 path."; 1008 case oms-element { 1009 leaf oms-element-uid { 1010 type string; 1011 description 1012 "The unique id of the OMS element."; 1013 } 1014 description 1015 "The OMS element route hop type"; 1016 } 1017 } 1019 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1020 + "tepc:path-request/tepc:explicit-route-objects-always/" 1021 + "tepc:route-object-exclude-always/tepc:type" { 1022 description 1023 "Augment the route hop for the explicit route objects always 1024 excluded by the path computation of the requested path."; 1025 case oms-element { 1026 leaf oms-element-uid { 1027 type string; 1028 description 1029 "The unique id of the OMS element."; 1030 } 1031 description 1032 "The OMS element route hop type"; 1033 } 1034 } 1036 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1037 + "tepc:path-request/tepc:explicit-route-objects-always/" 1038 + "tepc:route-object-include-exclude/tepc:type" { 1039 description 1040 "Augment the route hop for the explicit route objects included 1041 or excluded by the path computation of the requested path."; 1042 case oms-element { 1043 leaf oms-element-uid { 1044 type string; 1045 description 1046 "The unique id of the OMS element."; 1047 } 1048 description 1049 "The OMS element route hop type"; 1050 } 1051 } 1053 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1054 + "tepc:synchronization/tepc:exclude-objects/tepc:excludes/" 1055 + "tepc:type" { 1056 description 1057 "Augment the route hop for the explicit route objects to always 1058 exclude from synchronized path computation."; 1059 case oms-element { 1060 leaf oms-element-uid { 1061 type string; 1062 description 1063 "The unique id of the OMS element."; 1064 } 1065 description 1066 "The OMS element route hop type"; 1067 } 1068 } 1070 augment "/te:tunnels-path-compute/te:output/" 1071 + "te:path-compute-result/tepc:response/" 1072 + "tepc:computed-paths-properties/" 1073 + "tepc:computed-path-properties/tepc:path-properties/" 1074 + "tepc:path-route-objects/tepc:path-route-object/" 1075 + "tepc:type" { 1076 description 1077 "Augment the route hop for the route object of the computed 1078 path."; 1079 case oms-element { 1080 leaf oms-element-uid { 1081 type string; 1082 description 1083 "The unique id of the OMS element."; 1084 } 1085 description 1086 "The OMS element route hop type"; 1087 } 1088 } 1090 /* 1091 * Augment TE label range information 1092 */ 1094 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1095 + "tepc:path-request/tepc:path-in-segment/" 1096 + "tepc:label-restrictions/tepc:label-restriction" { 1097 description 1098 "Augment TE label range information for the ingress segment 1099 of the requested path."; 1100 uses l0-types:l0-label-range-info; 1101 } 1102 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1103 + "tepc:path-request/tepc:path-out-segment/" 1104 + "tepc:label-restrictions/tepc:label-restriction" { 1105 description 1106 "Augment TE label range information for the egress segment 1107 of the requested path."; 1108 uses l0-types:l0-label-range-info; 1109 } 1111 /* 1112 * Augment TE label. 1113 */ 1115 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1116 + "tepc:path-request/tepc:optimizations/tepc:algorithm/" 1117 + "tepc:metric/tepc:optimization-metric/" 1118 + "tepc:explicit-route-exclude-objects/" 1119 + "tepc:route-object-exclude-object/tepc:type/tepc:label/" 1120 + "tepc:label-hop/tepc:te-label/tepc:technology" { 1121 description 1122 "Augment TE label hop for the optimization of the explicit 1123 route objects excluded by the path computation of the requested 1124 path."; 1125 case wson { 1126 uses l0-types:wson-label-hop; 1127 } 1128 } 1130 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1131 + "tepc:path-request/tepc:optimizations/tepc:algorithm/" 1132 + "tepc:metric/tepc:optimization-metric/" 1133 + "tepc:explicit-route-include-objects/" 1134 + "tepc:route-object-include-object/tepc:type/tepc:label/" 1135 + "tepc:label-hop/tepc:te-label/tepc:technology" { 1136 description 1137 "Augment TE label hop for the optimization of the explicit 1138 route objects included by the path computation of the requested 1139 path."; 1140 case wson { 1141 uses l0-types:wson-label-hop; 1142 } 1143 } 1145 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1146 + "tepc:path-request/tepc:explicit-route-objects-always/" 1147 + "tepc:route-object-exclude-always/tepc:type/tepc:label/" 1148 + "tepc:label-hop/tepc:te-label/tepc:technology" { 1149 description 1150 "Augment TE label hop for the explicit route objects always 1151 excluded by the path computation of the requested path."; 1152 case wson { 1153 uses l0-types:wson-label-hop; 1154 } 1155 } 1157 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1158 + "tepc:path-request/tepc:explicit-route-objects-always/" 1159 + "tepc:route-object-include-exclude/tepc:type/tepc:label/" 1160 + "tepc:label-hop/tepc:te-label/tepc:technology" { 1161 description 1162 "Augment TE label hop for the explicit route objects included 1163 or excluded by the path computation of the requested path."; 1164 case wson { 1165 uses l0-types:wson-label-hop; 1166 } 1167 } 1169 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1170 + "tepc:path-request/tepc:path-in-segment/" 1171 + "tepc:label-restrictions/tepc:label-restriction/" 1172 + "tepc:label-start/tepc:te-label/tepc:technology" { 1173 description 1174 "Augment TE label range start for the ingress segment 1175 of the requested path."; 1176 case wson { 1177 uses l0-types:wson-label-start-end; 1178 } 1179 } 1181 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1182 + "tepc:path-request/tepc:path-in-segment/" 1183 + "tepc:label-restrictions/tepc:label-restriction/" 1184 + "tepc:label-end/tepc:te-label/tepc:technology" { 1185 description 1186 "Augment TE label range end for the ingress segment 1187 of the requested path."; 1188 case wson { 1189 uses l0-types:wson-label-start-end; 1190 } 1191 } 1193 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1194 + "tepc:path-request/tepc:path-in-segment/" 1195 + "tepc:label-restrictions/tepc:label-restriction/" 1196 + "tepc:label-step/tepc:technology" { 1197 description 1198 "Augment TE label range step for the ingress segment 1199 of the requested path."; 1200 case wson { 1201 uses l0-types:wson-label-step; 1202 } 1203 } 1205 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1206 + "tepc:path-request/tepc:path-out-segment/" 1207 + "tepc:label-restrictions/tepc:label-restriction/" 1208 + "tepc:label-start/tepc:te-label/tepc:technology" { 1209 description 1210 "Augment TE label range start for the egress segment 1211 of the requested path."; 1212 case wson { 1213 uses l0-types:wson-label-start-end; 1214 } 1215 } 1217 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1218 + "tepc:path-request/tepc:path-out-segment/" 1219 + "tepc:label-restrictions/tepc:label-restriction/" 1220 + "tepc:label-end/tepc:te-label/tepc:technology" { 1221 description 1222 "Augment TE label range end for the egress segment 1223 of the requested path."; 1224 case wson { 1225 uses l0-types:wson-label-start-end; 1226 } 1227 } 1229 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1230 + "tepc:path-request/tepc:path-out-segment/" 1231 + "tepc:label-restrictions/tepc:label-restriction/" 1232 + "tepc:label-step/tepc:technology" { 1233 description 1234 "Augment TE label range end for the egress segment 1235 of the requested path."; 1236 case wson { 1237 uses l0-types:wson-label-step; 1238 } 1239 } 1241 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1242 + "tepc:synchronization/tepc:exclude-objects/tepc:excludes/" 1243 + "tepc:type/tepc:label/tepc:label-hop/" 1244 + "tepc:te-label/tepc:technology" { 1245 description 1246 "Augment TE label hop for the explicit route objects to always 1247 exclude from synchronized path computation."; 1248 case wson { 1249 uses l0-types:wson-label-hop; 1250 } 1251 } 1253 augment "/te:tunnels-path-compute/te:output/" 1254 + "te:path-compute-result/tepc:response/" 1255 + "tepc:computed-paths-properties/" 1256 + "tepc:computed-path-properties/tepc:path-properties/" 1257 + "tepc:path-route-objects/tepc:path-route-object/" 1258 + "tepc:type/tepc:label/" 1259 + "tepc:label-hop/tepc:te-label/tepc:technology" { 1260 description 1261 "Augment TE label hop for the route object of the computed 1262 path."; 1263 case wson { 1264 uses l0-types:wson-label-hop; 1265 } 1266 } 1267 } 1268 1270 Figure 5: WSON path computation YANG module 1272 4.2. YANG Model for Flexi-grid Path Computation 1274 file "ietf-flexi-grid-path-computation@2022-03-07.yang" 1275 module ietf-flexi-grid-path-computation { 1276 yang-version 1.1; 1277 namespace 1278 "urn:ietf:params:xml:ns:yang:ietf-flexi-grid-path-computation"; 1279 prefix "flexg-pc"; 1281 import ietf-te-path-computation { 1282 prefix "tepc"; 1283 revision-date "2021-09-06"; 1284 reference 1285 "I-D.ietf-teas-yang-path-computation-14: Yang model 1286 for requesting Path Computation."; 1287 } 1289 import ietf-te { 1290 prefix "te"; 1291 revision-date "2021-02-20"; 1292 reference 1293 "I-D.ietf-teas-yang-te-19: A YANG Data Model for Traffic 1294 Engineering Tunnels and Interfaces. "; 1295 } 1297 import ietf-layer0-types { 1298 prefix "l0-types"; 1299 } 1301 organization 1302 "IETF CCAMP Working Group"; 1303 contact 1304 "WG Web: 1305 WG List: 1307 Editor: Aihua Guo 1308 1310 Editor: Italo Busi 1311 1313 Editor: Sergio Belotti 1314 "; 1316 description 1317 "This module defines a model for requesting 1318 Flexi-grid Path Computation. 1320 The model fully conforms to the Network Management 1321 Datastore Architecture (NMDA). 1323 Copyright (c) 2022 IETF Trust and the persons 1324 identified as authors of the code. All rights reserved. 1326 Redistribution and use in source and binary forms, with or 1327 without modification, is permitted pursuant to, and subject 1328 to the license terms contained in, the Simplified BSD License 1329 set forth in Section 4.c of the IETF Trust's Legal Provisions 1330 Relating to IETF Documents 1331 (https://trustee.ietf.org/license-info). 1333 This version of this YANG module is part of RFC XXXX; see 1334 the RFC itself for full legal notices."; 1336 revision "2022-03-07" { 1337 description 1338 "Initial version."; 1339 reference 1340 "RFC XXXX: YANG Model for OTN and Optical Path Computation"; 1341 // RFC Ed.: replace XXXX with actual RFC number, update date 1342 // information and remove this note 1343 } 1345 /* 1346 * Data nodes 1347 */ 1349 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1350 + "tepc:path-request" { 1351 description 1352 "Augment with additional constraints flexi-grid 1353 media channel."; 1354 uses l0-types:l0-tunnel-attributes; 1355 uses l0-types:l0-path-constraints; 1356 } 1358 augment "/te:tunnels-path-compute/te:output/" 1359 + "te:path-compute-result/tepc:response/" 1360 + "tepc:computed-paths-properties/" 1361 + "tepc:computed-path-properties/tepc:path-properties" { 1362 description 1363 "Augment with additional properties for Flexi-grid paths."; 1364 uses l0-types:l0-path-properties; 1365 } 1367 /* 1368 * Augment Route Hop 1369 */ 1371 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1372 + "tepc:path-request/tepc:optimizations/tepc:algorithm/" 1373 + "tepc:metric/tepc:optimization-metric/" 1374 + "tepc:explicit-route-exclude-objects/" 1375 + "tepc:route-object-exclude-object/tepc:type" { 1376 description 1377 "Augment the route hop for the optimization of the explicit 1378 route objects excluded by the path computation of the requested 1379 path."; 1380 case oms-element { 1381 leaf oms-element-uid { 1382 type string; 1383 description 1384 "The unique id of the OMS element."; 1385 } 1386 description 1387 "The OMS element route hop type"; 1388 } 1389 } 1390 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1391 + "tepc:path-request/tepc:optimizations/tepc:algorithm/" 1392 + "tepc:metric/tepc:optimization-metric/" 1393 + "tepc:explicit-route-include-objects/" 1394 + "tepc:route-object-include-object/tepc:type" { 1395 description 1396 "Augment the route hop for the optimization of the explicit 1397 route objects included by the path computation of the requested 1398 path."; 1399 case oms-element { 1400 leaf oms-element-uid { 1401 type string; 1402 description 1403 "The unique id of the OMS element."; 1404 } 1405 description 1406 "The OMS element route hop type"; 1407 } 1408 } 1410 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1411 + "tepc:path-request/tepc:explicit-route-objects-always/" 1412 + "tepc:route-object-exclude-always/tepc:type" { 1413 description 1414 "Augment the route hop for the explicit route objects always 1415 excluded by the path computation of the requested path."; 1416 case oms-element { 1417 leaf oms-element-uid { 1418 type string; 1419 description 1420 "The unique id of the OMS element."; 1421 } 1422 description 1423 "The OMS element route hop type"; 1424 } 1425 } 1427 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1428 + "tepc:path-request/tepc:explicit-route-objects-always/" 1429 + "tepc:route-object-include-exclude/tepc:type" { 1430 description 1431 "Augment the route hop for the explicit route objects included 1432 or excluded by the path computation of the requested path."; 1433 case oms-element { 1434 leaf oms-element-uid { 1435 type string; 1436 description 1437 "The unique id of the OMS element."; 1439 } 1440 description 1441 "The OMS element route hop type"; 1442 } 1443 } 1445 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1446 + "tepc:synchronization/tepc:exclude-objects/tepc:excludes/" 1447 + "tepc:type" { 1448 description 1449 "Augment the route hop for the explicit route objects to always 1450 exclude from synchronized path computation."; 1451 case oms-element { 1452 leaf oms-element-uid { 1453 type string; 1454 description 1455 "The unique id of the OMS element."; 1456 } 1457 description 1458 "The OMS element route hop type"; 1459 } 1460 } 1462 augment "/te:tunnels-path-compute/te:output/" 1463 + "te:path-compute-result/tepc:response/" 1464 + "tepc:computed-paths-properties/" 1465 + "tepc:computed-path-properties/tepc:path-properties/" 1466 + "tepc:path-route-objects/tepc:path-route-object/" 1467 + "tepc:type" { 1468 description 1469 "Augment the route hop for the route object of the computed 1470 path."; 1471 case oms-element { 1472 leaf oms-element-uid { 1473 type string; 1474 description 1475 "The unique id of the OMS element."; 1476 } 1477 description 1478 "The OMS element route hop type"; 1479 } 1480 } 1482 /* 1483 * Augment TE label range information 1484 */ 1486 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1487 + "tepc:path-request/tepc:path-in-segment/" 1488 + "tepc:label-restrictions/tepc:label-restriction" { 1489 description 1490 "Augment TE label range information for the ingress segment 1491 of the requested path."; 1492 uses l0-types:flexi-grid-label-range-info; 1493 } 1495 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1496 + "tepc:path-request/tepc:path-out-segment/" 1497 + "tepc:label-restrictions/tepc:label-restriction" { 1498 description 1499 "Augment TE label range information for the egress segment 1500 of the requested path."; 1501 uses l0-types:flexi-grid-label-range-info; 1502 } 1504 /* 1505 * Augment TE label. 1506 */ 1508 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1509 + "tepc:path-request/tepc:optimizations/tepc:algorithm/" 1510 + "tepc:metric/tepc:optimization-metric/" 1511 + "tepc:explicit-route-exclude-objects/" 1512 + "tepc:route-object-exclude-object/tepc:type/tepc:label/" 1513 + "tepc:label-hop/tepc:te-label/tepc:technology" { 1514 description 1515 "Augment TE label hop for the optimization of the explicit 1516 route objects excluded by the path computation of the requested 1517 path."; 1518 case flexi-grid { 1519 uses l0-types:flexi-grid-label-hop; 1520 } 1521 } 1523 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1524 + "tepc:path-request/tepc:optimizations/tepc:algorithm/" 1525 + "tepc:metric/tepc:optimization-metric/" 1526 + "tepc:explicit-route-include-objects/" 1527 + "tepc:route-object-include-object/tepc:type/tepc:label/" 1528 + "tepc:label-hop/tepc:te-label/tepc:technology" { 1529 description 1530 "Augment TE label hop for the optimization of the explicit 1531 route objects included by the path computation of the requested 1532 path."; 1533 case flexi-grid { 1534 uses l0-types:flexi-grid-label-hop; 1536 } 1537 } 1539 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1540 + "tepc:path-request/tepc:explicit-route-objects-always/" 1541 + "tepc:route-object-exclude-always/tepc:type/tepc:label/" 1542 + "tepc:label-hop/tepc:te-label/tepc:technology" { 1543 description 1544 "Augment TE label hop for the explicit route objects always 1545 excluded by the path computation of the requested path."; 1546 case flexi-grid { 1547 uses l0-types:flexi-grid-label-hop; 1548 } 1549 } 1551 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1552 + "tepc:path-request/tepc:explicit-route-objects-always/" 1553 + "tepc:route-object-include-exclude/tepc:type/tepc:label/" 1554 + "tepc:label-hop/tepc:te-label/tepc:technology" { 1555 description 1556 "Augment TE label hop for the explicit route objects included 1557 or excluded by the path computation of the requested path."; 1558 case flexi-grid { 1559 uses l0-types:flexi-grid-label-hop; 1560 } 1561 } 1563 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1564 + "tepc:path-request/tepc:path-in-segment/" 1565 + "tepc:label-restrictions/tepc:label-restriction/" 1566 + "tepc:label-start/tepc:te-label/tepc:technology" { 1567 description 1568 "Augment TE label range start for the ingress segment 1569 of the requested path."; 1570 case flexi-grid { 1571 uses l0-types:flexi-grid-label-start-end; 1572 } 1573 } 1575 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1576 + "tepc:path-request/tepc:path-in-segment/" 1577 + "tepc:label-restrictions/tepc:label-restriction/" 1578 + "tepc:label-end/tepc:te-label/tepc:technology" { 1579 description 1580 "Augment TE label range end for the ingress segment 1581 of the requested path."; 1582 case flexi-grid { 1583 uses l0-types:flexi-grid-label-start-end; 1585 } 1586 } 1588 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1589 + "tepc:path-request/tepc:path-in-segment/" 1590 + "tepc:label-restrictions/tepc:label-restriction/" 1591 + "tepc:label-step/tepc:technology" { 1592 description 1593 "Augment TE label range step for the ingress segment 1594 of the requested path."; 1595 case flexi-grid { 1596 uses l0-types:flexi-grid-label-step; 1597 } 1598 } 1600 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1601 + "tepc:path-request/tepc:path-out-segment/" 1602 + "tepc:label-restrictions/tepc:label-restriction/" 1603 + "tepc:label-start/tepc:te-label/tepc:technology" { 1604 description 1605 "Augment TE label range start for the egress segment 1606 of the requested path."; 1607 case flexi-grid { 1608 uses l0-types:flexi-grid-label-start-end; 1609 } 1610 } 1612 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1613 + "tepc:path-request/tepc:path-out-segment/" 1614 + "tepc:label-restrictions/tepc:label-restriction/" 1615 + "tepc:label-end/tepc:te-label/tepc:technology" { 1616 description 1617 "Augment TE label range end for the egress segment 1618 of the requested path."; 1619 case flexi-grid { 1620 uses l0-types:flexi-grid-label-start-end; 1621 } 1622 } 1624 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1625 + "tepc:path-request/tepc:path-out-segment/" 1626 + "tepc:label-restrictions/tepc:label-restriction/" 1627 + "tepc:label-step/tepc:technology" { 1628 description 1629 "Augment TE label range end for the egress segment 1630 of the requested path."; 1631 case flexi-grid { 1632 uses l0-types:flexi-grid-label-step; 1634 } 1635 } 1637 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1638 + "tepc:synchronization/tepc:exclude-objects/tepc:excludes/" 1639 + "tepc:type/tepc:label/tepc:label-hop/" 1640 + "tepc:te-label/tepc:technology" { 1641 description 1642 "Augment TE label hop for the explicit route objects to always 1643 exclude from synchronized path computation."; 1644 case flexi-grid { 1645 uses l0-types:flexi-grid-label-hop; 1646 } 1647 } 1649 augment "/te:tunnels-path-compute/te:output/" 1650 + "te:path-compute-result/tepc:response/" 1651 + "tepc:computed-paths-properties/" 1652 + "tepc:computed-path-properties/tepc:path-properties/" 1653 + "tepc:path-route-objects/tepc:path-route-object/" 1654 + "tepc:type/tepc:label/" 1655 + "tepc:label-hop/tepc:te-label/tepc:technology" { 1656 description 1657 "Augment TE label hop for the route object of the computed 1658 path."; 1659 case flexi-grid { 1660 uses l0-types:flexi-grid-label-hop; 1661 } 1662 } 1663 } 1664 1666 Figure 6: Flexi-grid path computation YANG module 1668 4.3. YANG Model for OTN Path Computation 1670 file "ietf-otn-path-computation@2021-10-07.yang" 1671 module ietf-otn-path-computation { 1672 yang-version 1.1; 1673 namespace "urn:ietf:params:xml:ns:yang:ietf-otn-path-computation"; 1674 prefix "otn-pc"; 1676 import ietf-te-path-computation { 1677 prefix "tepc"; 1678 revision-date "2021-09-06"; 1679 reference 1680 "I-D.ietf-teas-yang-path-computation-14: Yang model 1681 for requesting Path Computation."; 1683 } 1685 import ietf-te { 1686 prefix "te"; 1687 revision-date "2021-02-20"; 1688 reference 1689 "I-D.ietf-teas-yang-te-19: A YANG Data Model for Traffic 1690 Engineering Tunnels and Interfaces. "; 1691 } 1693 import ietf-layer1-types { 1694 prefix "l1-types"; 1695 reference 1696 "I-D.ietf-ccamp-layer1-types: 1697 A YANG Data Model for Layer 1 Types. "; 1698 } 1700 organization 1701 "IETF CCAMP Working Group"; 1702 contact 1703 "WG Web: 1704 WG List: 1706 Editor: Aihua Guo 1707 1709 Editor: Italo Busi 1710 1712 Editor: Sergio Belotti 1713 "; 1715 description 1716 "This module defines a model for requesting 1717 OTN Path Computation. 1719 The model fully conforms to the Network Management 1720 Datastore Architecture (NMDA). 1722 Copyright (c) 2021 IETF Trust and the persons 1723 identified as authors of the code. All rights reserved. 1725 Redistribution and use in source and binary forms, with or 1726 without modification, is permitted pursuant to, and subject 1727 to the license terms contained in, the Simplified BSD License 1728 set forth in Section 4.c of the IETF Trust's Legal Provisions 1729 Relating to IETF Documents 1730 (https://trustee.ietf.org/license-info). 1732 This version of this YANG module is part of RFC XXXX; see 1733 the RFC itself for full legal notices."; 1735 revision "2021-10-07" { 1736 description 1737 "Initial version."; 1738 reference 1739 "RFC XXXX: YANG Model for OTN and Optical Path Computation"; 1740 // RFC Ed.: replace XXXX with actual RFC number, update date 1741 // information and remove this note 1742 } 1744 /* 1745 * Data nodes 1746 */ 1748 /* 1749 * Augment TE bandwidth 1750 */ 1752 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1753 + "tepc:path-request/tepc:te-bandwidth/tepc:technology" { 1754 description 1755 "Augment TE bandwidth of the requested path."; 1756 case otn { 1757 uses l1-types:otn-path-bandwidth; 1758 } 1759 } 1761 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1762 + "tepc:tunnel-attributes/tepc:te-bandwidth/" 1763 + "tepc:technology" { 1764 description 1765 "Augment TE bandwidth of the requested tunnel attributes."; 1766 case otn { 1767 uses l1-types:otn-path-bandwidth; 1768 } 1769 } 1771 augment "/te:tunnels-path-compute/te:output/" 1772 + "te:path-compute-result/tepc:response/" 1773 + "tepc:computed-paths-properties/" 1774 + "tepc:computed-path-properties/tepc:path-properties/" 1775 + "tepc:te-bandwidth/tepc:technology" { 1776 description 1777 "Augment TE bandwidth of the computed path properties."; 1778 case otn { 1779 uses l1-types:otn-path-bandwidth; 1781 } 1782 } 1784 /* 1785 * Augment TE label range information 1786 */ 1788 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1789 + "tepc:path-request/tepc:path-in-segment/" 1790 + "tepc:label-restrictions/tepc:label-restriction" { 1791 description 1792 "Augment TE label range information for the ingress segment 1793 of the requested path."; 1794 uses l1-types:otn-label-range-info; 1795 } 1797 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1798 + "tepc:path-request/tepc:path-out-segment/" 1799 + "tepc:label-restrictions/tepc:label-restriction" { 1800 description 1801 "Augment TE label range information for the egress segment 1802 of the requested path."; 1803 uses l1-types:otn-label-range-info; 1804 } 1806 /* 1807 * Augment TE label. 1808 */ 1810 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1811 + "tepc:path-request/tepc:optimizations/tepc:algorithm/" 1812 + "tepc:metric/tepc:optimization-metric/" 1813 + "tepc:explicit-route-exclude-objects/" 1814 + "tepc:route-object-exclude-object/tepc:type/tepc:label/" 1815 + "tepc:label-hop/tepc:te-label/tepc:technology" { 1816 description 1817 "Augment TE label hop for the optimization of the explicit 1818 route objects excluded by the path computation of the requested 1819 path."; 1820 case otn { 1821 uses l1-types:otn-label-hop; 1822 } 1823 } 1825 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1826 + "tepc:path-request/tepc:optimizations/tepc:algorithm/" 1827 + "tepc:metric/tepc:optimization-metric/" 1828 + "tepc:explicit-route-include-objects/" 1829 + "tepc:route-object-include-object/tepc:type/tepc:label/" 1830 + "tepc:label-hop/tepc:te-label/tepc:technology" { 1831 description 1832 "Augment TE label hop for the optimization of the explicit 1833 route objects included by the path computation of the requested 1834 path."; 1835 case otn { 1836 uses l1-types:otn-label-hop; 1837 } 1838 } 1840 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1841 + "tepc:path-request/tepc:explicit-route-objects-always/" 1842 + "tepc:route-object-exclude-always/tepc:type/tepc:label/" 1843 + "tepc:label-hop/tepc:te-label/tepc:technology" { 1844 description 1845 "Augment TE label hop for the explicit route objects always 1846 excluded by the path computation of the requested path."; 1847 case otn { 1848 uses l1-types:otn-label-hop; 1849 } 1850 } 1852 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1853 + "tepc:path-request/tepc:explicit-route-objects-always/" 1854 + "tepc:route-object-include-exclude/tepc:type/tepc:label/" 1855 + "tepc:label-hop/tepc:te-label/tepc:technology" { 1856 description 1857 "Augment TE label hop for the explicit route objects included 1858 or excluded by the path computation of the requested path."; 1859 case otn { 1860 uses l1-types:otn-label-hop; 1861 } 1862 } 1864 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1865 + "tepc:path-request/tepc:path-in-segment/" 1866 + "tepc:label-restrictions/tepc:label-restriction/" 1867 + "tepc:label-start/tepc:te-label/tepc:technology" { 1868 description 1869 "Augment TE label range start for the ingress segment 1870 of the requested path."; 1871 case otn { 1872 uses l1-types:otn-label-start-end; 1873 } 1874 } 1876 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1877 + "tepc:path-request/tepc:path-in-segment/" 1878 + "tepc:label-restrictions/tepc:label-restriction/" 1879 + "tepc:label-end/tepc:te-label/tepc:technology" { 1880 description 1881 "Augment TE label range end for the ingress segment 1882 of the requested path."; 1883 case otn { 1884 uses l1-types:otn-label-start-end; 1885 } 1886 } 1888 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1889 + "tepc:path-request/tepc:path-in-segment/" 1890 + "tepc:label-restrictions/tepc:label-restriction/" 1891 + "tepc:label-step/tepc:technology" { 1892 description 1893 "Augment TE label range step for the ingress segment 1894 of the requested path."; 1895 case otn { 1896 uses l1-types:otn-label-step; 1897 } 1898 } 1900 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1901 + "tepc:path-request/tepc:path-out-segment/" 1902 + "tepc:label-restrictions/tepc:label-restriction/" 1903 + "tepc:label-start/tepc:te-label/tepc:technology" { 1904 description 1905 "Augment TE label range start for the egress segment 1906 of the requested path."; 1907 case otn { 1908 uses l1-types:otn-label-start-end; 1909 } 1910 } 1912 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1913 + "tepc:path-request/tepc:path-out-segment/" 1914 + "tepc:label-restrictions/tepc:label-restriction/" 1915 + "tepc:label-end/tepc:te-label/tepc:technology" { 1916 description 1917 "Augment TE label range end for the egress segment 1918 of the requested path."; 1919 case otn { 1920 uses l1-types:otn-label-start-end; 1921 } 1922 } 1924 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1925 + "tepc:path-request/tepc:path-out-segment/" 1926 + "tepc:label-restrictions/tepc:label-restriction/" 1927 + "tepc:label-step/tepc:technology" { 1928 description 1929 "Augment TE label range end for the egress segment 1930 of the requested path."; 1931 case otn { 1932 uses l1-types:otn-label-step; 1933 } 1934 } 1936 augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" 1937 + "tepc:synchronization/tepc:exclude-objects/tepc:excludes/" 1938 + "tepc:type/tepc:label/tepc:label-hop/" 1939 + "tepc:te-label/tepc:technology" { 1940 description 1941 "Augment TE label hop for the explicit route objects to always 1942 exclude from synchronized path computation."; 1943 case otn { 1944 uses l1-types:otn-label-hop; 1945 } 1946 } 1948 augment "/te:tunnels-path-compute/te:output/" 1949 + "te:path-compute-result/tepc:response/" 1950 + "tepc:computed-paths-properties/" 1951 + "tepc:computed-path-properties/tepc:path-properties/" 1952 + "tepc:path-route-objects/tepc:path-route-object/" 1953 + "tepc:type/tepc:label/" 1954 + "tepc:label-hop/tepc:te-label/tepc:technology" { 1955 description 1956 "Augment TE label hop for the route object of the computed 1957 path."; 1958 case otn { 1959 uses l1-types:otn-label-hop; 1960 } 1961 } 1962 } 1963 1965 Figure 7: OTN path computation YANG module 1967 5. Manageability Considerations 1969 TBD. 1971 6. Security Considerations 1973 1975 7. IANA Considerations 1977 This document registers the following URIs in the "ns" subregistry 1978 within the "IETF XML registry" [RFC3688]. 1980 URI: urn:ietf:params:xml:ns:yang:ietf-otn-path-computation 1981 Registrant Contact: The IESG. 1982 XML: N/A, the requested URI is an XML namespace. 1984 URI: urn:ietf:params:xml:ns:yang:ietf-wson-path-computation 1985 Registrant Contact: The IESG. 1986 XML: N/A, the requested URI is an XML namespace. 1988 URI: urn:ietf:params:xml:ns:yang:ietf-flexi-grid-path-computation 1989 Registrant Contact: The IESG. 1990 XML: N/A, the requested URI is an XML namespace. 1992 This document registers the following YANG module in the "YANG Module 1993 Names" registry [RFC7950]. 1995 name: ietf-otn-path-computation 1996 namespace: urn:ietf:params:xml:ns:yang:ietf-otn-path-computation 1997 prefix: otn-pc 1998 reference: this document 2000 name: ietf-wson-path-computation 2001 namespace: urn:ietf:params:xml:ns:yang:ietf-wson-path-computation 2002 prefix: wson-pc 2003 reference: this document 2005 name: ietf-flexi-grid-path-computation 2006 namespace: ietf:params:xml:ns:yang:ietf-flexi-grid-path-computation 2007 prefix: flexg-pc 2008 reference: this document 2010 8. References 2012 8.1. Normative References 2014 [I-D.ietf-ccamp-layer0-types-ext] 2015 Beller, D., Belotti, S., Zheng, H., Busi, I., and E. L. 2016 Rouzic, "A YANG Data Model for Layer 0 Types - Revision 2017 2", Work in Progress, Internet-Draft, draft-ietf-ccamp- 2018 layer0-types-ext-01, 25 October 2021, 2019 . 2022 [I-D.ietf-ccamp-layer1-types] 2023 Zheng, H. and I. Busi, "A YANG Data Model for Layer 1 2024 Types", Work in Progress, Internet-Draft, draft-ietf- 2025 ccamp-layer1-types-11, 7 September 2021, 2026 . 2029 [I-D.ietf-teas-yang-path-computation] 2030 Busi, I., Belotti, S., Dios, O. G. D., Sharma, A., Shi, 2031 Y., and D. Ceccarelli, "A YANG Data Model for requesting 2032 path computation", Work in Progress, Internet-Draft, 2033 draft-ietf-teas-yang-path-computation-17, 7 March 2022, 2034 . 2037 [I-D.ietf-teas-yang-te] 2038 Saad, T., Gandhi, R., Liu, X., Beeram, V. P., Bryskin, I., 2039 and O. G. D. Dios, "A YANG Data Model for Traffic 2040 Engineering Tunnels, Label Switched Paths and Interfaces", 2041 Work in Progress, Internet-Draft, draft-ietf-teas-yang-te- 2042 29, 7 February 2022, . 2045 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2046 DOI 10.17487/RFC3688, January 2004, 2047 . 2049 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2050 and A. Bierman, Ed., "Network Configuration Protocol 2051 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2052 . 2054 [RFC7699] Farrel, A., King, D., Li, Y., and F. Zhang, "Generalized 2055 Labels for the Flexi-Grid in Lambda Switch Capable (LSC) 2056 Label Switching Routers", RFC 7699, DOI 10.17487/RFC7699, 2057 November 2015, . 2059 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 2060 RFC 7950, DOI 10.17487/RFC7950, August 2016, 2061 . 2063 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 2064 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 2065 . 2067 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 2068 and R. Wilton, "Network Management Datastore Architecture 2069 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 2070 . 2072 [RFC8776] Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, 2073 "Common YANG Data Types for Traffic Engineering", 2074 RFC 8776, DOI 10.17487/RFC8776, June 2020, 2075 . 2077 [RFC9093] Zheng, H., Lee, Y., Guo, A., Lopez, V., and D. King, "A 2078 YANG Data Model for Layer 0 Types", RFC 9093, 2079 DOI 10.17487/RFC9093, August 2021, 2080 . 2082 8.2. Informative References 2084 [I-D.ietf-ccamp-flexigrid-tunnel-yang] 2085 Mendez, J. E. L. D. V., Burrero, D. P., King, D., Lopez, 2086 V., Busi, I., Dios, O. G. D., Lee, Y., and G. Galimberti, 2087 "A YANG Data Model for Flexi-Grid Tunnels", Work in 2088 Progress, Internet-Draft, draft-ietf-ccamp-flexigrid- 2089 tunnel-yang-00, 9 November 2021, 2090 . 2093 [I-D.ietf-ccamp-wson-tunnel-model] 2094 Lee, Y., Zheng, H., Guo, A., Lopez, V., King, D., Yoon, B. 2095 Y., and R. Vilalta, "A Yang Data Model for WSON Tunnel", 2096 Work in Progress, Internet-Draft, draft-ietf-ccamp-wson- 2097 tunnel-model-06, 22 October 2021, 2098 . 2101 [I-D.ietf-teas-actn-poi-applicability] 2102 Peruzzini, F., Bouquier, J., Busi, I., King, D., and D. 2103 Ceccarelli, "Applicability of Abstraction and Control of 2104 Traffic Engineered Networks (ACTN) to Packet Optical 2105 Integration (POI)", Work in Progress, Internet-Draft, 2106 draft-ietf-teas-actn-poi-applicability-06, 7 March 2022, 2107 . 2110 [RFC7446] Lee, Y., Ed., Bernstein, G., Ed., Li, D., and W. Imajuku, 2111 "Routing and Wavelength Assignment Information Model for 2112 Wavelength Switched Optical Networks", RFC 7446, 2113 DOI 10.17487/RFC7446, February 2015, 2114 . 2116 [RFC7581] Bernstein, G., Ed., Lee, Y., Ed., Li, D., Imajuku, W., and 2117 J. Han, "Routing and Wavelength Assignment Information 2118 Encoding for Wavelength Switched Optical Networks", 2119 RFC 7581, DOI 10.17487/RFC7581, June 2015, 2120 . 2122 Acknowledgments 2124 The authors of this document would like to thank the authors of 2125 [I-D.ietf-teas-actn-poi-applicability] for having identified the gap 2126 and requirements to trigger this work. 2128 The authors of this document would also like to thank Young Lee, 2129 Haomian Zheng, Victor Lopex, Ricard Vilalta, Bin Yeong Yoon, Jorge E. 2130 Lopez de Vergara Mendez, Daniel Perdices Burrero, Oscar Gonzalez de 2131 Dios, Gabriele Galimberti, Zafar Ali, Daniel Michaud Vallinoto and 2132 Dhruv Dhody who have contributed to the development of path 2133 computation augmentations for WSON and Flexi-grid topology in earlier 2134 versions of [I-D.ietf-ccamp-wson-tunnel-model] and of 2135 [I-D.ietf-ccamp-flexigrid-tunnel-yang]. 2137 This document was prepared using kramdown. 2139 Contributors 2141 Daniel King 2142 Old Dog Consulting 2143 Email: daniel@olddog.co.uk 2145 Authors' Addresses 2147 Italo Busi 2148 Huawei Technologies 2149 Email: italo.busi@huawei.com 2151 Aihua Guo 2152 Futurewei Technologies 2153 Email: aihuaguo.ietf@gmail.com 2154 Sergio Belotti 2155 Nokia 2156 Email: sergio.belotti@nokia.com