idnits 2.17.1 draft-ietf-teas-yang-rsvp-07.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 127 has weird spacing: '... rw for r...' == Line 128 has weird spacing: '... ro for r...' == Line 871 has weird spacing: '...gnaling param...' -- The document date (March 10, 2017) is 2605 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) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) ** Obsolete normative reference: RFC 8022 (Obsoleted by RFC 8349) Summary: 2 errors (**), 0 flaws (~~), 4 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 TEAS Working Group V. Beeram 3 Internet-Draft Juniper Networks 4 Intended status: Standards Track T. Saad, Ed. 5 Expires: September 11, 2017 R. Gandhi 6 Cisco Systems, Inc. 7 X. Liu 8 Jabil 9 I. Bryskin 10 Huawei Technologies 11 H. Shah 12 Ciena 13 March 10, 2017 15 A YANG Data Model for Resource Reservation Protocol (RSVP) 16 draft-ietf-teas-yang-rsvp-07 18 Abstract 20 This document defines a YANG data model for the configuration and 21 management of RSVP Protocol. The model covers the building blocks of 22 the RSVP protocol that can be augmented and used by other RSVP 23 extension models such as RVSP extensions to Traffic-Engineering 24 (RSVP-TE). The model covers the configuration, operational state, 25 remote procedural calls, and event notifications data. 27 Status of This Memo 29 This Internet-Draft is submitted in full conformance with the 30 provisions of BCP 78 and BCP 79. 32 Internet-Drafts are working documents of the Internet Engineering 33 Task Force (IETF). Note that other groups may also distribute 34 working documents as Internet-Drafts. The list of current Internet- 35 Drafts is at http://datatracker.ietf.org/drafts/current/. 37 Internet-Drafts are draft documents valid for a maximum of six months 38 and may be updated, replaced, or obsoleted by other documents at any 39 time. It is inappropriate to use Internet-Drafts as reference 40 material or to cite them other than as "work in progress." 42 This Internet-Draft will expire on September 11, 2017. 44 Copyright Notice 46 Copyright (c) 2017 IETF Trust and the persons identified as the 47 document authors. All rights reserved. 49 This document is subject to BCP 78 and the IETF Trust's Legal 50 Provisions Relating to IETF Documents 51 (http://trustee.ietf.org/license-info) in effect on the date of 52 publication of this document. Please review these documents 53 carefully, as they describe your rights and restrictions with respect 54 to this document. Code Components extracted from this document must 55 include Simplified BSD License text as described in Section 4.e of 56 the Trust Legal Provisions and are provided without warranty as 57 described in the Simplified BSD License. 59 Table of Contents 61 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 62 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 63 1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 64 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4 65 2. Design Considerations . . . . . . . . . . . . . . . . . . . . 5 66 2.1. Module Hierarchy . . . . . . . . . . . . . . . . . . . . 5 67 2.2. Data Organization . . . . . . . . . . . . . . . . . . . . 6 68 2.3. Configuration Inheritance . . . . . . . . . . . . . . . . 7 69 3. Model Organization . . . . . . . . . . . . . . . . . . . . . 7 70 3.1. RSVP Base YANG Model . . . . . . . . . . . . . . . . . . 7 71 3.1.1. Global Data . . . . . . . . . . . . . . . . . . . . . 9 72 3.1.2. Interface Data . . . . . . . . . . . . . . . . . . . 9 73 3.1.3. Neighbor Data . . . . . . . . . . . . . . . . . . . . 9 74 3.1.4. Session Data . . . . . . . . . . . . . . . . . . . . 9 75 3.1.5. Tree Diagram . . . . . . . . . . . . . . . . . . . . 9 76 3.1.6. YANG Module . . . . . . . . . . . . . . . . . . . . . 14 77 3.2. RSVP Extended YANG Model . . . . . . . . . . . . . . . . 33 78 3.2.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 34 79 3.2.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 40 80 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 52 81 5. Security Considerations . . . . . . . . . . . . . . . . . . . 52 82 6. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 52 83 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 53 84 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 53 85 8.1. Normative References . . . . . . . . . . . . . . . . . . 53 86 8.2. Informative References . . . . . . . . . . . . . . . . . 54 87 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 55 89 1. Introduction 91 YANG [RFC6020] is a data definition language that was introduced to 92 define the contents of a conceptual data store that allows networked 93 devices to be managed using NETCONF [RFC6241]. YANG is proving 94 relevant beyond its initial confines, as bindings to other interfaces 95 (e.g. ReST) and encoding other than XML (e.g. JSON) are being 96 defined. Furthermore, YANG data models can be used as the basis of 97 implementation for other interfaces, such as CLI and programmatic 98 APIs. 100 This document defines a YANG data model that can be used to configure 101 and manage the RSVP protocol [RFC2205]. This model covers RSVP 102 protocol building blocks that can be augmented and used by other RSVP 103 extension models- such as for signaling RSVP-TE MPLS (or other 104 technology specific) Label Switched Paths (LSP)s. 106 1.1. Terminology 108 In this document, the key words "MUST", "MUST NOT", "REQUIRED", 109 "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 110 and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 111 [RFC2119]. 113 1.2. Tree Diagram 115 A simplified graphical representation of the data model is presented 116 in each section of the model. The following notations are used for 117 the YANG model data tree representation. 119 121 is one of: 122 + for current 123 x for deprecated 124 o for obsolete 126 is one of: 127 rw for read-write configuration data 128 ro for read-only non-configuration data 129 -x for execution rpcs 130 -n for notifications 132 is the name of the node 134 If the node is augmented into the tree from another module, its name 135 is printed as : 137 is one of: 138 ? for an optional leaf or node 139 ! for a presence container 140 * for a leaf-list or list 141 Brackets [] for a list's keys 142 Curly braces {} for optional feature that make node 143 conditional 144 Colon : for marking case nodes 145 Ellipses ("...") subtree contents not shown 147 Parentheses enclose choice and case nodes, and case nodes are also 148 marked with a colon (":"). 150 is the name of the type for leafs and leaf-lists. 152 1.3. Prefixes in Data Node Names 154 In this document, names of data nodes and other data model objects 155 are prefixed using the standard prefix associated with the 156 corresponding YANG imported modules, as shown in Table 1. 158 +-----------+--------------------+-----------+ 159 | Prefix | YANG module | Reference | 160 +-----------+--------------------+-----------+ 161 | yang | ietf-yang-types | [RFC6991] | 162 | inet | ietf-inet-types | [RFC6991] | 163 | rt-type | ietf-routing-types | XX | 164 | key-chain | ietf-key-chain | XX | 165 +---------+----------------------+-----------+ 167 Table 1: Prefixes and corresponding YANG modules 169 2. Design Considerations 171 2.1. Module Hierarchy 173 The RSVP base YANG module augments the "control-plane-protocol" list 174 in ietf-routing [RFC8022] module with specific RSVP parameters in an 175 "rsvp" container. It also defines an extensiion identity "rsvp" of 176 base "rt:routing-protocol" to identify the RSVP protocol. 178 During modeling discussion, some RSVP features are categorized as 179 core to the functionality of the protocol, and hence, are supported 180 by all vendors claiming the support for RSVP. These features' 181 configuration and state were grouped in the RSVP base module. 183 Other extended RSVP features are categorized as either optional or 184 providing additional knobs to provide better tune basic functionality 185 of the RSVP protocol. The support for extended RSVP features by all 186 vendors was considered optional. Such features were grouped in a 187 separate RSVP extended module. 189 The augmentation of the RSVP model by other models (e.g. RSVP-TE for 190 MPLS or other technologies) are considered outside the scope of this 191 document and discussed in separate document(s). 193 +--------------+ 194 Routing | ietf-routing | 195 +--------------+ 196 o 197 | 198 +-----------+ 199 RSVP module | ietf-rsvp | 200 +-----------+ 201 o 202 | 203 RSVP extended | 204 module +--------------------+ 205 | ietf-rsvp-extended | 206 +--------------------+ 208 Figure 1: Relationship of RSVP and RSVP extended modules with other 209 protocol modules 211 The RSVP base model does not aim to be feature complete. The primary 212 intent is to cover a set of standard core features (listed below) 213 that are commonly in use. 215 o Authentication ([RFC2747]) 217 o Refresh Reduction ([RFC2961]) 219 o Hellos ([RFC3209]) 221 o Graceful Restart ([RFC3473], [RFC5063]) 223 The extended RSVP YANG model covers non-basic configuration(s) for 224 RSVP feature(s) as well as optional RSVP feature that are not a must 225 for basic RSVP operation. 227 2.2. Data Organization 229 Throughout the model, the approach described in 230 [I-D.openconfig-netmod-opstate] is adopted to represent data 231 pertaining to configuration intended state, applied state and derived 232 state data elements. Each container in the model hold a "config" and 233 "state" sub-container. 235 The "config" sub-container is used to represent the intended 236 configurable parameters, and the state sub-container is used to 237 represent both the applied configurable parameters and any derived 238 state, such as counters or statistical information. 240 The decision to use this approach was made to better align with the 241 MPLS consolidated model in [I-D.openconfig-mpls-consolidated-model], 242 and maximize reusability of groupings defined in this document and 243 allow for possible convergence between the two models. 245 The approach described in [I-D.openconfig-netmod-opstate] allows for 246 modeling the respective intended and applied configuration and 247 derived state. The state data can be categorized into one of the 248 following: 250 o State corresponding to applied configuration 252 o State corresponding to derived state, counters, stats, etc. 254 Pure state data (for example, protocol derived data) is placed inside 255 the "state" sub-container, as shown in Figure 2. 257 2.3. Configuration Inheritance 259 The defined data model supports configuration inheritance for 260 neighbors, and interfaces. Data elements defined in the main 261 container (e.g. the container that encompasses the list of 262 interfaces, or neighbors) are assumed to apply equally to all 263 elements of the list, unless overridden explicitly for a certain 264 element (e.g. interface). Vendors are expected to augment the above 265 container(s) to provide the list of inheritance command for their 266 implementations. 268 3. Model Organization 270 This document divides the RSVP model into two modules: the RSVP base 271 and extended. Each module covers the configuration, state, 272 notification and RPCs of data. The relationship between the 273 different modules is depicted in Figure 1. 275 3.1. RSVP Base YANG Model 277 This section describes the RSVP base YANG data model. The container 278 "rsvp" is the top level container in this data model. The presence 279 of this container enables the RSVP protocol functionality. 281 Data for such state is contained under the respective "state" sub- 282 container of the intended object (e.g. interface) as shown in 283 Figure 2. 285 module: ietf-rsvp 286 +--rw rsvp! 287 +--rw globals 288 +-- rw config 289 <> 290 . 291 +-- ro state 292 <> 293 <> 294 . 295 . 296 +--rw interfaces 297 +-- rw config 298 <> 299 . 300 +-- ro state 301 <> 302 <> 303 . 304 . 305 +--rw neighbors 306 +-- rw config 307 <> 308 . 309 +-- ro state 310 <> 311 <> 312 . 313 . 314 +--rw sessions 315 +-- rw config 316 <> 317 . 318 +-- ro state 319 <> 320 <> 321 . 322 rpcs: 323 +--x global-rpc 324 +--x interfaces-rpc 325 +--x neighbors-rpc 326 +--x sessions-rpc 327 notifications: 328 +--n global-notif 329 +--n interfaces-notif 330 +--n neighbors-notif 331 +--n sessions-notif 333 Figure 2: RSVP high-level tree model view 335 The following subsections provide overview of the parts of the model 336 pertaining to configuration and state data. 338 Configuration and state data are organized into those applicable 339 globally (node scope), per interfaces, per neighbors, or per session. 341 3.1.1. Global Data 343 This branch of the data model covers global configuration and states 344 that control RSVP protocol behavior. 346 3.1.2. Interface Data 348 This branch of the data model covers configuration and state elements 349 relevant to one or all RSVP interfaces. Any data configuration 350 applied at the "interfaces" container level are equally applicable to 351 all interfaces - unless overridden by explicit configuration under a 352 specific interface. 354 3.1.3. Neighbor Data 356 This branch of the data model covers configuration of elements 357 relevant to RSVP neighbors. This would be discussed in detail in 358 future revisions. 360 3.1.4. Session Data 362 This branch of the data model covers configuration of elements 363 relevant to RSVP sessions. This would be discussed in detail in 364 future revisions. 366 3.1.5. Tree Diagram 368 module: ietf-rsvp 369 augment 370 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: 371 +--rw rsvp! 372 +--rw globals 373 | +--rw sessions 374 | | +--ro session* [local-index] 375 | | +--ro local-index -> ../state/local-index 376 | | +--ro state 377 | | +--ro local-index? uint64 378 | | +--ro destination-port? inet:port-number 379 | | +--ro source? inet:ip-address 380 | | +--ro destination? inet:ip-address 381 | | +--ro session-name? string 382 | | +--ro session-state? enumeration 383 | | +--ro session-type? identityref 384 | | +--ro psbs 385 | | | +--ro psb* 386 | | | +--ro source-port? inet:port-number 387 | | | +--ro expires-in? uint32 388 | | +--ro rsbs 389 | | +--ro rsb* 390 | | +--ro source-port? inet:port-number 391 | | +--ro reservation-style? identityref 392 | | +--ro expires-in? uint32 393 | +--rw statistics 394 | | +--ro state 395 | | +--ro messages 396 | | | +--ro ack-sent? yang:counter64 397 | | | +--ro ack-received? yang:counter64 398 | | | +--ro bundle-sent? yang:counter64 399 | | | +--ro bundle-received? yang:counter64 400 | | | +--ro hello-sent? yang:counter64 401 | | | +--ro hello-received? yang:counter64 402 | | | +--ro integrity-challenge-sent? yang:counter64 403 | | | +--ro integrity-challenge-received? yang:counter64 404 | | | +--ro integrity-response-sent? yang:counter64 405 | | | +--ro integrity-response-received? yang:counter64 406 | | | +--ro notify-sent? yang:counter64 407 | | | +--ro notify-received? yang:counter64 408 | | | +--ro path-sent? yang:counter64 409 | | | +--ro path-received? yang:counter64 410 | | | +--ro path-err-sent? yang:counter64 411 | | | +--ro path-err-received? yang:counter64 412 | | | +--ro path-tear-sent? yang:counter64 413 | | | +--ro path-tear-received? yang:counter64 414 | | | +--ro resv-sent? yang:counter64 415 | | | +--ro resv-received? yang:counter64 416 | | | +--ro resv-confirm-sent? yang:counter64 417 | | | +--ro resv-confirm-received? yang:counter64 418 | | | +--ro resv-err-sent? yang:counter64 419 | | | +--ro resv-err-received? yang:counter64 420 | | | +--ro resv-tear-sent? yang:counter64 421 | | | +--ro resv-tear-received? yang:counter64 422 | | | +--ro summary-refresh-sent? yang:counter64 423 | | | +--ro summary-refresh-received? yang:counter64 424 | | | +--ro unknown-messages-received? yang:counter64 425 | | +--ro packets 426 | | | +--ro sent? yang:counter64 427 | | | +--ro received? yang:counter64 428 | | +--ro errors 429 | | +--ro authenticate? yang:counter64 430 | | +--ro checksum? yang:counter64 431 | | +--ro packet-len? yang:counter64 432 | +--rw graceful-restart 433 | +--rw config 434 | | +--rw enabled? boolean 435 | +--ro state 436 | +--ro enabled? boolean 437 +--rw interfaces 438 | +--rw config 439 | +--ro state 440 | +--rw refresh-reduction 441 | | +--rw config 442 | | | +--rw enabled? boolean 443 | | +--ro state 444 | | +--ro enabled? boolean 445 | +--rw hellos 446 | | +--rw config 447 | | | +--rw enabled? boolean 448 | | +--ro state 449 | | +--ro enabled? boolean 450 | +--rw authentication 451 | | +--rw config 452 | | | +--rw enabled? boolean 453 | | | +--rw authentication-key? string 454 | | | +--rw crypto-algorithm identityref 455 | | +--ro state 456 | | +--ro enabled? boolean 457 | | +--ro authentication-key? string 458 | | +--ro crypto-algorithm identityref 459 | +--rw statistics 460 | | +--ro state 461 | | +--ro messages 462 | | | +--ro ack-sent? yang:counter64 463 | | | +--ro ack-received? yang:counter64 464 | | | +--ro bundle-sent? yang:counter64 465 | | | +--ro bundle-received? yang:counter64 466 | | | +--ro hello-sent? yang:counter64 467 | | | +--ro hello-received? yang:counter64 468 | | | +--ro integrity-challenge-sent? yang:counter64 469 | | | +--ro integrity-challenge-received? yang:counter64 470 | | | +--ro integrity-response-sent? yang:counter64 471 | | | +--ro integrity-response-received? yang:counter64 472 | | | +--ro notify-sent? yang:counter64 473 | | | +--ro notify-received? yang:counter64 474 | | | +--ro path-sent? yang:counter64 475 | | | +--ro path-received? yang:counter64 476 | | | +--ro path-err-sent? yang:counter64 477 | | | +--ro path-err-received? yang:counter64 478 | | | +--ro path-tear-sent? yang:counter64 479 | | | +--ro path-tear-received? yang:counter64 480 | | | +--ro resv-sent? yang:counter64 481 | | | +--ro resv-received? yang:counter64 482 | | | +--ro resv-confirm-sent? yang:counter64 483 | | | +--ro resv-confirm-received? yang:counter64 484 | | | +--ro resv-err-sent? yang:counter64 485 | | | +--ro resv-err-received? yang:counter64 486 | | | +--ro resv-tear-sent? yang:counter64 487 | | | +--ro resv-tear-received? yang:counter64 488 | | | +--ro summary-refresh-sent? yang:counter64 489 | | | +--ro summary-refresh-received? yang:counter64 490 | | | +--ro unknown-messages-received? yang:counter64 491 | | +--ro packets 492 | | | +--ro sent? yang:counter64 493 | | | +--ro received? yang:counter64 494 | | +--ro errors 495 | | +--ro authenticate? yang:counter64 496 | | +--ro checksum? yang:counter64 497 | | +--ro packet-len? yang:counter64 498 | +--rw interface* [interface] 499 | +--rw interface if:interface-ref 500 | +--rw config 501 | +--ro state 502 | +--rw refresh-reduction 503 | | +--rw config 504 | | | +--rw enabled? boolean 505 | | +--ro state 506 | | +--ro enabled? boolean 507 | +--rw hellos 508 | | +--rw config 509 | | | +--rw enabled? boolean 510 | | +--ro state 511 | | +--ro enabled? boolean 512 | +--rw authentication 513 | | +--rw config 514 | | | +--rw enabled? boolean 515 | | | +--rw authentication-key? string 516 | | | +--rw crypto-algorithm identityref 517 | | +--ro state 518 | | +--ro enabled? boolean 519 | | +--ro authentication-key? string 520 | | +--ro crypto-algorithm identityref 521 | +--rw statistics 522 | +--ro state 523 | +--ro messages 524 | | +--ro ack-sent? yang:counter64 525 | | +--ro ack-received? yang:counter64 526 | | +--ro bundle-sent? yang:counter64 527 | | +--ro bundle-received? yang:counter64 528 | | +--ro hello-sent? yang:counter64 529 | | +--ro hello-received? yang:counter64 530 | | +--ro integrity-challenge-sent? yang:counter64 531 | | +--ro integrity-challenge-received? yang:counter64 532 | | +--ro integrity-response-sent? yang:counter64 533 | | +--ro integrity-response-received? yang:counter64 534 | | +--ro notify-sent? yang:counter64 535 | | +--ro notify-received? yang:counter64 536 | | +--ro path-sent? yang:counter64 537 | | +--ro path-received? yang:counter64 538 | | +--ro path-err-sent? yang:counter64 539 | | +--ro path-err-received? yang:counter64 540 | | +--ro path-tear-sent? yang:counter64 541 | | +--ro path-tear-received? yang:counter64 542 | | +--ro resv-sent? yang:counter64 543 | | +--ro resv-received? yang:counter64 544 | | +--ro resv-confirm-sent? yang:counter64 545 | | +--ro resv-confirm-received? yang:counter64 546 | | +--ro resv-err-sent? yang:counter64 547 | | +--ro resv-err-received? yang:counter64 548 | | +--ro resv-tear-sent? yang:counter64 549 | | +--ro resv-tear-received? yang:counter64 550 | | +--ro summary-refresh-sent? yang:counter64 551 | | +--ro summary-refresh-received? yang:counter64 552 | | +--ro unknown-messages-received? yang:counter64 553 | +--ro packets 554 | | +--ro sent? yang:counter64 555 | | +--ro received? yang:counter64 556 | +--ro errors 557 | +--ro authenticate? yang:counter64 558 | +--ro checksum? yang:counter64 559 | +--ro packet-len? yang:counter64 560 +--rw neighbors 561 +--rw neighbor* [address] 562 +--rw address -> ../config/address 563 +--rw config 564 | +--rw address? inet:ip-address 565 +--ro state 566 +--ro address? inet:ip-address 567 +--ro epoch? uint32 568 +--ro expiry-time? uint32 569 +--ro graceful-restart 570 | +--ro enabled? boolean 571 | +--ro local-restart-time? uint32 572 | +--ro local-recovery-time? uint32 573 | +--ro neighbor-restart-time? uint32 574 | +--ro neighbor-recovery-time? uint32 575 | +--ro helper-mode 576 | +--ro enabled? boolean 577 | +--ro max-helper-restart-time? uint32 578 | +--ro max-helper-recovery-time? uint32 579 | +--ro neighbor-restart-time-remaining? uint32 580 | +--ro neighbor-recovery-time-remaining? uint32 581 +--ro hello-status? enumeration 582 +--ro interface? if:interface-ref 583 +--ro neighbor-state? enumeration 584 +--ro refresh-reduction-capable? boolean 585 +--ro restart-count? yang:counter32 586 +--ro restart-time? yang:date-and-time 588 Figure 3: RSVP model tree diagram 590 3.1.6. YANG Module 592 file "ietf-rsvp@2017-03-10.yang" 593 module ietf-rsvp { 595 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp"; 597 /* Replace with IANA when assigned */ 598 prefix "rsvp"; 600 import ietf-interfaces { 601 prefix "if"; 602 } 604 import ietf-inet-types { 605 prefix inet; 606 } 608 import ietf-yang-types { 609 prefix "yang"; 610 } 612 import ietf-routing { 613 prefix "rt"; 614 } 616 import ietf-key-chain { 617 prefix "key-chain"; 618 } 620 organization 621 "IETF Traffic Engineering Architecture and Signaling (TEAS) 622 Working Group"; 624 contact 625 "WG Web: 626 WG List: 628 WG Chair: Lou Berger 629 631 WG Chair: Vishnu Pavan Beeram 632 634 Editor: Vishnu Pavan Beeram 635 637 Editor: Tarek Saad 638 640 Editor: Rakesh Gandhi 641 643 Editor: Himanshu Shah 644 646 Editor: Xufeng Liu 647 649 Editor: Xia Chen 650 652 Editor: Raqib Jones 653 655 Editor: Bin Wen 656 "; 658 description 659 "This module contains the RSVP YANG data model."; 661 revision "2017-03-10" { 662 description "Latest revision of RSVP yang module."; 663 reference "RFC2205"; 664 } 666 identity rsvp { 667 base "rt:routing-protocol"; 668 description "RSVP protocol"; 669 } 671 identity rsvp-session-type { 672 description "Base RSVP session type"; 673 } 675 identity rsvp-session-ipv4 { 676 base rsvp-session-type; 677 description "RSVP IPv4 session type"; 678 } 680 identity rsvp-session-ipv6 { 681 base rsvp-session-type; 682 description "RSVP IPv4 session type"; 683 } 685 identity reservation-style { 686 description "Base identity for reservation style"; 687 } 689 identity reservation-wildcard-filter { 690 base reservation-style; 691 description "Wildcard-Filter (WF) Style"; 692 reference "RFC2205"; 693 } 695 identity reservation-fixed-filter { 696 base reservation-style; 697 description "Fixed-Filter (FF) Style"; 698 reference "RFC2205"; 699 } 701 identity reservation-shared-explicit { 702 base reservation-style; 703 description "Shared Explicit (SE) Style"; 704 reference "RFC2205"; 705 } 707 grouping graceful-restart_config { 708 description 709 "Base configuration parameters relating to RSVP 710 Graceful-Restart"; 711 leaf enabled { 712 type boolean; 713 description 714 "'true' if RSVP Graceful Restart is enabled. 715 'false' if RSVP Graceful Restart is disabled."; 716 } 717 } 719 grouping graceful-restart { 720 description 721 "RSVP graceful restart parameters grouping"; 722 container graceful-restart { 723 description 724 "RSVP graceful restart parameters container"; 725 container config { 726 description 727 "Configuration parameters for graceful restart 728 properties"; 729 uses graceful-restart_config; 730 } 731 container state { 732 config false; 733 description 734 "State parameters for graceful restart 735 properties"; 736 uses graceful-restart_config; 737 } 738 } 739 } 741 grouping refresh-reduction_config { 742 description 743 "Configuration parameters relating to RSVP 744 refresh reduction"; 746 leaf enabled { 747 type boolean; 748 description 749 "'true' if RSVP Refresh Reduction is enabled. 750 'false' if RSVP Refresh Reduction is disabled."; 751 } 752 } 754 grouping refresh-reduction { 755 description 756 "Top level grouping for RSVP refresh reduction 757 parameters"; 758 container refresh-reduction { 759 description 760 "Top level container for RSVP refresh reduction 761 parameters"; 762 container config { 763 description 764 "Configuration parameters relating to 765 RSVP refresh reduction parameters"; 766 uses refresh-reduction_config; 767 } 768 container state { 769 config false; 770 description 771 "State information associated with RSVP 772 refresh reduction parameters"; 773 uses refresh-reduction_config; 774 } 775 } 776 } 778 grouping authentication_config { 779 description 780 "Configuration parameters relating to RSVP 781 authentication"; 782 leaf enabled { 783 type boolean; 784 description 785 "'true' if RSVP Authentication is enabled. 786 'false' if RSVP Authentication is disabled."; 787 } 788 leaf authentication-key { 789 type string; 790 description 791 "An authentication key string"; 792 reference 793 "RFC 2747: RSVP Cryptographic Authentication"; 794 } 795 leaf crypto-algorithm { 796 type identityref { 797 base key-chain:crypto-algorithm; 798 } 799 mandatory true; 800 description 801 "Cryptographic algorithm associated with key."; 802 } 803 } 805 grouping authentication { 806 description 807 "Top level grouping for RSVP authentication parameters"; 808 container authentication { 809 description 810 "Top level container for RSVP authentication 811 parameters"; 812 container config { 813 description 814 "Configuration parameters relating to 815 RSVP authentication parameters"; 817 uses authentication_config; 818 } 819 container state { 820 config false; 821 description 822 "State information associated with RSVP 823 authentication parameters"; 824 uses authentication_config; 825 } 826 } 827 } 829 grouping hellos_config { 830 description 831 "Configuration parameters relating to RSVP 832 hellos"; 833 leaf enabled { 834 type boolean; 835 description 836 "'true' if RSVP Hello is enabled. 837 'false' if RSVP Hello is disabled."; 838 } 839 } 841 grouping hellos { 842 description 843 "Top level grouping for RSVP hellos parameters"; 844 container hellos { 845 description 846 "Top level container for RSVP hello parameters"; 847 container config { 848 description 849 "Configuration parameters relating to 850 RSVP hello parameters"; 851 uses hellos_config; 852 } 853 container state { 854 config false; 855 description 856 "State information associated with RSVP 857 hello parameters"; 858 uses hellos_config; 859 } 860 } 861 } 863 grouping signaling-parameters_config { 864 description 865 "Configuration parameters relating to RSVP 866 signaling"; 867 } 869 grouping signaling-parameters { 870 description 871 "Top level grouping for RSVP signaling parameters"; 872 container config { 873 description 874 "Configuration parameters relating to 875 RSVP signaling parameters"; 876 uses signaling-parameters_config; 877 } 878 container state { 879 config false; 880 description 881 "State information associated with RSVP 882 signaling parameters"; 883 uses signaling-parameters_config; 884 } 885 } 887 grouping session-attributes_state { 888 description 889 "Top level grouping for RSVP session properties"; 890 leaf local-index { 891 type uint64; 892 description 893 "The index used to identify the RSVP session 894 on the local network element. This index is 895 generated by the device and is unique only 896 to the local network element."; 897 } 898 leaf destination-port { 899 type inet:port-number; 900 description "RSVP destination port"; 901 reference "RFC2205"; 902 } 903 leaf source { 904 type inet:ip-address; 905 description "RSVP source address"; 906 reference "RFC2205"; 907 } 908 leaf destination { 909 type inet:ip-address; 910 description "RSVP destination address"; 911 reference "RFC2205"; 912 } 913 leaf session-name { 914 type string; 915 description 916 "The signaled name of this RSVP session."; 917 } 918 leaf session-state { 919 type enumeration { 920 enum "up" { 921 description 922 "RSVP session is up"; 923 } 924 enum "down" { 925 description 926 "RSVP session is down"; 927 } 928 } 929 description 930 "Enumeration of RSVP session states"; 931 } 932 leaf session-type { 933 type identityref { 934 base rsvp-session-type; 935 } 936 description "RSVP session type"; 937 } 938 container psbs { 939 description "Path State Block container"; 940 list psb { 941 description "List of path state blocks"; 942 leaf source-port { 943 type inet:port-number; 944 description "RSVP source port"; 945 reference "RFC2205"; 946 } 947 leaf expires-in { 948 type uint32; 949 units seconds; 950 description "Time to reservation expiry (in seconds)"; 951 } 952 } 953 } 954 container rsbs { 955 description "Reservation State Block container"; 956 list rsb { 957 description "List of reservation state blocks"; 958 leaf source-port { 959 type inet:port-number; 960 description "RSVP source port"; 961 reference "RFC2205"; 962 } 963 leaf reservation-style { 964 type identityref { 965 base reservation-style; 966 } 967 description "RSVP reservation style"; 968 } 969 leaf expires-in { 970 type uint32; 971 units seconds; 972 description "Time to reservation expiry (in seconds)"; 973 } 974 } 975 } 976 } 978 grouping neighbor-attributes { 979 description 980 "Top level grouping for RSVP neighbor properties"; 981 container config { 982 description 983 "Configuration for neighbor properties"; 984 leaf address { 985 type inet:ip-address; 986 description 987 "Address of RSVP neighbor"; 988 } 989 } 990 container state { 991 config false; 992 description 993 "State information associated with RSVP 994 neighbor properties"; 995 uses neighbor-derived_state; 996 } 997 } 999 grouping packets_state { 1000 description 1001 "Packet statistics grouping"; 1002 container packets { 1003 description 1004 "Packet statistics container"; 1005 leaf sent { 1006 type yang:counter64; 1007 description 1008 "Packet sent count"; 1010 } 1012 leaf received { 1013 type yang:counter64; 1014 description 1015 "Packet received count"; 1016 } 1017 } 1018 } 1020 grouping protocol_state { 1021 description 1022 "RSVP protocol statistics grouping"; 1023 container messages { 1024 description 1025 "RSVP protocol statistics container"; 1026 leaf ack-sent { 1027 type yang:counter64; 1028 description 1029 "Hello sent count"; 1030 } 1032 leaf ack-received { 1033 type yang:counter64; 1034 description 1035 "Hello received count"; 1036 } 1038 leaf bundle-sent { 1039 type yang:counter64; 1040 description 1041 "Bundle sent count"; 1042 } 1044 leaf bundle-received { 1045 type yang:counter64; 1046 description 1047 "Bundle received count"; 1048 } 1050 leaf hello-sent { 1051 type yang:counter64; 1052 description 1053 "Hello sent count"; 1054 } 1056 leaf hello-received { 1057 type yang:counter64; 1058 description 1059 "Hello received count"; 1060 } 1062 leaf integrity-challenge-sent { 1063 type yang:counter64; 1064 description 1065 "Integrity Challenge sent count"; 1066 } 1068 leaf integrity-challenge-received { 1069 type yang:counter64; 1070 description 1071 "Integrity Challenge received count"; 1072 } 1074 leaf integrity-response-sent { 1075 type yang:counter64; 1076 description 1077 "Integrity Response sent count"; 1078 } 1080 leaf integrity-response-received { 1081 type yang:counter64; 1082 description 1083 "Integrity Response received count"; 1084 } 1086 leaf notify-sent { 1087 type yang:counter64; 1088 description 1089 "Notify sent count"; 1090 } 1092 leaf notify-received { 1093 type yang:counter64; 1094 description 1095 "Notify received count"; 1096 } 1098 leaf path-sent { 1099 type yang:counter64; 1100 description 1101 "Path sent count"; 1102 } 1104 leaf path-received { 1105 type yang:counter64; 1106 description 1107 "Path received count"; 1108 } 1110 leaf path-err-sent { 1111 type yang:counter64; 1112 description 1113 "Path error sent count"; 1114 } 1116 leaf path-err-received { 1117 type yang:counter64; 1118 description 1119 "Path error received count"; 1120 } 1122 leaf path-tear-sent { 1123 type yang:counter64; 1124 description 1125 "Path tear sent count"; 1126 } 1128 leaf path-tear-received { 1129 type yang:counter64; 1130 description 1131 "Path tear received count"; 1132 } 1134 leaf resv-sent { 1135 type yang:counter64; 1136 description 1137 "Resv sent count"; 1138 } 1140 leaf resv-received { 1141 type yang:counter64; 1142 description 1143 "Resv received count"; 1144 } 1146 leaf resv-confirm-sent { 1147 type yang:counter64; 1148 description 1149 "Confirm sent count"; 1150 } 1152 leaf resv-confirm-received { 1153 type yang:counter64; 1154 description 1155 "Confirm received count"; 1156 } 1158 leaf resv-err-sent { 1159 type yang:counter64; 1160 description 1161 "Resv error sent count"; 1162 } 1164 leaf resv-err-received { 1165 type yang:counter64; 1166 description 1167 "Resv error received count"; 1168 } 1170 leaf resv-tear-sent { 1171 type yang:counter64; 1172 description 1173 "Resv tear sent count"; 1174 } 1176 leaf resv-tear-received { 1177 type yang:counter64; 1178 description 1179 "Resv tear received count"; 1180 } 1182 leaf summary-refresh-sent { 1183 type yang:counter64; 1184 description 1185 "Summary refresh sent count"; 1186 } 1188 leaf summary-refresh-received { 1189 type yang:counter64; 1190 description 1191 "Summary refresh received count"; 1192 } 1194 leaf unknown-messages-received { 1195 type yang:counter64; 1196 description 1197 "Unknown packet received count"; 1198 } 1199 } 1200 } 1201 grouping errors_state { 1202 description 1203 "Error statistics state grouping"; 1204 container errors { 1205 description 1206 "Error statistics state container"; 1207 leaf authenticate { 1208 type yang:counter64; 1209 description 1210 "The total number of packets received with an 1211 authentication failure."; 1212 } 1214 leaf checksum { 1215 type yang:counter64; 1216 description 1217 "The total number of packets received with an invalid 1218 checksum value."; 1219 } 1221 leaf packet-len { 1222 type yang:counter64; 1223 description 1224 "The total number of packets received with an invalid 1225 packet length."; 1226 } 1227 } 1228 } 1230 grouping statistics_state { 1231 description "RSVP statistic attributes."; 1232 container statistics { 1233 description 1234 "statistics state container"; 1235 container state { 1236 config false; 1237 description 1238 "State information associated with RSVP 1239 hello parameters"; 1240 uses protocol_state; 1241 uses packets_state; 1242 uses errors_state; 1243 } 1244 } 1245 } 1247 grouping neighbor-derived_state { 1248 description 1249 "Derived state at neighbor level."; 1251 leaf address { 1252 type inet:ip-address; 1253 description 1254 "Address of RSVP neighbor"; 1255 } 1257 leaf epoch { 1258 type uint32; 1259 description 1260 "Neighbor epoch."; 1261 } 1263 leaf expiry-time { 1264 type uint32; 1265 units seconds; 1266 description 1267 "Neighbor expiry time after which the neighbor state 1268 is purged if no states associated with it"; 1269 } 1271 container graceful-restart { 1272 description 1273 "Graceful restart information."; 1275 leaf enabled { 1276 type boolean; 1277 description 1278 "'true' if graceful restart is enabled for the 1279 neighbor."; 1280 } 1282 leaf local-restart-time { 1283 type uint32; 1284 units seconds; 1285 description 1286 "Local node restart time"; 1287 } 1289 leaf local-recovery-time { 1290 type uint32; 1291 units seconds; 1292 description 1293 "Local node recover time"; 1294 } 1296 leaf neighbor-restart-time { 1297 type uint32; 1298 units seconds; 1299 description 1300 "Neighbor restart time"; 1301 } 1303 leaf neighbor-recovery-time { 1304 type uint32; 1305 units seconds; 1306 description 1307 "Neighbor recover time"; 1308 } 1310 container helper-mode { 1311 description 1312 "Helper mode information "; 1314 leaf enabled { 1315 type boolean; 1316 description 1317 "'true' if helper mode is enabled."; 1318 } 1320 leaf max-helper-restart-time { 1321 type uint32; 1322 units seconds; 1323 description 1324 "The time the router or switch waits after it 1325 discovers that a neighboring router has gone down 1326 before it declares the neighbor down"; 1327 } 1329 leaf max-helper-recovery-time { 1330 type uint32; 1331 units seconds; 1332 description 1333 "The amount of time the router retains the state of its 1334 RSVP neighbors while they undergo a graceful restart"; 1335 } 1337 leaf neighbor-restart-time-remaining { 1338 type uint32; 1339 units seconds; 1340 description 1341 "Number of seconds remaining for neighbor to send 1342 Hello message after restart."; 1343 } 1344 leaf neighbor-recovery-time-remaining { 1345 type uint32; 1346 units seconds; 1347 description 1348 "Number of seconds remaining for neighbor to 1349 refresh."; 1350 } 1351 } // helper-mode 1352 } // graceful-restart 1354 leaf hello-status { 1355 type enumeration { 1356 enum "enabled" { 1357 description 1358 "Enabled"; 1359 } 1360 enum "disabled" { 1361 description 1362 "Disabled"; 1363 } 1364 enum "restarting" { 1365 description 1366 "Restarting"; 1367 } 1368 } 1369 description 1370 "Hello status"; 1371 } 1373 leaf interface { 1374 type if:interface-ref; 1375 description 1376 "Interface where RSVP neighbor was detected"; 1377 } 1379 leaf neighbor-state { 1380 type enumeration { 1381 enum "up" { 1382 description 1383 "up"; 1384 } 1385 enum "down" { 1386 description 1387 "down"; 1388 } 1389 enum "hello-disable" { 1390 description 1391 "hello-disable"; 1393 } 1394 enum "restarting" { 1395 description 1396 "restarting"; 1397 } 1398 } 1399 description 1400 "Neighbor state"; 1401 } 1403 leaf refresh-reduction-capable { 1404 type boolean; 1405 description 1406 "enables all RSVP refresh reduction message 1407 bundling, RSVP message ID, reliable message delivery 1408 and summary refresh"; 1409 reference 1410 "RFC 2961 RSVP Refresh Overhead Reduction 1411 Extensions"; 1412 } 1414 leaf restart-count { 1415 type yang:counter32; 1416 description 1417 "Number of times this neighbor restart"; 1418 } 1420 leaf restart-time { 1421 type yang:date-and-time; 1422 description 1423 "Last restart time of the neighbor"; 1424 } 1425 } 1427 grouping global-attributes { 1428 description 1429 "Top level grouping for RSVP global properties"; 1430 container sessions { 1431 description 1432 "RSVP sessions container"; 1433 list session { 1434 key "local-index"; 1435 config false; 1436 description 1437 "List of RSVP sessions"; 1439 leaf local-index { 1440 type leafref { 1441 path "../state/local-index"; 1442 } 1443 description 1444 "Reference to the local index for the RSVP 1445 session"; 1446 } 1447 container state { 1448 config false; 1449 description 1450 "State information associated with RSVP 1451 session parameters"; 1452 uses session-attributes_state; 1453 } 1454 } 1455 } 1456 uses statistics_state; 1457 } 1459 grouping intf-attributes { 1460 description 1461 "Top level grouping for RSVP interface properties"; 1462 uses signaling-parameters; 1463 uses refresh-reduction; 1464 uses hellos; 1465 uses authentication; 1466 uses statistics_state; 1467 } 1469 augment "/rt:routing/rt:control-plane-protocols/" 1470 + "rt:control-plane-protocol" { 1471 when "rt:type = 'rsvp:rsvp'" { 1472 description 1473 "This augment is only valid when routing protocol 1474 instance type is RSVP."; 1475 } 1476 description 1477 "RSVP protocol augmentation"; 1478 container rsvp { 1479 presence "Enable RSVP feature"; 1480 description "RSVP feature container"; 1481 container globals { 1482 description "RSVP global properties."; 1483 uses global-attributes; 1484 uses graceful-restart; 1485 } 1487 container interfaces { 1488 description 1489 "RSVP interfaces container"; 1490 uses intf-attributes; 1492 list interface { 1493 key "interface"; 1494 description 1495 "RSVP interfaces."; 1496 leaf interface { 1497 type if:interface-ref; 1498 description 1499 "RSVP interface."; 1500 } 1501 uses intf-attributes; 1502 } 1503 } 1505 container neighbors { 1506 description 1507 "RSVP neighbors container"; 1508 list neighbor { 1509 key "address"; 1510 description 1511 "List of RSVP neighbors"; 1512 leaf address { 1513 type leafref { 1514 path "../config/address"; 1515 } 1516 description 1517 "Address of RSVP neighbor"; 1518 } 1519 uses neighbor-attributes; 1520 } 1521 } 1522 } 1523 } 1524 } 1525 1527 3.2. RSVP Extended YANG Model 1529 The RSVP extended YANG model covers optional or non-core RSVP 1530 feature(s). It also covers feature(s) that are not necessarily 1531 supported by all vendors, and hence, guarded with "if-feature" 1532 checks. 1534 3.2.1. Tree Diagram 1536 Figure 4 shows the YANG tree representation for configuration and 1537 state data that is augmenting the RSVP basic module: 1539 module: ietf-rsvp 1540 augment 1541 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: 1542 +--rw rsvp! 1543 +--rw globals 1544 | +--rw sessions 1545 | | +--ro session* [local-index] 1546 | | +--ro local-index -> ../state/local-index 1547 | | +--ro state 1548 | | +--ro local-index? uint64 1549 | | +--ro destination-port? inet:port-number 1550 | | +--ro source? inet:ip-address 1551 | | +--ro destination? inet:ip-address 1552 | | +--ro session-name? string 1553 | | +--ro session-state? enumeration 1554 | | +--ro session-type? identityref 1555 | | +--ro psbs 1556 | | | +--ro psb* 1557 | | | +--ro source-port? inet:port-number 1558 | | | +--ro expires-in? uint32 1559 | | +--ro rsbs 1560 | | +--ro rsb* 1561 | | +--ro source-port? inet:port-number 1562 | | +--ro reservation-style? identityref 1563 | | +--ro expires-in? uint32 1564 | +--rw statistics 1565 | | +--ro state 1566 | | +--ro messages 1567 | | | +--ro ack-sent? yang:counter64 1568 | | | +--ro ack-received? yang:counter64 1569 | | | +--ro bundle-sent? yang:counter64 1570 | | | +--ro bundle-received? yang:counter64 1571 | | | +--ro hello-sent? yang:counter64 1572 | | | +--ro hello-received? yang:counter64 1573 | | | +--ro integrity-challenge-sent? yang:counter64 1574 | | | +--ro integrity-challenge-received? yang:counter64 1575 | | | +--ro integrity-response-sent? yang:counter64 1576 | | | +--ro integrity-response-received? yang:counter64 1577 | | | +--ro notify-sent? yang:counter64 1578 | | | +--ro notify-received? yang:counter64 1579 | | | +--ro path-sent? yang:counter64 1580 | | | +--ro path-received? yang:counter64 1581 | | | +--ro path-err-sent? yang:counter64 1582 | | | +--ro path-err-received? yang:counter64 1583 | | | +--ro path-tear-sent? yang:counter64 1584 | | | +--ro path-tear-received? yang:counter64 1585 | | | +--ro resv-sent? yang:counter64 1586 | | | +--ro resv-received? yang:counter64 1587 | | | +--ro resv-confirm-sent? yang:counter64 1588 | | | +--ro resv-confirm-received? yang:counter64 1589 | | | +--ro resv-err-sent? yang:counter64 1590 | | | +--ro resv-err-received? yang:counter64 1591 | | | +--ro resv-tear-sent? yang:counter64 1592 | | | +--ro resv-tear-received? yang:counter64 1593 | | | +--ro summary-refresh-sent? yang:counter64 1594 | | | +--ro summary-refresh-received? yang:counter64 1595 | | | +--ro unknown-messages-received? yang:counter64 1596 | | +--ro packets 1597 | | | +--ro sent? yang:counter64 1598 | | | +--ro received? yang:counter64 1599 | | | +--ro rsvp-ext:discontinuity-time? yang:date-and-time 1600 | | | +--ro rsvp-ext:out-dropped? yang:counter64 1601 | | | +--ro rsvp-ext:in-dropped? yang:counter64 1602 | | | +--ro rsvp-ext:out-error? yang:counter64 1603 | | | +--ro rsvp-ext:in-error? yang:counter64 1604 | | +--ro errors 1605 | | +--ro authenticate? yang:counter64 1606 | | +--ro checksum? yang:counter64 1607 | | +--ro packet-len? yang:counter64 1608 | +--rw graceful-restart 1609 | +--rw config 1610 | | +--rw enabled? boolean 1611 | | +--rw rsvp-ext:restart-time? uint32 1612 | | +--rw rsvp-ext:recovery-time? uint32 1613 | +--ro state 1614 | +--ro enabled? boolean 1615 | +--ro rsvp-ext:restart-time? uint32 1616 | +--ro rsvp-ext:recovery-time? uint32 1617 +--rw interfaces 1618 | +--rw config 1619 | | +--rw rsvp-ext:refresh-interval? uint32 1620 | | +--rw rsvp-ext:refresh-misses? uint32 1621 | | +--rw rsvp-ext:checksum? boolean 1622 | | +--rw rsvp-ext:patherr-state-removal? empty 1623 | +--ro state 1624 | | +--ro rsvp-ext:refresh-interval? uint32 1625 | | +--ro rsvp-ext:refresh-misses? uint32 1626 | | +--ro rsvp-ext:checksum? boolean 1627 | | +--ro rsvp-ext:patherr-state-removal? empty 1628 | +--rw refresh-reduction 1629 | | +--rw config 1630 | | | +--rw enabled? boolean 1631 | | | +--rw rsvp-ext:bundle-message-max-size? uint32 1632 | | | +--rw rsvp-ext:reliable-ack-hold-time? uint32 1633 | | | +--rw rsvp-ext:reliable-ack-max-size? uint32 1634 | | | +--rw rsvp-ext:reliable-retransmit-time? uint32 1635 | | | +--rw rsvp-ext:reliable-srefresh? empty 1636 | | | +--rw rsvp-ext:summary-max-size? uint32 1637 | | +--ro state 1638 | | +--ro enabled? boolean 1639 | | +--ro rsvp-ext:bundle-message-max-size? uint32 1640 | | +--ro rsvp-ext:reliable-ack-hold-time? uint32 1641 | | +--ro rsvp-ext:reliable-ack-max-size? uint32 1642 | | +--ro rsvp-ext:reliable-retransmit-time? uint32 1643 | | +--ro rsvp-ext:reliable-srefresh? empty 1644 | | +--ro rsvp-ext:summary-max-size? uint32 1645 | +--rw hellos 1646 | | +--rw config 1647 | | | +--rw enabled? boolean 1648 | | | +--rw rsvp-ext:interface-based? empty 1649 | | | +--rw rsvp-ext:hello-interval? uint32 1650 | | | +--rw rsvp-ext:hello-misses? uint32 1651 | | +--ro state 1652 | | +--ro enabled? boolean 1653 | | +--ro rsvp-ext:interface-based? empty 1654 | | +--ro rsvp-ext:hello-interval? uint32 1655 | | +--ro rsvp-ext:hello-misses? uint32 1656 | +--rw authentication 1657 | | +--rw config 1658 | | | +--rw enabled? boolean 1659 | | | +--rw authentication-key? string 1660 | | | +--rw crypto-algorithm identityref 1661 | | | +--rw rsvp-ext:lifetime? uint32 1662 | | | +--rw rsvp-ext:window-size? uint32 1663 | | | +--rw rsvp-ext:challenge? empty 1664 | | | +--rw rsvp-ext:retransmits? uint32 1665 | | | +--rw rsvp-ext:key-chain? key-chain:key-chain-ref 1666 | | +--ro state 1667 | | +--ro enabled? boolean 1668 | | +--ro authentication-key? string 1669 | | +--ro crypto-algorithm identityref 1670 | | +--ro rsvp-ext:lifetime? uint32 1671 | | +--ro rsvp-ext:window-size? uint32 1672 | | +--ro rsvp-ext:challenge? empty 1673 | | +--ro rsvp-ext:retransmits? uint32 1674 | | +--ro rsvp-ext:key-chain? key-chain:key-chain-ref 1675 | +--rw statistics 1676 | | +--ro state 1677 | | +--ro messages 1678 | | | +--ro ack-sent? yang:counter64 1679 | | | +--ro ack-received? yang:counter64 1680 | | | +--ro bundle-sent? yang:counter64 1681 | | | +--ro bundle-received? yang:counter64 1682 | | | +--ro hello-sent? yang:counter64 1683 | | | +--ro hello-received? yang:counter64 1684 | | | +--ro integrity-challenge-sent? yang:counter64 1685 | | | +--ro integrity-challenge-received? yang:counter64 1686 | | | +--ro integrity-response-sent? yang:counter64 1687 | | | +--ro integrity-response-received? yang:counter64 1688 | | | +--ro notify-sent? yang:counter64 1689 | | | +--ro notify-received? yang:counter64 1690 | | | +--ro path-sent? yang:counter64 1691 | | | +--ro path-received? yang:counter64 1692 | | | +--ro path-err-sent? yang:counter64 1693 | | | +--ro path-err-received? yang:counter64 1694 | | | +--ro path-tear-sent? yang:counter64 1695 | | | +--ro path-tear-received? yang:counter64 1696 | | | +--ro resv-sent? yang:counter64 1697 | | | +--ro resv-received? yang:counter64 1698 | | | +--ro resv-confirm-sent? yang:counter64 1699 | | | +--ro resv-confirm-received? yang:counter64 1700 | | | +--ro resv-err-sent? yang:counter64 1701 | | | +--ro resv-err-received? yang:counter64 1702 | | | +--ro resv-tear-sent? yang:counter64 1703 | | | +--ro resv-tear-received? yang:counter64 1704 | | | +--ro summary-refresh-sent? yang:counter64 1705 | | | +--ro summary-refresh-received? yang:counter64 1706 | | | +--ro unknown-messages-received? yang:counter64 1707 | | +--ro packets 1708 | | | +--ro sent? yang:counter64 1709 | | | +--ro received? yang:counter64 1710 | | +--ro errors 1711 | | +--ro authenticate? yang:counter64 1712 | | +--ro checksum? yang:counter64 1713 | | +--ro packet-len? yang:counter64 1714 | +--rw interface* [interface] 1715 | +--rw interface if:interface-ref 1716 | +--rw config 1717 | | +--rw rsvp-ext:refresh-interval? uint32 1718 | | +--rw rsvp-ext:refresh-misses? uint32 1719 | | +--rw rsvp-ext:checksum? boolean 1720 | | +--rw rsvp-ext:patherr-state-removal? empty 1721 | +--ro state 1722 | | +--ro rsvp-ext:refresh-interval? uint32 1723 | | +--ro rsvp-ext:refresh-misses? uint32 1724 | | +--ro rsvp-ext:checksum? boolean 1725 | | +--ro rsvp-ext:patherr-state-removal? empty 1726 | +--rw refresh-reduction 1727 | | +--rw config 1728 | | | +--rw enabled? boolean 1729 | | | +--rw rsvp-ext:bundle-message-max-size? uint32 1730 | | | +--rw rsvp-ext:reliable-ack-hold-time? uint32 1731 | | | +--rw rsvp-ext:reliable-ack-max-size? uint32 1732 | | | +--rw rsvp-ext:reliable-retransmit-time? uint32 1733 | | | +--rw rsvp-ext:reliable-srefresh? empty 1734 | | | +--rw rsvp-ext:summary-max-size? uint32 1735 | | +--ro state 1736 | | +--ro enabled? boolean 1737 | | +--ro rsvp-ext:bundle-message-max-size? uint32 1738 | | +--ro rsvp-ext:reliable-ack-hold-time? uint32 1739 | | +--ro rsvp-ext:reliable-ack-max-size? uint32 1740 | | +--ro rsvp-ext:reliable-retransmit-time? uint32 1741 | | +--ro rsvp-ext:reliable-srefresh? empty 1742 | | +--ro rsvp-ext:summary-max-size? uint32 1743 | +--rw hellos 1744 | | +--rw config 1745 | | | +--rw enabled? boolean 1746 | | | +--rw rsvp-ext:interface-based? empty 1747 | | | +--rw rsvp-ext:hello-interval? uint32 1748 | | | +--rw rsvp-ext:hello-misses? uint32 1749 | | +--ro state 1750 | | +--ro enabled? boolean 1751 | | +--ro rsvp-ext:interface-based? empty 1752 | | +--ro rsvp-ext:hello-interval? uint32 1753 | | +--ro rsvp-ext:hello-misses? uint32 1754 | +--rw authentication 1755 | | +--rw config 1756 | | | +--rw enabled? boolean 1757 | | | +--rw authentication-key? string 1758 | | | +--rw crypto-algorithm identityref 1759 | | | +--rw rsvp-ext:lifetime? uint32 1760 | | | +--rw rsvp-ext:window-size? uint32 1761 | | | +--rw rsvp-ext:challenge? empty 1762 | | | +--rw rsvp-ext:retransmits? uint32 1763 | | | +--rw rsvp-ext:key-chain? key-chain:key-chain-ref 1764 | | +--ro state 1765 | | +--ro enabled? boolean 1766 | | +--ro authentication-key? string 1767 | | +--ro crypto-algorithm identityref 1768 | | +--ro rsvp-ext:lifetime? uint32 1769 | | +--ro rsvp-ext:window-size? uint32 1770 | | +--ro rsvp-ext:challenge? empty 1771 | | +--ro rsvp-ext:retransmits? uint32 1772 | | +--ro rsvp-ext:key-chain? key-chain:key-chain-ref 1773 | +--rw statistics 1774 | +--ro state 1775 | +--ro messages 1776 | | +--ro ack-sent? yang:counter64 1777 | | +--ro ack-received? yang:counter64 1778 | | +--ro bundle-sent? yang:counter64 1779 | | +--ro bundle-received? yang:counter64 1780 | | +--ro hello-sent? yang:counter64 1781 | | +--ro hello-received? yang:counter64 1782 | | +--ro integrity-challenge-sent? yang:counter64 1783 | | +--ro integrity-challenge-received? yang:counter64 1784 | | +--ro integrity-response-sent? yang:counter64 1785 | | +--ro integrity-response-received? yang:counter64 1786 | | +--ro notify-sent? yang:counter64 1787 | | +--ro notify-received? yang:counter64 1788 | | +--ro path-sent? yang:counter64 1789 | | +--ro path-received? yang:counter64 1790 | | +--ro path-err-sent? yang:counter64 1791 | | +--ro path-err-received? yang:counter64 1792 | | +--ro path-tear-sent? yang:counter64 1793 | | +--ro path-tear-received? yang:counter64 1794 | | +--ro resv-sent? yang:counter64 1795 | | +--ro resv-received? yang:counter64 1796 | | +--ro resv-confirm-sent? yang:counter64 1797 | | +--ro resv-confirm-received? yang:counter64 1798 | | +--ro resv-err-sent? yang:counter64 1799 | | +--ro resv-err-received? yang:counter64 1800 | | +--ro resv-tear-sent? yang:counter64 1801 | | +--ro resv-tear-received? yang:counter64 1802 | | +--ro summary-refresh-sent? yang:counter64 1803 | | +--ro summary-refresh-received? yang:counter64 1804 | | +--ro unknown-messages-received? yang:counter64 1805 | +--ro packets 1806 | | +--ro sent? yang:counter64 1807 | | +--ro received? yang:counter64 1808 | +--ro errors 1809 | +--ro authenticate? yang:counter64 1810 | +--ro checksum? yang:counter64 1811 | +--ro packet-len? yang:counter64 1812 +--rw neighbors 1813 +--rw neighbor* [address] 1814 +--rw address -> ../config/address 1815 +--rw config 1816 | +--rw address? inet:ip-address 1817 +--ro state 1818 +--ro address? inet:ip-address 1819 +--ro epoch? uint32 1820 +--ro expiry-time? uint32 1821 +--ro graceful-restart 1822 | +--ro enabled? boolean 1823 | +--ro local-restart-time? uint32 1824 | +--ro local-recovery-time? uint32 1825 | +--ro neighbor-restart-time? uint32 1826 | +--ro neighbor-recovery-time? uint32 1827 | +--ro helper-mode 1828 | +--ro enabled? boolean 1829 | +--ro max-helper-restart-time? uint32 1830 | +--ro max-helper-recovery-time? uint32 1831 | +--ro neighbor-restart-time-remaining? uint32 1832 | +--ro neighbor-recovery-time-remaining? uint32 1833 +--ro hello-status? enumeration 1834 +--ro interface? if:interface-ref 1835 +--ro neighbor-state? enumeration 1836 +--ro refresh-reduction-capable? boolean 1837 +--ro restart-count? yang:counter32 1838 +--ro restart-time? yang:date-and-time 1840 Figure 4: RSVP extended model tree diagram 1842 3.2.2. YANG Module 1844 Figure 5 shows the RSVP extended YANG module: 1846 file "ietf-rsvp-extended@2017-03-10.yang" 1847 module ietf-rsvp-extended { 1849 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-extended"; 1851 prefix "rsvp-ext"; 1853 import ietf-rsvp { 1854 prefix "rsvp"; 1855 } 1857 import ietf-routing { 1858 prefix "rt"; 1859 } 1861 import ietf-yang-types { 1862 prefix "yang"; 1863 } 1865 import ietf-key-chain { 1866 prefix "key-chain"; 1867 } 1869 organization 1870 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1871 Working Group"; 1873 contact 1874 "WG Web: 1876 WG List: 1878 WG Chair: Lou Berger 1879 1881 WG Chair: Vishnu Pavan Beeram 1882 1884 Editor: Vishnu Pavan Beeram 1885 1887 Editor: Tarek Saad 1888 1890 Editor: Rakesh Gandhi 1891 1893 Editor: Himanshu Shah 1894 1896 Editor: Xufeng Liu 1897 1899 Editor: Xia Chen 1900 1902 Editor: Raqib Jones 1903 1905 Editor: Bin Wen 1906 "; 1908 description 1909 "This module contains the Extended RSVP YANG data model."; 1911 revision "2017-03-10" { 1912 description "Latest revision of RSVP extended yang module."; 1913 reference "RFC2205"; 1914 } 1916 /* RSVP features */ 1917 feature authentication { 1918 description 1919 "Indicates support for RSVP authentication"; 1920 } 1922 feature error-statistics { 1923 description 1924 "Indicates support for error statistics"; 1925 } 1927 feature global-statistics { 1928 description 1929 "Indicates support for global statistics"; 1930 } 1932 feature graceful-restart { 1933 description 1934 "Indicates support for RSVP graceful restart"; 1935 } 1937 feature hellos { 1938 description 1939 "Indicates support for RSVP hellos (RFC3209)."; 1940 } 1942 feature notify { 1943 description 1944 "Indicates support for RSVP notify message (RFC3473)."; 1945 } 1947 feature refresh-reduction { 1948 description 1949 "Indicates support for RSVP refresh reduction 1950 (RFC2961)."; 1951 } 1953 feature refresh-reduction-extended { 1954 description 1955 "Indicates support for RSVP refresh reduction 1956 (RFC2961)."; 1957 } 1959 feature per-interface-statistics { 1960 description 1961 "Indicates support for per interface statistics"; 1962 } 1964 grouping graceful-restart-extended_config { 1965 description 1966 "Configuration parameters relating to RSVP 1967 Graceful-Restart"; 1968 leaf restart-time { 1969 type uint32; 1970 units seconds; 1971 description 1972 "Graceful restart time (seconds)."; 1973 reference 1974 "RFC 5495: Description of the Resource 1975 Reservation Protocol - Traffic-Engineered 1976 (RSVP-TE) Graceful Restart Procedures"; 1977 } 1978 leaf recovery-time { 1979 type uint32; 1980 units seconds; 1981 description 1982 "RSVP state recovery time"; 1983 } 1984 } 1986 grouping authentication-extended_config { 1987 description 1988 "Configuration parameters relating to RSVP 1989 authentication"; 1990 leaf lifetime { 1991 type uint32 { 1992 range "30..86400"; 1993 } 1994 units seconds; 1995 description 1996 "Life time for each security association"; 1997 reference 1998 "RFC 2747: RSVP Cryptographic 1999 Authentication"; 2000 } 2001 leaf window-size { 2002 type uint32 { 2003 range "1..64"; 2004 } 2005 description 2006 "Window-size to limit number of out-of-order 2007 messages."; 2008 reference 2009 "RFC 2747: RSVP Cryptographic 2010 Authentication"; 2011 } 2012 leaf challenge { 2013 type empty; 2014 description 2015 "Enable challenge messages."; 2016 reference 2017 "RFC 2747: RSVP Cryptographic 2018 Authentication"; 2019 } 2020 leaf retransmits { 2021 type uint32 { 2022 range "1..10000"; 2023 } 2024 description 2025 "Number of retransmits when messages are 2026 dropped."; 2027 reference 2028 "RFC 2747: RSVP Cryptographic 2029 Authentication"; 2030 } 2031 leaf key-chain { 2032 type key-chain:key-chain-ref; 2033 description 2034 "Key chain name to authenticate RSVP 2035 signaling messages."; 2036 reference 2037 "RFC 2747: RSVP Cryptographic 2038 Authentication"; 2039 } 2040 } 2042 grouping hellos-extended_config { 2043 description 2044 "Configuration parameters relating to RSVP 2045 hellos"; 2046 leaf interface-based { 2047 type empty; 2048 description 2049 "Enable interface-based Hello adjacency if present."; 2050 } 2051 leaf hello-interval { 2052 type uint32; 2053 units milliseconds; 2054 description 2055 "Configure interval between successive Hello 2056 messages in milliseconds."; 2057 reference 2058 "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels. 2059 RFC 5495: Description of the Resource 2060 Reservation Protocol - Traffic-Engineered 2061 (RSVP-TE) Graceful Restart Procedures"; 2063 } 2064 leaf hello-misses { 2065 type uint32 { 2066 range "1..10"; 2067 } 2068 description 2069 "Configure max number of consecutive missed 2070 Hello messages."; 2071 reference 2072 "RFC 3209: RSVP-TE: Extensions to RSVP for 2073 LSP Tunnels RFC 5495: Description of the 2074 Resource Reservation Protocol - Traffic- 2075 Engineered (RSVP-TE) Graceful Restart 2076 Procedures"; 2077 } 2078 } 2080 grouping signaling-parameters-extended_config { 2081 description 2082 "Configuration parameters relating to RSVP 2083 signaling"; 2084 leaf refresh-interval { 2085 type uint32; 2086 description 2087 "Set interval between successive refreshes"; 2088 } 2089 leaf refresh-misses { 2090 type uint32; 2091 description 2092 "Set max number of consecutive missed 2093 messages for state expiry"; 2094 } 2095 leaf checksum { 2096 type boolean; 2097 description 2098 "Enable RSVP message checksum computation"; 2099 } 2100 leaf patherr-state-removal { 2101 type empty; 2102 description 2103 "State-Removal flag in Path Error message 2104 if present."; 2105 } 2106 } 2108 grouping refresh-reduction-extended_config { 2109 description 2110 "Configuration parameters relating to RSVP 2111 refresh reduction"; 2113 leaf bundle-message-max-size { 2114 type uint32 { 2115 range "512..65000"; 2116 } 2117 description 2118 "Configure maximum size (bytes) of a 2119 single RSVP Bundle message."; 2120 } 2121 leaf reliable-ack-hold-time { 2122 type uint32; 2123 units milliseconds; 2124 description 2125 "Configure hold time in milliseconds for 2126 sending RSVP ACK message(s)."; 2127 } 2128 leaf reliable-ack-max-size { 2129 type uint32; 2130 description 2131 "Configure max size of a single RSVP ACK 2132 message."; 2133 } 2134 leaf reliable-retransmit-time { 2135 type uint32; 2136 units milliseconds; 2137 description 2138 "Configure min delay in milliseconds to 2139 wait for an ACK before a retransmit."; 2140 } 2141 leaf reliable-srefresh { 2142 type empty; 2143 description 2144 "Configure use of reliable messaging for 2145 summary refresh if present."; 2146 } 2147 leaf summary-max-size { 2148 type uint32 { 2149 range "20..65000"; 2150 } 2151 description 2152 "Configure max size (bytes) of a single 2153 RSVP summary refresh message."; 2154 } 2155 } 2157 grouping packets-extended_state { 2158 description 2159 "Packet statistics."; 2160 leaf discontinuity-time { 2161 type yang:date-and-time; 2162 description 2163 "The time on the most recent occasion at which any one 2164 or more of the statistic counters suffered a 2165 discontinuity. If no such discontinuities have occurred 2166 since the last re-initialization of the local 2167 management subsystem, then this node contains the time 2168 the local management subsystem re-initialized itself."; 2169 } 2170 leaf out-dropped { 2171 type yang:counter64; 2172 description 2173 "Out packet drop count"; 2174 } 2176 leaf in-dropped { 2177 type yang:counter64; 2178 description 2179 "In packet drop count"; 2180 } 2182 leaf out-error { 2183 type yang:counter64; 2184 description 2185 "Out packet error count"; 2186 } 2188 leaf in-error { 2189 type yang:counter64; 2190 description 2191 "In packet rx error count"; 2192 } 2193 } 2195 grouping protocol-extended_state { 2196 description 2197 "RSVP protocol statistics."; 2198 } 2200 grouping errors-extended_state { 2201 description 2202 "Error statistics."; 2203 } 2205 grouping extended_state { 2206 description "RSVP statistic attributes."; 2207 uses packets-extended_state; 2208 uses protocol-extended_state; 2209 uses errors-extended_state; 2210 } 2212 /** 2213 * RSVP extensions augmentations 2214 */ 2216 /* RSVP globals graceful restart*/ 2218 augment "/rt:routing/rt:control-plane-protocols/" + 2219 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 2220 "rsvp:graceful-restart/rsvp:config" { 2221 description 2222 "RSVP globals configuration extensions"; 2223 uses graceful-restart-extended_config; 2224 } 2226 augment "/rt:routing/rt:control-plane-protocols/" + 2227 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 2228 "rsvp:graceful-restart/rsvp:state" { 2229 description 2230 "RSVP globals configuration extensions"; 2231 uses graceful-restart-extended_config; 2232 } 2234 /* RSVP statistics augmentation */ 2235 augment "/rt:routing/rt:control-plane-protocols/" + 2236 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 2237 "rsvp:statistics/rsvp:state/rsvp:packets" { 2238 description 2239 "RSVP packet stats extensions"; 2240 uses packets-extended_state; 2241 } 2242 augment "/rt:routing/rt:control-plane-protocols/" + 2243 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 2244 "rsvp:statistics/rsvp:state/rsvp:messages" { 2245 description 2246 "RSVP protocol message stats extensions"; 2247 uses protocol-extended_state; 2248 } 2249 augment "/rt:routing/rt:control-plane-protocols/" + 2250 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 2251 "rsvp:statistics/rsvp:state/rsvp:errors" { 2252 description 2253 "RSVP errors stats extensions"; 2254 uses errors-extended_state; 2256 } 2258 /** 2259 * RSVP all interfaces extensions 2260 */ 2262 /* RSVP interface signaling extensions */ 2263 augment "/rt:routing/rt:control-plane-protocols/" 2264 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2265 + "rsvp:config" { 2266 description 2267 "RSVP signaling all interfaces configuration extensions"; 2268 uses signaling-parameters-extended_config; 2269 } 2270 augment "/rt:routing/rt:control-plane-protocols/" 2271 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2272 + "rsvp:state" { 2273 description 2274 "RSVP signaling all interfaces state extensions"; 2275 uses signaling-parameters-extended_config; 2276 } 2278 /* RSVP refresh reduction extension */ 2279 augment "/rt:routing/rt:control-plane-protocols/" 2280 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2281 + "rsvp:refresh-reduction/rsvp:config" { 2282 description 2283 "RSVP refresh-reduction all interface configuration 2284 extensions"; 2285 uses refresh-reduction-extended_config; 2286 } 2287 augment "/rt:routing/rt:control-plane-protocols/" 2288 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2289 + "rsvp:refresh-reduction/rsvp:state" { 2290 description 2291 "RSVP refresh-reduction all interfaces state extensions"; 2292 uses refresh-reduction-extended_config; 2293 } 2295 /* RSVP hellos extension */ 2296 augment "/rt:routing/rt:control-plane-protocols/" 2297 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2298 + "rsvp:hellos/rsvp:config" { 2299 description 2300 "RSVP hello all interfaces configuration extensions"; 2301 uses hellos-extended_config; 2302 } 2303 augment "/rt:routing/rt:control-plane-protocols/" 2304 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2305 + "rsvp:hellos/rsvp:state" { 2306 description 2307 "RSVP hello all interfaces state extensions"; 2308 uses hellos-extended_config; 2309 } 2311 /* RSVP authentication extension */ 2312 augment "/rt:routing/rt:control-plane-protocols/" 2313 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2314 + "rsvp:authentication/rsvp:config" { 2315 description 2316 "RSVP authentication all interfaces configuration extensions"; 2317 uses authentication-extended_config; 2318 } 2319 augment "/rt:routing/rt:control-plane-protocols/" 2320 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2321 + "rsvp:authentication/rsvp:state" { 2322 description 2323 "RSVP authentication all interfaces state extensions"; 2324 uses authentication-extended_config; 2325 } 2327 /** 2328 * RSVP interface extensions 2329 */ 2331 /* RSVP interface signaling extensions */ 2332 augment "/rt:routing/rt:control-plane-protocols/" 2333 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2334 "rsvp:interface/rsvp:config" { 2335 description 2336 "RSVP signaling interface configuration extensions"; 2337 uses signaling-parameters-extended_config; 2338 } 2339 augment "/rt:routing/rt:control-plane-protocols/" 2340 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2341 "rsvp:interface/rsvp:state" { 2342 description 2343 "RSVP signaling interface state extensions"; 2344 uses signaling-parameters-extended_config; 2345 } 2347 /* RSVP refresh reduction extension */ 2348 augment "/rt:routing/rt:control-plane-protocols/" 2349 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2350 "rsvp:interface/rsvp:refresh-reduction/rsvp:config" { 2351 description 2352 "RSVP refresh-reduction interface configuration extensions"; 2353 uses refresh-reduction-extended_config; 2354 } 2355 augment "/rt:routing/rt:control-plane-protocols/" 2356 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2357 "rsvp:interface/rsvp:refresh-reduction/rsvp:state" { 2358 description 2359 "RSVP refresh-reduction interface state extensions"; 2360 uses refresh-reduction-extended_config; 2361 } 2363 /* RSVP hellos extension */ 2364 augment "/rt:routing/rt:control-plane-protocols/" 2365 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2366 "rsvp:interface/rsvp:hellos/rsvp:config" { 2367 description 2368 "RSVP hello interface configuration extensions"; 2369 uses hellos-extended_config; 2370 } 2371 augment "/rt:routing/rt:control-plane-protocols/" 2372 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2373 "rsvp:interface/rsvp:hellos/rsvp:state" { 2374 description 2375 "RSVP hello interface state extensions"; 2376 uses hellos-extended_config; 2377 } 2379 /* RSVP authentication extension */ 2380 augment "/rt:routing/rt:control-plane-protocols/" 2381 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2382 "rsvp:interface/rsvp:authentication/rsvp:config" { 2383 description 2384 "RSVP authentication interface configuration extensions"; 2385 uses authentication-extended_config; 2386 } 2387 augment "/rt:routing/rt:control-plane-protocols/" 2388 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2389 "rsvp:interface/rsvp:authentication/rsvp:state" { 2390 description 2391 "RSVP authentication interface state extensions"; 2392 uses authentication-extended_config; 2393 } 2394 } 2395 2397 Figure 5: RSVP extended YANG module 2399 4. IANA Considerations 2401 This document registers the following URIs in the IETF XML registry 2402 [RFC3688]. Following the format in [RFC3688], the following 2403 registration is requested to be made. 2405 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp XML: N/A, the requested 2406 URI is an XML namespace. 2408 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-extended XML: N/A, the 2409 requested URI is an XML namespace. 2411 This document registers a YANG module in the YANG Module Names 2412 registry [RFC6020]. 2414 name: ietf-rsvp namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp 2415 prefix: ietf-rsvp reference: RFC3209 2417 name: ietf-rsvp-extended namespace: urn:ietf:params:xml:ns:yang:ietf- 2418 rsvp-extended prefix: ietf-rsvp-extendeed reference: RFC3209 2420 5. Security Considerations 2422 The YANG module defined in this memo is designed to be accessed via 2423 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 2424 secure transport layer and the mandatory-to-implement secure 2425 transport is SSH [RFC6242]. The NETCONF access control model 2426 [RFC6536] provides means to restrict access for particular NETCONF 2428 users to a pre-configured subset of all available NETCONF protocol 2429 operations and content. 2431 There are a number of data nodes defined in the YANG module which are 2432 writable/creatable/deletable (i.e., config true, which is the 2433 default). These data nodes may be considered sensitive or vulnerable 2434 in some network environments. Write operations (e.g., ) 2435 to these data nodes without proper protection can have a negative 2436 effect on network operations. 2438 6. Acknowledgement 2440 The authors would like to thank Lou Berger, for reviewing and 2441 providing valuable feedback on this document. 2443 7. Contributors 2445 Xia Chen 2446 Huawei Technologies 2448 Email: jescia.chenxia@huawei.com 2450 Raqib Jones 2451 Brocade 2453 Email: raqib@Brocade.com 2455 Bin Wen 2456 Comcast 2458 Email: Bin_Wen@cable.comcast.com 2460 8. References 2462 8.1. Normative References 2464 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2465 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 2466 RFC2119, March 1997, 2467 . 2469 [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S. 2470 Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 2471 Functional Specification", RFC 2205, DOI 10.17487/RFC2205, 2472 September 1997, . 2474 [RFC2747] Baker, F., Lindell, B., and M. Talwar, "RSVP Cryptographic 2475 Authentication", RFC 2747, DOI 10.17487/RFC2747, January 2476 2000, . 2478 [RFC2961] Berger, L., Gan, D., Swallow, G., Pan, P., Tommasi, F., 2479 and S. Molendini, "RSVP Refresh Overhead Reduction 2480 Extensions", RFC 2961, DOI 10.17487/RFC2961, April 2001, 2481 . 2483 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 2484 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 2485 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 2486 . 2488 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 2489 Switching (GMPLS) Signaling Resource ReserVation Protocol- 2490 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, DOI 2491 10.17487/RFC3473, January 2003, 2492 . 2494 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2495 DOI 10.17487/RFC3688, January 2004, 2496 . 2498 [RFC5063] Satyanarayana, A., Ed. and R. Rahman, Ed., "Extensions to 2499 GMPLS Resource Reservation Protocol (RSVP) Graceful 2500 Restart", RFC 5063, DOI 10.17487/RFC5063, October 2007, 2501 . 2503 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2504 the Network Configuration Protocol (NETCONF)", RFC 6020, 2505 DOI 10.17487/RFC6020, October 2010, 2506 . 2508 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2509 and A. Bierman, Ed., "Network Configuration Protocol 2510 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2511 . 2513 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2514 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2515 . 2517 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 2518 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 2519 10.17487/RFC6536, March 2012, 2520 . 2522 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 2523 6991, DOI 10.17487/RFC6991, July 2013, 2524 . 2526 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 2527 Management", RFC 8022, DOI 10.17487/RFC8022, November 2528 2016, . 2530 8.2. Informative References 2532 [I-D.openconfig-mpls-consolidated-model] 2533 George, J., Fang, L., eric.osborne@level3.com, e., and R. 2534 Shakir, "MPLS / TE Model for Service Provider Networks", 2535 draft-openconfig-mpls-consolidated-model-02 (work in 2536 progress), October 2015. 2538 [I-D.openconfig-netmod-opstate] 2539 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 2540 of Operational State Data in YANG", draft-openconfig- 2541 netmod-opstate-01 (work in progress), July 2015. 2543 Authors' Addresses 2545 Vishnu Pavan Beeram 2546 Juniper Networks 2548 Email: vbeeram@juniper.net 2550 Tarek Saad (editor) 2551 Cisco Systems, Inc. 2553 Email: tsaad@cisco.com 2555 Rakesh Gandhi 2556 Cisco Systems, Inc. 2558 Email: rgandhi@cisco.com 2560 Xufeng Liu 2561 Jabil 2563 Email: Xufeng_Liu@jabil.com 2565 Igor Bryskin 2566 Huawei Technologies 2568 Email: Igor.Bryskin@huawei.com 2570 Himanshu Shah 2571 Ciena 2573 Email: hshah@ciena.com