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