idnits 2.17.1 draft-ietf-teas-yang-rsvp-06.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 141 has weird spacing: '... rw for r...' == Line 142 has weird spacing: '... ro for r...' == Line 536 has weird spacing: '...terface if:...' == Line 605 has weird spacing: '...ination ine...' == Line 860 has weird spacing: '...gnaling param...' == (3 more instances...) -- The document date (October 30, 2016) is 2735 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 (-25) exists of draft-ietf-netmod-routing-cfg-24 == 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 (~~), 9 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 3, 2017 R. Gandhi 6 Cisco Systems Inc 7 X. Liu 8 Ericsson 9 H. Shah 10 Ciena 11 X. Chen 12 Huawei Technologies 13 R. Jones 14 Brocade 15 B. Wen 16 Comcast 17 October 30, 2016 19 A YANG Data Model for Resource Reservation Protocol (RSVP) 20 draft-ietf-teas-yang-rsvp-06 22 Abstract 24 This document defines a YANG data model for the configuration and 25 management of RSVP Protocol. The model defines generic RSVP protocol 26 building blocks that can be augmented and used by other RSVP 27 extension models such as RVSP extensions to Traffic-Engineering 28 (RSVP-TE). The model covers the RSVP protocol configuration, 29 operational state, remote procedural calls, and event notifications 30 data. 32 Status of This Memo 34 This Internet-Draft is submitted in full conformance with the 35 provisions of BCP 78 and BCP 79. 37 Internet-Drafts are working documents of the Internet Engineering 38 Task Force (IETF). Note that other groups may also distribute 39 working documents as Internet-Drafts. The list of current Internet- 40 Drafts is at http://datatracker.ietf.org/drafts/current/. 42 Internet-Drafts are draft documents valid for a maximum of six months 43 and may be updated, replaced, or obsoleted by other documents at any 44 time. It is inappropriate to use Internet-Drafts as reference 45 material or to cite them other than as "work in progress." 47 This Internet-Draft will expire on May 3, 2017. 49 Copyright Notice 51 Copyright (c) 2016 IETF Trust and the persons identified as the 52 document authors. All rights reserved. 54 This document is subject to BCP 78 and the IETF Trust's Legal 55 Provisions Relating to IETF Documents 56 (http://trustee.ietf.org/license-info) in effect on the date of 57 publication of this document. Please review these documents 58 carefully, as they describe your rights and restrictions with respect 59 to this document. Code Components extracted from this document must 60 include Simplified BSD License text as described in Section 4.e of 61 the Trust Legal Provisions and are provided without warranty as 62 described in the Simplified BSD License. 64 Table of Contents 66 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 67 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 68 1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 69 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4 70 1.4. Open Issues and Next Steps . . . . . . . . . . . . . . . 5 71 1.4.1. Module Hierarchy . . . . . . . . . . . . . . . . . . 5 72 1.4.2. Model Data Organization . . . . . . . . . . . . . . . 5 73 1.4.3. State Data . . . . . . . . . . . . . . . . . . . . . 5 74 2. Design Considerations . . . . . . . . . . . . . . . . . . . . 6 75 2.1. Base Model(s) . . . . . . . . . . . . . . . . . . . . . . 6 76 2.2. Extended Model(s) . . . . . . . . . . . . . . . . . . . . 7 77 2.3. Configuration Inheritance . . . . . . . . . . . . . . . . 7 78 2.4. Routing Instance Support . . . . . . . . . . . . . . . . 8 79 3. Model Organization . . . . . . . . . . . . . . . . . . . . . 8 80 3.1. RSVP Base YANG Model . . . . . . . . . . . . . . . . . . 8 81 3.1.1. Configuration and State Data . . . . . . . . . . . . 10 82 3.1.2. RPC and Notification Data . . . . . . . . . . . . . . 15 83 3.1.3. YANG Module . . . . . . . . . . . . . . . . . . . . . 15 84 3.2. RSVP Extended YANG Model . . . . . . . . . . . . . . . . 32 85 3.2.1. Configuration and State Data . . . . . . . . . . . . 32 86 3.2.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 35 87 3.3. RSVP-TE Generic YANG Model . . . . . . . . . . . . . . . 46 88 3.3.1. Configuration and State Data . . . . . . . . . . . . 47 89 3.3.2. RPC and Notification Data . . . . . . . . . . . . . . 50 90 3.3.3. YANG Module . . . . . . . . . . . . . . . . . . . . . 50 91 3.4. RSVP-TE MPLS Model . . . . . . . . . . . . . . . . . . . 58 92 3.4.1. Configuration and State Data . . . . . . . . . . . . 58 93 3.4.2. RPC and Notification Data . . . . . . . . . . . . . . 62 94 3.4.3. YANG Module . . . . . . . . . . . . . . . . . . . . . 62 95 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 75 96 5. Security Considerations . . . . . . . . . . . . . . . . . . . 75 97 6. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 76 98 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 76 99 7.1. Normative References . . . . . . . . . . . . . . . . . . 76 100 7.2. Informative References . . . . . . . . . . . . . . . . . 77 101 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 78 103 1. Introduction 105 YANG [RFC6020] is a data definition language that was introduced to 106 define the contents of a conceptual data store that allows networked 107 devices to be managed using NETCONF [RFC6241]. YANG is proving 108 relevant beyond its initial confines, as bindings to other interfaces 109 (e.g. ReST) and encoding other than XML (e.g. JSON) are being 110 defined. Furthermore, YANG data models can be used as the basis of 111 implementation for other interface, such as CLI and programmatic 112 APIs. 114 This document defines a YANG data model that can be used to configure 115 and manage the RSVP protocol. This model covers generic protocol 116 building blocks that can be augmented and used by other RSVP 117 extension models- such as extensions for signaling RSVP-TE MPLS (or 118 other technology specific) Label Switched Paths (LSP)s. 120 1.1. Terminology 122 In this document, the key words "MUST", "MUST NOT", "REQUIRED", 123 "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 124 and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 125 [RFC2119]. 127 1.2. Tree Diagram 129 A simplified graphical representation of the data model is presented 130 in each section of the model. The following notations are used for 131 the YANG model data tree representation. 133 135 is one of: 136 + for current 137 x for deprecated 138 o for obsolete 140 is one of: 141 rw for read-write configuration data 142 ro for read-only non-configuration data 143 -x for execution rpcs 144 -n for notifications 146 is the name of the node 148 If the node is augmented into the tree from another module, its name 149 is printed as : 151 is one of: 152 ? for an optional leaf or node 153 ! for a presence container 154 * for a leaf-list or list 155 Brackets [] for a list's keys 156 Curly braces {} for optional feature that make node 157 conditional 158 Colon : for marking case nodes 159 Ellipses ("...") subtree contents not shown 161 Parentheses enclose choice and case nodes, and case nodes are also 162 marked with a colon (":"). 164 is the name of the type for leafs and leaf-lists. 166 1.3. Prefixes in Data Node Names 168 In this document, names of data nodes and other data model objects 169 are prefixed using the standard prefix associated with the 170 corresponding YANG imported modules, as shown in Table 1. 172 +--------+-----------------+-----------+ 173 | Prefix | YANG module | Reference | 174 +--------+-----------------+-----------+ 175 | yang | ietf-yang-types | [RFC6991] | 176 | inet | ietf-inet-types | [RFC6991] | 177 +--------+-----------------+-----------+ 179 Table 1: Prefixes and corresponding YANG modules 181 1.4. Open Issues and Next Steps 183 This document covers YANG models for data pertaining to the base 184 RSVP, the generic RSVP-TE, and the MPLS RSVP-TE. The current 185 revision of this draft covers configuration and state data, but 186 future revisions are expected to cover data for RPCs, and 187 notifications. 189 1.4.1. Module Hierarchy 191 During discussions, some of the RSVP features were debated whether 192 they should be present in the base RSVP model or in extension RSVP 193 model (e.g. RSVP-TE model) especially that some features were 194 defined in RSVP extension drafts for GMPLS or RSVP-TE states. For 195 example, the RSVP Hello extensions defined in [RFC3209] with 196 extensions to RSVP for TE states. However, RSVP Hellos extension can 197 also apply to non RSVP-TE states, and some vendor implementations, 198 allow it to be enabled independent of RSVP-TE features. 200 1.4.2. Model Data Organization 202 Throughout the model, the approach described in 203 [I-D.openconfig-netmod-opstate] is adopted to represent data 204 pertaining to configuration intended state, applied state and derived 205 state data elements. Each container in the model hold a "config" and 206 "state" sub-container. The "config" sub-container is used to 207 represent the intended configurable parameters, and the state sub- 208 container is used to represent both the applied configurable 209 parameters and any derived state, such as counters or statistical 210 information. 212 The decision to use this approach was made to better align with the 213 MPLS consolidated model in [I-D.openconfig-mpls-consolidated-model], 214 and maximize reusability of groupings defined in this document and 215 allow for possible convergence between the two models. 217 1.4.3. State Data 219 Pure state data (for example, protocol derived data) can be modeled 220 using two options: 222 o Contained inside the read-write container, under the "state" sub- 223 container, as shown in Figure 2 225 o Contained inside a separate read-only container 227 The first option allows for reusing the same containers that hold 228 configuration read-write data under a "config" sub-container, and by 229 adding the state data under the read-only "state" sub-container of 230 the container. For ephemeral or purely derived states (e.g. RSVP 231 sessions), and since in this case the state would hang off a read- 232 write parent container, it will be possible to delete the parent 233 container and removing such state. 235 The second option entails defining a new read-only parent container 236 in the model (e.g. neighbors-state) that holds the data. 238 This revision of the draft adopts the first option. Further 239 discussions on this topic are expected to close on the best choice to 240 adopt. 242 2. Design Considerations 244 2.1. Base Model(s) 246 The base RSVP model covers core features with the minimal set of 247 configuration parameters needed to operate them. Additional core 248 RSVP parameter configuration(s) as well as extended RSVP feature(s) 249 are covered in a separate RSVP extended model. 251 The RSVP-TE [RFC3209] and other traffic-engineering specific 252 enhancements are also addressed in separate module(s). The generic 253 and MPLS RSVP traffic-engineering models are augmentations to the 254 RSVP base model and are discussed in this revision of the document in 255 Section 3.3. 257 Currently, the RSVP-TE module is presented as part of this draft, and 258 is mostly packet centric. It is expected that the RSVP-TE YANG model 259 will move to a separate document in the next revision. 261 TE basic +---------+ ^: import 262 module | ietf-te | o: augment 263 +---------+ 264 | o 265 | | 266 v | 267 +--------------+ 268 RSVP-TE module | ietf-rsvp-te |o . . . 269 +--------------+ \ 270 ^ | \ 271 | o +-------------------+ 272 +-----------+ | ietf-rsvp-otn-te | 273 RSVP module | ietf-rsvp | +-------------------+ 274 +-----------+ RSVP-TE with OTN 275 o extensions 276 | (shown for illustration 277 RSVP extended | not in this document) 278 module +--------------------+ 279 | ietf-rsvp-extended | 280 +--------------------+ 282 Figure 1: Relationship of RSVP and RSVP-TE modules with other 283 protocol modules 285 The RSVP base model in this revision of the document does not aim to 286 be feature complete. The primary intent is to cover a set of 287 standard core features (listed below) that are commonly in use. 289 o Authentication ([RFC2747]) 291 o Refresh Reduction ([RFC2961]) 293 o Hellos ([RFC3209]) 295 o Graceful Restart ([RFC3473], [RFC5063]) 297 2.2. Extended Model(s) 299 The extended RSVP YANG model covers non-basic configuration(s) for 300 RSVP core feature(s) as well as optional RSVP feature that are not a 301 must for basic RSVP operation. 303 2.3. Configuration Inheritance 305 The defined data model supports configuration inheritance for 306 neighbors, and interfaces. Data elements defined in the main 307 container (e.g. the container that encompasses the list of 308 interfaces, or neighbors) are assumed to apply equally to all 309 elements of the list, unless overridden explicitly for a certain 310 element (e.g. interface). Vendors are expected to augment the above 311 container(s) to provide the list of inheritance command for their 312 implementations. 314 2.4. Routing Instance Support 316 There two main popular types of routing protocol configuration that 317 vendors may support: 319 o protocol centric - all the protocol related configuration is 320 contained within the protocol itself. Configuration belonging to 321 multiple instances of the protocol running in different routing- 322 instances (e.g. VRFs) are contained under the default routing 323 instance [I-D.ietf-netmod-routing-cfg]: 325 o VRF centric - all the protocol related configuration for a 326 routing- instance is contained within this routing-instance. 328 On-going discussions within the IETF community have converged on 329 adopting the VRF centric approach. The proposed model in this 330 document adheres to this conclusion. 332 3. Model Organization 334 This document defines YANG data models for RSVP base, RSVP extended, 335 RSVP-TE generic, and RSVP-TE MPLS configuration, state, notification 336 and RPCs. The relationship between the different modules is depicted 337 in Figure 1. 339 3.1. RSVP Base YANG Model 341 This section describes the RSVP base YANG data model. It covers base 342 RSVP protocol data defined by RSVP [RFC2205], and enhancements that 343 pertain to the base protocol operation. 345 The container "rsvp" is the top level container in this data model. 346 The presence of this container is expected to enable RSVP protocol 347 functionality. 349 The approach described in [I-D.openconfig-netmod-opstate] allows for 350 modeling the intended and respective applied and derived state. The 351 TE state data in this model falls into one of the following 352 categpries: 354 o State corresponding to applied configuration 356 o State corrsponding to derived state, counters, stats, etc. 358 Data for such state is contained under the respective "state" sub- 359 container of the intended object (e.g. interface) as shown in 360 Figure 2. 362 module: ietf-rsvp 363 +--rw rsvp! 364 +--rw globals 365 +-- rw config 366 <> 367 . 368 +-- ro state 369 <> 370 <> 371 . 372 . 373 +--rw interfaces 374 +-- rw config 375 <> 376 . 377 +-- ro state 378 <> 379 <> 380 . 381 . 382 +--rw neighbors 383 +-- rw config 384 <> 385 . 386 +-- ro state 387 <> 388 <> 389 . 390 . 391 +--rw sessions 392 +-- rw config 393 <> 394 . 395 +-- ro state 396 <> 397 <> 398 . 399 rpcs: 400 +--x global-rpc 401 +--x interfaces-rpc 402 +--x neighbors-rpc 403 +--x sessions-rpc 404 notifications: 405 +--n global-notif 406 +--n interfaces-notif 407 +--n neighbors-notif 408 +--n sessions-notif 410 Figure 2: RSVP highlevel model view 412 The following subsections provide overview of the parts of the model 413 pertaining to configuration and state data. 415 3.1.1. Configuration and State Data 417 3.1.1.1. Global Data 419 This branch of the data model covers global configuration and states 420 that control RSVP protocol behavior. 422 module: ietf-rsvp 423 augment /rt:routing/rt:control-plane-protocols/ 424 rt:control-plane-protocol: 425 +--rw rsvp! 426 +--rw globals 427 | +--rw config 428 | | +--rw graceful-restart 429 | | +--rw enabled? boolean 430 | +--ro state 431 | +--ro graceful-restart 432 | | +--ro enabled? boolean 433 | +--ro packets-stats 434 | | +--ro sent? yang:counter32 435 | | +--ro rcvd? yang:counter32 436 | +--ro protocol-stats 437 | | +--ro ack-sent? yang:counter32 438 | | +--ro ack-rcvd? yang:counter32 439 | | +--ro bundle-sent? yang:counter32 440 | | +--ro bundle-rcvd? yang:counter32 441 | | +--ro hello-sent? yang:counter32 442 | | +--ro hello-rcvd? yang:counter32 443 | | +--ro integrity-challenge-sent? yang:counter32 444 | | +--ro integrity-challenge-rcvd? yang:counter32 445 | | +--ro integrity-response-sent? yang:counter32 446 | | +--ro integrity-response-rcvd? yang:counter32 447 | | +--ro notify-sent? yang:counter32 448 | | +--ro notify-rcvd? yang:counter32 449 | | +--ro path-sent? yang:counter32 450 | | +--ro path-rcvd? yang:counter32 451 | | +--ro path-err-sent? yang:counter32 452 | | +--ro path-err-rcvd? yang:counter32 453 | | +--ro path-tear-sent? yang:counter32 454 | | +--ro path-tear-rcvd? yang:counter32 455 | | +--ro resv-sent? yang:counter32 456 | | +--ro resv-rcvd? yang:counter32 457 | | +--ro resv-confirm-sent? yang:counter32 458 | | +--ro resv-confirm-rcvd? yang:counter32 459 | | +--ro resv-err-sent? yang:counter32 460 | | +--ro resv-err-rcvd? yang:counter32 461 | | +--ro resv-tear-sent? yang:counter32 462 | | +--ro resv-tear-rcvd? yang:counter32 463 | | +--ro summary-refresh-sent? yang:counter32 464 | | +--ro summary-refresh-rcvd? yang:counter32 465 | | +--ro unknown-recv? yang:counter32 466 | +--ro errors-stats 467 | +--ro authenticate? yang:counter64 468 | +--ro checksum? yang:counter64 469 | +--ro packet-len? yang:counter64 471 3.1.1.2. Interface Data 473 This branch of the data model covers configuration and state elements 474 relevant to one or all RSVP interfaces. Any data configuration 475 applied at the "interfaces" container level are equally applicable to 476 all interfaces - unless overridden by explicit configuration under a 477 specific interface. 479 +--rw interfaces 480 | +--rw config 481 | | +--rw refresh-reduction 482 | | | +--rw enabled? boolean 483 | | +--rw rsvp-hellos 484 | | | +--rw enabled? boolean 485 | | +--rw authentication 486 | | +--rw enabled? boolean 487 | | +--rw password? string 488 | | +--rw algorithm? identityref 489 | +--ro state 490 | | +--ro refresh-reduction 491 | | | +--ro enabled? boolean 492 | | +--ro rsvp-hellos 493 | | | +--ro enabled? boolean 494 | | +--ro authentication 495 | | | +--ro enabled? boolean 496 | | | +--ro password? string 497 | | | +--ro algorithm? identityref 498 | | +--ro packets-stats 499 | | | +--ro sent? yang:counter32 500 | | | +--ro rcvd? yang:counter32 501 | | +--ro protocol-stats 502 | | | +--ro ack-sent? yang:counter32 503 | | | +--ro ack-rcvd? yang:counter32 504 | | | +--ro bundle-sent? yang:counter32 505 | | | +--ro bundle-rcvd? yang:counter32 506 | | | +--ro hello-sent? yang:counter32 507 | | | +--ro hello-rcvd? yang:counter32 508 | | | +--ro integrity-challenge-sent? yang:counter32 509 | | | +--ro integrity-challenge-rcvd? yang:counter32 510 | | | +--ro integrity-response-sent? yang:counter32 511 | | | +--ro integrity-response-rcvd? yang:counter32 512 | | | +--ro notify-sent? yang:counter32 513 | | | +--ro notify-rcvd? yang:counter32 514 | | | +--ro path-sent? yang:counter32 515 | | | +--ro path-rcvd? yang:counter32 516 | | | +--ro path-err-sent? yang:counter32 517 | | | +--ro path-err-rcvd? yang:counter32 518 | | | +--ro path-tear-sent? yang:counter32 519 | | | +--ro path-tear-rcvd? yang:counter32 520 | | | +--ro resv-sent? yang:counter32 521 | | | +--ro resv-rcvd? yang:counter32 522 | | | +--ro resv-confirm-sent? yang:counter32 523 | | | +--ro resv-confirm-rcvd? yang:counter32 524 | | | +--ro resv-err-sent? yang:counter32 525 | | | +--ro resv-err-rcvd? yang:counter32 526 | | | +--ro resv-tear-sent? yang:counter32 527 | | | +--ro resv-tear-rcvd? yang:counter32 528 | | | +--ro summary-refresh-sent? yang:counter32 529 | | | +--ro summary-refresh-rcvd? yang:counter32 530 | | | +--ro unknown-recv? yang:counter32 531 | | +--ro errors-stats 532 | | +--ro authenticate? yang:counter64 533 | | +--ro checksum? yang:counter64 534 | | +--ro packet-len? yang:counter64 535 | +--rw interface* [interface] 536 | +--rw interface if:interface-ref 537 | +--rw config 538 | | +--rw refresh-reduction 539 | | | +--rw enabled? boolean 540 | | +--rw rsvp-hellos 541 | | | +--rw enabled? boolean 542 | | +--rw authentication 543 | | +--rw enabled? boolean 544 | | +--rw password? string 545 | | +--rw algorithm? identityref 546 | +--ro state 547 | +--ro refresh-reduction 548 | | +--ro enabled? boolean 549 | +--ro rsvp-hellos 550 | | +--ro enabled? boolean 551 | +--ro authentication 552 | | +--ro enabled? boolean 553 | | +--ro password? string 554 | | +--ro algorithm? identityref 555 | +--ro packets-stats 556 | | +--ro sent? yang:counter32 557 | | +--ro rcvd? yang:counter32 558 | +--ro protocol-stats 559 | | +--ro ack-sent? yang:counter32 560 | | +--ro ack-rcvd? yang:counter32 561 | | +--ro bundle-sent? yang:counter32 562 | | +--ro bundle-rcvd? yang:counter32 563 | | +--ro hello-sent? yang:counter32 564 | | +--ro hello-rcvd? yang:counter32 565 | | +--ro integrity-challenge-sent? yang:counter32 566 | | +--ro integrity-challenge-rcvd? yang:counter32 567 | | +--ro integrity-response-sent? yang:counter32 568 | | +--ro integrity-response-rcvd? yang:counter32 569 | | +--ro notify-sent? yang:counter32 570 | | +--ro notify-rcvd? yang:counter32 571 | | +--ro path-sent? yang:counter32 572 | | +--ro path-rcvd? yang:counter32 573 | | +--ro path-err-sent? yang:counter32 574 | | +--ro path-err-rcvd? yang:counter32 575 | | +--ro path-tear-sent? yang:counter32 576 | | +--ro path-tear-rcvd? yang:counter32 577 | | +--ro resv-sent? yang:counter32 578 | | +--ro resv-rcvd? yang:counter32 579 | | +--ro resv-confirm-sent? yang:counter32 580 | | +--ro resv-confirm-rcvd? yang:counter32 581 | | +--ro resv-err-sent? yang:counter32 582 | | +--ro resv-err-rcvd? yang:counter32 583 | | +--ro resv-tear-sent? yang:counter32 584 | | +--ro resv-tear-rcvd? yang:counter32 585 | | +--ro summary-refresh-sent? yang:counter32 586 | | +--ro summary-refresh-rcvd? yang:counter32 587 | | +--ro unknown-recv? yang:counter32 588 | +--ro errors-stats 589 | +--ro authenticate? yang:counter64 590 | +--ro checksum? yang:counter64 591 | +--ro packet-len? yang:counter64 593 3.1.1.3. Session Data 595 This branch of the data model covers configuration of elements 596 relevant to RSVP neighbors. This would be discussed in detail in 597 future revisions. 599 module: ietf-rsvp 600 +--rw rsvp! 601 +--rw sessions 602 | +--rw session* [dst_port source destination] 603 | +--rw dst_port uint16 604 | +--rw source inet:ip-address 605 | +--rw destination inet:ip-address 606 | +--rw config 607 | +--ro state 609 3.1.1.4. Neighbor Data 611 This branch of the data model covers configuration of elements 612 relevant to RSVP sessions. This would be discussed in detail in 613 future revisions. 615 module: ietf-rsvp 616 +--rw rsvp! 617 +--rw neighbors 618 +--rw neighbor* [address] 619 +--rw address inet:ip-address 620 +--rw neighbor-attributes 621 +--rw config 622 +--ro state 623 +--ro epoch? uint32 624 +--ro expiry-time? uint32 625 +--ro graceful-restart 626 | +--ro enabled? boolean 627 | +--ro local-restart-time? uint32 628 | +--ro local-recovery-time? uint32 629 | +--ro nbr-restart-time? uint32 630 | +--ro nbr-recovery-time? uint32 631 | +--ro helper-mode 632 | +--ro helper-mode? boolean 633 | +--ro max-helper-restart-time? uint32 634 | +--ro max-helper-recovery-time? uint32 635 | +--ro nbr-restart-ttd? uint32 636 | +--ro nbr-recovery-ttd? uint32 637 +--ro hello-status? enumeration {hellos}? 638 +--ro interface? if:interface-ref 639 +--ro neighbor-state? enumeration 640 +--ro psb-count? uint32 641 +--ro rsb-count? uint32 642 +--ro refresh-reduction-capable? boolean 643 +--ro restart-count? uint32 644 +--ro restart-time? yang:date-and-time 646 3.1.2. RPC and Notification Data 648 TBD. 650 3.1.3. YANG Module 652 file "ietf-rsvp@2016-10-29.yang" 654 module ietf-rsvp { 656 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp"; 658 /* Replace with IANA when assigned */ 659 prefix "rsvp"; 661 import ietf-interfaces { 662 prefix "if"; 664 } 666 import ietf-inet-types { 667 prefix inet; 668 } 670 import ietf-yang-types { 671 prefix "yang"; 672 } 674 import ietf-routing { 675 prefix "rt"; 676 } 678 organization 679 "IETF Traffic Engineering Architecture and Signaling (TEAS) 680 Working Group"; 682 contact 683 "WG Web: 684 WG List: 686 WG Chair: Lou Berger 687 689 WG Chair: Vishnu Pavan Beeram 690 692 Editor: Vishnu Pavan Beeram 693 695 Editor: Tarek Saad 696 698 Editor: Rakesh Gandhi 699 701 Editor: Himanshu Shah 702 704 Editor: Xufeng Liu 705 707 Editor: Xia Chen 708 710 Editor: Raqib Jones 711 713 Editor: Bin Wen 714 "; 716 description 717 "This module contains the RSVP YANG data model."; 719 revision "2016-10-29" { 720 description "Latest revision of RSVP yang module."; 721 reference "RFC2205"; 722 } 724 identity rsvp { 725 base "rt:routing-protocol"; 726 description "RSVP protocol"; 727 } 729 identity hash-algorithm { 730 description 731 "Base identity for message-digest algorithm"; 732 } 734 identity MD5 { 735 base hash-algorithm; 736 description 737 "MD5 hash algorithm"; 738 reference "RFC1321"; 739 } 741 identity SHA-1 { 742 base hash-algorithm; 743 description 744 "SHA-1 hash algorithm"; 745 reference "NIST, FIPS PUB 180-1: Secure Hash Standard"; 746 } 748 grouping graceful-restart_config { 749 description 750 "Base configuration parameters relating to RSVP 751 Graceful-Restart"; 752 leaf enabled { 753 type boolean; 754 description 755 "'true' if RSVP Graceful Restart is enabled. 756 'false' if RSVP Graceful Restart is disabled."; 757 } 758 } 759 grouping graceful-restart { 760 description 761 "Top level grouping for RSVP graceful-restart 762 parameters"; 763 container graceful-restart { 764 description 765 "Top level container for RSVP graceful-restart"; 766 uses graceful-restart_config; 767 } 768 } 770 grouping refresh-reduction_config { 771 description 772 "Configuration parameters relating to RSVP 773 refresh reduction"; 775 leaf enabled { 776 type boolean; 777 description 778 "'true' if RSVP Refresh Reduction is enabled. 779 'false' if RSVP Refresh Reduction is disabled."; 780 } 781 } 783 grouping refresh-reduction { 784 description 785 "Top level grouping for RSVP refresh reduction 786 parameters"; 787 container refresh-reduction { 788 description 789 "Top level container for RSVP refresh reduction 790 parameters"; 791 uses refresh-reduction_config; 792 } 793 } 795 grouping authentication_config { 796 description 797 "Configuration parameters relating to RSVP 798 authentication"; 799 leaf enabled { 800 type boolean; 801 description 802 "'true' if RSVP Authenticaiton is enabled. 803 'false' if RSVP Authenticaiton is disabled."; 804 } 805 leaf password { 806 type string; 807 description 808 "An authentication key string"; 809 } 810 leaf algorithm { 811 type identityref { 812 base hash-algorithm; 813 } 814 description 815 "Cryptographic hash algorithm"; 816 } 817 } 819 grouping authentication { 820 description 821 "Top level grouping for RSVP authentication parameters"; 822 container authentication { 823 description 824 "Top level container for RSVP authentication 825 parameters"; 826 uses authentication_config; 827 } 828 } 830 grouping rsvp-hellos_config { 831 description 832 "Configuration parameters relating to RSVP 833 hellos"; 834 leaf enabled { 835 type boolean; 836 description 837 "'true' if RSVP Hello is enabled. 838 'false' if RSVP Hello is disabled."; 839 } 840 } 842 grouping rsvp-hellos { 843 description 844 "Top level grouping for RSVP hellos parameters"; 845 container rsvp-hellos { 846 description 847 "Top level container for RSVP hello parameters"; 848 uses rsvp-hellos_config; 849 } 850 } 852 grouping signaling-parameters_config { 853 description 854 "Configuration parameters relating to RSVP 855 signaling"; 856 } 858 grouping signaling-parameters { 859 description 860 "Top level grouping for RSVP signaling parameters"; 861 uses signaling-parameters_config; 862 } 864 grouping session-attributes { 865 description 866 "Top level grouping for RSVP session properties"; 867 container config { 868 description 869 "Configuration for session properties"; 870 } 871 container state { 872 config false; 873 description 874 "State information associated with RSVP 875 session properties"; 876 } 877 } 879 grouping neighbor-attributes { 880 description 881 "Top level grouping for RSVP neighbor properties"; 882 container neighbor-attributes { 883 description 884 "Top level container for RSVP neighbor properties"; 885 container config { 886 description 887 "Configuration for neighbor properties"; 888 } 889 container state { 890 config false; 891 description 892 "State information associated with RSVP 893 neighbor properties"; 894 uses neighbor-derived_state; 895 } 896 } 897 } 899 grouping statistics-packets_state { 900 description 901 "Packet statistics grouping"; 902 container packets-stats { 903 description 904 "Packet statistics container"; 905 leaf sent { 906 type yang:counter32; 907 description 908 "Packet sent count"; 909 } 911 leaf rcvd { 912 type yang:counter32; 913 description 914 "Packet received count"; 915 } 916 } 917 } 919 grouping statistics-protocol_state { 920 description 921 "RSVP protocol statistics grouping"; 922 container protocol-stats { 923 description 924 "RSVP protocol statistics container"; 925 leaf ack-sent { 926 type yang:counter32; 927 description 928 "Hello sent count"; 929 } 931 leaf ack-rcvd { 932 type yang:counter32; 933 description 934 "Hello received count"; 935 } 937 leaf bundle-sent { 938 type yang:counter32; 939 description 940 "Bundle sent count"; 941 } 943 leaf bundle-rcvd { 944 type yang:counter32; 945 description 946 "Bundle received count"; 947 } 949 leaf hello-sent { 950 type yang:counter32; 951 description 952 "Hello sent count"; 953 } 955 leaf hello-rcvd { 956 type yang:counter32; 957 description 958 "Hello received count"; 959 } 961 leaf integrity-challenge-sent { 962 type yang:counter32; 963 description 964 "Integrity Challenge sent count"; 965 } 967 leaf integrity-challenge-rcvd { 968 type yang:counter32; 969 description 970 "Integrity Challenge received count"; 971 } 973 leaf integrity-response-sent { 974 type yang:counter32; 975 description 976 "Integrity Response sent count"; 977 } 979 leaf integrity-response-rcvd { 980 type yang:counter32; 981 description 982 "Integrity Response received count"; 983 } 985 leaf notify-sent { 986 type yang:counter32; 987 description 988 "Notify sent count"; 989 } 991 leaf notify-rcvd { 992 type yang:counter32; 993 description 994 "Notify received count"; 995 } 997 leaf path-sent { 998 type yang:counter32; 999 description 1000 "Path sent count"; 1001 } 1003 leaf path-rcvd { 1004 type yang:counter32; 1005 description 1006 "Path received count"; 1007 } 1009 leaf path-err-sent { 1010 type yang:counter32; 1011 description 1012 "Path error sent count"; 1013 } 1015 leaf path-err-rcvd { 1016 type yang:counter32; 1017 description 1018 "Path error received count"; 1019 } 1021 leaf path-tear-sent { 1022 type yang:counter32; 1023 description 1024 "Path tear sent count"; 1025 } 1027 leaf path-tear-rcvd { 1028 type yang:counter32; 1029 description 1030 "Path tear received count"; 1031 } 1033 leaf resv-sent { 1034 type yang:counter32; 1035 description 1036 "Resv sent count"; 1037 } 1039 leaf resv-rcvd { 1040 type yang:counter32; 1041 description 1042 "Resv received count"; 1043 } 1045 leaf resv-confirm-sent { 1046 type yang:counter32; 1047 description 1048 "Confirm sent count"; 1049 } 1051 leaf resv-confirm-rcvd { 1052 type yang:counter32; 1053 description 1054 "Confirm received count"; 1055 } 1057 leaf resv-err-sent { 1058 type yang:counter32; 1059 description 1060 "Resv error sent count"; 1061 } 1063 leaf resv-err-rcvd { 1064 type yang:counter32; 1065 description 1066 "Resv error received count"; 1067 } 1069 leaf resv-tear-sent { 1070 type yang:counter32; 1071 description 1072 "Resv tear sent count"; 1073 } 1075 leaf resv-tear-rcvd { 1076 type yang:counter32; 1077 description 1078 "Resv tear received count"; 1079 } 1081 leaf summary-refresh-sent { 1082 type yang:counter32; 1083 description 1084 "Summary refresh sent count"; 1085 } 1087 leaf summary-refresh-rcvd { 1088 type yang:counter32; 1089 description 1090 "Summary refresh received count"; 1091 } 1093 leaf unknown-recv { 1094 type yang:counter32; 1095 description 1096 "Unknown packet received count"; 1097 } 1098 } 1099 } 1101 grouping statistics-errors_state { 1102 description 1103 "Error statistics state grouping"; 1104 container errors-stats { 1105 description 1106 "Error statistics state container"; 1107 leaf authenticate { 1108 type yang:counter64; 1109 description 1110 "The total number of packets received with an 1111 authentication failure."; 1112 } 1114 leaf checksum { 1115 type yang:counter64; 1116 description 1117 "The total number of packets received with an invalid 1118 checksum value."; 1119 } 1121 leaf packet-len { 1122 type yang:counter64; 1123 description 1124 "The total number of packets received with an invalid 1125 packet length."; 1126 } 1127 } 1128 } // statistics_state 1130 grouping statistics_state { 1131 description "RSVP statistic attributes."; 1132 uses statistics-packets_state; 1133 uses statistics-protocol_state; 1134 uses statistics-errors_state; 1135 } 1137 grouping neighbor-derived_state { 1138 description 1139 "Derived state at neighbor level."; 1141 leaf epoch { 1142 type uint32; 1143 description 1144 "Neighbor epoch."; 1145 } 1147 leaf expiry-time { 1148 type uint32; 1149 units seconds; 1150 description 1151 "Neighbor expiry time after which the neighbor state 1152 is purged if no states associated with it"; 1153 } 1155 container graceful-restart { 1156 description 1157 "Graceful restart information."; 1159 leaf enabled { 1160 type boolean; 1161 description 1162 "'true' if graceful restart is enabled for the 1163 neighbor."; 1164 } 1166 leaf local-restart-time { 1167 type uint32; 1168 units seconds; 1169 description 1170 "Local node restart time"; 1171 } 1173 leaf local-recovery-time { 1174 type uint32; 1175 units seconds; 1176 description 1177 "Local node recover time"; 1178 } 1180 leaf nbr-restart-time { 1181 type uint32; 1182 units seconds; 1183 description 1184 "Neighbor restart time"; 1185 } 1187 leaf nbr-recovery-time { 1188 type uint32; 1189 units seconds; 1190 description 1191 "Neighbor recover time"; 1192 } 1194 container helper-mode { 1195 description 1196 "Helper mode information "; 1198 leaf helper-mode { 1199 type boolean; 1200 description 1201 "'true' if helper mode is enabled."; 1202 } 1204 leaf max-helper-restart-time { 1205 type uint32; 1206 units seconds; 1207 description 1208 "The time the router or switch waits after it 1209 discovers that a neighboring router has gone down 1210 before it declares the neighbor down"; 1211 } 1213 leaf max-helper-recovery-time { 1214 type uint32; 1215 units seconds; 1216 description 1217 "The amount of time the router retains the state of its 1218 RSVP neighbors while they undergo a graceful restart"; 1219 } 1221 leaf nbr-restart-ttd { 1222 type uint32; 1223 units seconds; 1224 description 1225 "Number of seconds remaining for neighbor to send 1226 Hello message after restart."; 1227 } 1229 leaf nbr-recovery-ttd { 1230 type uint32; 1231 units seconds; 1232 description 1233 "Number of seconds remaining for neighbor to 1234 refresh."; 1235 } 1236 } // helper-mode 1237 } // graceful-restart 1238 leaf hello-status { 1239 type enumeration { 1240 enum "enabled" { 1241 description 1242 "Enabled"; 1243 } 1244 enum "disabled" { 1245 description 1246 "Disabled"; 1247 } 1248 enum "restarting" { 1249 description 1250 "Restarting"; 1251 } 1252 } 1253 description 1254 "Hello status"; 1255 } 1257 leaf interface { 1258 type if:interface-ref; 1259 description 1260 "Interface to this neighbor."; 1261 } 1263 leaf neighbor-state { 1264 type enumeration { 1265 enum "up" { 1266 description 1267 "up"; 1268 } 1269 enum "down" { 1270 description 1271 "down"; 1272 } 1273 enum "hello-disable" { 1274 description 1275 "hello-disable"; 1276 } 1277 enum "restarting" { 1278 description 1279 "restarting"; 1280 } 1281 } 1282 description 1283 "Neighbor state"; 1284 } 1285 leaf psb-count { 1286 type uint32; 1287 description 1288 "Number of PSB state currently referencing the 1289 neighbor."; 1290 } 1292 leaf rsb-count { 1293 type uint32; 1294 description 1295 "Number of RSB state currently referencing the 1296 neighbor."; 1297 } 1299 leaf refresh-reduction-capable { 1300 type boolean; 1301 description 1302 "Whether neighbor is refresh reduction capable."; 1303 } 1305 leaf restart-count { 1306 type uint32; 1307 description 1308 "Number of times this neighbor restart"; 1309 } 1311 leaf restart-time { 1312 type yang:date-and-time; 1313 description 1314 "Last restart time of the neighbor"; 1315 } 1316 } // neighbor-derived_state 1318 grouping global-attributes { 1319 description 1320 "Top level grouping for RSVP global properties"; 1321 container config { 1322 description 1323 "Configuration globals properties"; 1324 uses graceful-restart; 1325 } 1326 container state { 1327 config false; 1328 description 1329 "State information associated with RSVP 1330 global properties"; 1331 uses graceful-restart; 1332 uses statistics_state; 1334 } 1335 } 1337 grouping intf-attributes { 1338 description 1339 "Top level grouping for RSVP interface properties"; 1340 container config { 1341 description 1342 "Configuration parameters relating to 1343 RSVP interface parameters"; 1344 uses signaling-parameters; 1345 uses refresh-reduction; 1346 uses rsvp-hellos; 1347 uses authentication; 1348 } 1349 container state { 1350 config false; 1351 description 1352 "State information associated with RSVP 1353 interface parameters"; 1354 uses signaling-parameters; 1355 uses refresh-reduction; 1356 uses rsvp-hellos; 1357 uses authentication; 1358 uses statistics_state; 1359 } 1360 } 1362 augment "/rt:routing/rt:control-plane-protocols/" 1363 + "rt:control-plane-protocol" { 1364 when "rt:type = 'rsvp:rsvp'" { 1365 description 1366 "This augment is only valid when routing protocol 1367 instance type is RSVP."; 1368 } 1369 description 1370 "RSVP protocol augmentation"; 1371 container rsvp { 1372 presence "Enable RSVP feature"; 1373 description "RSVP feature container"; 1374 container globals { 1375 description "RSVP global properties."; 1376 uses global-attributes; 1377 } 1379 container interfaces { 1380 description 1381 "RSVP interfaces container"; 1383 uses intf-attributes; 1385 list interface { 1386 key "interface"; 1387 description 1388 "RSVP interfaces."; 1389 leaf interface { 1390 type if:interface-ref; 1391 description 1392 "RSVP interface."; 1393 } 1394 uses intf-attributes; 1395 } 1396 } 1398 container sessions { 1399 description 1400 "RSVP sessions container"; 1401 list session { 1402 key "dst_port source destination"; 1403 description 1404 "List of RSVP sessions"; 1405 leaf dst_port { 1406 type uint16; 1407 description "RSVP destination port"; 1408 reference "RFC2205"; 1409 } 1410 leaf source { 1411 type inet:ip-address; 1412 description "RSVP source address"; 1413 reference "RFC2205"; 1414 } 1415 leaf destination { 1416 type inet:ip-address; 1417 description "RSVP destination address"; 1418 reference "RFC2205"; 1419 } 1420 uses session-attributes; 1421 } 1422 } 1424 container neighbors { 1425 description 1426 "RSVP neighbors container"; 1427 list neighbor { 1428 key "address"; 1429 description 1430 "List of RSVP neighbors"; 1432 leaf address { 1433 type inet:ip-address; 1434 description 1435 "Neighbor address"; 1436 } 1437 uses neighbor-attributes; 1438 } 1439 } 1440 } 1441 } 1442 } 1444 1446 3.2. RSVP Extended YANG Model 1448 The RSVP extended YANG model covers optional configuration(s) for 1449 RSVP core feature(s). It also covers non-core RSVP feature(s) that 1450 are negotiated with "if-feature" checks. 1452 3.2.1. Configuration and State Data 1454 Figure 3 shows the YANG tree representation for configuration and 1455 state data that is augmenting the RSVP basic module: 1457 module: ietf-rsvp-extended 1458 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1459 /rsvp:rsvp/rsvp:globals/rsvp:config/rsvp:graceful-restart: 1460 +--rw restart-time? uint32 1461 +--rw recovery-time? uint32 1462 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1463 /rsvp:rsvp/rsvp:globals/rsvp:state/rsvp:graceful-restart: 1464 +--ro restart-time? uint32 1465 +--ro recovery-time? uint32 1466 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1467 /rsvp:rsvp/rsvp:globals/rsvp:state/rsvp:packets-stats: 1468 +--ro discontinuity-time? yang:date-and-time 1469 +--ro tx-dropped? yang:counter32 1470 +--ro rx-dropped? yang:counter32 1471 +--ro tx-error? yang:counter32 1472 +--ro rx-error? yang:counter32 1473 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1474 /rsvp:rsvp/rsvp:globals/rsvp:state/rsvp:protocol-stats: 1475 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1476 /rsvp:rsvp/rsvp:globals/rsvp:state/rsvp:errors-stats: 1477 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1478 /rsvp:rsvp/rsvp:interfaces/rsvp:config: 1479 +--rw refresh-interval? uint32 1480 +--rw refresh-misses? uint32 1481 +--rw checksum? uint32 1482 +--rw patherr-state-removal? empty 1483 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1484 /rsvp:rsvp/rsvp:interfaces/rsvp:state: 1485 +--ro refresh-interval? uint32 1486 +--ro refresh-misses? uint32 1487 +--ro checksum? uint32 1488 +--ro patherr-state-removal? empty 1489 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1490 /rsvp:rsvp/rsvp:interfaces/rsvp:config/rsvp:refresh-reduction: 1491 +--rw bundle-message-max-size? uint32 1492 +--rw reliable-ack-hold-time? uint32 1493 +--rw reliable-ack-max-size? uint32 1494 +--rw reliable-retransmit-time? uint32 1495 +--rw reliable-srefresh? empty 1496 +--rw summary-max-size? uint32 1497 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1498 /rsvp:rsvp/rsvp:interfaces/rsvp:state/rsvp:refresh-reduction: 1499 +--ro bundle-message-max-size? uint32 1500 +--ro reliable-ack-hold-time? uint32 1501 +--ro reliable-ack-max-size? uint32 1502 +--ro reliable-retransmit-time? uint32 1503 +--ro reliable-srefresh? empty 1504 +--ro summary-max-size? uint32 1505 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1506 /rsvp:rsvp/rsvp:interfaces/rsvp:config/rsvp:rsvp-hellos: 1507 +--rw interface-based? empty 1508 +--rw hello-interval? uint32 1509 +--rw hello-misses? uint32 1510 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1511 /rsvp:rsvp/rsvp:interfaces/rsvp:state/rsvp:rsvp-hellos: 1512 +--ro interface-based? empty 1513 +--ro hello-interval? uint32 1514 +--ro hello-misses? uint32 1515 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1516 /rsvp:rsvp/rsvp:interfaces/rsvp:config/rsvp:authentication: 1517 +--rw lifetime? uint32 1518 +--rw window-size? uint32 1519 +--rw challenge? empty 1520 +--rw retransmits? uint32 1521 +--rw key-chain? string 1522 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1523 /rsvp:rsvp/rsvp:interfaces/rsvp:state/rsvp:authentication: 1524 +--ro lifetime? uint32 1525 +--ro window-size? uint32 1526 +--ro challenge? empty 1527 +--ro retransmits? uint32 1528 +--ro key-chain? string 1529 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1530 /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:config: 1531 +--rw refresh-interval? uint32 1532 +--rw refresh-misses? uint32 1533 +--rw checksum? uint32 1534 +--rw patherr-state-removal? empty 1535 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1536 /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:state: 1537 +--ro refresh-interval? uint32 1538 +--ro refresh-misses? uint32 1539 +--ro checksum? uint32 1540 +--ro patherr-state-removal? empty 1541 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1542 /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:config/ 1543 rsvp:refresh-reduction: 1544 +--rw bundle-message-max-size? uint32 1545 +--rw reliable-ack-hold-time? uint32 1546 +--rw reliable-ack-max-size? uint32 1547 +--rw reliable-retransmit-time? uint32 1548 +--rw reliable-srefresh? empty 1549 +--rw summary-max-size? uint32 1550 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1551 /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:state/ 1552 rsvp:refresh-reduction: 1553 +--ro bundle-message-max-size? uint32 1554 +--ro reliable-ack-hold-time? uint32 1555 +--ro reliable-ack-max-size? uint32 1556 +--ro reliable-retransmit-time? uint32 1557 +--ro reliable-srefresh? empty 1558 +--ro summary-max-size? uint32 1559 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1560 /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:config/rsvp:rsvp-hellos: 1561 +--rw interface-based? empty 1562 +--rw hello-interval? uint32 1563 +--rw hello-misses? uint32 1564 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1565 /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:state/rsvp:rsvp-hellos: 1566 +--ro interface-based? empty 1567 +--ro hello-interval? uint32 1568 +--ro hello-misses? uint32 1569 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1570 /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:config/ 1571 rsvp:authentication: 1572 +--rw lifetime? uint32 1573 +--rw window-size? uint32 1574 +--rw challenge? empty 1575 +--rw retransmits? uint32 1576 +--rw key-chain? string 1577 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 1578 /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:state/rsvp:authentication 1579 +--ro lifetime? uint32 1580 +--ro window-size? uint32 1581 +--ro challenge? empty 1582 +--ro retransmits? uint32 1584 Figure 3: RSVP extended YANG Tree representation 1586 3.2.2. YANG Module 1588 Figure 4 shows the RSVP extended YANG module: 1590 file "ietf-rsvp-extended@2016-10-29.yang" 1592 module ietf-rsvp-extended { 1594 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-extended"; 1596 prefix "rsvp-ext"; 1598 import ietf-rsvp { 1599 prefix "rsvp"; 1600 } 1602 import ietf-routing { 1603 prefix "rt"; 1604 } 1606 import ietf-yang-types { 1607 prefix "yang"; 1608 } 1610 organization 1611 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1612 Working Group"; 1614 contact 1615 "WG Web: 1616 WG List: 1618 WG Chair: Lou Berger 1619 1621 WG Chair: Vishnu Pavan Beeram 1622 1624 Editor: Vishnu Pavan Beeram 1625 1627 Editor: Tarek Saad 1628 1630 Editor: Rakesh Gandhi 1631 1633 Editor: Himanshu Shah 1634 1636 Editor: Xufeng Liu 1637 1639 Editor: Xia Chen 1640 1642 Editor: Raqib Jones 1643 1645 Editor: Bin Wen 1646 "; 1648 description 1649 "This module contains the Extended RSVP YANG data model."; 1651 revision "2016-10-29" { 1652 description "Latest revision of RSVP extended yang module."; 1653 reference "RFC2205"; 1654 } 1656 /* RSVP features */ 1657 feature authentication { 1658 description 1659 "Indicates support for RSVP authentication"; 1660 } 1662 feature error-statistics { 1663 description 1664 "Indicates support for error statistics"; 1665 } 1667 feature global-statistics { 1668 description 1669 "Indicates support for global statistics"; 1670 } 1671 feature graceful-restart { 1672 description 1673 "Indicates support for RSVP graceful restart"; 1674 } 1676 feature hellos { 1677 description 1678 "Indicates support for RSVP hellos (RFC3209)."; 1679 } 1681 feature notify { 1682 description 1683 "Indicates support for RSVP notify message (RFC3473)."; 1684 } 1686 feature refresh-reduction { 1687 description 1688 "Indicates support for RSVP refresh reduction 1689 (RFC2961)."; 1690 } 1692 feature refresh-reduction-extended { 1693 description 1694 "Indicates support for RSVP refresh reduction 1695 (RFC2961)."; 1696 } 1698 feature per-interface-statistics { 1699 description 1700 "Indicates support for per interface statistics"; 1701 } 1703 grouping graceful-restart-extended_config { 1704 description 1705 "Configuration parameters relating to RSVP 1706 Graceful-Restart"; 1707 leaf restart-time { 1708 type uint32; 1709 units seconds; 1710 description 1711 "Graceful restart time (seconds)."; 1712 reference 1713 "RFC 5495: Description of the Resource 1714 Reservation Protocol - Traffic-Engineered 1715 (RSVP-TE) Graceful Restart Procedures"; 1716 } 1717 leaf recovery-time { 1718 type uint32; 1719 description 1720 "RSVP state recovery time"; 1721 } 1722 } 1724 grouping authentication-extended_config { 1725 description 1726 "Configuration parameters relating to RSVP 1727 authentication"; 1728 leaf lifetime { 1729 type uint32 { 1730 range "30..86400"; 1731 } 1732 description 1733 "Life time for each security association"; 1734 reference 1735 "RFC 2747: RSVP Cryptographic 1736 Authentication"; 1737 } 1738 leaf window-size { 1739 type uint32 { 1740 range "1..64"; 1741 } 1742 description 1743 "Window-size to limit number of out-of-order 1744 messages."; 1745 reference 1746 "RFC 2747: RSVP Cryptographic 1747 Authentication"; 1748 } 1749 leaf challenge { 1750 type empty; 1751 description 1752 "Enable challenge messages."; 1753 reference 1754 "RFC 2747: RSVP Cryptographic 1755 Authentication"; 1756 } 1757 leaf retransmits { 1758 type uint32 { 1759 range "1..10000"; 1760 } 1761 description 1762 "Number of retransmits when messages are 1763 dropped."; 1764 reference 1765 "RFC 2747: RSVP Cryptographic 1766 Authentication"; 1768 } 1769 leaf key-chain { 1770 type string { 1771 length "1..32"; 1772 } 1773 description 1774 "Key chain name to authenticate RSVP 1775 signaling messages."; 1776 reference 1777 "RFC 2747: RSVP Cryptographic 1778 Authentication"; 1779 } 1780 } 1782 grouping rsvp-hellos-extended_config { 1783 description 1784 "Configuration parameters relating to RSVP 1785 hellos"; 1786 leaf interface-based { 1787 type empty; 1788 description "Enable interface-based 1789 Hello adjacency if present."; 1790 } 1791 leaf hello-interval { 1792 type uint32; 1793 units milliseconds; 1794 description 1795 "Configure interval between successive Hello 1796 messages in milliseconds."; 1797 reference 1798 "RFC 3209: RSVP-TE: Extensions to RSVP for 1799 LSP Tunnels. 1800 RFC 5495: Description of the Resource 1801 Reservation Protocol - Traffic-Engineered 1802 (RSVP-TE) Graceful Restart Procedures"; 1803 } 1804 leaf hello-misses { 1805 type uint32 { 1806 range "1..10"; 1807 } 1808 description 1809 "Configure max number of consecutive missed 1810 Hello messages."; 1811 reference 1812 "RFC 3209: RSVP-TE: Extensions to RSVP for 1813 LSP Tunnels RFC 5495: Description of the 1814 Resource Reservation Protocol - Traffic- 1815 Engineered (RSVP-TE) Graceful Restart 1816 Procedures"; 1817 } 1818 } 1820 grouping signaling-parameters-extended_config { 1821 description 1822 "Configuration parameters relating to RSVP 1823 signaling"; 1824 leaf refresh-interval { 1825 type uint32; 1826 description 1827 "Set interval between successive refreshes"; 1828 } 1829 leaf refresh-misses { 1830 type uint32; 1831 description 1832 "Set max number of consecutive missed 1833 messages for state expiry"; 1834 } 1835 leaf checksum { 1836 type uint32; 1837 description 1838 "Enable RSVP message checksum computation"; 1839 } 1840 leaf patherr-state-removal { 1841 type empty; 1842 description 1843 "State-Removal flag in Path Error message 1844 if present."; 1845 } 1846 } 1848 grouping refresh-reduction-extended_config { 1849 description 1850 "Configuration parameters relating to RSVP 1851 refresh reduction"; 1853 leaf bundle-message-max-size { 1854 type uint32 { 1855 range "512..65000"; 1856 } 1857 description 1858 "Configure maximum size (bytes) of a 1859 single RSVP Bundle message."; 1860 } 1861 leaf reliable-ack-hold-time { 1862 type uint32; 1863 units milliseconds; 1864 description 1865 "Configure hold time in milliseconds for 1866 sending RSVP ACK message(s)."; 1867 } 1868 leaf reliable-ack-max-size { 1869 type uint32; 1870 description 1871 "Configure max size of a single RSVP ACK 1872 message."; 1873 } 1874 leaf reliable-retransmit-time { 1875 type uint32; 1876 units milliseconds; 1877 description 1878 "Configure min delay in milliseconds to 1879 wait for an ACK before a retransmit."; 1880 } 1881 leaf reliable-srefresh { 1882 type empty; 1883 description 1884 "Configure use of reliable messaging for 1885 summary refresh if present."; 1886 } 1887 leaf summary-max-size { 1888 type uint32 { 1889 range "20..65000"; 1890 } 1891 description 1892 "Configure max size (bytes) of a single 1893 RSVP summary refresh message."; 1894 } 1895 } 1897 grouping statistics-packets-extended_state { 1898 description 1899 "Packet statistics."; 1900 leaf discontinuity-time { 1901 type yang:date-and-time; 1902 description 1903 "The time on the most recent occasion at which any one 1904 or more of the statistic counters suffered a 1905 discontinuity. If no such discontinuities have occurred 1906 since the last re-initialization of the local 1907 management subsystem, then this node contains the time 1908 the local management subsystem re-initialized itself."; 1909 } 1910 leaf tx-dropped { 1911 type yang:counter32; 1912 description 1913 "Packet tx dropped count"; 1914 } 1916 leaf rx-dropped { 1917 type yang:counter32; 1918 description 1919 "Packet rx dropped count"; 1920 } 1922 leaf tx-error { 1923 type yang:counter32; 1924 description 1925 "Packet tx error count"; 1926 } 1928 leaf rx-error { 1929 type yang:counter32; 1930 description 1931 "Packet rx error count"; 1932 } 1933 } 1935 grouping statistics-protocol-extended_state { 1936 description 1937 "RSVP protocol statistics."; 1938 } 1940 grouping statistics-errors-extended_state { 1941 description 1942 "Error statistics."; 1943 } 1945 grouping statistics-extended_state { 1946 description "RSVP statistic attributes."; 1947 uses statistics-packets-extended_state; 1948 uses statistics-protocol-extended_state; 1949 uses statistics-errors-extended_state; 1950 } 1952 /** 1953 * RSVP extensions augmentations 1954 */ 1956 /* RSVP globals graceful restart*/ 1958 augment "/rt:routing/rt:control-plane-protocols/" + 1959 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1960 "rsvp:config/rsvp:graceful-restart" { 1961 description 1962 "RSVP globals configuration extensions"; 1963 uses graceful-restart-extended_config; 1964 } 1965 augment "/rt:routing/rt:control-plane-protocols/" + 1966 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1967 "rsvp:state/rsvp:graceful-restart" { 1968 description 1969 "RSVP globals state extensions"; 1970 uses graceful-restart-extended_config; 1971 } 1973 /* RSVP statistics augmentation */ 1974 augment "/rt:routing/rt:control-plane-protocols/" + 1975 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1976 "rsvp:state/rsvp:packets-stats" { 1977 description 1978 "RSVP packet stats extensions"; 1979 uses statistics-packets-extended_state; 1980 } 1981 augment "/rt:routing/rt:control-plane-protocols/" + 1982 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1983 "rsvp:state/rsvp:protocol-stats" { 1984 description 1985 "RSVP protocol message stats extensions"; 1986 uses statistics-protocol-extended_state; 1987 } 1988 augment "/rt:routing/rt:control-plane-protocols/" + 1989 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1990 "rsvp:state/rsvp:errors-stats" { 1991 description 1992 "RSVP errors stats extensions"; 1993 uses statistics-errors-extended_state; 1994 } 1996 /** 1997 * RSVP all interfaces extensions 1998 */ 2000 /* RSVP interface signaling extensions */ 2001 augment "/rt:routing/rt:control-plane-protocols/" 2002 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2003 + "rsvp:config" { 2004 description 2005 "RSVP signaling all interfaces configuration extensions"; 2006 uses signaling-parameters-extended_config; 2007 } 2008 augment "/rt:routing/rt:control-plane-protocols/" 2009 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2010 + "rsvp:state" { 2011 description 2012 "RSVP signaling all interfaces state extensions"; 2013 uses signaling-parameters-extended_config; 2014 } 2016 /* RSVP refresh reduction extension */ 2017 augment "/rt:routing/rt:control-plane-protocols/" 2018 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2019 + "rsvp:config/rsvp:refresh-reduction" { 2020 description 2021 "RSVP refresh-reduction all interface configuration 2022 extensions"; 2023 uses refresh-reduction-extended_config; 2024 } 2025 augment "/rt:routing/rt:control-plane-protocols/" 2026 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2027 + "rsvp:state/rsvp:refresh-reduction" { 2028 description 2029 "RSVP refresh-reduction all interfaces state extensions"; 2030 uses refresh-reduction-extended_config; 2031 } 2033 /* RSVP hellos extension */ 2034 augment "/rt:routing/rt:control-plane-protocols/" 2035 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2036 + "rsvp:config/rsvp:rsvp-hellos" { 2037 description 2038 "RSVP hello all interfaces configuration extensions"; 2039 uses rsvp-hellos-extended_config; 2040 } 2041 augment "/rt:routing/rt:control-plane-protocols/" 2042 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2043 + "rsvp:state/rsvp:rsvp-hellos" { 2044 description 2045 "RSVP hello all interfaces state extensions"; 2046 uses rsvp-hellos-extended_config; 2047 } 2049 /* RSVP authentication extension */ 2050 augment "/rt:routing/rt:control-plane-protocols/" 2051 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2052 + "rsvp:config/rsvp:authentication" { 2053 description 2054 "RSVP authentication all interfaces configuration extensions"; 2055 uses authentication-extended_config; 2057 } 2058 augment "/rt:routing/rt:control-plane-protocols/" 2059 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2060 + "rsvp:state/rsvp:authentication" { 2061 description 2062 "RSVP authentication all interfaces state extensions"; 2063 uses authentication-extended_config; 2064 } 2066 /** 2067 * RSVP interface extensions 2068 */ 2070 /* RSVP interface signaling extensions */ 2071 augment "/rt:routing/rt:control-plane-protocols/" 2072 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2073 "rsvp:interface/rsvp:config" { 2074 description 2075 "RSVP signaling interface configuration extensions"; 2076 uses signaling-parameters-extended_config; 2077 } 2078 augment "/rt:routing/rt:control-plane-protocols/" 2079 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2080 "rsvp:interface/rsvp:state" { 2081 description 2082 "RSVP signaling interface state extensions"; 2083 uses signaling-parameters-extended_config; 2084 } 2086 /* RSVP refresh reduction extension */ 2087 augment "/rt:routing/rt:control-plane-protocols/" 2088 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2089 "rsvp:interface/rsvp:config/rsvp:refresh-reduction" { 2090 description 2091 "RSVP refresh-reduction interface configuration extensions"; 2092 uses refresh-reduction-extended_config; 2093 } 2094 augment "/rt:routing/rt:control-plane-protocols/" 2095 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2096 "rsvp:interface/rsvp:state/rsvp:refresh-reduction" { 2097 description 2098 "RSVP refresh-reduction interface state extensions"; 2099 uses refresh-reduction-extended_config; 2100 } 2102 /* RSVP hellos extension */ 2103 augment "/rt:routing/rt:control-plane-protocols/" 2104 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2105 "rsvp:interface/rsvp:config/rsvp:rsvp-hellos" { 2106 description 2107 "RSVP hello interface configuration extensions"; 2108 uses rsvp-hellos-extended_config; 2109 } 2110 augment "/rt:routing/rt:control-plane-protocols/" 2111 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2112 "rsvp:interface/rsvp:state/rsvp:rsvp-hellos" { 2113 description 2114 "RSVP hello interface state extensions"; 2115 uses rsvp-hellos-extended_config; 2116 } 2118 /* RSVP authentication extension */ 2119 augment "/rt:routing/rt:control-plane-protocols/" 2120 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2121 "rsvp:interface/rsvp:config/rsvp:authentication" { 2122 description 2123 "RSVP authentication interface configuration extensions"; 2124 uses authentication-extended_config; 2125 } 2126 augment "/rt:routing/rt:control-plane-protocols/" 2127 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2128 "rsvp:interface/rsvp:state/rsvp:authentication" { 2129 description 2130 "RSVP authentication interface state extensions"; 2131 uses authentication-extended_config; 2132 } 2133 } 2135 2137 Figure 4: RSVP extended YANG module 2139 3.3. RSVP-TE Generic YANG Model 2141 This section contains the augmentation of the RSVP base YANG model 2142 for signalling Traffic-Engineering (RSVP-TE) Label Switched Paths 2143 (LSPs). New module is introduced that augment the RSVP-TE generic 2144 module to cover data items that are technology agnostic. 2146 This model imports and augments the base RSVP YANG model (presented 2147 in Section 3.1.3). It also imports and augments the TE YANG model 2148 defined in [I-D.ietf-teas-yang-te] to enable configuration of RSVP-TE 2149 attributes on TE tunnels. 2151 The following subsections provide overview of the parts of the RSVP- 2152 TE generic model pertaining to configuration and state data. 2154 3.3.1. Configuration and State Data 2156 There are three types of configuration and state data nodes in this 2157 module: 2159 o those augmenting or extending the base RSVP module 2161 o those augmenting or extending the base TE generic module 2163 o those that are specific to the RSVP-TE module 2165 Below is a YANG tree representation for data items defined in the 2166 RSVP-TE generic module: 2168 module: ietf-rsvp-te 2169 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 2170 /rsvp:rsvp/rsvp:globals: 2171 +--rw global-soft-preemption! 2172 +--rw config 2173 | +--rw soft-preemption-timeout? uint16 2174 +--rw state 2175 +--rw soft-preemption-timeout? uint16 2176 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 2177 /rsvp:rsvp/rsvp:interfaces: 2178 +--rw rsvp-te-interface-attributes 2179 +--rw config 2180 +--ro state 2181 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 2182 /rsvp:rsvp/rsvp:interfaces/rsvp:interface: 2183 +--rw rsvp-te-interface-attributes 2184 +--rw config 2185 +--ro state 2186 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 2187 /rsvp:rsvp/rsvp:sessions: 2188 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 2189 /rsvp:rsvp/rsvp:neighbors: 2190 augment /te:te/te:tunnels/te:tunnel: 2191 +--rw config 2192 | +--rw lsp-signaled-name? string 2193 | +--rw local-recording-desired? boolean 2194 | +--rw se-style-desired? boolean 2195 | +--rw path-reevaluation-request? boolean 2196 | +--rw soft-preemption-desired? boolean 2197 | +--rw lsp-rerouting? enumeration 2198 | +--rw lsp-integrety-required? boolean 2199 | +--rw lsp-contiguous? boolean 2200 | +--rw lsp-stitching-desired? boolean 2201 | +--rw lsp-preplanned? boolean 2202 | +--rw lsp-oob-mapping? boolean 2203 +--ro state 2204 +--ro lsp-signaled-name? string 2205 +--ro local-recording-desired? boolean 2206 +--ro se-style-desired? boolean 2207 +--ro path-reevaluation-request? boolean 2208 +--ro soft-preemption-desired? boolean 2209 +--ro lsp-rerouting? enumeration 2210 +--ro lsp-integrety-required? boolean 2211 +--ro lsp-contiguous? boolean 2212 +--ro lsp-stitching-desired? boolean 2213 +--ro lsp-preplanned? boolean 2214 +--ro lsp-oob-mapping? boolean 2215 augment /te:te/te:lsps-state/te:lsp: 2216 +--ro lsp-signaled-name? string 2217 +--ro local-recording-desired? boolean 2218 +--ro se-style-desired? boolean 2219 +--ro path-reevaluation-request? boolean 2220 +--ro soft-preemption-desired? boolean 2221 +--ro lsp-rerouting? enumeration 2222 +--ro lsp-integrety-required? boolean 2223 +--ro lsp-contiguous? boolean 2224 +--ro lsp-stitching-desired? boolean 2225 +--ro lsp-preplanned? boolean 2226 +--ro lsp-oob-mapping? boolean 2227 +--ro explicit-route-object 2228 | +--ro incoming-explicit-route-subobjects* [subobject-index] 2229 | | +--ro subobject-index uint32 2230 | | +--ro (type)? 2231 | | +--:(ipv4-address) 2232 | | | +--ro v4-address? inet:ipv4-address 2233 | | | +--ro v4-prefix-length? uint8 2234 | | | +--ro v4-loose? boolean 2235 | | +--:(ipv6-address) 2236 | | | +--ro v6-address? inet:ipv6-address 2237 | | | +--ro v6-prefix-length? uint8 2238 | | | +--ro v6-loose? boolean 2239 | | +--:(as-number) 2240 | | | +--ro as-number? uint16 2241 | | +--:(unnumbered-link) 2242 | | | +--ro router-id? inet:ip-address 2243 | | | +--ro interface-id? uint32 2244 | | +--:(label) 2245 | | +--ro value? uint32 2246 | +--ro outgoing-explicit-route-subobjects* [subobject-index] 2247 | +--ro subobject-index uint32 2248 | +--ro (type)? 2249 | +--:(ipv4-address) 2250 | | +--ro v4-address? inet:ipv4-address 2251 | | +--ro v4-prefix-length? uint8 2252 | | +--ro v4-loose? boolean 2253 | +--:(ipv6-address) 2254 | | +--ro v6-address? inet:ipv6-address 2255 | | +--ro v6-prefix-length? uint8 2256 | | +--ro v6-loose? boolean 2257 | +--:(as-number) 2258 | | +--ro as-number? uint16 2259 | +--:(unnumbered-link) 2260 | | +--ro router-id? inet:ip-address 2261 | | +--ro interface-id? uint32 2262 | +--:(label) 2263 | +--ro value? uint32 2264 +--ro record-route-object 2265 +--ro path-record-route-subobjects* [subobject-index] 2266 | +--ro subobject-index uint32 2267 | +--ro (type)? 2268 | +--:(ipv4-address) 2269 | | +--ro v4-address? inet:ipv4-address 2270 | | +--ro v4-prefix-length? uint8 2271 | | +--ro v4-flags? uint8 2272 | +--:(ipv6-address) 2273 | | +--ro v6-address? inet:ipv6-address 2274 | | +--ro v6-prefix-length? uint8 2275 | | +--ro v6-flags? uint8 2276 | +--:(unnumbered-link) 2277 | | +--ro router-id? inet:ip-address 2278 | | +--ro interface-id? uint32 2279 | +--:(label) 2280 | +--ro value? uint32 2281 | +--ro flags? uint8 2282 +--ro resv-record-route-subobjects* [subobject-index] 2283 +--ro subobject-index uint32 2284 +--ro (type)? 2285 +--:(ipv4-address) 2286 | +--ro v4-address? inet:ipv4-address 2287 | +--ro v4-prefix-length? uint8 2288 | +--ro v4-flags? uint8 2289 +--:(ipv6-address) 2290 | +--ro v6-address? inet:ipv6-address 2291 | +--ro v6-prefix-length? uint8 2292 | +--ro v6-flags? uint8 2293 +--:(unnumbered-link) 2294 | +--ro router-id? inet:ip-address 2295 | +--ro interface-id? uint32 2296 +--:(label) 2297 +--ro value? uint32 2298 +--ro flags? uint8 2299 augment /te:te/te-dev:interfaces/te-dev:interface: 2301 Figure 5: RSVP-TE YANG Tree representation 2303 3.3.2. RPC and Notification Data 2305 TBD. 2307 3.3.3. YANG Module 2309 file "ietf-rsvp-te@2016-10-29.yang" 2311 module ietf-rsvp-te { 2313 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te"; 2315 prefix "rsvp-te"; 2317 import ietf-rsvp { 2318 prefix rsvp; 2319 } 2321 import ietf-routing { 2322 prefix "rt"; 2323 } 2325 import ietf-te { 2326 prefix te; 2327 } 2329 import ietf-te-device { 2330 prefix te-dev; 2331 } 2333 /* Import TE generic types */ 2334 import ietf-te-types { 2335 prefix te-types; 2336 } 2338 organization 2339 "IETF Traffic Engineering Architecture and Signaling (TEAS) 2340 Working Group"; 2342 contact 2343 "WG Web: 2344 WG List: 2345 WG Chair: Lou Berger 2346 2348 WG Chair: Vishnu Pavan Beeram 2349 2351 Editor: Vishnu Pavan Beeram 2352 2354 Editor: Tarek Saad 2355 2357 Editor: Rakesh Gandhi 2358 2360 Editor: Himanshu Shah 2361 2363 Editor: Xufeng Liu 2364 2366 Editor: Xia Chen 2367 2369 Editor: Raqib Jones 2370 2372 Editor: Bin Wen 2373 "; 2375 description 2376 "This module contains the RSVP-TE YANG generic data model."; 2378 revision "2016-10-29" { 2379 description "Latest revision to RSVP-TE generic YANG module"; 2380 reference "RFC2205, RFC3209, etc."; 2381 } 2383 /** 2384 * RSVP-TE LSPs groupings. 2385 */ 2387 grouping lsp-record-route-information_state { 2388 description "recorded route information grouping"; 2389 container record-route-object { 2390 description "RSVP recorded route object information"; 2391 list path-record-route-subobjects { 2392 when "../../te:origin-type != 'ingress'" { 2393 description "Applicable on non-ingress LSPs only"; 2394 } 2395 key "subobject-index"; 2396 description 2397 "List of RSVP Path record-route objects"; 2398 leaf subobject-index { 2399 type uint32; 2400 description "RRO subobject index"; 2401 } 2402 uses te-types:record-route-subobject; 2403 } 2404 list resv-record-route-subobjects { 2405 when "../../te:origin-type != 'egress'" { 2406 description "Applicable on non-egress LSPs only"; 2407 } 2408 key "subobject-index"; 2409 description 2410 "List of RSVP Resv record-route objects"; 2411 leaf subobject-index { 2412 type uint32; 2413 description "RRO subobject index"; 2414 } 2415 uses te-types:record-route-subobject; 2416 } 2417 } 2418 } 2420 grouping lsp-explicit-route-information_state { 2421 description "RSVP-TE LSP explicit-route information"; 2422 container explicit-route-object { 2423 description "Explicit route object information"; 2424 list incoming-explicit-route-subobjects { 2425 when "../../te:origin-type != 'ingress'" { 2426 description "Applicable on non-ingress LSPs only"; 2427 } 2428 key "subobject-index"; 2429 description 2430 "List of incoming RSVP Path explicit-route objects"; 2431 leaf subobject-index { 2432 type uint32; 2433 description "ERO subobject index"; 2434 } 2435 uses te-types:explicit-route-subobject; 2436 } 2437 list outgoing-explicit-route-subobjects { 2438 when "../../te:origin-type != 'egress'" { 2439 description "Applicable on non-egress LSPs only"; 2441 } 2442 key "subobject-index"; 2443 description 2444 "List of outgoing RSVP Path explicit-route objects"; 2445 leaf subobject-index { 2446 type uint32; 2447 description "ERO subobject index"; 2448 } 2449 uses te-types:explicit-route-subobject; 2450 } 2451 } 2452 } 2454 grouping lsp-attributes-flags_config { 2455 description 2456 "Configuration parameters relating to RSVP-TE LSP 2457 attribute flags"; 2458 leaf lsp-rerouting { 2459 type enumeration { 2460 enum end-to-end-routing { 2461 description 2462 "End-to-end routing desired"; 2463 reference "RFC4920, RFC5420"; 2464 } 2465 enum boundary-rerouting { 2466 description 2467 "Boundary rerouting desired"; 2468 reference "RFC4920, RFC5420"; 2469 } 2470 enum segment-based-rerouting { 2471 description 2472 "Segment-based rerouting desired"; 2473 reference "RFC4920, RFC5420"; 2474 } 2475 } 2476 description "LSP rerouting types"; 2477 } 2478 leaf lsp-integrety-required { 2479 type boolean; 2480 description "LSP integrity desired"; 2481 reference "RFC4875"; 2482 } 2483 leaf lsp-contiguous { 2484 type boolean; 2485 description "Contiguous LSP"; 2486 reference "RFC5151"; 2487 } 2488 leaf lsp-stitching-desired { 2489 type boolean; 2490 description "Stitched LSP"; 2491 reference "RFC5150"; 2492 } 2493 leaf lsp-preplanned { 2494 type boolean; 2495 description "Preplanned LSP"; 2496 reference "RFC6001"; 2497 } 2498 leaf lsp-oob-mapping { 2499 type boolean; 2500 description 2501 "Mapping is done out-of-band"; 2502 reference "RFC6511"; 2503 } 2504 } 2506 grouping lsp-session-attributes-obj-flags_config { 2507 description 2508 "Configuration parameters relating to RSVP-TE LSP 2509 session attribute flags"; 2510 reference 2511 "RFC4859: Registry for RSVP-TE Session Flags"; 2512 leaf local-recording-desired { 2513 type boolean; 2514 description "Path recording is desired."; 2515 reference "RFC3209"; 2516 } 2517 leaf se-style-desired { 2518 type boolean; 2519 description "SE Style desired"; 2520 reference "RFC3209"; 2521 } 2522 leaf path-reevaluation-request { 2523 type boolean; 2524 description "Path re-evaluation request"; 2525 reference "RFC4736"; 2526 } 2527 leaf soft-preemption-desired { 2528 type boolean; 2529 description "Soft-preemption is desired"; 2530 reference "RFC5712"; 2531 } 2532 } 2534 grouping lsp-properties_config { 2535 description 2536 "Configuration parameters relating to RSVP-TE LSP 2537 session attribute flags"; 2538 leaf lsp-signaled-name { 2539 type string; 2540 description 2541 "Sets the session name to use in the session 2542 attribute object."; 2543 } 2544 uses lsp-session-attributes-obj-flags_config; 2545 uses lsp-attributes-flags_config; 2546 } 2548 grouping tunnel-properties { 2549 description 2550 "Top level grouping for LSP properties."; 2551 container config { 2552 description 2553 "Configuration parameters relating to 2554 LSP properties"; 2555 uses lsp-properties_config; 2556 } 2557 container state { 2558 config false; 2559 description 2560 "State information associated with LSP 2561 properties"; 2562 uses lsp-properties_config; 2563 } 2564 } 2565 /*** End of RSVP-TE LSP groupings ***/ 2567 /** 2568 * RSVP-TE generic global properties. 2569 */ 2571 grouping global-soft-preemption_config { 2572 description 2573 "Configuration for global RSVP-TE soft preemption"; 2574 leaf soft-preemption-timeout { 2575 type uint16 { 2576 range 0..300; 2577 } 2578 default 0; 2579 description 2580 "Timeout value for soft preemption to revert 2581 to hard preemption"; 2582 } 2583 } 2584 grouping global-soft-preemption { 2585 description 2586 "Top level group for RSVP-TE soft-preemption"; 2587 container global-soft-preemption { 2588 presence "Enables soft preemption on a node."; 2589 description 2590 "Top level container for RSVP-TE soft-preemption"; 2591 container config { 2592 description 2593 "Configuration parameters relating to RSVP 2594 soft preemption support"; 2595 uses global-soft-preemption_config; 2596 } 2597 container state { 2598 description "State parameters relating to RSVP 2599 soft preemption support"; 2600 uses global-soft-preemption_config; 2601 } 2602 } 2603 } 2604 /*** End of RSVP-TE generic global properties. ***/ 2606 /** 2607 * RSVP-TE interface generic groupings. 2608 */ 2610 grouping rsvp-te-interface-attributes { 2611 description 2612 "Top level grouping for RSVP-TE interface properties."; 2613 container rsvp-te-interface-attributes { 2614 description 2615 "Top level container for RSVP-TE interface 2616 properties"; 2617 container config { 2618 description 2619 "Configuration parameters relating to RSVP-TE 2620 bandwidth"; 2621 } 2622 container state { 2623 config false; 2624 description 2625 "State information associated with RSVP-TE 2626 bandwidth"; 2627 } 2628 } 2629 } 2630 /*** End of RSVP-TE generic groupings ***/ 2631 /* RSVP-TE global propeerties */ 2632 augment "/rt:routing/rt:control-plane-protocols/" 2633 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals" { 2634 description 2635 "RSVP-TE augmentation to RSVP globals"; 2636 uses global-soft-preemption; 2637 } 2639 /* Linkage to the base RSVP all links */ 2640 augment "/rt:routing/rt:control-plane-protocols/" 2641 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { 2642 description 2643 "RSVP-TE generic data augmentation pertaining to interfaces"; 2644 uses rsvp-te-interface-attributes; 2645 } 2647 /* Linkage to per RSVP interface */ 2648 augment "/rt:routing/rt:control-plane-protocols/" 2649 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2650 "rsvp:interface" { 2651 description 2652 "RSVP-TE generic data augmentation pertaining to specific 2653 interface"; 2654 uses rsvp-te-interface-attributes; 2655 } 2657 /* add augmentation for sessions neighbors */ 2658 augment "/rt:routing/rt:control-plane-protocols/" 2659 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:sessions" { 2660 description 2661 "RSVP-TE generic data augmentation pertaining to session"; 2662 /* To be added */ 2663 } 2665 augment "/rt:routing/rt:control-plane-protocols/" 2666 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors" { 2667 description 2668 "RSVP-TE generic data augmentation pertaining to neighbors"; 2669 /* To be added */ 2670 } 2672 /** 2673 * RSVP-TE generic augmentations of generic TE model. 2674 */ 2676 /* TE tunnel augmentation */ 2677 augment "/te:te/te:tunnels/te:tunnel" { 2678 description 2679 "RSVP-TE generic data augmentation pertaining to TE tunnels"; 2680 uses tunnel-properties; 2681 } 2683 /* TE LSP augmentation */ 2684 augment "/te:te/te:lsps-state/te:lsp" { 2685 description 2686 "RSVP-TE generic data augmentation pertaining to specific TE 2687 LSP"; 2688 uses lsp-properties_config; 2689 uses lsp-explicit-route-information_state; 2690 uses lsp-record-route-information_state; 2691 } 2693 /* TE interface augmentation */ 2694 augment "/te:te/te-dev:interfaces/te-dev:interface" { 2695 description 2696 "RSVP-TE generic data augmentation pertaining to specific TE 2697 interface"; 2698 } 2700 } 2702 2704 3.4. RSVP-TE MPLS Model 2706 This section describes the MPLS RSVP-TE YANG module that augments the 2707 RSVP-TE generic module to signal MPLS LSPs. RSVP-TE YANG modules for 2708 other dataplane technologies (e.g. OTN or WDM) will be defined in 2709 separate modules and in other drafts. 2711 The following subsections describe the configuration and state data . 2712 pertaining to RSVP-TE MPLS YANG data model. 2714 3.4.1. Configuration and State Data 2716 The following are possible types of configuration and state data 2717 nodes in this module: 2719 o those augmenting or extending the generic RSVP-TE module 2721 o those augmenting or extending the base TE generic module 2723 o those that are specific to the RSVP-TE MPLS module 2725 Below is a YANG tree representation for data items defined in the 2726 RSVP-TE MPLS module: 2728 module: ietf-rsvp-te-mpls 2729 augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol 2730 /rsvp:rsvp: 2731 +--rw config 2732 | +--rw rsvp-frr-local-revert! 2733 | +--rw rsvp-frr-local-revert-delay? uint32 2734 +--ro state 2735 +--ro rsvp-frr-local-revert! 2736 +--ro rsvp-frr-local-revert-delay? uint32 2737 augment /rt:routing/rt:control-plane-protocols/ 2738 rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces: 2739 augment /rt:routing/rt:control-plane-protocols/ 2740 rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:interface: 2741 augment /rt:routing/rt:control-plane-protocols/ 2742 rt:control-plane-protocol/rsvp:rsvp/rsvp:sessions: 2743 augment /rt:routing/rt:control-plane-protocols/ 2744 rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors: 2745 augment /te:te/te:tunnels/te:tunnel: 2746 +--rw config 2747 | +--rw static-bandwidth? uint32 2748 | +--rw auto-bandwidth 2749 | | +--rw enabled? boolean 2750 | | +--rw min-bw? uint32 2751 | | +--rw max-bw? uint32 2752 | | +--rw adjust-interval? uint32 2753 | | +--rw adjust-threshold? uint32 2754 | | +--rw overflow 2755 | | | +--rw enabled? boolean 2756 | | | +--rw overflow-threshold? uint32 2757 | | | +--rw trigger-event-count? uint16 2758 | | +--rw underflow 2759 | | +--rw enabled? boolean 2760 | | +--rw underflow-threshold? uint32 2761 | | +--rw trigger-event-count? uint16 2762 | +--rw local-protection-desired? empty 2763 | +--rw bandwidth-protection-desired? empty 2764 | +--rw node-protection-desired? empty 2765 | +--rw non-php-desired? empty 2766 | +--rw entropy-label-cap? empty 2767 | +--rw oam-mep-entities-desired? empty 2768 | +--rw oam-mip-entities-desired? empty 2769 +--rw state 2770 +--rw static-bandwidth? uint32 2771 +--rw auto-bandwidth 2772 | +--rw enabled? boolean 2773 | +--rw min-bw? uint32 2774 | +--rw max-bw? uint32 2775 | +--rw adjust-interval? uint32 2776 | +--rw adjust-threshold? uint32 2777 | +--rw overflow 2778 | | +--rw enabled? boolean 2779 | | +--rw overflow-threshold? uint32 2780 | | +--rw trigger-event-count? uint16 2781 | +--rw underflow 2782 | +--rw enabled? boolean 2783 | +--rw underflow-threshold? uint32 2784 | +--rw trigger-event-count? uint16 2785 +--rw local-protection-desired? empty 2786 +--rw bandwidth-protection-desired? empty 2787 +--rw node-protection-desired? empty 2788 +--rw non-php-desired? empty 2789 +--rw entropy-label-cap? empty 2790 +--rw oam-mep-entities-desired? empty 2791 +--rw oam-mip-entities-desired? empty 2792 augment /te:te/te:lsps-state/te:lsp: 2793 +--ro static-bandwidth? uint32 2794 +--ro auto-bandwidth 2795 | +--ro enabled? boolean 2796 | +--ro min-bw? uint32 2797 | +--ro max-bw? uint32 2798 | +--ro adjust-interval? uint32 2799 | +--ro adjust-threshold? uint32 2800 | +--ro overflow 2801 | | +--ro enabled? boolean 2802 | | +--ro overflow-threshold? uint32 2803 | | +--ro trigger-event-count? uint16 2804 | +--ro underflow 2805 | +--ro enabled? boolean 2806 | +--ro underflow-threshold? uint32 2807 | +--ro trigger-event-count? uint16 2808 +--ro local-protection-desired? empty 2809 +--ro bandwidth-protection-desired? empty 2810 +--ro node-protection-desired? empty 2811 +--ro non-php-desired? empty 2812 +--ro entropy-label-cap? empty 2813 +--ro oam-mep-entities-desired? empty 2814 +--ro oam-mip-entities-desired? empty 2815 +--ro backup-info 2816 +--ro backup-tunnel-name? string 2817 +--ro backup-frr-on? uint8 2818 +--ro backup-protected-lsp-num? uint32 2819 augment /te:te/te-dev:interfaces/te-dev:interface: 2820 +--rw config 2821 | +--rw (bandwidth-value)? 2822 | | +--:(absolute) 2823 | | | +--rw absolute-value? uint32 2824 | | +--:(precentage) 2825 | | +--rw percent-value? uint32 2826 | +--rw (bc-model-type)? 2827 | +--:(bc-model-rdm) 2828 | | +--rw bc-model-rdm 2829 | | +--rw bandwidth-mpls-constraints 2830 | | +--rw maximum-reservable? uint32 2831 | | +--rw bc-value* uint32 2832 | +--:(bc-model-mam) 2833 | | +--rw bc-model-mam 2834 | | +--rw bandwidth-mpls-constraints 2835 | | +--rw maximum-reservable? uint32 2836 | | +--rw bc-value* uint32 2837 | +--:(bc-model-mar) 2838 | +--rw bc-model-mar 2839 | +--rw bandwidth-mpls-constraints 2840 | +--rw maximum-reservable? uint32 2841 | +--rw bc-value* uint32 2842 +--ro state 2843 | +--ro (bandwidth-value)? 2844 | | +--:(absolute) 2845 | | | +--ro absolute-value? uint32 2846 | | +--:(precentage) 2847 | | +--ro percent-value? uint32 2848 | +--ro (bc-model-type)? 2849 | | +--:(bc-model-rdm) 2850 | | | +--ro bc-model-rdm 2851 | | | +--ro bandwidth-mpls-constraints 2852 | | | +--ro maximum-reservable? uint32 2853 | | | +--ro bc-value* uint32 2854 | | +--:(bc-model-mam) 2855 | | | +--ro bc-model-mam 2856 | | | +--ro bandwidth-mpls-constraints 2857 | | | +--ro maximum-reservable? uint32 2858 | | | +--ro bc-value* uint32 2859 | | +--:(bc-model-mar) 2860 | | +--ro bc-model-mar 2861 | | +--ro bandwidth-mpls-constraints 2862 | | +--ro maximum-reservable? uint32 2863 | | +--ro bc-value* uint32 2864 | +--ro interface-softpreemption-state 2865 | | +--ro soft-preempted-bandwidth? uint32 2866 | | +--ro lsps* 2867 [source destination tunnel-id lsp-id extended-tunnel-id] 2868 | | +--ro source -> /te:te/lsps-state/lsp/source 2869 | | +--ro destination -> /te:te/lsps-state/lsp/destination 2870 | | +--ro tunnel-id -> /te:te/lsps-state/lsp/tunnel-id 2871 | | +--ro lsp-id -> /te:te/lsps-state/lsp/lsp-id 2872 | | +--ro extended-tunnel-id 2873 -> /te:te/lsps-state/lsp/extended-tunnel-id 2874 | | +--ro type? -> /te:te/lsps-state/lsp/type 2875 | +--ro over-subscribed-bandwidth? uint32 2876 +--rw rsvp-te-frr-backups {te-types:frr-te}? 2877 +--rw config 2878 | +--rw backup-bandwidth? uint32 2879 | +--rw backup-bandwidth-classtype? uint32 2880 | +--rw (type)? 2881 | +--:(static-tunnel) 2882 | | +--rw static-backups* [tunnel-name] 2883 | | +--rw tunnel-name string 2884 | +--:(auto-tunnel) 2885 | +--rw auto-backup-protection? identityref 2886 | +--rw auto-backup-path-computation? identityref 2887 +--ro state 2888 +--ro backup-bandwidth? uint32 2889 +--ro backup-bandwidth-classtype? uint32 2890 +--ro (type)? 2891 +--:(static-tunnel) 2892 | +--ro static-backups* [tunnel-name] 2893 | +--ro tunnel-name string 2894 +--:(auto-tunnel) 2895 +--ro auto-backup-protection? identityref 2897 Figure 6: MPLS RSVP-TE YANG Tree representation 2899 3.4.2. RPC and Notification Data 2901 TBD. 2903 3.4.3. YANG Module 2905 file "ietf-rsvp-te-mpls@2016-10-29.yang" 2907 module ietf-rsvp-te-mpls { 2909 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls"; 2911 prefix "rsvp-te-mpls"; 2913 import ietf-rsvp { 2914 prefix "rsvp"; 2915 } 2917 import ietf-routing { 2918 prefix "rt"; 2919 } 2920 import ietf-te-mpls-types { 2921 prefix "te-mpls-types"; 2922 } 2924 import ietf-te-types { 2925 prefix "te-types"; 2926 } 2928 import ietf-te { 2929 prefix "te"; 2930 } 2932 import ietf-te-device { 2933 prefix "te-dev"; 2934 } 2936 organization 2937 "IETF Traffic Engineering Architecture and Signaling (TEAS) 2938 Working Group"; 2940 contact 2941 "WG Web: 2942 WG List: 2944 WG Chair: Lou Berger 2945 2947 WG Chair: Vishnu Pavan Beeram 2948 2950 Editor: Vishnu Pavan Beeram 2951 2953 Editor: Tarek Saad 2954 2956 Editor: Rakesh Gandhi 2957 2959 Editor: Himanshu Shah 2960 2962 Editor: Xufeng Liu 2963 2965 Editor: Xia Chen 2966 2968 Editor: Raqib Jones 2969 2971 Editor: Bin Wen 2972 "; 2974 description 2975 "Latest update to MPLS RSVP-TE YANG data model."; 2977 revision "2016-10-29" { 2978 description "Update to MPLS RSVP-TE YANG initial revision."; 2979 reference "RFC3209, RFC6511, RFC6790, RFC7260, RFC4859, RFC4090"; 2980 } 2982 /* RSVP-TE MPLS LSPs groupings */ 2983 grouping lsp-attributes-flags-mpls_config { 2984 description 2985 "Configuration parameters relating to RSVP-TE MPLS LSP 2986 attribute flags"; 2987 leaf non-php-desired { 2988 type empty; 2989 description 2990 "Non-PHP is desired"; 2991 reference "RFC6511"; 2992 } 2993 leaf entropy-label-cap { 2994 type empty; 2995 description "Entropy label capability"; 2996 reference "RFC6790"; 2997 } 2998 leaf oam-mep-entities-desired { 2999 type empty; 3000 description "OAM MEP entities desired"; 3001 reference "RFC7260"; 3002 } 3003 leaf oam-mip-entities-desired { 3004 type empty; 3005 description "OAM MIP entities desired"; 3006 reference "RFC7260"; 3007 } 3008 } 3010 grouping lsp-session-attributes-obj-flags-mpls_config { 3011 description 3012 "Configuration parameters relating to RSVP-TE MPLS LSP 3013 session attribute flags"; 3014 reference 3015 "RFC4859: Registry for RSVP-TE Session Flags"; 3017 leaf local-protection-desired { 3018 type empty; 3019 description "Fastreroute local protection is desired."; 3020 reference 3021 "RFC4859: Registry for RSVP-TE Session Flags"; 3022 } 3023 leaf bandwidth-protection-desired { 3024 type empty; 3025 description 3026 "Request FRR bandwidth protection on LSRs if 3027 present."; 3028 reference "RFC4090"; 3029 } 3030 leaf node-protection-desired { 3031 type empty; 3032 description 3033 "Request FRR node protection on LSRs if 3034 present."; 3035 reference "RFC4090"; 3036 } 3037 } 3039 grouping lsp-overflow_config { 3040 description "configuration for mpls lsp bandwidth 3041 overflow adjustment"; 3043 leaf enabled { 3044 type boolean; 3045 default false; 3046 description "enables mpls lsp bandwidth overflow 3047 adjustment on the lsp"; 3048 } 3050 leaf overflow-threshold { 3051 type uint32; 3052 description "bandwidth percentage change to trigger 3053 an overflow event"; 3055 } 3057 leaf trigger-event-count { 3058 type uint16; 3059 description "number of consecutive overflow sample 3060 events needed to trigger an overflow adjustment"; 3061 } 3062 } 3064 grouping lsp-underflow_config { 3065 description 3066 "configuration for mpls lsp bandwidth 3067 underflow adjustment"; 3069 leaf enabled { 3070 type boolean; 3071 default false; 3072 description "enables bandwidth underflow 3073 adjustment on the lsp"; 3074 } 3076 leaf underflow-threshold { 3077 type uint32; 3078 description "bandwidth percentage change to trigger 3079 and underflow event"; 3080 } 3082 leaf trigger-event-count { 3083 type uint16; 3084 description "number of consecutive underflow sample 3085 events needed to trigger an underflow adjustment"; 3086 } 3087 } 3089 grouping lsp-auto-bandwidth_config { 3090 description 3091 "Auto-Bandwidth grouping"; 3092 container auto-bandwidth { 3093 description "configure auto-bandwidth operation in 3094 which devices automatically adjust bandwidth to meet 3095 requirements"; 3097 leaf enabled { 3098 type boolean; 3099 default false; 3100 description "enables mpls auto-bandwidth on the 3101 lsp"; 3102 } 3104 leaf min-bw { 3105 type uint32; 3106 description "set the minimum bandwidth in Mbps for an 3107 auto-bandwidth LSP"; 3108 } 3110 leaf max-bw { 3111 type uint32; 3112 description "set the maximum bandwidth in Mbps for an 3113 auto-bandwidth LSP"; 3114 } 3116 leaf adjust-interval { 3117 type uint32; 3118 description "time in seconds between adjustments to 3119 LSP bandwidth"; 3120 } 3122 leaf adjust-threshold { 3123 type uint32; 3124 description "percentage difference between the LSP's 3125 specified bandwidth and its current bandwidth 3126 allocation -- if the difference is greater than the 3127 specified percentage, auto-bandwidth adjustment is 3128 triggered"; 3129 } 3131 container overflow { 3132 description "configuration of MPLS overflow bandwidth 3133 adjustement for the LSP"; 3134 uses lsp-overflow_config; 3135 } 3137 container underflow { 3138 description "configuration of MPLS underflow bandwidth 3139 adjustement for the LSP"; 3140 uses lsp-underflow_config; 3141 } 3142 } 3143 } 3145 grouping lsp-bandwidth_config { 3146 description 3147 "LSP bandwidth grouping"; 3148 leaf static-bandwidth { 3149 type uint32; 3150 description 3151 "Static bandwidth, e.g., using 3152 offline calculation"; 3153 } 3154 uses lsp-auto-bandwidth_config; 3155 } 3157 grouping tunnel-properties-mpls { 3158 description 3159 "Top level grouping for LSP properties."; 3160 container config { 3161 description 3162 "Configuration parameters for tunnel RSVP-TE 3163 properties"; 3164 uses lsp-bandwidth_config; 3165 uses lsp-session-attributes-obj-flags-mpls_config; 3166 uses lsp-attributes-flags-mpls_config; 3167 } 3168 container state { 3169 description 3170 "State parameters for tunnel RSVP-TE 3171 properties"; 3172 uses lsp-bandwidth_config; 3173 uses lsp-session-attributes-obj-flags-mpls_config; 3174 uses lsp-attributes-flags-mpls_config; 3175 } 3176 } 3178 grouping lsp-properties-mpls { 3179 description 3180 "Top level grouping for LSP properties."; 3181 uses lsp-bandwidth_config; 3182 uses lsp-session-attributes-obj-flags-mpls_config; 3183 uses lsp-attributes-flags-mpls_config; 3184 } 3185 /* End of RSVP-TE MPLS LSPs groupings */ 3187 /* MPLS RSVP-TE interface groupings */ 3188 grouping rsvp-te-interface_state { 3189 description 3190 "The RSVP-TE interface state grouping"; 3191 leaf over-subscribed-bandwidth { 3192 type uint32; 3193 description 3194 "The amount of over-subscribed bandwidth on 3195 the interface"; 3196 } 3197 } 3199 grouping rsvp-te-interface-softpreemption_state { 3200 description 3201 "The RSVP-TE interface preeemptions state grouping"; 3202 container interface-softpreemption-state { 3203 description 3204 "The RSVP-TE interface preeemptions state grouping"; 3205 leaf soft-preempted-bandwidth { 3206 type uint32; 3207 description 3208 "The amount of soft-preempted bandwidth on 3209 this interface"; 3210 } 3211 list lsps { 3212 key 3213 "source destination tunnel-id lsp-id "+ 3214 "extended-tunnel-id"; 3215 description 3216 "List of LSPs that are soft-preempted"; 3217 leaf source { 3218 type leafref { 3219 path "/te:te/te:lsps-state/te:lsp/"+ 3220 "te:source"; 3221 } 3222 description 3223 "Tunnel sender address extracted from 3224 SENDER_TEMPLATE object"; 3225 reference "RFC3209"; 3226 } 3227 leaf destination { 3228 type leafref { 3229 path "/te:te/te:lsps-state/te:lsp/"+ 3230 "te:destination"; 3231 } 3232 description 3233 "Tunnel endpoint address extracted from 3234 SESSION object"; 3235 reference "RFC3209"; 3236 } 3237 leaf tunnel-id { 3238 type leafref { 3239 path "/te:te/te:lsps-state/te:lsp/"+ 3240 "te:tunnel-id"; 3241 } 3242 description 3243 "Tunnel identifier used in the SESSION 3244 that remains constant over the life 3245 of the tunnel."; 3246 reference "RFC3209"; 3247 } 3248 leaf lsp-id { 3249 type leafref { 3250 path "/te:te/te:lsps-state/te:lsp/"+ 3251 "te:lsp-id"; 3252 } 3253 description 3254 "Identifier used in the SENDER_TEMPLATE 3255 and the FILTER_SPEC that can be changed 3256 to allow a sender to share resources with 3257 itself."; 3258 reference "RFC3209"; 3259 } 3260 leaf extended-tunnel-id { 3261 type leafref { 3262 path "/te:te/te:lsps-state/te:lsp/"+ 3263 "te:extended-tunnel-id"; 3264 } 3265 description 3266 "Extended Tunnel ID of the LSP."; 3267 reference "RFC3209"; 3268 } 3269 leaf type { 3270 type leafref { 3271 path "/te:te/te:lsps-state/te:lsp/"+ 3272 "te:type"; 3273 } 3274 description "LSP type P2P or P2MP"; 3275 } 3276 } 3277 } 3278 } 3279 /* End of RSVP-TE interface groupings */ 3281 /* RSVP-TE FRR groupings */ 3282 grouping rsvp-te-frr-backups_config { 3283 description 3284 "Top level container for RSVP-TE FRR backup parameters"; 3285 leaf backup-bandwidth { 3286 type uint32; 3287 description 3288 "Maximum bandwidth this facility backup 3289 is allowed to protect"; 3290 } 3291 leaf backup-bandwidth-classtype { 3292 type uint32; 3293 description 3294 "Type of primary LSP bandwidth that the 3295 backup is allowed to protect."; 3296 } 3297 choice type { 3298 description 3299 "FRR backup tunnel type"; 3300 case static-tunnel { 3301 list static-backups { 3302 key "tunnel-name"; 3303 description 3304 "List of static backup tunnels that 3305 protect the RSVP-TE interface."; 3306 leaf tunnel-name { 3307 type string; 3308 description "FRR Backup tunnel"; 3309 } 3310 } 3311 } 3312 case auto-tunnel { 3313 leaf auto-backup-protection { 3314 type identityref { 3315 base te-mpls-types:backup-protection-type; 3316 } 3317 default 3318 te-mpls-types:backup-protection-node-link; 3319 description 3320 "Describes whether the backup should offer 3321 protection against link, node, or either"; 3322 } 3323 leaf auto-backup-path-computation { 3324 type identityref { 3325 base 3326 te-types:path-computation-srlg-type; 3327 } 3328 description 3329 "FRR backup computation type"; 3330 } 3331 } 3332 } 3333 } 3335 grouping rsvp-te-frr-backups { 3336 description 3337 "Top level grouping for RSVP-TE FRR backup properties."; 3338 container rsvp-te-frr-backups { 3339 if-feature te-types:frr-te; 3340 description 3341 "Top level container for RSVP-TE FRR backup 3342 properties."; 3343 container config { 3344 description 3345 "Configuration parameters for interface RSVP-TE 3346 FRR backup properties"; 3347 uses rsvp-te-frr-backups_config; 3348 } 3349 container state { 3350 config false; 3351 description 3352 "State parameters for interface RSVP-TE 3353 FRR backup properties"; 3354 uses rsvp-te-frr-backups_config; 3355 } 3356 } 3357 } 3359 grouping lps-backup-info_state { 3360 description "Backup/bypass LSP related information"; 3361 container backup-info { 3362 description 3363 "backup information"; 3365 leaf backup-tunnel-name { 3366 type string; 3367 description 3368 "If an LSP has an FRR backup LSP that can protect it, 3369 this field identifies the tunnel name of the backup LSP. 3370 Otherwise, this field is empty."; 3371 } 3373 leaf backup-frr-on { 3374 type uint8; 3375 description 3376 "Whether currently this backup is carrying traffic"; 3377 } 3379 leaf backup-protected-lsp-num { 3380 type uint32; 3381 description 3382 "Number of LSPs protected by this backup"; 3383 } 3384 } 3385 } 3387 grouping rsvp-frr-local-revert_config { 3388 description "RSVP-TE FRR local revertive grouping"; 3389 container rsvp-frr-local-revert { 3390 presence "Enable RSVP FRR local revertive recovery 3391 mode."; 3392 description 3393 "RSVP-TE FRR local revertive container"; 3394 leaf rsvp-frr-local-revert-delay { 3395 type uint32; 3396 description 3397 "Time to wait after primary link is restored 3398 before node attempts local revertive 3399 procedures."; 3400 } 3402 } 3403 } 3405 /*** End of RSVP-TE FRR backup information ***/ 3407 grouping globals-properties { 3408 description 3409 "Top level grouping for globals properties"; 3410 container config { 3411 description 3412 "Configuration parameters relating to 3413 global MPLS RSVP-TE properties"; 3414 uses rsvp-frr-local-revert_config; 3415 } 3416 container state { 3417 config false; 3418 description 3419 "State parameters relating to 3420 global MPLS RSVP-TE properties"; 3421 uses rsvp-frr-local-revert_config; 3422 } 3423 } 3425 /* RSVP-TE global propeerties */ 3426 augment "/rt:routing/rt:control-plane-protocols/" 3427 + "rt:control-plane-protocol/rsvp:rsvp" { 3428 description 3429 "RSVP-TE augmentation to RSVP globals"; 3430 uses globals-properties; 3431 } 3433 grouping rsvp-te-interface-attributes-mpls { 3434 description 3435 "Top level grouping for MPLS RSVP-TE interface 3436 properties."; 3437 container config { 3438 description 3439 "Configuration parameters relating to RSVP-TE 3440 bandwidth"; 3441 uses te-mpls-types:bandwidth-mpls-reservable; 3442 } 3443 container state { 3444 config false; 3445 description 3446 "State information associated with RSVP-TE 3447 bandwidth"; 3448 uses te-mpls-types:bandwidth-mpls-reservable; 3449 uses rsvp-te-interface-softpreemption_state; 3450 uses rsvp-te-interface_state; 3451 } 3452 } 3454 /* Linkage to the base RSVP all interfaces */ 3455 augment "/rt:routing/rt:control-plane-protocols/" 3456 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { 3457 description 3458 "Augmentations for RSVP-TE MPLS all interfaces properties"; 3459 /* To be added */ 3460 } 3462 /* Linkage to per RSVP interface */ 3463 augment "/rt:routing/rt:control-plane-protocols/" 3464 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 3465 "rsvp:interface" { 3466 description 3467 "Augmentations for RSVP-TE MPLS per interface properties"; 3468 /* To be added */ 3469 } 3471 /* add augmentation for sessions neighbors */ 3472 augment "/rt:routing/rt:control-plane-protocols/" 3473 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:sessions" { 3474 description 3475 "Augmentations for RSVP-TE MPLS sessions"; 3476 /* To be added */ 3477 } 3479 augment "/rt:routing/rt:control-plane-protocols/" 3480 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors" { 3481 description 3482 "Augmentations for RSVP-TE MPLS neighbors properties"; 3483 /* To be added */ 3484 } 3486 /** 3487 * Augmentation to TE generic module 3488 */ 3489 augment "/te:te/te:tunnels/te:tunnel" { 3490 description 3491 "Augmentations for RSVP-TE MPLS TE tunnel properties"; 3492 uses tunnel-properties-mpls; 3493 } 3495 augment "/te:te/te:lsps-state/te:lsp" { 3496 description 3497 "RSVP-TE MPLS LSP state properties"; 3499 uses lsp-properties-mpls; 3500 uses lps-backup-info_state; 3501 } 3503 augment "/te:te/te-dev:interfaces/te-dev:interface" { 3504 description 3505 "RSVP reservable bandwidth configuration properties"; 3506 uses rsvp-te-interface-attributes-mpls; 3507 uses rsvp-te-frr-backups; 3508 } 3509 } 3511 3513 4. IANA Considerations 3515 This document registers the following URIs in the IETF XML registry 3516 [RFC3688]. Following the format in [RFC3688], the following 3517 registration is requested to be made. 3519 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp XML: N/A, the requested 3520 URI is an XML namespace. 3522 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-te XML: N/A, the requested 3523 URI is an XML namespace. 3525 This document registers a YANG module in the YANG Module Names 3526 registry [RFC6020]. 3528 name: ietf-rsvp namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp 3529 prefix: ietf-rsvp reference: RFC3209 3531 name: ietf-rsvp-te namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp- 3532 te prefix: ietf-rsvp-te reference: RFC3209 3534 5. Security Considerations 3536 The YANG module defined in this memo is designed to be accessed via 3537 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 3538 secure transport layer and the mandatory-to-implement secure 3539 transport is SSH [RFC6242]. The NETCONF access control model 3540 [RFC6536] provides means to restrict access for particular NETCONF 3542 users to a pre-configured subset of all available NETCONF protocol 3543 operations and content. 3545 There are a number of data nodes defined in the YANG module which are 3546 writable/creatable/deletable (i.e., config true, which is the 3547 default). These data nodes may be considered sensitive or vulnerable 3548 in some network environments. Write operations (e.g., ) 3549 to these data nodes without proper protection can have a negative 3550 effect on network operations. 3552 6. Acknowledgement 3554 The authors would like to thank Lou Berger for reviewing and 3555 providing valuable feedback on this document. 3557 7. References 3559 7.1. Normative References 3561 [I-D.ietf-netmod-routing-cfg] 3562 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 3563 Management", draft-ietf-netmod-routing-cfg-24 (work in 3564 progress), October 2016. 3566 [I-D.ietf-teas-yang-te] 3567 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., 3568 Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data 3569 Model for Traffic Engineering Tunnels and Interfaces", 3570 draft-ietf-teas-yang-te-05 (work in progress), October 3571 2016. 3573 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 3574 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 3575 RFC2119, March 1997, 3576 . 3578 [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S. 3579 Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 3580 Functional Specification", RFC 2205, DOI 10.17487/RFC2205, 3581 September 1997, . 3583 [RFC2747] Baker, F., Lindell, B., and M. Talwar, "RSVP Cryptographic 3584 Authentication", RFC 2747, DOI 10.17487/RFC2747, January 3585 2000, . 3587 [RFC2961] Berger, L., Gan, D., Swallow, G., Pan, P., Tommasi, F., 3588 and S. Molendini, "RSVP Refresh Overhead Reduction 3589 Extensions", RFC 2961, DOI 10.17487/RFC2961, April 2001, 3590 . 3592 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 3593 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 3594 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 3595 . 3597 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 3598 Switching (GMPLS) Signaling Resource ReserVation Protocol- 3599 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, DOI 3600 10.17487/RFC3473, January 2003, 3601 . 3603 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 3604 DOI 10.17487/RFC3688, January 2004, 3605 . 3607 [RFC5063] Satyanarayana, A., Ed. and R. Rahman, Ed., "Extensions to 3608 GMPLS Resource Reservation Protocol (RSVP) Graceful 3609 Restart", RFC 5063, DOI 10.17487/RFC5063, October 2007, 3610 . 3612 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 3613 the Network Configuration Protocol (NETCONF)", RFC 6020, 3614 DOI 10.17487/RFC6020, October 2010, 3615 . 3617 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 3618 and A. Bierman, Ed., "Network Configuration Protocol 3619 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 3620 . 3622 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 3623 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 3624 . 3626 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 3627 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 3628 10.17487/RFC6536, March 2012, 3629 . 3631 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 3632 6991, DOI 10.17487/RFC6991, July 2013, 3633 . 3635 7.2. Informative References 3637 [I-D.openconfig-mpls-consolidated-model] 3638 George, J., Fang, L., eric.osborne@level3.com, e., and R. 3639 Shakir, "MPLS / TE Model for Service Provider Networks", 3640 draft-openconfig-mpls-consolidated-model-02 (work in 3641 progress), October 2015. 3643 [I-D.openconfig-netmod-opstate] 3644 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 3645 of Operational State Data in YANG", draft-openconfig- 3646 netmod-opstate-01 (work in progress), July 2015. 3648 Authors' Addresses 3650 Vishnu Pavan Beeram 3651 Juniper Networks 3653 Email: vbeeram@juniper.net 3655 Tarek Saad (editor) 3656 Cisco Systems Inc 3658 Email: tsaad@cisco.com 3660 Rakesh Gandhi 3661 Cisco Systems Inc 3663 Email: rgandhi@cisco.com 3665 Xufeng Liu 3666 Ericsson 3668 Email: xliu@kuatrotech.com 3670 Himanshu Shah 3671 Ciena 3673 Email: hshah@ciena.com 3675 Xia Chen 3676 Huawei Technologies 3678 Email: jescia.chenxia@huawei.com 3679 Raqib Jones 3680 Brocade 3682 Email: raqib@Brocade.com 3684 Bin Wen 3685 Comcast 3687 Email: Bin_Wen@cable.comcast.com