idnits 2.17.1 draft-ietf-teas-yang-rsvp-08.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 541 has weird spacing: '...address ine...' == Line 796 has weird spacing: '...gnaling param...' -- The document date (October 29, 2017) is 2343 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 (~~), 5 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 TEAS Working Group V. Beeram 3 Internet-Draft Juniper Networks 4 Intended status: Standards Track T. Saad, Ed. 5 Expires: May 2, 2018 R. Gandhi 6 Cisco Systems, Inc. 7 X. Liu 8 Jabil 9 I. Bryskin 10 Huawei Technologies 11 H. Shah 12 Ciena 13 October 29, 2017 15 A YANG Data Model for Resource Reservation Protocol (RSVP) 16 draft-ietf-teas-yang-rsvp-08 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 May 2, 2018. 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. State Data Organization . . . . . . . . . . . . . . . . . 6 68 2.3. Configuration Inheritance . . . . . . . . . . . . . . . . 6 69 3. Model Organization . . . . . . . . . . . . . . . . . . . . . 7 70 3.1. RSVP Base YANG Model . . . . . . . . . . . . . . . . . . 7 71 3.1.1. Global Data . . . . . . . . . . . . . . . . . . . . . 8 72 3.1.2. Interface Data . . . . . . . . . . . . . . . . . . . 8 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 . . . . . . . . . . . . . . . . . . . . . 13 77 3.2. RSVP Extended YANG Model . . . . . . . . . . . . . . . . 31 78 3.2.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 32 79 3.2.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 33 80 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 44 81 5. Security Considerations . . . . . . . . . . . . . . . . . . . 44 82 6. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 44 83 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 45 84 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 45 85 8.1. Normative References . . . . . . . . . . . . . . . . . . 45 86 8.2. Informative References . . . . . . . . . . . . . . . . . 46 87 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 47 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. State Data Organization 229 The Network Management Datastore Architecture (NMDA) 230 [I-D.dsdt-nmda-guidelines] addresses the "OpState" that was discussed 231 in the IETF. As per NMDA guidelines for new models and models that 232 are not concerned with the operational state of configuration 233 information, this revision of the draft adopts the NMDA proposal for 234 configuration and state data of this model. 236 2.3. Configuration Inheritance 238 The defined data model supports configuration inheritance for 239 neighbors, and interfaces. Data elements defined in the main 240 container (e.g. the container that encompasses the list of 241 interfaces, or neighbors) are assumed to apply equally to all 242 elements of the list, unless overridden explicitly for a certain 243 element (e.g. interface). Vendors are expected to augment the above 244 container(s) to provide the list of inheritance command for their 245 implementations. 247 3. Model Organization 249 This document divides the RSVP model into two modules: the RSVP base 250 and extended. Each module covers the configuration, state, 251 notification and RPCs of data. The relationship between the 252 different modules is depicted in Figure 1. 254 3.1. RSVP Base YANG Model 256 This section describes the RSVP base YANG data model. The container 257 "rsvp" is the top level container in this data model. The presence 258 of this container enables the RSVP protocol functionality. 260 Data for such state is contained under the respective "state" sub- 261 container of the intended object (e.g. interface) as shown in 262 Figure 2. 264 module: ietf-rsvp 265 +--rw rsvp! 266 +--rw globals 267 +-- rw config 268 <> 269 . 270 +-- ro state 271 <> 272 <> 273 . 274 . 275 +--rw interfaces 276 +-- rw config 277 <> 278 . 279 +-- ro state 280 <> 281 <> 282 . 283 . 284 +--rw neighbors 285 +-- rw config 286 <> 287 . 288 +-- ro state 289 <> 290 <> 291 . 292 . 293 +--rw sessions 294 +-- rw config 295 <> 296 . 297 +-- ro state 298 <> 299 <> 300 . 301 rpcs: 302 +--x global-rpc 303 +--x interfaces-rpc 304 +--x neighbors-rpc 305 +--x sessions-rpc 306 notifications: 307 +--n global-notif 308 +--n interfaces-notif 309 +--n neighbors-notif 310 +--n sessions-notif 312 Figure 2: RSVP high-level tree model view 314 The following subsections provide overview of the parts of the model 315 pertaining to configuration and state data. 317 Configuration and state data are organized into those applicable 318 globally (node scope), per interfaces, per neighbors, or per session. 320 3.1.1. Global Data 322 This branch of the data model covers global configuration and states 323 that control RSVP protocol behavior. 325 3.1.2. Interface Data 327 This branch of the data model covers configuration and state elements 328 relevant to one or all RSVP interfaces. Any data configuration 329 applied at the "interfaces" container level are equally applicable to 330 all interfaces - unless overridden by explicit configuration under a 331 specific interface. 333 3.1.3. Neighbor Data 335 This branch of the data model covers configuration of elements 336 relevant to RSVP neighbors. This would be discussed in detail in 337 future revisions. 339 3.1.4. Session Data 341 This branch of the data model covers configuration of elements 342 relevant to RSVP sessions. This would be discussed in detail in 343 future revisions. 345 3.1.5. Tree Diagram 347 module: ietf-rsvp 348 augment 349 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: 350 +--rw rsvp! 351 +--rw globals 352 | +--rw sessions 353 | | +--ro session* [local-index] 354 | | +--ro local-index -> ../state/local-index 355 | | +--ro state 356 | | +--ro local-index? uint64 357 | | +--ro destination-port? inet:port-number 358 | | +--ro source? inet:ip-address 359 | | +--ro destination? inet:ip-address 360 | | +--ro session-name? string 361 | | +--ro session-state? enumeration 362 | | +--ro session-type? identityref 363 | | +--ro psbs 364 | | | +--ro psb* 365 | | | +--ro source-port? inet:port-number 366 | | | +--ro expires-in? uint32 367 | | +--ro rsbs 368 | | +--ro rsb* 369 | | +--ro source-port? inet:port-number 370 | | +--ro reservation-style? identityref 371 | | +--ro expires-in? uint32 372 | +--rw statistics 373 | | +--ro state 374 | | +--ro messages 375 | | | +--ro ack-sent? yang:counter64 376 | | | +--ro ack-received? yang:counter64 377 | | | +--ro bundle-sent? yang:counter64 378 | | | +--ro bundle-received? yang:counter64 379 | | | +--ro hello-sent? yang:counter64 380 | | | +--ro hello-received? yang:counter64 381 | | | +--ro integrity-challenge-sent? yang:counter64 382 | | | +--ro integrity-challenge-received? yang:counter64 383 | | | +--ro integrity-response-sent? yang:counter64 384 | | | +--ro integrity-response-received? yang:counter64 385 | | | +--ro notify-sent? yang:counter64 386 | | | +--ro notify-received? yang:counter64 387 | | | +--ro path-sent? yang:counter64 388 | | | +--ro path-received? yang:counter64 389 | | | +--ro path-err-sent? yang:counter64 390 | | | +--ro path-err-received? yang:counter64 391 | | | +--ro path-tear-sent? yang:counter64 392 | | | +--ro path-tear-received? yang:counter64 393 | | | +--ro resv-sent? yang:counter64 394 | | | +--ro resv-received? yang:counter64 395 | | | +--ro resv-confirm-sent? yang:counter64 396 | | | +--ro resv-confirm-received? yang:counter64 397 | | | +--ro resv-err-sent? yang:counter64 398 | | | +--ro resv-err-received? yang:counter64 399 | | | +--ro resv-tear-sent? yang:counter64 400 | | | +--ro resv-tear-received? yang:counter64 401 | | | +--ro summary-refresh-sent? yang:counter64 402 | | | +--ro summary-refresh-received? yang:counter64 403 | | | +--ro unknown-messages-received? yang:counter64 404 | | +--ro packets 405 | | | +--ro sent? yang:counter64 406 | | | +--ro received? yang:counter64 407 | | +--ro errors 408 | | +--ro authenticate? yang:counter64 409 | | +--ro checksum? yang:counter64 410 | | +--ro packet-len? yang:counter64 411 | +--rw graceful-restart 412 | +--rw enabled? boolean 413 +--rw interfaces 414 | +--rw refresh-reduction 415 | | +--rw enabled? boolean 416 | +--rw hellos 417 | | +--rw enabled? boolean 418 | +--rw authentication 419 | | +--rw enabled? boolean 420 | | +--rw authentication-key? string 421 | | +--rw crypto-algorithm identityref 422 | +--rw statistics 423 | | +--ro state 424 | | +--ro messages 425 | | | +--ro ack-sent? yang:counter64 426 | | | +--ro ack-received? yang:counter64 427 | | | +--ro bundle-sent? yang:counter64 428 | | | +--ro bundle-received? yang:counter64 429 | | | +--ro hello-sent? yang:counter64 430 | | | +--ro hello-received? yang:counter64 431 | | | +--ro integrity-challenge-sent? yang:counter64 432 | | | +--ro integrity-challenge-received? yang:counter64 433 | | | +--ro integrity-response-sent? yang:counter64 434 | | | +--ro integrity-response-received? yang:counter64 435 | | | +--ro notify-sent? yang:counter64 436 | | | +--ro notify-received? yang:counter64 437 | | | +--ro path-sent? yang:counter64 438 | | | +--ro path-received? yang:counter64 439 | | | +--ro path-err-sent? yang:counter64 440 | | | +--ro path-err-received? yang:counter64 441 | | | +--ro path-tear-sent? yang:counter64 442 | | | +--ro path-tear-received? yang:counter64 443 | | | +--ro resv-sent? yang:counter64 444 | | | +--ro resv-received? yang:counter64 445 | | | +--ro resv-confirm-sent? yang:counter64 446 | | | +--ro resv-confirm-received? yang:counter64 447 | | | +--ro resv-err-sent? yang:counter64 448 | | | +--ro resv-err-received? yang:counter64 449 | | | +--ro resv-tear-sent? yang:counter64 450 | | | +--ro resv-tear-received? yang:counter64 451 | | | +--ro summary-refresh-sent? yang:counter64 452 | | | +--ro summary-refresh-received? yang:counter64 453 | | | +--ro unknown-messages-received? yang:counter64 454 | | +--ro packets 455 | | | +--ro sent? yang:counter64 456 | | | +--ro received? yang:counter64 457 | | +--ro errors 458 | | +--ro authenticate? yang:counter64 459 | | +--ro checksum? yang:counter64 460 | | +--ro packet-len? yang:counter64 461 | +--rw interface* [interface] 462 | +--rw interface if:interface-ref 463 | +--rw refresh-reduction 464 | | +--rw enabled? boolean 465 | +--rw hellos 466 | | +--rw enabled? boolean 467 | +--rw authentication 468 | | +--rw enabled? boolean 469 | | +--rw authentication-key? string 470 | | +--rw crypto-algorithm identityref 471 | +--rw statistics 472 | +--ro state 473 | +--ro messages 474 | | +--ro ack-sent? 475 yang:counter64 476 | | +--ro ack-received? 477 yang:counter64 478 | | +--ro bundle-sent? 479 yang:counter64 480 | | +--ro bundle-received? 481 yang:counter64 482 | | +--ro hello-sent? 483 yang:counter64 484 | | +--ro hello-received? 485 yang:counter64 486 | | +--ro integrity-challenge-sent? 487 yang:counter64 488 | | +--ro integrity-challenge-received? 489 yang:counter64 490 | | +--ro integrity-response-sent? 491 yang:counter64 492 | | +--ro integrity-response-received? 493 yang:counter64 494 | | +--ro notify-sent? 495 yang:counter64 496 | | +--ro notify-received? 497 yang:counter64 498 | | +--ro path-sent? 499 yang:counter64 500 | | +--ro path-received? 501 yang:counter64 502 | | +--ro path-err-sent? 503 yang:counter64 504 | | +--ro path-err-received? 505 yang:counter64 506 | | +--ro path-tear-sent? 507 yang:counter64 508 | | +--ro path-tear-received? 509 yang:counter64 510 | | +--ro resv-sent? 511 yang:counter64 512 | | +--ro resv-received? 513 yang:counter64 514 | | +--ro resv-confirm-sent? 515 yang:counter64 516 | | +--ro resv-confirm-received? 517 yang:counter64 518 | | +--ro resv-err-sent? 519 yang:counter64 520 | | +--ro resv-err-received? 521 yang:counter64 522 | | +--ro resv-tear-sent? 523 yang:counter64 524 | | +--ro resv-tear-received? 525 yang:counter64 526 | | +--ro summary-refresh-sent? 527 yang:counter64 528 | | +--ro summary-refresh-received? 529 yang:counter64 530 | | +--ro unknown-messages-received? 531 yang:counter64 532 | +--ro packets 533 | | +--ro sent? yang:counter64 534 | | +--ro received? yang:counter64 535 | +--ro errors 536 | +--ro authenticate? yang:counter64 537 | +--ro checksum? yang:counter64 538 | +--ro packet-len? yang:counter64 539 +--rw neighbors 540 +--rw neighbor* [address] 541 +--rw address inet:ip-address 542 +--ro state 543 +--ro address? inet:ip-address 544 +--ro epoch? uint32 545 +--ro expiry-time? uint32 546 +--ro graceful-restart 547 | +--ro enabled? boolean 548 | +--ro local-restart-time? uint32 549 | +--ro local-recovery-time? uint32 550 | +--ro neighbor-restart-time? uint32 551 | +--ro neighbor-recovery-time? uint32 552 | +--ro helper-mode 553 | +--ro enabled? boolean 554 | +--ro max-helper-restart-time? uint32 555 | +--ro max-helper-recovery-time? uint32 556 | +--ro neighbor-restart-time-remaining? uint32 557 | +--ro neighbor-recovery-time-remaining? uint32 558 +--ro hello-status? enumeration 559 +--ro interface? if:interface-ref 560 +--ro neighbor-state? enumeration 561 +--ro refresh-reduction-capable? boolean 562 +--ro restart-count? yang:counter32 563 +--ro restart-time? yang:date-and-time 565 Figure 3: RSVP model tree diagram 567 3.1.6. YANG Module 569 file "ietf-rsvp@2017-10-29.yang" 570 module ietf-rsvp { 572 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp"; 573 /* Replace with IANA when assigned */ 574 prefix "rsvp"; 576 import ietf-interfaces { 577 prefix "if"; 578 } 580 import ietf-inet-types { 581 prefix inet; 582 } 584 import ietf-yang-types { 585 prefix "yang"; 586 } 588 import ietf-routing { 589 prefix "rt"; 590 } 592 import ietf-key-chain { 593 prefix "key-chain"; 594 } 596 organization 597 "IETF Traffic Engineering Architecture and Signaling (TEAS) 598 Working Group"; 600 contact 601 "WG Web: 602 WG List: 604 WG Chair: Lou Berger 605 607 WG Chair: Vishnu Pavan Beeram 608 610 Editor: Vishnu Pavan Beeram 611 613 Editor: Tarek Saad 614 616 Editor: Rakesh Gandhi 617 619 Editor: Himanshu Shah 620 622 Editor: Xufeng Liu 623 625 Editor: Xia Chen 626 628 Editor: Raqib Jones 629 631 Editor: Bin Wen 632 "; 634 description 635 "This module contains the RSVP YANG data model."; 637 revision "2017-10-29" { 638 description "Latest revision of RSVP yang module."; 639 reference "RFC2205"; 640 } 642 identity rsvp { 643 base "rt:routing-protocol"; 644 description "RSVP protocol"; 645 } 647 identity rsvp-session-type { 648 description "Base RSVP session type"; 649 } 651 identity rsvp-session-ipv4 { 652 base rsvp-session-type; 653 description "RSVP IPv4 session type"; 654 } 656 identity rsvp-session-ipv6 { 657 base rsvp-session-type; 658 description "RSVP IPv4 session type"; 659 } 661 identity reservation-style { 662 description "Base identity for reservation style"; 663 } 665 identity reservation-wildcard-filter { 666 base reservation-style; 667 description "Wildcard-Filter (WF) Style"; 668 reference "RFC2205"; 669 } 670 identity reservation-fixed-filter { 671 base reservation-style; 672 description "Fixed-Filter (FF) Style"; 673 reference "RFC2205"; 674 } 676 identity reservation-shared-explicit { 677 base reservation-style; 678 description "Shared Explicit (SE) Style"; 679 reference "RFC2205"; 680 } 682 grouping graceful-restart_config { 683 description 684 "Base configuration parameters relating to RSVP 685 Graceful-Restart"; 686 leaf enabled { 687 type boolean; 688 description 689 "'true' if RSVP Graceful Restart is enabled. 690 'false' if RSVP Graceful Restart is disabled."; 691 } 692 } 694 grouping graceful-restart { 695 description 696 "RSVP graceful restart parameters grouping"; 697 container graceful-restart { 698 description 699 "RSVP graceful restart parameters container"; 700 uses graceful-restart_config; 701 } 702 } 704 grouping refresh-reduction_config { 705 description 706 "Configuration parameters relating to RSVP 707 refresh reduction"; 709 leaf enabled { 710 type boolean; 711 description 712 "'true' if RSVP Refresh Reduction is enabled. 713 'false' if RSVP Refresh Reduction is disabled."; 714 } 715 } 717 grouping refresh-reduction { 718 description 719 "Top level grouping for RSVP refresh reduction 720 parameters"; 721 container refresh-reduction { 722 description 723 "Top level container for RSVP refresh reduction 724 parameters"; 725 uses refresh-reduction_config; 726 } 727 } 729 grouping authentication_config { 730 description 731 "Configuration parameters relating to RSVP 732 authentication"; 733 leaf enabled { 734 type boolean; 735 description 736 "'true' if RSVP Authentication is enabled. 737 'false' if RSVP Authentication is disabled."; 738 } 739 leaf authentication-key { 740 type string; 741 description 742 "An authentication key string"; 743 reference 744 "RFC 2747: RSVP Cryptographic Authentication"; 745 } 746 leaf crypto-algorithm { 747 type identityref { 748 base key-chain:crypto-algorithm; 749 } 750 mandatory true; 751 description 752 "Cryptographic algorithm associated with key."; 753 } 754 } 756 grouping authentication { 757 description 758 "Top level grouping for RSVP authentication parameters"; 759 container authentication { 760 description 761 "Top level container for RSVP authentication 762 parameters"; 763 uses authentication_config; 764 } 765 } 766 grouping hellos_config { 767 description 768 "Configuration parameters relating to RSVP 769 hellos"; 770 leaf enabled { 771 type boolean; 772 description 773 "'true' if RSVP Hello is enabled. 774 'false' if RSVP Hello is disabled."; 775 } 776 } 778 grouping hellos { 779 description 780 "Top level grouping for RSVP hellos parameters"; 781 container hellos { 782 description 783 "Top level container for RSVP hello parameters"; 784 uses hellos_config; 785 } 786 } 788 grouping signaling-parameters_config { 789 description 790 "Configuration parameters relating to RSVP 791 signaling"; 792 } 794 grouping signaling-parameters { 795 description 796 "Top level grouping for RSVP signaling parameters"; 797 uses signaling-parameters_config; 798 } 800 grouping session-attributes_state { 801 description 802 "Top level grouping for RSVP session properties"; 803 leaf local-index { 804 type uint64; 805 description 806 "The index used to identify the RSVP session 807 on the local network element. This index is 808 generated by the device and is unique only 809 to the local network element."; 810 } 811 leaf destination-port { 812 type inet:port-number; 813 description "RSVP destination port"; 814 reference "RFC2205"; 815 } 816 leaf source { 817 type inet:ip-address; 818 description "RSVP source address"; 819 reference "RFC2205"; 820 } 821 leaf destination { 822 type inet:ip-address; 823 description "RSVP destination address"; 824 reference "RFC2205"; 825 } 826 leaf session-name { 827 type string; 828 description 829 "The signaled name of this RSVP session."; 830 } 831 leaf session-state { 832 type enumeration { 833 enum "up" { 834 description 835 "RSVP session is up"; 836 } 837 enum "down" { 838 description 839 "RSVP session is down"; 840 } 841 } 842 description 843 "Enumeration of RSVP session states"; 844 } 845 leaf session-type { 846 type identityref { 847 base rsvp-session-type; 848 } 849 description "RSVP session type"; 850 } 851 container psbs { 852 description "Path State Block container"; 853 list psb { 854 description "List of path state blocks"; 855 leaf source-port { 856 type inet:port-number; 857 description "RSVP source port"; 858 reference "RFC2205"; 859 } 860 leaf expires-in { 861 type uint32; 862 units seconds; 863 description "Time to reservation expiry (in seconds)"; 864 } 865 } 866 } 867 container rsbs { 868 description "Reservation State Block container"; 869 list rsb { 870 description "List of reservation state blocks"; 871 leaf source-port { 872 type inet:port-number; 873 description "RSVP source port"; 874 reference "RFC2205"; 875 } 876 leaf reservation-style { 877 type identityref { 878 base reservation-style; 879 } 880 description "RSVP reservation style"; 881 } 882 leaf expires-in { 883 type uint32; 884 units seconds; 885 description "Time to reservation expiry (in seconds)"; 886 } 887 } 888 } 889 } 891 grouping neighbor-attributes { 892 description 893 "Top level grouping for RSVP neighbor properties"; 894 leaf address { 895 type inet:ip-address; 896 description 897 "Address of RSVP neighbor"; 898 } 899 container state { 900 config false; 901 description 902 "State information associated with RSVP 903 neighbor properties"; 904 uses neighbor-derived_state; 905 } 906 } 908 grouping packets_state { 909 description 910 "Packet statistics grouping"; 911 container packets { 912 description 913 "Packet statistics container"; 914 leaf sent { 915 type yang:counter64; 916 description 917 "Packet sent count"; 918 } 920 leaf received { 921 type yang:counter64; 922 description 923 "Packet received count"; 924 } 925 } 926 } 928 grouping protocol_state { 929 description 930 "RSVP protocol statistics grouping"; 931 container messages { 932 description 933 "RSVP protocol statistics container"; 934 leaf ack-sent { 935 type yang:counter64; 936 description 937 "Hello sent count"; 938 } 940 leaf ack-received { 941 type yang:counter64; 942 description 943 "Hello received count"; 944 } 946 leaf bundle-sent { 947 type yang:counter64; 948 description 949 "Bundle sent count"; 950 } 952 leaf bundle-received { 953 type yang:counter64; 954 description 955 "Bundle received count"; 956 } 957 leaf hello-sent { 958 type yang:counter64; 959 description 960 "Hello sent count"; 961 } 963 leaf hello-received { 964 type yang:counter64; 965 description 966 "Hello received count"; 967 } 969 leaf integrity-challenge-sent { 970 type yang:counter64; 971 description 972 "Integrity Challenge sent count"; 973 } 975 leaf integrity-challenge-received { 976 type yang:counter64; 977 description 978 "Integrity Challenge received count"; 979 } 981 leaf integrity-response-sent { 982 type yang:counter64; 983 description 984 "Integrity Response sent count"; 985 } 987 leaf integrity-response-received { 988 type yang:counter64; 989 description 990 "Integrity Response received count"; 991 } 993 leaf notify-sent { 994 type yang:counter64; 995 description 996 "Notify sent count"; 997 } 999 leaf notify-received { 1000 type yang:counter64; 1001 description 1002 "Notify received count"; 1003 } 1004 leaf path-sent { 1005 type yang:counter64; 1006 description 1007 "Path sent count"; 1008 } 1010 leaf path-received { 1011 type yang:counter64; 1012 description 1013 "Path received count"; 1014 } 1016 leaf path-err-sent { 1017 type yang:counter64; 1018 description 1019 "Path error sent count"; 1020 } 1022 leaf path-err-received { 1023 type yang:counter64; 1024 description 1025 "Path error received count"; 1026 } 1028 leaf path-tear-sent { 1029 type yang:counter64; 1030 description 1031 "Path tear sent count"; 1032 } 1034 leaf path-tear-received { 1035 type yang:counter64; 1036 description 1037 "Path tear received count"; 1038 } 1040 leaf resv-sent { 1041 type yang:counter64; 1042 description 1043 "Resv sent count"; 1044 } 1046 leaf resv-received { 1047 type yang:counter64; 1048 description 1049 "Resv received count"; 1050 } 1051 leaf resv-confirm-sent { 1052 type yang:counter64; 1053 description 1054 "Confirm sent count"; 1055 } 1057 leaf resv-confirm-received { 1058 type yang:counter64; 1059 description 1060 "Confirm received count"; 1061 } 1063 leaf resv-err-sent { 1064 type yang:counter64; 1065 description 1066 "Resv error sent count"; 1067 } 1069 leaf resv-err-received { 1070 type yang:counter64; 1071 description 1072 "Resv error received count"; 1073 } 1075 leaf resv-tear-sent { 1076 type yang:counter64; 1077 description 1078 "Resv tear sent count"; 1079 } 1081 leaf resv-tear-received { 1082 type yang:counter64; 1083 description 1084 "Resv tear received count"; 1085 } 1087 leaf summary-refresh-sent { 1088 type yang:counter64; 1089 description 1090 "Summary refresh sent count"; 1091 } 1093 leaf summary-refresh-received { 1094 type yang:counter64; 1095 description 1096 "Summary refresh received count"; 1097 } 1098 leaf unknown-messages-received { 1099 type yang:counter64; 1100 description 1101 "Unknown packet received count"; 1102 } 1103 } 1104 } 1106 grouping errors_state { 1107 description 1108 "Error statistics state grouping"; 1109 container errors { 1110 description 1111 "Error statistics state container"; 1112 leaf authenticate { 1113 type yang:counter64; 1114 description 1115 "The total number of packets received with an 1116 authentication failure."; 1117 } 1119 leaf checksum { 1120 type yang:counter64; 1121 description 1122 "The total number of packets received with an invalid 1123 checksum value."; 1124 } 1126 leaf packet-len { 1127 type yang:counter64; 1128 description 1129 "The total number of packets received with an invalid 1130 packet length."; 1131 } 1132 } 1133 } 1135 grouping statistics_state { 1136 description "RSVP statistic attributes."; 1137 container statistics { 1138 description 1139 "statistics state container"; 1140 container state { 1141 config false; 1142 description 1143 "State information associated with RSVP 1144 hello parameters"; 1145 uses protocol_state; 1146 uses packets_state; 1147 uses errors_state; 1148 } 1149 } 1150 } 1152 grouping neighbor-derived_state { 1153 description 1154 "Derived state at neighbor level."; 1156 leaf address { 1157 type inet:ip-address; 1158 description 1159 "Address of RSVP neighbor"; 1160 } 1162 leaf epoch { 1163 type uint32; 1164 description 1165 "Neighbor epoch."; 1166 } 1168 leaf expiry-time { 1169 type uint32; 1170 units seconds; 1171 description 1172 "Neighbor expiry time after which the neighbor state 1173 is purged if no states associated with it"; 1174 } 1176 container graceful-restart { 1177 description 1178 "Graceful restart information."; 1180 leaf enabled { 1181 type boolean; 1182 description 1183 "'true' if graceful restart is enabled for the 1184 neighbor."; 1185 } 1187 leaf local-restart-time { 1188 type uint32; 1189 units seconds; 1190 description 1191 "Local node restart time"; 1192 } 1193 leaf local-recovery-time { 1194 type uint32; 1195 units seconds; 1196 description 1197 "Local node recover time"; 1198 } 1200 leaf neighbor-restart-time { 1201 type uint32; 1202 units seconds; 1203 description 1204 "Neighbor restart time"; 1205 } 1207 leaf neighbor-recovery-time { 1208 type uint32; 1209 units seconds; 1210 description 1211 "Neighbor recover time"; 1212 } 1214 container helper-mode { 1215 description 1216 "Helper mode information "; 1218 leaf enabled { 1219 type boolean; 1220 description 1221 "'true' if helper mode is enabled."; 1222 } 1224 leaf max-helper-restart-time { 1225 type uint32; 1226 units seconds; 1227 description 1228 "The time the router or switch waits after it 1229 discovers that a neighboring router has gone down 1230 before it declares the neighbor down"; 1231 } 1233 leaf max-helper-recovery-time { 1234 type uint32; 1235 units seconds; 1236 description 1237 "The amount of time the router retains the state of its 1238 RSVP neighbors while they undergo a graceful restart"; 1239 } 1240 leaf neighbor-restart-time-remaining { 1241 type uint32; 1242 units seconds; 1243 description 1244 "Number of seconds remaining for neighbor to send 1245 Hello message after restart."; 1246 } 1248 leaf neighbor-recovery-time-remaining { 1249 type uint32; 1250 units seconds; 1251 description 1252 "Number of seconds remaining for neighbor to 1253 refresh."; 1254 } 1255 } // helper-mode 1256 } // graceful-restart 1258 leaf hello-status { 1259 type enumeration { 1260 enum "enabled" { 1261 description 1262 "Enabled"; 1263 } 1264 enum "disabled" { 1265 description 1266 "Disabled"; 1267 } 1268 enum "restarting" { 1269 description 1270 "Restarting"; 1271 } 1272 } 1273 description 1274 "Hello status"; 1275 } 1277 leaf interface { 1278 type if:interface-ref; 1279 description 1280 "Interface where RSVP neighbor was detected"; 1281 } 1283 leaf neighbor-state { 1284 type enumeration { 1285 enum "up" { 1286 description 1287 "up"; 1289 } 1290 enum "down" { 1291 description 1292 "down"; 1293 } 1294 enum "hello-disable" { 1295 description 1296 "hello-disable"; 1297 } 1298 enum "restarting" { 1299 description 1300 "restarting"; 1301 } 1302 } 1303 description 1304 "Neighbor state"; 1305 } 1307 leaf refresh-reduction-capable { 1308 type boolean; 1309 description 1310 "enables all RSVP refresh reduction message 1311 bundling, RSVP message ID, reliable message delivery 1312 and summary refresh"; 1313 reference 1314 "RFC 2961 RSVP Refresh Overhead Reduction 1315 Extensions"; 1316 } 1318 leaf restart-count { 1319 type yang:counter32; 1320 description 1321 "Number of times this neighbor restart"; 1322 } 1324 leaf restart-time { 1325 type yang:date-and-time; 1326 description 1327 "Last restart time of the neighbor"; 1328 } 1329 } 1331 grouping global-attributes { 1332 description 1333 "Top level grouping for RSVP global properties"; 1334 container sessions { 1335 description 1336 "RSVP sessions container"; 1338 list session { 1339 key "local-index"; 1340 config false; 1341 description 1342 "List of RSVP sessions"; 1344 leaf local-index { 1345 type leafref { 1346 path "../state/local-index"; 1347 } 1348 description 1349 "Reference to the local index for the RSVP 1350 session"; 1351 } 1352 container state { 1353 config false; 1354 description 1355 "State information associated with RSVP 1356 session parameters"; 1357 uses session-attributes_state; 1358 } 1359 } 1360 } 1361 uses statistics_state; 1362 } 1364 grouping intf-attributes { 1365 description 1366 "Top level grouping for RSVP interface properties"; 1367 uses signaling-parameters; 1368 uses refresh-reduction; 1369 uses hellos; 1370 uses authentication; 1371 uses statistics_state; 1372 } 1374 augment "/rt:routing/rt:control-plane-protocols/" 1375 + "rt:control-plane-protocol" { 1376 when "rt:type = 'rsvp:rsvp'" { 1377 description 1378 "This augment is only valid when routing protocol 1379 instance type is RSVP."; 1380 } 1381 description 1382 "RSVP protocol augmentation"; 1383 container rsvp { 1384 presence "Enable RSVP feature"; 1385 description "RSVP feature container"; 1386 container globals { 1387 description "RSVP global properties."; 1388 uses global-attributes; 1389 uses graceful-restart; 1390 } 1392 container interfaces { 1393 description 1394 "RSVP interfaces container"; 1395 uses intf-attributes; 1397 list interface { 1398 key "interface"; 1399 description 1400 "RSVP interfaces."; 1401 leaf interface { 1402 type if:interface-ref; 1403 description 1404 "RSVP interface."; 1405 } 1406 uses intf-attributes; 1407 } 1408 } 1410 container neighbors { 1411 description "RSVP neighbors container"; 1412 list neighbor { 1413 key "address"; 1414 description "List of RSVP neighbors"; 1415 uses neighbor-attributes; 1416 } 1417 } 1418 } 1419 } 1420 } 1421 1423 3.2. RSVP Extended YANG Model 1425 The RSVP extended YANG model covers optional or non-core RSVP 1426 feature(s). It also covers feature(s) that are not necessarily 1427 supported by all vendors, and hence, guarded with "if-feature" 1428 checks. 1430 3.2.1. Tree Diagram 1432 Figure 4 shows the YANG tree representation for configuration and 1433 state data that is augmenting the RSVP basic module: 1435 module: ietf-rsvp-extended 1436 augment 1437 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1438 rsvp:rsvp/rsvp:globals/rsvp:graceful-restart: 1439 +--rw restart-time? uint32 1440 +--rw recovery-time? uint32 1441 augment 1442 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1443 rsvp:rsvp/rsvp:globals/rsvp:statistics/rsvp:state/rsvp:packets: 1444 +--ro discontinuity-time? yang:date-and-time 1445 +--ro out-dropped? yang:counter64 1446 +--ro in-dropped? yang:counter64 1447 +--ro out-error? yang:counter64 1448 +--ro in-error? yang:counter64 1449 augment 1450 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1451 rsvp:rsvp/rsvp:globals/rsvp:statistics/rsvp:state/rsvp:messages: 1452 augment 1453 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1454 rsvp:rsvp/rsvp:globals/rsvp:statistics/rsvp:state/rsvp:errors: 1455 augment 1456 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1457 rsvp:rsvp/rsvp:interfaces: 1458 +--rw refresh-interval? uint32 1459 +--rw refresh-misses? uint32 1460 +--rw checksum? boolean 1461 +--rw patherr-state-removal? empty 1462 augment 1463 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1464 rsvp:rsvp/rsvp:interfaces/rsvp:refresh-reduction: 1465 +--rw bundle-message-max-size? uint32 1466 +--rw reliable-ack-hold-time? uint32 1467 +--rw reliable-ack-max-size? uint32 1468 +--rw reliable-retransmit-time? uint32 1469 +--rw reliable-srefresh? empty 1470 +--rw summary-max-size? uint32 1471 augment 1472 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1473 rsvp:rsvp/rsvp:interfaces/rsvp:hellos: 1474 +--rw interface-based? empty 1475 +--rw hello-interval? uint32 1476 +--rw hello-misses? uint32 1477 augment 1478 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1479 rsvp:rsvp/rsvp:interfaces/rsvp:authentication: 1480 +--rw lifetime? uint32 1481 +--rw window-size? uint32 1482 +--rw challenge? empty 1483 +--rw retransmits? uint32 1484 +--rw key-chain? key-chain:key-chain-ref 1485 augment 1486 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1487 rsvp:rsvp/rsvp:interfaces/rsvp:interface: 1488 +--rw refresh-interval? uint32 1489 +--rw refresh-misses? uint32 1490 +--rw checksum? boolean 1491 +--rw patherr-state-removal? empty 1492 augment 1493 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1494 rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:refresh-reduction: 1495 +--rw bundle-message-max-size? uint32 1496 +--rw reliable-ack-hold-time? uint32 1497 +--rw reliable-ack-max-size? uint32 1498 +--rw reliable-retransmit-time? uint32 1499 +--rw reliable-srefresh? empty 1500 +--rw summary-max-size? uint32 1501 augment 1502 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1503 rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:hellos: 1504 +--rw interface-based? empty 1505 +--rw hello-interval? uint32 1506 +--rw hello-misses? uint32 1507 augment 1508 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1509 rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:authentication: 1510 +--rw lifetime? uint32 1511 +--rw window-size? uint32 1512 +--rw challenge? empty 1513 +--rw retransmits? uint32 1514 +--rw key-chain? key-chain:key-chain-ref 1516 Figure 4: RSVP extended model tree diagram 1518 3.2.2. YANG Module 1520 Figure 5 shows the RSVP extended YANG module: 1522 file "ietf-rsvp-extended@2017-10-29.yang" 1523 module ietf-rsvp-extended { 1525 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-extended"; 1526 prefix "rsvp-ext"; 1528 import ietf-rsvp { 1529 prefix "rsvp"; 1530 } 1532 import ietf-routing { 1533 prefix "rt"; 1534 } 1536 import ietf-yang-types { 1537 prefix "yang"; 1538 } 1540 import ietf-key-chain { 1541 prefix "key-chain"; 1542 } 1544 organization 1545 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1546 Working Group"; 1548 contact 1549 "WG Web: 1551 WG List: 1553 WG Chair: Lou Berger 1554 1556 WG Chair: Vishnu Pavan Beeram 1557 1559 Editor: Vishnu Pavan Beeram 1560 1562 Editor: Tarek Saad 1563 1565 Editor: Rakesh Gandhi 1566 1568 Editor: Himanshu Shah 1569 1571 Editor: Xufeng Liu 1572 1574 Editor: Xia Chen 1575 1577 Editor: Raqib Jones 1578 1580 Editor: Bin Wen 1581 "; 1583 description 1584 "This module contains the Extended RSVP YANG data model."; 1586 revision "2017-10-29" { 1587 description "Latest revision of RSVP extended yang module."; 1588 reference "RFC2205"; 1589 } 1591 /* RSVP features */ 1592 feature authentication { 1593 description 1594 "Indicates support for RSVP authentication"; 1595 } 1597 feature error-statistics { 1598 description 1599 "Indicates support for error statistics"; 1600 } 1602 feature global-statistics { 1603 description 1604 "Indicates support for global statistics"; 1605 } 1607 feature graceful-restart { 1608 description 1609 "Indicates support for RSVP graceful restart"; 1610 } 1612 feature hellos { 1613 description 1614 "Indicates support for RSVP hellos (RFC3209)."; 1615 } 1617 feature notify { 1618 description 1619 "Indicates support for RSVP notify message (RFC3473)."; 1620 } 1621 feature refresh-reduction { 1622 description 1623 "Indicates support for RSVP refresh reduction 1624 (RFC2961)."; 1625 } 1627 feature refresh-reduction-extended { 1628 description 1629 "Indicates support for RSVP refresh reduction 1630 (RFC2961)."; 1631 } 1633 feature per-interface-statistics { 1634 description 1635 "Indicates support for per interface statistics"; 1636 } 1638 grouping graceful-restart-extended_config { 1639 description 1640 "Configuration parameters relating to RSVP 1641 Graceful-Restart"; 1642 leaf restart-time { 1643 type uint32; 1644 units seconds; 1645 description 1646 "Graceful restart time (seconds)."; 1647 reference 1648 "RFC 5495: Description of the Resource 1649 Reservation Protocol - Traffic-Engineered 1650 (RSVP-TE) Graceful Restart Procedures"; 1651 } 1652 leaf recovery-time { 1653 type uint32; 1654 units seconds; 1655 description 1656 "RSVP state recovery time"; 1657 } 1658 } 1660 grouping authentication-extended_config { 1661 description 1662 "Configuration parameters relating to RSVP 1663 authentication"; 1664 leaf lifetime { 1665 type uint32 { 1666 range "30..86400"; 1667 } 1668 units seconds; 1670 description 1671 "Life time for each security association"; 1672 reference 1673 "RFC 2747: RSVP Cryptographic 1674 Authentication"; 1675 } 1676 leaf window-size { 1677 type uint32 { 1678 range "1..64"; 1679 } 1680 description 1681 "Window-size to limit number of out-of-order 1682 messages."; 1683 reference 1684 "RFC 2747: RSVP Cryptographic 1685 Authentication"; 1686 } 1687 leaf challenge { 1688 type empty; 1689 description 1690 "Enable challenge messages."; 1691 reference 1692 "RFC 2747: RSVP Cryptographic 1693 Authentication"; 1694 } 1695 leaf retransmits { 1696 type uint32 { 1697 range "1..10000"; 1698 } 1699 description 1700 "Number of retransmits when messages are 1701 dropped."; 1702 reference 1703 "RFC 2747: RSVP Cryptographic 1704 Authentication"; 1705 } 1706 leaf key-chain { 1707 type key-chain:key-chain-ref; 1708 description 1709 "Key chain name to authenticate RSVP 1710 signaling messages."; 1711 reference 1712 "RFC 2747: RSVP Cryptographic 1713 Authentication"; 1714 } 1715 } 1717 grouping hellos-extended_config { 1718 description 1719 "Configuration parameters relating to RSVP 1720 hellos"; 1721 leaf interface-based { 1722 type empty; 1723 description 1724 "Enable interface-based Hello adjacency if present."; 1725 } 1726 leaf hello-interval { 1727 type uint32; 1728 units milliseconds; 1729 description 1730 "Configure interval between successive Hello 1731 messages in milliseconds."; 1732 reference 1733 "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels. 1734 RFC 5495: Description of the Resource 1735 Reservation Protocol - Traffic-Engineered 1736 (RSVP-TE) Graceful Restart Procedures"; 1737 } 1738 leaf hello-misses { 1739 type uint32 { 1740 range "1..10"; 1741 } 1742 description 1743 "Configure max number of consecutive missed 1744 Hello messages."; 1745 reference 1746 "RFC 3209: RSVP-TE: Extensions to RSVP for 1747 LSP Tunnels RFC 5495: Description of the 1748 Resource Reservation Protocol - Traffic- 1749 Engineered (RSVP-TE) Graceful Restart 1750 Procedures"; 1751 } 1752 } 1754 grouping signaling-parameters-extended_config { 1755 description 1756 "Configuration parameters relating to RSVP 1757 signaling"; 1758 leaf refresh-interval { 1759 type uint32; 1760 description 1761 "Set interval between successive refreshes"; 1762 } 1763 leaf refresh-misses { 1764 type uint32; 1765 description 1766 "Set max number of consecutive missed 1767 messages for state expiry"; 1768 } 1769 leaf checksum { 1770 type boolean; 1771 description 1772 "Enable RSVP message checksum computation"; 1773 } 1774 leaf patherr-state-removal { 1775 type empty; 1776 description 1777 "State-Removal flag in Path Error message 1778 if present."; 1779 } 1780 } 1782 grouping refresh-reduction-extended_config { 1783 description 1784 "Configuration parameters relating to RSVP 1785 refresh reduction"; 1787 leaf bundle-message-max-size { 1788 type uint32 { 1789 range "512..65000"; 1790 } 1791 description 1792 "Configure maximum size (bytes) of a 1793 single RSVP Bundle message."; 1794 } 1795 leaf reliable-ack-hold-time { 1796 type uint32; 1797 units milliseconds; 1798 description 1799 "Configure hold time in milliseconds for 1800 sending RSVP ACK message(s)."; 1801 } 1802 leaf reliable-ack-max-size { 1803 type uint32; 1804 description 1805 "Configure max size of a single RSVP ACK 1806 message."; 1807 } 1808 leaf reliable-retransmit-time { 1809 type uint32; 1810 units milliseconds; 1811 description 1812 "Configure min delay in milliseconds to 1813 wait for an ACK before a retransmit."; 1815 } 1816 leaf reliable-srefresh { 1817 type empty; 1818 description 1819 "Configure use of reliable messaging for 1820 summary refresh if present."; 1821 } 1822 leaf summary-max-size { 1823 type uint32 { 1824 range "20..65000"; 1825 } 1826 description 1827 "Configure max size (bytes) of a single 1828 RSVP summary refresh message."; 1829 } 1830 } 1832 grouping packets-extended_state { 1833 description 1834 "Packet statistics."; 1835 leaf discontinuity-time { 1836 type yang:date-and-time; 1837 description 1838 "The time on the most recent occasion at which any one 1839 or more of the statistic counters suffered a 1840 discontinuity. If no such discontinuities have occurred 1841 since the last re-initialization of the local 1842 management subsystem, then this node contains the time 1843 the local management subsystem re-initialized itself."; 1844 } 1845 leaf out-dropped { 1846 type yang:counter64; 1847 description 1848 "Out packet drop count"; 1849 } 1851 leaf in-dropped { 1852 type yang:counter64; 1853 description 1854 "In packet drop count"; 1855 } 1857 leaf out-error { 1858 type yang:counter64; 1859 description 1860 "Out packet error count"; 1861 } 1862 leaf in-error { 1863 type yang:counter64; 1864 description 1865 "In packet rx error count"; 1866 } 1867 } 1869 grouping protocol-extended_state { 1870 description 1871 "RSVP protocol statistics."; 1872 } 1874 grouping errors-extended_state { 1875 description 1876 "Error statistics."; 1877 } 1879 grouping extended_state { 1880 description "RSVP statistic attributes."; 1881 uses packets-extended_state; 1882 uses protocol-extended_state; 1883 uses errors-extended_state; 1884 } 1886 /** 1887 * RSVP extensions augmentations 1888 */ 1890 /* RSVP globals graceful restart*/ 1891 augment "/rt:routing/rt:control-plane-protocols/" + 1892 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1893 "rsvp:graceful-restart" { 1894 description 1895 "RSVP globals configuration extensions"; 1896 uses graceful-restart-extended_config; 1897 } 1899 /* RSVP statistics augmentation */ 1900 augment "/rt:routing/rt:control-plane-protocols/" + 1901 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1902 "rsvp:statistics/rsvp:state/rsvp:packets" { 1903 description 1904 "RSVP packet stats extensions"; 1905 uses packets-extended_state; 1906 } 1907 augment "/rt:routing/rt:control-plane-protocols/" + 1908 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1909 "rsvp:statistics/rsvp:state/rsvp:messages" { 1911 description 1912 "RSVP protocol message stats extensions"; 1913 uses protocol-extended_state; 1914 } 1915 augment "/rt:routing/rt:control-plane-protocols/" + 1916 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1917 "rsvp:statistics/rsvp:state/rsvp:errors" { 1918 description 1919 "RSVP errors stats extensions"; 1920 uses errors-extended_state; 1921 } 1923 /** 1924 * RSVP all interfaces extensions 1925 */ 1927 /* RSVP interface signaling extensions */ 1928 augment "/rt:routing/rt:control-plane-protocols/" 1929 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { 1930 description 1931 "RSVP signaling all interfaces configuration extensions"; 1932 uses signaling-parameters-extended_config; 1933 } 1935 /* RSVP refresh reduction extension */ 1936 augment "/rt:routing/rt:control-plane-protocols/" 1937 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 1938 + "rsvp:refresh-reduction" { 1939 description 1940 "RSVP refresh-reduction all interface configuration 1941 extensions"; 1942 uses refresh-reduction-extended_config; 1943 } 1945 /* RSVP hellos extension */ 1946 augment "/rt:routing/rt:control-plane-protocols/" 1947 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 1948 + "rsvp:hellos" { 1949 description 1950 "RSVP hello all interfaces configuration extensions"; 1951 uses hellos-extended_config; 1952 } 1954 /* RSVP authentication extension */ 1955 augment "/rt:routing/rt:control-plane-protocols/" 1956 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 1957 + "rsvp:authentication" { 1958 description 1959 "RSVP authentication all interfaces configuration extensions"; 1960 uses authentication-extended_config; 1961 } 1963 /** 1964 * RSVP interface extensions 1965 */ 1967 /* RSVP interface signaling extensions */ 1968 augment "/rt:routing/rt:control-plane-protocols/" 1969 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 1970 "rsvp:interface" { 1971 description 1972 "RSVP signaling interface configuration extensions"; 1973 uses signaling-parameters-extended_config; 1974 } 1976 /* RSVP refresh reduction extension */ 1977 augment "/rt:routing/rt:control-plane-protocols/" 1978 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 1979 "rsvp:interface/rsvp:refresh-reduction" { 1980 description 1981 "RSVP refresh-reduction interface configuration extensions"; 1982 uses refresh-reduction-extended_config; 1983 } 1985 /* RSVP hellos extension */ 1986 augment "/rt:routing/rt:control-plane-protocols/" 1987 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 1988 "rsvp:interface/rsvp:hellos" { 1989 description 1990 "RSVP hello interface configuration extensions"; 1991 uses hellos-extended_config; 1992 } 1994 /* RSVP authentication extension */ 1995 augment "/rt:routing/rt:control-plane-protocols/" 1996 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 1997 "rsvp:interface/rsvp:authentication" { 1998 description 1999 "RSVP authentication interface configuration extensions"; 2000 uses authentication-extended_config; 2001 } 2002 } 2003 2005 Figure 5: RSVP extended YANG module 2007 4. IANA Considerations 2009 This document registers the following URIs in the IETF XML registry 2010 [RFC3688]. Following the format in [RFC3688], the following 2011 registration is requested to be made. 2013 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp XML: N/A, the requested 2014 URI is an XML namespace. 2016 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-extended XML: N/A, the 2017 requested URI is an XML namespace. 2019 This document registers a YANG module in the YANG Module Names 2020 registry [RFC6020]. 2022 name: ietf-rsvp namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp 2023 prefix: ietf-rsvp reference: RFC3209 2025 name: ietf-rsvp-extended namespace: urn:ietf:params:xml:ns:yang:ietf- 2026 rsvp-extended prefix: ietf-rsvp-extendeed reference: RFC3209 2028 5. Security Considerations 2030 The YANG module defined in this memo is designed to be accessed via 2031 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 2032 secure transport layer and the mandatory-to-implement secure 2033 transport is SSH [RFC6242]. The NETCONF access control model 2034 [RFC6536] provides means to restrict access for particular NETCONF 2036 users to a pre-configured subset of all available NETCONF protocol 2037 operations and content. 2039 There are a number of data nodes defined in the YANG module which are 2040 writable/creatable/deletable (i.e., config true, which is the 2041 default). These data nodes may be considered sensitive or vulnerable 2042 in some network environments. Write operations (e.g., ) 2043 to these data nodes without proper protection can have a negative 2044 effect on network operations. 2046 6. Acknowledgement 2048 The authors would like to thank Lou Berger, for reviewing and 2049 providing valuable feedback on this document. 2051 7. Contributors 2053 Xia Chen 2054 Huawei Technologies 2056 Email: jescia.chenxia@huawei.com 2058 Raqib Jones 2059 Brocade 2061 Email: raqib@Brocade.com 2063 Bin Wen 2064 Comcast 2066 Email: Bin_Wen@cable.comcast.com 2068 8. References 2070 8.1. Normative References 2072 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2073 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 2074 RFC2119, March 1997, . 2077 [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S. 2078 Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 2079 Functional Specification", RFC 2205, DOI 10.17487/RFC2205, 2080 September 1997, . 2082 [RFC2747] Baker, F., Lindell, B., and M. Talwar, "RSVP Cryptographic 2083 Authentication", RFC 2747, DOI 10.17487/RFC2747, January 2084 2000, . 2086 [RFC2961] Berger, L., Gan, D., Swallow, G., Pan, P., Tommasi, F., 2087 and S. Molendini, "RSVP Refresh Overhead Reduction 2088 Extensions", RFC 2961, DOI 10.17487/RFC2961, April 2001, 2089 . 2091 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 2092 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 2093 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 2094 . 2096 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 2097 Switching (GMPLS) Signaling Resource ReserVation Protocol- 2098 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, DOI 2099 10.17487/RFC3473, January 2003, . 2102 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2103 DOI 10.17487/RFC3688, January 2004, . 2106 [RFC5063] Satyanarayana, A., Ed. and R. Rahman, Ed., "Extensions to 2107 GMPLS Resource Reservation Protocol (RSVP) Graceful 2108 Restart", RFC 5063, DOI 10.17487/RFC5063, October 2007, 2109 . 2111 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2112 the Network Configuration Protocol (NETCONF)", RFC 6020, 2113 DOI 10.17487/RFC6020, October 2010, . 2116 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2117 and A. Bierman, Ed., "Network Configuration Protocol 2118 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2119 . 2121 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2122 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2123 . 2125 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 2126 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 2127 10.17487/RFC6536, March 2012, . 2130 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 2131 6991, DOI 10.17487/RFC6991, July 2013, . 2134 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 2135 Management", RFC 8022, DOI 10.17487/RFC8022, November 2136 2016, . 2138 8.2. Informative References 2140 [I-D.dsdt-nmda-guidelines] 2141 Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 2142 and R. Wilton, "Guidelines for YANG Module Authors 2143 (NMDA)", draft-dsdt-nmda-guidelines-01 (work in progress), 2144 May 2017. 2146 Authors' Addresses 2148 Vishnu Pavan Beeram 2149 Juniper Networks 2151 Email: vbeeram@juniper.net 2153 Tarek Saad (editor) 2154 Cisco Systems, Inc. 2156 Email: tsaad@cisco.com 2158 Rakesh Gandhi 2159 Cisco Systems, Inc. 2161 Email: rgandhi@cisco.com 2163 Xufeng Liu 2164 Jabil 2166 Email: Xufeng_Liu@jabil.com 2168 Igor Bryskin 2169 Huawei Technologies 2171 Email: Igor.Bryskin@huawei.com 2173 Himanshu Shah 2174 Ciena 2176 Email: hshah@ciena.com