idnits 2.17.1 draft-ietf-teas-yang-rsvp-04.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 535 has weird spacing: '...terface if:...' == Line 604 has weird spacing: '...ination ine...' == Line 859 has weird spacing: '...gnaling param...' == (3 more instances...) -- The document date (October 03, 2016) is 2762 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-23 == Outdated reference: A later version (-36) exists of draft-ietf-teas-yang-te-04 ** 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: April 6, 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 03, 2016 19 A YANG Data Model for Resource Reservation Protocol (RSVP) 20 draft-ietf-teas-yang-rsvp-04 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 April 6, 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 . . . . . . . . . . . . . . 49 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:routing-protocols/rt:routing-protocol: 424 +--rw rsvp! 425 +--rw globals 426 | +--rw config 427 | | +--rw graceful-restart 428 | | +--rw enabled? boolean 429 | +--ro state 430 | +--ro graceful-restart 431 | | +--ro enabled? boolean 432 | +--ro packets-stats 433 | | +--ro sent? yang:counter32 434 | | +--ro rcvd? yang:counter32 435 | +--ro protocol-stats 436 | | +--ro ack-sent? yang:counter32 437 | | +--ro ack-rcvd? yang:counter32 438 | | +--ro bundle-sent? yang:counter32 439 | | +--ro bundle-rcvd? yang:counter32 440 | | +--ro hello-sent? yang:counter32 441 | | +--ro hello-rcvd? yang:counter32 442 | | +--ro integrity-challenge-sent? yang:counter32 443 | | +--ro integrity-challenge-rcvd? yang:counter32 444 | | +--ro integrity-response-sent? yang:counter32 445 | | +--ro integrity-response-rcvd? yang:counter32 446 | | +--ro notify-sent? yang:counter32 447 | | +--ro notify-rcvd? yang:counter32 448 | | +--ro path-sent? yang:counter32 449 | | +--ro path-rcvd? yang:counter32 450 | | +--ro path-err-sent? yang:counter32 451 | | +--ro path-err-rcvd? yang:counter32 452 | | +--ro path-tear-sent? yang:counter32 453 | | +--ro path-tear-rcvd? yang:counter32 454 | | +--ro resv-sent? yang:counter32 455 | | +--ro resv-rcvd? yang:counter32 456 | | +--ro resv-confirm-sent? yang:counter32 457 | | +--ro resv-confirm-rcvd? yang:counter32 458 | | +--ro resv-err-sent? yang:counter32 459 | | +--ro resv-err-rcvd? yang:counter32 460 | | +--ro resv-tear-sent? yang:counter32 461 | | +--ro resv-tear-rcvd? yang:counter32 462 | | +--ro summary-refresh-sent? yang:counter32 463 | | +--ro summary-refresh-rcvd? yang:counter32 464 | | +--ro unknown-recv? yang:counter32 465 | +--ro errors-stats 466 | +--ro authenticate? yang:counter64 467 | +--ro checksum? yang:counter64 468 | +--ro packet-len? yang:counter64 470 3.1.1.2. Interface Data 472 This branch of the data model covers configuration and state elements 473 relevant to one or all RSVP interfaces. Any data configuration 474 applied at the "interfaces" container level are equally applicable to 475 all interfaces - unless overridden by explicit configuration under a 476 specific interface. 478 +--rw interfaces 479 | +--rw config 480 | | +--rw refresh-reduction 481 | | | +--rw enabled? boolean 482 | | +--rw rsvp-hellos 483 | | | +--rw enabled? boolean 484 | | +--rw authentication 485 | | +--rw enabled? boolean 486 | | +--rw password? string 487 | | +--rw algorithm? identityref 488 | +--ro state 489 | | +--ro refresh-reduction 490 | | | +--ro enabled? boolean 491 | | +--ro rsvp-hellos 492 | | | +--ro enabled? boolean 493 | | +--ro authentication 494 | | | +--ro enabled? boolean 495 | | | +--ro password? string 496 | | | +--ro algorithm? identityref 497 | | +--ro packets-stats 498 | | | +--ro sent? yang:counter32 499 | | | +--ro rcvd? yang:counter32 500 | | +--ro protocol-stats 501 | | | +--ro ack-sent? yang:counter32 502 | | | +--ro ack-rcvd? yang:counter32 503 | | | +--ro bundle-sent? yang:counter32 504 | | | +--ro bundle-rcvd? yang:counter32 505 | | | +--ro hello-sent? yang:counter32 506 | | | +--ro hello-rcvd? yang:counter32 507 | | | +--ro integrity-challenge-sent? yang:counter32 508 | | | +--ro integrity-challenge-rcvd? yang:counter32 509 | | | +--ro integrity-response-sent? yang:counter32 510 | | | +--ro integrity-response-rcvd? yang:counter32 511 | | | +--ro notify-sent? yang:counter32 512 | | | +--ro notify-rcvd? yang:counter32 513 | | | +--ro path-sent? yang:counter32 514 | | | +--ro path-rcvd? yang:counter32 515 | | | +--ro path-err-sent? yang:counter32 516 | | | +--ro path-err-rcvd? yang:counter32 517 | | | +--ro path-tear-sent? yang:counter32 518 | | | +--ro path-tear-rcvd? yang:counter32 519 | | | +--ro resv-sent? yang:counter32 520 | | | +--ro resv-rcvd? yang:counter32 521 | | | +--ro resv-confirm-sent? yang:counter32 522 | | | +--ro resv-confirm-rcvd? yang:counter32 523 | | | +--ro resv-err-sent? yang:counter32 524 | | | +--ro resv-err-rcvd? yang:counter32 525 | | | +--ro resv-tear-sent? yang:counter32 526 | | | +--ro resv-tear-rcvd? yang:counter32 527 | | | +--ro summary-refresh-sent? yang:counter32 528 | | | +--ro summary-refresh-rcvd? yang:counter32 529 | | | +--ro unknown-recv? yang:counter32 530 | | +--ro errors-stats 531 | | +--ro authenticate? yang:counter64 532 | | +--ro checksum? yang:counter64 533 | | +--ro packet-len? yang:counter64 534 | +--rw interface* [interface] 535 | +--rw interface if:interface-ref 536 | +--rw config 537 | | +--rw refresh-reduction 538 | | | +--rw enabled? boolean 539 | | +--rw rsvp-hellos 540 | | | +--rw enabled? boolean 541 | | +--rw authentication 542 | | +--rw enabled? boolean 543 | | +--rw password? string 544 | | +--rw algorithm? identityref 545 | +--ro state 546 | +--ro refresh-reduction 547 | | +--ro enabled? boolean 548 | +--ro rsvp-hellos 549 | | +--ro enabled? boolean 550 | +--ro authentication 551 | | +--ro enabled? boolean 552 | | +--ro password? string 553 | | +--ro algorithm? identityref 554 | +--ro packets-stats 555 | | +--ro sent? yang:counter32 556 | | +--ro rcvd? yang:counter32 557 | +--ro protocol-stats 558 | | +--ro ack-sent? yang:counter32 559 | | +--ro ack-rcvd? yang:counter32 560 | | +--ro bundle-sent? yang:counter32 561 | | +--ro bundle-rcvd? yang:counter32 562 | | +--ro hello-sent? yang:counter32 563 | | +--ro hello-rcvd? yang:counter32 564 | | +--ro integrity-challenge-sent? yang:counter32 565 | | +--ro integrity-challenge-rcvd? yang:counter32 566 | | +--ro integrity-response-sent? yang:counter32 567 | | +--ro integrity-response-rcvd? yang:counter32 568 | | +--ro notify-sent? yang:counter32 569 | | +--ro notify-rcvd? yang:counter32 570 | | +--ro path-sent? yang:counter32 571 | | +--ro path-rcvd? yang:counter32 572 | | +--ro path-err-sent? yang:counter32 573 | | +--ro path-err-rcvd? yang:counter32 574 | | +--ro path-tear-sent? yang:counter32 575 | | +--ro path-tear-rcvd? yang:counter32 576 | | +--ro resv-sent? yang:counter32 577 | | +--ro resv-rcvd? yang:counter32 578 | | +--ro resv-confirm-sent? yang:counter32 579 | | +--ro resv-confirm-rcvd? yang:counter32 580 | | +--ro resv-err-sent? yang:counter32 581 | | +--ro resv-err-rcvd? yang:counter32 582 | | +--ro resv-tear-sent? yang:counter32 583 | | +--ro resv-tear-rcvd? yang:counter32 584 | | +--ro summary-refresh-sent? yang:counter32 585 | | +--ro summary-refresh-rcvd? yang:counter32 586 | | +--ro unknown-recv? yang:counter32 587 | +--ro errors-stats 588 | +--ro authenticate? yang:counter64 589 | +--ro checksum? yang:counter64 590 | +--ro packet-len? yang:counter64 592 3.1.1.3. Session Data 594 This branch of the data model covers configuration of elements 595 relevant to RSVP neighbors. This would be discussed in detail in 596 future revisions. 598 module: ietf-rsvp 599 +--rw rsvp! 600 +--rw sessions 601 | +--rw session* [dst_port source destination] 602 | +--rw dst_port uint16 603 | +--rw source inet:ip-address 604 | +--rw destination inet:ip-address 605 | +--rw config 606 | +--ro state 608 3.1.1.4. Neighbor Data 610 This branch of the data model covers configuration of elements 611 relevant to RSVP sessions. This would be discussed in detail in 612 future revisions. 614 module: ietf-rsvp 615 +--rw rsvp! 616 +--rw neighbors 617 +--rw neighbor* [address] 618 +--rw address inet:ip-address 619 +--rw neighbor-attributes 620 +--rw config 621 +--ro state 622 +--ro epoch? uint32 623 +--ro expiry-time? uint32 624 +--ro graceful-restart 625 | +--ro enabled? boolean 626 | +--ro local-restart-time? uint32 627 | +--ro local-recovery-time? uint32 628 | +--ro nbr-restart-time? uint32 629 | +--ro nbr-recovery-time? uint32 630 | +--ro helper-mode 631 | +--ro helper-mode? boolean 632 | +--ro max-helper-restart-time? uint32 633 | +--ro max-helper-recovery-time? uint32 634 | +--ro nbr-restart-ttd? uint32 635 | +--ro nbr-recovery-ttd? uint32 636 +--ro hello-status? enumeration {hellos}? 637 +--ro interface? if:interface-ref 638 +--ro neighbor-state? enumeration 639 +--ro psb-count? uint32 640 +--ro rsb-count? uint32 641 +--ro refresh-reduction-capable? boolean 642 +--ro restart-count? uint32 643 +--ro restart-time? yang:date-and-time 645 3.1.2. RPC and Notification Data 647 TBD. 649 3.1.3. YANG Module 651 file "ietf-rsvp@2016-10-02.yang" 653 module ietf-rsvp { 655 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp"; 657 /* Replace with IANA when assigned */ 658 prefix "rsvp"; 660 import ietf-interfaces { 661 prefix "if"; 663 } 665 import ietf-inet-types { 666 prefix inet; 667 } 669 import ietf-yang-types { 670 prefix "yang"; 671 } 673 import ietf-routing { 674 prefix "rt"; 675 } 677 organization 678 "IETF Traffic Engineering Architecture and Signaling (TEAS) 679 Working Group"; 681 contact 682 "WG Web: 683 WG List: 685 WG Chair: Lou Berger 686 688 WG Chair: Vishnu Pavan Beeram 689 691 Editor: Vishnu Pavan Beeram 692 694 Editor: Tarek Saad 695 697 Editor: Rakesh Gandhi 698 700 Editor: Himanshu Shah 701 703 Editor: Xufeng Liu 704 706 Editor: Xia Chen 707 709 Editor: Raqib Jones 710 712 Editor: Bin Wen 713 "; 715 description 716 "This module contains the RSVP YANG data model."; 718 revision "2016-10-02" { 719 description "Latest revision of RSVP yang module."; 720 reference "RFC2205"; 721 } 723 identity rsvp { 724 base "rt:routing-protocol"; 725 description "RSVP protocol"; 726 } 728 identity hash-algorithm { 729 description 730 "Base identity for message-digest algorithm"; 731 } 733 identity MD5 { 734 base hash-algorithm; 735 description 736 "MD5 hash algorithm"; 737 reference "RFC1321"; 738 } 740 identity SHA-1 { 741 base hash-algorithm; 742 description 743 "SHA-1 hash algorithm"; 744 reference "NIST, FIPS PUB 180-1: Secure Hash Standard"; 745 } 747 grouping graceful-restart_config { 748 description 749 "Base configuration parameters relating to RSVP 750 Graceful-Restart"; 751 leaf enabled { 752 type boolean; 753 description 754 "'true' if RSVP Graceful Restart is enabled. 755 'false' if RSVP Graceful Restart is disabled."; 756 } 757 } 758 grouping graceful-restart { 759 description 760 "Top level grouping for RSVP graceful-restart 761 parameters"; 762 container graceful-restart { 763 description 764 "Top level container for RSVP graceful-restart"; 765 uses graceful-restart_config; 766 } 767 } 769 grouping refresh-reduction_config { 770 description 771 "Configuration parameters relating to RSVP 772 refresh reduction"; 774 leaf enabled { 775 type boolean; 776 description 777 "'true' if RSVP Refresh Reduction is enabled. 778 'false' if RSVP Refresh Reduction is disabled."; 779 } 780 } 782 grouping refresh-reduction { 783 description 784 "Top level grouping for RSVP refresh reduction 785 parameters"; 786 container refresh-reduction { 787 description 788 "Top level container for RSVP refresh reduction 789 parameters"; 790 uses refresh-reduction_config; 791 } 792 } 794 grouping authentication_config { 795 description 796 "Configuration parameters relating to RSVP 797 authentication"; 798 leaf enabled { 799 type boolean; 800 description 801 "'true' if RSVP Authenticaiton is enabled. 802 'false' if RSVP Authenticaiton is disabled."; 803 } 804 leaf password { 805 type string; 806 description 807 "An authentication key string"; 808 } 809 leaf algorithm { 810 type identityref { 811 base hash-algorithm; 812 } 813 description 814 "Cryptographic hash algorithm"; 815 } 816 } 818 grouping authentication { 819 description 820 "Top level grouping for RSVP authentication parameters"; 821 container authentication { 822 description 823 "Top level container for RSVP authentication 824 parameters"; 825 uses authentication_config; 826 } 827 } 829 grouping rsvp-hellos_config { 830 description 831 "Configuration parameters relating to RSVP 832 hellos"; 833 leaf enabled { 834 type boolean; 835 description 836 "'true' if RSVP Hello is enabled. 837 'false' if RSVP Hello is disabled."; 838 } 839 } 841 grouping rsvp-hellos { 842 description 843 "Top level grouping for RSVP hellos parameters"; 844 container rsvp-hellos { 845 description 846 "Top level container for RSVP hello parameters"; 847 uses rsvp-hellos_config; 848 } 849 } 851 grouping signaling-parameters_config { 852 description 853 "Configuration parameters relating to RSVP 854 signaling"; 855 } 857 grouping signaling-parameters { 858 description 859 "Top level grouping for RSVP signaling parameters"; 860 uses signaling-parameters_config; 861 } 863 grouping session-attributes { 864 description 865 "Top level grouping for RSVP session properties"; 866 container config { 867 description 868 "Configuration for session properties"; 869 } 870 container state { 871 config false; 872 description 873 "State information associated with RSVP 874 session properties"; 875 } 876 } 878 grouping neighbor-attributes { 879 description 880 "Top level grouping for RSVP neighbor properties"; 881 container neighbor-attributes { 882 description 883 "Top level container for RSVP neighbor properties"; 884 container config { 885 description 886 "Configuration for neighbor properties"; 887 } 888 container state { 889 config false; 890 description 891 "State information associated with RSVP 892 neighbor properties"; 893 uses neighbor-derived_state; 894 } 895 } 896 } 898 grouping statistics-packets_state { 899 description 900 "Packet statistics grouping"; 901 container packets-stats { 902 description 903 "Packet statistics container"; 904 leaf sent { 905 type yang:counter32; 906 description 907 "Packet sent count"; 908 } 910 leaf rcvd { 911 type yang:counter32; 912 description 913 "Packet received count"; 914 } 915 } 916 } 918 grouping statistics-protocol_state { 919 description 920 "RSVP protocol statistics grouping"; 921 container protocol-stats { 922 description 923 "RSVP protocol statistics container"; 924 leaf ack-sent { 925 type yang:counter32; 926 description 927 "Hello sent count"; 928 } 930 leaf ack-rcvd { 931 type yang:counter32; 932 description 933 "Hello received count"; 934 } 936 leaf bundle-sent { 937 type yang:counter32; 938 description 939 "Bundle sent count"; 940 } 942 leaf bundle-rcvd { 943 type yang:counter32; 944 description 945 "Bundle received count"; 946 } 948 leaf hello-sent { 949 type yang:counter32; 950 description 951 "Hello sent count"; 952 } 954 leaf hello-rcvd { 955 type yang:counter32; 956 description 957 "Hello received count"; 958 } 960 leaf integrity-challenge-sent { 961 type yang:counter32; 962 description 963 "Integrity Challenge sent count"; 964 } 966 leaf integrity-challenge-rcvd { 967 type yang:counter32; 968 description 969 "Integrity Challenge received count"; 970 } 972 leaf integrity-response-sent { 973 type yang:counter32; 974 description 975 "Integrity Response sent count"; 976 } 978 leaf integrity-response-rcvd { 979 type yang:counter32; 980 description 981 "Integrity Response received count"; 982 } 984 leaf notify-sent { 985 type yang:counter32; 986 description 987 "Notify sent count"; 988 } 990 leaf notify-rcvd { 991 type yang:counter32; 992 description 993 "Notify received count"; 994 } 996 leaf path-sent { 997 type yang:counter32; 998 description 999 "Path sent count"; 1000 } 1002 leaf path-rcvd { 1003 type yang:counter32; 1004 description 1005 "Path received count"; 1006 } 1008 leaf path-err-sent { 1009 type yang:counter32; 1010 description 1011 "Path error sent count"; 1012 } 1014 leaf path-err-rcvd { 1015 type yang:counter32; 1016 description 1017 "Path error received count"; 1018 } 1020 leaf path-tear-sent { 1021 type yang:counter32; 1022 description 1023 "Path tear sent count"; 1024 } 1026 leaf path-tear-rcvd { 1027 type yang:counter32; 1028 description 1029 "Path tear received count"; 1030 } 1032 leaf resv-sent { 1033 type yang:counter32; 1034 description 1035 "Resv sent count"; 1036 } 1038 leaf resv-rcvd { 1039 type yang:counter32; 1040 description 1041 "Resv received count"; 1042 } 1044 leaf resv-confirm-sent { 1045 type yang:counter32; 1046 description 1047 "Confirm sent count"; 1048 } 1050 leaf resv-confirm-rcvd { 1051 type yang:counter32; 1052 description 1053 "Confirm received count"; 1054 } 1056 leaf resv-err-sent { 1057 type yang:counter32; 1058 description 1059 "Resv error sent count"; 1060 } 1062 leaf resv-err-rcvd { 1063 type yang:counter32; 1064 description 1065 "Resv error received count"; 1066 } 1068 leaf resv-tear-sent { 1069 type yang:counter32; 1070 description 1071 "Resv tear sent count"; 1072 } 1074 leaf resv-tear-rcvd { 1075 type yang:counter32; 1076 description 1077 "Resv tear received count"; 1078 } 1080 leaf summary-refresh-sent { 1081 type yang:counter32; 1082 description 1083 "Summary refresh sent count"; 1084 } 1086 leaf summary-refresh-rcvd { 1087 type yang:counter32; 1088 description 1089 "Summary refresh received count"; 1090 } 1092 leaf unknown-recv { 1093 type yang:counter32; 1094 description 1095 "Unknown packet received count"; 1096 } 1097 } 1098 } 1100 grouping statistics-errors_state { 1101 description 1102 "Error statistics state grouping"; 1103 container errors-stats { 1104 description 1105 "Error statistics state container"; 1106 leaf authenticate { 1107 type yang:counter64; 1108 description 1109 "The total number of packets received with an 1110 authentication failure."; 1111 } 1113 leaf checksum { 1114 type yang:counter64; 1115 description 1116 "The total number of packets received with an invalid 1117 checksum value."; 1118 } 1120 leaf packet-len { 1121 type yang:counter64; 1122 description 1123 "The total number of packets received with an invalid 1124 packet length."; 1125 } 1126 } 1127 } // statistics_state 1129 grouping statistics_state { 1130 description "RSVP statistic attributes."; 1131 uses statistics-packets_state; 1132 uses statistics-protocol_state; 1133 uses statistics-errors_state; 1134 } 1136 grouping neighbor-derived_state { 1137 description 1138 "Derived state at neighbor level."; 1140 leaf epoch { 1141 type uint32; 1142 description 1143 "Neighbor epoch."; 1144 } 1146 leaf expiry-time { 1147 type uint32; 1148 units seconds; 1149 description 1150 "Neighbor expiry time after which the neighbor state 1151 is purged if no states associated with it"; 1152 } 1154 container graceful-restart { 1155 description 1156 "Graceful restart information."; 1158 leaf enabled { 1159 type boolean; 1160 description 1161 "'true' if graceful restart is enabled for the 1162 neighbor."; 1163 } 1165 leaf local-restart-time { 1166 type uint32; 1167 units seconds; 1168 description 1169 "Local node restart time"; 1170 } 1172 leaf local-recovery-time { 1173 type uint32; 1174 units seconds; 1175 description 1176 "Local node recover time"; 1177 } 1179 leaf nbr-restart-time { 1180 type uint32; 1181 units seconds; 1182 description 1183 "Neighbor restart time"; 1184 } 1186 leaf nbr-recovery-time { 1187 type uint32; 1188 units seconds; 1189 description 1190 "Neighbor recover time"; 1191 } 1193 container helper-mode { 1194 description 1195 "Helper mode information "; 1197 leaf helper-mode { 1198 type boolean; 1199 description 1200 "'true' if helper mode is enabled."; 1201 } 1203 leaf max-helper-restart-time { 1204 type uint32; 1205 units seconds; 1206 description 1207 "The time the router or switch waits after it 1208 discovers that a neighboring router has gone down 1209 before it declares the neighbor down"; 1210 } 1212 leaf max-helper-recovery-time { 1213 type uint32; 1214 units seconds; 1215 description 1216 "The amount of time the router retains the state of its 1217 RSVP neighbors while they undergo a graceful restart"; 1218 } 1220 leaf nbr-restart-ttd { 1221 type uint32; 1222 units seconds; 1223 description 1224 "Number of seconds remaining for neighbor to send 1225 Hello message after restart."; 1226 } 1228 leaf nbr-recovery-ttd { 1229 type uint32; 1230 units seconds; 1231 description 1232 "Number of seconds remaining for neighbor to 1233 refresh."; 1234 } 1235 } // helper-mode 1236 } // graceful-restart 1237 leaf hello-status { 1238 type enumeration { 1239 enum "enabled" { 1240 description 1241 "Enabled"; 1242 } 1243 enum "disabled" { 1244 description 1245 "Disabled"; 1246 } 1247 enum "restarting" { 1248 description 1249 "Restarting"; 1250 } 1251 } 1252 description 1253 "Hello status"; 1254 } 1256 leaf interface { 1257 type if:interface-ref; 1258 description 1259 "Interface to this neighbor."; 1260 } 1262 leaf neighbor-state { 1263 type enumeration { 1264 enum "up" { 1265 description 1266 "up"; 1267 } 1268 enum "down" { 1269 description 1270 "down"; 1271 } 1272 enum "hello-disable" { 1273 description 1274 "hello-disable"; 1275 } 1276 enum "restarting" { 1277 description 1278 "restarting"; 1279 } 1280 } 1281 description 1282 "Neighbor state"; 1283 } 1284 leaf psb-count { 1285 type uint32; 1286 description 1287 "Number of PSB state currently referencing the 1288 neighbor."; 1289 } 1291 leaf rsb-count { 1292 type uint32; 1293 description 1294 "Number of RSB state currently referencing the 1295 neighbor."; 1296 } 1298 leaf refresh-reduction-capable { 1299 type boolean; 1300 description 1301 "Whether neighbor is refresh reduction capable."; 1302 } 1304 leaf restart-count { 1305 type uint32; 1306 description 1307 "Number of times this neighbor restart"; 1308 } 1310 leaf restart-time { 1311 type yang:date-and-time; 1312 description 1313 "Last restart time of the neighbor"; 1314 } 1315 } // neighbor-derived_state 1317 grouping global-attributes { 1318 description 1319 "Top level grouping for RSVP global properties"; 1320 container config { 1321 description 1322 "Configuration globals properties"; 1323 uses graceful-restart; 1324 } 1325 container state { 1326 config false; 1327 description 1328 "State information associated with RSVP 1329 global properties"; 1330 uses graceful-restart; 1331 uses statistics_state; 1333 } 1334 } 1336 grouping intf-attributes { 1337 description 1338 "Top level grouping for RSVP interface properties"; 1339 container config { 1340 description 1341 "Configuration parameters relating to 1342 RSVP interface parameters"; 1343 uses signaling-parameters; 1344 uses refresh-reduction; 1345 uses rsvp-hellos; 1346 uses authentication; 1347 } 1348 container state { 1349 config false; 1350 description 1351 "State information associated with RSVP 1352 interface parameters"; 1353 uses signaling-parameters; 1354 uses refresh-reduction; 1355 uses rsvp-hellos; 1356 uses authentication; 1357 uses statistics_state; 1358 } 1359 } 1361 augment "/rt:routing/rt:control-plane-protocols/" 1362 + "rt:control-plane-protocol" { 1363 when "rt:type = 'rsvp:rsvp'" { 1364 description 1365 "This augment is only valid when routing protocol 1366 instance type is RSVP."; 1367 } 1368 description 1369 "RSVP protocol augmentation"; 1370 container rsvp { 1371 presence "Enable RSVP feature"; 1372 description "RSVP feature container"; 1373 container globals { 1374 description "RSVP global properties."; 1375 uses global-attributes; 1376 } 1378 container interfaces { 1379 description 1380 "RSVP interfaces container"; 1382 uses intf-attributes; 1384 list interface { 1385 key "interface"; 1386 description 1387 "RSVP interfaces."; 1388 leaf interface { 1389 type if:interface-ref; 1390 description 1391 "RSVP interface."; 1392 } 1393 uses intf-attributes; 1394 } 1395 } 1397 container sessions { 1398 description 1399 "RSVP sessions container"; 1400 list session { 1401 key "dst_port source destination"; 1402 description 1403 "List of RSVP sessions"; 1404 leaf dst_port { 1405 type uint16; 1406 description "RSVP destination port"; 1407 reference "RFC2205"; 1408 } 1409 leaf source { 1410 type inet:ip-address; 1411 description "RSVP source address"; 1412 reference "RFC2205"; 1413 } 1414 leaf destination { 1415 type inet:ip-address; 1416 description "RSVP destination address"; 1417 reference "RFC2205"; 1418 } 1419 uses session-attributes; 1420 } 1421 } 1423 container neighbors { 1424 description 1425 "RSVP neighbors container"; 1426 list neighbor { 1427 key "address"; 1428 description 1429 "List of RSVP neighbors"; 1431 leaf address { 1432 type inet:ip-address; 1433 description 1434 "Neighbor address"; 1435 } 1436 uses neighbor-attributes; 1437 } 1438 } 1439 } 1440 } 1441 } 1443 1445 3.2. RSVP Extended YANG Model 1447 The RSVP extended YANG model covers optional configuration(s) for 1448 RSVP core feature(s). It also covers non-core RSVP feature(s) that 1449 are negotiated with "if-feature" checks. 1451 3.2.1. Configuration and State Data 1453 Figure 3 shows the YANG tree representation for configuration and 1454 state data that is augmenting the RSVP basic module: 1456 module: ietf-rsvp-extended 1457 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1458 rsvp:globals/rsvp:config/rsvp:graceful-restart: 1459 +--rw restart-time? uint32 1460 +--rw recovery-time? uint32 1461 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1462 rsvp:globals/rsvp:state/rsvp:graceful-restart: 1463 +--ro restart-time? uint32 1464 +--ro recovery-time? uint32 1465 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1466 rsvp:globals/rsvp:state/rsvp:packets-stats: 1467 +--ro discontinuity-time? yang:date-and-time 1468 +--ro tx-dropped? yang:counter32 1469 +--ro rx-dropped? yang:counter32 1470 +--ro tx-error? yang:counter32 1471 +--ro rx-error? yang:counter32 1472 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1473 rsvp:globals/rsvp:state/rsvp:protocol-stats: 1474 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1475 rsvp:globals/rsvp:state/rsvp:errors-stats: 1476 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1477 rsvp:interfaces/rsvp:config: 1478 +--rw refresh-interval? uint32 1479 +--rw refresh-misses? uint32 1480 +--rw checksum? uint32 1481 +--rw patherr-state-removal? empty 1482 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1483 rsvp:interfaces/rsvp:state: 1484 +--ro refresh-interval? uint32 1485 +--ro refresh-misses? uint32 1486 +--ro checksum? uint32 1487 +--ro patherr-state-removal? empty 1488 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1489 rsvp:interfaces/rsvp:config/rsvp:refresh-reduction: 1490 +--rw bundle-message-max-size? uint32 1491 +--rw reliable-ack-hold-time? uint32 1492 +--rw reliable-ack-max-size? uint32 1493 +--rw reliable-retransmit-time? uint32 1494 +--rw reliable-srefresh? empty 1495 +--rw summary-max-size? uint32 1496 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1497 rsvp:interfaces/rsvp:state/rsvp:refresh-reduction: 1498 +--ro bundle-message-max-size? uint32 1499 +--ro reliable-ack-hold-time? uint32 1500 +--ro reliable-ack-max-size? uint32 1501 +--ro reliable-retransmit-time? uint32 1502 +--ro reliable-srefresh? empty 1503 +--ro summary-max-size? uint32 1504 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1505 rsvp:interfaces/rsvp:config/rsvp:rsvp-hellos: 1506 +--rw interface-based? empty 1507 +--rw hello-interval? uint32 1508 +--rw hello-misses? uint32 1509 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1510 rsvp:interfaces/rsvp:state/rsvp:rsvp-hellos: 1511 +--ro interface-based? empty 1512 +--ro hello-interval? uint32 1513 +--ro hello-misses? uint32 1514 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1515 rsvp:interfaces/rsvp:config/rsvp:authentication: 1516 +--rw lifetime? uint32 1517 +--rw window-size? uint32 1518 +--rw challenge? empty 1519 +--rw retransmits? uint32 1520 +--rw key-chain? string 1521 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1522 rsvp:interfaces/rsvp:state/rsvp:authentication: 1523 +--ro lifetime? uint32 1524 +--ro window-size? uint32 1525 +--ro challenge? empty 1526 +--ro retransmits? uint32 1527 +--ro key-chain? string 1528 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1529 rsvp:interfaces/rsvp:interface/rsvp:config: 1530 +--rw refresh-interval? uint32 1531 +--rw refresh-misses? uint32 1532 +--rw checksum? uint32 1533 +--rw patherr-state-removal? empty 1534 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1535 rsvp:interfaces/rsvp:interface/rsvp:state: 1536 +--ro refresh-interval? uint32 1537 +--ro refresh-misses? uint32 1538 +--ro checksum? uint32 1539 +--ro patherr-state-removal? empty 1540 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1541 rsvp:interfaces/rsvp:interface/rsvp:config/rsvp:refresh-reduction: 1542 +--rw bundle-message-max-size? uint32 1543 +--rw reliable-ack-hold-time? uint32 1544 +--rw reliable-ack-max-size? uint32 1545 +--rw reliable-retransmit-time? uint32 1546 +--rw reliable-srefresh? empty 1547 +--rw summary-max-size? uint32 1548 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1549 rsvp:interfaces/rsvp:interface/rsvp:state/rsvp:refresh-reduction: 1550 +--ro bundle-message-max-size? uint32 1551 +--ro reliable-ack-hold-time? uint32 1552 +--ro reliable-ack-max-size? uint32 1553 +--ro reliable-retransmit-time? uint32 1554 +--ro reliable-srefresh? empty 1555 +--ro summary-max-size? uint32 1556 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1557 rsvp:interfaces/rsvp:interface/rsvp:config/rsvp:rsvp-hellos: 1558 +--rw interface-based? empty 1559 +--rw hello-interval? uint32 1560 +--rw hello-misses? uint32 1561 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1562 rsvp:interfaces/rsvp:interface/rsvp:state/rsvp:rsvp-hellos: 1563 +--ro interface-based? empty 1564 +--ro hello-interval? uint32 1565 +--ro hello-misses? uint32 1566 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1567 rsvp:interfaces/rsvp:interface/rsvp:config/rsvp:authentication: 1568 +--rw lifetime? uint32 1569 +--rw window-size? uint32 1570 +--rw challenge? empty 1571 +--rw retransmits? uint32 1572 +--rw key-chain? string 1573 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1574 rsvp:interfaces/rsvp:interface/rsvp:state/rsvp:authentication: 1576 +--ro lifetime? uint32 1577 +--ro window-size? uint32 1578 +--ro challenge? empty 1579 +--ro retransmits? uint32 1580 +--ro key-chain? string 1582 Figure 3: RSVP extended YANG Tree representation 1584 3.2.2. YANG Module 1586 Figure 4 shows the RSVP extended YANG module: 1588 file "ietf-rsvp-extended@2016-10-02.yang" 1590 module ietf-rsvp-extended { 1592 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-extended"; 1594 prefix "rsvp-ext"; 1596 import ietf-rsvp { 1597 prefix "rsvp"; 1598 } 1600 import ietf-routing { 1601 prefix "rt"; 1602 } 1604 import ietf-yang-types { 1605 prefix "yang"; 1606 } 1608 organization 1609 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1610 Working Group"; 1612 contact 1613 "WG Web: 1614 WG List: 1616 WG Chair: Lou Berger 1617 1619 WG Chair: Vishnu Pavan Beeram 1620 1622 Editor: Vishnu Pavan Beeram 1623 1625 Editor: Tarek Saad 1626 1628 Editor: Rakesh Gandhi 1629 1631 Editor: Himanshu Shah 1632 1634 Editor: Xufeng Liu 1635 1637 Editor: Xia Chen 1638 1640 Editor: Raqib Jones 1641 1643 Editor: Bin Wen 1644 "; 1646 description 1647 "This module contains the Extended RSVP YANG data model."; 1649 revision "2016-10-02" { 1650 description "Latest revision of RSVP extended yang module."; 1651 reference "RFC2205"; 1652 } 1654 /* RSVP features */ 1655 feature authentication { 1656 description 1657 "Indicates support for RSVP authentication"; 1658 } 1660 feature error-statistics { 1661 description 1662 "Indicates support for error statistics"; 1663 } 1665 feature global-statistics { 1666 description 1667 "Indicates support for global statistics"; 1668 } 1670 feature graceful-restart { 1671 description 1672 "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 } 1723 } 1725 grouping authentication-extended_config { 1726 description 1727 "Configuration parameters relating to RSVP 1728 authentication"; 1729 leaf lifetime { 1730 type uint32 { 1731 range "30..86400"; 1732 } 1733 description 1734 "Life time for each security association"; 1735 reference 1736 "RFC 2747: RSVP Cryptographic 1737 Authentication"; 1738 } 1739 leaf window-size { 1740 type uint32 { 1741 range "1..64"; 1742 } 1743 description 1744 "Window-size to limit number of out-of-order 1745 messages."; 1746 reference 1747 "RFC 2747: RSVP Cryptographic 1748 Authentication"; 1749 } 1750 leaf challenge { 1751 type empty; 1752 description 1753 "Enable challenge messages."; 1754 reference 1755 "RFC 2747: RSVP Cryptographic 1756 Authentication"; 1757 } 1758 leaf retransmits { 1759 type uint32 { 1760 range "1..10000"; 1761 } 1762 description 1763 "Number of retransmits when messages are 1764 dropped."; 1765 reference 1766 "RFC 2747: RSVP Cryptographic 1767 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 } 1819 grouping signaling-parameters-extended_config { 1820 description 1821 "Configuration parameters relating to RSVP 1822 signaling"; 1823 leaf refresh-interval { 1824 type uint32; 1825 description 1826 "Set interval between successive refreshes"; 1827 } 1828 leaf refresh-misses { 1829 type uint32; 1830 description 1831 "Set max number of consecutive missed 1832 messages for state expiry"; 1833 } 1834 leaf checksum { 1835 type uint32; 1836 description 1837 "Enable RSVP message checksum computation"; 1838 } 1839 leaf patherr-state-removal { 1840 type empty; 1841 description 1842 "State-Removal flag in Path Error message 1843 if present."; 1844 } 1845 } 1847 grouping refresh-reduction-extended_config { 1848 description 1849 "Configuration parameters relating to RSVP 1850 refresh reduction"; 1852 leaf bundle-message-max-size { 1853 type uint32 { 1854 range "512..65000"; 1855 } 1856 description 1857 "Configure maximum size (bytes) of a 1858 single RSVP Bundle message."; 1859 } 1860 leaf reliable-ack-hold-time { 1861 type uint32; 1862 units milliseconds; 1863 description 1864 "Configure hold time in milliseconds for 1865 sending RSVP ACK message(s)."; 1866 } 1867 leaf reliable-ack-max-size { 1868 type uint32; 1869 description 1870 "Configure max size of a single RSVP ACK 1871 message."; 1872 } 1873 leaf reliable-retransmit-time { 1874 type uint32; 1875 units milliseconds; 1876 description 1877 "Configure min delay in milliseconds to 1878 wait for an ACK before a retransmit."; 1879 } 1880 leaf reliable-srefresh { 1881 type empty; 1882 description 1883 "Configure use of reliable messaging for 1884 summary refresh if present."; 1885 } 1886 leaf summary-max-size { 1887 type uint32 { 1888 range "20..65000"; 1889 } 1890 description 1891 "Configure max size (bytes) of a single 1892 RSVP summary refresh message."; 1893 } 1894 } 1896 grouping statistics-packets-extended_state { 1897 description 1898 "Packet statistics."; 1899 leaf discontinuity-time { 1900 type yang:date-and-time; 1901 description 1902 "The time on the most recent occasion at which any one 1903 or more of the statistic counters suffered a 1904 discontinuity. If no such discontinuities have occurred 1905 since the last re-initialization of the local 1906 management subsystem, then this node contains the time 1907 the local management subsystem re-initialized itself."; 1908 } 1909 leaf tx-dropped { 1910 type yang:counter32; 1911 description 1912 "Packet tx dropped count"; 1913 } 1914 leaf rx-dropped { 1915 type yang:counter32; 1916 description 1917 "Packet rx dropped count"; 1918 } 1920 leaf tx-error { 1921 type yang:counter32; 1922 description 1923 "Packet tx error count"; 1924 } 1926 leaf rx-error { 1927 type yang:counter32; 1928 description 1929 "Packet rx error count"; 1930 } 1931 } 1933 grouping statistics-protocol-extended_state { 1934 description 1935 "RSVP protocol statistics."; 1936 } 1938 grouping statistics-errors-extended_state { 1939 description 1940 "Error statistics."; 1941 } 1943 grouping statistics-extended_state { 1944 description "RSVP statistic attributes."; 1945 uses statistics-packets-extended_state; 1946 uses statistics-protocol-extended_state; 1947 uses statistics-errors-extended_state; 1948 } 1950 /** 1951 * RSVP extensions augmentations 1952 */ 1954 /* RSVP globals graceful restart*/ 1956 augment "/rt:routing/rt:control-plane-protocols/" 1957 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/rsvp:config/"+ 1958 "rsvp:graceful-restart" { 1959 description 1960 "RSVP globals configuration extensions"; 1961 uses graceful-restart-extended_config; 1963 } 1964 augment "/rt:routing/rt:control-plane-protocols/" 1965 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/rsvp:state/"+ 1966 "rsvp:graceful-restart" { 1967 description 1968 "RSVP globals state extensions"; 1969 uses graceful-restart-extended_config; 1970 } 1972 /* RSVP statistics augmentation */ 1973 augment "/rt:routing/rt:control-plane-protocols/" 1974 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/rsvp:state/"+ 1975 "rsvp:packets-stats" { 1976 description 1977 "RSVP packet stats extensions"; 1978 uses statistics-packets-extended_state; 1979 } 1980 augment "/rt:routing/rt:control-plane-protocols/" 1981 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/rsvp:state/"+ 1982 "rsvp:protocol-stats" { 1983 description 1984 "RSVP protocol message stats extensions"; 1985 uses statistics-protocol-extended_state; 1986 } 1987 augment "/rt:routing/rt:control-plane-protocols/" 1988 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/rsvp:state/"+ 1989 "rsvp:errors-stats" { 1990 description 1991 "RSVP errors stats extensions"; 1992 uses statistics-errors-extended_state; 1993 } 1995 /** 1996 * RSVP all interfaces extensions 1997 */ 1999 /* RSVP interface signaling extensions */ 2000 augment "/rt:routing/rt:control-plane-protocols/" 2001 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2002 + "rsvp:config" { 2003 description 2004 "RSVP signaling all interfaces configuration extensions"; 2005 uses signaling-parameters-extended_config; 2006 } 2007 augment "/rt:routing/rt:control-plane-protocols/" 2008 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2009 + "rsvp:state" { 2010 description 2011 "RSVP signaling all interfaces state extensions"; 2012 uses signaling-parameters-extended_config; 2013 } 2015 /* RSVP refresh reduction extension */ 2016 augment "/rt:routing/rt:control-plane-protocols/" 2017 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2018 + "rsvp:config/rsvp:refresh-reduction" { 2019 description 2020 "RSVP refresh-reduction all interface configuration 2021 extensions"; 2022 uses refresh-reduction-extended_config; 2023 } 2024 augment "/rt:routing/rt:control-plane-protocols/" 2025 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2026 + "rsvp:state/rsvp:refresh-reduction" { 2027 description 2028 "RSVP refresh-reduction all interfaces state extensions"; 2029 uses refresh-reduction-extended_config; 2030 } 2032 /* RSVP hellos extension */ 2033 augment "/rt:routing/rt:control-plane-protocols/" 2034 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2035 + "rsvp:config/rsvp:rsvp-hellos" { 2036 description 2037 "RSVP hello all interfaces configuration extensions"; 2038 uses rsvp-hellos-extended_config; 2039 } 2040 augment "/rt:routing/rt:control-plane-protocols/" 2041 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2042 + "rsvp:state/rsvp:rsvp-hellos" { 2043 description 2044 "RSVP hello all interfaces state extensions"; 2045 uses rsvp-hellos-extended_config; 2046 } 2048 /* RSVP authentication extension */ 2049 augment "/rt:routing/rt:control-plane-protocols/" 2050 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2051 + "rsvp:config/rsvp:authentication" { 2052 description 2053 "RSVP authentication all interfaces configuration extensions"; 2054 uses authentication-extended_config; 2055 } 2056 augment "/rt:routing/rt:control-plane-protocols/" 2057 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2058 + "rsvp:state/rsvp:authentication" { 2060 description 2061 "RSVP authentication all interfaces state extensions"; 2062 uses authentication-extended_config; 2063 } 2065 /** 2066 * RSVP interface extensions 2067 */ 2069 /* RSVP interface signaling extensions */ 2070 augment "/rt:routing/rt:control-plane-protocols/" 2071 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2072 "rsvp:interface/rsvp:config" { 2073 description 2074 "RSVP signaling interface configuration extensions"; 2075 uses signaling-parameters-extended_config; 2076 } 2077 augment "/rt:routing/rt:control-plane-protocols/" 2078 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2079 "rsvp:interface/rsvp:state" { 2080 description 2081 "RSVP signaling interface state extensions"; 2082 uses signaling-parameters-extended_config; 2083 } 2085 /* RSVP refresh reduction extension */ 2086 augment "/rt:routing/rt:control-plane-protocols/" 2087 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2088 "rsvp:interface/rsvp:config/rsvp:refresh-reduction" { 2089 description 2090 "RSVP refresh-reduction interface configuration extensions"; 2091 uses refresh-reduction-extended_config; 2092 } 2093 augment "/rt:routing/rt:control-plane-protocols/" 2094 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2095 "rsvp:interface/rsvp:state/rsvp:refresh-reduction" { 2096 description 2097 "RSVP refresh-reduction interface state extensions"; 2098 uses refresh-reduction-extended_config; 2099 } 2101 /* RSVP hellos extension */ 2102 augment "/rt:routing/rt:control-plane-protocols/" 2103 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2104 "rsvp:interface/rsvp:config/rsvp:rsvp-hellos" { 2105 description 2106 "RSVP hello interface configuration extensions"; 2107 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:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2170 rsvp:globals: 2171 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2172 rsvp:interfaces: 2173 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2174 rsvp:interfaces/rsvp:interface: 2175 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2176 rsvp:sessions: 2177 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2178 rsvp:neighbors: 2179 augment /te:te/te:tunnels/te:tunnel: 2180 +--rw config 2181 | +--rw lsp-signaled-name? string 2182 | +--rw lsp-priority-setup? uint8 2183 | +--rw lsp-priority-hold? uint8 2184 | +--rw local-recording-desired? boolean 2185 | +--rw se-style-desired? boolean 2186 | +--rw path-reevaluation-request? boolean 2187 | +--rw soft-preemption-desired? boolean 2188 | +--rw lsp-rerouting? enumeration 2189 | +--rw lsp-integrety-required? boolean 2190 | +--rw lsp-contiguous? boolean 2191 | +--rw lsp-stitching-desired? boolean 2192 | +--rw lsp-preplanned? boolean 2193 | +--rw lsp-oob-mapping? boolean 2194 +--ro state 2195 +--ro lsp-signaled-name? string 2196 +--ro lsp-priority-setup? uint8 2197 +--ro lsp-priority-hold? uint8 2198 +--ro local-recording-desired? boolean 2199 +--ro se-style-desired? boolean 2200 +--ro path-reevaluation-request? boolean 2201 +--ro soft-preemption-desired? boolean 2202 +--ro lsp-rerouting? enumeration 2203 +--ro lsp-integrety-required? boolean 2204 +--ro lsp-contiguous? boolean 2205 +--ro lsp-stitching-desired? boolean 2206 +--ro lsp-preplanned? boolean 2207 +--ro lsp-oob-mapping? boolean 2208 augment /te:te/te:lsps-state/te:lsp: 2209 +--ro lsp-signaled-name? string 2210 +--ro lsp-priority-setup? uint8 2211 +--ro lsp-priority-hold? uint8 2212 +--ro local-recording-desired? boolean 2213 +--ro se-style-desired? boolean 2214 +--ro path-reevaluation-request? boolean 2215 +--ro soft-preemption-desired? boolean 2216 +--ro lsp-rerouting? enumeration 2217 +--ro lsp-integrety-required? boolean 2218 +--ro lsp-contiguous? boolean 2219 +--ro lsp-stitching-desired? boolean 2220 +--ro lsp-preplanned? boolean 2221 +--ro lsp-oob-mapping? boolean 2222 +--ro explicit-route-object 2223 | +--ro incoming-explicit-route-subobjects* [subobject-index] 2224 | | +--ro subobject-index uint32 2225 | | +--ro (type)? 2226 | | +--:(ipv4-address) 2227 | | | +--ro v4-address? inet:ipv4-address 2228 | | | +--ro v4-prefix-length? uint8 2229 | | | +--ro v4-loose? boolean 2230 | | +--:(ipv6-address) 2231 | | | +--ro v6-address? inet:ipv6-address 2232 | | | +--ro v6-prefix-length? uint8 2233 | | | +--ro v6-loose? boolean 2234 | | +--:(as-number) 2235 | | | +--ro as-number? uint16 2236 | | +--:(unnumbered-link) 2237 | | | +--ro router-id? inet:ip-address 2238 | | | +--ro interface-id? uint32 2239 | | +--:(label) 2240 | | +--ro value? uint32 2241 | +--ro outgoing-explicit-route-subobjects* [subobject-index] 2242 | +--ro subobject-index uint32 2243 | +--ro (type)? 2244 | +--:(ipv4-address) 2245 | | +--ro v4-address? inet:ipv4-address 2246 | | +--ro v4-prefix-length? uint8 2247 | | +--ro v4-loose? boolean 2248 | +--:(ipv6-address) 2249 | | +--ro v6-address? inet:ipv6-address 2250 | | +--ro v6-prefix-length? uint8 2251 | | +--ro v6-loose? boolean 2252 | +--:(as-number) 2253 | | +--ro as-number? uint16 2254 | +--:(unnumbered-link) 2255 | | +--ro router-id? inet:ip-address 2256 | | +--ro interface-id? uint32 2257 | +--:(label) 2258 | +--ro value? uint32 2259 +--ro record-route-object 2260 +--ro path-record-route-subobjects* [subobject-index] 2261 | +--ro subobject-index uint32 2262 | +--ro (type)? 2263 | +--:(ipv4-address) 2264 | | +--ro v4-address? inet:ipv4-address 2265 | | +--ro v4-prefix-length? uint8 2266 | | +--ro v4-flags? uint8 2267 | +--:(ipv6-address) 2268 | | +--ro v6-address? inet:ipv6-address 2269 | | +--ro v6-prefix-length? uint8 2270 | | +--ro v6-flags? uint8 2271 | +--:(label) 2272 | +--ro value? uint32 2273 | +--ro flags? uint8 2274 +--ro resv-record-route-subobjects* [subobject-index] 2275 +--ro subobject-index uint32 2276 +--ro (type)? 2277 +--:(ipv4-address) 2278 | +--ro v4-address? inet:ipv4-address 2279 | +--ro v4-prefix-length? uint8 2280 | +--ro v4-flags? uint8 2281 +--:(ipv6-address) 2282 | +--ro v6-address? inet:ipv6-address 2283 | +--ro v6-prefix-length? uint8 2284 | +--ro v6-flags? uint8 2285 +--:(label) 2286 +--ro value? uint32 2287 +--ro flags? uint8 2288 augment /te:te/te-dev:interfaces/te-dev:interface: 2290 Figure 5: RSVP-TE YANG Tree representation 2292 3.3.2. RPC and Notification Data 2294 TBD. 2296 3.3.3. YANG Module 2298 file "ietf-rsvp-te@2016-10-02.yang" 2300 module ietf-rsvp-te { 2302 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te"; 2304 prefix "rsvp-te"; 2306 import ietf-rsvp { 2307 prefix rsvp; 2308 } 2310 import ietf-routing { 2311 prefix "rt"; 2312 } 2314 import ietf-te { 2315 prefix te; 2316 } 2318 import ietf-te-device { 2319 prefix te-dev; 2320 } 2322 /* Import TE generic types */ 2323 import ietf-te-types { 2324 prefix te-types; 2325 } 2327 organization 2328 "IETF Traffic Engineering Architecture and Signaling (TEAS) 2329 Working Group"; 2331 contact 2332 "WG Web: 2333 WG List: 2335 WG Chair: Lou Berger 2336 2338 WG Chair: Vishnu Pavan Beeram 2339 2341 Editor: Vishnu Pavan Beeram 2342 2344 Editor: Tarek Saad 2345 2347 Editor: Rakesh Gandhi 2348 2350 Editor: Himanshu Shah 2351 2353 Editor: Xufeng Liu 2354 2356 Editor: Xia Chen 2357 2359 Editor: Raqib Jones 2360 2362 Editor: Bin Wen 2363 "; 2365 description 2366 "This module contains the RSVP-TE YANG generic data model."; 2368 revision "2016-10-02" { 2369 description "Latest revision to RSVP-TE generic YANG module"; 2370 reference "RFC2205, RFC3209, etc."; 2371 } 2373 /** 2374 * RSVP-TE LSPs groupings. 2375 */ 2377 grouping lsp-record-route-information_state { 2378 description "recorded route information grouping"; 2379 container record-route-object { 2380 description "RSVP recorded route object information"; 2381 list path-record-route-subobjects { 2382 when "../../origin-type != 'ingress'" { 2383 description "Applicable on non-ingress LSPs only"; 2384 } 2385 key "subobject-index"; 2386 description ""; 2387 leaf subobject-index { 2388 type uint32; 2389 description "RRO subobject index"; 2390 } 2391 uses te-types:record-route-subobject; 2392 } 2393 list resv-record-route-subobjects { 2394 when "../../origin-type != 'egress'" { 2395 description "Applicable on non-egress LSPs only"; 2396 } 2397 key "subobject-index"; 2398 description ""; 2399 leaf subobject-index { 2400 type uint32; 2401 description "RRO subobject index"; 2402 } 2403 uses te-types:record-route-subobject; 2404 } 2405 } 2406 } 2408 grouping lsp-explicit-route-information_state { 2409 description "RSVP-TE LSP explicit-route information"; 2410 container explicit-route-object { 2411 description "Explicit route object information"; 2412 list incoming-explicit-route-subobjects { 2413 when "../../origin-type != 'ingress'" { 2414 description "Applicable on non-ingress LSPs only"; 2415 } 2416 key "subobject-index"; 2417 description ""; 2418 leaf subobject-index { 2419 type uint32; 2420 description "ERO subobject index"; 2421 } 2422 uses te-types:explicit-route-subobject; 2423 } 2424 list outgoing-explicit-route-subobjects { 2425 when "../../origin-type != 'egress'" { 2426 description "Applicable on non-egress LSPs only"; 2427 } 2428 key "subobject-index"; 2429 description ""; 2430 leaf subobject-index { 2431 type uint32; 2432 description "ERO subobject index"; 2433 } 2434 uses te-types:explicit-route-subobject; 2435 } 2436 } 2437 } 2438 grouping lsp-attributes-flags_config { 2439 description 2440 "Configuration parameters relating to RSVP-TE LSP 2441 attribute flags"; 2442 leaf lsp-rerouting { 2443 type enumeration { 2444 enum end-to-end-routing { 2445 description 2446 "End-to-end routing desired"; 2447 reference "RFC4920, RFC5420"; 2448 } 2449 enum boundary-rerouting { 2450 description 2451 "Boundary rerouting desired"; 2452 reference "RFC4920, RFC5420"; 2453 } 2454 enum segment-based-rerouting { 2455 description 2456 "Segment-based rerouting desired"; 2457 reference "RFC4920, RFC5420"; 2458 } 2459 } 2460 description "LSP rerouting types"; 2461 } 2462 leaf lsp-integrety-required { 2463 type boolean; 2464 description "LSP integrity desired"; 2465 reference "RFC4875"; 2466 } 2467 leaf lsp-contiguous { 2468 type boolean; 2469 description "Contiguous LSP"; 2470 reference "RFC5151"; 2471 } 2472 leaf lsp-stitching-desired { 2473 type boolean; 2474 description "Stitched LSP"; 2475 reference "RFC5150"; 2476 } 2477 leaf lsp-preplanned { 2478 type boolean; 2479 description "Preplanned LSP"; 2480 reference "RFC6001"; 2481 } 2482 leaf lsp-oob-mapping { 2483 type boolean; 2484 description 2485 "Mapping is done out-of-band"; 2487 reference "RFC6511"; 2488 } 2489 } 2491 grouping lsp-session-attributes-obj-flags_config { 2492 description 2493 "Configuration parameters relating to RSVP-TE LSP 2494 session attribute flags"; 2495 reference 2496 "RFC4859: Registry for RSVP-TE Session Flags"; 2497 leaf local-recording-desired { 2498 type boolean; 2499 description "Path recording is desired."; 2500 reference "RFC3209"; 2501 } 2502 leaf se-style-desired { 2503 type boolean; 2504 description "SE Style desired"; 2505 reference "RFC3209"; 2506 } 2507 leaf path-reevaluation-request { 2508 type boolean; 2509 description "Path re-evaluation request"; 2510 reference "RFC4736"; 2511 } 2512 leaf soft-preemption-desired { 2513 type boolean; 2514 description "Soft-preemption is desired"; 2515 reference "RFC5712"; 2516 } 2517 } 2519 grouping lsp-properties_config { 2520 description 2521 "Configuration parameters relating to RSVP-TE LSP 2522 session attribute flags"; 2523 leaf lsp-signaled-name { 2524 type string; 2525 description 2526 "Sets the session name to use in the session 2527 attribute object."; 2528 } 2529 leaf lsp-priority-setup { 2530 type uint8 { 2531 range "0..7"; 2532 } 2533 description 2534 "RSVP session attributes setup priority"; 2536 } 2537 leaf lsp-priority-hold { 2538 type uint8 { 2539 range "0..7"; 2540 } 2541 description 2542 "RSVP session attributes hold priority"; 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 } 2638 /* Linkage to the base RSVP all links */ 2639 augment "/rt:routing/rt:control-plane-protocols/" 2640 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { 2641 description 2642 "RSVP-TE generic data augmentation pertaining to interfaces"; 2643 /* To be added */ 2644 } 2646 /* Linkage to per RSVP interface */ 2647 augment "/rt:routing/rt:control-plane-protocols/" 2648 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2649 "rsvp:interface" { 2650 description 2651 "RSVP-TE generic data augmentation pertaining to specific 2652 interface"; 2653 /* To be added */ 2654 } 2656 /* add augmentation for sessions neighbors */ 2657 augment "/rt:routing/rt:control-plane-protocols/" 2658 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:sessions" { 2659 description 2660 "RSVP-TE generic data augmentation pertaining to session"; 2661 /* To be added */ 2662 } 2664 augment "/rt:routing/rt:control-plane-protocols/" 2665 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors" { 2666 description 2667 "RSVP-TE generic data augmentation pertaining to neighbors"; 2668 /* To be added */ 2669 } 2671 /** 2672 * RSVP-TE generic augmentations of generic TE model. 2673 */ 2675 /* TE tunnel augmentation */ 2676 augment "/te:te/te:tunnels/te:tunnel" { 2677 description 2678 "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:routing-protocols/rt:routing-protocol/rsvp:rsvp: 2730 +--rw config 2731 | +--rw rsvp-frr-local-revert! 2732 | +--rw rsvp-frr-local-revert-delay? uint32 2733 +--ro state 2734 +--ro rsvp-frr-local-revert! 2735 +--ro rsvp-frr-local-revert-delay? uint32 2736 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2737 rsvp:interfaces: 2738 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2739 rsvp:interfaces/rsvp:interface: 2740 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2741 rsvp:sessions: 2742 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2743 rsvp:neighbors: 2744 augment /te:te/te:tunnels/te:tunnel: 2745 +--rw config 2746 | +--rw static-bandwidth? uint32 2747 | +--rw auto-bandwidth 2748 | | +--rw enabled? boolean 2749 | | +--rw min-bw? uint32 2750 | | +--rw max-bw? uint32 2751 | | +--rw adjust-interval? uint32 2752 | | +--rw adjust-threshold? uint32 2753 | | +--rw overflow 2754 | | | +--rw enabled? boolean 2755 | | | +--rw overflow-threshold? uint32 2756 | | | +--rw trigger-event-count? uint16 2757 | | +--rw underflow 2758 | | +--rw enabled? boolean 2759 | | +--rw underflow-threshold? uint32 2760 | | +--rw trigger-event-count? uint16 2761 | +--rw local-protection-desired? empty 2762 | +--rw bandwidth-protection-desired? empty 2763 | +--rw node-protection-desired? empty 2764 | +--rw non-php-desired? empty 2765 | +--rw entropy-label-cap? empty 2766 | +--rw oam-mep-entities-desired? empty 2767 | +--rw oam-mip-entities-desired? empty 2768 +--rw state 2769 +--rw static-bandwidth? uint32 2770 +--rw auto-bandwidth 2771 | +--rw enabled? boolean 2772 | +--rw min-bw? uint32 2773 | +--rw max-bw? uint32 2774 | +--rw adjust-interval? uint32 2775 | +--rw adjust-threshold? uint32 2776 | +--rw overflow 2777 | | +--rw enabled? boolean 2778 | | +--rw overflow-threshold? uint32 2779 | | +--rw trigger-event-count? uint16 2780 | +--rw underflow 2781 | +--rw enabled? boolean 2782 | +--rw underflow-threshold? uint32 2783 | +--rw trigger-event-count? uint16 2784 +--rw local-protection-desired? empty 2785 +--rw bandwidth-protection-desired? empty 2786 +--rw node-protection-desired? empty 2787 +--rw non-php-desired? empty 2788 +--rw entropy-label-cap? empty 2789 +--rw oam-mep-entities-desired? empty 2790 +--rw oam-mip-entities-desired? empty 2791 augment /te:te/te:lsps-state/te:lsp: 2792 +--ro static-bandwidth? uint32 2793 +--ro auto-bandwidth 2794 | +--ro enabled? boolean 2795 | +--ro min-bw? uint32 2796 | +--ro max-bw? uint32 2797 | +--ro adjust-interval? uint32 2798 | +--ro adjust-threshold? uint32 2799 | +--ro overflow 2800 | | +--ro enabled? boolean 2801 | | +--ro overflow-threshold? uint32 2802 | | +--ro trigger-event-count? uint16 2803 | +--ro underflow 2804 | +--ro enabled? boolean 2805 | +--ro underflow-threshold? uint32 2806 | +--ro trigger-event-count? uint16 2807 +--ro local-protection-desired? empty 2808 +--ro bandwidth-protection-desired? empty 2809 +--ro node-protection-desired? empty 2810 +--ro non-php-desired? empty 2811 +--ro entropy-label-cap? empty 2812 +--ro oam-mep-entities-desired? empty 2813 +--ro oam-mip-entities-desired? empty 2814 +--ro backup-info 2815 +--ro backup-tunnel-name? string 2816 +--ro backup-frr-on? uint8 2817 +--ro backup-protected-lsp-num? uint32 2818 augment /te:te/te-dev:interfaces/te-dev:interface: 2819 +--rw config 2820 | +--rw (bandwidth-value)? 2821 | | +--:(absolute) 2822 | | | +--rw absolute-value? uint32 2823 | | +--:(precentage) 2824 | | +--rw percent-value? uint32 2825 | +--rw (bc-model-type)? 2826 | +--:(bc-model-rdm) 2827 | | +--rw bc-model-rdm 2828 | | +--rw bandwidth-mpls-constraints 2829 | | +--rw maximum-reservable? uint32 2830 | | +--rw bc-value* uint32 2831 | +--:(bc-model-mam) 2832 | | +--rw bc-model-mam 2833 | | +--rw bandwidth-mpls-constraints 2834 | | +--rw maximum-reservable? uint32 2835 | | +--rw bc-value* uint32 2836 | +--:(bc-model-mar) 2837 | +--rw bc-model-mar 2838 | +--rw bandwidth-mpls-constraints 2839 | +--rw maximum-reservable? uint32 2840 | +--rw bc-value* uint32 2841 +--ro state 2842 | +--ro (bandwidth-value)? 2843 | | +--:(absolute) 2844 | | | +--ro absolute-value? uint32 2845 | | +--:(precentage) 2846 | | +--ro percent-value? uint32 2847 | +--ro (bc-model-type)? 2848 | | +--:(bc-model-rdm) 2849 | | | +--ro bc-model-rdm 2850 | | | +--ro bandwidth-mpls-constraints 2851 | | | +--ro maximum-reservable? uint32 2852 | | | +--ro bc-value* uint32 2853 | | +--:(bc-model-mam) 2854 | | | +--ro bc-model-mam 2855 | | | +--ro bandwidth-mpls-constraints 2856 | | | +--ro maximum-reservable? uint32 2857 | | | +--ro bc-value* uint32 2858 | | +--:(bc-model-mar) 2859 | | +--ro bc-model-mar 2860 | | +--ro bandwidth-mpls-constraints 2861 | | +--ro maximum-reservable? uint32 2862 | | +--ro bc-value* uint32 2863 | +--ro interface-softpreemption-state 2864 | | +--ro soft-preempted-bandwidth? uint32 2865 | | +--ro lsps* 2866 [source destination tunnel-id lsp-id extended-tunnel-id] 2867 | | +--ro source -> /te:te/lsps-state/lsp/source 2868 | | +--ro destination -> /te:te/lsps-state/lsp/destination 2869 | | +--ro tunnel-id -> /te:te/lsps-state/lsp/tunnel-id 2870 | | +--ro lsp-id -> /te:te/lsps-state/lsp/lsp-id 2871 | | +--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 2896 +--ro auto-backup-path-computation? identityref 2898 Figure 6: MPLS RSVP-TE YANG Tree representation 2900 3.4.2. RPC and Notification Data 2902 TBD. 2904 3.4.3. YANG Module 2906 file "ietf-rsvp-te-mpls@2016-10-02.yang" 2908 module ietf-rsvp-te-mpls { 2910 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls"; 2912 prefix "rsvp-te-mpls"; 2914 import ietf-rsvp { 2915 prefix "rsvp"; 2916 } 2918 import ietf-routing { 2919 prefix "rt"; 2920 } 2921 import ietf-te-mpls-types { 2922 prefix "te-mpls-types"; 2923 } 2925 import ietf-te-types { 2926 prefix "te-types"; 2927 } 2929 import ietf-te { 2930 prefix "te"; 2931 } 2933 import ietf-te-device { 2934 prefix "te-dev"; 2935 } 2937 organization 2938 "IETF Traffic Engineering Architecture and Signaling (TEAS) 2939 Working Group"; 2941 contact 2942 "WG Web: 2943 WG List: 2945 WG Chair: Lou Berger 2946 2948 WG Chair: Vishnu Pavan Beeram 2949 2951 Editor: Vishnu Pavan Beeram 2952 2954 Editor: Tarek Saad 2955 2957 Editor: Rakesh Gandhi 2958 2960 Editor: Himanshu Shah 2961 2963 Editor: Xufeng Liu 2964 2966 Editor: Xia Chen 2967 2969 Editor: Raqib Jones 2970 2972 Editor: Bin Wen 2973 "; 2975 description 2976 "Latest update to MPLS RSVP-TE YANG data model."; 2978 revision "2016-10-02" { 2979 description "Update to MPLS RSVP-TE YANG initial revision."; 2980 reference "RFC3209, RFC6511, RFC6790, RFC7260, RFC4859, RFC4090"; 2981 } 2983 /* RSVP-TE MPLS LSPs groupings */ 2984 grouping lsp-attributes-flags-mpls_config { 2985 description 2986 "Configuration parameters relating to RSVP-TE MPLS LSP 2987 attribute flags"; 2988 leaf non-php-desired { 2989 type empty; 2990 description 2991 "Non-PHP is desired"; 2992 reference "RFC6511"; 2993 } 2994 leaf entropy-label-cap { 2995 type empty; 2996 description "Entropy label capability"; 2997 reference "RFC6790"; 2998 } 2999 leaf oam-mep-entities-desired { 3000 type empty; 3001 description "OAM MEP entities desired"; 3002 reference "RFC7260"; 3003 } 3004 leaf oam-mip-entities-desired { 3005 type empty; 3006 description "OAM MIP entities desired"; 3007 reference "RFC7260"; 3008 } 3009 } 3011 grouping lsp-session-attributes-obj-flags-mpls_config { 3012 description 3013 "Configuration parameters relating to RSVP-TE MPLS LSP 3014 session attribute flags"; 3015 reference 3016 "RFC4859: Registry for RSVP-TE Session Flags"; 3018 leaf local-protection-desired { 3019 type empty; 3020 description "Fastreroute local protection is desired."; 3021 reference 3022 "RFC4859: Registry for RSVP-TE Session Flags"; 3023 } 3024 leaf bandwidth-protection-desired { 3025 type empty; 3026 description 3027 "Request FRR bandwidth protection on LSRs if 3028 present."; 3029 reference "RFC4090"; 3030 } 3031 leaf node-protection-desired { 3032 type empty; 3033 description 3034 "Request FRR node protection on LSRs if 3035 present."; 3036 reference "RFC4090"; 3037 } 3038 } 3040 grouping lsp-overflow_config { 3041 description "configuration for mpls lsp bandwidth 3042 overflow adjustment"; 3044 leaf enabled { 3045 type boolean; 3046 default false; 3047 description "enables mpls lsp bandwidth overflow 3048 adjustment on the lsp"; 3049 } 3051 leaf overflow-threshold { 3052 type uint32; 3053 description "bandwidth percentage change to trigger 3054 an overflow event"; 3056 } 3058 leaf trigger-event-count { 3059 type uint16; 3060 description "number of consecutive overflow sample 3061 events needed to trigger an overflow adjustment"; 3062 } 3063 } 3065 grouping lsp-underflow_config { 3066 description 3067 "configuration for mpls lsp bandwidth 3068 underflow adjustment"; 3070 leaf enabled { 3071 type boolean; 3072 default false; 3073 description "enables bandwidth underflow 3074 adjustment on the lsp"; 3075 } 3077 leaf underflow-threshold { 3078 type uint32; 3079 description "bandwidth percentage change to trigger 3080 and underflow event"; 3081 } 3083 leaf trigger-event-count { 3084 type uint16; 3085 description "number of consecutive underflow sample 3086 events needed to trigger an underflow adjustment"; 3087 } 3088 } 3090 grouping lsp-auto-bandwidth_config { 3091 description 3092 "Auto-Bandwidth grouping"; 3093 container auto-bandwidth { 3094 description "configure auto-bandwidth operation in 3095 which devices automatically adjust bandwidth to meet 3096 requirements"; 3098 leaf enabled { 3099 type boolean; 3100 default false; 3101 description "enables mpls auto-bandwidth on the 3102 lsp"; 3103 } 3105 leaf min-bw { 3106 type uint32; 3107 description "set the minimum bandwidth in Mbps for an 3108 auto-bandwidth LSP"; 3109 } 3111 leaf max-bw { 3112 type uint32; 3113 description "set the maximum bandwidth in Mbps for an 3114 auto-bandwidth LSP"; 3115 } 3117 leaf adjust-interval { 3118 type uint32; 3119 description "time in seconds between adjustments to 3120 LSP bandwidth"; 3121 } 3123 leaf adjust-threshold { 3124 type uint32; 3125 description "percentage difference between the LSP's 3126 specified bandwidth and its current bandwidth 3127 allocation -- if the difference is greater than the 3128 specified percentage, auto-bandwidth adjustment is 3129 triggered"; 3130 } 3132 container overflow { 3133 description "configuration of MPLS overflow bandwidth 3134 adjustement for the LSP"; 3135 uses lsp-overflow_config; 3136 } 3138 container underflow { 3139 description "configuration of MPLS underflow bandwidth 3140 adjustement for the LSP"; 3141 uses lsp-underflow_config; 3142 } 3143 } 3144 } 3146 grouping lsp-bandwidth_config { 3147 description 3148 "LSP bandwidth grouping"; 3149 leaf static-bandwidth { 3150 type uint32; 3151 description 3152 "Static bandwidth, e.g., using 3153 offline calculation"; 3154 } 3155 uses lsp-auto-bandwidth_config; 3156 } 3158 grouping tunnel-properties-mpls { 3159 description 3160 "Top level grouping for LSP properties."; 3161 container config { 3162 description 3163 "Configuration parameters for tunnel RSVP-TE 3164 properties"; 3165 uses lsp-bandwidth_config; 3166 uses lsp-session-attributes-obj-flags-mpls_config; 3167 uses lsp-attributes-flags-mpls_config; 3168 } 3169 container state { 3170 description 3171 "State parameters for tunnel RSVP-TE 3172 properties"; 3173 uses lsp-bandwidth_config; 3174 uses lsp-session-attributes-obj-flags-mpls_config; 3175 uses lsp-attributes-flags-mpls_config; 3176 } 3177 } 3179 grouping lsp-properties-mpls { 3180 description 3181 "Top level grouping for LSP properties."; 3182 uses lsp-bandwidth_config; 3183 uses lsp-session-attributes-obj-flags-mpls_config; 3184 uses lsp-attributes-flags-mpls_config; 3185 } 3186 /* End of RSVP-TE MPLS LSPs groupings */ 3188 /* MPLS RSVP-TE interface groupings */ 3189 grouping rsvp-te-interface_state { 3190 description 3191 "The RSVP-TE interface state grouping"; 3192 leaf over-subscribed-bandwidth { 3193 type uint32; 3194 description 3195 "The amount of over-subscribed bandwidth on 3196 the interface"; 3197 } 3198 } 3200 grouping rsvp-te-interface-softpreemption_state { 3201 description 3202 "The RSVP-TE interface preeemptions state grouping"; 3203 container interface-softpreemption-state { 3204 description 3205 "The RSVP-TE interface preeemptions state grouping"; 3206 leaf soft-preempted-bandwidth { 3207 type uint32; 3208 description 3209 "The amount of soft-preempted bandwidth on 3210 this interface"; 3211 } 3212 list lsps { 3213 key 3214 "source destination tunnel-id lsp-id "+ 3215 "extended-tunnel-id"; 3216 description 3217 "List of LSPs that are soft-preempted"; 3218 leaf source { 3219 type leafref { 3220 path "/te:te/te:lsps-state/te:lsp/"+ 3221 "te:source"; 3222 } 3223 description 3224 "Tunnel sender address extracted from 3225 SENDER_TEMPLATE object"; 3226 reference "RFC3209"; 3227 } 3228 leaf destination { 3229 type leafref { 3230 path "/te:te/te:lsps-state/te:lsp/"+ 3231 "te:destination"; 3232 } 3233 description 3234 "Tunnel endpoint address extracted from 3235 SESSION object"; 3236 reference "RFC3209"; 3237 } 3238 leaf tunnel-id { 3239 type leafref { 3240 path "/te:te/te:lsps-state/te:lsp/"+ 3241 "te:tunnel-id"; 3242 } 3243 description 3244 "Tunnel identifier used in the SESSION 3245 that remains constant over the life 3246 of the tunnel."; 3247 reference "RFC3209"; 3248 } 3249 leaf lsp-id { 3250 type leafref { 3251 path "/te:te/te:lsps-state/te:lsp/"+ 3252 "te:lsp-id"; 3253 } 3254 description 3255 "Identifier used in the SENDER_TEMPLATE 3256 and the FILTER_SPEC that can be changed 3257 to allow a sender to share resources with 3258 itself."; 3259 reference "RFC3209"; 3260 } 3261 leaf extended-tunnel-id { 3262 type leafref { 3263 path "/te:te/te:lsps-state/te:lsp/"+ 3264 "te:extended-tunnel-id"; 3265 } 3266 description 3267 "Extended Tunnel ID of the LSP."; 3268 reference "RFC3209"; 3269 } 3270 leaf type { 3271 type leafref { 3272 path "/te:te/te:lsps-state/te:lsp/"+ 3273 "te:type"; 3274 } 3275 description "LSP type P2P or P2MP"; 3276 } 3277 } 3278 } 3279 } 3280 /* End of RSVP-TE interface groupings */ 3282 /* RSVP-TE FRR groupings */ 3283 grouping rsvp-te-frr-backups_config { 3284 description 3285 "Top level container for RSVP-TE FRR backup parameters"; 3286 leaf backup-bandwidth { 3287 type uint32; 3288 description 3289 "Maximum bandwidth this facility backup 3290 is allowed to protect"; 3291 } 3292 leaf backup-bandwidth-classtype { 3293 type uint32; 3294 description 3295 "Type of primary LSP bandwidth that the 3296 backup is allowed to protect."; 3297 } 3298 choice type { 3299 description 3300 "FRR backup tunnel type"; 3301 case static-tunnel { 3302 list static-backups { 3303 key "tunnel-name"; 3304 description 3305 "List of static backup tunnels that 3306 protect the RSVP-TE interface."; 3307 leaf tunnel-name { 3308 type string; 3309 description "FRR Backup tunnel"; 3310 } 3311 } 3312 } 3313 case auto-tunnel { 3314 leaf auto-backup-protection { 3315 type identityref { 3316 base te-mpls-types:backup-protection-type; 3317 } 3318 default 3319 te-mpls-types:backup-protection-node-link; 3320 description 3321 "Describes whether the backup should offer 3322 protection against link, node, or either"; 3323 } 3324 leaf auto-backup-path-computation { 3325 type identityref { 3326 base 3327 te-types:path-computation-srlg-type; 3328 } 3329 description 3330 "FRR backup computation type"; 3331 } 3332 } 3333 } 3334 } 3336 grouping rsvp-te-frr-backups { 3337 description 3338 "Top level grouping for RSVP-TE FRR backup properties."; 3339 container rsvp-te-frr-backups { 3340 if-feature te-types:frr-te; 3341 description 3342 "Top level container for RSVP-TE FRR backup 3343 properties."; 3344 container config { 3345 description 3346 "Configuration parameters for interface RSVP-TE 3347 FRR backup properties"; 3348 uses rsvp-te-frr-backups_config; 3349 } 3350 container state { 3351 config false; 3352 description 3353 "State parameters for interface RSVP-TE 3354 FRR backup properties"; 3355 uses rsvp-te-frr-backups_config; 3356 } 3357 } 3358 } 3360 grouping lps-backup-info_state { 3361 description "Backup/bypass LSP related information"; 3362 container backup-info { 3363 description 3364 "backup information"; 3366 leaf backup-tunnel-name { 3367 type string; 3368 description 3369 "If an LSP has an FRR backup LSP that can protect it, 3370 this field identifies the tunnel name of the backup LSP. 3371 Otherwise, this field is empty."; 3372 } 3374 leaf backup-frr-on { 3375 type uint8; 3376 description 3377 "Whether currently this backup is carrying traffic"; 3378 } 3380 leaf backup-protected-lsp-num { 3381 type uint32; 3382 description 3383 "Number of LSPs protected by this backup"; 3384 } 3385 } 3386 } 3388 grouping rsvp-frr-local-revert_config { 3389 description "RSVP-TE FRR local revertive grouping"; 3390 container rsvp-frr-local-revert { 3391 presence "Enable RSVP FRR local revertive recovery 3392 mode."; 3393 description 3394 "RSVP-TE global properties container"; 3395 leaf rsvp-frr-local-revert-delay { 3396 type uint32; 3397 description 3398 "Time to wait after primary link is restored 3399 before node attempts local revertive 3400 procedures."; 3401 } 3403 } 3404 } 3406 /*** End of RSVP-TE FRR backup information ***/ 3408 grouping globals-properties { 3409 description 3410 "Top level grouping for globals properties"; 3411 container config { 3412 description 3413 "Configuration parameters relating to 3414 global MPLS RSVP-TE properties"; 3415 uses rsvp-frr-local-revert_config; 3416 } 3417 container state { 3418 config false; 3419 description 3420 "State parameters relating to 3421 global MPLS RSVP-TE properties"; 3422 uses rsvp-frr-local-revert_config; 3423 } 3424 } 3426 /* RSVP-TE global propeerties */ 3427 augment "/rt:routing/rt:control-plane-protocols/" 3428 + "rt:control-plane-protocol/rsvp:rsvp" { 3429 description 3430 "RSVP-TE augmentation to RSVP globals"; 3431 uses globals-properties; 3432 } 3434 grouping rsvp-te-interface-attributes-mpls { 3435 description 3436 "Top level grouping for MPLS RSVP-TE interface 3437 properties."; 3438 container config { 3439 description 3440 "Configuration parameters relating to RSVP-TE 3441 bandwidth"; 3442 uses te-mpls-types:bandwidth-mpls-reservable; 3443 } 3444 container state { 3445 config false; 3446 description 3447 "State information associated with RSVP-TE 3448 bandwidth"; 3449 uses te-mpls-types:bandwidth-mpls-reservable; 3450 uses rsvp-te-interface-softpreemption_state; 3451 uses rsvp-te-interface_state; 3452 } 3453 } 3455 /* Linkage to the base RSVP all interfaces */ 3456 augment "/rt:routing/rt:control-plane-protocols/" 3457 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { 3458 description 3459 "Augmentations for RSVP-TE MPLS all interfaces properties"; 3460 /* To be added */ 3461 } 3463 /* Linkage to per RSVP interface */ 3464 augment "/rt:routing/rt:control-plane-protocols/" 3465 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 3466 "rsvp:interface" { 3467 description 3468 "Augmentations for RSVP-TE MPLS per interface properties"; 3469 /* To be added */ 3470 } 3472 /* add augmentation for sessions neighbors */ 3473 augment "/rt:routing/rt:control-plane-protocols/" 3474 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:sessions" { 3475 description 3476 "Augmentations for RSVP-TE MPLS sessions"; 3477 /* To be added */ 3478 } 3480 augment "/rt:routing/rt:control-plane-protocols/" 3481 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors" { 3482 description 3483 "Augmentations for RSVP-TE MPLS neighbors properties"; 3484 /* To be added */ 3485 } 3487 /** 3488 * Augmentation to TE generic module 3489 */ 3490 augment "/te:te/te:tunnels/te:tunnel" { 3491 description 3492 "Augmentations for RSVP-TE MPLS TE tunnel properties"; 3493 uses tunnel-properties-mpls; 3494 } 3496 augment "/te:te/te:lsps-state/te:lsp" { 3497 description 3498 "RSVP-TE MPLS LSP state properties"; 3500 uses lsp-properties-mpls; 3501 uses lps-backup-info_state; 3502 } 3504 augment "/te:te/te-dev:interfaces/te-dev:interface" { 3505 description 3506 "RSVP reservable bandwidth configuration properties"; 3507 uses rsvp-te-interface-attributes-mpls; 3508 uses rsvp-te-frr-backups; 3509 } 3510 } 3512 3514 4. IANA Considerations 3516 This document registers the following URIs in the IETF XML registry 3517 [RFC3688]. Following the format in [RFC3688], the following 3518 registration is requested to be made. 3520 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp XML: N/A, the requested 3521 URI is an XML namespace. 3523 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-te XML: N/A, the requested 3524 URI is an XML namespace. 3526 This document registers a YANG module in the YANG Module Names 3527 registry [RFC6020]. 3529 name: ietf-rsvp namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp 3530 prefix: ietf-rsvp reference: RFC3209 3532 name: ietf-rsvp-te namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp- 3533 te prefix: ietf-rsvp-te reference: RFC3209 3535 5. Security Considerations 3537 The YANG module defined in this memo is designed to be accessed via 3538 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 3539 secure transport layer and the mandatory-to-implement secure 3540 transport is SSH [RFC6242]. The NETCONF access control model 3541 [RFC6536] provides means to restrict access for particular NETCONF 3543 users to a pre-configured subset of all available NETCONF protocol 3544 operations and content. 3546 There are a number of data nodes defined in the YANG module which are 3547 writable/creatable/deletable (i.e., config true, which is the 3548 default). These data nodes may be considered sensitive or vulnerable 3549 in some network environments. Write operations (e.g., ) 3550 to these data nodes without proper protection can have a negative 3551 effect on network operations. 3553 6. Acknowledgement 3555 The authors would like to thank Lou Berger for reviewing and 3556 providing valuable feedback on this document. 3558 7. References 3560 7.1. Normative References 3562 [I-D.ietf-netmod-routing-cfg] 3563 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 3564 Management", draft-ietf-netmod-routing-cfg-23 (work in 3565 progress), August 2016. 3567 [I-D.ietf-teas-yang-te] 3568 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., 3569 Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data 3570 Model for Traffic Engineering Tunnels and Interfaces", 3571 draft-ietf-teas-yang-te-04 (work in progress), July 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 3680 Raqib Jones 3681 Brocade 3683 Email: raqib@Brocade.com 3684 Bin Wen 3685 Comcast 3687 Email: Bin_Wen@cable.comcast.com