idnits 2.17.1 draft-ietf-teas-yang-rsvp-te-03.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 133 has weird spacing: '... rw for r...' == Line 134 has weird spacing: '... ro for r...' -- The document date (February 19, 2018) is 2250 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 (-19) exists of draft-ietf-teas-yang-rsvp-08 == Outdated reference: A later version (-36) exists of draft-ietf-teas-yang-te-11 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 1 error (**), 0 flaws (~~), 5 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 TEAS Working Group V. Beeram 3 Internet-Draft Juniper Networks 4 Intended status: Standards Track T. Saad, Ed. 5 Expires: August 23, 2018 R. Gandhi 6 Cisco Systems, Inc. 7 X. Liu 8 Jabil 9 I. Bryskin 10 Huawei Technologies 11 H. Shah 12 Ciena 13 February 19, 2018 15 A YANG Data Model for RSVP-TE 16 draft-ietf-teas-yang-rsvp-te-03 18 Abstract 20 This document defines a YANG data model for the configuration and 21 management of RSVP (Resource Reservation Protocol) to establish 22 Traffic-Engineered (TE) Label-Switched Paths (LSPs) for MPLS (Multi- 23 Protocol Label Switching) and other technologies. 25 The model defines a generic RSVP-TE module for signaling LSPs that is 26 technology agnostic. The generic RSVP-TE module is to be augmented 27 by technology specific RSVP-TE modules that define technology 28 specific data. This document defines the augmentation for RSVP-TE 29 MPLS LSPs model. 31 This model covers data for the configuration, operational state, 32 remote procedural calls, and event notifications. 34 Status of This Memo 36 This Internet-Draft is submitted in full conformance with the 37 provisions of BCP 78 and BCP 79. 39 Internet-Drafts are working documents of the Internet Engineering 40 Task Force (IETF). Note that other groups may also distribute 41 working documents as Internet-Drafts. The list of current Internet- 42 Drafts is at https://datatracker.ietf.org/drafts/current/. 44 Internet-Drafts are draft documents valid for a maximum of six months 45 and may be updated, replaced, or obsoleted by other documents at any 46 time. It is inappropriate to use Internet-Drafts as reference 47 material or to cite them other than as "work in progress." 48 This Internet-Draft will expire on August 23, 2018. 50 Copyright Notice 52 Copyright (c) 2018 IETF Trust and the persons identified as the 53 document authors. All rights reserved. 55 This document is subject to BCP 78 and the IETF Trust's Legal 56 Provisions Relating to IETF Documents 57 (https://trustee.ietf.org/license-info) in effect on the date of 58 publication of this document. Please review these documents 59 carefully, as they describe your rights and restrictions with respect 60 to this document. Code Components extracted from this document must 61 include Simplified BSD License text as described in Section 4.e of 62 the Trust Legal Provisions and are provided without warranty as 63 described in the Simplified BSD License. 65 Table of Contents 67 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 68 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 69 1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 70 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4 71 2. Design Considerations . . . . . . . . . . . . . . . . . . . . 5 72 2.1. Module Hierarchy . . . . . . . . . . . . . . . . . . . . 5 73 2.2. RSVP-TE Generic Model . . . . . . . . . . . . . . . . . . 6 74 2.2.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 6 75 2.2.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 14 76 2.3. RSVP-TE MPLS Model . . . . . . . . . . . . . . . . . . . 26 77 2.3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 26 78 2.3.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 28 79 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 41 80 4. Security Considerations . . . . . . . . . . . . . . . . . . . 41 81 5. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 42 82 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 42 83 7. Normative References . . . . . . . . . . . . . . . . . . . . 42 84 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43 86 1. Introduction 88 YANG [RFC6020] is a data definition language that was introduced to 89 define the contents of a conceptual data store that allows networked 90 devices to be managed using NETCONF [RFC6241]. YANG is proving 91 relevant beyond its initial confines, as bindings to other interfaces 92 (e.g. ReST) and encoding other than XML (e.g. JSON) are being 93 defined. Furthermore, YANG data models can be used as the basis of 94 implementation for other interfaces, such as CLI and programmatic 95 APIs. 97 This document defines a generic YANG data model for configuring and 98 managing RSVP-TE LSP(s) [RFC3209]. The RSVP-TE generic model 99 augments the RSVP base and extended models defined in 100 [I-D.ietf-teas-yang-rsvp], and adds TE extensions to the RSVP 101 protocol [RFC2205] model configuration and state data. The 102 technology specific RSVP-TE models augment the generic RSVP-TE model 103 with additional technology specific parameters. For example, this 104 document also defines the MPLS RSVP-TE model for configuring and 105 managing MPLS RSVP TE LSP(s). 107 In addition to augmenting the RSVP YANG module, the modules defined 108 in this document augment the TE Interfaces, Tunnels and LSP(s) YANG 109 module defined in [I-D.ietf-teas-yang-te] to define additional 110 parameters to enable signaling for RSVP-TE. 112 1.1. Terminology 114 In this document, the key words "MUST", "MUST NOT", "REQUIRED", 115 "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 116 and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 117 [RFC2119]. 119 1.2. Tree Diagram 121 A simplified graphical representation of the data model is presented 122 in each section of the model. The following notations are used for 123 the YANG model data tree representation. 125 127 is one of: 128 + for current 129 x for deprecated 130 o for obsolete 132 is one of: 133 rw for read-write configuration data 134 ro for read-only non-configuration data 135 -x for execution rpcs 136 -n for notifications 138 is the name of the node 140 If the node is augmented into the tree from another module, its name 141 is printed as : 143 is one of: 144 ? for an optional leaf or node 145 ! for a presence container 146 * for a leaf-list or list 147 Brackets [] for a list's keys 148 Curly braces {} for optional feature that make node 149 conditional 150 Colon : for marking case nodes 151 Ellipses ("...") subtree contents not shown 153 Parentheses enclose choice and case nodes, and case nodes are also 154 marked with a colon (":"). 156 is the name of the type for leafs and leaf-lists. 158 1.3. Prefixes in Data Node Names 160 In this document, names of data nodes and other data model objects 161 are prefixed using the standard prefix associated with the 162 corresponding YANG imported modules, as shown in Table 1. 164 +---------------+--------------------+---------------+ 165 | Prefix | YANG module | Reference | 166 +---------------+--------------------+---------------+ 167 | yang | ietf-yang-types | [RFC6991] | 168 | inet | ietf-inet-types | [RFC6991] | 169 | te | ietf-te | this document | 170 | te-types | ietf-te-types | this document | 171 | te-mpls-types | ietf-te-mpls-types | this document | 172 | te-dev | ietf-te-device | this document | 173 | te-mpls | ietf-te-mpls | this document | 174 | te-sr-mpls | ietf-te-sr-mpls | this document | 175 +---------------+--------------------+---------------+ 177 Table 1: Prefixes and corresponding YANG modules 179 2. Design Considerations 181 2.1. Module Hierarchy 183 The data pertaining to RSVP-TE in this document is divided into two 184 modules: a technology agnostic RSVP-TE module that holds generic 185 parameters for RSVP-TE applicable to all technologies, and a 186 technology specific RSVP-TE module (e.g. for MPLS RSVP-TE) that holds 187 parameters specific to the technology. 189 This document defines YANG data models for RSVP-TE, and RSVP-TE MPLS 190 configuration, state, notification and RPCs. The relationship 191 between the different modules is depicted in Figure 1. 193 TE basic +---------+ ^: import 194 module | ietf-te | o: augment 195 +---------+ 196 | o 197 | | 198 v | 199 +--------------+ 200 RSVP-TE module | ietf-rsvp-te |o . . . 201 +--------------+ \ 202 ^ | \ 203 | o +-------------------+ 204 +-----------+ | ietf-rsvp-otn-te | 205 RSVP module | ietf-rsvp | +-------------------+ 206 +-----------+ RSVP-TE with OTN 207 o extensions 208 | (shown for illustration 209 RSVP extended | not in this document) 210 module +--------------------+ 211 | ietf-rsvp-extended | 212 +--------------------+ 214 Figure 1: Relationship of RSVP and RSVP-TE modules with other 215 protocol modules 217 2.2. RSVP-TE Generic Model 219 The RSVP-TE generic module augments the RSVP base and extended YANG 220 modules defined in [I-D.ietf-teas-yang-rsvp] as well as the TE 221 tunnels and interfaces module [I-D.ietf-teas-yang-te] to cover 222 parameters specific to the configuration and management of RSVP-TE 223 interfaces, tunnels and LSP(s). 225 2.2.1. Tree Diagram 227 There are three types of configuration and state data nodes in this 228 module: 230 o those augmenting or extending the base RSVP module 232 o those augmenting or extending the base TE module 234 o those that are specific to the RSVP-TE module 236 Below is a YANG tree representation for data items defined in the 237 RSVP-TE generic module: 239 module: ietf-rsvp-te 240 augment 241 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 242 rsvp:rsvp/rsvp:globals: 243 +--rw global-soft-preemption! 244 +--rw soft-preemption-timeout? uint16 245 augment 246 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 247 rsvp:rsvp/rsvp:interfaces: 248 +--rw rsvp-te-interface-attributes 249 +--ro state 250 augment 251 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 252 rsvp:rsvp/rsvp:interfaces/rsvp:interface: 253 +--rw rsvp-te-interface-attributes 254 +--ro state 255 augment 256 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 257 rsvp:rsvp/rsvp:globals/rsvp:sessions/rsvp:session/rsvp:state/ 258 rsvp:psbs/rsvp:psb: 259 +--ro tspec-average-rate? rt-types:bandwidth-ieee-float32 260 +--ro tspec-size? rt-types:bandwidth-ieee-float32 261 +--ro tspec-peak-rate? rt-types:bandwidth-ieee-float32 262 +--ro min-policed-unit? uint32 263 +--ro max-packet-size? uint32 264 augment 265 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 266 rsvp:rsvp/rsvp:globals/rsvp:sessions/rsvp:session/rsvp:state/ 267 rsvp:rsbs/rsvp:rsb: 268 +--ro fspec-average-rate? rt-types:bandwidth-ieee-float32 269 +--ro fspec-size? rt-types:bandwidth-ieee-float32 270 +--ro fspec-peak-rate? rt-types:bandwidth-ieee-float32 271 +--ro min-policed-unit? uint32 272 +--ro max-packet-size? uint32 273 augment 274 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 275 rsvp:rsvp/rsvp:neighbors: 276 augment /te:te/te:tunnels/te:tunnel: 277 +--rw lsp-signaled-name? string 278 +--rw local-recording-desired? boolean 279 +--rw se-style-desired? boolean 280 +--rw path-reevaluation-request? boolean 281 +--rw soft-preemption-desired? boolean 282 +--rw lsp-rerouting? enumeration 283 +--rw lsp-integrity-required? boolean 284 +--rw lsp-contiguous? boolean 285 +--rw lsp-stitching-desired? boolean 286 +--rw lsp-preplanned? boolean 287 +--rw lsp-oob-mapping? boolean 288 +--rw retry-timer? uint16 290 augment /te:te/te:tunnels/te:tunnel/te:state: 291 +--ro lsp-signaled-name? string 292 +--ro local-recording-desired? boolean 293 +--ro se-style-desired? boolean 294 +--ro path-reevaluation-request? boolean 295 +--ro soft-preemption-desired? boolean 296 +--ro lsp-rerouting? enumeration 297 +--ro lsp-integrity-required? boolean 298 +--ro lsp-contiguous? boolean 299 +--ro lsp-stitching-desired? boolean 300 +--ro lsp-preplanned? boolean 301 +--ro lsp-oob-mapping? boolean 302 +--ro retry-timer? uint16 303 augment /te:te/te:lsps-state/te:lsp: 304 +--ro associated-rsvp-session? -> 305 /rt:routing/control-plane-protocols/control-plane-protocol/ 306 rsvp:rsvp/globals/sessions/session/local-index 307 +--ro lsp-signaled-name? string 308 +--ro local-recording-desired? boolean 309 +--ro se-style-desired? boolean 310 +--ro path-reevaluation-request? boolean 311 +--ro soft-preemption-desired? boolean 312 +--ro lsp-rerouting? enumeration 313 +--ro lsp-integrity-required? boolean 314 +--ro lsp-contiguous? boolean 315 +--ro lsp-stitching-desired? boolean 316 +--ro lsp-preplanned? boolean 317 +--ro lsp-oob-mapping? boolean 318 +--ro explicit-route-objects 319 | +--ro incoming-explicit-route-hop* [index] 320 | | +--ro index -> ../state/index 321 | | +--ro state 322 | | +--ro index? uint32 323 | | +--ro (type)? 324 | | +--:(numbered) 325 | | | +--ro numbered-hop 326 | | | +--ro address? te-types:te-tp-id 327 | | | +--ro hop-type? te-hop-type 328 | | | +--ro direction? te-link-direction 329 | | +--:(as-number) 330 | | | +--ro as-number-hop 331 | | | +--ro as-number? binary 332 | | | +--ro hop-type? te-hop-type 333 | | +--:(unnumbered) 334 | | | +--ro unnumbered-hop 335 | | | +--ro node-id? te-types:te-node-id 336 | | | +--ro link-tp-id? te-types:te-tp-id 337 | | | +--ro hop-type? te-hop-type 338 | | | +--ro direction? te-link-direction 339 | | +--:(label) 340 | | +--ro label-hop 341 | | +--ro te-label 342 | | +--ro (technology)? 343 | | | +--:(generic) 344 | | | +--ro generic? 345 rt-types:generalized-label 346 | | +--ro direction? te-label-direction 347 | +--ro outgoing-explicit-route-hop* [index] 348 | +--ro index -> ../state/index 349 | +--ro state 350 | +--ro index? uint32 351 | +--ro (type)? 352 | +--:(numbered) 353 | | +--ro numbered-hop 354 | | +--ro address? te-types:te-tp-id 355 | | +--ro hop-type? te-hop-type 356 | | +--ro direction? te-link-direction 357 | +--:(as-number) 358 | | +--ro as-number-hop 359 | | +--ro as-number? binary 360 | | +--ro hop-type? te-hop-type 361 | +--:(unnumbered) 362 | | +--ro unnumbered-hop 363 | | +--ro node-id? te-types:te-node-id 364 | | +--ro link-tp-id? te-types:te-tp-id 365 | | +--ro hop-type? te-hop-type 366 | | +--ro direction? te-link-direction 367 | +--:(label) 368 | +--ro label-hop 369 | +--ro te-label 370 | +--ro (technology)? 371 | | +--:(generic) 372 | | +--ro generic? 373 rt-types:generalized-label 374 | +--ro direction? te-label-direction 375 +--ro incoming-record-route-subobjects 376 | +--ro incoming-record-route-subobject* [index] 377 | +--ro index -> ../state/index 378 | +--ro state 379 | +--ro index? uint32 380 | +--ro (type)? 381 | +--:(numbered) 382 | | +--ro address? te-types:te-tp-id 383 | | +--ro ip-flags? binary 384 | +--:(unnumbered) 385 | | +--ro node-id? te-types:te-node-id 386 | | +--ro link-tp-id? te-types:te-tp-id 387 | +--:(label) 388 | +--ro value? rt-types:generalized-label 389 | +--ro label-flags? binary 390 +--ro outgoing-record-route-subobjects 391 +--ro outgoing-record-route-subobject* [index] 392 +--ro index -> ../state/index 393 +--ro state 394 +--ro index? uint32 395 +--ro (type)? 396 +--:(numbered) 397 | +--ro address? te-types:te-tp-id 398 | +--ro ip-flags? binary 399 +--:(unnumbered) 400 | +--ro node-id? te-types:te-node-id 401 | +--ro link-tp-id? te-types:te-tp-id 402 +--:(label) 403 +--ro value? rt-types:generalized-label 404 +--ro label-flags? binary 405 augment 406 /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-path/ 407 te:state/te:lsps/te:lsp: 408 +--ro associated-rsvp-session? -> 409 /rt:routing/control-plane-protocols/control-plane-protocol/ 410 rsvp:rsvp/globals/sessions/session/local-index 411 +--ro lsp-signaled-name? string 412 +--ro local-recording-desired? boolean 413 +--ro se-style-desired? boolean 414 +--ro path-reevaluation-request? boolean 415 +--ro soft-preemption-desired? boolean 416 +--ro lsp-rerouting? enumeration 417 +--ro lsp-integrity-required? boolean 418 +--ro lsp-contiguous? boolean 419 +--ro lsp-stitching-desired? boolean 420 +--ro lsp-preplanned? boolean 421 +--ro lsp-oob-mapping? boolean 422 +--ro explicit-route-objects 423 | +--ro incoming-explicit-route-hop* [index] 424 | | +--ro index -> ../state/index 425 | | +--ro state 426 | | +--ro index? uint32 427 | | +--ro (type)? 428 | | +--:(numbered) 429 | | | +--ro numbered-hop 430 | | | +--ro address? te-types:te-tp-id 431 | | | +--ro hop-type? te-hop-type 432 | | | +--ro direction? te-link-direction 433 | | +--:(as-number) 434 | | | +--ro as-number-hop 435 | | | +--ro as-number? binary 436 | | | +--ro hop-type? te-hop-type 437 | | +--:(unnumbered) 438 | | | +--ro unnumbered-hop 439 | | | +--ro node-id? te-types:te-node-id 440 | | | +--ro link-tp-id? te-types:te-tp-id 441 | | | +--ro hop-type? te-hop-type 442 | | | +--ro direction? te-link-direction 443 | | +--:(label) 444 | | +--ro label-hop 445 | | +--ro te-label 446 | | +--ro (technology)? 447 | | | +--:(generic) 448 | | | +--ro generic? 449 rt-types:generalized-label 450 | | +--ro direction? te-label-direction 451 | +--ro outgoing-explicit-route-hop* [index] 452 | +--ro index -> ../state/index 453 | +--ro state 454 | +--ro index? uint32 455 | +--ro (type)? 456 | +--:(numbered) 457 | | +--ro numbered-hop 458 | | +--ro address? te-types:te-tp-id 459 | | +--ro hop-type? te-hop-type 460 | | +--ro direction? te-link-direction 461 | +--:(as-number) 462 | | +--ro as-number-hop 463 | | +--ro as-number? binary 464 | | +--ro hop-type? te-hop-type 465 | +--:(unnumbered) 466 | | +--ro unnumbered-hop 467 | | +--ro node-id? te-types:te-node-id 468 | | +--ro link-tp-id? te-types:te-tp-id 469 | | +--ro hop-type? te-hop-type 470 | | +--ro direction? te-link-direction 471 | +--:(label) 472 | +--ro label-hop 473 | +--ro te-label 474 | +--ro (technology)? 475 | | +--:(generic) 476 | | +--ro generic? 477 rt-types:generalized-label 478 | +--ro direction? te-label-direction 479 +--ro incoming-record-route-subobjects 480 | +--ro incoming-record-route-subobject* [index] 481 | +--ro index -> ../state/index 482 | +--ro state 483 | +--ro index? uint32 484 | +--ro (type)? 485 | +--:(numbered) 486 | | +--ro address? te-types:te-tp-id 487 | | +--ro ip-flags? binary 488 | +--:(unnumbered) 489 | | +--ro node-id? te-types:te-node-id 490 | | +--ro link-tp-id? te-types:te-tp-id 491 | +--:(label) 492 | +--ro value? rt-types:generalized-label 493 | +--ro label-flags? binary 494 +--ro outgoing-record-route-subobjects 495 +--ro outgoing-record-route-subobject* [index] 496 +--ro index -> ../state/index 497 +--ro state 498 +--ro index? uint32 499 +--ro (type)? 500 +--:(numbered) 501 | +--ro address? te-types:te-tp-id 502 | +--ro ip-flags? binary 503 +--:(unnumbered) 504 | +--ro node-id? te-types:te-node-id 505 | +--ro link-tp-id? te-types:te-tp-id 506 +--:(label) 507 +--ro value? rt-types:generalized-label 508 +--ro label-flags? binary 509 augment 510 /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 511 te:p2p-secondary-path/te:state/te:lsps/te:lsp: 512 +--ro associated-rsvp-session? -> 513 /rt:routing/control-plane-protocols/control-plane-protocol/ 514 rsvp:rsvp/globals/sessions/session/local-index 515 +--ro lsp-signaled-name? string 516 +--ro local-recording-desired? boolean 517 +--ro se-style-desired? boolean 518 +--ro path-reevaluation-request? boolean 519 +--ro soft-preemption-desired? boolean 520 +--ro lsp-rerouting? enumeration 521 +--ro lsp-integrity-required? boolean 522 +--ro lsp-contiguous? boolean 523 +--ro lsp-stitching-desired? boolean 524 +--ro lsp-preplanned? boolean 525 +--ro lsp-oob-mapping? boolean 526 +--ro explicit-route-objects 527 | +--ro incoming-explicit-route-hop* [index] 528 | | +--ro index -> ../state/index 529 | | +--ro state 530 | | +--ro index? uint32 531 | | +--ro (type)? 532 | | +--:(numbered) 533 | | | +--ro numbered-hop 534 | | | +--ro address? te-types:te-tp-id 535 | | | +--ro hop-type? te-hop-type 536 | | | +--ro direction? te-link-direction 537 | | +--:(as-number) 538 | | | +--ro as-number-hop 539 | | | +--ro as-number? binary 540 | | | +--ro hop-type? te-hop-type 541 | | +--:(unnumbered) 542 | | | +--ro unnumbered-hop 543 | | | +--ro node-id? te-types:te-node-id 544 | | | +--ro link-tp-id? te-types:te-tp-id 545 | | | +--ro hop-type? te-hop-type 546 | | | +--ro direction? te-link-direction 547 | | +--:(label) 548 | | +--ro label-hop 549 | | +--ro te-label 550 | | +--ro (technology)? 551 | | | +--:(generic) 552 | | | +--ro generic? 553 rt-types:generalized-label 554 | | +--ro direction? te-label-direction 555 | +--ro outgoing-explicit-route-hop* [index] 556 | +--ro index -> ../state/index 557 | +--ro state 558 | +--ro index? uint32 559 | +--ro (type)? 560 | +--:(numbered) 561 | | +--ro numbered-hop 562 | | +--ro address? te-types:te-tp-id 563 | | +--ro hop-type? te-hop-type 564 | | +--ro direction? te-link-direction 565 | +--:(as-number) 566 | | +--ro as-number-hop 567 | | +--ro as-number? binary 568 | | +--ro hop-type? te-hop-type 569 | +--:(unnumbered) 570 | | +--ro unnumbered-hop 571 | | +--ro node-id? te-types:te-node-id 572 | | +--ro link-tp-id? te-types:te-tp-id 573 | | +--ro hop-type? te-hop-type 574 | | +--ro direction? te-link-direction 575 | +--:(label) 576 | +--ro label-hop 577 | +--ro te-label 578 | +--ro (technology)? 579 | | +--:(generic) 580 | | +--ro generic? 581 rt-types:generalized-label 582 | +--ro direction? te-label-direction 583 +--ro incoming-record-route-subobjects 584 | +--ro incoming-record-route-subobject* [index] 585 | +--ro index -> ../state/index 586 | +--ro state 587 | +--ro index? uint32 588 | +--ro (type)? 589 | +--:(numbered) 590 | | +--ro address? te-types:te-tp-id 591 | | +--ro ip-flags? binary 592 | +--:(unnumbered) 593 | | +--ro node-id? te-types:te-node-id 594 | | +--ro link-tp-id? te-types:te-tp-id 595 | +--:(label) 596 | +--ro value? rt-types:generalized-label 597 | +--ro label-flags? binary 598 +--ro outgoing-record-route-subobjects 599 +--ro outgoing-record-route-subobject* [index] 600 +--ro index -> ../state/index 601 +--ro state 602 +--ro index? uint32 603 +--ro (type)? 604 +--:(numbered) 605 | +--ro address? te-types:te-tp-id 606 | +--ro ip-flags? binary 607 +--:(unnumbered) 608 | +--ro node-id? te-types:te-node-id 609 | +--ro link-tp-id? te-types:te-tp-id 610 +--:(label) 611 +--ro value? rt-types:generalized-label 612 +--ro label-flags? binary 613 augment /te:te/te-dev:interfaces/te-dev:interface: 615 Figure 2: RSVP-TE model Tree diagram 617 2.2.2. YANG Module 619 file "ietf-rsvp-te@2018-02-19.yang" 620 module ietf-rsvp-te { 622 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te"; 624 prefix "rsvp-te"; 625 import ietf-rsvp { 626 prefix rsvp; 627 } 629 import ietf-routing { 630 prefix "rt"; 631 } 633 import ietf-routing-types { 634 prefix rt-types; 635 } 637 import ietf-te { 638 prefix te; 639 } 641 import ietf-te-device { 642 prefix te-dev; 643 } 645 /* Import TE generic types */ 646 import ietf-te-types { 647 prefix te-types; 648 } 650 organization 651 "IETF Traffic Engineering Architecture and Signaling (TEAS) 652 Working Group"; 654 contact 655 "WG Web: 656 WG List: 658 WG Chair: Lou Berger 659 661 WG Chair: Vishnu Pavan Beeram 662 664 Editor: Vishnu Pavan Beeram 665 667 Editor: Tarek Saad 668 670 Editor: Rakesh Gandhi 671 673 Editor: Himanshu Shah 674 676 Editor: Xufeng Liu 677 679 Editor: Xia Chen 680 682 Editor: Raqib Jones 683 685 Editor: Bin Wen 686 "; 688 description 689 "This module contains the RSVP-TE YANG generic data model."; 691 revision "2018-02-19" { 692 description "Latest revision to RSVP-TE generic YANG module"; 693 reference "RFC2205, RFC3209, etc."; 694 } 696 /** 697 * RSVP-TE LSPs groupings. 698 */ 700 grouping lsp-record-route-information_state { 701 description "recorded route information grouping"; 702 container incoming-record-route-subobjects { 703 description "RSVP recorded route object incoming information"; 704 list incoming-record-route-subobject { 705 when "../../te:origin-type != 'ingress'" { 706 description "Applicable on non-ingress LSPs only"; 707 } 708 key "index"; 709 description 710 "List of RSVP Path record-route objects"; 711 leaf index { 712 type leafref { 713 path "../state/index"; 714 } 715 description "RRO subobject index"; 716 } 717 container state { 718 config false; 719 description 720 "State parameters for the record route hop"; 721 uses te-types:record-route-subobject_state; 722 } 723 } 724 } 725 container outgoing-record-route-subobjects { 726 description "RSVP recorded route object outgoing information"; 727 list outgoing-record-route-subobject { 728 when "../../te:origin-type != 'egress'" { 729 description "Applicable on non-egress LSPs only"; 730 } 731 key "index"; 732 description 733 "List of RSVP Resv record-route objects"; 734 leaf index { 735 type leafref { 736 path "../state/index"; 737 } 738 description "RRO subobject index"; 739 } 740 container state { 741 config false; 742 description 743 "State parameters for the record route hop"; 744 uses te-types:record-route-subobject_state; 745 } 746 } 747 } 748 } 750 grouping lsp-explicit-route-information_state { 751 description "RSVP-TE LSP explicit-route information"; 752 container explicit-route-objects { 753 description "Explicit route object information"; 754 list incoming-explicit-route-hop { 755 when "../../te:origin-type != 'ingress'" { 756 description "Applicable on non-ingress LSPs only"; 757 } 758 key "index"; 759 description 760 "List of incoming RSVP Path explicit-route objects"; 761 leaf index { 762 type leafref { 763 path "../state/index"; 764 } 765 description "ERO subobject index"; 766 } 767 container state { 768 config false; 769 description 770 "State parameters for the explicit route hop"; 771 uses te-types:explicit-route-hop; 772 } 773 } 774 list outgoing-explicit-route-hop { 775 when "../../te:origin-type != 'egress'" { 776 description "Applicable on non-egress LSPs only"; 777 } 778 key "index"; 779 description 780 "List of outgoing RSVP Path explicit-route objects"; 781 leaf index { 782 type leafref { 783 path "../state/index"; 784 } 785 description "ERO subobject index"; 786 } 787 container state { 788 config false; 789 description 790 "State parameters for the explicit route hop"; 791 uses te-types:explicit-route-hop; 792 } 793 } 794 } 795 } 797 grouping lsp-attributes-flags_config { 798 description 799 "Configuration parameters relating to RSVP-TE LSP 800 attribute flags"; 801 leaf lsp-rerouting { 802 type enumeration { 803 enum end-to-end-routing { 804 description 805 "End-to-end routing desired"; 806 reference "RFC4920, RFC5420"; 807 } 808 enum boundary-rerouting { 809 description 810 "Boundary rerouting desired"; 811 reference "RFC4920, RFC5420"; 812 } 813 enum segment-based-rerouting { 814 description 815 "Segment-based rerouting desired"; 817 reference "RFC4920, RFC5420"; 818 } 819 } 820 description "LSP rerouting types"; 821 } 822 leaf lsp-integrity-required { 823 type boolean; 824 description "LSP integrity desired"; 825 reference "RFC4875"; 826 } 827 leaf lsp-contiguous { 828 type boolean; 829 description "Contiguous LSP"; 830 reference "RFC5151"; 831 } 832 leaf lsp-stitching-desired { 833 type boolean; 834 description "Stitched LSP"; 835 reference "RFC5150"; 836 } 837 leaf lsp-preplanned { 838 type boolean; 839 description "Preplanned LSP"; 840 reference "RFC6001"; 841 } 842 leaf lsp-oob-mapping { 843 type boolean; 844 description 845 "Mapping is done out-of-band"; 846 reference "RFC6511"; 847 } 848 } 850 grouping lsp-session-attributes-obj-flags_config { 851 description 852 "Configuration parameters relating to RSVP-TE LSP 853 session attribute flags"; 854 reference 855 "RFC4859: Registry for RSVP-TE Session Flags"; 856 leaf local-recording-desired { 857 type boolean; 858 description "Path recording is desired."; 859 reference "RFC3209"; 860 } 861 leaf se-style-desired { 862 type boolean; 863 description "SE Style desired"; 864 reference "RFC3209"; 866 } 867 leaf path-reevaluation-request { 868 type boolean; 869 description "Path re-evaluation request"; 870 reference "RFC4736"; 871 } 872 leaf soft-preemption-desired { 873 type boolean; 874 description "Soft-preemption is desired"; 875 reference "RFC5712"; 876 } 877 } 879 grouping lsp-properties_config { 880 description 881 "Configuration parameters relating to RSVP-TE LSP 882 session attribute flags"; 883 leaf lsp-signaled-name { 884 type string; 885 description 886 "Sets the session name to use in the session 887 attribute object."; 888 } 889 uses lsp-session-attributes-obj-flags_config; 890 uses lsp-attributes-flags_config; 891 } 893 grouping tunnel-properties_config { 894 description "RSVP-TE Tunnel properties grouping"; 895 leaf retry-timer { 896 type uint16 { 897 range 1..600; 898 } 899 units seconds; 900 description 901 "sets the time between attempts to establish the 902 LSP"; 903 } 904 } 906 /*** End of RSVP-TE LSP groupings ***/ 908 /** 909 * RSVP-TE generic global properties. 910 */ 912 grouping global-soft-preemption_config { 913 description 914 "Configuration for global RSVP-TE soft preemption"; 915 leaf soft-preemption-timeout { 916 type uint16 { 917 range 0..300; 918 } 919 default 0; 920 description 921 "Timeout value for soft preemption to revert 922 to hard preemption"; 923 } 924 } 926 grouping global-soft-preemption { 927 description 928 "Top level group for RSVP-TE soft-preemption"; 929 container global-soft-preemption { 930 presence "Enables soft preemption on a node."; 931 description 932 "Top level container for RSVP-TE soft-preemption"; 933 uses global-soft-preemption_config; 934 } 935 } 936 /*** End of RSVP-TE generic global properties. ***/ 938 /** 939 * RSVP-TE interface generic groupings. 940 */ 942 grouping rsvp-te-interface-attributes { 943 description 944 "Top level grouping for RSVP-TE interface properties."; 945 container rsvp-te-interface-attributes { 946 description 947 "Top level container for RSVP-TE interface 948 properties"; 949 container state { 950 config false; 951 description 952 "State information associated with RSVP-TE 953 bandwidth"; 954 } 955 } 956 } 957 /*** End of RSVP-TE generic groupings ***/ 959 /* RSVP-TE global properties */ 960 augment "/rt:routing/rt:control-plane-protocols/" 961 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals" { 962 description 963 "RSVP-TE augmentation to RSVP globals"; 964 uses global-soft-preemption; 965 } 967 /* Linkage to the base RSVP all links */ 968 augment "/rt:routing/rt:control-plane-protocols/" 969 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { 970 description 971 "RSVP-TE generic data augmentation pertaining to interfaces"; 972 uses rsvp-te-interface-attributes; 973 } 975 /* Linkage to per RSVP interface */ 976 augment "/rt:routing/rt:control-plane-protocols/" 977 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 978 "rsvp:interface" { 979 description 980 "RSVP-TE generic data augmentation pertaining to specific 981 interface"; 982 uses rsvp-te-interface-attributes; 983 } 985 /* add augmentation for sessions and neighbors */ 986 augment "/rt:routing/rt:control-plane-protocols/" 987 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" 988 + "rsvp:sessions/rsvp:session/rsvp:state/rsvp:psbs/rsvp:psb" { 989 description 990 "RSVP-TE generic data augmentation pertaining to session"; 991 /* To be added */ 992 leaf tspec-average-rate { 993 type rt-types:bandwidth-ieee-float32; 994 units "Bytes per second"; 995 description "Tspec Token Bucket Average Rate"; 996 reference "RFC2210: RSVP with INTSERV"; 997 } 998 leaf tspec-size { 999 type rt-types:bandwidth-ieee-float32; 1000 units "Bytes per second"; 1001 description "Tspec Token Bucket Burst Rate"; 1002 reference "RFC2210"; 1003 } 1004 leaf tspec-peak-rate { 1005 type rt-types:bandwidth-ieee-float32; 1006 units "Bytes per second"; 1007 description "Tspec Token Bucket Peak Data Rate"; 1008 reference "RFC2210"; 1010 } 1011 leaf min-policed-unit { 1012 type uint32; 1013 description "Tspec Minimum Policed Unit"; 1014 reference "RFC2210"; 1015 } 1016 leaf max-packet-size { 1017 type uint32; 1018 description "Tspec Maximum Packet Size"; 1019 reference "RFC2210"; 1020 } 1021 } 1022 augment "/rt:routing/rt:control-plane-protocols/" 1023 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" 1024 + "rsvp:sessions/rsvp:session/rsvp:state/rsvp:rsbs/rsvp:rsb" { 1025 description 1026 "RSVP-TE generic data augmentation pertaining to session"; 1027 leaf fspec-average-rate { 1028 type rt-types:bandwidth-ieee-float32; 1029 units "Bytes per second"; 1030 description "Fspec Token Bucket Average Rate"; 1031 reference "RFC2210"; 1032 } 1033 leaf fspec-size { 1034 type rt-types:bandwidth-ieee-float32; 1035 units "Bytes per second"; 1036 description "Fspec Token Bucket Burst Rate"; 1037 reference "RFC2210"; 1038 } 1039 leaf fspec-peak-rate { 1040 type rt-types:bandwidth-ieee-float32; 1041 units "Bytes per second"; 1042 description "Fspec Token Bucket Peak Data Rate"; 1043 reference "RFC2210"; 1044 } 1045 leaf min-policed-unit { 1046 type uint32; 1047 description "Fspec Minimum Policed Unit"; 1048 reference "RFC2210"; 1049 } 1050 leaf max-packet-size { 1051 type uint32; 1052 description "Fspec Maximum Packet Size"; 1053 reference "RFC2210"; 1054 } 1055 } 1057 augment "/rt:routing/rt:control-plane-protocols/" 1058 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors" { 1059 description 1060 "RSVP-TE generic data augmentation pertaining to neighbors"; 1061 /* To be added */ 1062 } 1064 /** 1065 * RSVP-TE generic augmentations of generic TE model. 1066 */ 1068 /* TE tunnel augmentation */ 1069 augment "/te:te/te:tunnels/te:tunnel" { 1070 when "/te:te/te:tunnels/te:tunnel" + 1071 "/te:p2p-primary-paths/te:p2p-primary-path" + 1072 "/te:path-setup-protocol = 'te-types:path-setup-rsvp'" { 1073 description 1074 "When the path signaling protocol is RSVP-TE "; 1075 } 1076 description 1077 "RSVP-TE generic data augmentation pertaining to TE tunnels"; 1078 uses lsp-properties_config; 1079 uses tunnel-properties_config; 1080 } 1082 augment "/te:te/te:tunnels/te:tunnel/te:state" { 1083 when "/te:te/te:tunnels/te:tunnel" + 1084 "/te:p2p-primary-paths/te:p2p-primary-path" + 1085 "/te:path-setup-protocol = 'te-types:path-setup-rsvp'" { 1086 description 1087 "When the path signaling protocol is RSVP-TE "; 1088 } 1089 description 1090 "RSVP-TE generic data augmentation pertaining to TE tunnels"; 1091 uses lsp-properties_config; 1092 uses tunnel-properties_config; 1093 } 1095 /* TE LSP augmentation */ 1096 grouping rsvp-te-lsp-properties { 1097 description "RSVP-TE LSP properties grouping"; 1098 leaf associated-rsvp-session { 1099 type leafref { 1100 path "/rt:routing/rt:control-plane-protocols/" 1101 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" 1102 + "rsvp:sessions/rsvp:session/rsvp:local-index"; 1103 } 1104 description 1105 "If the signalling protocol specified for this path is 1106 RSVP-TE, this leaf provides a reference to the associated 1107 session within the RSVP-TE protocol sessions list, such 1108 that details of the signaling can be retrieved."; 1109 } 1111 uses lsp-properties_config; 1112 uses lsp-explicit-route-information_state; 1113 uses lsp-record-route-information_state; 1114 } 1116 augment "/te:te/te:lsps-state/te:lsp" { 1117 when "/te:te/te:lsps-state/te:lsp" + 1118 "/te:path-setup-protocol = 'te-types:path-setup-rsvp'" { 1119 description 1120 "When the signaling protocol is RSVP-TE "; 1121 } 1122 description 1123 "RSVP-TE generic data augmentation pertaining to specific TE 1124 LSP"; 1125 uses rsvp-te-lsp-properties; 1126 } 1128 augment "/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths" + 1129 "/te:p2p-primary-path/te:state/te:lsps/te:lsp" { 1130 when "/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths" + 1131 "/te:p2p-primary-path/te:state/te:lsps/te:lsp" + 1132 "/te:path-setup-protocol = 'te-types:path-setup-rsvp'" { 1133 description 1134 "When the signaling protocol is RSVP-TE "; 1135 } 1136 description 1137 "RSVP-TE generic data augmentation pertaining to specific TE 1138 LSP"; 1139 uses rsvp-te-lsp-properties; 1140 } 1142 augment "/te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths" + 1143 "/te:p2p-secondary-path/te:state/te:lsps/te:lsp" { 1144 when "/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths" + 1145 "/te:p2p-primary-path/te:state/te:lsps/te:lsp" + 1146 "/te:path-setup-protocol = 'te-types:path-setup-rsvp'" { 1147 description 1148 "When the signaling protocol is RSVP-TE "; 1149 } 1150 description 1151 "RSVP-TE generic data augmentation pertaining to specific TE 1152 LSP"; 1153 uses rsvp-te-lsp-properties; 1155 } 1157 /* TE interface augmentation */ 1158 augment "/te:te/te-dev:interfaces/te-dev:interface" { 1159 description 1160 "RSVP-TE generic data augmentation pertaining to specific TE 1161 interface"; 1162 } 1163 } 1164 1166 Figure 3: RSVP TE generic YANG module 1168 2.3. RSVP-TE MPLS Model 1170 The MPLS RSVP-TE YANG module augments the RSVP-TE generic module with 1171 parameters to configure and manage signaling of MPLS RSVP-TE LSPs. 1172 RSVP-TE YANG modules for other dataplane technologies (e.g. OTN or 1173 WDM) are outside the scope of this document and are defined in other 1174 documents. 1176 2.3.1. Tree Diagram 1178 The following are possible types of configuration and state data 1179 nodes in this module: 1181 o those augmenting or extending the generic RSVP-TE module 1183 o those augmenting or extending the TE module 1185 o those that are specific to the RSVP-TE MPLS module 1187 Below is a YANG tree representation for data items defined in the 1188 RSVP-TE MPLS module: 1190 module: ietf-rsvp-te-mpls 1191 augment /rt:routing/rt:control-plane-protocols/ 1192 rt:control-plane-protocol/rsvp:rsvp: 1193 +--rw fast-reroute-local-revertive 1194 +--rw rsvp-frr-local-revert-delay? uint32 1195 augment /rt:routing/rt:control-plane-protocols/ 1196 rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces: 1197 augment /rt:routing/rt:control-plane-protocols/ 1198 rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:interface: 1199 augment /rt:routing/rt:control-plane-protocols/ 1200 rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/ 1201 rsvp:sessions/rsvp:session/rsvp:state: 1202 augment /rt:routing/rt:control-plane-protocols/ 1203 rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors: 1204 augment /te:te/te:tunnels/te:tunnel: 1205 +--rw local-protection-desired? empty 1206 +--rw bandwidth-protection-desired? empty 1207 +--rw node-protection-desired? empty 1208 +--rw non-php-desired? empty 1209 +--rw entropy-label-cap? empty 1210 +--rw oam-mep-entities-desired? empty 1211 +--rw oam-mip-entities-desired? empty 1212 augment /te:te/te:lsps-state/te:lsp: 1213 +--ro state 1214 | +--ro local-protection-desired? empty 1215 | +--ro bandwidth-protection-desired? empty 1216 | +--ro node-protection-desired? empty 1217 | +--ro non-php-desired? empty 1218 | +--ro entropy-label-cap? empty 1219 | +--ro oam-mep-entities-desired? empty 1220 | +--ro oam-mip-entities-desired? empty 1221 +--ro backup-info 1222 +--ro state 1223 +--ro backup-tunnel-name? string 1224 +--ro backup-frr-on? uint8 1225 +--ro backup-protected-lsp-num? uint32 1226 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ 1227 te:p2p-primary-path/te:state/te:lsps/te:lsp: 1228 +--ro state 1229 | +--ro local-protection-desired? empty 1230 | +--ro bandwidth-protection-desired? empty 1231 | +--ro node-protection-desired? empty 1232 | +--ro non-php-desired? empty 1233 | +--ro entropy-label-cap? empty 1234 | +--ro oam-mep-entities-desired? empty 1235 | +--ro oam-mip-entities-desired? empty 1236 +--ro backup-info 1237 +--ro state 1238 +--ro backup-tunnel-name? string 1239 +--ro backup-frr-on? uint8 1240 +--ro backup-protected-lsp-num? uint32 1241 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ 1242 te:p2p-secondary-path/te:state/te:lsps/te:lsp: 1243 +--ro state 1244 | +--ro local-protection-desired? empty 1245 | +--ro bandwidth-protection-desired? empty 1246 | +--ro node-protection-desired? empty 1247 | +--ro non-php-desired? empty 1248 | +--ro entropy-label-cap? empty 1249 | +--ro oam-mep-entities-desired? empty 1250 | +--ro oam-mip-entities-desired? empty 1251 +--ro backup-info 1252 +--ro state 1253 +--ro backup-tunnel-name? string 1254 +--ro backup-frr-on? uint8 1255 +--ro backup-protected-lsp-num? uint32 1256 augment /te:te/te-dev:interfaces/te-dev:interface: 1257 +--rw bandwidth-mpls-reservable 1258 +--rw (bandwidth-value)? 1259 | +--:(absolute) 1260 | | +--rw absolute-value? uint32 1261 | +--:(percentage) 1262 | +--rw percent-value? uint32 1263 +--rw (bc-model-type)? 1264 +--:(bc-model-rdm) 1265 | +--rw bc-model-rdm 1266 | +--rw bandwidth-mpls-constraints 1267 | +--rw maximum-reservable? uint32 1268 | +--rw bc-value* uint32 1269 +--:(bc-model-mam) 1270 | +--rw bc-model-mam 1271 | +--rw bandwidth-mpls-constraints 1272 | +--rw maximum-reservable? uint32 1273 | +--rw bc-value* uint32 1274 +--:(bc-model-mar) 1275 +--rw bc-model-mar 1276 +--rw bandwidth-mpls-constraints 1277 +--rw maximum-reservable? uint32 1278 +--rw bc-value* uint32 1279 augment /te:te/te-dev:interfaces/te-dev:interface: 1280 +--rw rsvp-te-frr-backups 1281 +--rw (type)? 1282 +--:(static-tunnel) 1283 | +--rw static-backups 1284 | +--rw static-backup* [backup-tunnel-name] 1285 | +--rw backup-tunnel-name -> 1286 /te:te/tunnels/tunnel/name 1287 +--:(auto-tunnel) 1288 +--rw auto-tunnel-backups 1289 +--rw auto-backup-protection? identityref 1290 +--rw auto-backup-path-computation? identityref 1292 Figure 4: RSVP-TE MPLS Tree diagram 1294 2.3.2. YANG Module 1296 file "ietf-rsvp-te-mpls@2018-02-19.yang" 1297 module ietf-rsvp-te-mpls { 1298 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls"; 1300 prefix "rsvp-te-mpls"; 1302 import ietf-rsvp { 1303 prefix "rsvp"; 1304 } 1306 import ietf-routing { 1307 prefix "rt"; 1308 } 1310 import ietf-te-mpls-types { 1311 prefix "te-mpls-types"; 1312 } 1314 import ietf-te-types { 1315 prefix "te-types"; 1316 } 1318 import ietf-te { 1319 prefix "te"; 1320 } 1322 import ietf-te-device { 1323 prefix "te-dev"; 1324 } 1326 organization 1327 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1328 Working Group"; 1330 contact 1331 "WG Web: 1332 WG List: 1334 WG Chair: Lou Berger 1335 1337 WG Chair: Vishnu Pavan Beeram 1338 1340 Editor: Vishnu Pavan Beeram 1341 1343 Editor: Tarek Saad 1344 1346 Editor: Rakesh Gandhi 1347 1349 Editor: Himanshu Shah 1350 1352 Editor: Xufeng Liu 1353 1355 Editor: Xia Chen 1356 1358 Editor: Raqib Jones 1359 1361 Editor: Bin Wen 1362 "; 1364 description 1365 "Latest update to MPLS RSVP-TE YANG data model."; 1367 revision "2018-02-19" { 1368 description "Update to MPLS RSVP-TE YANG initial revision."; 1369 reference "RFC3209, RFC6511, RFC6790, RFC7260, RFC4859, RFC4090"; 1370 } 1372 /* RSVP-TE MPLS LSPs groupings */ 1373 grouping lsp-attributes-flags-mpls_config { 1374 description 1375 "Configuration parameters relating to RSVP-TE MPLS LSP 1376 attribute flags"; 1377 leaf non-php-desired { 1378 type empty; 1379 description 1380 "Non-PHP is desired"; 1381 reference "RFC6511"; 1382 } 1383 leaf entropy-label-cap { 1384 type empty; 1385 description "Entropy label capability"; 1386 reference "RFC6790"; 1387 } 1388 leaf oam-mep-entities-desired { 1389 type empty; 1390 description "OAM MEP entities desired"; 1391 reference "RFC7260"; 1392 } 1393 leaf oam-mip-entities-desired { 1394 type empty; 1395 description "OAM MIP entities desired"; 1396 reference "RFC7260"; 1397 } 1398 } 1400 grouping lsp-session-attributes-obj-flags-mpls_config { 1401 description 1402 "Configuration parameters relating to RSVP-TE MPLS LSP 1403 session attribute flags"; 1404 reference 1405 "RFC4859: Registry for RSVP-TE Session Flags"; 1406 leaf local-protection-desired { 1407 type empty; 1408 description "Fastreroute local protection is desired."; 1409 reference 1410 "RFC4859: Registry for RSVP-TE Session Flags"; 1411 } 1412 leaf bandwidth-protection-desired { 1413 type empty; 1414 description 1415 "Request FRR bandwidth protection on LSRs if 1416 present."; 1417 reference "RFC4090"; 1418 } 1419 leaf node-protection-desired { 1420 type empty; 1421 description 1422 "Request FRR node protection on LSRs if 1423 present."; 1424 reference "RFC4090"; 1425 } 1426 } 1428 grouping tunnel-properties-mpls_config { 1429 description 1430 "Top level grouping for LSP properties."; 1431 uses lsp-session-attributes-obj-flags-mpls_config; 1432 uses lsp-attributes-flags-mpls_config; 1433 } 1435 grouping lsp-properties-mpls { 1436 description 1437 "Top level grouping for LSP properties."; 1438 container state { 1439 config false; 1440 description 1441 "Configuration applied parameters and state"; 1443 uses lsp-session-attributes-obj-flags-mpls_config; 1444 uses lsp-attributes-flags-mpls_config; 1445 } 1446 } 1447 /* End of RSVP-TE MPLS LSPs groupings */ 1449 /* MPLS RSVP-TE interface groupings */ 1450 grouping rsvp-te-interface_state { 1451 description 1452 "The RSVP-TE interface state grouping"; 1453 leaf over-subscribed-bandwidth { 1454 type uint32; 1455 description 1456 "The amount of over-subscribed bandwidth on 1457 the interface"; 1458 } 1459 } 1461 grouping rsvp-te-interface-softpreemption_state { 1462 description 1463 "The RSVP-TE interface preeemptions state grouping"; 1464 container interface-softpreemption-state { 1465 description 1466 "The RSVP-TE interface preeemptions state grouping"; 1467 leaf soft-preempted-bandwidth { 1468 type uint32; 1469 description 1470 "The amount of soft-preempted bandwidth on 1471 this interface"; 1472 } 1473 list lsps { 1474 key 1475 "source destination tunnel-id lsp-id "+ 1476 "extended-tunnel-id"; 1477 description 1478 "List of LSPs that are soft-preempted"; 1479 leaf source { 1480 type leafref { 1481 path "/te:te/te:lsps-state/te:lsp/"+ 1482 "te:source"; 1483 } 1484 description 1485 "Tunnel sender address extracted from 1486 SENDER_TEMPLATE object"; 1487 reference "RFC3209"; 1488 } 1489 leaf destination { 1490 type leafref { 1491 path "/te:te/te:lsps-state/te:lsp/"+ 1492 "te:destination"; 1493 } 1494 description 1495 "Tunnel endpoint address extracted from 1496 SESSION object"; 1497 reference "RFC3209"; 1498 } 1499 leaf tunnel-id { 1500 type leafref { 1501 path "/te:te/te:lsps-state/te:lsp/"+ 1502 "te:tunnel-id"; 1503 } 1504 description 1505 "Tunnel identifier used in the SESSION 1506 that remains constant over the life 1507 of the tunnel."; 1508 reference "RFC3209"; 1509 } 1510 leaf lsp-id { 1511 type leafref { 1512 path "/te:te/te:lsps-state/te:lsp/"+ 1513 "te:lsp-id"; 1514 } 1515 description 1516 "Identifier used in the SENDER_TEMPLATE 1517 and the FILTER_SPEC that can be changed 1518 to allow a sender to share resources with 1519 itself."; 1520 reference "RFC3209"; 1521 } 1522 leaf extended-tunnel-id { 1523 type leafref { 1524 path "/te:te/te:lsps-state/te:lsp/"+ 1525 "te:extended-tunnel-id"; 1526 } 1527 description 1528 "Extended Tunnel ID of the LSP."; 1529 reference "RFC3209"; 1530 } 1531 leaf type { 1532 type leafref { 1533 path "/te:te/te:lsps-state/te:lsp/"+ 1534 "te:type"; 1535 } 1536 description "LSP type P2P or P2MP"; 1537 } 1538 } 1540 } 1541 } 1543 grouping bandwidth-mpls-constraints { 1544 description "Bandwidth constraints."; 1545 container bandwidth-mpls-constraints { 1546 description 1547 "Holds the bandwidth constraints properties"; 1548 leaf maximum-reservable { 1549 type uint32 { 1550 range "0..4294967295"; 1551 } 1552 description 1553 "The maximum reservable bandwidth on the 1554 interface"; 1555 } 1556 leaf-list bc-value { 1557 type uint32 { 1558 range "0..4294967295"; 1559 } 1560 max-elements 8; 1561 description 1562 "The bandwidth constraint type"; 1563 } 1564 } 1565 } 1567 grouping bandwidth-constraint-values { 1568 description 1569 "Packet bandwidth contraints values"; 1570 choice value-type { 1571 description 1572 "Value representation"; 1573 case percentages { 1574 container perc-values { 1575 uses bandwidth-mpls-constraints; 1576 description 1577 "Percentage values"; 1578 } 1579 } 1580 case absolutes { 1581 container abs-values { 1582 uses bandwidth-mpls-constraints; 1583 description 1584 "Absolute values"; 1585 } 1586 } 1587 } 1589 } 1591 grouping bandwidth-mpls-reservable_config { 1592 description 1593 "Interface bandwidth reservable configuration grouping"; 1594 choice bandwidth-value { 1595 description "Reservable bandwidth configuration choice"; 1596 case absolute { 1597 leaf absolute-value { 1598 type uint32; 1599 description "Absolute value of the bandwidth"; 1600 } 1601 } 1602 case percentage { 1603 leaf percent-value { 1604 type uint32 { 1605 range "0..4294967295"; 1606 } 1607 description "Percentage reservable bandwidth"; 1608 } 1609 description 1610 "The maximum reservable bandwidth on the 1611 interface"; 1612 } 1613 } 1614 choice bc-model-type { 1615 description 1616 "Reservable bandwidth percentage capacity 1617 values."; 1618 case bc-model-rdm { 1619 container bc-model-rdm { 1620 description 1621 "Russian Doll Model Bandwidth Constraints."; 1622 uses bandwidth-mpls-constraints; 1623 } 1624 } 1625 case bc-model-mam { 1626 container bc-model-mam { 1627 uses bandwidth-mpls-constraints; 1628 description 1629 "Maximum Allocation Model Bandwidth 1630 Constraints."; 1631 } 1632 } 1633 case bc-model-mar { 1634 container bc-model-mar { 1635 uses bandwidth-mpls-constraints; 1636 description 1637 "Maximum Allocation with Reservation Model 1638 Bandwidth Constraints."; 1639 } 1640 } 1641 } 1642 } 1644 grouping bandwidth-mpls-reservable { 1645 description 1646 "Packet reservable bandwidth"; 1647 container bandwidth-mpls-reservable { 1648 description 1649 "Interface bandwidth reservable container"; 1650 uses bandwidth-mpls-reservable_config; 1651 } 1652 } 1653 /* End of RSVP-TE interface groupings */ 1655 /* RSVP-TE FRR groupings */ 1656 grouping rsvp-te-frr-auto-tunnel-backup_config { 1657 description 1658 "Auto-tunnel backup configuration grouping"; 1659 leaf auto-backup-protection { 1660 type identityref { 1661 base te-mpls-types:backup-protection-type; 1662 } 1663 default 1664 te-mpls-types:backup-protection-node-link; 1665 description 1666 "Describes whether the backup should offer 1667 protection against link, node, or either"; 1668 } 1669 leaf auto-backup-path-computation { 1670 type identityref { 1671 base 1672 te-types:path-computation-srlg-type; 1673 } 1674 description 1675 "FRR backup computation type"; 1676 } 1677 } 1679 grouping rsvp-te-frr-backups_config { 1680 description 1681 "Top level container for RSVP-TE FRR backup parameters"; 1682 choice type { 1683 description 1684 "FRR backup tunnel type"; 1686 case static-tunnel { 1687 container static-backups { 1688 description "List of static backups"; 1689 list static-backup { 1690 key "backup-tunnel-name"; 1691 description 1692 "List of static backup tunnels that 1693 protect the RSVP-TE interface."; 1694 leaf backup-tunnel-name { 1695 type leafref { 1696 path "/te:te/te:tunnels/te:tunnel/te:name"; 1697 } 1698 description "FRR Backup tunnel name"; 1699 } 1700 } 1701 } 1702 } 1703 case auto-tunnel { 1704 container auto-tunnel-backups { 1705 description "Auto-tunnel choice"; 1706 uses rsvp-te-frr-auto-tunnel-backup_config; 1707 } 1708 } 1709 } 1710 } 1712 grouping rsvp-te-frr-backups { 1713 description 1714 "RSVP-TE facility backup grouping"; 1715 container rsvp-te-frr-backups { 1716 description 1717 "RSVP-TE facility backup properties"; 1718 uses rsvp-te-frr-backups_config; 1719 } 1720 } 1722 grouping lsp-backup-info_state { 1723 description "LSP backup information grouping"; 1724 leaf backup-tunnel-name { 1725 type string; 1726 description 1727 "If an LSP has an FRR backup LSP that can protect it, 1728 this field identifies the tunnel name of the backup LSP. 1729 Otherwise, this field is empty."; 1730 } 1731 leaf backup-frr-on { 1732 type uint8; 1733 description 1734 "Whether currently this backup is carrying traffic"; 1735 } 1736 leaf backup-protected-lsp-num { 1737 type uint32; 1738 description 1739 "Number of LSPs protected by this backup"; 1740 } 1741 } 1743 grouping lsp-backup-info { 1744 description "Backup/bypass LSP related information"; 1745 container backup-info { 1746 description 1747 "backup information"; 1748 container state { 1749 config false; 1750 description 1751 "Configuration applied parameters and state"; 1752 uses lsp-backup-info_state; 1753 } 1754 } 1755 } 1757 grouping fast-reroute-local-revertive_config { 1758 description "RSVP-TE FRR local revertive grouping"; 1759 leaf rsvp-frr-local-revert-delay { 1760 type uint32; 1761 description 1762 "Time to wait after primary link is restored 1763 before node attempts local revertive 1764 procedures."; 1765 } 1766 } 1768 /*** End of RSVP-TE FRR backup information ***/ 1770 grouping fast-reroute-local-revertive { 1771 description 1772 "Top level grouping for globals properties"; 1773 container fast-reroute-local-revertive { 1774 description "RSVP-TE FRR local revertive container"; 1775 uses fast-reroute-local-revertive_config; 1776 } 1777 } 1779 /* RSVP-TE global properties */ 1780 augment "/rt:routing/rt:control-plane-protocols/" 1781 + "rt:control-plane-protocol/rsvp:rsvp" { 1782 description 1783 "RSVP-TE augmentation to RSVP globals"; 1784 uses fast-reroute-local-revertive; 1785 } 1787 /* Linkage to the base RSVP all interfaces */ 1788 augment "/rt:routing/rt:control-plane-protocols/" 1789 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { 1790 description 1791 "Augmentations for RSVP-TE MPLS all interfaces properties"; 1792 /* To be added */ 1793 } 1795 /* Linkage to per RSVP interface */ 1796 augment "/rt:routing/rt:control-plane-protocols/" 1797 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 1798 "rsvp:interface" { 1799 description 1800 "Augmentations for RSVP-TE MPLS per interface properties"; 1801 /* To be added */ 1802 } 1804 /* add augmentation for sessions neighbors */ 1805 augment "/rt:routing/rt:control-plane-protocols/" 1806 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" 1807 + "rsvp:sessions/rsvp:session/rsvp:state" { 1808 description 1809 "Augmentations for RSVP-TE MPLS sessions"; 1810 /* To be added */ 1811 } 1813 augment "/rt:routing/rt:control-plane-protocols/" 1814 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors" { 1815 description 1816 "Augmentations for RSVP-TE MPLS neighbors properties"; 1817 /* To be added */ 1818 } 1820 /** 1821 * Augmentation to TE generic module 1822 */ 1823 augment "/te:te/te:tunnels/te:tunnel" { 1824 description 1825 "Augmentations for RSVP-TE MPLS TE tunnel properties"; 1826 uses tunnel-properties-mpls_config; 1827 } 1829 augment "/te:te/te:lsps-state/te:lsp" { 1830 when "/te:te/te:lsps-state/te:lsp" + 1831 "/te:path-setup-protocol = 'te-types:path-setup-rsvp'" { 1832 description 1833 "When the signaling protocol is RSVP-TE "; 1834 } 1835 description 1836 "RSVP-TE MPLS LSP state properties"; 1837 uses lsp-properties-mpls; 1838 uses lsp-backup-info; 1839 } 1841 augment "/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths" + 1842 "/te:p2p-primary-path/te:state/te:lsps/te:lsp" { 1843 when "/te:te/te:tunnels/te:tunnel" + 1844 "/te:p2p-secondary-paths/te:p2p-secondary-path/" + 1845 "te:path-setup-protocol = 'te-types:path-setup-rsvp'" { 1846 description 1847 "When the signaling protocol is RSVP-TE "; 1848 } 1849 description 1850 "RSVP-TE MPLS LSP state properties"; 1851 uses lsp-properties-mpls; 1852 uses lsp-backup-info; 1853 } 1855 augment "/te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths" + 1856 "/te:p2p-secondary-path/te:state/te:lsps/te:lsp" { 1857 when "/te:te/te:tunnels/te:tunnel" + 1858 "/te:p2p-secondary-paths/te:p2p-secondary-path/" + 1859 "te:path-setup-protocol = 'te-types:path-setup-rsvp'" { 1860 description 1861 "When the signaling protocol is RSVP-TE "; 1862 } 1863 description 1864 "RSVP-TE MPLS LSP state properties"; 1865 uses lsp-properties-mpls; 1866 uses lsp-backup-info; 1867 } 1869 augment "/te:te/te-dev:interfaces/te-dev:interface" { 1870 description 1871 "RSVP reservable bandwidth configuration properties"; 1872 uses bandwidth-mpls-reservable; 1873 } 1875 augment "/te:te/te-dev:interfaces/te-dev:interface" { 1876 description 1877 "RSVP reservable bandwidth configuration properties"; 1879 uses rsvp-te-frr-backups; 1880 } 1881 } 1882 1884 Figure 5: RSVP TE MPLS YANG module 1886 Figure 5 shows the YANG tree representation of the RSVP TE MPLS 1887 module that augments RSVP-TE module as well as RSVP and TE YANG 1888 modules. 1890 3. IANA Considerations 1892 This document registers the following URIs in the IETF XML registry 1893 [RFC3688]. Following the format in [RFC3688], the following 1894 registration is requested to be made. 1896 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-te XML: N/A, the requested 1897 URI is an XML namespace. 1899 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls XML: N/A, the 1900 requested URI is an XML namespace. 1902 This document registers a YANG module in the YANG Module Names 1903 registry [RFC6020]. 1905 name: ietf-rsvp namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp-te 1906 prefix: ietf-rsvp reference: RFC3209 1908 name: ietf-rsvp-te namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp- 1909 te-mpls prefix: ietf-rsvp-te reference: RFC3209 1911 4. Security Considerations 1913 The YANG module defined in this memo is designed to be accessed via 1914 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 1915 secure transport layer and the mandatory-to-implement secure 1916 transport is SSH [RFC6242]. The NETCONF access control model 1917 [RFC6536] provides means to restrict access for particular NETCONF 1919 users to a pre-configured subset of all available NETCONF protocol 1920 operations and content. 1922 There are a number of data nodes defined in the YANG module which are 1923 writable/creatable/deletable (i.e., config true, which is the 1924 default). These data nodes may be considered sensitive or vulnerable 1925 in some network environments. Write operations (e.g., ) 1926 to these data nodes without proper protection can have a negative 1927 effect on network operations. 1929 5. Acknowledgement 1931 The authors would like to thank Lou Berger for reviewing and 1932 providing valuable feedback on this document. 1934 6. Contributors 1936 Xia Chen 1937 Huawei Technologies 1939 Email: jescia.chenxia@huawei.com 1941 Raqib Jones 1942 Brocade 1944 Email: raqib@Brocade.com 1946 Bin Wen 1947 Comcast 1949 Email: Bin_Wen@cable.comcast.com 1951 7. Normative References 1953 [I-D.ietf-teas-yang-rsvp] 1954 Beeram, V., Saad, T., Gandhi, R., Liu, X., Bryskin, I., 1955 and H. Shah, "A YANG Data Model for Resource Reservation 1956 Protocol (RSVP)", draft-ietf-teas-yang-rsvp-08 (work in 1957 progress), October 2017. 1959 [I-D.ietf-teas-yang-te] 1960 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and 1961 I. Bryskin, "A YANG Data Model for Traffic Engineering 1962 Tunnels and Interfaces", draft-ietf-teas-yang-te-11 (work 1963 in progress), February 2018. 1965 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1966 Requirement Levels", BCP 14, RFC 2119, 1967 DOI 10.17487/RFC2119, March 1997, 1968 . 1970 [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S. 1971 Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 1972 Functional Specification", RFC 2205, DOI 10.17487/RFC2205, 1973 September 1997, . 1975 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 1976 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 1977 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 1978 . 1980 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1981 DOI 10.17487/RFC3688, January 2004, 1982 . 1984 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1985 the Network Configuration Protocol (NETCONF)", RFC 6020, 1986 DOI 10.17487/RFC6020, October 2010, 1987 . 1989 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1990 and A. Bierman, Ed., "Network Configuration Protocol 1991 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1992 . 1994 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1995 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1996 . 1998 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1999 Protocol (NETCONF) Access Control Model", RFC 6536, 2000 DOI 10.17487/RFC6536, March 2012, 2001 . 2003 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2004 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2005 . 2007 Authors' Addresses 2009 Vishnu Pavan Beeram 2010 Juniper Networks 2012 Email: vbeeram@juniper.net 2013 Tarek Saad (editor) 2014 Cisco Systems, Inc. 2016 Email: tsaad@cisco.com 2018 Rakesh Gandhi 2019 Cisco Systems, Inc. 2021 Email: rgandhi@cisco.com 2023 Xufeng Liu 2024 Jabil 2026 Email: Xufeng_Liu@jabil.com 2028 Igor Bryskin 2029 Huawei Technologies 2031 Email: Igor.Bryskin@huawei.com 2033 Himanshu Shah 2034 Ciena 2036 Email: hshah@ciena.com