idnits 2.17.1 draft-ietf-ccamp-flexigrid-media-channel-yang-02.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 == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (March 24, 2019) is 1860 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) == Outdated reference: A later version (-16) exists of draft-ietf-ccamp-flexigrid-yang-03 == Outdated reference: A later version (-36) exists of draft-ietf-teas-yang-te-19 Summary: 0 errors (**), 0 flaws (~~), 4 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 CCAMP Working Group J.E. Lopez de Vergara 2 Internet Draft Universidad Autonoma de Madrid 3 Intended status: Standards Track D. Perdices 4 Expires: September 25, 2019 Naudit HPCN 5 V. Lopez 6 O. Gonzalez de Dios 7 Telefonica I+D/GCTO 8 D. King 9 Lancaster University 10 Y. Lee 11 Huawei 12 G. Galimberti 13 Cisco Photonics Srl 14 March 24, 2019 16 YANG data model for Flexi-Grid media-channels 17 draft-ietf-ccamp-flexigrid-media-channel-yang-02.txt 19 Status of this Memo 21 This Internet-Draft is submitted in full conformance with the 22 provisions of BCP 78 and BCP 79. This document may not be modified, 23 and derivative works of it may not be created, except to publish it 24 as an RFC and to translate it into languages other than English. 26 Internet-Drafts are working documents of the Internet Engineering 27 Task Force (IETF), its areas, and its working groups. Note that 28 other groups may also distribute working documents as Internet- 29 Drafts. 31 Internet-Drafts are draft documents valid for a maximum of six 32 months and may be updated, replaced, or obsoleted by other documents 33 at any time. It is inappropriate to use Internet-Drafts as 34 reference material or to cite them other than as "work in progress." 36 The list of current Internet-Drafts can be accessed at 37 http://www.ietf.org/ietf/1id-abstracts.txt 39 The list of Internet-Draft Shadow Directories can be accessed at 40 http://www.ietf.org/shadow.html 42 This Internet-Draft will expire on September 25, 2019. 44 Copyright Notice 46 Copyright (c) 2019 IETF Trust and the persons identified as the 47 document authors. All rights reserved. 49 This document is subject to BCP 78 and the IETF Trust's Legal 50 Provisions Relating to IETF Documents 51 (http://trustee.ietf.org/license-info) in effect on the date of 52 publication of this document. Please review these documents 53 carefully, as they describe your rights and restrictions with 54 respect to this document. Code Components extracted from this 55 document must include Simplified BSD License text as described in 56 Section 4.e of the Trust Legal Provisions and are provided without 57 warranty as described in the Simplified BSD License. 59 Abstract 61 This document defines a YANG model for managing flexi-grid optical 62 media channels, complementing the information provided by the 63 flexi-grid topology model. 64 It is also grounded on other defined YANG abstract models. 66 Table of Contents 68 1. Introduction .............................................. 2 69 2. Conventions used in this document ......................... 3 70 3. Flexi-grid media-channel overview ......................... 3 71 4. Example of use ............................................ 4 72 5. Media Channel YANG Model .................................. 5 73 5.1. YANG Model - Tree .................................... 5 74 5.2. YANG Model - Code .................................... 16 75 5.3. License .............................................. 32 76 6. Security Considerations ................................... 33 77 7. IANA Considerations ....................................... 33 78 8. References ................................................ 33 79 8.1. Normative References ................................. 33 80 8.2. Informative References ............................... 34 81 9. Contributors .............................................. 34 82 10. Acknowledgments ........................................... 35 83 Authors' Addresses ............................................ 35 85 1. Introduction 87 Transport networks are evolving from current DWDM systems towards 88 elastic optical networks, based on flexi-grid transmission and 89 switching technologies [RFC7698]. Such technology aims at increasing 90 both transport network scalability and flexibility, allowing the 91 optimization of bandwidth usage. 93 While [I-D.draft-ietf-ccamp-flexigrid-yang] focuses on flexi-grid 94 objects such as nodes, transponders and links, this document presents 95 a YANG [RFC7950] model for the flexi-grid media-channel. This YANG 96 module defines the whole path from a source transponder or node to 97 the destination through a number of intermediate nodes in the 98 flexi-grid network. 100 This document identifies the flexi-grid media-channel components, 101 parameters and their values, characterizes the features and the 102 performances of the flexi-grid elements. An application example is 103 provided towards the end of the document to better understand 104 their utility. 106 2. Conventions used in this document 108 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 109 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 110 document are to be interpreted as described in [RFC2119]. 112 In this document, these words will appear with that interpretation 113 only when in ALL CAPS. Lower case uses of these words are not to be 114 interpreted as carrying RFC-2119 significance. 116 In this document, the characters ">>" preceding an indented line(s) 117 indicates a compliance requirement statement using the key words 118 listed above. This convention aids reviewers in quickly identifying 119 or finding the explicit compliance requirements of this RFC. 121 3. Flexi-grid media-channel overview 123 The present model defines a flexi-grid media-channel mainly 124 composed of: 125 - source address 126 - source flexi-grid port 127 - source flexi-grid transponder 128 - destination address 129 - destination flexi-grid port 130 - destination flexi-grid transponder 131 - A list of links that defines the path 132 - Other optical attributes 134 Each path can be a media-channel (only defined by source and 135 destination node) or a network media-channel (additionally needs 136 source and destination transponders). Therefore, all the attributes 137 are optional to support both situations. 139 This is achieved by a combination of the traffic engineering tunnel 140 attributes explained in [I-D.draft-ietf-teas-yang-te] and augments 141 when necessary. For instance, source address, source flexi-grid 142 transponder, destination address and destination flexi-grid 143 transponder attributes are directly taken from tunnel, whereas other 144 attributes such as source flexi-grid port, destination flexi-grid 145 port are defined, as they are specific for flexi-grid. 147 4. Example of use 149 In order to explain how this model is used, we provide the following 150 example. An optical network usually has multiple transponders, 151 switches (nodes) and links between them. Figure 1 shows a simple 152 topology, where two physical paths interconnect two optical 153 transponders. 154 Media channel 155 <==================================================> 156 Path x 157 <--------------------------------------------------> 159 +----------+ +----------+ 160 Link 1 |Flexi-grid| Link 2 |Flexi-grid| Link 3 161 .--->| node |<-------->| node |<---. 162 | | B | | C | | 163 | +----------+ +----------+ | 164 v v 165 /-----------\ /-----------\ 166 / Flexi-grid \ / Flexi-grid \ 167 | transponder | | transponder | 168 \ A / \ E / 169 \-----------/ \-----------/ 170 ^ ^ 171 | +----------+ | 172 | Link 4 |Flexi-grid| Link 5 | 173 '------------>| node |<-----------' 174 | D | 175 +----------+ 176 <--------------------------------------------------> 177 Path y 179 Figure 1. Topology example. 181 After the nodes, links and transponders have been defined using 182 [I-D.draft-ietf-ccamp-flexigrid-yang], we can configure the 183 media-channel from the information we have stored in the 184 flexi-grid topology, by querying which elements are available, and 185 planning the resources that have to be provided on each situation. 186 Note that every element in the flexi-grid topology has a reference, 187 and this is the way in which they are called in the media-channel. 189 1. Depending on the case, it is possible to define either the source 190 and destination node ports, or the source and destination node 191 and transponder. In our case, we would define a network media 192 channel, with source transponder A and source node B, and 193 destination transponder E and destination node C. Thus, we are 194 going to follow path x. 196 2. Then, for each link in the path x, we indicate which channel we 197 are going to use, providing information about the slots, and what 198 nodes are connected. 200 3. Finally, the flexi-grid topology has to be updated with each 201 element usage status each time a media channel is created or torn 202 down. 204 5. Media Channel YANG Model 206 5.1. YANG Model - Tree 208 module: ietf-flexi-grid-media-channel 209 augment /te:te/te:tunnels/te:tunnel: 210 +--rw src-client-signal? identityref 211 +--rw dst-client-signal? identityref 212 +--rw fec-type? identityref 213 +--rw termination-type? identityref 214 +--rw bit-stuffing? boolean 215 augment /te:te/te:globals/te:named-path-constraints/ 216 te:named-path-constraint/te:te-bandwidth/te:technology: 217 +--:(flexi-grid) 218 +--rw bandwidth-type? identityref 219 augment /te:te/te:tunnels/te:tunnel/te:te-bandwidth/te:technology: 220 +--:(flexi-grid) 221 +--rw bandwidth-type? identityref 222 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 223 te:p2p-primary-path/te:te-bandwidth/te:technology: 224 +--:(flexi-grid) 225 +--rw bandwidth-type? identityref 226 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 227 te:p2p-primary-path/te:p2p-primary-reverse-path/ 228 te:te-bandwidth/te:technology: 229 +--:(flexi-grid) 230 +--rw bandwidth-type? identityref 231 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 232 te:p2p-secondary-path/te:te-bandwidth/te:technology: 233 +--:(flexi-grid) 234 +--rw bandwidth-type? identityref 236 augment /te:te/te:globals/te:named-path-constraints/ 237 te:named-path-constraint/te:explicit-route-objects-always/ 238 te:route-object-exclude-always/te:type/te:label/te:label-hop/ 239 te:te-label/te:technology: 240 +--:(flexi-grid) 241 +--rw (single-or-super-channel)? 242 +--:(single) 243 | +--rw flex-n? int16 244 | +--rw flex-m? uint16 245 +--:(super) 246 +--rw subcarrier-flex-n* [flex-n] 247 +--rw flex-n int16 248 +--rw flex-m? uint16 249 augment /te:te/te:globals/te:named-path-constraints/ 250 te:named-path-constraint/te:explicit-route-objects-always/ 251 te:route-object-include-exclude/te:type/te:label/te:label-hop/ 252 te:te-label/te:technology: 253 +--:(flexi-grid) 254 +--rw (single-or-super-channel)? 255 +--:(single) 256 | +--rw flex-n? int16 257 | +--rw flex-m? uint16 258 +--:(super) 259 +--rw subcarrier-flex-n* [flex-n] 260 +--rw flex-n int16 261 +--rw flex-m? uint16 262 augment /te:te/te:globals/te:named-path-constraints/ 263 te:named-path-constraint/te:path-in-segment/te:label-restrictions/ 264 te:label-restriction: 265 +--rw grid-type? identityref 266 +--rw priority? uint8 267 +--rw flexi-grid 268 +--rw nominal-central-frequency-granularity? identityref 269 +--rw slot-width-granularity? identityref 270 +--rw min-slot-width-factor? uint16 271 +--rw max-slot-width-factor? uint16 272 augment /te:te/te:globals/te:named-path-constraints/ 273 te:named-path-constraint/te:path-in-segment/te:label-restrictions/ 274 te:label-restriction/te:label-start/te:te-label/te:technology: 275 +--:(flexi-grid) 276 +--rw flex-n? int16 277 augment /te:te/te:globals/te:named-path-constraints/ 278 te:named-path-constraint/te:path-in-segment/te:label-restrictions/ 279 te:label-restriction/te:label-end/te:te-label/te:technology: 280 +--:(flexi-grid) 281 +--rw flex-n? int16 283 augment /te:te/te:globals/te:named-path-constraints/ 284 te:named-path-constraint/te:path-out-segment/te:label-restrictions/ 285 te:label-restriction: 286 +--rw grid-type? identityref 287 +--rw priority? uint8 288 +--rw flexi-grid 289 +--rw nominal-central-frequency-granularity? identityref 290 +--rw slot-width-granularity? identityref 291 +--rw min-slot-width-factor? uint16 292 +--rw max-slot-width-factor? uint16 293 augment /te:te/te:globals/te:named-path-constraints/ 294 te:named-path-constraint/te:path-out-segment/te:label-restrictions/ 295 te:label-restriction/te:label-start/te:te-label/te:technology: 296 +--:(flexi-grid) 297 +--rw flex-n? int16 298 augment /te:te/te:globals/te:named-path-constraints/ 299 te:named-path-constraint/te:path-out-segment/te:label-restrictions/ 300 te:label-restriction/te:label-end/te:te-label/te:technology: 301 +--:(flexi-grid) 302 +--rw flex-n? int16 303 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 304 te:p2p-primary-path/te:optimizations/te:algorithm/te:metric/ 305 te:optimization-metric/te:explicit-route-exclude-objects/ 306 te:route-object-exclude-object/te:type/te:label/te:label-hop/ 307 te:te-label/te:technology: 308 +--:(flexi-grid) 309 +--rw (single-or-super-channel)? 310 +--:(single) 311 | +--rw flex-n? int16 312 | +--rw flex-m? uint16 313 +--:(super) 314 +--rw subcarrier-flex-n* [flex-n] 315 +--rw flex-n int16 316 +--rw flex-m? uint16 317 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 318 te:p2p-primary-path/te:optimizations/te:algorithm/te:metric/ 319 te:optimization-metric/te:explicit-route-include-objects/ 320 te:route-object-include-object/te:type/te:label/te:label-hop/ 321 te:te-label/te:technology: 322 +--:(flexi-grid) 323 +--rw (single-or-super-channel)? 324 +--:(single) 325 | +--rw flex-n? int16 326 | +--rw flex-m? uint16 327 +--:(super) 328 +--rw subcarrier-flex-n* [flex-n] 329 +--rw flex-n int16 330 +--rw flex-m? uint16 332 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 333 te:p2p-primary-path/te:explicit-route-objects-always/ 334 te:route-object-exclude-always/te:type/te:label/te:label-hop/ 335 te:te-label/te:technology: 336 +--:(flexi-grid) 337 +--rw (single-or-super-channel)? 338 +--:(single) 339 | +--rw flex-n? int16 340 | +--rw flex-m? uint16 341 +--:(super) 342 +--rw subcarrier-flex-n* [flex-n] 343 +--rw flex-n int16 344 +--rw flex-m? uint16 345 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 346 te:p2p-primary-path/te:explicit-route-objects-always/ 347 te:route-object-include-exclude/te:type/te:label/te:label-hop/ 348 te:te-label/te:technology: 349 +--:(flexi-grid) 350 +--rw (single-or-super-channel)? 351 +--:(single) 352 | +--rw flex-n? int16 353 | +--rw flex-m? uint16 354 +--:(super) 355 +--rw subcarrier-flex-n* [flex-n] 356 +--rw flex-n int16 357 +--rw flex-m? uint16 358 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 359 te:p2p-primary-path/te:path-in-segment/te:label-restrictions/ 360 te:label-restriction: 361 +--rw grid-type? identityref 362 +--rw priority? uint8 363 +--rw flexi-grid 364 +--rw nominal-central-frequency-granularity? identityref 365 +--rw slot-width-granularity? identityref 366 +--rw min-slot-width-factor? uint16 367 +--rw max-slot-width-factor? uint16 368 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 369 te:p2p-primary-path/te:path-in-segment/te:label-restrictions/ 370 te:label-restriction/te:label-start/te:te-label/te:technology: 371 +--:(flexi-grid) 372 +--rw flex-n? int16 373 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 374 te:p2p-primary-path/te:path-in-segment/te:label-restrictions/ 375 te:label-restriction/te:label-end/te:te-label/te:technology: 376 +--:(flexi-grid) 377 +--rw flex-n? int16 379 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 380 te:p2p-primary-path/te:path-out-segment/te:label-restrictions/ 381 te:label-restriction: 382 +--rw grid-type? identityref 383 +--rw priority? uint8 384 +--rw flexi-grid 385 +--rw nominal-central-frequency-granularity? identityref 386 +--rw slot-width-granularity? identityref 387 +--rw min-slot-width-factor? uint16 388 +--rw max-slot-width-factor? uint16 389 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 390 te:p2p-primary-path/te:path-out-segment/te:label-restrictions/ 391 te:label-restriction/te:label-start/te:te-label/te:technology: 392 +--:(flexi-grid) 393 +--rw flex-n? int16 394 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 395 te:p2p-primary-path/te:path-out-segment/te:label-restrictions/ 396 te:label-restriction/te:label-end/te:te-label/te:technology: 397 +--:(flexi-grid) 398 +--rw flex-n? int16 399 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 400 te:p2p-primary-path/te:computed-paths-properties/ 401 te:computed-path-properties/te:path-properties/ 402 te:path-route-objects/te:path-computed-route-object/te:type/ 403 te:label/te:label-hop/te:te-label/te:technology: 404 +--:(flexi-grid) 405 +--ro (single-or-super-channel)? 406 +--:(single) 407 | +--ro flex-n? int16 408 | +--ro flex-m? uint16 409 +--:(super) 410 +--ro subcarrier-flex-n* [flex-n] 411 +--ro flex-n int16 412 +--ro flex-m? uint16 413 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 414 te:p2p-primary-path/te:lsps/te:lsp/te:lsp-record-route-information/ 415 te:lsp-record-route-information/te:type/te:label/te:label-hop/ 416 te:te-label/te:technology: 417 +--:(flexi-grid) 418 +--ro (single-or-super-channel)? 419 +--:(single) 420 | +--ro flex-n? int16 421 | +--ro flex-m? uint16 422 +--:(super) 423 +--ro subcarrier-flex-n* [flex-n] 424 +--ro flex-n int16 425 +--ro flex-m? uint16 427 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 428 te:p2p-primary-path/te:lsps/te:lsp/te:path-properties/ 429 te:path-route-objects/te:path-computed-route-object/te:type/ 430 te:label/te:label-hop/te:te-label/te:technology: 431 +--:(flexi-grid) 432 +--ro (single-or-super-channel)? 433 +--:(single) 434 | +--ro flex-n? int16 435 | +--ro flex-m? uint16 436 +--:(super) 437 +--ro subcarrier-flex-n* [flex-n] 438 +--ro flex-n int16 439 +--ro flex-m? uint16 440 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 441 te:p2p-primary-path/te:p2p-primary-reverse-path/te:optimizations/ 442 te:algorithm/te:metric/te:optimization-metric/ 443 te:explicit-route-exclude-objects/te:route-object-exclude-object/ 444 te:type/te:label/te:label-hop/te:te-label/te:technology: 445 +--:(flexi-grid) 446 +--rw (single-or-super-channel)? 447 +--:(single) 448 | +--rw flex-n? int16 449 | +--rw flex-m? uint16 450 +--:(super) 451 +--rw subcarrier-flex-n* [flex-n] 452 +--rw flex-n int16 453 +--rw flex-m? uint16 454 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 455 te:p2p-primary-path/te:p2p-primary-reverse-path/te:optimizations/ 456 te:algorithm/te:metric/te:optimization-metric/ 457 te:explicit-route-include-objects/te:route-object-include-object/ 458 te:type/te:label/te:label-hop/te:te-label/te:technology: 459 +--:(flexi-grid) 460 +--rw (single-or-super-channel)? 461 +--:(single) 462 | +--rw flex-n? int16 463 | +--rw flex-m? uint16 464 +--:(super) 465 +--rw subcarrier-flex-n* [flex-n] 466 +--rw flex-n int16 467 +--rw flex-m? uint16 468 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 469 te:p2p-primary-path/te:p2p-primary-reverse-path/ 470 te:explicit-route-objects-always/te:route-object-exclude-always/ 471 te:type/te:label/te:label-hop/te:te-label/te:technology: 472 +--:(flexi-grid) 473 +--rw (single-or-super-channel)? 474 +--:(single) 475 | +--rw flex-n? int16 476 | +--rw flex-m? uint16 477 +--:(super) 478 +--rw subcarrier-flex-n* [flex-n] 479 +--rw flex-n int16 480 +--rw flex-m? uint16 482 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 483 te:p2p-primary-path/te:p2p-primary-reverse-path/ 484 te:explicit-route-objects-always/te:route-object-include-exclude/ 485 te:type/te:label/te:label-hop/te:te-label/te:technology: 486 +--:(flexi-grid) 487 +--rw (single-or-super-channel)? 488 +--:(single) 489 | +--rw flex-n? int16 490 | +--rw flex-m? uint16 491 +--:(super) 492 +--rw subcarrier-flex-n* [flex-n] 493 +--rw flex-n int16 494 +--rw flex-m? uint16 495 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 496 te:p2p-primary-path/te:p2p-primary-reverse-path/te:path-in-segment/ 497 te:label-restrictions/te:label-restriction: 498 +--rw grid-type? identityref 499 +--rw priority? uint8 500 +--rw flexi-grid 501 +--rw nominal-central-frequency-granularity? identityref 502 +--rw slot-width-granularity? identityref 503 +--rw min-slot-width-factor? uint16 504 +--rw max-slot-width-factor? uint16 505 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 506 te:p2p-primary-path/te:p2p-primary-reverse-path/te:path-in-segment/ 507 te:label-restrictions/te:label-restriction/te:label-start/ 508 te:te-label/te:technology: 509 +--:(flexi-grid) 510 +--rw flex-n? int16 511 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 512 te:p2p-primary-path/te:p2p-primary-reverse-path/te:path-in-segment/ 513 te:label-restrictions/te:label-restriction/te:label-end/te:te-label/ 514 te:technology: 515 +--:(flexi-grid) 516 +--rw flex-n? int16 517 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 518 te:p2p-primary-path/te:p2p-primary-reverse-path/te:path-out-segment/ 519 te:label-restrictions/te:label-restriction: 520 +--rw grid-type? identityref 521 +--rw priority? uint8 522 +--rw flexi-grid 523 +--rw nominal-central-frequency-granularity? identityref 524 +--rw slot-width-granularity? identityref 525 +--rw min-slot-width-factor? uint16 526 +--rw max-slot-width-factor? uint16 527 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 528 te:p2p-primary-path/te:p2p-primary-reverse-path/te:path-out-segment/ 529 te:label-restrictions/te:label-restriction/te:label-start/ 530 te:te-label/te:technology: 531 +--:(flexi-grid) 532 +--rw flex-n? int16 534 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 535 te:p2p-primary-path/te:p2p-primary-reverse-path/te:path-out-segment/ 536 te:label-restrictions/te:label-restriction/te:label-end/te:te-label/ 537 te:technology: 538 +--:(flexi-grid) 539 +--rw flex-n? int16 540 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 541 te:p2p-primary-path/te:p2p-primary-reverse-path/ 542 te:computed-paths-properties/te:computed-path-properties/ 543 te:path-properties/te:path-route-objects/ 544 te:path-computed-route-object/te:type/te:label/te:label-hop/ 545 te:te-label/te:technology: 546 +--:(flexi-grid) 547 +--ro (single-or-super-channel)? 548 +--:(single) 549 | +--ro flex-n? int16 550 | +--ro flex-m? uint16 551 +--:(super) 552 +--ro subcarrier-flex-n* [flex-n] 553 +--ro flex-n int16 554 +--ro flex-m? uint16 555 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 556 te:p2p-primary-path/te:p2p-primary-reverse-path/te:lsps/te:lsp/ 557 te:lsp-record-route-information/te:lsp-record-route-information/ 558 te:type/te:label/te:label-hop/te:te-label/te:technology: 559 +--:(flexi-grid) 560 +--ro (single-or-super-channel)? 561 +--:(single) 562 | +--ro flex-n? int16 563 | +--ro flex-m? uint16 564 +--:(super) 565 +--ro subcarrier-flex-n* [flex-n] 566 +--ro flex-n int16 567 +--ro flex-m? uint16 568 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 569 te:p2p-primary-path/te:p2p-primary-reverse-path/te:lsps/te:lsp/ 570 te:path-properties/te:path-route-objects/ 571 te:path-computed-route-object/te:type/te:label/te:label-hop/ 572 te:te-label/te:technology: 573 +--:(flexi-grid) 574 +--ro (single-or-super-channel)? 575 +--:(single) 576 | +--ro flex-n? int16 577 | +--ro flex-m? uint16 578 +--:(super) 579 +--ro subcarrier-flex-n* [flex-n] 580 +--ro flex-n int16 581 +--ro flex-m? uint16 583 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 584 te:p2p-secondary-path/te:optimizations/te:algorithm/te:metric/ 585 te:optimization-metric/te:explicit-route-exclude-objects/ 586 te:route-object-exclude-object/te:type/te:label/te:label-hop/ 587 te:te-label/te:technology: 588 +--:(flexi-grid) 589 +--rw (single-or-super-channel)? 590 +--:(single) 591 | +--rw flex-n? int16 592 | +--rw flex-m? uint16 593 +--:(super) 594 +--rw subcarrier-flex-n* [flex-n] 595 +--rw flex-n int16 596 +--rw flex-m? uint16 597 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 598 te:p2p-secondary-path/te:optimizations/te:algorithm/te:metric/ 599 te:optimization-metric/te:explicit-route-include-objects/ 600 te:route-object-include-object/te:type/te:label/te:label-hop/ 601 te:te-label/te:technology: 602 +--:(flexi-grid) 603 +--rw (single-or-super-channel)? 604 +--:(single) 605 | +--rw flex-n? int16 606 | +--rw flex-m? uint16 607 +--:(super) 608 +--rw subcarrier-flex-n* [flex-n] 609 +--rw flex-n int16 610 +--rw flex-m? uint16 611 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 612 te:p2p-secondary-path/te:explicit-route-objects-always/ 613 te:route-object-exclude-always/te:type/te:label/te:label-hop/ 614 te:te-label/te:technology: 615 +--:(flexi-grid) 616 +--rw (single-or-super-channel)? 617 +--:(single) 618 | +--rw flex-n? int16 619 | +--rw flex-m? uint16 620 +--:(super) 621 +--rw subcarrier-flex-n* [flex-n] 622 +--rw flex-n int16 623 +--rw flex-m? uint16 624 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 625 te:p2p-secondary-path/te:explicit-route-objects-always/ 626 te:route-object-include-exclude/te:type/te:label/te:label-hop/ 627 te:te-label/te:technology: 628 +--:(flexi-grid) 629 +--rw (single-or-super-channel)? 630 +--:(single) 631 | +--rw flex-n? int16 632 | +--rw flex-m? uint16 633 +--:(super) 634 +--rw subcarrier-flex-n* [flex-n] 635 +--rw flex-n int16 636 +--rw flex-m? uint16 638 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 639 te:p2p-secondary-path/te:path-in-segment/te:label-restrictions/ 640 te:label-restriction: 641 +--rw grid-type? identityref 642 +--rw priority? uint8 643 +--rw flexi-grid 644 +--rw nominal-central-frequency-granularity? identityref 645 +--rw slot-width-granularity? identityref 646 +--rw min-slot-width-factor? uint16 647 +--rw max-slot-width-factor? uint16 648 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 649 te:p2p-secondary-path/te:path-in-segment/te:label-restrictions/ 650 te:label-restriction/te:label-start/te:te-label/te:technology: 651 +--:(flexi-grid) 652 +--rw flex-n? int16 653 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 654 te:p2p-secondary-path/te:path-in-segment/te:label-restrictions/ 655 te:label-restriction/te:label-end/te:te-label/te:technology: 656 +--:(flexi-grid) 657 +--rw flex-n? int16 658 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 659 te:p2p-secondary-path/te:path-out-segment/te:label-restrictions/ 660 te:label-restriction: 661 +--rw grid-type? identityref 662 +--rw priority? uint8 663 +--rw flexi-grid 664 +--rw nominal-central-frequency-granularity? identityref 665 +--rw slot-width-granularity? identityref 666 +--rw min-slot-width-factor? uint16 667 +--rw max-slot-width-factor? uint16 668 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 669 te:p2p-secondary-path/te:path-out-segment/te:label-restrictions/ 670 te:label-restriction/te:label-start/te:te-label/te:technology: 671 +--:(flexi-grid) 672 +--rw flex-n? int16 673 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 674 te:p2p-secondary-path/te:path-out-segment/te:label-restrictions/ 675 te:label-restriction/te:label-end/te:te-label/te:technology: 676 +--:(flexi-grid) 677 +--rw flex-n? int16 678 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 679 te:p2p-secondary-path/te:computed-paths-properties/ 680 te:computed-path-properties/te:path-properties/ 681 te:path-route-objects/te:path-computed-route-object/te:type/ 682 te:label/te:label-hop/te:te-label/te:technology: 683 +--:(flexi-grid) 684 +--ro (single-or-super-channel)? 685 +--:(single) 686 | +--ro flex-n? int16 687 | +--ro flex-m? uint16 688 +--:(super) 689 +--ro subcarrier-flex-n* [flex-n] 690 +--ro flex-n int16 691 +--ro flex-m? uint16 693 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 694 te:p2p-secondary-path/te:lsps/te:lsp/ 695 te:lsp-record-route-information/te:lsp-record-route-information/ 696 te:type/te:label/te:label-hop/te:te-label/te:technology: 697 +--:(flexi-grid) 698 +--ro (single-or-super-channel)? 699 +--:(single) 700 | +--ro flex-n? int16 701 | +--ro flex-m? uint16 702 +--:(super) 703 +--ro subcarrier-flex-n* [flex-n] 704 +--ro flex-n int16 705 +--ro flex-m? uint16 706 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 707 te:p2p-secondary-path/te:lsps/te:lsp/te:path-properties/ 708 te:path-route-objects/te:path-computed-route-object/te:type/ 709 te:label/te:label-hop/te:te-label/te:technology: 710 +--:(flexi-grid) 711 +--ro (single-or-super-channel)? 712 +--:(single) 713 | +--ro flex-n? int16 714 | +--ro flex-m? uint16 715 +--:(super) 716 +--ro subcarrier-flex-n* [flex-n] 717 +--ro flex-n int16 718 +--ro flex-m? uint16 719 augment /te:te/te:lsps-state/te:lsp/te:lsp-record-route-information/ 720 te:lsp-record-route-information/te:type/te:label/te:label-hop/ 721 te:te-label/te:technology: 722 +--:(flexi-grid) 723 +--ro (single-or-super-channel)? 724 +--:(single) 725 | +--ro flex-n? int16 726 | +--ro flex-m? uint16 727 +--:(super) 728 +--ro subcarrier-flex-n* [flex-n] 729 +--ro flex-n int16 730 +--ro flex-m? uint16 731 augment /te:tunnels-rpc/te:input/te:tunnel-info/tepc:path-request: 732 +-- src-client-signal? identityref 733 +-- dst-client-signal? identityref 734 +-- fec-type? identityref 735 +-- termination-type? identityref 736 +-- bit-stuffing? boolean 737 +-- wavelength-assignment? identityref 739 5.2. YANG Model - Code 741 file "ietf-flexi-grid-media-channel@2019-03-24.yang" 743 module ietf-flexi-grid-media-channel { 744 yang-version 1.1; 746 namespace "urn:ietf:params:xml:ns:yang:ietf-flexi-grid-media-channel"; 747 prefix "flexi-grid-media-channel"; 749 import ietf-te { prefix "te"; } 750 import ietf-layer0-types{ prefix "layer0-types"; } 751 import ietf-te-path-computation { prefix "tepc"; } 752 import ietf-otn-types { prefix "otn-types"; } 754 organization 755 "IETF CCAMP Working Group"; 757 contact 758 "WG Web: 759 WG List: 761 WG Chair: Daniele Ceccarelli 762 764 WG Chair: Fatai Zhang 765 767 Editor: Jorge E. Lopez de Vergara 768 Editor: Daniel Perdices 769 Editor: Victor Lopez 770 Editor: Young Lee "; 771 description 772 "This module defines a model for Flex-grid Media Channel 773 Services."; 775 revision "2019-03-24" { 776 description 777 "version 2"; 778 reference "version 2"; 779 } 780 /* Groupings. */ 782 grouping flexi-grid-media-channel-attributes { 783 description "Parameters for flexi-grid media channel."; 785 leaf src-client-signal { 786 type identityref { 787 base otn-types:client-signal; 788 } 789 description 790 "Client signal at the source endpoint of 791 the media channel."; 792 } 794 leaf dst-client-signal { 795 type identityref { 796 base otn-types:client-signal; 797 } 798 description 799 "Client signal at the destination endpoint of 800 the media channel."; 801 } 803 leaf fec-type { 804 type identityref { 805 base layer0-types:fec-type; 806 } 807 description 808 "FEC type."; 809 } 811 leaf termination-type { 812 type identityref { 813 base layer0-types:term-type; 814 } 815 description 816 "Termination type."; 817 } 818 leaf bit-stuffing { 819 type boolean; 820 description 821 "Bit stuffing enabled/disabled."; 822 } 823 } 824 grouping flexi-grid-path-constraints { 825 description 826 "Global named path constraints configuration 827 grouping for flexi-grid media channel"; 829 leaf wavelength-assignment { 830 type identityref { 831 base layer0-types:wavelength-assignment; 832 } 833 description "Wavelength Allocation Method"; 834 } 835 } 837 /* 838 * Data nodes 839 */ 841 augment "/te:te/te:tunnels/te:tunnel" { 842 description 843 "Augment with additional parameters required for flexi-grid 844 media channel."; 845 uses flexi-grid-media-channel-attributes; 846 } 848 /* 849 * Augment TE bandwidth 850 */ 852 /* Augment bandwidth of named-path-constraints */ 853 augment "/te:te/te:globals/te:named-path-constraints/" 854 + "te:named-path-constraint/" 855 + "te:te-bandwidth/te:technology" { 856 description "flexi-grid bandwidth."; 857 case flexi-grid { 858 uses layer0-types:flexi-grid-path-bandwidth; 859 } 860 } 861 /* Augment bandwdith of tunnel */ 862 augment "/te:te/te:tunnels/te:tunnel/" 863 + "te:te-bandwidth/te:technology" { 864 description "flexi-grid bandwidth."; 865 case flexi-grid { 866 uses layer0-types:flexi-grid-path-bandwidth; 867 } 868 } 869 /* Augment bandwidth of primary path */ 870 augment "/te:te/te:tunnels/te:tunnel/" 871 + "te:p2p-primary-paths/te:p2p-primary-path/" 872 + "te:te-bandwidth/te:technology" { 873 description "flexi-grid bandwidth."; 874 case flexi-grid { 875 uses layer0-types:flexi-grid-path-bandwidth; 876 } 877 } 879 /* Augment bandwidth of reverse primary path */ 880 augment "/te:te/te:tunnels/te:tunnel/" 881 + "te:p2p-primary-paths/te:p2p-primary-path/" 882 + "te:p2p-primary-reverse-path/" 883 + "te:te-bandwidth/te:technology" { 884 description "flexi-grid bandwidth."; 885 case flexi-grid { 886 uses layer0-types:flexi-grid-path-bandwidth; 887 } 888 } 890 /* Augment bandwidht of secondary path */ 891 augment "/te:te/te:tunnels/te:tunnel/" 892 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 893 + "te:te-bandwidth/te:technology" { 894 description "flexi-grid bandwidth."; 895 case flexi-grid { 896 uses layer0-types:flexi-grid-path-bandwidth; 897 } 898 } 900 /* 901 * Augment TE label. 902 */ 903 /* Augment label hop of route-object-exclude-always of 904 named-path-constraints */ 905 augment "/te:te/te:globals/te:named-path-constraints/" 906 + "te:named-path-constraint/te:explicit-route-objects-always/" 907 + "te:route-object-exclude-always/te:type/te:label/" 908 + "te:label-hop/te:te-label/te:technology" { 909 description "flexi-grid label."; 910 case flexi-grid { 911 uses layer0-types:flexi-grid-path-label; 912 } 913 } 914 /* Augment label hop of route-object-include-exclude of 915 named-path-constraints */ 916 augment "/te:te/te:globals/te:named-path-constraints/" 917 + "te:named-path-constraint/te:explicit-route-objects-always/" 918 + "te:route-object-include-exclude/te:type/te:label/" 919 + "te:label-hop/te:te-label/te:technology" { 920 description "flexi-grid label."; 921 case flexi-grid { 922 uses layer0-types:flexi-grid-path-label; 923 } 924 } 926 /* Augment label restrictions for the path-in-segment of 927 named-path-constraints */ 928 augment "/te:te/te:globals/te:named-path-constraints/" 929 + "te:named-path-constraint/te:path-in-segment/" 930 + "te:label-restrictions/" 931 + "te:label-restriction" { 932 description "flexi-grid label."; 933 uses layer0-types:flexi-grid-label-restriction; 934 } 936 /* Augment label restrictions start for the path-in-segment 937 of named-path-constraints */ 938 augment "/te:te/te:globals/te:named-path-constraints/" 939 + "te:named-path-constraint/te:path-in-segment/" 940 + "te:label-restrictions/" 941 + "te:label-restriction/te:label-start/" 942 + "te:te-label/te:technology" { 943 description "flexi-grid label."; 944 case flexi-grid { 945 uses layer0-types:flexi-grid-link-label; 946 } 947 } 948 /* Augment label restrictions end for the path-in-segment of 949 named-path-constraints */ 950 augment "/te:te/te:globals/te:named-path-constraints/" 951 + "te:named-path-constraint/te:path-in-segment/" 952 + "te:label-restrictions/" 953 + "te:label-restriction/te:label-end/" 954 + "te:te-label/te:technology" { 955 description "flexi-grid label."; 956 case flexi-grid { 957 uses layer0-types:flexi-grid-link-label; 958 } 959 } 960 /* Augment label restrictions for the path-out-segment of 961 named-path-constraints */ 962 augment "/te:te/te:globals/te:named-path-constraints/" 963 + "te:named-path-constraint/te:path-out-segment/" 964 + "te:label-restrictions/" 965 + "te:label-restriction" { 966 description "flexi-grid label."; 967 uses layer0-types:flexi-grid-label-restriction; 968 } 969 /* Augment label restrictions start for the path-out-segment 970 of named-path-constraints */ 971 augment "/te:te/te:globals/te:named-path-constraints/" 972 + "te:named-path-constraint/te:path-out-segment/" 973 + "te:label-restrictions/" 974 + "te:label-restriction/te:label-start/" 975 + "te:te-label/te:technology" { 976 description "flexi-grid label."; 977 case flexi-grid { 978 uses layer0-types:flexi-grid-link-label; 979 } 980 } 981 /* Augment label restrictions end for the path-out-segment of 982 named-path-constraints */ 983 augment "/te:te/te:globals/te:named-path-constraints/" 984 + "te:named-path-constraint/te:path-out-segment/" 985 + "te:label-restrictions/" 986 + "te:label-restriction/te:label-end/" 987 + "te:te-label/te:technology" { 988 description "flexi-grid label."; 989 case flexi-grid { 990 uses layer0-types:flexi-grid-link-label; 991 } 992 } 994 /* Augment label hop of route-exclude of primary path */ 995 augment "/te:te/te:tunnels/te:tunnel/" 996 + "te:p2p-primary-paths/te:p2p-primary-path/" 997 + "te:optimizations/te:algorithm/te:metric/" 998 + "te:optimization-metric/te:explicit-route-exclude-objects/" 999 + "te:route-object-exclude-object/te:type/te:label/" 1000 + "te:label-hop/te:te-label/te:technology" { 1001 description "flexi-grid label."; 1002 case flexi-grid { 1003 uses layer0-types:flexi-grid-path-label; 1004 } 1005 } 1006 /* Augment label hop of route-include of primary path */ 1007 augment "/te:te/te:tunnels/te:tunnel/" 1008 + "te:p2p-primary-paths/te:p2p-primary-path/" 1009 + "te:optimizations/te:algorithm/te:metric/" 1010 + "te:optimization-metric/te:explicit-route-include-objects/" 1011 + "te:route-object-include-object/te:type/te:label/" 1012 + "te:label-hop/te:te-label/te:technology" { 1013 description "flexi-grid label."; 1014 case flexi-grid { 1015 uses layer0-types:flexi-grid-path-label; 1016 } 1017 } 1019 /* Augment label hop of route-object-exclude-always of primary path */ 1020 augment "/te:te/te:tunnels/te:tunnel/" 1021 + "te:p2p-primary-paths/te:p2p-primary-path/" 1022 + "te:explicit-route-objects-always/" 1023 + "te:route-object-exclude-always/te:type/te:label/" 1024 + "te:label-hop/te:te-label/te:technology" { 1025 description "flexi-grid label."; 1026 case flexi-grid { 1027 uses layer0-types:flexi-grid-path-label; 1028 } 1029 } 1030 /* Augment label hop of route-object-include-exclude of primary path 1031 */ 1032 augment "/te:te/te:tunnels/te:tunnel/" 1033 + "te:p2p-primary-paths/te:p2p-primary-path/" 1034 + "te:explicit-route-objects-always/" 1035 + "te:route-object-include-exclude/te:type/te:label/" 1036 + "te:label-hop/te:te-label/te:technology" { 1037 description "flexi-grid label."; 1038 case flexi-grid { 1039 uses layer0-types:flexi-grid-path-label; 1040 } 1041 } 1042 /* Augment label restrictions for the path-in-segment of 1043 primary path */ 1044 augment "/te:te/te:tunnels/te:tunnel/" 1045 + "te:p2p-primary-paths/te:p2p-primary-path/" 1046 + "te:path-in-segment/te:label-restrictions/" 1047 + "te:label-restriction" { 1048 description "flexi-grid label."; 1049 uses layer0-types:flexi-grid-label-restriction; 1050 } 1051 /* Augment label restrictions start for the path-in-segment 1052 of primary path */ 1053 augment "/te:te/te:tunnels/te:tunnel/" 1054 + "te:p2p-primary-paths/te:p2p-primary-path/" 1055 + "te:path-in-segment/te:label-restrictions/" 1056 + "te:label-restriction/te:label-start/" 1057 + "te:te-label/te:technology" { 1058 description "flexi-grid label."; 1059 case flexi-grid { 1060 uses layer0-types:flexi-grid-link-label; 1061 } 1062 } 1063 /* Augment label restrictions end for the path-in-segment 1064 of primary path */ 1065 augment "/te:te/te:tunnels/te:tunnel/" 1066 + "te:p2p-primary-paths/te:p2p-primary-path/" 1067 + "te:path-in-segment/te:label-restrictions/" 1068 + "te:label-restriction/te:label-end/" 1069 + "te:te-label/te:technology" { 1070 description "flexi-grid label."; 1071 case flexi-grid { 1072 uses layer0-types:flexi-grid-link-label; 1073 } 1074 } 1075 /* Augment label restrictions for the path-out-segment of 1076 primary path */ 1077 augment "/te:te/te:tunnels/te:tunnel/" 1078 + "te:p2p-primary-paths/te:p2p-primary-path/" 1079 + "te:path-out-segment/te:label-restrictions/" 1080 + "te:label-restriction" { 1081 description "flexi-grid label."; 1082 uses layer0-types:flexi-grid-label-restriction; 1083 } 1084 /* Augment label restrictions start for the path-out-segment 1085 of primary path */ 1086 augment "/te:te/te:tunnels/te:tunnel/" 1087 + "te:p2p-primary-paths/te:p2p-primary-path/" 1088 + "te:path-out-segment/te:label-restrictions/" 1089 + "te:label-restriction/te:label-start/" 1090 + "te:te-label/te:technology" { 1091 description "flexi-grid label."; 1092 case flexi-grid { 1093 uses layer0-types:flexi-grid-link-label; 1094 } 1095 } 1096 /* Augment label restrictions end for the path-out-segment 1097 of primary path */ 1098 augment "/te:te/te:tunnels/te:tunnel/" 1099 + "te:p2p-primary-paths/te:p2p-primary-path/" 1100 + "te:path-out-segment/te:label-restrictions/" 1101 + "te:label-restriction/te:label-end/" 1102 + "te:te-label/te:technology" { 1103 description "flexi-grid label."; 1104 case flexi-grid { 1105 uses layer0-types:flexi-grid-link-label; 1106 } 1107 } 1108 /* Augment label hop of path-route of primary path */ 1109 augment "/te:te/te:tunnels/te:tunnel/" 1110 + "te:p2p-primary-paths/te:p2p-primary-path/" 1111 + "te:computed-paths-properties/" 1112 + "te:computed-path-properties/te:path-properties/" 1113 + "te:path-route-objects/te:path-computed-route-object/" 1114 + "te:type/te:label/" 1115 + "te:label-hop/te:te-label/te:technology" { 1116 description "flexi-grid label."; 1117 case flexi-grid { 1118 uses layer0-types:flexi-grid-path-label; 1119 } 1120 } 1121 /* Augment label hop of record-route of primary LSP */ 1122 augment "/te:te/te:tunnels/te:tunnel/" 1123 + "te:p2p-primary-paths/te:p2p-primary-path/" 1124 + "te:lsps/te:lsp/te:lsp-record-route-information/" 1125 + "te:lsp-record-route-information/te:type/te:label/" 1126 + "te:label-hop/te:te-label/te:technology" { 1127 description "flexi-grid label."; 1128 case flexi-grid { 1129 uses layer0-types:flexi-grid-path-label; 1130 } 1131 } 1132 /* Augment label hop of path-route of primary LSP */ 1133 augment "/te:te/te:tunnels/te:tunnel/" 1134 + "te:p2p-primary-paths/te:p2p-primary-path/" 1135 + "te:lsps/te:lsp/te:path-properties/" 1136 + "te:path-route-objects/te:path-computed-route-object/" 1137 + "te:type/te:label/" 1138 + "te:label-hop/te:te-label/te:technology" { 1139 description "flexi-grid label."; 1140 case flexi-grid { 1141 uses layer0-types:flexi-grid-path-label; 1142 } 1143 } 1144 /* Augment label hop of route-exclude of reverse primary path */ 1145 augment "/te:te/te:tunnels/te:tunnel/" 1146 + "te:p2p-primary-paths/te:p2p-primary-path/" 1147 + "te:p2p-primary-reverse-path/" 1148 + "te:optimizations/te:algorithm/te:metric/" 1149 + "te:optimization-metric/te:explicit-route-exclude-objects/" 1150 + "te:route-object-exclude-object/te:type/te:label/" 1151 + "te:label-hop/te:te-label/te:technology" { 1152 description "flexi-grid label."; 1153 case flexi-grid { 1154 uses layer0-types:flexi-grid-path-label; 1155 } 1156 } 1157 /* Augment label hop of route-include of reverse primary path */ 1158 augment "/te:te/te:tunnels/te:tunnel/" 1159 + "te:p2p-primary-paths/te:p2p-primary-path/" 1160 + "te:p2p-primary-reverse-path/" 1161 + "te:optimizations/te:algorithm/te:metric/" 1162 + "te:optimization-metric/te:explicit-route-include-objects/" 1163 + "te:route-object-include-object/te:type/te:label/" 1164 + "te:label-hop/te:te-label/te:technology" { 1165 description "flexi-grid label."; 1166 case flexi-grid { 1167 uses layer0-types:flexi-grid-path-label; 1168 } 1169 } 1170 /* Augment label hop of route-object-exclude-always of reverse 1171 primary path */ 1172 augment "/te:te/te:tunnels/te:tunnel/" 1173 + "te:p2p-primary-paths/te:p2p-primary-path/" 1174 + "te:p2p-primary-reverse-path/" 1175 + "te:explicit-route-objects-always/" 1176 + "te:route-object-exclude-always/" 1177 + "te:type/te:label/" 1178 + "te:label-hop/te:te-label/te:technology" { 1179 description "flexi-grid label."; 1180 case flexi-grid { 1181 uses layer0-types:flexi-grid-path-label; 1182 } 1183 } 1184 /* Augment label hop of route-object-include-exclude of reverse 1185 primary path */ 1186 augment "/te:te/te:tunnels/te:tunnel/" 1187 + "te:p2p-primary-paths/te:p2p-primary-path/" 1188 + "te:p2p-primary-reverse-path/" 1189 + "te:explicit-route-objects-always/" 1190 + "te:route-object-include-exclude/" 1191 + "te:type/te:label/" 1192 + "te:label-hop/te:te-label/te:technology" { 1193 description "flexi-grid label."; 1194 case flexi-grid { 1195 uses layer0-types:flexi-grid-path-label; 1196 } 1197 } 1199 /* Augment label restrictions for the path-in-segment of 1200 reverse primary path */ 1201 augment "/te:te/te:tunnels/te:tunnel/" 1202 + "te:p2p-primary-paths/te:p2p-primary-path/" 1203 + "te:p2p-primary-reverse-path/" 1204 + "te:path-in-segment/te:label-restrictions/" 1205 + "te:label-restriction" { 1206 description "flexi-grid label."; 1207 uses layer0-types:flexi-grid-label-restriction; 1208 } 1209 /* Augment label restrictions start for the path-in-segment 1210 of reverse primary path */ 1211 augment "/te:te/te:tunnels/te:tunnel/" 1212 + "te:p2p-primary-paths/te:p2p-primary-path/" 1213 + "te:p2p-primary-reverse-path/" 1214 + "te:path-in-segment/te:label-restrictions/" 1215 + "te:label-restriction/te:label-start/" 1216 + "te:te-label/te:technology" { 1217 description "flexi-grid label."; 1218 case flexi-grid { 1219 uses layer0-types:flexi-grid-link-label; 1220 } 1221 } 1222 /* Augment label restrictions end for the path-in-segment 1223 of reverse primary path */ 1224 augment "/te:te/te:tunnels/te:tunnel/" 1225 + "te:p2p-primary-paths/te:p2p-primary-path/" 1226 + "te:p2p-primary-reverse-path/" 1227 + "te:path-in-segment/te:label-restrictions/" 1228 + "te:label-restriction/te:label-end/" 1229 + "te:te-label/te:technology" { 1230 description "flexi-grid label."; 1231 case flexi-grid { 1232 uses layer0-types:flexi-grid-link-label; 1233 } 1234 } 1235 /* Augment label restrictions for the path-out-segment of 1236 reverse primary path */ 1237 augment "/te:te/te:tunnels/te:tunnel/" 1238 + "te:p2p-primary-paths/te:p2p-primary-path/" 1239 + "te:p2p-primary-reverse-path/" 1240 + "te:path-out-segment/te:label-restrictions/" 1241 + "te:label-restriction" { 1242 description "flexi-grid label."; 1243 uses layer0-types:flexi-grid-label-restriction; 1244 } 1245 /* Augment label restrictions start for the path-out-segment 1246 of reverse primary path */ 1247 augment "/te:te/te:tunnels/te:tunnel/" 1248 + "te:p2p-primary-paths/te:p2p-primary-path/" 1249 + "te:p2p-primary-reverse-path/" 1250 + "te:path-out-segment/te:label-restrictions/" 1251 + "te:label-restriction/te:label-start/" 1252 + "te:te-label/te:technology" { 1253 description "flexi-grid label."; 1254 case flexi-grid { 1255 uses layer0-types:flexi-grid-link-label; 1256 } 1257 } 1258 /* Augment label restrictions end for the path-out-segment of 1259 reverse primary path */ 1260 augment "/te:te/te:tunnels/te:tunnel/" 1261 + "te:p2p-primary-paths/te:p2p-primary-path/" 1262 + "te:p2p-primary-reverse-path/" 1263 + "te:path-out-segment/te:label-restrictions/" 1264 + "te:label-restriction/te:label-end/" 1265 + "te:te-label/te:technology" { 1266 description "flexi-grid label."; 1267 case flexi-grid { 1268 uses layer0-types:flexi-grid-link-label; 1269 } 1270 } 1271 /* Augment label hop of path-route of reverse primary path */ 1272 augment "/te:te/te:tunnels/te:tunnel/" 1273 + "te:p2p-primary-paths/te:p2p-primary-path/" 1274 + "te:p2p-primary-reverse-path/" 1275 + "te:computed-paths-properties/" 1276 + "te:computed-path-properties/te:path-properties/" 1277 + "te:path-route-objects/te:path-computed-route-object/" 1278 + "te:type/te:label/" 1279 + "te:label-hop/te:te-label/te:technology" { 1280 description "flexi-grid label."; 1281 case flexi-grid { 1282 uses layer0-types:flexi-grid-path-label; 1283 } 1284 } 1285 /* Augment label hop of record-route of reverse primary LSP */ 1286 augment "/te:te/te:tunnels/te:tunnel/" 1287 + "te:p2p-primary-paths/te:p2p-primary-path/" 1288 + "te:p2p-primary-reverse-path/" 1289 + "te:lsps/te:lsp/te:lsp-record-route-information/" 1290 + "te:lsp-record-route-information/te:type/te:label/" 1291 + "te:label-hop/te:te-label/te:technology" { 1292 description "flexi-grid label."; 1293 case flexi-grid { 1294 uses layer0-types:flexi-grid-path-label; 1295 } 1296 } 1297 /* Augment label hop of path-route of reverse primary LSP */ 1298 augment "/te:te/te:tunnels/te:tunnel/" 1299 + "te:p2p-primary-paths/te:p2p-primary-path/" 1300 + "te:p2p-primary-reverse-path/" 1301 + "te:lsps/te:lsp/te:path-properties/" 1302 + "te:path-route-objects/te:path-computed-route-object/" 1303 + "te:type/te:label/" 1304 + "te:label-hop/te:te-label/te:technology" { 1305 description "flexi-grid label."; 1306 case flexi-grid { 1307 uses layer0-types:flexi-grid-path-label; 1308 } 1309 } 1310 /* Augment label hop of route-exclude of secondary path */ 1311 augment "/te:te/te:tunnels/te:tunnel/" 1312 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1313 + "te:optimizations/te:algorithm/te:metric/" 1314 + "te:optimization-metric/te:explicit-route-exclude-objects/" 1315 + "te:route-object-exclude-object/te:type/te:label/" 1316 + "te:label-hop/te:te-label/te:technology" { 1317 description "flexi-grid label."; 1318 case flexi-grid { 1319 uses layer0-types:flexi-grid-path-label; 1320 } 1321 } 1322 /* Augment label hop of route-include of secondary path */ 1323 augment "/te:te/te:tunnels/te:tunnel/" 1324 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1325 + "te:optimizations/te:algorithm/te:metric/" 1326 + "te:optimization-metric/te:explicit-route-include-objects/" 1327 + "te:route-object-include-object/te:type/te:label/" 1328 + "te:label-hop/te:te-label/te:technology" { 1329 description "flexi-grid label."; 1330 case flexi-grid { 1331 uses layer0-types:flexi-grid-path-label; 1332 } 1333 } 1334 /* Augment label hop of route-object-exclude-always of secondary path 1335 */ 1336 augment "/te:te/te:tunnels/te:tunnel/" 1337 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1338 + "te:explicit-route-objects-always/" 1339 + "te:route-object-exclude-always/te:type/te:label/" 1340 + "te:label-hop/te:te-label/te:technology" { 1341 description "flexi-grid label."; 1342 case flexi-grid { 1343 uses layer0-types:flexi-grid-path-label; 1344 } 1345 } 1346 /* Augment label hop of route-object-include-exclude of secondary 1347 path */ 1348 augment "/te:te/te:tunnels/te:tunnel/" 1349 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1350 + "te:explicit-route-objects-always/" 1351 + "te:route-object-include-exclude/te:type/te:label/" 1352 + "te:label-hop/te:te-label/te:technology" { 1353 description "flexi-grid label."; 1354 case flexi-grid { 1355 uses layer0-types:flexi-grid-path-label; 1356 } 1357 } 1358 /* Augment label restrictions for the path-in-segment of 1359 secondary path */ 1360 augment "/te:te/te:tunnels/te:tunnel/" 1361 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1362 + "te:path-in-segment/te:label-restrictions/" 1363 + "te:label-restriction" { 1364 description "flexi-grid label."; 1365 uses layer0-types:flexi-grid-label-restriction; 1366 } 1367 /* Augment label restrictions start for the path-in-segment 1368 of secondary path */ 1369 augment "/te:te/te:tunnels/te:tunnel/" 1370 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1371 + "te:path-in-segment/te:label-restrictions/" 1372 + "te:label-restriction/te:label-start/" 1373 + "te:te-label/te:technology" { 1374 description "flexi-grid label."; 1375 case flexi-grid { 1376 uses layer0-types:flexi-grid-link-label; 1377 } 1378 } 1379 /* Augment label restrictions end for the path-in-segment 1380 of secondary path */ 1381 augment "/te:te/te:tunnels/te:tunnel/" 1382 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1383 + "te:path-in-segment/te:label-restrictions/" 1384 + "te:label-restriction/te:label-end/" 1385 + "te:te-label/te:technology" { 1386 description "flexi-grid label."; 1387 case flexi-grid { 1388 uses layer0-types:flexi-grid-link-label; 1389 } 1390 } 1391 /* Augment label restrictions for the path-out-segment of 1392 secondary path */ 1393 augment "/te:te/te:tunnels/te:tunnel/" 1394 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1395 + "te:path-out-segment/te:label-restrictions/" 1396 + "te:label-restriction" { 1397 description "flexi-grid label."; 1398 uses layer0-types:flexi-grid-label-restriction; 1399 } 1400 /* Augment label restrictions start for the path-out-segment 1401 of secondary path */ 1402 augment "/te:te/te:tunnels/te:tunnel/" 1403 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1404 + "te:path-out-segment/te:label-restrictions/" 1405 + "te:label-restriction/te:label-start/" 1406 + "te:te-label/te:technology" { 1407 description "flexi-grid label."; 1408 case flexi-grid { 1409 uses layer0-types:flexi-grid-link-label; 1410 } 1411 } 1412 /* Augment label restrictions end for the path-out-segment of 1413 secondary path */ 1414 augment "/te:te/te:tunnels/te:tunnel/" 1415 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1416 + "te:path-out-segment/te:label-restrictions/" 1417 + "te:label-restriction/te:label-end/" 1418 + "te:te-label/te:technology" { 1419 description "flexi-grid label."; 1420 case flexi-grid { 1421 uses layer0-types:flexi-grid-link-label; 1422 } 1423 } 1424 /* Augment label hop of path-route of secondary path */ 1425 augment "/te:te/te:tunnels/te:tunnel/" 1426 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1427 + "te:computed-paths-properties/" 1428 + "te:computed-path-properties/te:path-properties/" 1429 + "te:path-route-objects/" 1430 + "te:path-computed-route-object/te:type/te:label/" 1431 + "te:label-hop/te:te-label/te:technology" { 1432 description "flexi-grid label."; 1433 case flexi-grid { 1434 uses layer0-types:flexi-grid-path-label; 1435 } 1436 } 1437 /* Augment label hop of record-route of secondary LSP */ 1438 augment "/te:te/te:tunnels/te:tunnel/" 1439 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1440 + "te:lsps/te:lsp/te:lsp-record-route-information/" 1441 + "te:lsp-record-route-information/te:type/te:label/" 1442 + "te:label-hop/te:te-label/te:technology" { 1443 description "flexi-grid label."; 1444 case flexi-grid { 1445 uses layer0-types:flexi-grid-path-label; 1446 } 1447 } 1448 /* Augment label hop of path-route of secondary LSP */ 1449 augment "/te:te/te:tunnels/te:tunnel/" 1450 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1451 + "te:lsps/te:lsp/te:path-properties/" 1452 + "te:path-route-objects/" 1453 + "te:path-computed-route-object/te:type/te:label/" 1454 + "te:label-hop/te:te-label/te:technology" { 1455 description "flexi-grid label."; 1456 case flexi-grid { 1457 uses layer0-types:flexi-grid-path-label; 1458 } 1459 } 1460 /* Augment label hop of record-route of LSP */ 1461 augment "/te:te/te:lsps-state/" 1462 + "te:lsp/te:lsp-record-route-information/" 1463 + "te:lsp-record-route-information/te:type/te:label/" 1464 + "te:label-hop/te:te-label/te:technology" { 1465 description "flexi-grid label."; 1466 case flexi-grid { 1467 uses layer0-types:flexi-grid-path-label; 1468 } 1469 } 1470 augment "/te:tunnels-rpc/te:input/te:tunnel-info/" 1471 + "tepc:path-request" { 1472 description 1473 "Augment with additional constraints flexi-grid 1474 media channel."; 1475 uses flexi-grid-media-channel-attributes; 1476 uses flexi-grid-path-constraints; 1477 } 1478 } 1480 1482 5.3. License 1484 Copyright (c) 2018 IETF Trust and the persons identified as authors 1485 of the code. All rights reserved. 1487 Redistribution and use in source and binary forms, with or without 1488 modification, are permitted provided that the following conditions 1489 are met: 1491 o Redistributions of source code must retain the above copyright 1492 notice, this list of conditions and the following disclaimer. 1494 o Redistributions in binary form must reproduce the above copyright 1495 notice, this list of conditions and the following disclaimer in 1496 the documentation and/or other materials provided with the 1497 distribution. 1499 o Neither the name of Internet Society, IETF or IETF Trust, nor the 1500 names of specific contributors, may be used to endorse or promote 1501 products derived from this software without specific prior 1502 written permission. 1504 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1505 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1506 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 1507 FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 1508 COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 1509 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 1510 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 1511 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 1512 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 1513 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 1514 ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1515 POSSIBILITY OF SUCH DAMAGE. 1517 6. Security Considerations 1519 The YANG module specified in this document defines a schema for data 1520 that is designed to be accessed via network management protocols 1521 such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF 1522 layer is the secure transport layer, and the mandatory-to-implement 1523 secure transport is Secure Shell (SSH) [RFC6242]. The lowest 1524 RESTCONF layer is HTTPS, and the mandatory-to-implement secure 1525 transport is TLS [RFC8446]. 1527 The NETCONF access control model [RFC8341] provides the means to 1528 restrict access for particular NETCONF users to a preconfigured 1529 subset of all available NETCONF protocol operations and content. The 1530 NETCONF Protocol over Secure Shell (SSH) [RFC6242] describes a 1531 method for invoking and running NETCONF within a Secure Shell (SSH) 1532 session as an SSH subsystem. The Network Configuration Access 1533 Control Model (NACM) [RFC8341] provides the means to restrict access 1534 for particular NETCONF or RESTCONF users to a preconfigured subset 1535 of all available NETCONF or RESTCONF protocol operations and 1536 content. 1538 A number of configuration data nodes defined in this document are 1539 writable/deletable (i.e., "config true"). These data nodes may be 1540 considered sensitive or vulnerable in some network environments. 1542 There are a number of data nodes defined in this YANG module that 1543 are writable/creatable/deletable (i.e., config true, which is the 1544 default). These data nodes may be considered sensitive or 1545 vulnerable in some network environments. Write operations (e.g., 1546 edit-config) to these data nodes without proper protection can have 1547 a negative effect on network operations. 1549 7. IANA Considerations 1551 The namespace used in the defined model has to register a URI in 1552 the IETF XML registry [RFC3688], as well as in the YANG Module 1553 Names registry [RFC6020]. 1555 8. References 1557 8.1. Normative References 1559 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1560 Requirement Levels", BCP 14, RFC 2119, March 1997. 1562 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1563 January 2004. 1565 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1566 the Network Configuration Protocol (NETCONF)", RFC 6020, 1567 October 2010. 1569 [RFC6241] R. Enns, Ed., M. Bjorklund, Ed., J. Schoenwaelder, Ed., 1570 "Network Configuration Protocol (NETCONF)", RFC 6241, June 1571 2011. 1573 [RFC6242] M. Wasserman, "Using the NETCONF Protocol over Secure 1574 Shell (SSH)", RFC 6242, June 2011. 1576 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling 1577 Language", RFC 7950, August 2016. 1579 [RFC8040] A. Bierman, M. Bjorklund, K. Watsen, "RESTCONF Protocol", 1580 RFC 8040, January 2017. 1582 [RFC8341] A. Bierman, M. Bjorklund, "Network Configuration Access 1583 Control Model", RFC 8341, March 2018. 1585 [RFC8446] E. Rescorla, "The Transport Layer Security (TLS) Protocol 1586 Version 1.3", RFC8446, August 2018. 1588 8.2. Informative References 1590 [RFC7698] Gonzalez de Dios, O., Casellas, R., Eds. "Framework and 1591 Requirements for GMPLS-Based Control of Flexi-Grid Dense 1592 Wavelength Division Multiplexing (DWDM) Networks", 1593 RFC7698, November 2015. 1594 [I-D.draft-ietf-ccamp-flexigrid-yang] Lopez de Vergara, J., 1595 Perdices, D., Lopez, V., Gonzalez de Dios, O., King, D., 1596 Lee, Y., Galimberti, G., "YANG data model for Flexi-Grid 1597 Optical Networks", Internet Draft, 1598 draft-ietf-ccamp-flexigrid-yang-03, 2019. 1599 [I-D.draft-ietf-teas-yang-te] 1600 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., 1601 Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data 1602 Model for Traffic Engineering Tunnels and Interfaces", 1603 draft-ietf-teas-yang-te-19, 2019. 1605 9. Contributors 1607 The model presented in this paper was contributed to by more people 1608 than can be listed on the author list. Additional contributors 1609 include: 1611 o Zafar Ali, Cisco Systems 1612 o Daniel Michaud Vallinoto, Universidad Autonoma de Madrid 1614 10. Acknowledgments 1616 The work presented in this Internet-Draft has been partially funded 1617 by the European Commission under the project H2020 METRO-HAUL 1618 (Metro High bandwidth, 5G Application-aware optical network, with 1619 edge storage, compUte and low Latency), Grant Agreement number: 1620 761727, and by the Spanish Ministry of Economy and Competitiveness 1621 under the project TRAFICA, MINECO/FEDER TEC2015-69417-C2-1-R. 1623 Authors' Addresses 1625 Jorge E. Lopez de Vergara 1626 Universidad Autonoma de Madrid 1627 Escuela Politecnica Superior 1628 C/Francisco Tomas y Valiente, 11 1629 E-28049 Madrid, Spain 1631 Email: jorge.lopez_vergara@uam.es 1633 Daniel Perdices Burrero 1634 Naudit High Performance Computing and Networking, S.L. 1635 C/Faraday, 7 1636 E-28049 Madrid, Spain 1638 Email: daniel.perdices@naudit.es 1640 Victor Lopez 1641 Telefonica I+D/GCTO 1642 Distrito Telefonica 1643 E-28050 Madrid, Spain 1645 Email: victor.lopezalvarez@telefonica.com 1647 Oscar Gonzalez de Dios 1648 Telefonica I+D/GCTO 1649 Distrito Telefonica 1650 E-28050 Madrid, Spain 1652 Email: oscar.gonzalezdedios@telefonica.com 1654 Daniel King 1655 Lancaster University 1657 Email: d.king@lancaster.ac.uk 1659 Young Lee 1660 Huawei Technologies 1662 Email: leeyoung@huawei.com 1663 Gabriele Galimberti 1664 Cisco Photonics Srl 1666 Email: ggalimbe@cisco.com