idnits 2.17.1 draft-ietf-teas-yang-rsvp-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 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 2829 has weird spacing: '...el-name str...' == (2 more instances...) -- The document date (March 20, 2016) is 2949 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-21 == Outdated reference: A later version (-36) exists of draft-ietf-teas-yang-te-03 ** 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: September 21, 2016 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 March 20, 2016 19 A YANG Data Model for Resource Reservation Protocol (RSVP) 20 draft-ietf-teas-yang-rsvp-02 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 September 21, 2016. 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 . . . . . . . . . . . . 46 89 3.3.2. RPC and Notification Data . . . . . . . . . . . . . . 49 90 3.3.3. YANG Module . . . . . . . . . . . . . . . . . . . . . 49 91 3.4. RSVP-TE MPLS Model . . . . . . . . . . . . . . . . . . . 57 92 3.4.1. Configuration and State Data . . . . . . . . . . . . 57 93 3.4.2. RPC and Notification Data . . . . . . . . . . . . . . 61 94 3.4.3. YANG Module . . . . . . . . . . . . . . . . . . . . . 61 95 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 74 96 5. Security Considerations . . . . . . . . . . . . . . . . . . . 74 97 6. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 74 98 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 75 99 7.1. Normative References . . . . . . . . . . . . . . . . . . 75 100 7.2. Informative References . . . . . . . . . . . . . . . . . 76 101 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 76 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-03-20.yang" 652 module ietf-rsvp { 654 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp"; 656 /* Replace with IANA when assigned */ 657 prefix "rsvp"; 659 import ietf-interfaces { 660 prefix "if"; 661 } 662 import ietf-inet-types { 663 prefix inet; 664 } 666 import ietf-yang-types { 667 prefix "yang"; 668 } 670 import ietf-routing { 671 prefix "rt"; 672 } 674 organization 675 "IETF Traffic Engineering Architecture and Signaling (TEAS) 676 Working Group"; 678 contact 679 "WG Web: 680 WG List: 682 WG Chair: Lou Berger 683 685 WG Chair: Vishnu Pavan Beeram 686 688 Editor: Vishnu Pavan Beeram 689 691 Editor: Tarek Saad 692 694 Editor: Rakesh Gandhi 695 697 Editor: Himanshu Shah 698 700 Editor: Xufeng Liu 701 703 Editor: Xia Chen 704 706 Editor: Raqib Jones 707 709 Editor: Bin Wen 710 "; 712 description 713 "This module contains the RSVP YANG data model."; 715 revision 2016-03-20 { 716 description "Latest revision of RSVP yang module."; 717 reference "RFC2205"; 718 } 720 identity rsvp { 721 base "rt:routing-protocol"; 722 description "RSVP protocol"; 723 } 725 identity hash-algorithm { 726 description 727 "Base identity for message-digest algorithm"; 728 } 730 identity MD5 { 731 base hash-algorithm; 732 description 733 "MD5 hash algorithm"; 734 reference "RFC1321"; 735 } 737 identity SHA-1 { 738 base hash-algorithm; 739 description 740 "SHA-1 hash algorithm"; 741 reference "NIST, FIPS PUB 180-1: Secure Hash Standard"; 742 } 744 grouping graceful-restart_config { 745 description 746 "Base configuration parameters relating to RSVP 747 Graceful-Restart"; 748 leaf enabled { 749 type boolean; 750 description 751 "'true' if RSVP Graceful Restart is enabled. 752 'false' if RSVP Graceful Restart is disabled."; 753 } 754 } 756 grouping graceful-restart { 757 description 758 "Top level grouping for RSVP graceful-restart 759 parameters"; 760 container graceful-restart { 761 description 762 "Top level container for RSVP graceful-restart"; 763 uses graceful-restart_config; 764 } 765 } 767 grouping refresh-reduction_config { 768 description 769 "Configuration parameters relating to RSVP 770 refresh reduction"; 772 leaf enabled { 773 type boolean; 774 description 775 "'true' if RSVP Refresh Reduction is enabled. 776 'false' if RSVP Refresh Reduction is disabled."; 777 } 778 } 780 grouping refresh-reduction { 781 description 782 "Top level grouping for RSVP refresh reduction 783 parameters"; 784 container refresh-reduction { 785 description 786 "Top level container for RSVP refresh reduction 787 parameters"; 788 uses refresh-reduction_config; 789 } 790 } 792 grouping authentication_config { 793 description 794 "Configuration parameters relating to RSVP 795 authentication"; 796 leaf enabled { 797 type boolean; 798 description 799 "'true' if RSVP Authenticaiton is enabled. 800 'false' if RSVP Authenticaiton is disabled."; 801 } 802 leaf password { 803 type string; 804 description 805 "An authentication key string"; 806 } 807 leaf algorithm { 808 type identityref { 809 base hash-algorithm; 810 } 811 description 812 "Cryptographic hash algorithm"; 813 } 814 } 816 grouping authentication { 817 description 818 "Top level grouping for RSVP authentication parameters"; 819 container authentication { 820 description 821 "Top level container for RSVP authentication 822 parameters"; 823 uses authentication_config; 824 } 825 } 827 grouping rsvp-hellos_config { 828 description 829 "Configuration parameters relating to RSVP 830 hellos"; 831 leaf enabled { 832 type boolean; 833 description 834 "'true' if RSVP Hello is enabled. 835 'false' if RSVP Hello is disabled."; 836 } 837 } 839 grouping rsvp-hellos { 840 description 841 "Top level grouping for RSVP hellos parameters"; 842 container rsvp-hellos { 843 description 844 "Top level container for RSVP hello parameters"; 845 uses rsvp-hellos_config; 846 } 847 } 849 grouping signaling-parameters_config { 850 description 851 "Configuration parameters relating to RSVP 852 signaling"; 854 } 856 grouping signaling-parameters { 857 description 858 "Top level grouping for RSVP signaling parameters"; 859 uses signaling-parameters_config; 860 } 862 grouping session-attributes { 863 description 864 "Top level grouping for RSVP session properties"; 865 container config { 866 description 867 "Configuration for session properties"; 868 } 869 container state { 870 config false; 871 description 872 "State information associated with RSVP 873 session properties"; 874 } 875 } 877 grouping neighbor-attributes { 878 description 879 "Top level grouping for RSVP neighbor properties"; 880 container neighbor-attributes { 881 description 882 "Top level container for RSVP neighbor properties"; 883 container config { 884 description 885 "Configuration for neighbor properties"; 886 } 887 container state { 888 config false; 889 description 890 "State information associated with RSVP 891 neighbor properties"; 892 uses neighbor-derived_state; 893 } 894 } 895 } 897 grouping statistics-packets_state { 898 description 899 "Packet statistics grouping"; 900 container packets-stats { 901 description 902 "Packet statistics container"; 903 leaf sent { 904 type yang:counter32; 905 description 906 "Packet sent count"; 907 } 909 leaf rcvd { 910 type yang:counter32; 911 description 912 "Packet received count"; 913 } 914 } 915 } 917 grouping statistics-protocol_state { 918 description 919 "RSVP protocol statistics grouping"; 920 container protocol-stats { 921 description 922 "RSVP protocol statistics container"; 923 leaf ack-sent { 924 type yang:counter32; 925 description 926 "Hello sent count"; 927 } 929 leaf ack-rcvd { 930 type yang:counter32; 931 description 932 "Hello received count"; 933 } 935 leaf bundle-sent { 936 type yang:counter32; 937 description 938 "Bundle sent count"; 939 } 941 leaf bundle-rcvd { 942 type yang:counter32; 943 description 944 "Bundle received count"; 945 } 947 leaf hello-sent { 948 type yang:counter32; 949 description 950 "Hello sent count"; 951 } 953 leaf hello-rcvd { 954 type yang:counter32; 955 description 956 "Hello received count"; 957 } 959 leaf integrity-challenge-sent { 960 type yang:counter32; 961 description 962 "Integrity Challenge sent count"; 963 } 965 leaf integrity-challenge-rcvd { 966 type yang:counter32; 967 description 968 "Integrity Challenge received count"; 969 } 971 leaf integrity-response-sent { 972 type yang:counter32; 973 description 974 "Integrity Response sent count"; 975 } 977 leaf integrity-response-rcvd { 978 type yang:counter32; 979 description 980 "Integrity Response received count"; 981 } 983 leaf notify-sent { 984 type yang:counter32; 985 description 986 "Notify sent count"; 987 } 989 leaf notify-rcvd { 990 type yang:counter32; 991 description 992 "Notify received count"; 993 } 995 leaf path-sent { 996 type yang:counter32; 997 description 998 "Path sent count"; 999 } 1001 leaf path-rcvd { 1002 type yang:counter32; 1003 description 1004 "Path received count"; 1005 } 1007 leaf path-err-sent { 1008 type yang:counter32; 1009 description 1010 "Path error sent count"; 1011 } 1013 leaf path-err-rcvd { 1014 type yang:counter32; 1015 description 1016 "Path error received count"; 1017 } 1019 leaf path-tear-sent { 1020 type yang:counter32; 1021 description 1022 "Path tear sent count"; 1023 } 1025 leaf path-tear-rcvd { 1026 type yang:counter32; 1027 description 1028 "Path tear received count"; 1029 } 1031 leaf resv-sent { 1032 type yang:counter32; 1033 description 1034 "Resv sent count"; 1035 } 1037 leaf resv-rcvd { 1038 type yang:counter32; 1039 description 1040 "Resv received count"; 1041 } 1043 leaf resv-confirm-sent { 1044 type yang:counter32; 1045 description 1046 "Confirm sent count"; 1047 } 1049 leaf resv-confirm-rcvd { 1050 type yang:counter32; 1051 description 1052 "Confirm received count"; 1053 } 1055 leaf resv-err-sent { 1056 type yang:counter32; 1057 description 1058 "Resv error sent count"; 1059 } 1061 leaf resv-err-rcvd { 1062 type yang:counter32; 1063 description 1064 "Resv error received count"; 1065 } 1067 leaf resv-tear-sent { 1068 type yang:counter32; 1069 description 1070 "Resv tear sent count"; 1071 } 1073 leaf resv-tear-rcvd { 1074 type yang:counter32; 1075 description 1076 "Resv tear received count"; 1077 } 1079 leaf summary-refresh-sent { 1080 type yang:counter32; 1081 description 1082 "Summary refresh sent count"; 1083 } 1085 leaf summary-refresh-rcvd { 1086 type yang:counter32; 1087 description 1088 "Summary refresh received count"; 1089 } 1091 leaf unknown-recv { 1092 type yang:counter32; 1093 description 1094 "Unknown packet received count"; 1095 } 1096 } 1097 } 1099 grouping statistics-errors_state { 1100 description 1101 "Error statistics state grouping"; 1102 container errors-stats { 1103 description 1104 "Error statistics state container"; 1105 leaf authenticate { 1106 type yang:counter64; 1107 description 1108 "The total number of packets received with an 1109 authentication failure."; 1110 } 1112 leaf checksum { 1113 type yang:counter64; 1114 description 1115 "The total number of packets received with an invalid 1116 checksum value."; 1117 } 1119 leaf packet-len { 1120 type yang:counter64; 1121 description 1122 "The total number of packets received with an invalid 1123 packet length."; 1124 } 1125 } 1126 } // statistics_state 1128 grouping statistics_state { 1129 description "RSVP statistic attributes."; 1130 uses statistics-packets_state; 1131 uses statistics-protocol_state; 1132 uses statistics-errors_state; 1133 } 1135 grouping neighbor-derived_state { 1136 description 1137 "Derived state at neighbor level."; 1139 leaf epoch { 1140 type uint32; 1141 description 1142 "Neighbor epoch."; 1143 } 1145 leaf expiry-time { 1146 type uint32; 1147 units seconds; 1148 description 1149 "Neighbor expiry time after which the neighbor state 1150 is purged if no states associated with it"; 1151 } 1153 container graceful-restart { 1154 description 1155 "Graceful restart information."; 1157 leaf enabled { 1158 type boolean; 1159 description 1160 "'true' if graceful restart is enabled for the 1161 neighbor."; 1162 } 1164 leaf local-restart-time { 1165 type uint32; 1166 units seconds; 1167 description 1168 "Local node restart time"; 1169 } 1171 leaf local-recovery-time { 1172 type uint32; 1173 units seconds; 1174 description 1175 "Local node recover time"; 1176 } 1178 leaf nbr-restart-time { 1179 type uint32; 1180 units seconds; 1181 description 1182 "Neighbor restart time"; 1183 } 1185 leaf nbr-recovery-time { 1186 type uint32; 1187 units seconds; 1188 description 1189 "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 1238 leaf hello-status { 1239 type enumeration { 1240 enum "enabled" { 1241 description 1242 "Enabled"; 1243 } 1244 enum "disabled" { 1245 description 1246 "Disabled"; 1247 } 1248 enum "restarting" { 1249 description 1250 "Restarting"; 1251 } 1252 } 1253 description 1254 "Hello status"; 1255 } 1257 leaf interface { 1258 type if:interface-ref; 1259 description 1260 "Interface to this neighbor."; 1261 } 1263 leaf neighbor-state { 1264 type enumeration { 1265 enum "up" { 1266 description 1267 "up"; 1268 } 1269 enum "down" { 1270 description 1271 "down"; 1272 } 1273 enum "hello-disable" { 1274 description 1275 "hello-disable"; 1276 } 1277 enum "restarting" { 1278 description 1279 "restarting"; 1280 } 1281 } 1282 description 1283 "Neighbor state"; 1284 } 1286 leaf psb-count { 1287 type uint32; 1288 description 1289 "Number of PSB state currently referencing the 1290 neighbor."; 1291 } 1293 leaf rsb-count { 1294 type uint32; 1295 description 1296 "Number of RSB state currently referencing the 1297 neighbor."; 1298 } 1300 leaf refresh-reduction-capable { 1301 type boolean; 1302 description 1303 "Whether neighbor is refresh reduction capable."; 1304 } 1306 leaf restart-count { 1307 type uint32; 1308 description 1309 "Number of times this neighbor restart"; 1310 } 1312 leaf restart-time { 1313 type yang:date-and-time; 1314 description 1315 "Last restart time of the neighbor"; 1316 } 1317 } // neighbor-derived_state 1319 grouping global-attributes { 1320 description 1321 "Top level grouping for RSVP global properties"; 1322 container config { 1323 description 1324 "Configuration globals properties"; 1325 uses graceful-restart; 1326 } 1327 container state { 1328 config false; 1329 description 1330 "State information associated with RSVP 1331 global properties"; 1332 uses graceful-restart; 1333 uses statistics_state; 1334 } 1336 } 1338 grouping intf-attributes { 1339 description 1340 "Top level grouping for RSVP interface properties"; 1341 container config { 1342 description 1343 "Configuration parameters relating to 1344 RSVP interface parameters"; 1345 uses signaling-parameters; 1346 uses refresh-reduction; 1347 uses rsvp-hellos; 1348 uses authentication; 1349 } 1350 container state { 1351 config false; 1352 description 1353 "State information associated with RSVP 1354 interface parameters"; 1355 uses signaling-parameters; 1356 uses refresh-reduction; 1357 uses rsvp-hellos; 1358 uses authentication; 1359 uses statistics_state; 1360 } 1361 } 1363 augment "/rt:routing/rt:routing-protocols/" 1364 + "rt:routing-protocol" { 1365 when "rt:type = 'rsvp:rsvp'" { 1366 description 1367 "This augment is only valid when routing protocol 1368 instance type is RSVP."; 1369 } 1370 description 1371 "RSVP protocol augmentation"; 1372 container rsvp { 1373 presence "Enable RSVP feature"; 1374 description "RSVP feature container"; 1375 container globals { 1376 description "RSVP global properties."; 1377 uses global-attributes; 1378 } 1380 container interfaces { 1381 description 1382 "RSVP interfaces container"; 1383 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"; 1430 leaf address { 1431 type inet:ip-address; 1432 description 1433 "Neighbor address"; 1434 } 1435 uses neighbor-attributes; 1436 } 1437 } 1438 } 1439 } 1440 } 1441 1443 3.2. RSVP Extended YANG Model 1445 The RSVP extended YANG model covers optional configuration(s) for 1446 RSVP core feature(s). It also covers non-core RSVP feature(s) that 1447 are negotiated with "if-feature" checks. 1449 3.2.1. Configuration and State Data 1451 Figure 3 shows the YANG tree representation for configuration and 1452 state data that is augmenting the RSVP basic module: 1454 module: ietf-rsvp-extended 1455 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1456 rsvp:globals/rsvp:config/rsvp:graceful-restart: 1457 +--rw restart-time? uint32 1458 +--rw recovery-time? uint32 1459 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1460 rsvp:globals/rsvp:state/rsvp:graceful-restart: 1461 +--ro restart-time? uint32 1462 +--ro recovery-time? uint32 1463 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1464 rsvp:globals/rsvp:state/rsvp:packets-stats: 1465 +--ro discontinuity-time? yang:date-and-time 1466 +--ro tx-dropped? yang:counter32 1467 +--ro rx-dropped? yang:counter32 1468 +--ro tx-error? yang:counter32 1469 +--ro rx-error? yang:counter32 1470 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1471 rsvp:globals/rsvp:state/rsvp:protocol-stats: 1472 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1473 rsvp:globals/rsvp:state/rsvp:errors-stats: 1474 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1475 rsvp:interfaces/rsvp:config: 1476 +--rw refresh-interval? uint32 1477 +--rw refresh-misses? uint32 1478 +--rw checksum? uint32 1479 +--rw patherr-state-removal? empty 1481 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1482 rsvp:interfaces/rsvp:state: 1483 +--ro refresh-interval? uint32 1484 +--ro refresh-misses? uint32 1485 +--ro checksum? uint32 1486 +--ro patherr-state-removal? empty 1487 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1488 rsvp:interfaces/rsvp:config/rsvp:refresh-reduction: 1489 +--rw bundle-message-max-size? uint32 1490 +--rw reliable-ack-hold-time? uint32 1491 +--rw reliable-ack-max-size? uint32 1492 +--rw reliable-retransmit-time? uint32 1493 +--rw reliable-srefresh? empty 1494 +--rw summary-max-size? uint32 1495 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1496 rsvp:interfaces/rsvp:state/rsvp:refresh-reduction: 1497 +--ro bundle-message-max-size? uint32 1498 +--ro reliable-ack-hold-time? uint32 1499 +--ro reliable-ack-max-size? uint32 1500 +--ro reliable-retransmit-time? uint32 1501 +--ro reliable-srefresh? empty 1502 +--ro summary-max-size? uint32 1503 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1504 rsvp:interfaces/rsvp:config/rsvp:rsvp-hellos: 1505 +--rw interface-based? empty 1506 +--rw hello-interval? uint32 1507 +--rw hello-misses? uint32 1508 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1509 rsvp:interfaces/rsvp:state/rsvp:rsvp-hellos: 1510 +--ro interface-based? empty 1511 +--ro hello-interval? uint32 1512 +--ro hello-misses? uint32 1513 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1514 rsvp:interfaces/rsvp:config/rsvp:authentication: 1515 +--rw lifetime? uint32 1516 +--rw window-size? uint32 1517 +--rw challenge? empty 1518 +--rw retransmits? uint32 1519 +--rw key-chain? string 1520 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1521 rsvp:interfaces/rsvp:state/rsvp:authentication: 1522 +--ro lifetime? uint32 1523 +--ro window-size? uint32 1524 +--ro challenge? empty 1525 +--ro retransmits? uint32 1526 +--ro key-chain? string 1527 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 1528 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: 1575 +--ro lifetime? uint32 1576 +--ro window-size? uint32 1577 +--ro challenge? empty 1578 +--ro retransmits? uint32 1579 +--ro key-chain? string 1581 Figure 3: RSVP extended YANG Tree representation 1583 3.2.2. YANG Module 1585 Figure 4 shows the RSVP extended YANG module: 1587 file "ietf-rsvp-extended@2016-03-20.yang" 1588 module ietf-rsvp-extended { 1590 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-extended"; 1592 prefix "rsvp-ext"; 1594 import ietf-rsvp { 1595 prefix "rsvp"; 1596 } 1598 import ietf-routing { 1599 prefix "rt"; 1600 } 1602 import ietf-yang-types { 1603 prefix "yang"; 1604 } 1606 organization 1607 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1608 Working Group"; 1610 contact 1611 "WG Web: 1612 WG List: 1614 WG Chair: Lou Berger 1615 1617 WG Chair: Vishnu Pavan Beeram 1618 1620 Editor: Vishnu Pavan Beeram 1621 1623 Editor: Tarek Saad 1624 1626 Editor: Rakesh Gandhi 1627 1629 Editor: Himanshu Shah 1630 1632 Editor: Xufeng Liu 1633 1635 Editor: Xia Chen 1636 1638 Editor: Raqib Jones 1639 1641 Editor: Bin Wen 1642 "; 1644 description 1645 "This module contains the Extended RSVP YANG data model."; 1647 revision 2016-03-20 { 1648 description "Latest revision of RSVP extended yang module."; 1649 reference "RFC2205"; 1650 } 1652 /* RSVP features */ 1653 feature authentication { 1654 description 1655 "Indicates support for RSVP authentication"; 1656 } 1658 feature error-statistics { 1659 description 1660 "Indicates support for error statistics"; 1661 } 1663 feature global-statistics { 1664 description 1665 "Indicates support for global statistics"; 1666 } 1668 feature graceful-restart { 1669 description 1670 "Indicates support for RSVP graceful restart"; 1671 } 1673 feature hellos { 1674 description 1675 "Indicates support for RSVP hellos (RFC3209)."; 1676 } 1678 feature notify { 1679 description 1680 "Indicates support for RSVP notify message (RFC3473)."; 1681 } 1683 feature refresh-reduction { 1684 description 1685 "Indicates support for RSVP refresh reduction 1686 (RFC2961)."; 1687 } 1689 feature refresh-reduction-extended { 1690 description 1691 "Indicates support for RSVP refresh reduction 1692 (RFC2961)."; 1693 } 1695 feature per-interface-statistics { 1696 description 1697 "Indicates support for per interface statistics"; 1698 } 1700 grouping graceful-restart-extended_config { 1701 description 1702 "Configuration parameters relating to RSVP 1703 Graceful-Restart"; 1704 leaf restart-time { 1705 type uint32; 1706 units seconds; 1707 description 1708 "Graceful restart time (seconds)."; 1709 reference 1710 "RFC 5495: Description of the Resource 1711 Reservation Protocol - Traffic-Engineered 1712 (RSVP-TE) Graceful Restart Procedures"; 1713 } 1714 leaf recovery-time { 1715 type uint32; 1716 description 1717 "RSVP state recovery time"; 1718 } 1719 } 1721 grouping authentication-extended_config { 1722 description 1723 "Configuration parameters relating to RSVP 1724 authentication"; 1725 leaf lifetime { 1726 type uint32 { 1727 range "30..86400"; 1728 } 1729 description 1730 "Life time for each security association"; 1731 reference 1732 "RFC 2747: RSVP Cryptographic 1733 Authentication"; 1734 } 1735 leaf window-size { 1736 type uint32 { 1737 range "1..64"; 1738 } 1739 description 1740 "Window-size to limit number of out-of-order 1741 messages."; 1742 reference 1743 "RFC 2747: RSVP Cryptographic 1744 Authentication"; 1745 } 1746 leaf challenge { 1747 type empty; 1748 description 1749 "Enable challenge messages."; 1750 reference 1751 "RFC 2747: RSVP Cryptographic 1752 Authentication"; 1753 } 1754 leaf retransmits { 1755 type uint32 { 1756 range "1..10000"; 1757 } 1758 description 1759 "Number of retransmits when messages are 1760 dropped."; 1761 reference 1762 "RFC 2747: RSVP Cryptographic 1763 Authentication"; 1764 } 1765 leaf key-chain { 1766 type string { 1767 length "1..32"; 1768 } 1769 description 1770 "Key chain name to authenticate RSVP 1771 signaling messages."; 1772 reference 1773 "RFC 2747: RSVP Cryptographic 1774 Authentication"; 1775 } 1776 } 1778 grouping rsvp-hellos-extended_config { 1779 description 1780 "Configuration parameters relating to RSVP 1781 hellos"; 1782 leaf interface-based { 1783 type empty; 1784 description "Enable interface-based 1785 Hello adjacency if present."; 1786 } 1787 leaf hello-interval { 1788 type uint32; 1789 units milliseconds; 1790 description 1791 "Configure interval between successive Hello 1792 messages in milliseconds."; 1793 reference 1794 "RFC 3209: RSVP-TE: Extensions to RSVP for 1795 LSP Tunnels. 1796 RFC 5495: Description of the Resource 1797 Reservation Protocol - Traffic-Engineered 1798 (RSVP-TE) Graceful Restart Procedures"; 1799 } 1800 leaf hello-misses { 1801 type uint32 { 1802 range "1..10"; 1803 } 1804 description 1805 "Configure max number of consecutive missed 1806 Hello messages."; 1807 reference 1808 "RFC 3209: RSVP-TE: Extensions to RSVP for 1809 LSP Tunnels RFC 5495: Description of the 1810 Resource Reservation Protocol - Traffic- 1811 Engineered (RSVP-TE) Graceful Restart 1812 Procedures"; 1813 } 1814 } 1816 grouping signaling-parameters-extended_config { 1817 description 1818 "Configuration parameters relating to RSVP 1819 signaling"; 1820 leaf refresh-interval { 1821 type uint32; 1822 description 1823 "Set interval between successive refreshes"; 1824 } 1825 leaf refresh-misses { 1826 type uint32; 1827 description 1828 "Set max number of consecutive missed 1829 messages for state expiry"; 1830 } 1831 leaf checksum { 1832 type uint32; 1833 description 1834 "Enable RSVP message checksum computation"; 1835 } 1836 leaf patherr-state-removal { 1837 type empty; 1838 description 1839 "State-Removal flag in Path Error message 1840 if present."; 1841 } 1842 } 1844 grouping refresh-reduction-extended_config { 1845 description 1846 "Configuration parameters relating to RSVP 1847 refresh reduction"; 1849 leaf bundle-message-max-size { 1850 type uint32 { 1851 range "512..65000"; 1852 } 1853 description 1854 "Configure maximum size (bytes) of a 1855 single RSVP Bundle message."; 1856 } 1857 leaf reliable-ack-hold-time { 1858 type uint32; 1859 units milliseconds; 1860 description 1861 "Configure hold time in milliseconds for 1862 sending RSVP ACK message(s)."; 1863 } 1864 leaf reliable-ack-max-size { 1865 type uint32; 1866 description 1867 "Configure max size of a single RSVP ACK 1868 message."; 1869 } 1870 leaf reliable-retransmit-time { 1871 type uint32; 1872 units milliseconds; 1873 description 1874 "Configure min delay in milliseconds to 1875 wait for an ACK before a retransmit."; 1876 } 1877 leaf reliable-srefresh { 1878 type empty; 1879 description 1880 "Configure use of reliable messaging for 1881 summary refresh if present."; 1882 } 1883 leaf summary-max-size { 1884 type uint32 { 1885 range "20..65000"; 1886 } 1887 description 1888 "Configure max size (bytes) of a single 1889 RSVP summary refresh message."; 1890 } 1891 } 1893 grouping statistics-packets-extended_state { 1894 description 1895 "Packet statistics."; 1896 leaf discontinuity-time { 1897 type yang:date-and-time; 1898 description 1899 "The time on the most recent occasion at which any one 1900 or more of the statistic counters suffered a 1901 discontinuity. If no such discontinuities have occurred 1902 since the last re-initialization of the local 1903 management subsystem, then this node contains the time 1904 the local management subsystem re-initialized itself."; 1905 } 1906 leaf tx-dropped { 1907 type yang:counter32; 1908 description 1909 "Packet tx dropped count"; 1910 } 1912 leaf rx-dropped { 1913 type yang:counter32; 1914 description 1915 "Packet rx dropped count"; 1916 } 1918 leaf tx-error { 1919 type yang:counter32; 1920 description 1921 "Packet tx error count"; 1922 } 1924 leaf rx-error { 1925 type yang:counter32; 1926 description 1927 "Packet rx error count"; 1928 } 1929 } 1931 grouping statistics-protocol-extended_state { 1932 description 1933 "RSVP protocol statistics."; 1934 } 1936 grouping statistics-errors-extended_state { 1937 description 1938 "Error statistics."; 1939 } 1941 grouping statistics-extended_state { 1942 description "RSVP statistic attributes."; 1943 uses statistics-packets-extended_state; 1944 uses statistics-protocol-extended_state; 1945 uses statistics-errors-extended_state; 1946 } 1948 /** 1949 * RSVP extensions augmentations 1950 */ 1952 /* RSVP globals graceful restart*/ 1954 augment "/rt:routing/rt:routing-protocols/" 1955 + "rt:routing-protocol/rsvp:rsvp/rsvp:globals/rsvp:config/"+ 1956 "rsvp:graceful-restart" { 1957 description 1958 "RSVP globals configuration extensions"; 1959 uses graceful-restart-extended_config; 1960 } 1961 augment "/rt:routing/rt:routing-protocols/" 1962 + "rt:routing-protocol/rsvp:rsvp/rsvp:globals/rsvp:state/"+ 1963 "rsvp:graceful-restart" { 1964 description 1965 "RSVP globals state extensions"; 1966 uses graceful-restart-extended_config; 1967 } 1969 /* RSVP statistics augmentation */ 1970 augment "/rt:routing/rt:routing-protocols/" 1971 + "rt:routing-protocol/rsvp:rsvp/rsvp:globals/rsvp:state/"+ 1972 "rsvp:packets-stats" { 1973 description 1974 "RSVP packet stats extensions"; 1975 uses statistics-packets-extended_state; 1976 } 1977 augment "/rt:routing/rt:routing-protocols/" 1978 + "rt:routing-protocol/rsvp:rsvp/rsvp:globals/rsvp:state/"+ 1979 "rsvp:protocol-stats" { 1980 description 1981 "RSVP protocol message stats extensions"; 1982 uses statistics-protocol-extended_state; 1983 } 1984 augment "/rt:routing/rt:routing-protocols/" 1985 + "rt:routing-protocol/rsvp:rsvp/rsvp:globals/rsvp:state/"+ 1986 "rsvp:errors-stats" { 1987 description 1988 "RSVP errors stats extensions"; 1989 uses statistics-errors-extended_state; 1990 } 1992 /** 1993 * RSVP all interfaces extensions 1994 */ 1996 /* RSVP interface signaling extensions */ 1997 augment "/rt:routing/rt:routing-protocols/" 1998 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:config" { 1999 description 2000 "RSVP signaling all interfaces configuration extensions"; 2001 uses signaling-parameters-extended_config; 2002 } 2003 augment "/rt:routing/rt:routing-protocols/" 2004 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:state" { 2005 description 2006 "RSVP signaling all interfaces state extensions"; 2007 uses signaling-parameters-extended_config; 2008 } 2009 /* RSVP refresh reduction extension */ 2010 augment "/rt:routing/rt:routing-protocols/" 2011 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:config/" + 2012 "rsvp:refresh-reduction" { 2013 description 2014 "RSVP refresh-reduction all interface configuration 2015 extensions"; 2016 uses refresh-reduction-extended_config; 2017 } 2018 augment "/rt:routing/rt:routing-protocols/" 2019 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:state/" + 2020 "rsvp:refresh-reduction" { 2021 description 2022 "RSVP refresh-reduction all interfaces state extensions"; 2023 uses refresh-reduction-extended_config; 2024 } 2026 /* RSVP hellos extension */ 2027 augment "/rt:routing/rt:routing-protocols/" 2028 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:config/" + 2029 "rsvp:rsvp-hellos" { 2030 description 2031 "RSVP hello all interfaces configuration extensions"; 2032 uses rsvp-hellos-extended_config; 2033 } 2034 augment "/rt:routing/rt:routing-protocols/" 2035 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:state/" + 2036 "rsvp:rsvp-hellos" { 2037 description 2038 "RSVP hello all interfaces state extensions"; 2039 uses rsvp-hellos-extended_config; 2040 } 2042 /* RSVP authentication extension */ 2043 augment "/rt:routing/rt:routing-protocols/" 2044 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:config/" + 2045 "rsvp:authentication" { 2046 description 2047 "RSVP authentication all interfaces configuration extensions"; 2048 uses authentication-extended_config; 2049 } 2050 augment "/rt:routing/rt:routing-protocols/" 2051 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:state/" + 2052 "rsvp:authentication" { 2053 description 2054 "RSVP authentication all interfaces state extensions"; 2055 uses authentication-extended_config; 2056 } 2057 /** 2058 * RSVP interface extensions 2059 */ 2061 /* RSVP interface signaling extensions */ 2062 augment "/rt:routing/rt:routing-protocols/" 2063 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/" + 2064 "rsvp:interface/rsvp:config" { 2065 description 2066 "RSVP signaling interface configuration extensions"; 2067 uses signaling-parameters-extended_config; 2068 } 2069 augment "/rt:routing/rt:routing-protocols/" 2070 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/" + 2071 "rsvp:interface/rsvp:state" { 2072 description 2073 "RSVP signaling interface state extensions"; 2074 uses signaling-parameters-extended_config; 2075 } 2077 /* RSVP refresh reduction extension */ 2078 augment "/rt:routing/rt:routing-protocols/" 2079 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/" + 2080 "rsvp:interface/rsvp:config/rsvp:refresh-reduction" { 2081 description 2082 "RSVP refresh-reduction interface configuration extensions"; 2083 uses refresh-reduction-extended_config; 2084 } 2085 augment "/rt:routing/rt:routing-protocols/" 2086 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/" + 2087 "rsvp:interface/rsvp:state/rsvp:refresh-reduction" { 2088 description 2089 "RSVP refresh-reduction interface state extensions"; 2090 uses refresh-reduction-extended_config; 2091 } 2093 /* RSVP hellos extension */ 2094 augment "/rt:routing/rt:routing-protocols/" 2095 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/" + 2096 "rsvp:interface/rsvp:config/rsvp:rsvp-hellos" { 2097 description 2098 "RSVP hello interface configuration extensions"; 2099 uses rsvp-hellos-extended_config; 2100 } 2101 augment "/rt:routing/rt:routing-protocols/" 2102 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/" + 2103 "rsvp:interface/rsvp:state/rsvp:rsvp-hellos" { 2104 description 2105 "RSVP hello interface state extensions"; 2106 uses rsvp-hellos-extended_config; 2107 } 2109 /* RSVP authentication extension */ 2110 augment "/rt:routing/rt:routing-protocols/" 2111 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/" + 2112 "rsvp:interface/rsvp:config/rsvp:authentication" { 2113 description 2114 "RSVP authentication interface configuration extensions"; 2115 uses authentication-extended_config; 2116 } 2117 augment "/rt:routing/rt:routing-protocols/" 2118 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/" + 2119 "rsvp:interface/rsvp:state/rsvp:authentication" { 2120 description 2121 "RSVP authentication interface state extensions"; 2122 uses authentication-extended_config; 2123 } 2124 } 2125 2127 Figure 4: RSVP extended YANG module 2129 3.3. RSVP-TE Generic YANG Model 2131 This section contains the augmentation of the RSVP base YANG model 2132 for signalling Traffic-Engineering (RSVP-TE) Label Switched Paths 2133 (LSPs). New module is introduced that augment the RSVP-TE generic 2134 module to cover data items that are technology agnostic. 2136 This model imports and augments the base RSVP YANG model (presented 2137 in Section 3.1.3). It also imports and augments the TE YANG model 2138 defined in [I-D.ietf-teas-yang-te] to enable configuration of RSVP-TE 2139 attributes on TE tunnels. 2141 The following subsections provide overview of the parts of the RSVP- 2142 TE generic model pertaining to configuration and state data. 2144 3.3.1. Configuration and State Data 2146 There are three types of configuration and state data nodes in this 2147 module: 2149 o those augmenting or extending the base RSVP module 2151 o those augmenting or extending the base TE generic module 2152 o those that are specific to the RSVP-TE module 2154 Below is a YANG tree representation for data items defined in the 2155 RSVP-TE generic module: 2157 module: ietf-rsvp-te 2158 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2159 rsvp:globals: 2160 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2161 rsvp:interfaces: 2162 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2163 rsvp:interfaces/rsvp:interface: 2164 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2165 rsvp:sessions: 2166 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2167 rsvp:neighbors: 2168 augment /te:te/te:tunnels/te:tunnel: 2169 +--rw config 2170 | +--rw lsp-signaled-name? string 2171 | +--rw lsp-priority-setup? uint8 2172 | +--rw lsp-priority-hold? uint8 2173 | +--rw local-recording-desired? boolean 2174 | +--rw se-style-desired? boolean 2175 | +--rw path-reevaluation-request? boolean 2176 | +--rw soft-preemption-desired? boolean 2177 | +--rw lsp-rerouting? enumeration 2178 | +--rw lsp-integrety-required? boolean 2179 | +--rw lsp-contiguous? boolean 2180 | +--rw lsp-stitching-desired? boolean 2181 | +--rw lsp-preplanned? boolean 2182 | +--rw lsp-oob-mapping? boolean 2183 +--ro state 2184 +--ro lsp-signaled-name? string 2185 +--ro lsp-priority-setup? uint8 2186 +--ro lsp-priority-hold? uint8 2187 +--ro local-recording-desired? boolean 2188 +--ro se-style-desired? boolean 2189 +--ro path-reevaluation-request? boolean 2190 +--ro soft-preemption-desired? boolean 2191 +--ro lsp-rerouting? enumeration 2192 +--ro lsp-integrety-required? boolean 2193 +--ro lsp-contiguous? boolean 2194 +--ro lsp-stitching-desired? boolean 2195 +--ro lsp-preplanned? boolean 2196 +--ro lsp-oob-mapping? boolean 2197 augment /te:te/te:lsps-state/te:lsp: 2198 +--ro lsp-signaled-name? string 2199 +--ro lsp-priority-setup? uint8 2200 +--ro lsp-priority-hold? uint8 2201 +--ro local-recording-desired? boolean 2202 +--ro se-style-desired? boolean 2203 +--ro path-reevaluation-request? boolean 2204 +--ro soft-preemption-desired? boolean 2205 +--ro lsp-rerouting? enumeration 2206 +--ro lsp-integrety-required? boolean 2207 +--ro lsp-contiguous? boolean 2208 +--ro lsp-stitching-desired? boolean 2209 +--ro lsp-preplanned? boolean 2210 +--ro lsp-oob-mapping? boolean 2211 +--ro explicit-route-object 2212 | +--ro incoming-explicit-route-subobjects* [subobject-index] 2213 | | +--ro subobject-index uint32 2214 | | +--ro (type)? 2215 | | +--:(ipv4-address) 2216 | | | +--ro v4-address? inet:ipv4-address 2217 | | | +--ro v4-prefix-length? uint8 2218 | | | +--ro v4-loose? boolean 2219 | | +--:(ipv6-address) 2220 | | | +--ro v6-address? inet:ipv6-address 2221 | | | +--ro v6-prefix-length? uint8 2222 | | | +--ro v6-loose? boolean 2223 | | +--:(as-number) 2224 | | | +--ro as-number? uint16 2225 | | +--:(unnumbered-link) 2226 | | | +--ro router-id? inet:ip-address 2227 | | | +--ro interface-id? uint32 2228 | | +--:(label) 2229 | | +--ro value? uint32 2230 | +--ro outgoing-explicit-route-subobjects* [subobject-index] 2231 | +--ro subobject-index uint32 2232 | +--ro (type)? 2233 | +--:(ipv4-address) 2234 | | +--ro v4-address? inet:ipv4-address 2235 | | +--ro v4-prefix-length? uint8 2236 | | +--ro v4-loose? boolean 2237 | +--:(ipv6-address) 2238 | | +--ro v6-address? inet:ipv6-address 2239 | | +--ro v6-prefix-length? uint8 2240 | | +--ro v6-loose? boolean 2241 | +--:(as-number) 2242 | | +--ro as-number? uint16 2243 | +--:(unnumbered-link) 2244 | | +--ro router-id? inet:ip-address 2245 | | +--ro interface-id? uint32 2246 | +--:(label) 2247 | +--ro value? uint32 2248 +--ro record-route-object 2249 +--ro path-record-route-subobjects* [subobject-index] 2250 | +--ro subobject-index uint32 2251 | +--ro (type)? 2252 | +--:(ipv4-address) 2253 | | +--ro v4-address? inet:ipv4-address 2254 | | +--ro v4-prefix-length? uint8 2255 | | +--ro v4-flags? uint8 2256 | +--:(ipv6-address) 2257 | | +--ro v6-address? inet:ipv6-address 2258 | | +--ro v6-prefix-length? uint8 2259 | | +--ro v6-flags? uint8 2260 | +--:(label) 2261 | +--ro value? uint32 2262 | +--ro flags? uint8 2263 +--ro resv-record-route-subobjects* [subobject-index] 2264 +--ro subobject-index uint32 2265 +--ro (type)? 2266 +--:(ipv4-address) 2267 | +--ro v4-address? inet:ipv4-address 2268 | +--ro v4-prefix-length? uint8 2269 | +--ro v4-flags? uint8 2270 +--:(ipv6-address) 2271 | +--ro v6-address? inet:ipv6-address 2272 | +--ro v6-prefix-length? uint8 2273 | +--ro v6-flags? uint8 2274 +--:(label) 2275 +--ro value? uint32 2276 +--ro flags? uint8 2277 augment /te:te/te-dev:interfaces/te-dev:interface: 2279 Figure 5: RSVP-TE YANG Tree representation 2281 3.3.2. RPC and Notification Data 2283 TBD. 2285 3.3.3. YANG Module 2287 file "ietf-rsvp-te@2016-03-20.yang" 2289 module ietf-rsvp-te { 2291 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te"; 2293 prefix "rsvp-te"; 2294 import ietf-rsvp { 2295 prefix rsvp; 2296 } 2298 import ietf-te { 2299 prefix ietf-te; 2300 } 2302 import ietf-inet-types { 2303 prefix inet; 2304 } 2306 /* Import TE generic types */ 2307 import ietf-te-types { 2308 prefix ietf-te-types; 2309 } 2311 organization 2312 "IETF TEAS Working Group"; 2314 contact "TBA"; 2316 description 2317 "This module contains the RSVP YANG generic data model."; 2319 revision 2016-03-20 { 2320 description "Latest revision to RSVP-TE generic YANG module"; 2321 reference "RFC3209"; 2322 } 2324 /** 2325 * RSVP-TE LSPs groupings. 2326 */ 2328 grouping lsp-record-route-information_state { 2329 description "recorded route information grouping"; 2330 container record-route-object { 2331 description "RSVP recorded route object information"; 2332 list path-record-route-subobjects { 2333 when "../origin-type != 'ingress'" { 2334 description "Applicable on non-ingress LSPs only"; 2335 } 2336 key "subobject-index"; 2337 description ""; 2338 leaf subobject-index { 2339 type uint32; 2340 description "RRO subobject index"; 2341 } 2342 uses ietf-te-types:record-route-subobject; 2343 } 2344 list resv-record-route-subobjects { 2345 when "../origin-type != 'egress'" { 2346 description "Applicable on non-egress LSPs only"; 2347 } 2348 key "subobject-index"; 2349 description ""; 2350 leaf subobject-index { 2351 type uint32; 2352 description "RRO subobject index"; 2353 } 2354 uses ietf-te-types:record-route-subobject; 2355 } 2356 } 2357 } 2359 grouping lsp-explicit-route-information_state { 2360 description "RSVP-TE LSP explicit-route information"; 2361 container explicit-route-object { 2362 description "Explicit route object information"; 2363 list incoming-explicit-route-subobjects { 2364 when "../origin-type != 'ingress'" { 2365 description "Applicable on non-ingress LSPs only"; 2366 } 2367 key "subobject-index"; 2368 description ""; 2369 leaf subobject-index { 2370 type uint32; 2371 description "ERO subobject index"; 2372 } 2373 uses ietf-te-types:explicit-route-subobject; 2374 } 2375 list outgoing-explicit-route-subobjects { 2376 when "../origin-type != 'egress'" { 2377 description "Applicable on non-egress LSPs only"; 2378 } 2379 key "subobject-index"; 2380 description ""; 2381 leaf subobject-index { 2382 type uint32; 2383 description "ERO subobject index"; 2384 } 2385 uses ietf-te-types:explicit-route-subobject; 2386 } 2387 } 2388 } 2389 grouping lsp-attributes-flags_config { 2390 description 2391 "Configuration parameters relating to RSVP-TE LSP 2392 attribute flags"; 2393 leaf lsp-rerouting { 2394 type enumeration { 2395 enum end-to-end-routing { 2396 description 2397 "End-to-end routing desired"; 2398 reference "RFC4920, RFC5420"; 2399 } 2400 enum boundary-rerouting { 2401 description 2402 "Boundary rerouting desired"; 2403 reference "RFC4920, RFC5420"; 2404 } 2405 enum segment-based-rerouting { 2406 description 2407 "Segment-based rerouting desired"; 2408 reference "RFC4920, RFC5420"; 2409 } 2410 } 2411 description "LSP rerouting types"; 2412 } 2413 leaf lsp-integrety-required { 2414 type empty; 2415 description "LSP integrity desired"; 2416 reference "RFC4875"; 2417 } 2418 leaf lsp-contiguous { 2419 type empty; 2420 description "Contiguous LSP"; 2421 reference "RFC5151"; 2422 } 2423 leaf lsp-stitching-desired { 2424 type empty; 2425 description "Stitched LSP"; 2426 reference "RFC5150"; 2427 } 2428 leaf lsp-preplanned { 2429 type empty; 2430 description "Preplanned LSP"; 2431 reference "RFC6001"; 2432 } 2433 leaf lsp-oob-mapping { 2434 type empty; 2435 description 2436 "Mapping is done out-of-band"; 2438 reference "RFC6511"; 2439 } 2440 } 2442 grouping lsp-session-attributes-obj-flags_config { 2443 description 2444 "Configuration parameters relating to RSVP-TE LSP 2445 session attribute flags"; 2446 reference 2447 "RFC4859: Registry for RSVP-TE Session Flags"; 2448 leaf local-recording-desired { 2449 type empty; 2450 description "Path recording is desired."; 2451 reference "RFC3209"; 2452 } 2453 leaf se-style-desired { 2454 type empty; 2455 description "SE Style desired"; 2456 reference "RFC3209"; 2457 } 2458 leaf path-reevaluation-request { 2459 type empty; 2460 description "Path re-evaluation request"; 2461 reference "RFC4736"; 2462 } 2463 leaf soft-preemption-desired { 2464 type empty; 2465 description "Soft-preemption is desired"; 2466 reference "RFC5712"; 2467 } 2468 } 2470 grouping lsp-properties_config { 2471 description 2472 "Configuration parameters relating to RSVP-TE LSP 2473 session attribute flags"; 2474 leaf lsp-source { 2475 type inet:ip-address; 2476 description 2477 "LSP source address."; 2478 } 2479 leaf lsp-signaled-name { 2480 type string; 2481 description 2482 "Sets the session name to use in the session 2483 attribute object."; 2484 } 2485 leaf lsp-priority-setup { 2486 type uint8 { 2487 range "0..7"; 2488 } 2489 description 2490 "RSVP session attributes setup priority"; 2491 } 2492 leaf lsp-priority-hold { 2493 type uint8 { 2494 range "0..7"; 2495 } 2496 description 2497 "RSVP session attributes hold priority"; 2498 } 2499 uses lsp-session-attributes-obj-flags_config; 2500 uses lsp-attributes-flags_config; 2501 } 2503 grouping tunnel-properties { 2504 description 2505 "Top level grouping for LSP properties."; 2506 container config { 2507 description 2508 "Configuration parameters relating to 2509 LSP properties"; 2510 uses lsp-properties_config; 2511 } 2512 container state { 2513 config false; 2514 description 2515 "State information associated with LSP 2516 properties"; 2517 uses lsp-properties_config; 2518 } 2519 } 2520 /*** End of RSVP-TE LSP groupings ***/ 2522 /** 2523 * RSVP-TE generic global properties. 2524 */ 2526 grouping global-soft-preemption_config { 2527 description 2528 "Configuration for global RSVP-TE soft preemption"; 2529 leaf soft-preemption-timeout { 2530 type uint16 { 2531 range 0..300; 2532 } 2533 default 0; 2534 description 2535 "Timeout value for soft preemption to revert 2536 to hard preemption"; 2537 } 2538 } 2540 grouping global-soft-preemption { 2541 description 2542 "Top level group for RSVP-TE soft-preemption"; 2543 container global-soft-preemption { 2544 presence "Enables soft preemption on a node."; 2545 description 2546 "Top level container for RSVP-TE soft-preemption"; 2547 container config { 2548 description 2549 "Configuration parameters relating to RSVP 2550 soft preemption support"; 2551 uses global-soft-preemption_config; 2552 } 2553 container state { 2554 description "State parameters relating to RSVP 2555 soft preemption support"; 2556 uses global-soft-preemption_config; 2557 } 2558 } 2559 } 2560 /*** End of RSVP-TE generic global properties. ***/ 2562 /** 2563 * RSVP-TE interface generic groupings. 2564 */ 2566 grouping rsvp-te-interface-attributes { 2567 description 2568 "Top level grouping for RSVP-TE interface properties."; 2569 container rsvp-te-interface-attributes { 2570 description 2571 "Top level container for RSVP-TE interface 2572 properties"; 2573 container config { 2574 description 2575 "Configuration parameters relating to RSVP-TE 2576 bandwidth"; 2577 } 2578 container state { 2579 config false; 2580 description 2581 "State information associated with RSVP-TE 2582 bandwidth"; 2583 } 2584 } 2585 } 2586 /*** End of RSVP-TE generic groupings ***/ 2588 /* RSVP-TE global propeerties */ 2589 augment "/rsvp:rsvp/rsvp:globals" { 2590 description 2591 "RSVP-TE augmentation to RSVP globals"; 2592 } 2594 /* Linkage to the base RSVP all links */ 2595 augment "/rsvp:rsvp/rsvp:interfaces" { 2596 description 2597 "RSVP-TE generic data augmentation pertaining to interfaces"; 2598 /* To be added */ 2599 } 2601 /* Linkage to per RSVP interface */ 2602 augment "/rsvp:rsvp/rsvp:interfaces/rsvp:interface" { 2603 description 2604 "RSVP-TE generic data augmentation pertaining to specific 2605 interface"; 2606 /* To be added */ 2607 } 2609 /* add augmentation for sessions neighbors */ 2610 augment "/rsvp:rsvp/rsvp:sessions" { 2611 description 2612 "RSVP-TE generic data augmentation pertaining to session"; 2613 /* To be added */ 2614 } 2616 augment "/rsvp:rsvp/rsvp:neighbors" { 2617 description 2618 "RSVP-TE generic data augmentation pertaining to neighbors"; 2619 /* To be added */ 2620 } 2622 /** 2623 * RSVP-TE generic augmentations of generic TE model. 2624 */ 2626 augment "/ietf-te:te/ietf-te:tunnels/ietf-te:tunnel" { 2627 description 2628 "RSVP-TE generic data augmentation pertaining to TE tunnels"; 2630 uses tunnel-properties; 2631 } 2633 augment "/ietf-te:te/ietf-te:interfaces/ietf-te:interface" { 2634 description 2635 "RSVP-TE generic data augmentation pertaining to specific TE 2636 interface"; 2637 } 2639 augment "/ietf-te:te/ietf-te:lsps-state/ietf-te:lsp" { 2640 description 2641 "RSVP-TE generic data augmentation pertaining to specific TE 2642 LSP"; 2643 uses lsp-properties_config; 2644 uses lsp-explicit-route-information_state; 2645 uses lsp-record-route-information_state; 2646 } 2647 } 2649 2651 3.4. RSVP-TE MPLS Model 2653 This section describes the MPLS RSVP-TE YANG module that augments the 2654 RSVP-TE generic module to signal MPLS LSPs. RSVP-TE YANG modules for 2655 other dataplane technologies (e.g. OTN or WDM) will be defined in 2656 separate modules and in other drafts. 2658 The following subsections describe the configuration and state data . 2659 pertaining to RSVP-TE MPLS YANG data model. 2661 3.4.1. Configuration and State Data 2663 The following are possible types of configuration and state data 2664 nodes in this module: 2666 o those augmenting or extending the generic RSVP-TE module 2668 o those augmenting or extending the base TE generic module 2670 o those that are specific to the RSVP-TE MPLS module 2672 Below is a YANG tree representation for data items defined in the 2673 RSVP-TE MPLS module: 2675 module: ietf-rsvp-te-mpls 2676 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp: 2677 +--rw config 2678 | +--rw rsvp-frr-local-revert! 2679 | +--rw rsvp-frr-local-revert-delay? uint32 2680 +--ro state 2681 +--ro rsvp-frr-local-revert! 2682 +--ro rsvp-frr-local-revert-delay? uint32 2683 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2684 rsvp:interfaces: 2685 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2686 rsvp:interfaces/rsvp:interface: 2687 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2688 rsvp:sessions: 2689 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2690 rsvp:neighbors: 2691 augment /te:te/te:tunnels/te:tunnel: 2692 +--rw config 2693 | +--rw static-bandwidth? uint32 2694 | +--rw auto-bandwidth 2695 | | +--rw enabled? boolean 2696 | | +--rw min-bw? uint32 2697 | | +--rw max-bw? uint32 2698 | | +--rw adjust-interval? uint32 2699 | | +--rw adjust-threshold? uint32 2700 | | +--rw overflow 2701 | | | +--rw enabled? boolean 2702 | | | +--rw overflow-threshold? uint32 2703 | | | +--rw trigger-event-count? uint16 2704 | | +--rw underflow 2705 | | +--rw enabled? boolean 2706 | | +--rw underflow-threshold? uint32 2707 | | +--rw trigger-event-count? uint16 2708 | +--rw local-protection-desired? empty 2709 | +--rw bandwidth-protection-desired? empty 2710 | +--rw node-protection-desired? empty 2711 | +--rw non-php-desired? empty 2712 | +--rw entropy-label-cap? empty 2713 | +--rw oam-mep-entities-desired? empty 2714 | +--rw oam-mip-entities-desired? empty 2715 +--rw state 2716 +--rw static-bandwidth? uint32 2717 +--rw auto-bandwidth 2718 | +--rw enabled? boolean 2719 | +--rw min-bw? uint32 2720 | +--rw max-bw? uint32 2721 | +--rw adjust-interval? uint32 2722 | +--rw adjust-threshold? uint32 2723 | +--rw overflow 2724 | | +--rw enabled? boolean 2725 | | +--rw overflow-threshold? uint32 2726 | | +--rw trigger-event-count? uint16 2727 | +--rw underflow 2728 | +--rw enabled? boolean 2729 | +--rw underflow-threshold? uint32 2730 | +--rw trigger-event-count? uint16 2731 +--rw local-protection-desired? empty 2732 +--rw bandwidth-protection-desired? empty 2733 +--rw node-protection-desired? empty 2734 +--rw non-php-desired? empty 2735 +--rw entropy-label-cap? empty 2736 +--rw oam-mep-entities-desired? empty 2737 +--rw oam-mip-entities-desired? empty 2738 augment /te:te/te:lsps-state/te:lsp: 2739 +--ro static-bandwidth? uint32 2740 +--ro auto-bandwidth 2741 | +--ro enabled? boolean 2742 | +--ro min-bw? uint32 2743 | +--ro max-bw? uint32 2744 | +--ro adjust-interval? uint32 2745 | +--ro adjust-threshold? uint32 2746 | +--ro overflow 2747 | | +--ro enabled? boolean 2748 | | +--ro overflow-threshold? uint32 2749 | | +--ro trigger-event-count? uint16 2750 | +--ro underflow 2751 | +--ro enabled? boolean 2752 | +--ro underflow-threshold? uint32 2753 | +--ro trigger-event-count? uint16 2754 +--ro local-protection-desired? empty 2755 +--ro bandwidth-protection-desired? empty 2756 +--ro node-protection-desired? empty 2757 +--ro non-php-desired? empty 2758 +--ro entropy-label-cap? empty 2759 +--ro oam-mep-entities-desired? empty 2760 +--ro oam-mip-entities-desired? empty 2761 +--ro backup-info 2762 +--ro backup-tunnel-name? string 2763 +--ro backup-frr-on? uint8 2764 +--ro backup-protected-lsp-num? uint32 2765 augment /te:te/te-dev:interfaces/te-dev:interface: 2766 +--rw config 2767 | +--rw (bandwidth-value)? 2768 | | +--:(absolute) 2769 | | | +--rw absolute-value? uint32 2770 | | +--:(precentage) 2771 | | +--rw percent-value? uint32 2772 | +--rw (bc-model-type)? 2773 | +--:(bc-model-rdm) 2774 | | +--rw bc-model-rdm 2775 | | +--rw bandwidth-mpls-constraints 2776 | | +--rw maximum-reservable? uint32 2777 | | +--rw bc-value* uint32 2778 | +--:(bc-model-mam) 2779 | | +--rw bc-model-mam 2780 | | +--rw bandwidth-mpls-constraints 2781 | | +--rw maximum-reservable? uint32 2782 | | +--rw bc-value* uint32 2783 | +--:(bc-model-mar) 2784 | +--rw bc-model-mar 2785 | +--rw bandwidth-mpls-constraints 2786 | +--rw maximum-reservable? uint32 2787 | +--rw bc-value* uint32 2788 +--ro state 2789 | +--ro (bandwidth-value)? 2790 | | +--:(absolute) 2791 | | | +--ro absolute-value? uint32 2792 | | +--:(precentage) 2793 | | +--ro percent-value? uint32 2794 | +--ro (bc-model-type)? 2795 | | +--:(bc-model-rdm) 2796 | | | +--ro bc-model-rdm 2797 | | | +--ro bandwidth-mpls-constraints 2798 | | | +--ro maximum-reservable? uint32 2799 | | | +--ro bc-value* uint32 2800 | | +--:(bc-model-mam) 2801 | | | +--ro bc-model-mam 2802 | | | +--ro bandwidth-mpls-constraints 2803 | | | +--ro maximum-reservable? uint32 2804 | | | +--ro bc-value* uint32 2805 | | +--:(bc-model-mar) 2806 | | +--ro bc-model-mar 2807 | | +--ro bandwidth-mpls-constraints 2808 | | +--ro maximum-reservable? uint32 2809 | | +--ro bc-value* uint32 2810 | +--ro interface-softpreemption-state 2811 | | +--ro soft-preempted-bandwidth? uint32 2812 | | +--ro lsps* 2813 [source destination tunnel-id lsp-id extended-tunnel-id] 2814 | | +--ro source -> /te:te/lsps-state/lsp/source 2815 | | +--ro destination -> /te:te/lsps-state/lsp/destination 2816 | | +--ro tunnel-id -> /te:te/lsps-state/lsp/tunnel-id 2817 | | +--ro lsp-id -> /te:te/lsps-state/lsp/lsp-id 2818 | | +--ro extended-tunnel-id -> 2819 /te:te/lsps-state/lsp/extended-tunnel-id 2820 | | +--ro type? -> /te:te/lsps-state/lsp/type 2821 | +--ro over-subscribed-bandwidth uint32 2822 +--rw rsvp-te-frr-backups {te-types:frr-te}? 2823 +--rw config 2824 | +--rw backup-bandwidth? uint32 2825 | +--rw backup-bandwidth-classtype? uint32 2826 | +--rw (type)? 2827 | +--:(static-tunnel) 2828 | | +--rw static-backups* [tunnel-name] 2829 | | +--rw tunnel-name string 2830 | +--:(auto-tunnel) 2831 | +--rw auto-backup-protection? identityref 2832 | +--rw auto-backup-path-computation? identityref 2833 +--ro state 2834 +--ro backup-bandwidth? uint32 2835 +--ro backup-bandwidth-classtype? uint32 2836 +--ro (type)? 2837 +--:(static-tunnel) 2838 | +--ro static-backups* [tunnel-name] 2839 | +--ro tunnel-name string 2840 +--:(auto-tunnel) 2841 +--ro auto-backup-protection? identityref 2842 +--ro auto-backup-path-computation? identityref 2844 Figure 6: MPLS RSVP-TE YANG Tree representation 2846 3.4.2. RPC and Notification Data 2848 TBD. 2850 3.4.3. YANG Module 2852 file "ietf-rsvp-te-mpls@2016-03-20.yang" 2853 module ietf-rsvp-te-mpls { 2855 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls"; 2857 prefix "rsvp-te-mpls"; 2859 import ietf-rsvp { 2860 prefix rsvp; 2861 } 2863 import ietf-routing { 2864 prefix "rt"; 2865 } 2867 import ietf-te-mpls-types { 2868 prefix "te-mpls-types"; 2869 } 2870 import ietf-te-types { 2871 prefix "te-types"; 2872 } 2874 import ietf-te { 2875 prefix "te"; 2876 } 2878 import ietf-te-device { 2879 prefix "te-dev"; 2880 } 2882 organization 2883 "IETF Traffic Engineering Architecture and Signaling (TEAS) 2884 Working Group"; 2886 contact 2887 "WG Web: 2888 WG List: 2890 WG Chair: Lou Berger 2891 2893 WG Chair: Vishnu Pavan Beeram 2894 2896 Editor: Vishnu Pavan Beeram 2897 2899 Editor: Tarek Saad 2900 2902 Editor: Rakesh Gandhi 2903 2905 Editor: Himanshu Shah 2906 2908 Editor: Xufeng Liu 2909 2911 Editor: Xia Chen 2912 2914 Editor: Raqib Jones 2915 2917 Editor: Bin Wen 2918 "; 2920 description 2921 "Latest update to MPLS RSVP-TE YANG data model."; 2923 revision 2016-03-20 { 2924 description "Update to MPLS RSVP-TE YANG initial revision."; 2925 reference "RFC3209, RFC6511, RFC6790, RFC7260, RFC4859, RFC4090"; 2926 } 2928 /* RSVP-TE MPLS LSPs groupings */ 2929 grouping lsp-attributes-flags-mpls_config { 2930 description 2931 "Configuration parameters relating to RSVP-TE MPLS LSP 2932 attribute flags"; 2933 leaf non-php-desired { 2934 type empty; 2935 description 2936 "Non-PHP is desired"; 2937 reference "RFC6511"; 2938 } 2939 leaf entropy-label-cap { 2940 type empty; 2941 description "Entropy label capability"; 2942 reference "RFC6790"; 2943 } 2944 leaf oam-mep-entities-desired { 2945 type empty; 2946 description "OAM MEP entities desired"; 2947 reference "RFC7260"; 2948 } 2949 leaf oam-mip-entities-desired { 2950 type empty; 2951 description "OAM MIP entities desired"; 2952 reference "RFC7260"; 2953 } 2954 } 2956 grouping lsp-session-attributes-obj-flags-mpls_config { 2957 description 2958 "Configuration parameters relating to RSVP-TE MPLS LSP 2959 session attribute flags"; 2960 reference 2961 "RFC4859: Registry for RSVP-TE Session Flags"; 2962 leaf local-protection-desired { 2963 type empty; 2964 description "Fastreroute local protection is desired."; 2965 reference 2966 "RFC4859: Registry for RSVP-TE Session Flags"; 2967 } 2968 leaf bandwidth-protection-desired { 2969 type empty; 2970 description 2971 "Request FRR bandwidth protection on LSRs if 2972 present."; 2973 reference "RFC4090"; 2974 } 2975 leaf node-protection-desired { 2976 type empty; 2977 description 2978 "Request FRR node protection on LSRs if 2979 present."; 2980 reference "RFC4090"; 2981 } 2982 } 2984 grouping lsp-overflow_config { 2985 description "configuration for mpls lsp bandwidth 2986 overflow adjustment"; 2988 leaf enabled { 2989 type boolean; 2990 default false; 2991 description "enables mpls lsp bandwidth overflow 2992 adjustment on the lsp"; 2993 } 2995 leaf overflow-threshold { 2996 type uint32; 2997 description "bandwidth percentage change to trigger 2998 an overflow event"; 3000 } 3002 leaf trigger-event-count { 3003 type uint16; 3004 description "number of consecutive overflow sample 3005 events needed to trigger an overflow adjustment"; 3006 } 3007 } 3009 grouping lsp-underflow_config { 3010 description 3011 "configuration for mpls lsp bandwidth 3012 underflow adjustment"; 3014 leaf enabled { 3015 type boolean; 3016 default false; 3017 description "enables bandwidth underflow 3018 adjustment on the lsp"; 3019 } 3021 leaf underflow-threshold { 3022 type uint32; 3023 description "bandwidth percentage change to trigger 3024 and underflow event"; 3025 } 3027 leaf trigger-event-count { 3028 type uint16; 3029 description "number of consecutive underflow sample 3030 events needed to trigger an underflow adjustment"; 3031 } 3032 } 3034 grouping lsp-auto-bandwidth_config { 3035 description 3036 "Auto-Bandwidth grouping"; 3037 container auto-bandwidth { 3038 description "configure auto-bandwidth operation in 3039 which devices automatically adjust bandwidth to meet 3040 requirements"; 3042 leaf enabled { 3043 type boolean; 3044 default false; 3045 description "enables mpls auto-bandwidth on the 3046 lsp"; 3047 } 3049 leaf min-bw { 3050 type uint32; 3051 description "set the minimum bandwidth in Mbps for an 3052 auto-bandwidth LSP"; 3053 } 3055 leaf max-bw { 3056 type uint32; 3057 description "set the maximum bandwidth in Mbps for an 3058 auto-bandwidth LSP"; 3059 } 3061 leaf adjust-interval { 3062 type uint32; 3063 description "time in seconds between adjustments to 3064 LSP bandwidth"; 3065 } 3067 leaf adjust-threshold { 3068 type uint32; 3069 description "percentage difference between the LSP's 3070 specified bandwidth and its current bandwidth 3071 allocation -- if the difference is greater than the 3072 specified percentage, auto-bandwidth adjustment is 3073 triggered"; 3074 } 3076 container overflow { 3077 description "configuration of MPLS overflow bandwidth 3078 adjustement for the LSP"; 3079 uses lsp-overflow_config; 3080 } 3082 container underflow { 3083 description "configuration of MPLS underflow bandwidth 3084 adjustement for the LSP"; 3085 uses lsp-underflow_config; 3086 } 3087 } 3088 } 3090 grouping lsp-bandwidth_config { 3091 description 3092 "LSP bandwidth grouping"; 3093 leaf static-bandwidth { 3094 type uint32; 3095 description 3096 "Static bandwidth, e.g., using 3097 offline calculation"; 3098 } 3099 uses lsp-auto-bandwidth_config; 3100 } 3102 grouping tunnel-properties-mpls { 3103 description 3104 "Top level grouping for LSP properties."; 3105 container config { 3106 description 3107 "Configuration parameters for tunnel RSVP-TE 3108 properties"; 3109 uses lsp-bandwidth_config; 3110 uses lsp-session-attributes-obj-flags-mpls_config; 3111 uses lsp-attributes-flags-mpls_config; 3112 } 3113 container state { 3114 description 3115 "State parameters for tunnel RSVP-TE 3116 properties"; 3117 uses lsp-bandwidth_config; 3118 uses lsp-session-attributes-obj-flags-mpls_config; 3119 uses lsp-attributes-flags-mpls_config; 3120 } 3121 } 3123 grouping lsp-properties-mpls { 3124 description 3125 "Top level grouping for LSP properties."; 3126 uses lsp-bandwidth_config; 3127 uses lsp-session-attributes-obj-flags-mpls_config; 3128 uses lsp-attributes-flags-mpls_config; 3129 } 3130 /* End of RSVP-TE MPLS LSPs groupings */ 3132 /* MPLS RSVP-TE interface groupings */ 3133 grouping rsvp-te-interface_state { 3134 description 3135 "The RSVP-TE interface state grouping"; 3136 leaf over-subscribed-bandwidth { 3137 type uint32; 3138 description 3139 "The amount of over-subscribed bandwidth on 3140 the interface"; 3141 } 3142 } 3144 grouping rsvp-te-interface-softpreemption_state { 3145 description 3146 "The RSVP-TE interface preeemptions state grouping"; 3147 container interface-softpreemption-state { 3148 description 3149 "The RSVP-TE interface preeemptions state grouping"; 3150 leaf soft-preempted-bandwidth { 3151 type uint32; 3152 description 3153 "The amount of soft-preempted bandwidth on 3154 this interface"; 3155 } 3156 list lsps { 3157 key 3158 "source destination tunnel-id lsp-id "+ 3159 "extended-tunnel-id"; 3160 description 3161 "List of LSPs that are soft-preempted"; 3162 leaf source { 3163 type leafref { 3164 path "/te:te/te:lsps-state/te:lsp/"+ 3165 "te:source"; 3166 } 3167 description 3168 "Tunnel sender address extracted from 3169 SENDER_TEMPLATE object"; 3170 reference "RFC3209"; 3171 } 3172 leaf destination { 3173 type leafref { 3174 path "/te:te/te:lsps-state/te:lsp/"+ 3175 "te:destination"; 3176 } 3177 description 3178 "Tunnel endpoint address extracted from 3179 SESSION object"; 3180 reference "RFC3209"; 3181 } 3182 leaf tunnel-id { 3183 type leafref { 3184 path "/te:te/te:lsps-state/te:lsp/"+ 3185 "te:tunnel-id"; 3186 } 3187 description 3188 "Tunnel identifier used in the SESSION 3189 that remains constant over the life 3190 of the tunnel."; 3191 reference "RFC3209"; 3192 } 3193 leaf lsp-id { 3194 type leafref { 3195 path "/te:te/te:lsps-state/te:lsp/"+ 3196 "te:lsp-id"; 3197 } 3198 description 3199 "Identifier used in the SENDER_TEMPLATE 3200 and the FILTER_SPEC that can be changed 3201 to allow a sender to share resources with 3202 itself."; 3203 reference "RFC3209"; 3204 } 3205 leaf extended-tunnel-id { 3206 type leafref { 3207 path "/te:te/te:lsps-state/te:lsp/"+ 3208 "te:extended-tunnel-id"; 3209 } 3210 description 3211 "Extended Tunnel ID of the LSP."; 3212 reference "RFC3209"; 3213 } 3214 leaf type { 3215 type leafref { 3216 path "/te:te/te:lsps-state/te:lsp/"+ 3217 "te:type"; 3218 } 3219 description "LSP type P2P or P2MP"; 3220 } 3221 } 3222 } 3223 } 3224 /* End of RSVP-TE interface groupings */ 3226 /* RSVP-TE FRR groupings */ 3227 grouping rsvp-te-frr-backups_config { 3228 description 3229 "Top level container for RSVP-TE FRR backup parameters"; 3230 leaf backup-bandwidth { 3231 type uint32; 3232 description 3233 "Maximum bandwidth this facility backup 3234 is allowed to protect"; 3235 } 3236 leaf backup-bandwidth-classtype { 3237 type uint32; 3238 description 3239 "Type of primary LSP bandwidth that the 3240 backup is allowed to protect."; 3241 } 3242 choice type { 3243 description 3244 "FRR backup tunnel type"; 3245 case static-tunnel { 3246 list static-backups { 3247 key "tunnel-name"; 3248 description 3249 "List of static backup tunnels that 3250 protect the RSVP-TE interface."; 3251 leaf tunnel-name { 3252 type string; 3253 description "FRR Backup tunnel"; 3255 } 3256 } 3257 } 3258 case auto-tunnel { 3259 leaf auto-backup-protection { 3260 type identityref { 3261 base te-mpls-types:backup-protection-type; 3262 } 3263 default 3264 te-mpls-types:backup-protection-node-link; 3265 description 3266 "Describes whether the backup should offer 3267 protection against link, node, or either"; 3268 } 3269 leaf auto-backup-path-computation { 3270 type identityref { 3271 base 3272 te-types:path-computation-srlg-type; 3273 } 3274 description 3275 "FRR backup computation type"; 3276 } 3277 } 3278 } 3279 } 3281 grouping rsvp-te-frr-backups { 3282 description 3283 "Top level grouping for RSVP-TE FRR backup properties."; 3284 container rsvp-te-frr-backups { 3285 if-feature te-types:frr-te; 3286 description 3287 "Top level container for RSVP-TE FRR backup 3288 properties."; 3289 container config { 3290 description 3291 "Configuration parameters for interface RSVP-TE 3292 FRR backup properties"; 3293 uses rsvp-te-frr-backups_config; 3294 } 3295 container state { 3296 config false; 3297 description 3298 "State parameters for interface RSVP-TE 3299 FRR backup properties"; 3300 uses rsvp-te-frr-backups_config; 3301 } 3302 } 3304 } 3306 grouping lps-backup-info_state { 3307 description "Backup/bypass LSP related information"; 3308 container backup-info { 3309 description 3310 "backup information"; 3312 leaf backup-tunnel-name { 3313 type string; 3314 description 3315 "If an LSP has an FRR backup LSP that can protect it, 3316 this field identifies the tunnel name of the backup LSP. 3317 Otherwise, this field is empty."; 3318 } 3320 leaf backup-frr-on { 3321 type uint8; 3322 description 3323 "Whether currently this backup is carrying traffic"; 3324 } 3326 leaf backup-protected-lsp-num { 3327 type uint32; 3328 description 3329 "Number of LSPs protected by this backup"; 3330 } 3331 } 3332 } 3334 grouping rsvp-frr-local-revert_config { 3335 description "RSVP-TE FRR local revertive grouping"; 3336 container rsvp-frr-local-revert { 3337 presence "Enable RSVP FRR local revertive recovery 3338 mode."; 3339 description 3340 "RSVP-TE global properties container"; 3341 leaf rsvp-frr-local-revert-delay { 3342 type uint32; 3343 description 3344 "Time to wait after primary link is restored 3345 before node attempts local revertive 3346 procedures."; 3347 } 3348 } 3349 } 3351 /*** End of RSVP-TE FRR backup information ***/ 3352 grouping globals-properties { 3353 description 3354 "Top level grouping for globals properties"; 3355 container config { 3356 description 3357 "Configuration parameters relating to 3358 global MPLS RSVP-TE properties"; 3359 uses rsvp-frr-local-revert_config; 3360 } 3361 container state { 3362 config false; 3363 description 3364 "State parameters relating to 3365 global MPLS RSVP-TE properties"; 3366 uses rsvp-frr-local-revert_config; 3367 } 3368 } 3370 /* RSVP-TE global propeerties */ 3371 augment "/rt:routing/rt:routing-protocols/" 3372 + "rt:routing-protocol/rsvp:rsvp" { 3373 description 3374 "RSVP-TE augmentation to RSVP globals"; 3375 uses globals-properties; 3376 } 3378 grouping rsvp-te-interface-attributes-mpls { 3379 description 3380 "Top level grouping for MPLS RSVP-TE interface 3381 properties."; 3382 container config { 3383 description 3384 "Configuration parameters relating to RSVP-TE 3385 bandwidth"; 3386 uses te-mpls-types:bandwidth-mpls-reservable; 3387 } 3388 container state { 3389 config false; 3390 description 3391 "State information associated with RSVP-TE 3392 bandwidth"; 3393 uses te-mpls-types:bandwidth-mpls-reservable; 3394 uses rsvp-te-interface-softpreemption_state; 3395 uses rsvp-te-interface_state; 3396 } 3397 } 3399 /* Linkage to the base RSVP all interfaces */ 3400 augment "/rt:routing/rt:routing-protocols/" 3401 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces" { 3402 description "TBD"; 3403 /* To be added */ 3404 } 3406 /* Linkage to per RSVP interface */ 3407 augment "/rt:routing/rt:routing-protocols/" 3408 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:interface" { 3409 description "TBD"; 3410 /* To be added */ 3411 } 3413 /* add augmentation for sessions neighbors */ 3414 augment "/rt:routing/rt:routing-protocols/" 3415 + "rt:routing-protocol/rsvp:rsvp/rsvp:sessions" { 3416 description "TBD"; 3417 /* To be added */ 3418 } 3420 augment "/rt:routing/rt:routing-protocols/" 3421 + "rt:routing-protocol/rsvp:rsvp/rsvp:neighbors" { 3422 description "TBD"; 3423 /* To be added */ 3424 } 3426 /** 3427 * Augmentation to TE generic module 3428 */ 3429 augment "/te:te/te:tunnels/te:tunnel" { 3430 description "TBD"; 3431 uses tunnel-properties-mpls; 3432 } 3434 augment "/te:te/te:lsps-state/te:lsp" { 3435 description 3436 "RSVP-TE LSP state properties"; 3437 uses lsp-properties-mpls; 3438 uses lps-backup-info_state; 3439 } 3441 augment "/te:te/te-dev:interfaces/te-dev:interface" { 3442 description 3443 "RSVP reservable bandwidth configuration properties"; 3444 uses rsvp-te-interface-attributes-mpls; 3445 uses rsvp-te-frr-backups; 3446 } 3447 } 3448 3450 4. IANA Considerations 3452 This document registers the following URIs in the IETF XML registry 3453 [RFC3688]. Following the format in [RFC3688], the following 3454 registration is requested to be made. 3456 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp XML: N/A, the requested 3457 URI is an XML namespace. 3459 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-te XML: N/A, the requested 3460 URI is an XML namespace. 3462 This document registers a YANG module in the YANG Module Names 3463 registry [RFC6020]. 3465 name: ietf-rsvp namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp 3466 prefix: ietf-rsvp reference: RFC3209 3468 name: ietf-rsvp-te namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp- 3469 te prefix: ietf-rsvp-te reference: RFC3209 3471 5. Security Considerations 3473 The YANG module defined in this memo is designed to be accessed via 3474 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 3475 secure transport layer and the mandatory-to-implement secure 3476 transport is SSH [RFC6242]. The NETCONF access control model 3477 [RFC6536] provides means to restrict access for particular NETCONF 3479 users to a pre-configured subset of all available NETCONF protocol 3480 operations and content. 3482 There are a number of data nodes defined in the YANG module which are 3483 writable/creatable/deletable (i.e., config true, which is the 3484 default). These data nodes may be considered sensitive or vulnerable 3485 in some network environments. Write operations (e.g., ) 3486 to these data nodes without proper protection can have a negative 3487 effect on network operations. 3489 6. Acknowledgement 3491 The authors would like to thank Lou Berger for reviewing and 3492 providing valuable feedback on this document. 3494 7. References 3496 7.1. Normative References 3498 [I-D.ietf-netmod-routing-cfg] 3499 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 3500 Management", draft-ietf-netmod-routing-cfg-21 (work in 3501 progress), March 2016. 3503 [I-D.ietf-teas-yang-te] 3504 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., Chen, 3505 X., Jones, R., and B. Wen, "A YANG Data Model for Traffic 3506 Engineering Tunnels and Interfaces", draft-ietf-teas-yang- 3507 te-03 (work in progress), March 2016. 3509 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 3510 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 3511 RFC2119, March 1997, 3512 . 3514 [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S. 3515 Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 3516 Functional Specification", RFC 2205, DOI 10.17487/RFC2205, 3517 September 1997, . 3519 [RFC2747] Baker, F., Lindell, B., and M. Talwar, "RSVP Cryptographic 3520 Authentication", RFC 2747, DOI 10.17487/RFC2747, January 3521 2000, . 3523 [RFC2961] Berger, L., Gan, D., Swallow, G., Pan, P., Tommasi, F., 3524 and S. Molendini, "RSVP Refresh Overhead Reduction 3525 Extensions", RFC 2961, DOI 10.17487/RFC2961, April 2001, 3526 . 3528 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 3529 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 3530 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 3531 . 3533 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 3534 Switching (GMPLS) Signaling Resource ReserVation Protocol- 3535 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, DOI 3536 10.17487/RFC3473, January 2003, 3537 . 3539 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 3540 DOI 10.17487/RFC3688, January 2004, 3541 . 3543 [RFC5063] Satyanarayana, A., Ed. and R. Rahman, Ed., "Extensions to 3544 GMPLS Resource Reservation Protocol (RSVP) Graceful 3545 Restart", RFC 5063, DOI 10.17487/RFC5063, October 2007, 3546 . 3548 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 3549 the Network Configuration Protocol (NETCONF)", RFC 6020, 3550 DOI 10.17487/RFC6020, October 2010, 3551 . 3553 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 3554 and A. Bierman, Ed., "Network Configuration Protocol 3555 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 3556 . 3558 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 3559 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 3560 . 3562 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 3563 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 3564 10.17487/RFC6536, March 2012, 3565 . 3567 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 3568 6991, DOI 10.17487/RFC6991, July 2013, 3569 . 3571 7.2. Informative References 3573 [I-D.openconfig-mpls-consolidated-model] 3574 George, J., Fang, L., eric.osborne@level3.com, e., and R. 3575 Shakir, "MPLS / TE Model for Service Provider Networks", 3576 draft-openconfig-mpls-consolidated-model-02 (work in 3577 progress), October 2015. 3579 [I-D.openconfig-netmod-opstate] 3580 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 3581 of Operational State Data in YANG", draft-openconfig- 3582 netmod-opstate-01 (work in progress), July 2015. 3584 Authors' Addresses 3586 Vishnu Pavan Beeram 3587 Juniper Networks 3589 Email: vbeeram@juniper.net 3590 Tarek Saad (editor) 3591 Cisco Systems Inc 3593 Email: tsaad@cisco.com 3595 Rakesh Gandhi 3596 Cisco Systems Inc 3598 Email: rgandhi@cisco.com 3600 Xufeng Liu 3601 Ericsson 3603 Email: xliu@kuatrotech.com 3605 Himanshu Shah 3606 Ciena 3608 Email: hshah@ciena.com 3610 Xia Chen 3611 Huawei Technologies 3613 Email: jescia.chenxia@huawei.com 3615 Raqib Jones 3616 Brocade 3618 Email: raqib@Brocade.com 3620 Bin Wen 3621 Comcast 3623 Email: Bin_Wen@cable.comcast.com