idnits 2.17.1 draft-ietf-teas-yang-rsvp-09.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 126 has weird spacing: '... rw for r...' == Line 127 has weird spacing: '... ro for r...' == Line 515 has weird spacing: '...address ine...' == Line 773 has weird spacing: '...gnaling param...' -- The document date (May 08, 2018) is 2179 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-09) exists of draft-ietf-teas-yang-rsvp-te-03 Summary: 0 errors (**), 0 flaws (~~), 6 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: November 9, 2018 R. Gandhi 6 Cisco Systems, Inc. 7 X. Liu 8 Jabil 9 I. Bryskin 10 Huawei Technologies 11 H. Shah 12 Ciena 13 May 08, 2018 15 A YANG Data Model for Resource Reservation Protocol (RSVP) 16 draft-ietf-teas-yang-rsvp-09 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 https://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 November 9, 2018. 44 Copyright Notice 46 Copyright (c) 2018 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 (https://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. Configuration Inheritance . . . . . . . . . . . . . . . . 6 68 3. Model Organization . . . . . . . . . . . . . . . . . . . . . 7 69 3.1. RSVP Base YANG Model . . . . . . . . . . . . . . . . . . 7 70 3.1.1. Global Data . . . . . . . . . . . . . . . . . . . . . 8 71 3.1.2. Interface Data . . . . . . . . . . . . . . . . . . . 9 72 3.1.3. Neighbor Data . . . . . . . . . . . . . . . . . . . . 9 73 3.1.4. Session Data . . . . . . . . . . . . . . . . . . . . 9 74 3.1.5. Tree Diagram . . . . . . . . . . . . . . . . . . . . 9 75 3.1.6. YANG Module . . . . . . . . . . . . . . . . . . . . . 14 76 3.2. RSVP Extended YANG Model . . . . . . . . . . . . . . . . 32 77 3.2.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 32 78 3.2.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 34 79 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 44 80 5. Security Considerations . . . . . . . . . . . . . . . . . . . 44 81 6. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 45 82 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 45 83 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 45 84 8.1. Normative References . . . . . . . . . . . . . . . . . . 45 85 8.2. Informative References . . . . . . . . . . . . . . . . . 47 86 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 47 88 1. Introduction 90 YANG [RFC6020] is a data definition language that was introduced to 91 define the contents of a conceptual data store that allows networked 92 devices to be managed using NETCONF [RFC6241]. YANG is proving 93 relevant beyond its initial confines, as bindings to other interfaces 94 (e.g. ReST) and encoding other than XML (e.g. JSON) are being 95 defined. Furthermore, YANG data models can be used as the basis of 96 implementation for other interfaces, such as CLI and programmatic 97 APIs. 99 This document defines a YANG data model that can be used to configure 100 and manage the RSVP protocol [RFC2205]. This model covers RSVP 101 protocol building blocks that can be augmented and used by other RSVP 102 extension models- such as for signaling RSVP-TE MPLS (or other 103 technology specific) Label Switched Paths (LSP)s. 105 1.1. Terminology 107 In this document, the key words "MUST", "MUST NOT", "REQUIRED", 108 "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 109 and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 110 [RFC2119]. 112 1.2. Tree Diagram 114 A simplified graphical representation of the data model is presented 115 in each section of the model. The following notations are used for 116 the YANG model data tree representation. 118 120 is one of: 121 + for current 122 x for deprecated 123 o for obsolete 125 is one of: 126 rw for read-write configuration data 127 ro for read-only non-configuration data 128 -x for execution rpcs 129 -n for notifications 131 is the name of the node 133 If the node is augmented into the tree from another module, its name 134 is printed as : 136 is one of: 137 ? for an optional leaf or node 138 ! for a presence container 139 * for a leaf-list or list 140 Brackets [] for a list's keys 141 Curly braces {} for optional feature that make node 142 conditional 143 Colon : for marking case nodes 144 Ellipses ("...") subtree contents not shown 146 Parentheses enclose choice and case nodes, and case nodes are also 147 marked with a colon (":"). 149 is the name of the type for leafs and leaf-lists. 151 1.3. Prefixes in Data Node Names 153 In this document, names of data nodes and other data model objects 154 are prefixed using the standard prefix associated with the 155 corresponding YANG imported modules, as shown in Table 1. 157 +-----------+--------------------+-----------+ 158 | Prefix | YANG module | Reference | 159 +-----------+--------------------+-----------+ 160 | yang | ietf-yang-types | [RFC6991] | 161 | inet | ietf-inet-types | [RFC6991] | 162 | rt-type | ietf-routing-types | XX | 163 | key-chain | ietf-key-chain | XX | 164 +---------+----------------------+-----------+ 166 Table 1: Prefixes and corresponding YANG modules 168 2. Design Considerations 170 2.1. Module Hierarchy 172 The RSVP base YANG module augments the "control-plane-protocol" list 173 in ietf-routing [RFC8349] module with specific RSVP parameters in an 174 "rsvp" container. It also defines an extensiion identity "rsvp" of 175 base "rt:routing-protocol" to identify the RSVP protocol. 177 Some RSVP features are categorized as core to the function of the 178 protocol that are supported by most vendors claiming support for RSVP 179 protocol. Such features configuration and state are grouped in the 180 RSVP base module. 182 Other extended RSVP features are categorized as either optional or 183 providing knobs to better tune basic functionality of the RSVP 184 protocol. The support for extended RSVP features by all vendors is 185 considered optional. Such features are grouped in a separate RSVP 186 extended module. 188 The augmentation of the RSVP model by other models (e.g. RSVP-TE for 189 MPLS or other technologies) are outside the scope of this document 190 and are discussed in separate document(s), e.g. 191 [I-D.ietf-teas-yang-rsvp-te]. 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 that are commonly 213 in use. For example: 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. Configuration Inheritance 229 The defined data model supports configuration inheritance for 230 neighbors, and interfaces. Data elements defined in the main 231 container (e.g. the container that encompasses the list of 232 interfaces, or neighbors) are assumed to apply equally to all 233 elements of the list, unless overridden explicitly for a certain 234 element (e.g. interface). Vendors are expected to augment the above 235 container(s) to provide the list of inheritance command for their 236 implementations. 238 3. Model Organization 240 This document divides the RSVP model into two modules: base and 241 extended RSVP modules. Each module covers configuration, state, 242 notifications and RPCs data. The relationship between the different 243 modules is depicted in Figure 1. 245 3.1. RSVP Base YANG Model 247 The RSVP base YANG data model defines thee container "rsvp" as the 248 top level container in this data model. The presence of this 249 container enables the RSVP protocol functionality. 251 Data for such state is contained under the respective "state" sub- 252 container of the intended object (e.g. interface) as shown in 253 Figure 2. 255 module: ietf-rsvp 256 +--rw rsvp! 257 +--rw globals 258 . 259 . 260 +--rw interfaces 261 . 262 +-- ro state 263 <> 264 . 265 . 266 +--rw neighbors 267 . 268 +-- ro state 269 <> 270 . 271 . 272 +--rw sessions 273 . 274 +-- ro state 275 <> 276 . 277 rpcs: 278 +--x global-rpc 279 +--x interfaces-rpc 280 +--x neighbors-rpc 281 +--x sessions-rpc 282 notifications: 283 +--n global-notif 284 +--n interfaces-notif 285 +--n neighbors-notif 286 +--n sessions-notif 288 Figure 2: RSVP high-level tree model view 290 The following subsections provide overview of the parts of the model 291 pertaining to configuration and state data. 293 Configuration and state data are organized into those applicable 294 globally (node scope), per interfaces, per neighbors, or per session. 296 3.1.1. Global Data 298 The global data branch of the model covers configuration and state 299 that are applicable the RSVP protocol behavior. 301 3.1.2. Interface Data 303 The interface data branch of the data model covers configuration and 304 state elements relevant to one or all RSVP interfaces. Any data 305 configuration applied at the "interfaces" container level are equally 306 applicable to all interfaces - unless overridden by explicit 307 configuration under a specific interface. 309 3.1.3. Neighbor Data 311 The neighbor data branch of the data model covers configuration and 312 state elements relevant to RSVP neighbors. 314 3.1.4. Session Data 316 The sessions data branch covers configuration of elements relevant to 317 RSVP sessions. 319 3.1.5. Tree Diagram 321 module: ietf-rsvp 322 augment 323 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: 324 +--rw rsvp! 325 +--rw globals 326 | +--rw sessions 327 | | +--ro session* [local-index] 328 | | +--ro local-index -> ../state/local-index 329 | | +--ro state 330 | | +--ro local-index? uint64 331 | | +--ro destination-port? inet:port-number 332 | | +--ro source? inet:ip-address 333 | | +--ro destination? inet:ip-address 334 | | +--ro session-name? string 335 | | +--ro session-state? enumeration 336 | | +--ro session-type? identityref 337 | | +--ro psbs 338 | | | +--ro psb* 339 | | | +--ro source-port? inet:port-number 340 | | | +--ro expires-in? uint32 341 | | +--ro rsbs 342 | | +--ro rsb* 343 | | +--ro source-port? inet:port-number 344 | | +--ro reservation-style? identityref 345 | | +--ro expires-in? uint32 346 | +--rw statistics 347 | | +--ro state 348 | | +--ro messages 349 | | | +--ro ack-sent? yang:counter64 350 | | | +--ro ack-received? yang:counter64 351 | | | +--ro bundle-sent? yang:counter64 352 | | | +--ro bundle-received? yang:counter64 353 | | | +--ro hello-sent? yang:counter64 354 | | | +--ro hello-received? yang:counter64 355 | | | +--ro integrity-challenge-sent? yang:counter64 356 | | | +--ro integrity-challenge-received? yang:counter64 357 | | | +--ro integrity-response-sent? yang:counter64 358 | | | +--ro integrity-response-received? yang:counter64 359 | | | +--ro notify-sent? yang:counter64 360 | | | +--ro notify-received? yang:counter64 361 | | | +--ro path-sent? yang:counter64 362 | | | +--ro path-received? yang:counter64 363 | | | +--ro path-err-sent? yang:counter64 364 | | | +--ro path-err-received? yang:counter64 365 | | | +--ro path-tear-sent? yang:counter64 366 | | | +--ro path-tear-received? yang:counter64 367 | | | +--ro resv-sent? yang:counter64 368 | | | +--ro resv-received? yang:counter64 369 | | | +--ro resv-confirm-sent? yang:counter64 370 | | | +--ro resv-confirm-received? yang:counter64 371 | | | +--ro resv-err-sent? yang:counter64 372 | | | +--ro resv-err-received? yang:counter64 373 | | | +--ro resv-tear-sent? yang:counter64 374 | | | +--ro resv-tear-received? yang:counter64 375 | | | +--ro summary-refresh-sent? yang:counter64 376 | | | +--ro summary-refresh-received? yang:counter64 377 | | | +--ro unknown-messages-received? yang:counter64 378 | | +--ro packets 379 | | | +--ro sent? yang:counter64 380 | | | +--ro received? yang:counter64 381 | | +--ro errors 382 | | +--ro authenticate? yang:counter64 383 | | +--ro checksum? yang:counter64 384 | | +--ro packet-len? yang:counter64 385 | +--rw graceful-restart 386 | +--rw enabled? boolean 387 +--rw interfaces 388 | +--rw refresh-reduction 389 | | +--rw enabled? boolean 390 | +--rw hellos 391 | | +--rw enabled? boolean 392 | +--rw authentication 393 | | +--rw enabled? boolean 394 | | +--rw authentication-key? string 395 | | +--rw crypto-algorithm identityref 396 | +--rw statistics 397 | | +--ro state 398 | | +--ro messages 399 | | | +--ro ack-sent? yang:counter64 400 | | | +--ro ack-received? yang:counter64 401 | | | +--ro bundle-sent? yang:counter64 402 | | | +--ro bundle-received? yang:counter64 403 | | | +--ro hello-sent? yang:counter64 404 | | | +--ro hello-received? yang:counter64 405 | | | +--ro integrity-challenge-sent? yang:counter64 406 | | | +--ro integrity-challenge-received? yang:counter64 407 | | | +--ro integrity-response-sent? yang:counter64 408 | | | +--ro integrity-response-received? yang:counter64 409 | | | +--ro notify-sent? yang:counter64 410 | | | +--ro notify-received? yang:counter64 411 | | | +--ro path-sent? yang:counter64 412 | | | +--ro path-received? yang:counter64 413 | | | +--ro path-err-sent? yang:counter64 414 | | | +--ro path-err-received? yang:counter64 415 | | | +--ro path-tear-sent? yang:counter64 416 | | | +--ro path-tear-received? yang:counter64 417 | | | +--ro resv-sent? yang:counter64 418 | | | +--ro resv-received? yang:counter64 419 | | | +--ro resv-confirm-sent? yang:counter64 420 | | | +--ro resv-confirm-received? yang:counter64 421 | | | +--ro resv-err-sent? yang:counter64 422 | | | +--ro resv-err-received? yang:counter64 423 | | | +--ro resv-tear-sent? yang:counter64 424 | | | +--ro resv-tear-received? yang:counter64 425 | | | +--ro summary-refresh-sent? yang:counter64 426 | | | +--ro summary-refresh-received? yang:counter64 427 | | | +--ro unknown-messages-received? yang:counter64 428 | | +--ro packets 429 | | | +--ro sent? yang:counter64 430 | | | +--ro received? yang:counter64 431 | | +--ro errors 432 | | +--ro authenticate? yang:counter64 433 | | +--ro checksum? yang:counter64 434 | | +--ro packet-len? yang:counter64 435 | +--rw interface* [interface] 436 | +--rw interface if:interface-ref 437 | +--rw refresh-reduction 438 | | +--rw enabled? boolean 439 | +--rw hellos 440 | | +--rw enabled? boolean 441 | +--rw authentication 442 | | +--rw enabled? boolean 443 | | +--rw authentication-key? string 444 | | +--rw crypto-algorithm identityref 445 | +--rw statistics 446 | +--ro state 447 | +--ro messages 448 | | +--ro ack-sent? 449 yang:counter64 450 | | +--ro ack-received? 451 yang:counter64 452 | | +--ro bundle-sent? 453 yang:counter64 454 | | +--ro bundle-received? 455 yang:counter64 456 | | +--ro hello-sent? 457 yang:counter64 458 | | +--ro hello-received? 459 yang:counter64 460 | | +--ro integrity-challenge-sent? 461 yang:counter64 462 | | +--ro integrity-challenge-received? 463 yang:counter64 464 | | +--ro integrity-response-sent? 465 yang:counter64 466 | | +--ro integrity-response-received? 467 yang:counter64 468 | | +--ro notify-sent? 469 yang:counter64 470 | | +--ro notify-received? 471 yang:counter64 472 | | +--ro path-sent? 473 yang:counter64 474 | | +--ro path-received? 475 yang:counter64 476 | | +--ro path-err-sent? 477 yang:counter64 478 | | +--ro path-err-received? 479 yang:counter64 480 | | +--ro path-tear-sent? 481 yang:counter64 482 | | +--ro path-tear-received? 483 yang:counter64 484 | | +--ro resv-sent? 485 yang:counter64 486 | | +--ro resv-received? 487 yang:counter64 488 | | +--ro resv-confirm-sent? 489 yang:counter64 490 | | +--ro resv-confirm-received? 491 yang:counter64 492 | | +--ro resv-err-sent? 493 yang:counter64 494 | | +--ro resv-err-received? 495 yang:counter64 496 | | +--ro resv-tear-sent? 497 yang:counter64 498 | | +--ro resv-tear-received? 499 yang:counter64 500 | | +--ro summary-refresh-sent? 501 yang:counter64 502 | | +--ro summary-refresh-received? 503 yang:counter64 504 | | +--ro unknown-messages-received? 505 yang:counter64 506 | +--ro packets 507 | | +--ro sent? yang:counter64 508 | | +--ro received? yang:counter64 509 | +--ro errors 510 | +--ro authenticate? yang:counter64 511 | +--ro checksum? yang:counter64 512 | +--ro packet-len? yang:counter64 513 +--rw neighbors 514 +--rw neighbor* [address] 515 +--rw address inet:ip-address 516 +--ro state 517 +--ro address? inet:ip-address 518 +--ro epoch? uint32 519 +--ro expiry-time? uint32 520 +--ro graceful-restart 521 | +--ro enabled? boolean 522 | +--ro local-restart-time? uint32 523 | +--ro local-recovery-time? uint32 524 | +--ro neighbor-restart-time? uint32 525 | +--ro neighbor-recovery-time? uint32 526 | +--ro helper-mode 527 | +--ro enabled? boolean 528 | +--ro max-helper-restart-time? uint32 529 | +--ro max-helper-recovery-time? uint32 530 | +--ro neighbor-restart-time-remaining? uint32 531 | +--ro neighbor-recovery-time-remaining? uint32 532 +--ro hello-status? enumeration 533 +--ro interface? if:interface-ref 534 +--ro neighbor-state? enumeration 535 +--ro refresh-reduction-capable? boolean 536 +--ro restart-count? yang:counter32 537 +--ro restart-time? yang:date-and-time 539 Figure 3: RSVP model tree diagram 541 3.1.6. YANG Module 543 file "ietf-rsvp@2017-10-29.yang" 544 module ietf-rsvp { 546 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp"; 548 /* Replace with IANA when assigned */ 549 prefix "rsvp"; 551 import ietf-interfaces { 552 prefix "if"; 553 } 555 import ietf-inet-types { 556 prefix inet; 557 } 559 import ietf-yang-types { 560 prefix "yang"; 561 } 563 import ietf-routing { 564 prefix "rt"; 565 } 567 import ietf-key-chain { 568 prefix "key-chain"; 569 } 571 organization 572 "IETF Traffic Engineering Architecture and Signaling (TEAS) 573 Working Group"; 575 contact 576 "WG Web: 577 WG List: 579 WG Chair: Lou Berger 580 582 WG Chair: Vishnu Pavan Beeram 583 585 Editor: Vishnu Pavan Beeram 586 588 Editor: Tarek Saad 589 591 Editor: Rakesh Gandhi 592 594 Editor: Himanshu Shah 595 597 Editor: Xufeng Liu 598 600 Editor: Xia Chen 601 603 Editor: Raqib Jones 604 606 Editor: Bin Wen 607 "; 609 description 610 "This module contains the RSVP YANG data model."; 612 revision "2017-10-29" { 613 description "Latest revision of RSVP yang module."; 614 reference "RFC2205"; 615 } 617 identity rsvp { 618 base "rt:routing-protocol"; 619 description "RSVP protocol"; 620 } 622 identity rsvp-session-type { 623 description "Base RSVP session type"; 624 } 626 identity rsvp-session-ipv4 { 627 base rsvp-session-type; 628 description "RSVP IPv4 session type"; 629 } 631 identity rsvp-session-ipv6 { 632 base rsvp-session-type; 633 description "RSVP IPv4 session type"; 634 } 636 identity reservation-style { 637 description "Base identity for reservation style"; 638 } 640 identity reservation-wildcard-filter { 641 base reservation-style; 642 description "Wildcard-Filter (WF) Style"; 643 reference "RFC2205"; 644 } 646 identity reservation-fixed-filter { 647 base reservation-style; 648 description "Fixed-Filter (FF) Style"; 649 reference "RFC2205"; 650 } 652 identity reservation-shared-explicit { 653 base reservation-style; 654 description "Shared Explicit (SE) Style"; 655 reference "RFC2205"; 656 } 658 grouping graceful-restart_config { 659 description 660 "Base configuration parameters relating to RSVP 661 Graceful-Restart"; 662 leaf enabled { 663 type boolean; 664 description 665 "'true' if RSVP Graceful Restart is enabled. 666 'false' if RSVP Graceful Restart is disabled."; 667 } 668 } 670 grouping graceful-restart { 671 description 672 "RSVP graceful restart parameters grouping"; 673 container graceful-restart { 674 description 675 "RSVP graceful restart parameters container"; 676 uses graceful-restart_config; 677 } 678 } 680 grouping refresh-reduction_config { 681 description 682 "Configuration parameters relating to RSVP 683 refresh reduction"; 685 leaf enabled { 686 type boolean; 687 description 688 "'true' if RSVP Refresh Reduction is enabled. 689 'false' if RSVP Refresh Reduction is disabled."; 690 } 691 } 693 grouping refresh-reduction { 694 description 695 "Top level grouping for RSVP refresh reduction 696 parameters"; 697 container refresh-reduction { 698 description 699 "Top level container for RSVP refresh reduction 700 parameters"; 701 uses refresh-reduction_config; 702 } 703 } 705 grouping authentication_config { 706 description 707 "Configuration parameters relating to RSVP 708 authentication"; 709 leaf enabled { 710 type boolean; 711 description 712 "'true' if RSVP Authentication is enabled. 713 'false' if RSVP Authentication is disabled."; 714 } 715 leaf authentication-key { 716 type string; 717 description 718 "An authentication key string"; 719 reference 720 "RFC 2747: RSVP Cryptographic Authentication"; 721 } 722 leaf crypto-algorithm { 723 type identityref { 724 base key-chain:crypto-algorithm; 725 } 726 mandatory true; 727 description 728 "Cryptographic algorithm associated with key."; 729 } 730 } 732 grouping authentication { 733 description 734 "Top level grouping for RSVP authentication parameters"; 735 container authentication { 736 description 737 "Top level container for RSVP authentication 738 parameters"; 739 uses authentication_config; 740 } 741 } 743 grouping hellos_config { 744 description 745 "Configuration parameters relating to RSVP 746 hellos"; 747 leaf enabled { 748 type boolean; 749 description 750 "'true' if RSVP Hello is enabled. 751 'false' if RSVP Hello is disabled."; 752 } 753 } 755 grouping hellos { 756 description 757 "Top level grouping for RSVP hellos parameters"; 758 container hellos { 759 description 760 "Top level container for RSVP hello parameters"; 761 uses hellos_config; 762 } 763 } 765 grouping signaling-parameters_config { 766 description 767 "Configuration parameters relating to RSVP 768 signaling"; 769 } 771 grouping signaling-parameters { 772 description 773 "Top level grouping for RSVP signaling parameters"; 774 uses signaling-parameters_config; 775 } 777 grouping session-attributes_state { 778 description 779 "Top level grouping for RSVP session properties"; 780 leaf local-index { 781 type uint64; 782 description 783 "The index used to identify the RSVP session 784 on the local network element. This index is 785 generated by the device and is unique only 786 to the local network element."; 787 } 788 leaf destination-port { 789 type inet:port-number; 790 description "RSVP destination port"; 791 reference "RFC2205"; 792 } 793 leaf source { 794 type inet:ip-address; 795 description "RSVP source address"; 796 reference "RFC2205"; 797 } 798 leaf destination { 799 type inet:ip-address; 800 description "RSVP destination address"; 801 reference "RFC2205"; 802 } 803 leaf session-name { 804 type string; 805 description 806 "The signaled name of this RSVP session."; 807 } 808 leaf session-state { 809 type enumeration { 810 enum "up" { 811 description 812 "RSVP session is up"; 813 } 814 enum "down" { 815 description 816 "RSVP session is down"; 817 } 818 } 819 description 820 "Enumeration of RSVP session states"; 821 } 822 leaf session-type { 823 type identityref { 824 base rsvp-session-type; 825 } 826 description "RSVP session type"; 827 } 828 container psbs { 829 description "Path State Block container"; 830 list psb { 831 description "List of path state blocks"; 832 leaf source-port { 833 type inet:port-number; 834 description "RSVP source port"; 835 reference "RFC2205"; 836 } 837 leaf expires-in { 838 type uint32; 839 units seconds; 840 description "Time to reservation expiry (in seconds)"; 841 } 842 } 843 } 844 container rsbs { 845 description "Reservation State Block container"; 846 list rsb { 847 description "List of reservation state blocks"; 848 leaf source-port { 849 type inet:port-number; 850 description "RSVP source port"; 851 reference "RFC2205"; 852 } 853 leaf reservation-style { 854 type identityref { 855 base reservation-style; 856 } 857 description "RSVP reservation style"; 858 } 859 leaf expires-in { 860 type uint32; 861 units seconds; 862 description "Time to reservation expiry (in seconds)"; 863 } 864 } 865 } 866 } 868 grouping neighbor-attributes { 869 description 870 "Top level grouping for RSVP neighbor properties"; 871 leaf address { 872 type inet:ip-address; 873 description 874 "Address of RSVP neighbor"; 875 } 876 container state { 877 config false; 878 description 879 "State information associated with RSVP 880 neighbor properties"; 881 uses neighbor-derived_state; 882 } 883 } 885 grouping packets_state { 886 description 887 "Packet statistics grouping"; 888 container packets { 889 description 890 "Packet statistics container"; 891 leaf sent { 892 type yang:counter64; 893 description 894 "Packet sent count"; 895 } 897 leaf received { 898 type yang:counter64; 899 description 900 "Packet received count"; 901 } 902 } 903 } 905 grouping protocol_state { 906 description 907 "RSVP protocol statistics grouping"; 908 container messages { 909 description 910 "RSVP protocol statistics container"; 911 leaf ack-sent { 912 type yang:counter64; 913 description 914 "Hello sent count"; 915 } 917 leaf ack-received { 918 type yang:counter64; 919 description 920 "Hello received count"; 921 } 923 leaf bundle-sent { 924 type yang:counter64; 925 description 926 "Bundle sent count"; 927 } 929 leaf bundle-received { 930 type yang:counter64; 931 description 932 "Bundle received count"; 933 } 935 leaf hello-sent { 936 type yang:counter64; 937 description 938 "Hello sent count"; 939 } 941 leaf hello-received { 942 type yang:counter64; 943 description 944 "Hello received count"; 945 } 947 leaf integrity-challenge-sent { 948 type yang:counter64; 949 description 950 "Integrity Challenge sent count"; 951 } 953 leaf integrity-challenge-received { 954 type yang:counter64; 955 description 956 "Integrity Challenge received count"; 957 } 959 leaf integrity-response-sent { 960 type yang:counter64; 961 description 962 "Integrity Response sent count"; 963 } 965 leaf integrity-response-received { 966 type yang:counter64; 967 description 968 "Integrity Response received count"; 969 } 971 leaf notify-sent { 972 type yang:counter64; 973 description 974 "Notify sent count"; 975 } 977 leaf notify-received { 978 type yang:counter64; 979 description 980 "Notify received count"; 981 } 983 leaf path-sent { 984 type yang:counter64; 985 description 986 "Path sent count"; 987 } 989 leaf path-received { 990 type yang:counter64; 991 description 992 "Path received count"; 993 } 995 leaf path-err-sent { 996 type yang:counter64; 997 description 998 "Path error sent count"; 999 } 1001 leaf path-err-received { 1002 type yang:counter64; 1003 description 1004 "Path error received count"; 1005 } 1007 leaf path-tear-sent { 1008 type yang:counter64; 1009 description 1010 "Path tear sent count"; 1011 } 1013 leaf path-tear-received { 1014 type yang:counter64; 1015 description 1016 "Path tear received count"; 1017 } 1019 leaf resv-sent { 1020 type yang:counter64; 1021 description 1022 "Resv sent count"; 1023 } 1025 leaf resv-received { 1026 type yang:counter64; 1027 description 1028 "Resv received count"; 1029 } 1031 leaf resv-confirm-sent { 1032 type yang:counter64; 1033 description 1034 "Confirm sent count"; 1035 } 1037 leaf resv-confirm-received { 1038 type yang:counter64; 1039 description 1040 "Confirm received count"; 1041 } 1043 leaf resv-err-sent { 1044 type yang:counter64; 1045 description 1046 "Resv error sent count"; 1047 } 1049 leaf resv-err-received { 1050 type yang:counter64; 1051 description 1052 "Resv error received count"; 1053 } 1055 leaf resv-tear-sent { 1056 type yang:counter64; 1057 description 1058 "Resv tear sent count"; 1059 } 1061 leaf resv-tear-received { 1062 type yang:counter64; 1063 description 1064 "Resv tear received count"; 1065 } 1067 leaf summary-refresh-sent { 1068 type yang:counter64; 1069 description 1070 "Summary refresh sent count"; 1071 } 1073 leaf summary-refresh-received { 1074 type yang:counter64; 1075 description 1076 "Summary refresh received count"; 1077 } 1079 leaf unknown-messages-received { 1080 type yang:counter64; 1081 description 1082 "Unknown packet received count"; 1083 } 1084 } 1085 } 1087 grouping errors_state { 1088 description 1089 "Error statistics state grouping"; 1090 container errors { 1091 description 1092 "Error statistics state container"; 1093 leaf authenticate { 1094 type yang:counter64; 1095 description 1096 "The total number of packets received with an 1097 authentication failure."; 1098 } 1100 leaf checksum { 1101 type yang:counter64; 1102 description 1103 "The total number of packets received with an invalid 1104 checksum value."; 1105 } 1107 leaf packet-len { 1108 type yang:counter64; 1109 description 1110 "The total number of packets received with an invalid 1111 packet length."; 1112 } 1113 } 1114 } 1116 grouping statistics_state { 1117 description "RSVP statistic attributes."; 1118 container statistics { 1119 description 1120 "statistics state container"; 1121 container state { 1122 config false; 1123 description 1124 "State information associated with RSVP 1125 hello parameters"; 1126 uses protocol_state; 1127 uses packets_state; 1128 uses errors_state; 1129 } 1130 } 1131 } 1133 grouping neighbor-derived_state { 1134 description 1135 "Derived state at neighbor level."; 1137 leaf address { 1138 type inet:ip-address; 1139 description 1140 "Address of RSVP neighbor"; 1141 } 1143 leaf epoch { 1144 type uint32; 1145 description 1146 "Neighbor epoch."; 1147 } 1149 leaf expiry-time { 1150 type uint32; 1151 units seconds; 1152 description 1153 "Neighbor expiry time after which the neighbor state 1154 is purged if no states associated with it"; 1155 } 1157 container graceful-restart { 1158 description 1159 "Graceful restart information."; 1161 leaf enabled { 1162 type boolean; 1163 description 1164 "'true' if graceful restart is enabled for the 1165 neighbor."; 1166 } 1168 leaf local-restart-time { 1169 type uint32; 1170 units seconds; 1171 description 1172 "Local node restart time"; 1173 } 1175 leaf local-recovery-time { 1176 type uint32; 1177 units seconds; 1178 description 1179 "Local node recover time"; 1180 } 1182 leaf neighbor-restart-time { 1183 type uint32; 1184 units seconds; 1185 description 1186 "Neighbor restart time"; 1187 } 1189 leaf neighbor-recovery-time { 1190 type uint32; 1191 units seconds; 1192 description 1193 "Neighbor recover time"; 1194 } 1196 container helper-mode { 1197 description 1198 "Helper mode information "; 1200 leaf enabled { 1201 type boolean; 1202 description 1203 "'true' if helper mode is enabled."; 1204 } 1206 leaf max-helper-restart-time { 1207 type uint32; 1208 units seconds; 1209 description 1210 "The time the router or switch waits after it 1211 discovers that a neighboring router has gone down 1212 before it declares the neighbor down"; 1214 } 1216 leaf max-helper-recovery-time { 1217 type uint32; 1218 units seconds; 1219 description 1220 "The amount of time the router retains the state of its 1221 RSVP neighbors while they undergo a graceful restart"; 1222 } 1224 leaf neighbor-restart-time-remaining { 1225 type uint32; 1226 units seconds; 1227 description 1228 "Number of seconds remaining for neighbor to send 1229 Hello message after restart."; 1230 } 1232 leaf neighbor-recovery-time-remaining { 1233 type uint32; 1234 units seconds; 1235 description 1236 "Number of seconds remaining for neighbor to 1237 refresh."; 1238 } 1239 } // helper-mode 1240 } // graceful-restart 1242 leaf hello-status { 1243 type enumeration { 1244 enum "enabled" { 1245 description 1246 "Enabled"; 1247 } 1248 enum "disabled" { 1249 description 1250 "Disabled"; 1251 } 1252 enum "restarting" { 1253 description 1254 "Restarting"; 1255 } 1256 } 1257 description 1258 "Hello status"; 1259 } 1261 leaf interface { 1262 type if:interface-ref; 1263 description 1264 "Interface where RSVP neighbor was detected"; 1265 } 1267 leaf neighbor-state { 1268 type enumeration { 1269 enum "up" { 1270 description 1271 "up"; 1272 } 1273 enum "down" { 1274 description 1275 "down"; 1276 } 1277 enum "hello-disable" { 1278 description 1279 "hello-disable"; 1280 } 1281 enum "restarting" { 1282 description 1283 "restarting"; 1284 } 1285 } 1286 description 1287 "Neighbor state"; 1288 } 1290 leaf refresh-reduction-capable { 1291 type boolean; 1292 description 1293 "enables all RSVP refresh reduction message 1294 bundling, RSVP message ID, reliable message delivery 1295 and summary refresh"; 1296 reference 1297 "RFC 2961 RSVP Refresh Overhead Reduction 1298 Extensions"; 1299 } 1301 leaf restart-count { 1302 type yang:counter32; 1303 description 1304 "Number of times this neighbor restart"; 1305 } 1307 leaf restart-time { 1308 type yang:date-and-time; 1309 description 1310 "Last restart time of the neighbor"; 1311 } 1312 } 1314 grouping global-attributes { 1315 description 1316 "Top level grouping for RSVP global properties"; 1317 container sessions { 1318 description 1319 "RSVP sessions container"; 1320 list session { 1321 key "local-index"; 1322 config false; 1323 description 1324 "List of RSVP sessions"; 1326 leaf local-index { 1327 type leafref { 1328 path "../state/local-index"; 1329 } 1330 description 1331 "Reference to the local index for the RSVP 1332 session"; 1333 } 1334 container state { 1335 config false; 1336 description 1337 "State information associated with RSVP 1338 session parameters"; 1339 uses session-attributes_state; 1340 } 1341 } 1342 } 1343 uses statistics_state; 1344 } 1346 grouping intf-attributes { 1347 description 1348 "Top level grouping for RSVP interface properties"; 1349 uses signaling-parameters; 1350 uses refresh-reduction; 1351 uses hellos; 1352 uses authentication; 1353 uses statistics_state; 1354 } 1356 augment "/rt:routing/rt:control-plane-protocols/" 1357 + "rt:control-plane-protocol" { 1358 when "rt:type = 'rsvp:rsvp'" { 1359 description 1360 "This augment is only valid when routing protocol 1361 instance type is RSVP."; 1362 } 1363 description 1364 "RSVP protocol augmentation"; 1365 container rsvp { 1366 presence "Enable RSVP feature"; 1367 description "RSVP feature container"; 1368 container globals { 1369 description "RSVP global properties."; 1370 uses global-attributes; 1371 uses graceful-restart; 1372 } 1374 container interfaces { 1375 description 1376 "RSVP interfaces container"; 1377 uses intf-attributes; 1379 list interface { 1380 key "interface"; 1381 description 1382 "RSVP interfaces."; 1383 leaf interface { 1384 type if:interface-ref; 1385 description 1386 "RSVP interface."; 1387 } 1388 uses intf-attributes; 1389 } 1390 } 1392 container neighbors { 1393 description "RSVP neighbors container"; 1394 list neighbor { 1395 key "address"; 1396 description "List of RSVP neighbors"; 1397 uses neighbor-attributes; 1398 } 1399 } 1400 } 1401 } 1402 } 1403 1405 3.2. RSVP Extended YANG Model 1407 The RSVP extended YANG model covers optional or non-core RSVP 1408 feature(s). It also covers feature(s) that are not necessarily 1409 supported by all vendors, and hence, guarded with "if-feature" 1410 checks. 1412 3.2.1. Tree Diagram 1414 Figure 4 shows the YANG tree representation for configuration and 1415 state data that is augmenting the RSVP basic module: 1417 module: ietf-rsvp-extended 1418 augment 1419 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1420 rsvp:rsvp/rsvp:globals/rsvp:graceful-restart: 1421 +--rw restart-time? uint32 1422 +--rw recovery-time? uint32 1423 augment 1424 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1425 rsvp:rsvp/rsvp:globals/rsvp:statistics/rsvp:state/rsvp:packets: 1426 +--ro discontinuity-time? yang:date-and-time 1427 +--ro out-dropped? yang:counter64 1428 +--ro in-dropped? yang:counter64 1429 +--ro out-error? yang:counter64 1430 +--ro in-error? yang:counter64 1431 augment 1432 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1433 rsvp:rsvp/rsvp:globals/rsvp:statistics/rsvp:state/rsvp:messages: 1434 augment 1435 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1436 rsvp:rsvp/rsvp:globals/rsvp:statistics/rsvp:state/rsvp:errors: 1437 augment 1438 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1439 rsvp:rsvp/rsvp:interfaces: 1440 +--rw refresh-interval? uint32 1441 +--rw refresh-misses? uint32 1442 +--rw checksum? boolean 1443 +--rw patherr-state-removal? empty 1444 augment 1445 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1446 rsvp:rsvp/rsvp:interfaces/rsvp:refresh-reduction: 1447 +--rw bundle-message-max-size? uint32 1448 +--rw reliable-ack-hold-time? uint32 1449 +--rw reliable-ack-max-size? uint32 1450 +--rw reliable-retransmit-time? uint32 1451 +--rw reliable-srefresh? empty 1452 +--rw summary-max-size? uint32 1454 augment 1455 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1456 rsvp:rsvp/rsvp:interfaces/rsvp:hellos: 1457 +--rw interface-based? empty 1458 +--rw hello-interval? uint32 1459 +--rw hello-misses? uint32 1460 augment 1461 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1462 rsvp:rsvp/rsvp:interfaces/rsvp:authentication: 1463 +--rw lifetime? uint32 1464 +--rw window-size? uint32 1465 +--rw challenge? empty 1466 +--rw retransmits? uint32 1467 +--rw key-chain? key-chain:key-chain-ref 1468 augment 1469 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1470 rsvp:rsvp/rsvp:interfaces/rsvp:interface: 1471 +--rw refresh-interval? uint32 1472 +--rw refresh-misses? uint32 1473 +--rw checksum? boolean 1474 +--rw patherr-state-removal? empty 1475 augment 1476 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1477 rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:refresh-reduction: 1478 +--rw bundle-message-max-size? uint32 1479 +--rw reliable-ack-hold-time? uint32 1480 +--rw reliable-ack-max-size? uint32 1481 +--rw reliable-retransmit-time? uint32 1482 +--rw reliable-srefresh? empty 1483 +--rw summary-max-size? uint32 1484 augment 1485 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1486 rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:hellos: 1487 +--rw interface-based? empty 1488 +--rw hello-interval? uint32 1489 +--rw hello-misses? uint32 1490 augment 1491 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 1492 rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:authentication: 1493 +--rw lifetime? uint32 1494 +--rw window-size? uint32 1495 +--rw challenge? empty 1496 +--rw retransmits? uint32 1497 +--rw key-chain? key-chain:key-chain-ref 1499 Figure 4: RSVP extended model tree diagram 1501 3.2.2. YANG Module 1503 Figure 5 shows the RSVP extended YANG module: 1505 file "ietf-rsvp-extended@2017-10-29.yang" 1506 module ietf-rsvp-extended { 1508 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-extended"; 1510 prefix "rsvp-ext"; 1512 import ietf-rsvp { 1513 prefix "rsvp"; 1514 } 1516 import ietf-routing { 1517 prefix "rt"; 1518 } 1520 import ietf-yang-types { 1521 prefix "yang"; 1522 } 1524 import ietf-key-chain { 1525 prefix "key-chain"; 1526 } 1528 organization 1529 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1530 Working Group"; 1532 contact 1533 "WG Web: 1535 WG List: 1537 WG Chair: Lou Berger 1538 1540 WG Chair: Vishnu Pavan Beeram 1541 1543 Editor: Vishnu Pavan Beeram 1544 1546 Editor: Tarek Saad 1547 1549 Editor: Rakesh Gandhi 1550 1552 Editor: Himanshu Shah 1553 1555 Editor: Xufeng Liu 1556 1558 Editor: Xia Chen 1559 1561 Editor: Raqib Jones 1562 1564 Editor: Bin Wen 1565 "; 1567 description 1568 "This module contains the Extended RSVP YANG data model."; 1570 revision "2017-10-29" { 1571 description "Latest revision of RSVP extended yang module."; 1572 reference "RFC2205"; 1573 } 1575 /* RSVP features */ 1576 feature authentication { 1577 description 1578 "Indicates support for RSVP authentication"; 1579 } 1581 feature error-statistics { 1582 description 1583 "Indicates support for error statistics"; 1584 } 1586 feature global-statistics { 1587 description 1588 "Indicates support for global statistics"; 1589 } 1591 feature graceful-restart { 1592 description 1593 "Indicates support for RSVP graceful restart"; 1594 } 1596 feature hellos { 1597 description 1598 "Indicates support for RSVP hellos (RFC3209)."; 1599 } 1601 feature notify { 1602 description 1603 "Indicates support for RSVP notify message (RFC3473)."; 1604 } 1606 feature refresh-reduction { 1607 description 1608 "Indicates support for RSVP refresh reduction 1609 (RFC2961)."; 1610 } 1612 feature refresh-reduction-extended { 1613 description 1614 "Indicates support for RSVP refresh reduction 1615 (RFC2961)."; 1616 } 1618 feature per-interface-statistics { 1619 description 1620 "Indicates support for per interface statistics"; 1621 } 1623 grouping graceful-restart-extended_config { 1624 description 1625 "Configuration parameters relating to RSVP 1626 Graceful-Restart"; 1627 leaf restart-time { 1628 type uint32; 1629 units seconds; 1630 description 1631 "Graceful restart time (seconds)."; 1632 reference 1633 "RFC 5495: Description of the Resource 1634 Reservation Protocol - Traffic-Engineered 1635 (RSVP-TE) Graceful Restart Procedures"; 1636 } 1637 leaf recovery-time { 1638 type uint32; 1639 units seconds; 1640 description 1641 "RSVP state recovery time"; 1642 } 1643 } 1644 grouping authentication-extended_config { 1645 description 1646 "Configuration parameters relating to RSVP 1647 authentication"; 1648 leaf lifetime { 1649 type uint32 { 1650 range "30..86400"; 1651 } 1652 units seconds; 1653 description 1654 "Life time for each security association"; 1655 reference 1656 "RFC 2747: RSVP Cryptographic 1657 Authentication"; 1658 } 1659 leaf window-size { 1660 type uint32 { 1661 range "1..64"; 1662 } 1663 description 1664 "Window-size to limit number of out-of-order 1665 messages."; 1666 reference 1667 "RFC 2747: RSVP Cryptographic 1668 Authentication"; 1669 } 1670 leaf challenge { 1671 type empty; 1672 description 1673 "Enable challenge messages."; 1674 reference 1675 "RFC 2747: RSVP Cryptographic 1676 Authentication"; 1677 } 1678 leaf retransmits { 1679 type uint32 { 1680 range "1..10000"; 1681 } 1682 description 1683 "Number of retransmits when messages are 1684 dropped."; 1685 reference 1686 "RFC 2747: RSVP Cryptographic 1687 Authentication"; 1688 } 1689 leaf key-chain { 1690 type key-chain:key-chain-ref; 1691 description 1692 "Key chain name to authenticate RSVP 1693 signaling messages."; 1694 reference 1695 "RFC 2747: RSVP Cryptographic 1696 Authentication"; 1697 } 1698 } 1700 grouping hellos-extended_config { 1701 description 1702 "Configuration parameters relating to RSVP 1703 hellos"; 1704 leaf interface-based { 1705 type empty; 1706 description 1707 "Enable interface-based Hello adjacency if present."; 1708 } 1709 leaf hello-interval { 1710 type uint32; 1711 units milliseconds; 1712 description 1713 "Configure interval between successive Hello 1714 messages in milliseconds."; 1715 reference 1716 "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels. 1717 RFC 5495: Description of the Resource 1718 Reservation Protocol - Traffic-Engineered 1719 (RSVP-TE) Graceful Restart Procedures"; 1720 } 1721 leaf hello-misses { 1722 type uint32 { 1723 range "1..10"; 1724 } 1725 description 1726 "Configure max number of consecutive missed 1727 Hello messages."; 1728 reference 1729 "RFC 3209: RSVP-TE: Extensions to RSVP for 1730 LSP Tunnels RFC 5495: Description of the 1731 Resource Reservation Protocol - Traffic- 1732 Engineered (RSVP-TE) Graceful Restart 1733 Procedures"; 1734 } 1735 } 1737 grouping signaling-parameters-extended_config { 1738 description 1739 "Configuration parameters relating to RSVP 1740 signaling"; 1741 leaf refresh-interval { 1742 type uint32; 1743 description 1744 "Set interval between successive refreshes"; 1745 } 1746 leaf refresh-misses { 1747 type uint32; 1748 description 1749 "Set max number of consecutive missed 1750 messages for state expiry"; 1751 } 1752 leaf checksum { 1753 type boolean; 1754 description 1755 "Enable RSVP message checksum computation"; 1756 } 1757 leaf patherr-state-removal { 1758 type empty; 1759 description 1760 "State-Removal flag in Path Error message 1761 if present."; 1762 } 1763 } 1765 grouping refresh-reduction-extended_config { 1766 description 1767 "Configuration parameters relating to RSVP 1768 refresh reduction"; 1770 leaf bundle-message-max-size { 1771 type uint32 { 1772 range "512..65000"; 1773 } 1774 description 1775 "Configure maximum size (bytes) of a 1776 single RSVP Bundle message."; 1777 } 1778 leaf reliable-ack-hold-time { 1779 type uint32; 1780 units milliseconds; 1781 description 1782 "Configure hold time in milliseconds for 1783 sending RSVP ACK message(s)."; 1784 } 1785 leaf reliable-ack-max-size { 1786 type uint32; 1787 description 1788 "Configure max size of a single RSVP ACK 1789 message."; 1790 } 1791 leaf reliable-retransmit-time { 1792 type uint32; 1793 units milliseconds; 1794 description 1795 "Configure min delay in milliseconds to 1796 wait for an ACK before a retransmit."; 1797 } 1798 leaf reliable-srefresh { 1799 type empty; 1800 description 1801 "Configure use of reliable messaging for 1802 summary refresh if present."; 1803 } 1804 leaf summary-max-size { 1805 type uint32 { 1806 range "20..65000"; 1807 } 1808 description 1809 "Configure max size (bytes) of a single 1810 RSVP summary refresh message."; 1811 } 1812 } 1814 grouping packets-extended_state { 1815 description 1816 "Packet statistics."; 1817 leaf discontinuity-time { 1818 type yang:date-and-time; 1819 description 1820 "The time on the most recent occasion at which any one 1821 or more of the statistic counters suffered a 1822 discontinuity. If no such discontinuities have occurred 1823 since the last re-initialization of the local 1824 management subsystem, then this node contains the time 1825 the local management subsystem re-initialized itself."; 1826 } 1827 leaf out-dropped { 1828 type yang:counter64; 1829 description 1830 "Out packet drop count"; 1831 } 1833 leaf in-dropped { 1834 type yang:counter64; 1835 description 1836 "In packet drop count"; 1837 } 1839 leaf out-error { 1840 type yang:counter64; 1841 description 1842 "Out packet error count"; 1843 } 1845 leaf in-error { 1846 type yang:counter64; 1847 description 1848 "In packet rx error count"; 1849 } 1850 } 1852 grouping protocol-extended_state { 1853 description 1854 "RSVP protocol statistics."; 1855 } 1857 grouping errors-extended_state { 1858 description 1859 "Error statistics."; 1860 } 1862 grouping extended_state { 1863 description "RSVP statistic attributes."; 1864 uses packets-extended_state; 1865 uses protocol-extended_state; 1866 uses errors-extended_state; 1867 } 1869 /** 1870 * RSVP extensions augmentations 1871 */ 1873 /* RSVP globals graceful restart*/ 1874 augment "/rt:routing/rt:control-plane-protocols/" + 1875 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1876 "rsvp:graceful-restart" { 1877 description 1878 "RSVP globals configuration extensions"; 1879 uses graceful-restart-extended_config; 1880 } 1882 /* RSVP statistics augmentation */ 1883 augment "/rt:routing/rt:control-plane-protocols/" + 1884 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1885 "rsvp:statistics/rsvp:state/rsvp:packets" { 1886 description 1887 "RSVP packet stats extensions"; 1888 uses packets-extended_state; 1889 } 1890 augment "/rt:routing/rt:control-plane-protocols/" + 1891 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1892 "rsvp:statistics/rsvp:state/rsvp:messages" { 1893 description 1894 "RSVP protocol message stats extensions"; 1895 uses protocol-extended_state; 1896 } 1897 augment "/rt:routing/rt:control-plane-protocols/" + 1898 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1899 "rsvp:statistics/rsvp:state/rsvp:errors" { 1900 description 1901 "RSVP errors stats extensions"; 1902 uses errors-extended_state; 1903 } 1905 /** 1906 * RSVP all interfaces extensions 1907 */ 1909 /* RSVP interface signaling extensions */ 1910 augment "/rt:routing/rt:control-plane-protocols/" 1911 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { 1912 description 1913 "RSVP signaling all interfaces configuration extensions"; 1914 uses signaling-parameters-extended_config; 1915 } 1917 /* RSVP refresh reduction extension */ 1918 augment "/rt:routing/rt:control-plane-protocols/" 1919 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 1920 + "rsvp:refresh-reduction" { 1921 description 1922 "RSVP refresh-reduction all interface configuration 1923 extensions"; 1924 uses refresh-reduction-extended_config; 1925 } 1927 /* RSVP hellos extension */ 1928 augment "/rt:routing/rt:control-plane-protocols/" 1929 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 1930 + "rsvp:hellos" { 1931 description 1932 "RSVP hello all interfaces configuration extensions"; 1933 uses hellos-extended_config; 1934 } 1936 /* RSVP authentication extension */ 1937 augment "/rt:routing/rt:control-plane-protocols/" 1938 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 1939 + "rsvp:authentication" { 1940 description 1941 "RSVP authentication all interfaces configuration extensions"; 1942 uses authentication-extended_config; 1943 } 1945 /** 1946 * RSVP interface extensions 1947 */ 1949 /* RSVP interface signaling extensions */ 1950 augment "/rt:routing/rt:control-plane-protocols/" 1951 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 1952 "rsvp:interface" { 1953 description 1954 "RSVP signaling interface configuration extensions"; 1955 uses signaling-parameters-extended_config; 1956 } 1958 /* RSVP refresh reduction extension */ 1959 augment "/rt:routing/rt:control-plane-protocols/" 1960 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 1961 "rsvp:interface/rsvp:refresh-reduction" { 1962 description 1963 "RSVP refresh-reduction interface configuration extensions"; 1964 uses refresh-reduction-extended_config; 1965 } 1967 /* RSVP hellos extension */ 1968 augment "/rt:routing/rt:control-plane-protocols/" 1969 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 1970 "rsvp:interface/rsvp:hellos" { 1971 description 1972 "RSVP hello interface configuration extensions"; 1973 uses hellos-extended_config; 1974 } 1976 /* RSVP authentication extension */ 1977 augment "/rt:routing/rt:control-plane-protocols/" 1978 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 1979 "rsvp:interface/rsvp:authentication" { 1981 description 1982 "RSVP authentication interface configuration extensions"; 1983 uses authentication-extended_config; 1984 } 1985 } 1986 1988 Figure 5: RSVP extended YANG module 1990 4. IANA Considerations 1992 This document registers the following URIs in the IETF XML registry 1993 [RFC3688]. Following the format in [RFC3688], the following 1994 registration is requested to be made. 1996 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp XML: N/A, the requested 1997 URI is an XML namespace. 1999 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-extended XML: N/A, the 2000 requested URI is an XML namespace. 2002 This document registers a YANG module in the YANG Module Names 2003 registry [RFC6020]. 2005 name: ietf-rsvp namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp 2006 prefix: ietf-rsvp reference: RFC3209 2008 name: ietf-rsvp-extended namespace: urn:ietf:params:xml:ns:yang:ietf- 2009 rsvp-extended prefix: ietf-rsvp-extendeed reference: RFC3209 2011 5. Security Considerations 2013 The YANG module defined in this memo is designed to be accessed via 2014 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 2015 secure transport layer and the mandatory-to-implement secure 2016 transport is SSH [RFC6242]. The NETCONF access control model 2017 [RFC8341] provides means to restrict access for particular NETCONF 2019 users to a pre-configured subset of all available NETCONF protocol 2020 operations and content. 2022 There are a number of data nodes defined in the YANG module which are 2023 writable/creatable/deletable (i.e., config true, which is the 2024 default). These data nodes may be considered sensitive or vulnerable 2025 in some network environments. Write operations (e.g., ) 2026 to these data nodes without proper protection can have a negative 2027 effect on network operations. 2029 6. Acknowledgement 2031 The authors would like to thank Lou Berger, for reviewing and 2032 providing valuable feedback on this document. 2034 7. Contributors 2036 Xia Chen 2037 Huawei Technologies 2039 Email: jescia.chenxia@huawei.com 2041 Raqib Jones 2042 Brocade 2044 Email: raqib@Brocade.com 2046 Bin Wen 2047 Comcast 2049 Email: Bin_Wen@cable.comcast.com 2051 8. References 2053 8.1. Normative References 2055 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2056 Requirement Levels", BCP 14, RFC 2119, 2057 DOI 10.17487/RFC2119, March 1997, 2058 . 2060 [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S. 2061 Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 2062 Functional Specification", RFC 2205, DOI 10.17487/RFC2205, 2063 September 1997, . 2065 [RFC2747] Baker, F., Lindell, B., and M. Talwar, "RSVP Cryptographic 2066 Authentication", RFC 2747, DOI 10.17487/RFC2747, January 2067 2000, . 2069 [RFC2961] Berger, L., Gan, D., Swallow, G., Pan, P., Tommasi, F., 2070 and S. Molendini, "RSVP Refresh Overhead Reduction 2071 Extensions", RFC 2961, DOI 10.17487/RFC2961, April 2001, 2072 . 2074 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 2075 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 2076 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 2077 . 2079 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 2080 Switching (GMPLS) Signaling Resource ReserVation Protocol- 2081 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, 2082 DOI 10.17487/RFC3473, January 2003, 2083 . 2085 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2086 DOI 10.17487/RFC3688, January 2004, 2087 . 2089 [RFC5063] Satyanarayana, A., Ed. and R. Rahman, Ed., "Extensions to 2090 GMPLS Resource Reservation Protocol (RSVP) Graceful 2091 Restart", RFC 5063, DOI 10.17487/RFC5063, October 2007, 2092 . 2094 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2095 the Network Configuration Protocol (NETCONF)", RFC 6020, 2096 DOI 10.17487/RFC6020, October 2010, 2097 . 2099 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2100 and A. Bierman, Ed., "Network Configuration Protocol 2101 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2102 . 2104 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2105 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2106 . 2108 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2109 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2110 . 2112 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 2113 Access Control Model", STD 91, RFC 8341, 2114 DOI 10.17487/RFC8341, March 2018, 2115 . 2117 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 2118 Routing Management (NMDA Version)", RFC 8349, 2119 DOI 10.17487/RFC8349, March 2018, 2120 . 2122 8.2. Informative References 2124 [I-D.ietf-teas-yang-rsvp-te] 2125 Beeram, V., Saad, T., Gandhi, R., Liu, X., Bryskin, I., 2126 and H. Shah, "A YANG Data Model for RSVP-TE", draft-ietf- 2127 teas-yang-rsvp-te-03 (work in progress), February 2018. 2129 Authors' Addresses 2131 Vishnu Pavan Beeram 2132 Juniper Networks 2134 Email: vbeeram@juniper.net 2136 Tarek Saad (editor) 2137 Cisco Systems, Inc. 2139 Email: tsaad@cisco.com 2141 Rakesh Gandhi 2142 Cisco Systems, Inc. 2144 Email: rgandhi@cisco.com 2146 Xufeng Liu 2147 Jabil 2149 Email: Xufeng_Liu@jabil.com 2151 Igor Bryskin 2152 Huawei Technologies 2154 Email: Igor.Bryskin@huawei.com 2156 Himanshu Shah 2157 Ciena 2159 Email: hshah@ciena.com