idnits 2.17.1 draft-ietf-teas-yang-rsvp-03.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 2872 has weird spacing: '...el-name str...' == (2 more instances...) -- The document date (March 20, 2016) is 2958 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-03 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 . . . . . . . . . . . . . . . . . . . 58 92 3.4.1. Configuration and State Data . . . . . . . . . . . . 58 93 3.4.2. RPC and Notification Data . . . . . . . . . . . . . . 62 94 3.4.3. YANG Module . . . . . . . . . . . . . . . . . . . . . 62 95 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 75 96 5. Security Considerations . . . . . . . . . . . . . . . . . . . 75 97 6. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 75 98 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 76 99 7.1. Normative References . . . . . . . . . . . . . . . . . . 76 100 7.2. Informative References . . . . . . . . . . . . . . . . . 77 101 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 77 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-routing { 2299 prefix "rt"; 2300 } 2302 import ietf-te { 2303 prefix te; 2304 } 2306 import ietf-te-device { 2307 prefix te-dev; 2308 } 2310 /* Import TE generic types */ 2311 import ietf-te-types { 2312 prefix te-types; 2313 } 2315 organization 2316 "IETF Traffic Engineering Architecture and Signaling (TEAS) 2317 Working Group"; 2319 contact 2320 "WG Web: 2321 WG List: 2323 WG Chair: Lou Berger 2324 2326 WG Chair: Vishnu Pavan Beeram 2327 2329 Editor: Vishnu Pavan Beeram 2330 2332 Editor: Tarek Saad 2333 2335 Editor: Rakesh Gandhi 2336 2338 Editor: Himanshu Shah 2339 2341 Editor: Xufeng Liu 2342 2344 Editor: Xia Chen 2345 2347 Editor: Raqib Jones 2348 2350 Editor: Bin Wen 2351 "; 2353 description 2354 "This module contains the RSVP-TE YANG generic data model."; 2356 revision 2016-03-20 { 2357 description "Latest revision to RSVP-TE generic YANG module"; 2358 reference "RFC2205, RFC3209, etc."; 2359 } 2361 /** 2362 * RSVP-TE LSPs groupings. 2363 */ 2365 grouping lsp-record-route-information_state { 2366 description "recorded route information grouping"; 2367 container record-route-object { 2368 description "RSVP recorded route object information"; 2369 list path-record-route-subobjects { 2370 when "../origin-type != 'ingress'" { 2371 description "Applicable on non-ingress LSPs only"; 2372 } 2373 key "subobject-index"; 2374 description ""; 2375 leaf subobject-index { 2376 type uint32; 2377 description "RRO subobject index"; 2378 } 2379 uses te-types:record-route-subobject; 2380 } 2381 list resv-record-route-subobjects { 2382 when "../origin-type != 'egress'" { 2383 description "Applicable on non-egress LSPs only"; 2384 } 2385 key "subobject-index"; 2386 description ""; 2387 leaf subobject-index { 2388 type uint32; 2389 description "RRO subobject index"; 2390 } 2391 uses te-types:record-route-subobject; 2392 } 2393 } 2394 } 2396 grouping lsp-explicit-route-information_state { 2397 description "RSVP-TE LSP explicit-route information"; 2398 container explicit-route-object { 2399 description "Explicit route object information"; 2400 list incoming-explicit-route-subobjects { 2401 when "../origin-type != 'ingress'" { 2402 description "Applicable on non-ingress LSPs only"; 2403 } 2404 key "subobject-index"; 2405 description ""; 2406 leaf subobject-index { 2407 type uint32; 2408 description "ERO subobject index"; 2409 } 2410 uses te-types:explicit-route-subobject; 2411 } 2412 list outgoing-explicit-route-subobjects { 2413 when "../origin-type != 'egress'" { 2414 description "Applicable on non-egress LSPs only"; 2415 } 2416 key "subobject-index"; 2417 description ""; 2418 leaf subobject-index { 2419 type uint32; 2420 description "ERO subobject index"; 2421 } 2422 uses te-types:explicit-route-subobject; 2423 } 2424 } 2425 } 2427 grouping lsp-attributes-flags_config { 2428 description 2429 "Configuration parameters relating to RSVP-TE LSP 2430 attribute flags"; 2431 leaf lsp-rerouting { 2432 type enumeration { 2433 enum end-to-end-routing { 2434 description 2435 "End-to-end routing desired"; 2436 reference "RFC4920, RFC5420"; 2438 } 2439 enum boundary-rerouting { 2440 description 2441 "Boundary rerouting desired"; 2442 reference "RFC4920, RFC5420"; 2443 } 2444 enum segment-based-rerouting { 2445 description 2446 "Segment-based rerouting desired"; 2447 reference "RFC4920, RFC5420"; 2448 } 2449 } 2450 description "LSP rerouting types"; 2451 } 2452 leaf lsp-integrety-required { 2453 type boolean; 2454 description "LSP integrity desired"; 2455 reference "RFC4875"; 2456 } 2457 leaf lsp-contiguous { 2458 type boolean; 2459 description "Contiguous LSP"; 2460 reference "RFC5151"; 2461 } 2462 leaf lsp-stitching-desired { 2463 type boolean; 2464 description "Stitched LSP"; 2465 reference "RFC5150"; 2466 } 2467 leaf lsp-preplanned { 2468 type boolean; 2469 description "Preplanned LSP"; 2470 reference "RFC6001"; 2471 } 2472 leaf lsp-oob-mapping { 2473 type boolean; 2474 description 2475 "Mapping is done out-of-band"; 2476 reference "RFC6511"; 2477 } 2478 } 2480 grouping lsp-session-attributes-obj-flags_config { 2481 description 2482 "Configuration parameters relating to RSVP-TE LSP 2483 session attribute flags"; 2484 reference 2485 "RFC4859: Registry for RSVP-TE Session Flags"; 2487 leaf local-recording-desired { 2488 type boolean; 2489 description "Path recording is desired."; 2490 reference "RFC3209"; 2491 } 2492 leaf se-style-desired { 2493 type boolean; 2494 description "SE Style desired"; 2495 reference "RFC3209"; 2496 } 2497 leaf path-reevaluation-request { 2498 type boolean; 2499 description "Path re-evaluation request"; 2500 reference "RFC4736"; 2501 } 2502 leaf soft-preemption-desired { 2503 type boolean; 2504 description "Soft-preemption is desired"; 2505 reference "RFC5712"; 2506 } 2507 } 2509 grouping lsp-properties_config { 2510 description 2511 "Configuration parameters relating to RSVP-TE LSP 2512 session attribute flags"; 2513 leaf lsp-signaled-name { 2514 type string; 2515 description 2516 "Sets the session name to use in the session 2517 attribute object."; 2518 } 2519 leaf lsp-priority-setup { 2520 type uint8 { 2521 range "0..7"; 2522 } 2523 description 2524 "RSVP session attributes setup priority"; 2525 } 2526 leaf lsp-priority-hold { 2527 type uint8 { 2528 range "0..7"; 2529 } 2530 description 2531 "RSVP session attributes hold priority"; 2532 } 2533 uses lsp-session-attributes-obj-flags_config; 2534 uses lsp-attributes-flags_config; 2536 } 2538 grouping tunnel-properties { 2539 description 2540 "Top level grouping for LSP properties."; 2541 container config { 2542 description 2543 "Configuration parameters relating to 2544 LSP properties"; 2545 uses lsp-properties_config; 2546 } 2547 container state { 2548 config false; 2549 description 2550 "State information associated with LSP 2551 properties"; 2552 uses lsp-properties_config; 2553 } 2554 } 2555 /*** End of RSVP-TE LSP groupings ***/ 2557 /** 2558 * RSVP-TE generic global properties. 2559 */ 2561 grouping global-soft-preemption_config { 2562 description 2563 "Configuration for global RSVP-TE soft preemption"; 2564 leaf soft-preemption-timeout { 2565 type uint16 { 2566 range 0..300; 2567 } 2568 default 0; 2569 description 2570 "Timeout value for soft preemption to revert 2571 to hard preemption"; 2572 } 2573 } 2575 grouping global-soft-preemption { 2576 description 2577 "Top level group for RSVP-TE soft-preemption"; 2578 container global-soft-preemption { 2579 presence "Enables soft preemption on a node."; 2580 description 2581 "Top level container for RSVP-TE soft-preemption"; 2582 container config { 2583 description 2584 "Configuration parameters relating to RSVP 2585 soft preemption support"; 2586 uses global-soft-preemption_config; 2587 } 2588 container state { 2589 description "State parameters relating to RSVP 2590 soft preemption support"; 2591 uses global-soft-preemption_config; 2592 } 2593 } 2594 } 2595 /*** End of RSVP-TE generic global properties. ***/ 2597 /** 2598 * RSVP-TE interface generic groupings. 2599 */ 2601 grouping rsvp-te-interface-attributes { 2602 description 2603 "Top level grouping for RSVP-TE interface properties."; 2604 container rsvp-te-interface-attributes { 2605 description 2606 "Top level container for RSVP-TE interface 2607 properties"; 2608 container config { 2609 description 2610 "Configuration parameters relating to RSVP-TE 2611 bandwidth"; 2612 } 2613 container state { 2614 config false; 2615 description 2616 "State information associated with RSVP-TE 2617 bandwidth"; 2618 } 2619 } 2620 } 2621 /*** End of RSVP-TE generic groupings ***/ 2623 /* RSVP-TE global propeerties */ 2624 augment "/rt:routing/rt:routing-protocols/" 2625 + "rt:routing-protocol/rsvp:rsvp/rsvp:globals" { 2626 description 2627 "RSVP-TE augmentation to RSVP globals"; 2628 } 2630 /* Linkage to the base RSVP all links */ 2631 augment "/rt:routing/rt:routing-protocols/" 2632 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces" { 2633 description 2634 "RSVP-TE generic data augmentation pertaining to interfaces"; 2635 /* To be added */ 2636 } 2638 /* Linkage to per RSVP interface */ 2639 augment "/rt:routing/rt:routing-protocols/" 2640 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:interface" { 2641 description 2642 "RSVP-TE generic data augmentation pertaining to specific 2643 interface"; 2644 /* To be added */ 2645 } 2647 /* add augmentation for sessions neighbors */ 2648 augment "/rt:routing/rt:routing-protocols/" 2649 + "rt:routing-protocol/rsvp:rsvp/rsvp:sessions" { 2650 description 2651 "RSVP-TE generic data augmentation pertaining to session"; 2652 /* To be added */ 2653 } 2655 augment "/rt:routing/rt:routing-protocols/" 2656 + "rt:routing-protocol/rsvp:rsvp/rsvp:neighbors" { 2657 description 2658 "RSVP-TE generic data augmentation pertaining to neighbors"; 2659 /* To be added */ 2660 } 2662 /** 2663 * RSVP-TE generic augmentations of generic TE model. 2664 */ 2666 /* TE tunnel augmentation */ 2667 augment "/te:te/te:tunnels/te:tunnel" { 2668 description 2669 "RSVP-TE generic data augmentation pertaining to TE tunnels"; 2670 uses tunnel-properties; 2671 } 2673 /* TE LSP augmentation */ 2674 augment "/te:te/te:lsps-state/te:lsp" { 2675 description 2676 "RSVP-TE generic data augmentation pertaining to specific TE 2677 LSP"; 2678 uses lsp-properties_config; 2679 uses lsp-explicit-route-information_state; 2680 uses lsp-record-route-information_state; 2681 } 2683 /* TE interface augmentation */ 2684 augment "/te:te/te-dev:interfaces/te-dev:interface" { 2685 description 2686 "RSVP-TE generic data augmentation pertaining to specific TE 2687 interface"; 2688 } 2690 } 2692 2694 3.4. RSVP-TE MPLS Model 2696 This section describes the MPLS RSVP-TE YANG module that augments the 2697 RSVP-TE generic module to signal MPLS LSPs. RSVP-TE YANG modules for 2698 other dataplane technologies (e.g. OTN or WDM) will be defined in 2699 separate modules and in other drafts. 2701 The following subsections describe the configuration and state data . 2702 pertaining to RSVP-TE MPLS YANG data model. 2704 3.4.1. Configuration and State Data 2706 The following are possible types of configuration and state data 2707 nodes in this module: 2709 o those augmenting or extending the generic RSVP-TE module 2711 o those augmenting or extending the base TE generic module 2713 o those that are specific to the RSVP-TE MPLS module 2715 Below is a YANG tree representation for data items defined in the 2716 RSVP-TE MPLS module: 2718 module: ietf-rsvp-te-mpls 2719 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp: 2720 +--rw config 2721 | +--rw rsvp-frr-local-revert! 2722 | +--rw rsvp-frr-local-revert-delay? uint32 2723 +--ro state 2724 +--ro rsvp-frr-local-revert! 2725 +--ro rsvp-frr-local-revert-delay? uint32 2726 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2727 rsvp:interfaces: 2728 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2729 rsvp:interfaces/rsvp:interface: 2730 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2731 rsvp:sessions: 2732 augment /rt:routing/rt:routing-protocols/rt:routing-protocol/rsvp:rsvp/ 2733 rsvp:neighbors: 2734 augment /te:te/te:tunnels/te:tunnel: 2735 +--rw config 2736 | +--rw static-bandwidth? uint32 2737 | +--rw auto-bandwidth 2738 | | +--rw enabled? boolean 2739 | | +--rw min-bw? uint32 2740 | | +--rw max-bw? uint32 2741 | | +--rw adjust-interval? uint32 2742 | | +--rw adjust-threshold? uint32 2743 | | +--rw overflow 2744 | | | +--rw enabled? boolean 2745 | | | +--rw overflow-threshold? uint32 2746 | | | +--rw trigger-event-count? uint16 2747 | | +--rw underflow 2748 | | +--rw enabled? boolean 2749 | | +--rw underflow-threshold? uint32 2750 | | +--rw trigger-event-count? uint16 2751 | +--rw local-protection-desired? empty 2752 | +--rw bandwidth-protection-desired? empty 2753 | +--rw node-protection-desired? empty 2754 | +--rw non-php-desired? empty 2755 | +--rw entropy-label-cap? empty 2756 | +--rw oam-mep-entities-desired? empty 2757 | +--rw oam-mip-entities-desired? empty 2758 +--rw state 2759 +--rw static-bandwidth? uint32 2760 +--rw auto-bandwidth 2761 | +--rw enabled? boolean 2762 | +--rw min-bw? uint32 2763 | +--rw max-bw? uint32 2764 | +--rw adjust-interval? uint32 2765 | +--rw adjust-threshold? uint32 2766 | +--rw overflow 2767 | | +--rw enabled? boolean 2768 | | +--rw overflow-threshold? uint32 2769 | | +--rw trigger-event-count? uint16 2770 | +--rw underflow 2771 | +--rw enabled? boolean 2772 | +--rw underflow-threshold? uint32 2773 | +--rw trigger-event-count? uint16 2774 +--rw local-protection-desired? empty 2775 +--rw bandwidth-protection-desired? empty 2776 +--rw node-protection-desired? empty 2777 +--rw non-php-desired? empty 2778 +--rw entropy-label-cap? empty 2779 +--rw oam-mep-entities-desired? empty 2780 +--rw oam-mip-entities-desired? empty 2781 augment /te:te/te:lsps-state/te:lsp: 2782 +--ro static-bandwidth? uint32 2783 +--ro auto-bandwidth 2784 | +--ro enabled? boolean 2785 | +--ro min-bw? uint32 2786 | +--ro max-bw? uint32 2787 | +--ro adjust-interval? uint32 2788 | +--ro adjust-threshold? uint32 2789 | +--ro overflow 2790 | | +--ro enabled? boolean 2791 | | +--ro overflow-threshold? uint32 2792 | | +--ro trigger-event-count? uint16 2793 | +--ro underflow 2794 | +--ro enabled? boolean 2795 | +--ro underflow-threshold? uint32 2796 | +--ro trigger-event-count? uint16 2797 +--ro local-protection-desired? empty 2798 +--ro bandwidth-protection-desired? empty 2799 +--ro node-protection-desired? empty 2800 +--ro non-php-desired? empty 2801 +--ro entropy-label-cap? empty 2802 +--ro oam-mep-entities-desired? empty 2803 +--ro oam-mip-entities-desired? empty 2804 +--ro backup-info 2805 +--ro backup-tunnel-name? string 2806 +--ro backup-frr-on? uint8 2807 +--ro backup-protected-lsp-num? uint32 2808 augment /te:te/te-dev:interfaces/te-dev:interface: 2809 +--rw config 2810 | +--rw (bandwidth-value)? 2811 | | +--:(absolute) 2812 | | | +--rw absolute-value? uint32 2813 | | +--:(precentage) 2814 | | +--rw percent-value? uint32 2815 | +--rw (bc-model-type)? 2816 | +--:(bc-model-rdm) 2817 | | +--rw bc-model-rdm 2818 | | +--rw bandwidth-mpls-constraints 2819 | | +--rw maximum-reservable? uint32 2820 | | +--rw bc-value* uint32 2821 | +--:(bc-model-mam) 2822 | | +--rw bc-model-mam 2823 | | +--rw bandwidth-mpls-constraints 2824 | | +--rw maximum-reservable? uint32 2825 | | +--rw bc-value* uint32 2826 | +--:(bc-model-mar) 2827 | +--rw bc-model-mar 2828 | +--rw bandwidth-mpls-constraints 2829 | +--rw maximum-reservable? uint32 2830 | +--rw bc-value* uint32 2831 +--ro state 2832 | +--ro (bandwidth-value)? 2833 | | +--:(absolute) 2834 | | | +--ro absolute-value? uint32 2835 | | +--:(precentage) 2836 | | +--ro percent-value? uint32 2837 | +--ro (bc-model-type)? 2838 | | +--:(bc-model-rdm) 2839 | | | +--ro bc-model-rdm 2840 | | | +--ro bandwidth-mpls-constraints 2841 | | | +--ro maximum-reservable? uint32 2842 | | | +--ro bc-value* uint32 2843 | | +--:(bc-model-mam) 2844 | | | +--ro bc-model-mam 2845 | | | +--ro bandwidth-mpls-constraints 2846 | | | +--ro maximum-reservable? uint32 2847 | | | +--ro bc-value* uint32 2848 | | +--:(bc-model-mar) 2849 | | +--ro bc-model-mar 2850 | | +--ro bandwidth-mpls-constraints 2851 | | +--ro maximum-reservable? uint32 2852 | | +--ro bc-value* uint32 2853 | +--ro interface-softpreemption-state 2854 | | +--ro soft-preempted-bandwidth? uint32 2855 | | +--ro lsps* 2856 [source destination tunnel-id lsp-id extended-tunnel-id] 2857 | | +--ro source -> /te:te/lsps-state/lsp/source 2858 | | +--ro destination -> /te:te/lsps-state/lsp/destination 2859 | | +--ro tunnel-id -> /te:te/lsps-state/lsp/tunnel-id 2860 | | +--ro lsp-id -> /te:te/lsps-state/lsp/lsp-id 2861 | | +--ro extended-tunnel-id -> 2862 /te:te/lsps-state/lsp/extended-tunnel-id 2863 | | +--ro type? -> /te:te/lsps-state/lsp/type 2864 | +--ro over-subscribed-bandwidth uint32 2865 +--rw rsvp-te-frr-backups {te-types:frr-te}? 2866 +--rw config 2867 | +--rw backup-bandwidth? uint32 2868 | +--rw backup-bandwidth-classtype? uint32 2869 | +--rw (type)? 2870 | +--:(static-tunnel) 2871 | | +--rw static-backups* [tunnel-name] 2872 | | +--rw tunnel-name string 2873 | +--:(auto-tunnel) 2874 | +--rw auto-backup-protection? identityref 2875 | +--rw auto-backup-path-computation? identityref 2876 +--ro state 2877 +--ro backup-bandwidth? uint32 2878 +--ro backup-bandwidth-classtype? uint32 2879 +--ro (type)? 2880 +--:(static-tunnel) 2881 | +--ro static-backups* [tunnel-name] 2882 | +--ro tunnel-name string 2883 +--:(auto-tunnel) 2884 +--ro auto-backup-protection? identityref 2885 +--ro auto-backup-path-computation? identityref 2887 Figure 6: MPLS RSVP-TE YANG Tree representation 2889 3.4.2. RPC and Notification Data 2891 TBD. 2893 3.4.3. YANG Module 2895 file "ietf-rsvp-te-mpls@2016-03-20.yang" 2896 module ietf-rsvp-te-mpls { 2898 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls"; 2900 prefix "rsvp-te-mpls"; 2902 import ietf-rsvp { 2903 prefix rsvp; 2904 } 2906 import ietf-routing { 2907 prefix "rt"; 2908 } 2910 import ietf-te-mpls-types { 2911 prefix "te-mpls-types"; 2912 } 2914 import ietf-te-types { 2915 prefix "te-types"; 2916 } 2918 import ietf-te { 2919 prefix "te"; 2920 } 2922 import ietf-te-device { 2923 prefix "te-dev"; 2924 } 2926 organization 2927 "IETF Traffic Engineering Architecture and Signaling (TEAS) 2928 Working Group"; 2930 contact 2931 "WG Web: 2932 WG List: 2934 WG Chair: Lou Berger 2935 2937 WG Chair: Vishnu Pavan Beeram 2938 2940 Editor: Vishnu Pavan Beeram 2941 2943 Editor: Tarek Saad 2944 2946 Editor: Rakesh Gandhi 2947 2949 Editor: Himanshu Shah 2950 2952 Editor: Xufeng Liu 2953 2955 Editor: Xia Chen 2956 2958 Editor: Raqib Jones 2959 2961 Editor: Bin Wen 2962 "; 2964 description 2965 "Latest update to MPLS RSVP-TE YANG data model."; 2967 revision 2016-03-20 { 2968 description "Update to MPLS RSVP-TE YANG initial revision."; 2969 reference "RFC3209, RFC6511, RFC6790, RFC7260, RFC4859, RFC4090"; 2970 } 2972 /* RSVP-TE MPLS LSPs groupings */ 2973 grouping lsp-attributes-flags-mpls_config { 2974 description 2975 "Configuration parameters relating to RSVP-TE MPLS LSP 2976 attribute flags"; 2977 leaf non-php-desired { 2978 type empty; 2979 description 2980 "Non-PHP is desired"; 2981 reference "RFC6511"; 2982 } 2983 leaf entropy-label-cap { 2984 type empty; 2985 description "Entropy label capability"; 2986 reference "RFC6790"; 2987 } 2988 leaf oam-mep-entities-desired { 2989 type empty; 2990 description "OAM MEP entities desired"; 2991 reference "RFC7260"; 2992 } 2993 leaf oam-mip-entities-desired { 2994 type empty; 2995 description "OAM MIP entities desired"; 2996 reference "RFC7260"; 2997 } 2998 } 3000 grouping lsp-session-attributes-obj-flags-mpls_config { 3001 description 3002 "Configuration parameters relating to RSVP-TE MPLS LSP 3003 session attribute flags"; 3004 reference 3005 "RFC4859: Registry for RSVP-TE Session Flags"; 3006 leaf local-protection-desired { 3007 type empty; 3008 description "Fastreroute local protection is desired."; 3009 reference 3010 "RFC4859: Registry for RSVP-TE Session Flags"; 3011 } 3012 leaf bandwidth-protection-desired { 3013 type empty; 3014 description 3015 "Request FRR bandwidth protection on LSRs if 3016 present."; 3017 reference "RFC4090"; 3018 } 3019 leaf node-protection-desired { 3020 type empty; 3021 description 3022 "Request FRR node protection on LSRs if 3023 present."; 3024 reference "RFC4090"; 3025 } 3026 } 3028 grouping lsp-overflow_config { 3029 description "configuration for mpls lsp bandwidth 3030 overflow adjustment"; 3032 leaf enabled { 3033 type boolean; 3034 default false; 3035 description "enables mpls lsp bandwidth overflow 3036 adjustment on the lsp"; 3037 } 3039 leaf overflow-threshold { 3040 type uint32; 3041 description "bandwidth percentage change to trigger 3042 an overflow event"; 3044 } 3046 leaf trigger-event-count { 3047 type uint16; 3048 description "number of consecutive overflow sample 3049 events needed to trigger an overflow adjustment"; 3050 } 3051 } 3053 grouping lsp-underflow_config { 3054 description 3055 "configuration for mpls lsp bandwidth 3056 underflow adjustment"; 3058 leaf enabled { 3059 type boolean; 3060 default false; 3061 description "enables bandwidth underflow 3062 adjustment on the lsp"; 3064 } 3066 leaf underflow-threshold { 3067 type uint32; 3068 description "bandwidth percentage change to trigger 3069 and underflow event"; 3070 } 3072 leaf trigger-event-count { 3073 type uint16; 3074 description "number of consecutive underflow sample 3075 events needed to trigger an underflow adjustment"; 3076 } 3077 } 3079 grouping lsp-auto-bandwidth_config { 3080 description 3081 "Auto-Bandwidth grouping"; 3082 container auto-bandwidth { 3083 description "configure auto-bandwidth operation in 3084 which devices automatically adjust bandwidth to meet 3085 requirements"; 3087 leaf enabled { 3088 type boolean; 3089 default false; 3090 description "enables mpls auto-bandwidth on the 3091 lsp"; 3092 } 3094 leaf min-bw { 3095 type uint32; 3096 description "set the minimum bandwidth in Mbps for an 3097 auto-bandwidth LSP"; 3098 } 3100 leaf max-bw { 3101 type uint32; 3102 description "set the maximum bandwidth in Mbps for an 3103 auto-bandwidth LSP"; 3104 } 3106 leaf adjust-interval { 3107 type uint32; 3108 description "time in seconds between adjustments to 3109 LSP bandwidth"; 3110 } 3111 leaf adjust-threshold { 3112 type uint32; 3113 description "percentage difference between the LSP's 3114 specified bandwidth and its current bandwidth 3115 allocation -- if the difference is greater than the 3116 specified percentage, auto-bandwidth adjustment is 3117 triggered"; 3118 } 3120 container overflow { 3121 description "configuration of MPLS overflow bandwidth 3122 adjustement for the LSP"; 3123 uses lsp-overflow_config; 3124 } 3126 container underflow { 3127 description "configuration of MPLS underflow bandwidth 3128 adjustement for the LSP"; 3129 uses lsp-underflow_config; 3130 } 3131 } 3132 } 3134 grouping lsp-bandwidth_config { 3135 description 3136 "LSP bandwidth grouping"; 3137 leaf static-bandwidth { 3138 type uint32; 3139 description 3140 "Static bandwidth, e.g., using 3141 offline calculation"; 3142 } 3143 uses lsp-auto-bandwidth_config; 3144 } 3146 grouping tunnel-properties-mpls { 3147 description 3148 "Top level grouping for LSP properties."; 3149 container config { 3150 description 3151 "Configuration parameters for tunnel RSVP-TE 3152 properties"; 3153 uses lsp-bandwidth_config; 3154 uses lsp-session-attributes-obj-flags-mpls_config; 3155 uses lsp-attributes-flags-mpls_config; 3156 } 3157 container state { 3158 description 3159 "State parameters for tunnel RSVP-TE 3160 properties"; 3161 uses lsp-bandwidth_config; 3162 uses lsp-session-attributes-obj-flags-mpls_config; 3163 uses lsp-attributes-flags-mpls_config; 3164 } 3165 } 3167 grouping lsp-properties-mpls { 3168 description 3169 "Top level grouping for LSP properties."; 3170 uses lsp-bandwidth_config; 3171 uses lsp-session-attributes-obj-flags-mpls_config; 3172 uses lsp-attributes-flags-mpls_config; 3173 } 3174 /* End of RSVP-TE MPLS LSPs groupings */ 3176 /* MPLS RSVP-TE interface groupings */ 3177 grouping rsvp-te-interface_state { 3178 description 3179 "The RSVP-TE interface state grouping"; 3180 leaf over-subscribed-bandwidth { 3181 type uint32; 3182 description 3183 "The amount of over-subscribed bandwidth on 3184 the interface"; 3185 } 3186 } 3188 grouping rsvp-te-interface-softpreemption_state { 3189 description 3190 "The RSVP-TE interface preeemptions state grouping"; 3191 container interface-softpreemption-state { 3192 description 3193 "The RSVP-TE interface preeemptions state grouping"; 3194 leaf soft-preempted-bandwidth { 3195 type uint32; 3196 description 3197 "The amount of soft-preempted bandwidth on 3198 this interface"; 3199 } 3200 list lsps { 3201 key 3202 "source destination tunnel-id lsp-id "+ 3203 "extended-tunnel-id"; 3204 description 3205 "List of LSPs that are soft-preempted"; 3206 leaf source { 3207 type leafref { 3208 path "/te:te/te:lsps-state/te:lsp/"+ 3209 "te:source"; 3210 } 3211 description 3212 "Tunnel sender address extracted from 3213 SENDER_TEMPLATE object"; 3214 reference "RFC3209"; 3215 } 3216 leaf destination { 3217 type leafref { 3218 path "/te:te/te:lsps-state/te:lsp/"+ 3219 "te:destination"; 3220 } 3221 description 3222 "Tunnel endpoint address extracted from 3223 SESSION object"; 3224 reference "RFC3209"; 3225 } 3226 leaf tunnel-id { 3227 type leafref { 3228 path "/te:te/te:lsps-state/te:lsp/"+ 3229 "te:tunnel-id"; 3230 } 3231 description 3232 "Tunnel identifier used in the SESSION 3233 that remains constant over the life 3234 of the tunnel."; 3235 reference "RFC3209"; 3236 } 3237 leaf lsp-id { 3238 type leafref { 3239 path "/te:te/te:lsps-state/te:lsp/"+ 3240 "te:lsp-id"; 3241 } 3242 description 3243 "Identifier used in the SENDER_TEMPLATE 3244 and the FILTER_SPEC that can be changed 3245 to allow a sender to share resources with 3246 itself."; 3247 reference "RFC3209"; 3248 } 3249 leaf extended-tunnel-id { 3250 type leafref { 3251 path "/te:te/te:lsps-state/te:lsp/"+ 3252 "te:extended-tunnel-id"; 3253 } 3254 description 3255 "Extended Tunnel ID of the LSP."; 3256 reference "RFC3209"; 3257 } 3258 leaf type { 3259 type leafref { 3260 path "/te:te/te:lsps-state/te:lsp/"+ 3261 "te:type"; 3262 } 3263 description "LSP type P2P or P2MP"; 3264 } 3265 } 3266 } 3267 } 3268 /* End of RSVP-TE interface groupings */ 3270 /* RSVP-TE FRR groupings */ 3271 grouping rsvp-te-frr-backups_config { 3272 description 3273 "Top level container for RSVP-TE FRR backup parameters"; 3274 leaf backup-bandwidth { 3275 type uint32; 3276 description 3277 "Maximum bandwidth this facility backup 3278 is allowed to protect"; 3279 } 3280 leaf backup-bandwidth-classtype { 3281 type uint32; 3282 description 3283 "Type of primary LSP bandwidth that the 3284 backup is allowed to protect."; 3285 } 3286 choice type { 3287 description 3288 "FRR backup tunnel type"; 3289 case static-tunnel { 3290 list static-backups { 3291 key "tunnel-name"; 3292 description 3293 "List of static backup tunnels that 3294 protect the RSVP-TE interface."; 3295 leaf tunnel-name { 3296 type string; 3297 description "FRR Backup tunnel"; 3298 } 3299 } 3300 } 3301 case auto-tunnel { 3302 leaf auto-backup-protection { 3303 type identityref { 3304 base te-mpls-types:backup-protection-type; 3305 } 3306 default 3307 te-mpls-types:backup-protection-node-link; 3308 description 3309 "Describes whether the backup should offer 3310 protection against link, node, or either"; 3311 } 3312 leaf auto-backup-path-computation { 3313 type identityref { 3314 base 3315 te-types:path-computation-srlg-type; 3316 } 3317 description 3318 "FRR backup computation type"; 3319 } 3320 } 3321 } 3322 } 3324 grouping rsvp-te-frr-backups { 3325 description 3326 "Top level grouping for RSVP-TE FRR backup properties."; 3327 container rsvp-te-frr-backups { 3328 if-feature te-types:frr-te; 3329 description 3330 "Top level container for RSVP-TE FRR backup 3331 properties."; 3332 container config { 3333 description 3334 "Configuration parameters for interface RSVP-TE 3335 FRR backup properties"; 3336 uses rsvp-te-frr-backups_config; 3337 } 3338 container state { 3339 config false; 3340 description 3341 "State parameters for interface RSVP-TE 3342 FRR backup properties"; 3343 uses rsvp-te-frr-backups_config; 3344 } 3345 } 3346 } 3348 grouping lps-backup-info_state { 3349 description "Backup/bypass LSP related information"; 3350 container backup-info { 3351 description 3352 "backup information"; 3354 leaf backup-tunnel-name { 3355 type string; 3356 description 3357 "If an LSP has an FRR backup LSP that can protect it, 3358 this field identifies the tunnel name of the backup LSP. 3359 Otherwise, this field is empty."; 3360 } 3362 leaf backup-frr-on { 3363 type uint8; 3364 description 3365 "Whether currently this backup is carrying traffic"; 3366 } 3368 leaf backup-protected-lsp-num { 3369 type uint32; 3370 description 3371 "Number of LSPs protected by this backup"; 3372 } 3373 } 3374 } 3376 grouping rsvp-frr-local-revert_config { 3377 description "RSVP-TE FRR local revertive grouping"; 3378 container rsvp-frr-local-revert { 3379 presence "Enable RSVP FRR local revertive recovery 3380 mode."; 3381 description 3382 "RSVP-TE global properties container"; 3383 leaf rsvp-frr-local-revert-delay { 3384 type uint32; 3385 description 3386 "Time to wait after primary link is restored 3387 before node attempts local revertive 3388 procedures."; 3389 } 3390 } 3391 } 3393 /*** End of RSVP-TE FRR backup information ***/ 3395 grouping globals-properties { 3396 description 3397 "Top level grouping for globals properties"; 3398 container config { 3399 description 3400 "Configuration parameters relating to 3401 global MPLS RSVP-TE properties"; 3402 uses rsvp-frr-local-revert_config; 3403 } 3404 container state { 3405 config false; 3406 description 3407 "State parameters relating to 3408 global MPLS RSVP-TE properties"; 3409 uses rsvp-frr-local-revert_config; 3410 } 3411 } 3413 /* RSVP-TE global propeerties */ 3414 augment "/rt:routing/rt:routing-protocols/" 3415 + "rt:routing-protocol/rsvp:rsvp" { 3416 description 3417 "RSVP-TE augmentation to RSVP globals"; 3418 uses globals-properties; 3419 } 3421 grouping rsvp-te-interface-attributes-mpls { 3422 description 3423 "Top level grouping for MPLS RSVP-TE interface 3424 properties."; 3425 container config { 3426 description 3427 "Configuration parameters relating to RSVP-TE 3428 bandwidth"; 3429 uses te-mpls-types:bandwidth-mpls-reservable; 3430 } 3431 container state { 3432 config false; 3433 description 3434 "State information associated with RSVP-TE 3435 bandwidth"; 3436 uses te-mpls-types:bandwidth-mpls-reservable; 3437 uses rsvp-te-interface-softpreemption_state; 3438 uses rsvp-te-interface_state; 3439 } 3440 } 3442 /* Linkage to the base RSVP all interfaces */ 3443 augment "/rt:routing/rt:routing-protocols/" 3444 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces" { 3445 description "TBD"; 3446 /* To be added */ 3448 } 3450 /* Linkage to per RSVP interface */ 3451 augment "/rt:routing/rt:routing-protocols/" 3452 + "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:interface" { 3453 description "TBD"; 3454 /* To be added */ 3455 } 3457 /* add augmentation for sessions neighbors */ 3458 augment "/rt:routing/rt:routing-protocols/" 3459 + "rt:routing-protocol/rsvp:rsvp/rsvp:sessions" { 3460 description "TBD"; 3461 /* To be added */ 3462 } 3464 augment "/rt:routing/rt:routing-protocols/" 3465 + "rt:routing-protocol/rsvp:rsvp/rsvp:neighbors" { 3466 description "TBD"; 3467 /* To be added */ 3468 } 3470 /** 3471 * Augmentation to TE generic module 3472 */ 3473 augment "/te:te/te:tunnels/te:tunnel" { 3474 description "TBD"; 3475 uses tunnel-properties-mpls; 3476 } 3478 augment "/te:te/te:lsps-state/te:lsp" { 3479 description 3480 "RSVP-TE LSP state properties"; 3481 uses lsp-properties-mpls; 3482 uses lps-backup-info_state; 3483 } 3485 augment "/te:te/te-dev:interfaces/te-dev:interface" { 3486 description 3487 "RSVP reservable bandwidth configuration properties"; 3488 uses rsvp-te-interface-attributes-mpls; 3489 uses rsvp-te-frr-backups; 3490 } 3491 } 3493 3495 4. IANA Considerations 3497 This document registers the following URIs in the IETF XML registry 3498 [RFC3688]. Following the format in [RFC3688], the following 3499 registration is requested to be made. 3501 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp XML: N/A, the requested 3502 URI is an XML namespace. 3504 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-te XML: N/A, the requested 3505 URI is an XML namespace. 3507 This document registers a YANG module in the YANG Module Names 3508 registry [RFC6020]. 3510 name: ietf-rsvp namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp 3511 prefix: ietf-rsvp reference: RFC3209 3513 name: ietf-rsvp-te namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp- 3514 te prefix: ietf-rsvp-te reference: RFC3209 3516 5. Security Considerations 3518 The YANG module defined in this memo is designed to be accessed via 3519 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 3520 secure transport layer and the mandatory-to-implement secure 3521 transport is SSH [RFC6242]. The NETCONF access control model 3522 [RFC6536] provides means to restrict access for particular NETCONF 3524 users to a pre-configured subset of all available NETCONF protocol 3525 operations and content. 3527 There are a number of data nodes defined in the YANG module which are 3528 writable/creatable/deletable (i.e., config true, which is the 3529 default). These data nodes may be considered sensitive or vulnerable 3530 in some network environments. Write operations (e.g., ) 3531 to these data nodes without proper protection can have a negative 3532 effect on network operations. 3534 6. Acknowledgement 3536 The authors would like to thank Lou Berger for reviewing and 3537 providing valuable feedback on this document. 3539 7. References 3541 7.1. Normative References 3543 [I-D.ietf-netmod-routing-cfg] 3544 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 3545 Management", draft-ietf-netmod-routing-cfg-21 (work in 3546 progress), March 2016. 3548 [I-D.ietf-teas-yang-te] 3549 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., Chen, 3550 X., Jones, R., and B. Wen, "A YANG Data Model for Traffic 3551 Engineering Tunnels and Interfaces", draft-ietf-teas-yang- 3552 te-03 (work in progress), March 2016. 3554 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 3555 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 3556 RFC2119, March 1997, 3557 . 3559 [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S. 3560 Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 3561 Functional Specification", RFC 2205, DOI 10.17487/RFC2205, 3562 September 1997, . 3564 [RFC2747] Baker, F., Lindell, B., and M. Talwar, "RSVP Cryptographic 3565 Authentication", RFC 2747, DOI 10.17487/RFC2747, January 3566 2000, . 3568 [RFC2961] Berger, L., Gan, D., Swallow, G., Pan, P., Tommasi, F., 3569 and S. Molendini, "RSVP Refresh Overhead Reduction 3570 Extensions", RFC 2961, DOI 10.17487/RFC2961, April 2001, 3571 . 3573 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 3574 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 3575 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 3576 . 3578 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 3579 Switching (GMPLS) Signaling Resource ReserVation Protocol- 3580 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, DOI 3581 10.17487/RFC3473, January 2003, 3582 . 3584 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 3585 DOI 10.17487/RFC3688, January 2004, 3586 . 3588 [RFC5063] Satyanarayana, A., Ed. and R. Rahman, Ed., "Extensions to 3589 GMPLS Resource Reservation Protocol (RSVP) Graceful 3590 Restart", RFC 5063, DOI 10.17487/RFC5063, October 2007, 3591 . 3593 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 3594 the Network Configuration Protocol (NETCONF)", RFC 6020, 3595 DOI 10.17487/RFC6020, October 2010, 3596 . 3598 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 3599 and A. Bierman, Ed., "Network Configuration Protocol 3600 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 3601 . 3603 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 3604 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 3605 . 3607 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 3608 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 3609 10.17487/RFC6536, March 2012, 3610 . 3612 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 3613 6991, DOI 10.17487/RFC6991, July 2013, 3614 . 3616 7.2. Informative References 3618 [I-D.openconfig-mpls-consolidated-model] 3619 George, J., Fang, L., eric.osborne@level3.com, e., and R. 3620 Shakir, "MPLS / TE Model for Service Provider Networks", 3621 draft-openconfig-mpls-consolidated-model-02 (work in 3622 progress), October 2015. 3624 [I-D.openconfig-netmod-opstate] 3625 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 3626 of Operational State Data in YANG", draft-openconfig- 3627 netmod-opstate-01 (work in progress), July 2015. 3629 Authors' Addresses 3631 Vishnu Pavan Beeram 3632 Juniper Networks 3634 Email: vbeeram@juniper.net 3635 Tarek Saad (editor) 3636 Cisco Systems Inc 3638 Email: tsaad@cisco.com 3640 Rakesh Gandhi 3641 Cisco Systems Inc 3643 Email: rgandhi@cisco.com 3645 Xufeng Liu 3646 Ericsson 3648 Email: xliu@kuatrotech.com 3650 Himanshu Shah 3651 Ciena 3653 Email: hshah@ciena.com 3655 Xia Chen 3656 Huawei Technologies 3658 Email: jescia.chenxia@huawei.com 3660 Raqib Jones 3661 Brocade 3663 Email: raqib@Brocade.com 3665 Bin Wen 3666 Comcast 3668 Email: Bin_Wen@cable.comcast.com