idnits 2.17.1 draft-ietf-teas-yang-rsvp-te-00.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 (March 10, 2017) is 2603 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-06 == Outdated reference: A later version (-36) exists of draft-ietf-teas-yang-te-05 ** 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: September 11, 2017 R. Gandhi 6 Cisco Systems, Inc. 7 X. Liu 8 Jabil 9 I. Bryskin 10 Huawei Technologies 11 H. Shah 12 Ciena 13 March 10, 2017 15 A YANG Data Model for RSVP-TE 16 draft-ietf-teas-yang-rsvp-te-00 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 September 11, 2017. 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. Data Organization . . . . . . . . . . . . . . . . . . . . 5 74 2.3. RSVP-TE Generic Model . . . . . . . . . . . . . . . . . . 6 75 2.3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 6 76 2.3.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 11 77 2.4. RSVP-TE MPLS Model . . . . . . . . . . . . . . . . . . . 21 78 2.4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 21 79 2.4.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 24 80 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 37 81 4. Security Considerations . . . . . . . . . . . . . . . . . . . 37 82 5. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 38 83 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 38 84 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 38 85 7.1. Normative References . . . . . . . . . . . . . . . . . . 38 86 7.2. Informative References . . . . . . . . . . . . . . . . . 40 87 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 40 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. Data Organization 198 The approach described in [I-D.openconfig-netmod-opstate] is adopted 199 to represent data configuration for intended and applied 200 configuration, and derived state data. Each container in the model 201 holds a "config" and "state" sub-container. 203 The "config" sub-container holds the intended configurable 204 parameters, while the state sub-container holds both applied 205 configuration parameters as well as any derived state such as 206 counters or statistics information. The pure state data (for 207 example, protocol derived data) is also placed under the "state" sub- 208 container. 210 The decision to use this approach was made to better align with the 211 MPLS consolidated model in [I-D.openconfig-mpls-consolidated-model], 212 and maximize reusability of groupings defined in this document and 213 allow for possible convergence between the two models. 215 TE basic +---------+ ^: import 216 module | ietf-te | o: augment 217 +---------+ 218 | o 219 | | 220 v | 221 +--------------+ 222 RSVP-TE module | ietf-rsvp-te |o . . . 223 +--------------+ \ 224 ^ | \ 225 | o +-------------------+ 226 +-----------+ | ietf-rsvp-otn-te | 227 RSVP module | ietf-rsvp | +-------------------+ 228 +-----------+ RSVP-TE with OTN 229 o extensions 230 | (shown for illustration 231 RSVP extended | not in this document) 232 module +--------------------+ 233 | ietf-rsvp-extended | 234 +--------------------+ 236 Figure 1: Relationship of RSVP and RSVP-TE modules with other 237 protocol modules 239 2.3. RSVP-TE Generic Model 241 The RSVP-TE generic module augments the RSVP base and extended YANG 242 modules defined in [I-D.ietf-teas-yang-rsvp] as well as the TE 243 tunnels and interfaces module [I-D.ietf-teas-yang-te] to cover 244 parameters specific to the configuration and management of RSVP-TE 245 interfaces, tunnels and LSP(s). 247 2.3.1. Tree Diagram 249 There are three types of configuration and state data nodes in this 250 module: 252 o those augmenting or extending the base RSVP module 254 o those augmenting or extending the base TE module 256 o those that are specific to the RSVP-TE module 258 Below is a YANG tree representation for data items defined in the 259 RSVP-TE generic module: 261 module: ietf-rsvp-te 262 augment /rt:routing/rt:control-plane-protocols/ + 263 rt:control-plane-protocol/rsvp:rsvp/rsvp:globals: 264 +--rw global-soft-preemption! 265 +--rw config 266 | +--rw soft-preemption-timeout? uint16 267 +--rw state 268 +--rw soft-preemption-timeout? uint16 269 augment /rt:routing/rt:control-plane-protocols/ 270 rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces: 271 +--rw rsvp-te-interface-attributes 272 +--rw config 273 +--ro state 274 augment /rt:routing/rt:control-plane-protocols/ 275 rt:control-plane-protocol/rsvp:rsvp/ 276 rsvp:interfaces/rsvp:interface: 277 +--rw rsvp-te-interface-attributes 278 +--rw config 279 +--ro state 280 augment /rt:routing/rt:control-plane-protocols/ 281 rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/ 282 rsvp:sessions/rsvp:session/rsvp:state/rsvp:psbs/rsvp:psb: 283 +--ro tspec-average-rate? rt-types:bandwidth-ieee-float32 284 +--ro tspec-size? rt-types:bandwidth-ieee-float32 285 +--ro tspec-peak-rate? rt-types:bandwidth-ieee-float32 286 +--ro min-policed-unit? uint32 287 +--ro max-packet-size? uint32 288 augment /rt:routing/rt:control-plane-protocols/ 289 rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/ 290 rsvp:sessions/rsvp:session/rsvp:state/rsvp:rsbs/rsvp:rsb: 291 +--ro fspec-average-rate? rt-types:bandwidth-ieee-float32 292 +--ro fspec-size? rt-types:bandwidth-ieee-float32 293 +--ro fspec-peak-rate? rt-types:bandwidth-ieee-float32 294 +--ro min-policed-unit? uint32 295 +--ro max-packet-size? uint32 296 augment /rt:routing/rt:control-plane-protocols/ 297 rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors: 298 augment /te:te/te:tunnels/te:tunnel/te:config: 299 +--rw lsp-signaled-name? string 300 +--rw local-recording-desired? boolean 301 +--rw se-style-desired? boolean 302 +--rw path-reevaluation-request? boolean 303 +--rw soft-preemption-desired? boolean 304 +--rw lsp-rerouting? enumeration 305 +--rw lsp-integrity-required? boolean 306 +--rw lsp-contiguous? boolean 307 +--rw lsp-stitching-desired? boolean 308 +--rw lsp-preplanned? boolean 309 +--rw lsp-oob-mapping? boolean 310 +--rw retry-timer? uint16 312 augment /te:te/te:tunnels/te:tunnel/te:state: 313 +--ro lsp-signaled-name? string 314 +--ro local-recording-desired? boolean 315 +--ro se-style-desired? boolean 316 +--ro path-reevaluation-request? boolean 317 +--ro soft-preemption-desired? boolean 318 +--ro lsp-rerouting? enumeration 319 +--ro lsp-integrity-required? boolean 320 +--ro lsp-contiguous? boolean 321 +--ro lsp-stitching-desired? boolean 322 +--ro lsp-preplanned? boolean 323 +--ro lsp-oob-mapping? boolean 324 +--ro retry-timer? uint16 325 augment /te:te/te:lsps-state/te:lsp: 326 +--ro associated-rsvp-session? 327 -> /rt:routing/control-plane-protocols/control-plane-protocol/ 328 rsvp:rsvp/globals/sessions/session/local-index 329 +--ro lsp-signaled-name? string 330 +--ro local-recording-desired? boolean 331 +--ro se-style-desired? boolean 332 +--ro path-reevaluation-request? boolean 333 +--ro soft-preemption-desired? boolean 334 +--ro lsp-rerouting? enumeration 335 +--ro lsp-integrity-required? boolean 336 +--ro lsp-contiguous? boolean 337 +--ro lsp-stitching-desired? boolean 338 +--ro lsp-preplanned? boolean 339 +--ro lsp-oob-mapping? boolean 340 +--ro explicit-route-objects 341 | +--ro incoming-explicit-route-hop* [index] 342 | | +--ro index -> ../config/index 343 | | +--ro config 344 | | | +--ro index? uint32 345 | | | +--ro (type)? 346 | | | +--:(ip-address) 347 | | | | +--ro ip-address-hop 348 | | | | +--ro address? inet:ip-address 349 | | | | +--ro hop-type? te-hop-type 350 | | | +--:(as-number) 351 | | | | +--ro as-number-hop 352 | | | | +--ro as-number? binary 353 | | | | +--ro hop-type? te-hop-type 354 | | | +--:(unnumbered-link) 355 | | | | +--ro unnumbered-hop 356 | | | | +--ro router-id? inet:ip-address 357 | | | | +--ro interface-id? uint32 358 | | | | +--ro hop-type? te-hop-type 359 | | | +--:(label) 360 | | | | +--ro label-hop 361 | | | | +--ro value? rt-types:generalized-label 362 | | | +--:(sid) 363 | | | +--ro sid-hop 364 | | | +--ro sid? rt-types:generalized-label 365 | | +--ro state 366 | | +--ro index? uint32 367 | | +--ro (type)? 368 | | +--:(ip-address) 369 | | | +--ro ip-address-hop 370 | | | +--ro address? inet:ip-address 371 | | | +--ro hop-type? te-hop-type 372 | | +--:(as-number) 373 | | | +--ro as-number-hop 374 | | | +--ro as-number? binary 375 | | | +--ro hop-type? te-hop-type 376 | | +--:(unnumbered-link) 377 | | | +--ro unnumbered-hop 378 | | | +--ro router-id? inet:ip-address 379 | | | +--ro interface-id? uint32 380 | | | +--ro hop-type? te-hop-type 381 | | +--:(label) 382 | | | +--ro label-hop 383 | | | +--ro value? rt-types:generalized-label 384 | | +--:(sid) 385 | | +--ro sid-hop 386 | | +--ro sid? rt-types:generalized-label 387 | +--ro outgoing-explicit-route-hop* [index] 388 | +--ro index uint32 389 | +--ro config 390 | | +--ro index? uint32 391 | | +--ro (type)? 392 | | +--:(ip-address) 393 | | | +--ro ip-address-hop 394 | | | +--ro address? inet:ip-address 395 | | | +--ro hop-type? te-hop-type 396 | | +--:(as-number) 397 | | | +--ro as-number-hop 398 | | | +--ro as-number? binary 399 | | | +--ro hop-type? te-hop-type 400 | | +--:(unnumbered-link) 401 | | | +--ro unnumbered-hop 402 | | | +--ro router-id? inet:ip-address 403 | | | +--ro interface-id? uint32 404 | | | +--ro hop-type? te-hop-type 405 | | +--:(label) 406 | | | +--ro label-hop 407 | | | +--ro value? rt-types:generalized-label 408 | | +--:(sid) 409 | | +--ro sid-hop 410 | | +--ro sid? rt-types:generalized-label 411 | +--ro state 412 | +--ro index? uint32 413 | +--ro (type)? 414 | +--:(ip-address) 415 | | +--ro ip-address-hop 416 | | +--ro address? inet:ip-address 417 | | +--ro hop-type? te-hop-type 418 | +--:(as-number) 419 | | +--ro as-number-hop 420 | | +--ro as-number? binary 421 | | +--ro hop-type? te-hop-type 422 | +--:(unnumbered-link) 423 | | +--ro unnumbered-hop 424 | | +--ro router-id? inet:ip-address 425 | | +--ro interface-id? uint32 426 | | +--ro hop-type? te-hop-type 427 | +--:(label) 428 | | +--ro label-hop 429 | | +--ro value? rt-types:generalized-label 430 | +--:(sid) 431 | +--ro sid-hop 432 | +--ro sid? rt-types:generalized-label 433 +--ro incoming-record-route-subobjects 434 | +--ro incoming-record-route-subobject* [index] 435 | +--ro index uint32 436 | +--ro (type)? 437 | +--:(ip-address) 438 | | +--ro ip-address? inet:ip-address 439 | | +--ro ip-flags? binary 440 | +--:(unnumbered-link) 441 | | +--ro router-id? inet:ip-address 442 | | +--ro interface-id? uint32 443 | +--:(label) 444 | +--ro value? rt-types:generalized-label 445 | +--ro label-flags? binary 446 +--ro outgoing-record-route-subobjects 447 +--ro outgoing-record-route-subobject* [index] 448 +--ro index uint32 449 +--ro (type)? 450 +--:(ip-address) 451 | +--ro ip-address? inet:ip-address 452 | +--ro ip-flags? binary 453 +--:(unnumbered-link) 454 | +--ro router-id? inet:ip-address 455 | +--ro interface-id? uint32 456 +--:(label) 457 +--ro value? rt-types:generalized-label 458 +--ro label-flags? binary 459 augment /te:te/te-dev:interfaces/te-dev:interface: 461 Figure 2: RSVP-TE model Tree diagram 463 2.3.2. YANG Module 465 file "ietf-rsvp-te@2017-03-10.yang" 466 module ietf-rsvp-te { 468 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te"; 470 prefix "rsvp-te"; 472 import ietf-rsvp { 473 prefix rsvp; 474 } 476 import ietf-routing { 477 prefix "rt"; 478 } 480 import ietf-routing-types { 481 prefix rt-types; 482 } 484 import ietf-te { 485 prefix te; 486 } 488 import ietf-te-device { 489 prefix te-dev; 490 } 492 /* Import TE generic types */ 493 import ietf-te-types { 494 prefix te-types; 495 } 497 organization 498 "IETF Traffic Engineering Architecture and Signaling (TEAS) 499 Working Group"; 501 contact 502 "WG Web: 503 WG List: 504 WG Chair: Lou Berger 505 507 WG Chair: Vishnu Pavan Beeram 508 510 Editor: Vishnu Pavan Beeram 511 513 Editor: Tarek Saad 514 516 Editor: Rakesh Gandhi 517 519 Editor: Himanshu Shah 520 522 Editor: Xufeng Liu 523 525 Editor: Xia Chen 526 528 Editor: Raqib Jones 529 531 Editor: Bin Wen 532 "; 534 description 535 "This module contains the RSVP-TE YANG generic data model."; 537 revision "2017-03-10" { 538 description "Latest revision to RSVP-TE generic YANG module"; 539 reference "RFC2205, RFC3209, etc."; 540 } 542 /** 543 * RSVP-TE LSPs groupings. 544 */ 546 grouping lsp-record-route-information_state { 547 description "recorded route information grouping"; 548 container incoming-record-route-subobjects { 549 description "RSVP recorded route object incoming information"; 550 list incoming-record-route-subobject { 551 when "../../te:origin-type != 'ingress'" { 552 description "Applicable on non-ingress LSPs only"; 553 } 554 key "index"; 555 description 556 "List of RSVP Path record-route objects"; 557 leaf index { 558 type uint32; 559 description "RRO subobject index"; 560 } 561 uses te-types:record-route-subobject; 562 } 563 } 564 container outgoing-record-route-subobjects { 565 description "RSVP recorded route object outgoing information"; 566 list outgoing-record-route-subobject { 567 when "../../te:origin-type != 'egress'" { 568 description "Applicable on non-egress LSPs only"; 569 } 570 key "index"; 571 description 572 "List of RSVP Resv record-route objects"; 573 leaf index { 574 type uint32; 575 description "RRO subobject index"; 576 } 577 uses te-types:record-route-subobject; 578 } 579 } 580 } 582 grouping lsp-explicit-route-information_state { 583 description "RSVP-TE LSP explicit-route information"; 584 container explicit-route-objects { 585 description "Explicit route object information"; 586 list incoming-explicit-route-hop { 587 when "../../te:origin-type != 'ingress'" { 588 description "Applicable on non-ingress LSPs only"; 589 } 590 key "index"; 591 description 592 "List of incoming RSVP Path explicit-route objects"; 593 leaf index { 594 type leafref { 595 path "../config/index"; 596 } 597 description "ERO subobject index"; 598 } 599 uses te-types:explicit-route-hop; 600 } 601 list outgoing-explicit-route-hop { 602 when "../../te:origin-type != 'egress'" { 603 description "Applicable on non-egress LSPs only"; 604 } 605 key "index"; 606 description 607 "List of outgoing RSVP Path explicit-route objects"; 608 leaf index { 609 type uint32; 610 description "ERO subobject index"; 611 } 612 uses te-types:explicit-route-hop; 613 } 614 } 615 } 617 grouping lsp-attributes-flags_config { 618 description 619 "Configuration parameters relating to RSVP-TE LSP 620 attribute flags"; 621 leaf lsp-rerouting { 622 type enumeration { 623 enum end-to-end-routing { 624 description 625 "End-to-end routing desired"; 626 reference "RFC4920, RFC5420"; 627 } 628 enum boundary-rerouting { 629 description 630 "Boundary rerouting desired"; 631 reference "RFC4920, RFC5420"; 632 } 633 enum segment-based-rerouting { 634 description 635 "Segment-based rerouting desired"; 636 reference "RFC4920, RFC5420"; 637 } 638 } 639 description "LSP rerouting types"; 640 } 641 leaf lsp-integrity-required { 642 type boolean; 643 description "LSP integrity desired"; 644 reference "RFC4875"; 645 } 646 leaf lsp-contiguous { 647 type boolean; 648 description "Contiguous LSP"; 649 reference "RFC5151"; 650 } 651 leaf lsp-stitching-desired { 652 type boolean; 653 description "Stitched LSP"; 654 reference "RFC5150"; 655 } 656 leaf lsp-preplanned { 657 type boolean; 658 description "Preplanned LSP"; 659 reference "RFC6001"; 660 } 661 leaf lsp-oob-mapping { 662 type boolean; 663 description 664 "Mapping is done out-of-band"; 665 reference "RFC6511"; 666 } 667 } 669 grouping lsp-session-attributes-obj-flags_config { 670 description 671 "Configuration parameters relating to RSVP-TE LSP 672 session attribute flags"; 673 reference 674 "RFC4859: Registry for RSVP-TE Session Flags"; 675 leaf local-recording-desired { 676 type boolean; 677 description "Path recording is desired."; 678 reference "RFC3209"; 679 } 680 leaf se-style-desired { 681 type boolean; 682 description "SE Style desired"; 683 reference "RFC3209"; 684 } 685 leaf path-reevaluation-request { 686 type boolean; 687 description "Path re-evaluation request"; 688 reference "RFC4736"; 689 } 690 leaf soft-preemption-desired { 691 type boolean; 692 description "Soft-preemption is desired"; 693 reference "RFC5712"; 694 } 696 } 698 grouping lsp-properties_config { 699 description 700 "Configuration parameters relating to RSVP-TE LSP 701 session attribute flags"; 702 leaf lsp-signaled-name { 703 type string; 704 description 705 "Sets the session name to use in the session 706 attribute object."; 707 } 708 uses lsp-session-attributes-obj-flags_config; 709 uses lsp-attributes-flags_config; 710 } 712 grouping tunnel-properties_config { 713 description "RSVP-TE Tunnel properties grouping"; 714 leaf retry-timer { 715 type uint16 { 716 range 1..600; 717 } 718 units seconds; 719 description 720 "sets the time between attempts to establish the 721 LSP"; 722 } 723 } 725 /*** End of RSVP-TE LSP groupings ***/ 727 /** 728 * RSVP-TE generic global properties. 729 */ 731 grouping global-soft-preemption_config { 732 description 733 "Configuration for global RSVP-TE soft preemption"; 734 leaf soft-preemption-timeout { 735 type uint16 { 736 range 0..300; 737 } 738 default 0; 739 description 740 "Timeout value for soft preemption to revert 741 to hard preemption"; 742 } 743 } 744 grouping global-soft-preemption { 745 description 746 "Top level group for RSVP-TE soft-preemption"; 747 container global-soft-preemption { 748 presence "Enables soft preemption on a node."; 749 description 750 "Top level container for RSVP-TE soft-preemption"; 751 container config { 752 description 753 "Configuration parameters relating to RSVP 754 soft preemption support"; 755 uses global-soft-preemption_config; 756 } 757 container state { 758 description "State parameters relating to RSVP 759 soft preemption support"; 760 uses global-soft-preemption_config; 761 } 762 } 763 } 764 /*** End of RSVP-TE generic global properties. ***/ 766 /** 767 * RSVP-TE interface generic groupings. 768 */ 770 grouping rsvp-te-interface-attributes { 771 description 772 "Top level grouping for RSVP-TE interface properties."; 773 container rsvp-te-interface-attributes { 774 description 775 "Top level container for RSVP-TE interface 776 properties"; 777 container config { 778 description 779 "Configuration parameters relating to RSVP-TE 780 bandwidth"; 781 } 782 container state { 783 config false; 784 description 785 "State information associated with RSVP-TE 786 bandwidth"; 787 } 788 } 789 } 790 /*** End of RSVP-TE generic groupings ***/ 791 /* RSVP-TE global properties */ 792 augment "/rt:routing/rt:control-plane-protocols/" 793 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals" { 794 description 795 "RSVP-TE augmentation to RSVP globals"; 796 uses global-soft-preemption; 797 } 799 /* Linkage to the base RSVP all links */ 800 augment "/rt:routing/rt:control-plane-protocols/" 801 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { 802 description 803 "RSVP-TE generic data augmentation pertaining to interfaces"; 804 uses rsvp-te-interface-attributes; 805 } 807 /* Linkage to per RSVP interface */ 808 augment "/rt:routing/rt:control-plane-protocols/" 809 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 810 "rsvp:interface" { 811 description 812 "RSVP-TE generic data augmentation pertaining to specific 813 interface"; 814 uses rsvp-te-interface-attributes; 815 } 817 /* add augmentation for sessions and neighbors */ 818 augment "/rt:routing/rt:control-plane-protocols/" 819 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" 820 + "rsvp:sessions/rsvp:session/rsvp:state/rsvp:psbs/rsvp:psb" { 821 description 822 "RSVP-TE generic data augmentation pertaining to session"; 823 /* To be added */ 824 leaf tspec-average-rate { 825 type rt-types:bandwidth-ieee-float32; 826 units "Bytes per second"; 827 description "Tspec Token Bucket Average Rate"; 828 reference "RFC2210: RSVP with INTSERV"; 829 } 830 leaf tspec-size { 831 type rt-types:bandwidth-ieee-float32; 832 units "Bytes per second"; 833 description "Tspec Token Bucket Burst Rate"; 834 reference "RFC2210"; 835 } 836 leaf tspec-peak-rate { 837 type rt-types:bandwidth-ieee-float32; 838 units "Bytes per second"; 839 description "Tspec Token Bucket Peak Data Rate"; 840 reference "RFC2210"; 841 } 842 leaf min-policed-unit { 843 type uint32; 844 description "Tspec Minimum Policed Unit"; 845 reference "RFC2210"; 846 } 847 leaf max-packet-size { 848 type uint32; 849 description "Tspec Maximum Packet Size"; 850 reference "RFC2210"; 851 } 852 } 853 augment "/rt:routing/rt:control-plane-protocols/" 854 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" 855 + "rsvp:sessions/rsvp:session/rsvp:state/rsvp:rsbs/rsvp:rsb" { 856 description 857 "RSVP-TE generic data augmentation pertaining to session"; 858 leaf fspec-average-rate { 859 type rt-types:bandwidth-ieee-float32; 860 units "Bytes per second"; 861 description "Fspec Token Bucket Average Rate"; 862 reference "RFC2210"; 863 } 864 leaf fspec-size { 865 type rt-types:bandwidth-ieee-float32; 866 units "Bytes per second"; 867 description "Fspec Token Bucket Burst Rate"; 868 reference "RFC2210"; 869 } 870 leaf fspec-peak-rate { 871 type rt-types:bandwidth-ieee-float32; 872 units "Bytes per second"; 873 description "Fspec Token Bucket Peak Data Rate"; 874 reference "RFC2210"; 875 } 876 leaf min-policed-unit { 877 type uint32; 878 description "Fspec Minimum Policed Unit"; 879 reference "RFC2210"; 880 } 881 leaf max-packet-size { 882 type uint32; 883 description "Fspec Maximum Packet Size"; 884 reference "RFC2210"; 885 } 886 } 887 augment "/rt:routing/rt:control-plane-protocols/" 888 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors" { 889 description 890 "RSVP-TE generic data augmentation pertaining to neighbors"; 891 /* To be added */ 892 } 894 /** 895 * RSVP-TE generic augmentations of generic TE model. 896 */ 898 /* TE tunnel augmentation */ 899 augment "/te:te/te:tunnels/te:tunnel/te:config" { 900 when "/te:te/te:tunnels/te:tunnel" + 901 "/te:p2p-primary-paths/te:p2p-primary-path/te:config" + 902 "/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" { 903 description 904 "When the path signaling protocol is RSVP-TE "; 905 } 906 description 907 "RSVP-TE generic data augmentation pertaining to TE tunnels"; 908 uses lsp-properties_config; 909 uses tunnel-properties_config; 910 } 912 augment "/te:te/te:tunnels/te:tunnel/te:state" { 913 when "/te:te/te:tunnels/te:tunnel" + 914 "/te:p2p-primary-paths/te:p2p-primary-path/te:config" + 915 "/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" { 916 description 917 "When the path signaling protocol is RSVP-TE "; 918 } 919 description 920 "RSVP-TE generic data augmentation pertaining to TE tunnels"; 921 uses lsp-properties_config; 922 uses tunnel-properties_config; 923 } 925 /* TE LSP augmentation */ 926 augment "/te:te/te:lsps-state/te:lsp" { 927 when "/te:te/te:lsps-state/te:lsp" + 928 "/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" { 929 description 930 "When the signaling protocol is RSVP-TE "; 931 } 932 description 933 "RSVP-TE generic data augmentation pertaining to specific TE 934 LSP"; 936 leaf associated-rsvp-session { 937 type leafref { 938 path "/rt:routing/rt:control-plane-protocols/" 939 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" 940 + "rsvp:sessions/rsvp:session/rsvp:local-index"; 941 } 942 description 943 "If the signalling protocol specified for this path is 944 RSVP-TE, this leaf provides a reference to the associated 945 session within the RSVP-TE protocol sessions list, such 946 that details of the signaling can be retrieved."; 947 } 949 uses lsp-properties_config; 950 uses lsp-explicit-route-information_state; 951 uses lsp-record-route-information_state; 952 } 954 /* TE interface augmentation */ 955 augment "/te:te/te-dev:interfaces/te-dev:interface" { 956 description 957 "RSVP-TE generic data augmentation pertaining to specific TE 958 interface"; 959 } 960 } 961 963 Figure 3: RSVP TE generic YANG module 965 2.4. RSVP-TE MPLS Model 967 The MPLS RSVP-TE YANG module augments the RSVP-TE generic module with 968 parameters to configure and manage signaling of MPLS RSVP-TE LSPs. 969 RSVP-TE YANG modules for other dataplane technologies (e.g. OTN or 970 WDM) are outside the scope of this document and are defined in other 971 documents. 973 2.4.1. Tree Diagram 975 The following are possible types of configuration and state data 976 nodes in this module: 978 o those augmenting or extending the generic RSVP-TE module 980 o those augmenting or extending the TE module 982 o those that are specific to the RSVP-TE MPLS module 983 Below is a YANG tree representation for data items defined in the 984 RSVP-TE MPLS module: 986 module: ietf-rsvp-te-mpls 987 augment 988 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 989 rsvp:rsvp: 990 +--rw fast-reroute-local-revertive 991 +--rw config 992 | +--rw rsvp-frr-local-revert-delay? uint32 993 +--ro state 994 +--ro rsvp-frr-local-revert-delay? uint32 995 augment 996 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 997 rsvp:rsvp/rsvp:interfaces: 998 augment 999 /rt:routing/rt:control-plane-protocols/ 1000 rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:interface: 1001 augment 1002 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1003 rsvp:rsvp/rsvp:globals/rsvp:sessions/rsvp:session/rsvp:state: 1004 augment 1005 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1006 rsvp:rsvp/rsvp:neighbors: 1007 augment /te:te/te:tunnels/te:tunnel/te:config: 1008 +--rw local-protection-desired? empty 1009 +--rw bandwidth-protection-desired? empty 1010 +--rw node-protection-desired? empty 1011 +--rw non-php-desired? empty 1012 +--rw entropy-label-cap? empty 1013 +--rw oam-mep-entities-desired? empty 1014 +--rw oam-mip-entities-desired? empty 1015 augment /te:te/te:tunnels/te:tunnel/te:state: 1016 +--ro local-protection-desired? empty 1017 +--ro bandwidth-protection-desired? empty 1018 +--ro node-protection-desired? empty 1019 +--ro non-php-desired? empty 1020 +--ro entropy-label-cap? empty 1021 +--ro oam-mep-entities-desired? empty 1022 +--ro oam-mip-entities-desired? empty 1023 augment /te:te/te:lsps-state/te:lsp: 1024 +--ro local-protection-desired? empty 1025 +--ro bandwidth-protection-desired? empty 1026 +--ro node-protection-desired? empty 1027 +--ro non-php-desired? empty 1028 +--ro entropy-label-cap? empty 1029 +--ro oam-mep-entities-desired? empty 1030 +--ro oam-mip-entities-desired? empty 1031 +--ro backup-info 1032 +--ro backup-tunnel-name? string 1033 +--ro backup-frr-on? uint8 1034 +--ro backup-protected-lsp-num? uint32 1035 augment /te:te/te-dev:interfaces/te-dev:interface: 1036 +--rw bandwidth-mpls-reservable 1037 +--rw config 1038 | +--rw (bandwidth-value)? 1039 | | +--:(absolute) 1040 | | | +--rw absolute-value? uint32 1041 | | +--:(percentage) 1042 | | +--rw percent-value? uint32 1043 | +--rw (bc-model-type)? 1044 | +--:(bc-model-rdm) 1045 | | +--rw bc-model-rdm 1046 | | +--rw bandwidth-mpls-constraints 1047 | | +--rw maximum-reservable? uint32 1048 | | +--rw bc-value* uint32 1049 | +--:(bc-model-mam) 1050 | | +--rw bc-model-mam 1051 | | +--rw bandwidth-mpls-constraints 1052 | | +--rw maximum-reservable? uint32 1053 | | +--rw bc-value* uint32 1054 | +--:(bc-model-mar) 1055 | +--rw bc-model-mar 1056 | +--rw bandwidth-mpls-constraints 1057 | +--rw maximum-reservable? uint32 1058 | +--rw bc-value* uint32 1059 +--ro state 1060 +--ro (bandwidth-value)? 1061 | +--:(absolute) 1062 | | +--ro absolute-value? uint32 1063 | +--:(percentage) 1064 | +--ro percent-value? uint32 1065 +--ro (bc-model-type)? 1066 +--:(bc-model-rdm) 1067 | +--ro bc-model-rdm 1068 | +--ro bandwidth-mpls-constraints 1069 | +--ro maximum-reservable? uint32 1070 | +--ro bc-value* uint32 1071 +--:(bc-model-mam) 1072 | +--ro bc-model-mam 1073 | +--ro bandwidth-mpls-constraints 1074 | +--ro maximum-reservable? uint32 1075 | +--ro bc-value* uint32 1076 +--:(bc-model-mar) 1077 +--ro bc-model-mar 1078 +--ro bandwidth-mpls-constraints 1079 +--ro maximum-reservable? uint32 1080 +--ro bc-value* uint32 1081 augment /te:te/te-dev:interfaces/te-dev:interface: 1082 +--rw rsvp-te-frr-backups 1083 +--rw config 1084 | +--rw (type)? 1085 | +--:(static-tunnel) 1086 | | +--rw static-backups 1087 | | +--rw static-backup* [backup-tunnel-name] 1088 | | +--rw backup-tunnel-name 1089 -> ../config/backup-tunnel-name 1090 | | +--rw config 1091 | | | +--rw backup-tunnel-name? 1092 -> /te:te/tunnels/tunnel/name 1093 | | +--ro state 1094 | | +--ro backup-tunnel-name? 1095 -> /te:te/tunnels/tunnel/name 1096 | +--:(auto-tunnel) 1097 | +--rw auto-backup-protection? identityref 1098 | +--rw auto-backup-path-computation? identityref 1099 +--ro state 1100 +--ro (type)? 1101 +--:(static-tunnel) 1102 | +--ro static-backups 1103 | +--ro static-backup* [backup-tunnel-name] 1104 | +--ro backup-tunnel-name 1105 -> ../config/backup-tunnel-name 1106 | +--ro config 1107 | | +--ro backup-tunnel-name? 1108 -> /te:te/tunnels/tunnel/name 1109 | +--ro state 1110 | +--ro backup-tunnel-name? 1111 -> /te:te/tunnels/tunnel/name 1112 +--:(auto-tunnel) 1113 +--ro auto-backup-protection? identityref 1114 +--ro auto-backup-path-computation? identityref 1116 Figure 4: RSVP-TE MPLS Tree diagram 1118 2.4.2. YANG Module 1120 file "ietf-rsvp-te@2017-03-10.yang" 1121 module ietf-rsvp-te-mpls { 1123 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls"; 1125 prefix "rsvp-te-mpls"; 1126 import ietf-rsvp { 1127 prefix "rsvp"; 1128 } 1130 import ietf-routing { 1131 prefix "rt"; 1132 } 1134 import ietf-te-mpls-types { 1135 prefix "te-mpls-types"; 1136 } 1138 import ietf-te-types { 1139 prefix "te-types"; 1140 } 1142 import ietf-te { 1143 prefix "te"; 1144 } 1146 import ietf-te-device { 1147 prefix "te-dev"; 1148 } 1150 organization 1151 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1152 Working Group"; 1154 contact 1155 "WG Web: 1156 WG List: 1158 WG Chair: Lou Berger 1159 1161 WG Chair: Vishnu Pavan Beeram 1162 1164 Editor: Vishnu Pavan Beeram 1165 1167 Editor: Tarek Saad 1168 1170 Editor: Rakesh Gandhi 1171 1173 Editor: Himanshu Shah 1174 1176 Editor: Xufeng Liu 1177 1179 Editor: Xia Chen 1180 1182 Editor: Raqib Jones 1183 1185 Editor: Bin Wen 1186 "; 1188 description 1189 "Latest update to MPLS RSVP-TE YANG data model."; 1191 revision "2017-03-10" { 1192 description "Update to MPLS RSVP-TE YANG initial revision."; 1193 reference "RFC3209, RFC6511, RFC6790, RFC7260, RFC4859, RFC4090"; 1194 } 1196 /* RSVP-TE MPLS LSPs groupings */ 1197 grouping lsp-attributes-flags-mpls_config { 1198 description 1199 "Configuration parameters relating to RSVP-TE MPLS LSP 1200 attribute flags"; 1201 leaf non-php-desired { 1202 type empty; 1203 description 1204 "Non-PHP is desired"; 1205 reference "RFC6511"; 1206 } 1207 leaf entropy-label-cap { 1208 type empty; 1209 description "Entropy label capability"; 1210 reference "RFC6790"; 1211 } 1212 leaf oam-mep-entities-desired { 1213 type empty; 1214 description "OAM MEP entities desired"; 1215 reference "RFC7260"; 1216 } 1217 leaf oam-mip-entities-desired { 1218 type empty; 1219 description "OAM MIP entities desired"; 1220 reference "RFC7260"; 1221 } 1223 } 1225 grouping lsp-session-attributes-obj-flags-mpls_config { 1226 description 1227 "Configuration parameters relating to RSVP-TE MPLS LSP 1228 session attribute flags"; 1229 reference 1230 "RFC4859: Registry for RSVP-TE Session Flags"; 1231 leaf local-protection-desired { 1232 type empty; 1233 description "Fastreroute local protection is desired."; 1234 reference 1235 "RFC4859: Registry for RSVP-TE Session Flags"; 1236 } 1237 leaf bandwidth-protection-desired { 1238 type empty; 1239 description 1240 "Request FRR bandwidth protection on LSRs if 1241 present."; 1242 reference "RFC4090"; 1243 } 1244 leaf node-protection-desired { 1245 type empty; 1246 description 1247 "Request FRR node protection on LSRs if 1248 present."; 1249 reference "RFC4090"; 1250 } 1251 } 1253 grouping tunnel-properties-mpls { 1254 description 1255 "Top level grouping for LSP properties."; 1256 uses lsp-session-attributes-obj-flags-mpls_config; 1257 uses lsp-attributes-flags-mpls_config; 1258 } 1260 grouping lsp-properties-mpls { 1261 description 1262 "Top level grouping for LSP properties."; 1263 uses lsp-session-attributes-obj-flags-mpls_config; 1264 uses lsp-attributes-flags-mpls_config; 1265 } 1266 /* End of RSVP-TE MPLS LSPs groupings */ 1268 /* MPLS RSVP-TE interface groupings */ 1269 grouping rsvp-te-interface_state { 1270 description 1271 "The RSVP-TE interface state grouping"; 1272 leaf over-subscribed-bandwidth { 1273 type uint32; 1274 description 1275 "The amount of over-subscribed bandwidth on 1276 the interface"; 1277 } 1278 } 1280 grouping rsvp-te-interface-softpreemption_state { 1281 description 1282 "The RSVP-TE interface preeemptions state grouping"; 1283 container interface-softpreemption-state { 1284 description 1285 "The RSVP-TE interface preeemptions state grouping"; 1286 leaf soft-preempted-bandwidth { 1287 type uint32; 1288 description 1289 "The amount of soft-preempted bandwidth on 1290 this interface"; 1291 } 1292 list lsps { 1293 key 1294 "source destination tunnel-id lsp-id "+ 1295 "extended-tunnel-id"; 1296 description 1297 "List of LSPs that are soft-preempted"; 1298 leaf source { 1299 type leafref { 1300 path "/te:te/te:lsps-state/te:lsp/"+ 1301 "te:source"; 1302 } 1303 description 1304 "Tunnel sender address extracted from 1305 SENDER_TEMPLATE object"; 1306 reference "RFC3209"; 1307 } 1308 leaf destination { 1309 type leafref { 1310 path "/te:te/te:lsps-state/te:lsp/"+ 1311 "te:destination"; 1312 } 1313 description 1314 "Tunnel endpoint address extracted from 1315 SESSION object"; 1316 reference "RFC3209"; 1317 } 1318 leaf tunnel-id { 1319 type leafref { 1320 path "/te:te/te:lsps-state/te:lsp/"+ 1321 "te:tunnel-id"; 1322 } 1323 description 1324 "Tunnel identifier used in the SESSION 1325 that remains constant over the life 1326 of the tunnel."; 1327 reference "RFC3209"; 1328 } 1329 leaf lsp-id { 1330 type leafref { 1331 path "/te:te/te:lsps-state/te:lsp/"+ 1332 "te:lsp-id"; 1333 } 1334 description 1335 "Identifier used in the SENDER_TEMPLATE 1336 and the FILTER_SPEC that can be changed 1337 to allow a sender to share resources with 1338 itself."; 1339 reference "RFC3209"; 1340 } 1341 leaf extended-tunnel-id { 1342 type leafref { 1343 path "/te:te/te:lsps-state/te:lsp/"+ 1344 "te:extended-tunnel-id"; 1345 } 1346 description 1347 "Extended Tunnel ID of the LSP."; 1348 reference "RFC3209"; 1349 } 1350 leaf type { 1351 type leafref { 1352 path "/te:te/te:lsps-state/te:lsp/"+ 1353 "te:type"; 1354 } 1355 description "LSP type P2P or P2MP"; 1356 } 1357 } 1358 } 1359 } 1361 grouping bandwidth-mpls-constraints { 1362 description "Bandwidth constraints."; 1363 container bandwidth-mpls-constraints { 1364 description 1365 "Holds the bandwidth constraints properties"; 1366 leaf maximum-reservable { 1367 type uint32 { 1368 range "0..4294967295"; 1369 } 1370 description 1371 "The maximum reservable bandwidth on the 1372 interface"; 1373 } 1374 leaf-list bc-value { 1375 type uint32 { 1376 range "0..4294967295"; 1377 } 1378 max-elements 8; 1379 description 1380 "The bandwidth constraint type"; 1381 } 1382 } 1383 } 1385 grouping bandwidth-constraint-values { 1386 description 1387 "Packet bandwidth contraints values"; 1388 choice value-type { 1389 description 1390 "Value representation"; 1391 case percentages { 1392 container perc-values { 1393 uses bandwidth-mpls-constraints; 1394 description 1395 "Percentage values"; 1396 } 1397 } 1398 case absolutes { 1399 container abs-values { 1400 uses bandwidth-mpls-constraints; 1401 description 1402 "Absolute values"; 1403 } 1404 } 1405 } 1406 } 1408 grouping bandwidth-mpls-reservable_config { 1409 description 1410 "Interface bandwidth reservable configuration grouping"; 1411 choice bandwidth-value { 1412 description "Reservable bandwidth configuration choice"; 1413 case absolute { 1414 leaf absolute-value { 1415 type uint32; 1416 description "Absolute value of the bandwidth"; 1417 } 1418 } 1419 case percentage { 1420 leaf percent-value { 1421 type uint32 { 1422 range "0..4294967295"; 1423 } 1424 description "Percentage reservable bandwidth"; 1425 } 1426 description 1427 "The maximum reservable bandwidth on the 1428 interface"; 1429 } 1430 } 1431 choice bc-model-type { 1432 description 1433 "Reservable bandwidth percentage capacity 1434 values."; 1435 case bc-model-rdm { 1436 container bc-model-rdm { 1437 description 1438 "Russian Doll Model Bandwidth Constraints."; 1439 uses bandwidth-mpls-constraints; 1440 } 1441 } 1442 case bc-model-mam { 1443 container bc-model-mam { 1444 uses bandwidth-mpls-constraints; 1445 description 1446 "Maximum Allocation Model Bandwidth 1447 Constraints."; 1448 } 1449 } 1450 case bc-model-mar { 1451 container bc-model-mar { 1452 uses bandwidth-mpls-constraints; 1453 description 1454 "Maximum Allocation with Reservation Model 1455 Bandwidth Constraints."; 1456 } 1457 } 1458 } 1459 } 1461 grouping bandwidth-mpls-reservable { 1462 description 1463 "Packet reservable bandwidth"; 1464 container bandwidth-mpls-reservable { 1465 description 1466 "Interface bandwidth reservable container"; 1467 container config { 1468 description 1469 "Configuration parameters relating to 1470 interface bandwidth reservable properties"; 1471 uses bandwidth-mpls-reservable_config; 1472 } 1473 container state { 1474 config false; 1475 description 1476 "State parameters relating to 1477 interface bandwidth reservable properties"; 1478 uses bandwidth-mpls-reservable_config; 1479 } 1480 } 1481 } 1482 /* End of RSVP-TE interface groupings */ 1484 /* RSVP-TE FRR groupings */ 1485 grouping rsvp-te-frr-backups_config { 1486 description 1487 "Top level container for RSVP-TE FRR backup parameters"; 1488 choice type { 1489 description 1490 "FRR backup tunnel type"; 1491 case static-tunnel { 1492 container static-backups { 1493 description "List of static backups"; 1494 list static-backup { 1495 key "backup-tunnel-name"; 1496 description 1497 "List of static backup tunnels that 1498 protect the RSVP-TE interface."; 1499 leaf backup-tunnel-name { 1500 type leafref { 1501 path "../config/backup-tunnel-name"; 1502 } 1503 description "Backup tunnel name"; 1504 } 1505 container config { 1506 description "Configuration for backup tunnels"; 1507 leaf backup-tunnel-name { 1508 type leafref { 1509 path "/te:te/te:tunnels/te:tunnel/te:name"; 1510 } 1511 description "FRR Backup tunnel name"; 1512 } 1513 } 1514 container state { 1515 config false; 1516 description "State for backup tunnels"; 1517 leaf backup-tunnel-name { 1518 type leafref { 1519 path "/te:te/te:tunnels/te:tunnel/te:name"; 1520 } 1521 description "FRR Backup tunnel name"; 1522 } 1523 } 1524 } 1525 } 1526 } 1527 case auto-tunnel { 1528 leaf auto-backup-protection { 1529 type identityref { 1530 base te-mpls-types:backup-protection-type; 1531 } 1532 default 1533 te-mpls-types:backup-protection-node-link; 1534 description 1535 "Describes whether the backup should offer 1536 protection against link, node, or either"; 1537 } 1538 leaf auto-backup-path-computation { 1539 type identityref { 1540 base 1541 te-types:path-computation-srlg-type; 1542 } 1543 description 1544 "FRR backup computation type"; 1545 } 1546 } 1547 } 1548 } 1550 grouping rsvp-te-frr-backups { 1551 description 1552 "RSVP-TE facility backup grouping"; 1553 container rsvp-te-frr-backups { 1554 description 1555 "RSVP-TE facility backup properties"; 1556 container config { 1557 description 1558 "Configuration parameters relating to 1559 RSVP-TE facility backups properties"; 1560 uses rsvp-te-frr-backups_config; 1561 } 1562 container state { 1563 config false; 1564 description 1565 "State parameters relating to 1566 RSVP-TE facility backups properties"; 1567 uses rsvp-te-frr-backups_config; 1568 } 1569 } 1570 } 1572 grouping lps-backup-info_state { 1573 description "Backup/bypass LSP related information"; 1574 container backup-info { 1575 description 1576 "backup information"; 1578 leaf backup-tunnel-name { 1579 type string; 1580 description 1581 "If an LSP has an FRR backup LSP that can protect it, 1582 this field identifies the tunnel name of the backup LSP. 1583 Otherwise, this field is empty."; 1584 } 1586 leaf backup-frr-on { 1587 type uint8; 1588 description 1589 "Whether currently this backup is carrying traffic"; 1590 } 1592 leaf backup-protected-lsp-num { 1593 type uint32; 1594 description 1595 "Number of LSPs protected by this backup"; 1596 } 1597 } 1598 } 1600 grouping fast-reroute-local-revertive_config { 1601 description "RSVP-TE FRR local revertive grouping"; 1602 leaf rsvp-frr-local-revert-delay { 1603 type uint32; 1604 description 1605 "Time to wait after primary link is restored 1606 before node attempts local revertive 1607 procedures."; 1608 } 1609 } 1611 /*** End of RSVP-TE FRR backup information ***/ 1613 grouping fast-reroute-local-revertive { 1614 description 1615 "Top level grouping for globals properties"; 1616 container fast-reroute-local-revertive { 1617 description "RSVP-TE FRR local revertive container"; 1618 container config { 1619 description 1620 "Configuration parameters relating to 1621 global MPLS RSVP-TE properties"; 1622 uses fast-reroute-local-revertive_config; 1623 } 1624 container state { 1625 config false; 1626 description 1627 "State parameters relating to 1628 global MPLS RSVP-TE properties"; 1629 uses fast-reroute-local-revertive_config; 1630 } 1631 } 1632 } 1634 /* RSVP-TE global properties */ 1635 augment "/rt:routing/rt:control-plane-protocols/" 1636 + "rt:control-plane-protocol/rsvp:rsvp" { 1637 description 1638 "RSVP-TE augmentation to RSVP globals"; 1639 uses fast-reroute-local-revertive; 1640 } 1642 /* Linkage to the base RSVP all interfaces */ 1643 augment "/rt:routing/rt:control-plane-protocols/" 1644 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { 1645 description 1646 "Augmentations for RSVP-TE MPLS all interfaces properties"; 1647 /* To be added */ 1648 } 1650 /* Linkage to per RSVP interface */ 1651 augment "/rt:routing/rt:control-plane-protocols/" 1652 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 1653 "rsvp:interface" { 1654 description 1655 "Augmentations for RSVP-TE MPLS per interface properties"; 1656 /* To be added */ 1657 } 1659 /* add augmentation for sessions neighbors */ 1660 augment "/rt:routing/rt:control-plane-protocols/" 1661 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" 1662 + "rsvp:sessions/rsvp:session/rsvp:state" { 1663 description 1664 "Augmentations for RSVP-TE MPLS sessions"; 1665 /* To be added */ 1666 } 1668 augment "/rt:routing/rt:control-plane-protocols/" 1669 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors" { 1670 description 1671 "Augmentations for RSVP-TE MPLS neighbors properties"; 1672 /* To be added */ 1673 } 1675 /** 1676 * Augmentation to TE generic module 1677 */ 1678 augment "/te:te/te:tunnels/te:tunnel/te:config" { 1679 description 1680 "Augmentations for RSVP-TE MPLS TE tunnel properties"; 1681 uses tunnel-properties-mpls; 1682 } 1684 augment "/te:te/te:tunnels/te:tunnel/te:state" { 1685 description 1686 "Augmentations for RSVP-TE MPLS TE tunnel properties"; 1687 uses tunnel-properties-mpls; 1688 } 1690 augment "/te:te/te:lsps-state/te:lsp" { 1691 when "/te:te/te:lsps-state/te:lsp" + 1692 "/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" { 1693 description 1694 "When the signaling protocol is RSVP-TE "; 1695 } 1696 description 1697 "RSVP-TE MPLS LSP state properties"; 1698 uses lsp-properties-mpls; 1699 uses lps-backup-info_state; 1700 } 1702 augment "/te:te/te-dev:interfaces/te-dev:interface" { 1703 description 1704 "RSVP reservable bandwidth configuration properties"; 1705 uses bandwidth-mpls-reservable; 1706 } 1708 augment "/te:te/te-dev:interfaces/te-dev:interface" { 1709 description 1710 "RSVP reservable bandwidth configuration properties"; 1711 uses rsvp-te-frr-backups; 1712 } 1713 } 1714 1716 Figure 5: RSVP TE MPLS YANG module 1718 Figure 5 shows the YANG tree representation of the RSVP TE MPLS 1719 module that augments RSVP-TE module as well as RSVP and TE YANG 1720 modules. 1722 3. IANA Considerations 1724 This document registers the following URIs in the IETF XML registry 1725 [RFC3688]. Following the format in [RFC3688], the following 1726 registration is requested to be made. 1728 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-te XML: N/A, the requested 1729 URI is an XML namespace. 1731 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls XML: N/A, the 1732 requested URI is an XML namespace. 1734 This document registers a YANG module in the YANG Module Names 1735 registry [RFC6020]. 1737 name: ietf-rsvp namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp-te 1738 prefix: ietf-rsvp reference: RFC3209 1740 name: ietf-rsvp-te namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp- 1741 te-mpls prefix: ietf-rsvp-te reference: RFC3209 1743 4. Security Considerations 1745 The YANG module defined in this memo is designed to be accessed via 1746 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 1747 secure transport layer and the mandatory-to-implement secure 1748 transport is SSH [RFC6242]. The NETCONF access control model 1749 [RFC6536] provides means to restrict access for particular NETCONF 1750 users to a pre-configured subset of all available NETCONF protocol 1751 operations and content. 1753 There are a number of data nodes defined in the YANG module which are 1754 writable/creatable/deletable (i.e., config true, which is the 1755 default). These data nodes may be considered sensitive or vulnerable 1756 in some network environments. Write operations (e.g., ) 1757 to these data nodes without proper protection can have a negative 1758 effect on network operations. 1760 5. Acknowledgement 1762 The authors would like to thank Lou Berger for reviewing and 1763 providing valuable feedback on this document. 1765 6. Contributors 1767 Xia Chen 1768 Huawei Technologies 1770 Email: jescia.chenxia@huawei.com 1772 Raqib Jones 1773 Brocade 1775 Email: raqib@Brocade.com 1777 Bin Wen 1778 Comcast 1780 Email: Bin_Wen@cable.comcast.com 1782 7. References 1784 7.1. Normative References 1786 [I-D.ietf-teas-yang-rsvp] 1787 Beeram, V., Saad, T., Gandhi, R., Liu, X., Shah, H., Chen, 1788 X., Jones, R., and B. Wen, "A YANG Data Model for Resource 1789 Reservation Protocol (RSVP)", draft-ietf-teas-yang-rsvp-06 1790 (work in progress), October 2016. 1792 [I-D.ietf-teas-yang-te] 1793 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., 1794 Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data 1795 Model for Traffic Engineering Tunnels and Interfaces", 1796 draft-ietf-teas-yang-te-05 (work in progress), October 1797 2016. 1799 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1800 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 1801 RFC2119, March 1997, 1802 . 1804 [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S. 1805 Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 1806 Functional Specification", RFC 2205, DOI 10.17487/RFC2205, 1807 September 1997, . 1809 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 1810 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 1811 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 1812 . 1814 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1815 DOI 10.17487/RFC3688, January 2004, 1816 . 1818 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1819 the Network Configuration Protocol (NETCONF)", RFC 6020, 1820 DOI 10.17487/RFC6020, October 2010, 1821 . 1823 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1824 and A. Bierman, Ed., "Network Configuration Protocol 1825 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1826 . 1828 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1829 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1830 . 1832 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1833 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 1834 10.17487/RFC6536, March 2012, 1835 . 1837 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 1838 6991, DOI 10.17487/RFC6991, July 2013, 1839 . 1841 7.2. Informative References 1843 [I-D.openconfig-mpls-consolidated-model] 1844 George, J., Fang, L., eric.osborne@level3.com, e., and R. 1845 Shakir, "MPLS / TE Model for Service Provider Networks", 1846 draft-openconfig-mpls-consolidated-model-02 (work in 1847 progress), October 2015. 1849 [I-D.openconfig-netmod-opstate] 1850 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 1851 of Operational State Data in YANG", draft-openconfig- 1852 netmod-opstate-01 (work in progress), July 2015. 1854 Authors' Addresses 1856 Vishnu Pavan Beeram 1857 Juniper Networks 1859 Email: vbeeram@juniper.net 1861 Tarek Saad (editor) 1862 Cisco Systems, Inc. 1864 Email: tsaad@cisco.com 1866 Rakesh Gandhi 1867 Cisco Systems, Inc. 1869 Email: rgandhi@cisco.com 1871 Xufeng Liu 1872 Jabil 1874 Email: Xufeng_Liu@jabil.com 1876 Igor Bryskin 1877 Huawei Technologies 1879 Email: Igor.Bryskin@huawei.com 1880 Himanshu Shah 1881 Ciena 1883 Email: hshah@ciena.com