idnits 2.17.1 draft-ietf-teas-yang-rsvp-17.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 : ---------------------------------------------------------------------------- ** There is 1 instance of too long lines in the document, the longest one being 1 character in excess of 72. -- The document has examples using IPv4 documentation addresses according to RFC6890, but does not use any IPv6 documentation addresses. Maybe there should be IPv6 examples, too? Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 498 has weird spacing: '...on-port uin...' == Line 512 has weird spacing: '...n-style ide...' == Line 543 has weird spacing: '...ce-name lea...' == Line 553 has weird spacing: '...on-port ine...' == Line 556 has weird spacing: '...ce-name lea...' == (1 more instance...) -- The document date (9 January 2022) is 836 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) No issues found here. Summary: 1 error (**), 0 flaws (~~), 7 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 TEAS Working Group V.P. Beeram 3 Internet-Draft T. Saad 4 Intended status: Standards Track Juniper Networks 5 Expires: 13 July 2022 R. Gandhi 6 Cisco Systems, Inc. 7 X. Liu 8 Volta Networks 9 I. Bryskin 10 Individual 11 9 January 2022 13 A YANG Data Model for Resource Reservation Protocol (RSVP) 14 draft-ietf-teas-yang-rsvp-17 16 Abstract 18 This document defines a YANG data model for the configuration and 19 management of the RSVP protocol. The YANG data model covers the 20 building blocks that may be augmented by other RSVP extension data 21 models such as RSVP Traffic-Engineering (RSVP-TE). It is divided 22 into two modules that cover the basic and extended RSVP features. 24 Status of This Memo 26 This Internet-Draft is submitted in full conformance with the 27 provisions of BCP 78 and BCP 79. 29 Internet-Drafts are working documents of the Internet Engineering 30 Task Force (IETF). Note that other groups may also distribute 31 working documents as Internet-Drafts. The list of current Internet- 32 Drafts is at https://datatracker.ietf.org/drafts/current/. 34 Internet-Drafts are draft documents valid for a maximum of six months 35 and may be updated, replaced, or obsoleted by other documents at any 36 time. It is inappropriate to use Internet-Drafts as reference 37 material or to cite them other than as "work in progress." 39 This Internet-Draft will expire on 13 July 2022. 41 Copyright Notice 43 Copyright (c) 2022 IETF Trust and the persons identified as the 44 document authors. All rights reserved. 46 This document is subject to BCP 78 and the IETF Trust's Legal 47 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 48 license-info) in effect on the date of publication of this document. 49 Please review these documents carefully, as they describe your rights 50 and restrictions with respect to this document. Code Components 51 extracted from this document must include Revised BSD License text as 52 described in Section 4.e of the Trust Legal Provisions and are 53 provided without warranty as described in the Revised BSD License. 55 Table of Contents 57 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 58 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 59 2.1. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 60 2.2. Model Tree Diagram . . . . . . . . . . . . . . . . . . . 4 61 3. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 4 62 3.1. Module(s) Relationship . . . . . . . . . . . . . . . . . 5 63 3.2. Core Features . . . . . . . . . . . . . . . . . . . . . . 5 64 3.3. Optional Features . . . . . . . . . . . . . . . . . . . . 6 65 3.4. Data Model Structure . . . . . . . . . . . . . . . . . . 6 66 3.5. Model Notifications . . . . . . . . . . . . . . . . . . . 8 67 4. RSVP Base YANG Model . . . . . . . . . . . . . . . . . . . . 9 68 4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 9 69 4.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 13 70 5. RSVP Extended YANG Model . . . . . . . . . . . . . . . . . . 34 71 5.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 34 72 5.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 36 73 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 74 7. Security Considerations . . . . . . . . . . . . . . . . . . . 46 75 8. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 47 76 9. Appendix A . . . . . . . . . . . . . . . . . . . . . . . . . 47 77 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 53 78 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 54 79 11.1. Normative References . . . . . . . . . . . . . . . . . . 54 80 11.2. Informative References . . . . . . . . . . . . . . . . . 56 81 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57 83 1. Introduction 85 YANG [RFC6020] and [RFC7950] is a data modeling language that was 86 introduced to define the contents of a conceptual data store that 87 allows networked devices to be managed using NETCONF [RFC6241]. YANG 88 has proved relevant beyond its initial confines, as bindings to other 89 interfaces (e.g. RESTCONF [RFC8040]) and encoding other than XML 90 (e.g. JSON) are being defined. Furthermore, YANG data models can be 91 used as the basis of implementation for other interfaces, such as CLI 92 and programmatic APIs. 94 This document defines a YANG data model for the configuration and 95 management of the RSVP protocol [RFC2205]. The data model is divided 96 into two modules: a base and extended RSVP YANG modules. The RSVP 97 base YANG 'ietf-rsvp' module covers the data that is core to the 98 function of the RSVP protocol and MUST be supported by vendors that 99 support RSVP protocol [RFC2205]. The RSVP extended 'ietf-rsvp- 100 extended' module covers the data that is optional, or provides 101 ability to tune RSVP protocol base functionality. The support for 102 RSVP extended module features by vendors is considered optional. 104 The RSVP YANG model provides the building blocks needed to allow 105 augmentation by other models that extend the RSVP protocol- such as 106 using RSVP extensions to signal Label Switched Paths (LSPs) as 107 defined in [RFC3209]. 109 The YANG module(s) defined in this document are compatible with the 110 Network Management Datastore Architecture (NMDA) [RFC7950]. 112 2. Requirements Language 114 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 115 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 116 "OPTIONAL" in this document are to be interpreted as described in BCP 117 14 [RFC2119] [RFC8174] when, and only when, they appear in all 118 capitals, as shown here. 120 The terminology for describing YANG data models is found in 121 [RFC7950]. 123 2.1. Prefixes in Data Node Names 125 In this document, names of data nodes and other data model objects 126 are prefixed using the standard prefix associated with the 127 corresponding YANG imported modules, as shown in Table 1. 129 +===========+====================+===========+ 130 | Prefix | YANG module | Reference | 131 +===========+====================+===========+ 132 | if | ietf-interfaces | [RFC8343] | 133 +-----------+--------------------+-----------+ 134 | rt | ietf-routing | [RFC8349] | 135 +-----------+--------------------+-----------+ 136 | rt-types | ietf-routing-types | [RFC8294] | 137 +-----------+--------------------+-----------+ 138 | inet | ietf-inet-types | [RFC6991] | 139 +-----------+--------------------+-----------+ 140 | yang | ietf-yang-types | [RFC6991] | 141 +-----------+--------------------+-----------+ 142 | key-chain | ietf-key-chain | [RFC8177] | 143 +-----------+--------------------+-----------+ 145 Table 1: Prefixes and corresponding YANG 146 modules 148 2.2. Model Tree Diagram 150 A full tree diagram of the module(s) defined in this document is 151 given in subsequent sections as per the syntax defined in [RFC8340]. 153 3. Model Overview 155 The RSVP YANG module augments the "control-plane-protocol" entry from 156 the 'ietf-routing' module defined in [RFC8349]. It also defines the 157 identity "rsvp" of base type "rt:routing-protocol" to identify the 158 RSVP routing protocol. 160 The 'ietf-rsvp' model defines a single instance of the RSVP protocol. 161 The top 'rsvp' container encompases data for one such RSVP protocol 162 instance. Multiple instances can be defined as multiple control- 163 plane protocols instances as described in [RFC8349]. 165 The YANG data model defined has the common building blocks for the 166 operation of the base RSVP protocol for the session type defined in 167 [RFC2205]. The augmentation of this model by other models (e.g. to 168 support RSVP Traffic Engineering (TE) extensions for signaling Label 169 Switched Paths (LSPs)) are outside the scope of this document and are 170 discussed in separate document(s). 172 3.1. Module(s) Relationship 174 This RSVP YANG data model defined in this document is divided into 175 two modules: a base and extended modules. The RSVP data covered in 176 'ietf-rsvp' module are categorized as core to the function of the 177 protocol and MUST be supported by vendors claiming the support for 178 RSVP protocol [RFC2205]. 180 The RSVP extended features that are covered in 'ietf-rsvp-extended' 181 module are categorized as either optional or providing ability to 182 better tune the basic functionality of the RSVP protocol. The 183 support for RSVP extended features by all vendors is considered 184 optional. 186 The relationship between the base and RSVP extended YANG modules and 187 the IETF routing YANG model is shown in Figure 1. 189 +--------------+ 190 Routing | ietf-routing | 191 +--------------+ 192 ^ 193 | 194 +-----------+ 195 RSVP module | ietf-rsvp | 196 +-----------+ 197 ^ 198 | ^: augment relationship 199 RSVP extended | 200 module +--------------------+ 201 | ietf-rsvp-extended | 202 +--------------------+ 204 Figure 1: Relationship of RSVP and RSVP extended modules with 205 other protocol modules 207 3.2. Core Features 209 The RSVP data covered in the 'ietf-rsvp' YANG module provides the 210 common building blocks that are required to configure, operate and 211 manage the RSVP protocol and MUST be supported by vendors that claim 212 the support for base RSVP protocol defined in [RFC2205]. 214 In addition, the following standard RSVP core features are modeled 215 under the 'ietf-rsvp' module: 217 * Basic operational statistics, including protocol messages, packets 218 and errors. 220 * Basic RSVP authentication feature as defined in [RFC2747]) using 221 string based authentication key. 223 * Basic RSVP Refresh Reduction feature as defined in ([RFC2961]). 225 * Basic RSVP Hellos feature as defined in ([RFC3209]) 227 * Basic RSVP Graceful Restart feature as defined in [RFC3473], 228 [RFC5063], and [RFC5495]. 230 3.3. Optional Features 232 Optional features are beyond the basic configuration, and operation 233 of the RSVP protocol. The decision whether to support these RSVP 234 features on a particular device is left to the vendor that supports 235 the RSVP core features. 237 The following optional features that are covered in the 'ietf-rsvp- 238 extended' YANG module: 240 * Advanced operational statistics, including protocol messages, 241 packets and errors. 243 * Advanced RSVP authentication features as defined in [RFC2747]) 244 using various authentication key types including those defined in 245 [RFC8177]. 247 * Advanced RSVP Refresh Reduction features defined in ([RFC2961]). 249 * Advanced RSVP Hellos features as defined in [RFC3209], and 250 [rfc4558]. 252 * Advanced RSVP Graceful Restart features as defined in [RFC3473], 253 [RFC5063], and [RFC5495]. 255 3.4. Data Model Structure 257 The RSVP YANG data model defines the 'rsvp' top-level container that 258 contains the configuration and operational state for the RSVP 259 protocol. The presence of this container enables the RSVP protocol 260 functionality. 262 The 'rsvp' top-level container also includes data that has router 263 level scope (i.e. applicable to all objects modeled under rsvp). It 264 also contains configuration and state data about the following types 265 of RSVP objects: 267 * interfaces 268 * neighbors 270 * sessions 272 The derived state data is contained in "read-only" nodes directly 273 under the intended object as shown in Figure 2. 275 module: ietf-rsvp 276 +--rw rsvp! 277 +--rw <> 278 . 279 . 280 +--rw interfaces 281 . 282 +-- ro <> 283 . 284 . 285 +--rw neighbors 286 . 287 +-- ro <> 288 . 289 . 290 +--rw sessions 291 . 292 +-- ro <> 293 . 294 rpcs: 295 +--x clear-session 296 +--x clear-neighbor 297 +--x clear-authentication 299 Figure 2: RSVP high-level tree model view 301 The following 303 'router-level': 305 The router-level scope configuration and state data are applicable 306 to all modeled objects under the top-level 'rsvp' container, and 307 MAY affect the RSVP protocol behavior. 309 'interfaces': 311 The 'interfaces' container includes a list of RSVP enabled 312 interfaces. It also includes RSVP configuration and state data 313 that is applicable to all interfaces. An entry in the interfaces 314 list MAY carry its own configuration or state data. Any data or 315 state under the "interfaces" container level is equally applicable 316 to all interfaces unless it is explicitly overridden by 317 configuration or state under a specific interface. 319 'neighbors' : 321 The 'neighbors' container includes a list of RSVP neighbors. An 322 entry in the RSVP neighbor list MAY carry its own configuration 323 and state relevant to the specific RSVP neighbor. The RSVP 324 neighbors can be dynamically discovered using RSVP signaling, or 325 can be explicitly configured. 327 'sessions': 329 The 'sessions' container includes a list RSVP sessions. An entry 330 in the RSVP session list MAY carry its own configuration and state 331 relevant to a specific RSVP session. RSVP sessions are usually 332 derived state that are created as result of signaling. This model 333 defines attributes related to IP RSVP sessions as defined in 334 [RFC2205]. 336 The defined YANG data model supports configuration inheritance for 337 neighbors, and interfaces. Data nodes defined under the main 338 container (e.g. the container that encompasses the list of 339 interfaces, or neighbors) are assumed to apply equally to all 340 elements of the list, unless overridden explicitly for a certain 341 element (e.g. interface). 343 3.5. Model Notifications 345 Modeling notifications data is key in any defined YANG data model. 346 [RFC8639] and [RFC8641] define a subscription and push mechanism for 347 YANG datastores. This mechanism currently allows the user to: 349 * Subscribe notifications on a per client basis 351 * Specify subtree filters [RFC6241] or XPath filters [RFC8639] so 352 that only interested contents will be sent. 354 * Specify either periodic or on-demand notifications. 356 4. RSVP Base YANG Model 358 The RSVP base module includes the core features and building blocks 359 for modeling the RSVP protocol as described in Section 3.2. 361 4.1. Tree Diagram 363 Figure 3 shows the YANG tree representation for configuration, state 364 data and RPCs that are covered in 'ietf-rsvp' YANG module: 366 module: ietf-rsvp 368 augment /rt:routing/rt:control-plane-protocols 369 /rt:control-plane-protocol: 370 +--rw rsvp! 371 +--rw interfaces 372 | +--rw refresh-reduction 373 | | +--rw enabled? boolean 374 | +--rw hellos 375 | | +--rw enabled? boolean 376 | +--rw authentication 377 | | +--rw enabled? boolean 378 | | +--rw authentication-key? string 379 | | +--rw crypto-algorithm identityref 380 | +--ro statistics 381 | | +--ro messages 382 | | | +--ro ack-sent? yang:counter64 383 | | | +--ro ack-received? yang:counter64 384 | | | +--ro bundle-sent? yang:counter64 385 | | | +--ro bundle-received? yang:counter64 386 | | | +--ro hello-sent? yang:counter64 387 | | | +--ro hello-received? yang:counter64 388 | | | +--ro integrity-challenge-sent? yang:counter64 389 | | | +--ro integrity-challenge-received? yang:counter64 390 | | | +--ro integrity-response-sent? yang:counter64 391 | | | +--ro integrity-response-received? yang:counter64 392 | | | +--ro notify-sent? yang:counter64 393 | | | +--ro notify-received? yang:counter64 394 | | | +--ro path-sent? yang:counter64 395 | | | +--ro path-received? yang:counter64 396 | | | +--ro path-err-sent? yang:counter64 397 | | | +--ro path-err-received? yang:counter64 398 | | | +--ro path-tear-sent? yang:counter64 399 | | | +--ro path-tear-received? yang:counter64 400 | | | +--ro resv-sent? yang:counter64 401 | | | +--ro resv-received? yang:counter64 402 | | | +--ro resv-confirm-sent? yang:counter64 403 | | | +--ro resv-confirm-received? yang:counter64 404 | | | +--ro resv-err-sent? yang:counter64 405 | | | +--ro resv-err-received? yang:counter64 406 | | | +--ro resv-tear-sent? yang:counter64 407 | | | +--ro resv-tear-received? yang:counter64 408 | | | +--ro srefresh-sent? yang:counter64 409 | | | +--ro srefresh-received? yang:counter64 410 | | | +--ro unknown-messages-received? yang:counter64 411 | | +--ro packets 412 | | | +--ro sent? yang:counter64 413 | | | +--ro received? yang:counter64 414 | | +--ro errors 415 | | +--ro authenticate? yang:counter64 416 | | +--ro checksum? yang:counter64 417 | | +--ro packet-length? yang:counter64 418 | +--rw interface* [name] 419 | +--rw name if:interface-ref 420 | +--rw refresh-reduction 421 | | +--rw enabled? boolean 422 | +--rw hellos 423 | | +--rw enabled? boolean 424 | +--rw authentication 425 | | +--rw enabled? boolean 426 | | +--rw authentication-key? string 427 | | +--rw crypto-algorithm identityref 428 | +--ro statistics 429 | +--ro messages 430 | | +--ro ack-sent? 431 | | | yang:counter64 432 | | +--ro ack-received? 433 | | | yang:counter64 434 | | +--ro bundle-sent? 435 | | | yang:counter64 436 | | +--ro bundle-received? 437 | | | yang:counter64 438 | | +--ro hello-sent? 439 | | | yang:counter64 440 | | +--ro hello-received? 441 | | | yang:counter64 442 | | +--ro integrity-challenge-sent? 443 | | | yang:counter64 444 | | +--ro integrity-challenge-received? 445 | | | yang:counter64 446 | | +--ro integrity-response-sent? 447 | | | yang:counter64 448 | | +--ro integrity-response-received? 449 | | | yang:counter64 450 | | +--ro notify-sent? 451 | | | yang:counter64 452 | | +--ro notify-received? 453 | | | yang:counter64 454 | | +--ro path-sent? 455 | | | yang:counter64 456 | | +--ro path-received? 457 | | | yang:counter64 458 | | +--ro path-err-sent? 459 | | | yang:counter64 460 | | +--ro path-err-received? 461 | | | yang:counter64 462 | | +--ro path-tear-sent? 463 | | | yang:counter64 464 | | +--ro path-tear-received? 465 | | | yang:counter64 466 | | +--ro resv-sent? 467 | | | yang:counter64 468 | | +--ro resv-received? 469 | | | yang:counter64 470 | | +--ro resv-confirm-sent? 471 | | | yang:counter64 472 | | +--ro resv-confirm-received? 473 | | | yang:counter64 474 | | +--ro resv-err-sent? 475 | | | yang:counter64 476 | | +--ro resv-err-received? 477 | | | yang:counter64 478 | | +--ro resv-tear-sent? 479 | | | yang:counter64 480 | | +--ro resv-tear-received? 481 | | | yang:counter64 482 | | +--ro srefresh-sent? 483 | | | yang:counter64 484 | | +--ro srefresh-received? 485 | | | yang:counter64 486 | | +--ro unknown-messages-received? 487 | | yang:counter64 488 | +--ro packets 489 | | +--ro sent? yang:counter64 490 | | +--ro received? yang:counter64 491 | +--ro errors 492 | +--ro authenticate? yang:counter64 493 | +--ro checksum? yang:counter64 494 | +--ro packet-length? yang:counter64 495 +--rw sessions 496 | +--ro session-ip* 497 | [destination protocol-id destination-port] 498 | +--ro destination-port uint16 499 | +--ro protocol-id uint8 500 | +--ro source? inet:ip-address 501 | +--ro destination inet:ip-address 502 | +--ro session-name? string 503 | +--ro session-status? enumeration 504 | +--ro session-type identityref 505 | +--ro psbs 506 | | +--ro psb* [] 507 | | +--ro source-port? inet:port-number 508 | | +--ro expires-in? uint32 509 | +--ro rsbs 510 | +--ro rsb* [] 511 | +--ro source-port? inet:port-number 512 | +--ro reservation-style identityref 513 | +--ro expires-in? uint32 514 +--rw neighbors 515 | +--rw neighbor* [address] 516 | +--rw address inet:ip-address 517 | +--rw epoch? uint32 518 | +--rw expiry-time? uint32 519 | +--rw graceful-restart 520 | | +--ro neighbor-restart-time? uint32 521 | | +--ro neighbor-recovery-time? uint32 522 | | +--rw helper-mode 523 | | +--ro neighbor-restart-time-remaining? uint32 524 | | +--ro neighbor-recovery-time-remaining? uint32 525 | +--ro hello-status? enumeration 526 | +--rw interface? if:interface-ref 527 | +--ro neighbor-status? enumeration 528 | +--rw refresh-reduction-capable? boolean 529 | +--ro restart-count? yang:counter32 530 | +--ro restart-time? yang:date-and-time 531 +--rw graceful-restart 532 +--rw enabled? boolean 533 +--rw local-restart-time? uint32 534 +--rw local-recovery-time? uint32 535 +--rw helper-mode 536 +--rw enabled? boolean 537 +--rw max-helper-restart-time? uint32 538 +--rw max-helper-recovery-time? uint32 540 rpcs: 541 +---x clear-session 542 | +---w input 543 | +---w routing-protocol-instance-name leafref 544 | +---w (filter-type) 545 | +--:(match-all) 546 | | +---w all empty 547 | +--:(match-one) 548 | +---w session-info 549 | +---w (session-type) 550 | +--:(rsvp-session-ip) 551 | +---w destination leafref 552 | +---w protocol-id uint8 553 | +---w destination-port inet:ip-address 554 +---x clear-neighbor 555 | +---w input 556 | +---w routing-protocol-instance-name leafref 557 | +---w (filter-type) 558 | +--:(match-all) 559 | | +---w all empty 560 | +--:(match-one) 561 | +---w neighbor-address leafref 562 +---x clear-authentication 563 +---w input 564 +---w routing-protocol-instance-name leafref 565 +---w (filter-type) 566 +--:(match-all) 567 | +---w all empty 568 +--:(match-one-interface) 569 +---w interface? if:interface-ref 571 Figure 3: RSVP model tree diagram 573 4.2. YANG Module 575 The ietf-rsvp module imports from the following modules: 577 * ietf-interfaces defined in [RFC8343] 579 * ietf-yang-types and ietf-inet-types defined in [RFC6991] 581 * ietf-routing defined in [RFC8349] 583 * ietf-key-chain defined in [RFC8177] 585 * ietf-netconf-acm defined in [RFC8341] 587 This module also references the following documents: [RFC2205], 588 [RFC5495], [RFC3473], [RFC5063], [RFC2747], [RFC3209], and [RFC2961]. 590 file "ietf-rsvp@2021-12-02.yang" 591 module ietf-rsvp { 592 yang-version 1.1; 593 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp"; 595 /* Replace with IANA when assigned */ 596 prefix rsvp; 598 import ietf-interfaces { 599 prefix if; 600 reference 601 "RFC8343: A YANG Data Model for Interface Management"; 602 } 603 import ietf-inet-types { 604 prefix inet; 605 reference 606 "RFC6991: Common YANG Data Types"; 607 } 608 import ietf-yang-types { 609 prefix yang; 610 reference 611 "RFC6991: Common YANG Data Types"; 612 } 613 import ietf-routing { 614 prefix rt; 615 reference 616 "RFC8349: A YANG Data Model for Routing Management 617 (NMDA Version)"; 618 } 619 import ietf-key-chain { 620 prefix key-chain; 621 reference 622 "RFC8177: YANG Data Model for Key Chains"; 623 } 624 import ietf-netconf-acm { 625 prefix nacm; 626 reference 627 "RFC8341: Network Configuration Access Control Model"; 628 } 629 organization 630 "IETF Traffic Engineering Architecture and Signaling (TEAS) 631 Working Group"; 632 contact 633 "WG Web: 634 WG List: 636 Editor: Vishnu Pavan Beeram 637 639 Editor: Tarek Saad 640 642 Editor: Rakesh Gandhi 643 645 Editor: Xufeng Liu 646 648 Editor: Igor Bryskin 649 "; 650 description 651 "This module contains the RSVP YANG data model. 652 The model fully conforms to the Network Management Datastore 653 Architecture (NMDA). 655 Copyright (c) 2019 IETF Trust and the persons 656 identified as authors of the code. All rights reserved. 658 Redistribution and use in source and binary forms, with or 659 without modification, is permitted pursuant to, and subject 660 to the license terms contained in, the Simplified BSD License 661 set forth in Section 4.c of the IETF Trust's Legal Provisions 662 Relating to IETF Documents 663 (https://trustee.ietf.org/license-info). 664 This version of this YANG module is part of RFC XXXX; see 665 the RFC itself for full legal notices."; 667 // RFC Ed.: replace XXXX with actual RFC number and remove this 668 // note. 669 // RFC Ed.: update the date below with the date of RFC publication 670 // and remove this note. 672 revision 2021-12-02 { 673 description 674 "Initial version."; 675 reference 676 "RFCXXXX: A YANG Data Model for Resource Reservation Protocol 677 (RSVP)"; 678 } 680 identity rsvp { 681 base rt:routing-protocol; 682 description 683 "RSVP protocol"; 684 } 686 identity rsvp-session-type { 687 description 688 "Base RSVP session type"; 689 } 691 identity rsvp-session-ip { 692 base rsvp-session-type; 693 description 694 "RSVP IP session type"; 695 } 697 identity reservation-style { 698 description 699 "Base identity for reservation style."; 700 } 702 identity reservation-wildcard-filter { 703 base reservation-style; 704 description 705 "Wildcard-Filter (WF) Style."; 706 reference 707 "RFC2205"; 708 } 710 identity reservation-fixed-filter { 711 base reservation-style; 712 description 713 "Fixed-Filter (FF) Style."; 714 reference 715 "RFC2205"; 716 } 718 identity reservation-shared-explicit { 719 base reservation-style; 720 description 721 "Shared Explicit (SE) Style."; 722 reference 723 "RFC2205"; 724 } 726 grouping graceful-restart { 727 description 728 "RSVP graceful restart local parameters grouping."; 729 container graceful-restart { 730 description 731 "Graceful restart local information."; 732 leaf enabled { 733 type boolean; 734 default "false"; 735 description 736 "'true' if RSVP Graceful Restart is enabled. 737 'false' if RSVP Graceful Restart is disabled."; 738 reference "RFC5495"; 739 } 740 leaf local-restart-time { 741 type uint32; 742 units "seconds"; 743 default "120"; 744 description 745 "Time it takes the local node to restart its RSVP-TE 746 component (to the point where it can exchange RSVP 747 Hello with its neighbors). A value of 0xffffffff 748 indicates that the restart of the neighbor's control plane 749 may occur over an indeterminate interval and that the 750 operation of its data plane is unaffected by control plane 751 failures."; 752 reference "RFC3473"; 753 } 754 leaf local-recovery-time { 755 type uint32; 756 units "seconds"; 757 default "120"; 758 description 759 "The period of time, in seconds, that the local 760 node requires to re-synchronize RSVP and MPLS 761 forwarding state with its neighbor. A value of zero (0) 762 indicates that MPLS forwarding state was not preserved 763 across a particular reboot."; 764 reference "RFC3473"; 765 } 766 container helper-mode { 767 description 768 "Helper mode information. In this mode, the node 769 resynchronize its stored states with a neighbor whose 770 control plane has restarted. The helper mode term is 771 borrowed from RFC3623 and adopted by several vendors 772 vendors in their implementation of RSVP graceful restart."; 773 leaf enabled { 774 type boolean; 775 default "true"; 776 description 777 "'true' if helper mode is enabled."; 778 } 779 leaf max-helper-restart-time { 780 type uint32; 781 units "seconds"; 782 default "20"; 783 description 784 "The maximum time the router or switch waits after it 785 discovers that the neighboring router has gone down 786 before it declares the neighbor down."; 787 reference "RFC5063"; 788 } 789 leaf max-helper-recovery-time { 790 type uint32; 791 units "seconds"; 792 default "180"; 793 description 794 "The maximum amount of time the router retains the state 795 of its RSVP neighbors while they undergo a graceful 796 restart."; 797 reference "RFC5063"; 798 } 799 } 800 } 801 } 802 grouping neighbor-graceful-restart { 803 description 804 "RSVP graceful restart neighbor parameters grouping."; 805 container graceful-restart { 806 description 807 "Graceful restart information."; 808 leaf neighbor-restart-time { 809 type uint32; 810 units "seconds"; 811 default "120"; 812 config false; 813 description 814 "Time it takes the neighbor node to restart its RSVP-TE 815 component (to the point where it can exchange RSVP 816 Hello with its neighbors). A value of 0xffffffff 817 indicates that the restart of the neighbor's control plane 818 may occur over an indeterminate interval and that the 819 operation of its data plane is unaffected by control plane 820 failures."; 821 reference "RFC3473"; 822 } 823 leaf neighbor-recovery-time { 824 type uint32; 825 units "seconds"; 826 default "120"; 827 config false; 828 description 829 "The period of time, in milliseconds, that the neighbor 830 node requires to re-synchronize RSVP and MPLS 831 forwarding state with its neighbor. A value of zero (0) 832 indicates that MPLS forwarding state was not preserved 833 across a particular reboot."; 834 reference "RFC3473"; 835 } 836 container helper-mode { 837 description 838 "Helper mode information."; 839 leaf neighbor-restart-time-remaining { 840 type uint32; 841 units "seconds"; 842 config false; 843 description 844 "Number of seconds remaining for neighbor to send Hello 845 message after restart."; 846 reference "RFC5063"; 847 } 848 leaf neighbor-recovery-time-remaining { 849 type uint32; 850 units "seconds"; 851 config false; 852 description 853 "Number of seconds remaining for neighbor to refresh."; 854 reference "RFC5063"; 855 } 856 } 857 // helper-mode 858 } 859 } 861 grouping refresh-reduction { 862 description 863 "Top level grouping for RSVP refresh reduction parameters."; 864 container refresh-reduction { 865 description 866 "Top level container for RSVP refresh reduction parameters."; 867 leaf enabled { 868 type boolean; 869 default "true"; 870 description 871 "'true' if RSVP Refresh Reduction is enabled. 872 'false' if RSVP Refresh Reduction is disabled."; 873 } 874 reference 875 "RFC2961 RSVP Refresh Overhead Reduction Extensions"; 876 } 877 } 879 grouping authentication { 880 description 881 "Top level grouping for RSVP authentication parameters."; 882 container authentication { 883 description 884 "Top level container for RSVP authentication parameters."; 886 leaf enabled { 887 type boolean; 888 default "false"; 889 description 890 "'true' if RSVP Authentication is enabled. 891 'false' if RSVP Authentication is disabled."; 892 } 893 leaf authentication-key { 894 type string; 895 default ""; 896 description 897 "An authentication key string."; 898 reference 899 "RFC2747: RSVP Cryptographic Authentication"; 900 } 901 leaf crypto-algorithm { 902 type identityref { 903 base key-chain:crypto-algorithm; 904 } 905 mandatory true; 906 description 907 "Cryptographic algorithm associated with key."; 908 } 909 } 910 } 912 grouping hellos { 913 description 914 "Top level grouping for RSVP hellos parameters."; 915 container hellos { 916 description 917 "Top level container for RSVP hello parameters."; 918 leaf enabled { 919 type boolean; 920 default "true"; 921 description 922 "'true' if RSVP Hello is enabled. 923 'false' if RSVP Hello is disabled."; 924 reference 925 "RFC3209: RSVP-TE: Extensions to RSVP for LSP Tunnels. 926 RFC5495: Description of the Resource Reservation Protocol - 927 Traffic-Engineered (RSVP-TE) Graceful Restart Procedures."; 928 } 929 } 930 } 932 grouping session-attributes { 933 description 934 "Top level grouping for RSVP session properties."; 935 leaf destination-port { 936 type uint16; 937 description 938 "RSVP destination port."; 939 reference 940 "RFC2205"; 941 } 942 leaf protocol-id { 943 type uint8; 944 description 945 "The IP protocol ID."; 946 reference 947 "RFC2205, section 3.2"; 948 } 949 leaf source { 950 type inet:ip-address; 951 description 952 "RSVP source address."; 953 reference 954 "RFC2205"; 955 } 956 leaf destination { 957 type inet:ip-address; 958 description 959 "RSVP destination address."; 960 reference 961 "RFC2205"; 962 } 963 leaf session-name { 964 type string; 965 default ""; 966 description 967 "The signaled name of this RSVP session."; 968 } 969 leaf session-status { 970 type enumeration { 971 enum up { 972 description 973 "RSVP session is up."; 974 } 975 enum down { 976 description 977 "RSVP session is down."; 978 } 979 } 980 default "down"; 981 description 982 "Enumeration of RSVP session states."; 983 } 984 leaf session-type { 985 type identityref { 986 base rsvp-session-type; 987 } 988 mandatory "true"; 989 description 990 "RSVP session type."; 991 } 992 container psbs { 993 description 994 "Path State Block (PSB) container."; 995 list psb { 996 description 997 "List of Path State Blocks."; 998 leaf source-port { 999 type inet:port-number; 1000 description 1001 "RSVP source port."; 1002 reference 1003 "RFC2205"; 1004 } 1005 leaf expires-in { 1006 type uint32; 1007 units "seconds"; 1008 default "180"; 1009 description 1010 "Time to expiry (in seconds)."; 1011 } 1012 } 1013 } 1014 container rsbs { 1015 description 1016 "Reservation State Block (RSB) container."; 1017 list rsb { 1018 description 1019 "List of Reservation State Blocks."; 1020 leaf source-port { 1021 type inet:port-number; 1022 description 1023 "RSVP source port."; 1024 reference 1025 "RFC2205"; 1026 } 1027 leaf reservation-style { 1028 type identityref { 1029 base reservation-style; 1031 } 1032 mandatory "true"; 1033 description 1034 "RSVP reservation style."; 1035 } 1036 leaf expires-in { 1037 type uint32; 1038 units "seconds"; 1039 default "180"; 1040 description 1041 "Time to expiry (in seconds)."; 1042 } 1043 } 1044 } 1045 } 1047 grouping neighbor-attributes { 1048 description 1049 "Top level grouping for RSVP neighbor properties."; 1050 leaf address { 1051 type inet:ip-address; 1052 description 1053 "Address of the RSVP neighbor."; 1054 } 1055 leaf epoch { 1056 type uint32; 1057 default "0"; 1058 description 1059 "Neighbor epoch."; 1060 reference "RFC5063"; 1061 } 1062 leaf expiry-time { 1063 type uint32; 1064 units "seconds"; 1065 default "180"; 1066 description 1067 "Neighbor expiry time after which the neighbor state is 1068 purged if no states associated with it."; 1069 } 1070 uses neighbor-graceful-restart { 1071 description 1072 "Allows configuration applicable to all 1073 neighbors"; 1074 } 1075 leaf hello-status { 1076 type enumeration { 1077 enum enabled { 1078 description 1079 "RSVP Hellos enabled."; 1080 } 1081 enum disabled { 1082 description 1083 "RSVP Hellos disabled."; 1084 } 1085 enum restarting { 1086 description 1087 "RSVP restarting."; 1088 } 1089 } 1090 config false; 1091 description 1092 "RSVP Hello status."; 1093 } 1094 leaf interface { 1095 type if:interface-ref; 1096 description 1097 "Interface where RSVP neighbor was detected."; 1098 } 1099 leaf neighbor-status { 1100 type enumeration { 1101 enum up { 1102 description 1103 "Neighbor state up."; 1104 } 1105 enum down { 1106 description 1107 "Neighbor state down."; 1108 } 1109 enum hello-disable { 1110 description 1111 "RSVP Hellos disabled."; 1112 } 1113 enum restarting { 1114 description 1115 "RSVP neighbor restarting."; 1116 } 1117 } 1118 config false; 1119 description 1120 "RSVP neighbor state."; 1121 } 1122 leaf refresh-reduction-capable { 1123 type boolean; 1124 default "true"; 1125 description 1126 "Enables all RSVP refresh reduction message bundling, RSVP 1127 message ID, reliable message delivery and Srefresh 1128 messages."; 1129 reference 1130 "RFC2961 RSVP Refresh Overhead Reduction Extensions"; 1131 } 1132 leaf restart-count { 1133 type yang:counter32; 1134 config false; 1135 description 1136 "Number of times this RSVP neighbor has restarted."; 1137 } 1138 leaf restart-time { 1139 type yang:date-and-time; 1140 config false; 1141 description 1142 "Last restart time of the RSVP neighbor."; 1143 reference "RFC3473"; 1144 } 1145 } 1147 grouping packet-statistics { 1148 description 1149 "Packet statistics grouping."; 1150 container packets { 1151 description 1152 "Packet statistics container."; 1153 leaf sent { 1154 type yang:counter64; 1155 description 1156 "RSVP packet sent count."; 1157 } 1158 leaf received { 1159 type yang:counter64; 1160 description 1161 "RSVP packet received count."; 1162 } 1163 } 1164 } 1166 grouping message-statistics { 1167 description 1168 "RSVP protocol statistics grouping."; 1169 container messages { 1170 description 1171 "RSVP protocol statistics container."; 1172 leaf ack-sent { 1173 type yang:counter64; 1174 description 1175 "RSVP Hello sent count."; 1176 } 1177 leaf ack-received { 1178 type yang:counter64; 1179 description 1180 "RSVP Hello received count."; 1181 } 1182 leaf bundle-sent { 1183 type yang:counter64; 1184 description 1185 "RSVP Bundle message sent count."; 1186 } 1187 leaf bundle-received { 1188 type yang:counter64; 1189 description 1190 "RSVP Bundle message received count."; 1191 } 1192 leaf hello-sent { 1193 type yang:counter64; 1194 description 1195 "RSVP Hello message sent count."; 1196 } 1197 leaf hello-received { 1198 type yang:counter64; 1199 description 1200 "RSVP Hello message received count."; 1201 } 1202 leaf integrity-challenge-sent { 1203 type yang:counter64; 1204 description 1205 "RSVP Integrity Challenge message sent count."; 1206 } 1207 leaf integrity-challenge-received { 1208 type yang:counter64; 1209 description 1210 "RSVP Integrity Challenge message received count."; 1211 } 1212 leaf integrity-response-sent { 1213 type yang:counter64; 1214 description 1215 "RSVP Integrity Response message sent count."; 1216 } 1217 leaf integrity-response-received { 1218 type yang:counter64; 1219 description 1220 "RSVP Integrity Response message received count."; 1221 } 1222 leaf notify-sent { 1223 type yang:counter64; 1224 description 1225 "RSVP Notify message sent count."; 1226 } 1227 leaf notify-received { 1228 type yang:counter64; 1229 description 1230 "RSVP Notify message received count."; 1231 } 1232 leaf path-sent { 1233 type yang:counter64; 1234 description 1235 "RSVP Path message sent count."; 1236 } 1237 leaf path-received { 1238 type yang:counter64; 1239 description 1240 "RSVP Path message received count."; 1241 } 1242 leaf path-err-sent { 1243 type yang:counter64; 1244 description 1245 "RSVP Path error message sent count."; 1246 } 1247 leaf path-err-received { 1248 type yang:counter64; 1249 description 1250 "RSVP Path error message received count."; 1251 } 1252 leaf path-tear-sent { 1253 type yang:counter64; 1254 description 1255 "RSVP Path tear message sent count."; 1256 } 1257 leaf path-tear-received { 1258 type yang:counter64; 1259 description 1260 "RSVP Path tear message received count."; 1261 } 1262 leaf resv-sent { 1263 type yang:counter64; 1264 description 1265 "RSVP Resv message sent count."; 1266 } 1267 leaf resv-received { 1268 type yang:counter64; 1269 description 1270 "RSVP Resv message received count."; 1272 } 1273 leaf resv-confirm-sent { 1274 type yang:counter64; 1275 description 1276 "RSVP Confirm message sent count."; 1277 } 1278 leaf resv-confirm-received { 1279 type yang:counter64; 1280 description 1281 "RSVP Confirm message received count."; 1282 } 1283 leaf resv-err-sent { 1284 type yang:counter64; 1285 description 1286 "RSVP Resv error message sent count."; 1287 } 1288 leaf resv-err-received { 1289 type yang:counter64; 1290 description 1291 "RSVP Resv error message received count."; 1292 } 1293 leaf resv-tear-sent { 1294 type yang:counter64; 1295 description 1296 "RSVP Resv tear message sent count."; 1297 } 1298 leaf resv-tear-received { 1299 type yang:counter64; 1300 description 1301 "RSVP Resv tear message received count."; 1302 } 1303 leaf srefresh-sent { 1304 type yang:counter64; 1305 description 1306 "RSVP Srefresh message sent count."; 1307 } 1308 leaf srefresh-received { 1309 type yang:counter64; 1310 description 1311 "RSVP Srefresh message received count."; 1312 } 1313 leaf unknown-messages-received { 1314 type yang:counter64; 1315 description 1316 "Unknown messages received count."; 1317 } 1318 } 1319 } 1320 grouping errors-statistics { 1321 description 1322 "Error statistics grouping."; 1323 container errors { 1324 description 1325 "Error statistics container."; 1326 leaf authenticate { 1327 type yang:counter64; 1328 description 1329 "The total number of RSVP packets received with an 1330 authentication failure."; 1331 } 1332 leaf checksum { 1333 type yang:counter64; 1334 description 1335 "The total number of RSVP packets received with an invalid 1336 checksum value."; 1337 } 1338 leaf packet-length { 1339 type yang:counter64; 1340 description 1341 "The total number of packets received with an invalid 1342 packet length."; 1343 } 1344 } 1345 } 1347 grouping statistics { 1348 description 1349 "RSVP statistic attributes."; 1350 container statistics { 1351 config false; 1352 description 1353 "RSVP statistics container."; 1354 uses message-statistics; 1355 uses packet-statistics; 1356 uses errors-statistics; 1357 } 1358 } 1360 grouping intf-attributes { 1361 description 1362 "Top level grouping for RSVP interface properties."; 1363 uses refresh-reduction; 1364 uses hellos; 1365 uses authentication; 1366 uses statistics; 1367 } 1368 augment "/rt:routing/rt:control-plane-protocols/" 1369 + "rt:control-plane-protocol" { 1370 when "rt:type = 'rsvp:rsvp'" { 1371 description 1372 "This augment is only valid when routing protocol instance 1373 type is RSVP."; 1374 } 1375 description 1376 "RSVP protocol augmentation."; 1377 container rsvp { 1378 presence "Enable RSVP feature"; 1379 description 1380 "RSVP feature container"; 1381 container interfaces { 1382 description 1383 "RSVP interfaces container."; 1384 uses intf-attributes; 1385 list interface { 1386 key "name"; 1387 description 1388 "RSVP interfaces."; 1389 leaf name { 1390 type if:interface-ref; 1391 description 1392 "RSVP interface."; 1393 } 1394 uses intf-attributes; 1395 } 1396 } 1397 container sessions { 1398 description 1399 "RSVP sessions container."; 1400 list session-ip { 1401 key "destination protocol-id destination-port"; 1402 config false; 1403 description 1404 "List of RSVP sessions."; 1405 uses session-attributes; 1406 } 1407 } 1408 container neighbors { 1409 description 1410 "RSVP neighbors container"; 1411 list neighbor { 1412 key "address"; 1413 description 1414 "List of RSVP neighbors"; 1415 uses neighbor-attributes; 1417 } 1418 } 1419 uses graceful-restart; 1420 } 1421 } 1423 grouping session-ref { 1424 description 1425 "Session reference information"; 1426 leaf destination { 1427 type leafref { 1428 path "/rt:routing/rt:control-plane-protocols" 1429 + "/rt:control-plane-protocol/rsvp:rsvp" 1430 + "/rsvp:sessions/rsvp:session-ip/destination"; 1431 } 1432 mandatory true; 1433 description 1434 "The RSVP session destination."; 1435 } 1436 leaf protocol-id { 1437 type uint8; 1438 mandatory true; 1439 description 1440 "The RSVP session protocol ID."; 1441 } 1442 leaf destination-port { 1443 type inet:ip-address; 1444 mandatory true; 1445 description 1446 "The RSVP session destination port."; 1447 } 1448 } 1450 rpc clear-session { 1451 nacm:default-deny-all; 1452 description 1453 "Clears RSVP sessions RPC"; 1454 input { 1455 leaf routing-protocol-instance-name { 1456 type leafref { 1457 path "/rt:routing/rt:control-plane-protocols/" 1458 + "rt:control-plane-protocol/rt:name"; 1459 } 1460 mandatory true; 1461 description 1462 "Name of the RSVP protocol instance whose session 1463 is being cleared. 1465 If the corresponding RSVP instance doesn't exist, 1466 then the operation will fail with an error-tag of 1467 'data-missing' and an error-app-tag of 1468 'routing-protocol-instance-not-found'."; 1469 } 1470 choice filter-type { 1471 mandatory true; 1472 description 1473 "Filter choice"; 1474 case match-all { 1475 leaf all { 1476 type empty; 1477 mandatory true; 1478 description 1479 "Match all RSVP sessions."; 1480 } 1481 } 1482 case match-one { 1483 container session-info { 1484 description 1485 "Specifies the specific session to invoke the operation 1486 on."; 1487 choice session-type { 1488 mandatory true; 1489 description 1490 "The RSVP session type."; 1491 case rsvp-session-ip { 1492 uses session-ref; 1493 } 1494 } 1495 } 1496 } 1497 } 1498 } 1499 } 1501 rpc clear-neighbor { 1502 nacm:default-deny-all; 1503 description 1504 "RPC to clear the RSVP Hello session to a neighbor."; 1505 input { 1506 leaf routing-protocol-instance-name { 1507 type leafref { 1508 path "/rt:routing/rt:control-plane-protocols/" 1509 + "rt:control-plane-protocol/rt:name"; 1510 } 1511 mandatory true; 1512 description 1513 "Name of the RSVP protocol instance whose session 1514 is being cleared. 1516 If the corresponding RSVP instance doesn't exist, 1517 then the operation will fail with an error-tag of 1518 'data-missing' and an error-app-tag of 1519 'routing-protocol-instance-not-found'."; 1520 } 1521 choice filter-type { 1522 mandatory true; 1523 description 1524 "The Filter choice."; 1525 case match-all { 1526 leaf all { 1527 type empty; 1528 mandatory true; 1529 description 1530 "Match all RSVP neighbor sessions."; 1531 } 1532 } 1533 case match-one { 1534 leaf neighbor-address { 1535 type leafref { 1536 path "/rt:routing/rt:control-plane-protocols" 1537 + "/rt:control-plane-protocol/rsvp:rsvp" 1538 + "/rsvp:neighbors/rsvp:neighbor/address"; 1539 } 1540 mandatory true; 1541 description 1542 "Match the specific RSVP neighbor session."; 1543 } 1544 } 1545 } 1546 } 1547 } 1549 rpc clear-authentication { 1550 nacm:default-deny-all; 1551 description 1552 "Clears the RSVP Security Association (SA) before the 1553 lifetime expires."; 1554 input { 1555 leaf routing-protocol-instance-name { 1556 type leafref { 1557 path "/rt:routing/rt:control-plane-protocols/" 1558 + "rt:control-plane-protocol/rt:name"; 1559 } 1560 mandatory true; 1561 description 1562 "Name of the RSVP protocol instance whose session 1563 is being cleared. 1565 If the corresponding RSVP instance doesn't exist, 1566 then the operation will fail with an error-tag of 1567 'data-missing' and an error-app-tag of 1568 'routing-protocol-instance-not-found'."; 1569 } 1570 choice filter-type { 1571 mandatory true; 1572 description 1573 "Filter choice"; 1574 case match-all { 1575 leaf all { 1576 type empty; 1577 mandatory true; 1578 description 1579 "Match all RSVP security associations."; 1580 } 1581 } 1582 case match-one-interface { 1583 leaf interface { 1584 type if:interface-ref; 1585 description 1586 "Interface where RSVP security association(s) to be 1587 detected."; 1588 } 1589 } 1590 } 1591 } 1592 } 1593 } 1594 1596 5. RSVP Extended YANG Model 1598 The RSVP extended module augments the RSVP base module with optional 1599 feature data as described in Section 3.3. 1601 5.1. Tree Diagram 1603 Figure 4 shows the YANG tree representation for configuration and 1604 state data that are covered in 'ietf-rsvp-extended' YANG module: 1606 module: ietf-rsvp-extended 1608 augment /rt:routing/rt:control-plane-protocols 1609 /rt:control-plane-protocol/rsvp:rsvp 1610 /rsvp:graceful-restart: 1611 augment /rt:routing/rt:control-plane-protocols 1612 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces: 1613 +--rw refresh-interval? uint32 1614 +--rw refresh-misses? uint32 1615 +--rw checksum-enable? empty 1616 +--rw patherr-state-removal? empty 1617 augment /rt:routing/rt:control-plane-protocols 1618 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1619 /rsvp:statistics/rsvp:packets: 1620 +--ro discontinuity-time? yang:date-and-time 1621 +--ro out-dropped? yang:counter64 1622 +--ro in-dropped? yang:counter64 1623 +--ro out-errors? yang:counter64 1624 +--ro in-errors? yang:counter64 1625 augment /rt:routing/rt:control-plane-protocols 1626 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1627 /rsvp:refresh-reduction: 1628 +--rw bundle-message-max-size? uint32 1629 +--rw ack-hold-time? uint32 1630 +--rw ack-max-size? uint32 1631 +--rw ack-retransmit-time? uint32 1632 +--rw srefresh-ack-desired? empty 1633 +--rw srefresh-max-size? uint32 1634 +--rw srefresh-relative-period? uint8 1635 augment /rt:routing/rt:control-plane-protocols 1636 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1637 /rsvp:hellos: 1638 +--rw interface-based? empty 1639 +--rw hello-interval? uint32 1640 +--rw hello-misses? uint32 1641 augment /rt:routing/rt:control-plane-protocols 1642 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1643 /rsvp:authentication: 1644 +--rw lifetime? uint32 1645 +--rw window-size? uint32 1646 +--rw challenge? empty 1647 +--rw retransmits? uint32 1648 +--rw key-chain? key-chain:key-chain-ref 1649 augment /rt:routing/rt:control-plane-protocols 1650 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1651 /rsvp:interface: 1652 +--rw refresh-interval? uint32 1653 +--rw refresh-misses? uint32 1654 +--rw checksum-enable? empty 1655 +--rw patherr-state-removal? empty 1656 augment /rt:routing/rt:control-plane-protocols 1657 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1658 /rsvp:interface/rsvp:statistics/rsvp:packets: 1659 +--ro discontinuity-time? yang:date-and-time 1660 +--ro out-dropped? yang:counter64 1661 +--ro in-dropped? yang:counter64 1662 +--ro out-errors? yang:counter64 1663 +--ro in-errors? yang:counter64 1664 augment /rt:routing/rt:control-plane-protocols 1665 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1666 /rsvp:interface/rsvp:refresh-reduction: 1667 +--rw bundle-message-max-size? uint32 1668 +--rw ack-hold-time? uint32 1669 +--rw ack-max-size? uint32 1670 +--rw ack-retransmit-time? uint32 1671 +--rw srefresh-ack-desired? empty 1672 +--rw srefresh-max-size? uint32 1673 +--rw srefresh-relative-period? uint8 1674 augment /rt:routing/rt:control-plane-protocols 1675 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1676 /rsvp:interface/rsvp:hellos: 1677 +--rw interface-based? empty 1678 +--rw hello-interval? uint32 1679 +--rw hello-misses? uint32 1680 augment /rt:routing/rt:control-plane-protocols 1681 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1682 /rsvp:interface/rsvp:authentication: 1683 +--rw lifetime? uint32 1684 +--rw window-size? uint32 1685 +--rw challenge? empty 1686 +--rw retransmits? uint32 1687 +--rw key-chain? key-chain:key-chain-ref 1689 Figure 4: RSVP extended module tree diagram 1691 5.2. YANG Module 1693 The 'ietf-rsvp-extended' module imports from the following modules: 1695 * ietf-rsvp defined in this document 1697 * ietf-routing defined in [RFC8349] 1699 * ietf-yang-types and ietf-inet-types defined in [RFC6991] 1701 * ietf-key-chain defined in [RFC8177] 1702 Figure 5 shows the RSVP extended YANG module: 1704 This module also references the following documents: [RFC3473], 1705 [RFC2747], [RFC3209], [RFC2205], [RFC2961], and [RFC5495]. 1707 file "ietf-rsvp-extended@2021-12-02.yang" 1708 module ietf-rsvp-extended { 1709 yang-version 1.1; 1710 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-extended"; 1711 prefix rsvp-extended; 1713 import ietf-rsvp { 1714 prefix rsvp; 1715 reference 1716 "RFCXXXX: A YANG Data Model for Resource Reservation Protocol 1717 (RSVP)"; 1718 } 1719 import ietf-routing { 1720 prefix rt; 1721 reference 1722 "RFC8349: A YANG Data Model for Routing Management 1723 (NMDA Version)"; 1724 } 1725 import ietf-yang-types { 1726 prefix yang; 1727 reference 1728 "RFC6991: Common YANG Data Types"; 1729 } 1730 import ietf-key-chain { 1731 prefix key-chain; 1732 reference 1733 "RFC8177: YANG Data Model for Key Chains"; 1734 } 1736 organization 1737 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1738 Working Group"; 1739 contact 1740 "WG Web: 1741 WG List: 1743 Editor: Vishnu Pavan Beeram 1744 1746 Editor: Tarek Saad 1747 1749 Editor: Rakesh Gandhi 1750 1752 Editor: Xufeng Liu 1753 1755 Editor: Igor Bryskin 1756 "; 1757 description 1758 "This module contains the Extended RSVP YANG data model. 1759 The model fully conforms to the Network Management Datastore 1760 Architecture (NMDA). 1762 Copyright (c) 2019 IETF Trust and the persons 1763 identified as authors of the code. All rights reserved. 1765 Redistribution and use in source and binary forms, with or 1766 without modification, is permitted pursuant to, and subject 1767 to the license terms contained in, the Simplified BSD License 1768 set forth in Section 4.c of the IETF Trust's Legal Provisions 1769 Relating to IETF Documents 1770 (https://trustee.ietf.org/license-info). 1771 This version of this YANG module is part of RFC XXXX; see 1772 the RFC itself for full legal notices."; 1774 // RFC Ed.: replace XXXX with actual RFC number and remove this 1775 // note. 1776 // RFC Ed.: update the date below with the date of RFC publication 1777 // and remove this note. 1779 revision 2021-12-02 { 1780 description 1781 "Initial version."; 1782 reference 1783 "RFCXXXX: A YANG Data Model for Resource Reservation Protocol 1784 (RSVP)"; 1785 } 1787 grouping graceful-restart-extended { 1788 description 1789 "Configuration parameters relating to RSVP Graceful-Restart."; 1790 } 1792 grouping authentication-extended { 1793 description 1794 "Configuration parameters relating to RSVP authentication."; 1795 leaf lifetime { 1796 type uint32 { 1797 range "30..86400"; 1799 } 1800 units "seconds"; 1801 default "30"; 1802 description 1803 "Life time for each security association."; 1804 reference 1805 "RFC2747: RSVP Cryptographic Authentication"; 1806 } 1807 leaf window-size { 1808 type uint32 { 1809 range "1..64"; 1810 } 1811 default "2"; 1812 description 1813 "Window-size to limit number of out-of-order messages."; 1814 reference 1815 "RFC2747: RSVP Cryptographic Authentication"; 1816 } 1817 leaf challenge { 1818 type empty; 1819 description 1820 "Enable challenge messages."; 1821 reference 1822 "RFC2747: RSVP Cryptographic Authentication"; 1823 } 1824 leaf retransmits { 1825 type uint32 { 1826 range "1..10000"; 1827 } 1828 default "1"; 1829 description 1830 "Number of retransmits when messages are dropped."; 1831 reference 1832 "RFC2747: RSVP Cryptographic Authentication"; 1833 } 1834 leaf key-chain { 1835 type key-chain:key-chain-ref; 1836 description 1837 "Key chain name to authenticate RSVP 1838 signaling messages."; 1839 reference 1840 "RFC2747: RSVP Cryptographic Authentication"; 1841 } 1842 } 1844 grouping hellos-extended { 1845 description 1846 "Configuration parameters relating to RSVP hellos"; 1848 leaf interface-based { 1849 type empty; 1850 description 1851 "Enable interface-based Hello adjacency if present."; 1852 } 1853 leaf hello-interval { 1854 type uint32; 1855 units "milliseconds"; 1856 default "9000"; 1857 description 1858 "Configure interval between successive Hello messages in 1859 milliseconds."; 1860 reference 1861 "RFC3209: RSVP-TE: Extensions to RSVP for LSP Tunnels. 1862 RFC5495: Description of the Resource Reservation Protocol - 1863 Traffic-Engineered (RSVP-TE) Graceful Restart Procedures."; 1864 } 1865 leaf hello-misses { 1866 type uint32 { 1867 range "1..10"; 1868 } 1869 default "3"; 1870 description 1871 "Configure max number of consecutive missed Hello messages."; 1872 reference 1873 "RFC3209: RSVP-TE: Extensions to RSVP for LSP Tunnels. 1874 RFC5495: Description of the Resource Reservation Protocol - 1875 Traffic- Engineered (RSVP-TE) Graceful Restart Procedures."; 1876 } 1877 } 1879 grouping signaling-parameters-extended { 1880 description 1881 "Configuration parameters relating to RSVP signaling"; 1882 leaf refresh-interval { 1883 type uint32; 1884 units "seconds"; 1885 default "30"; 1886 description 1887 "Set interval between successive refreshes"; 1888 reference "RFC2205"; 1889 } 1890 leaf refresh-misses { 1891 type uint32; 1892 default "9"; 1893 description 1894 "Set max number of consecutive missed messages for state 1895 expiry"; 1897 reference "RFC2205"; 1898 } 1899 leaf checksum-enable { 1900 type empty; 1901 description 1902 "Enable RSVP message checksum computation"; 1903 reference "RFC2205"; 1904 } 1905 leaf patherr-state-removal { 1906 type empty; 1907 description 1908 "State-Removal flag in Path Error message if present."; 1909 reference "RFC3473"; 1910 } 1911 } 1913 grouping refresh-reduction-extended { 1914 description 1915 "Configuration parameters relating to RSVP refresh reduction."; 1916 leaf bundle-message-max-size { 1917 type uint32 { 1918 range "512..65000"; 1919 } 1920 default "1500"; 1921 description 1922 "Configure maximum size (bytes) of a single RSVP Bundle 1923 message."; 1924 reference "RFC2961"; 1925 } 1926 leaf ack-hold-time { 1927 type uint32; 1928 units "milliseconds"; 1929 default "9000"; 1930 description 1931 "Configure hold time in milliseconds for sending RSVP ACK 1932 message(s)."; 1933 reference "RFC2961"; 1934 } 1935 leaf ack-max-size { 1936 type uint32; 1937 default "1500"; 1938 description 1939 "Configure max size of a single RSVP ACK message."; 1940 reference "RFC2961"; 1941 } 1942 leaf ack-retransmit-time { 1943 type uint32; 1944 units "milliseconds"; 1945 default "500"; 1946 description 1947 "Configure min delay in milliseconds to wait for an 1948 acknowledgment before being retransmitted."; 1949 reference "RFC2961"; 1950 } 1951 leaf srefresh-ack-desired { 1952 type empty; 1953 description 1954 "Enables the sending of MESSAGE_ID with ACK_Desired 1955 set with Srefresh messages."; 1956 reference "RFC2961"; 1957 } 1958 leaf srefresh-max-size { 1959 type uint32 { 1960 range "20..65000"; 1961 } 1962 default "1500"; 1963 description 1964 "Configure max size (bytes) of a single RSVP Srefresh 1965 message."; 1966 reference "RFC2961"; 1967 } 1968 leaf srefresh-relative-period { 1969 type uint8 { 1970 range "10..100"; 1971 } 1972 description 1973 "Configures the period of Srefreshes relative to standard 1974 refresh message period in percentage."; 1975 } 1976 } 1978 grouping packets-extended-statistics { 1979 description 1980 "Packet statistics."; 1981 leaf discontinuity-time { 1982 type yang:date-and-time; 1983 description 1984 "The time on the most recent occasion at which any one or 1985 more of the statistic counters suffered a discontinuity. 1986 If no such discontinuities have occurred since the last 1987 re-initialization of the local management subsystem, then 1988 this node contains the time the local management subsystem 1989 re-initialized itself."; 1990 } 1991 leaf out-dropped { 1992 type yang:counter64; 1993 description 1994 "Out RSVP packet drop count."; 1995 } 1996 leaf in-dropped { 1997 type yang:counter64; 1998 description 1999 "In RSVP packet drop count."; 2000 } 2001 leaf out-errors { 2002 type yang:counter64; 2003 description 2004 "Out RSVP packet errors count."; 2005 } 2006 leaf in-errors { 2007 type yang:counter64; 2008 description 2009 "In RSVP packet rx errors count."; 2010 } 2011 } 2013 /** 2014 * RSVP extensions augmentations 2015 */ 2016 /* RSVP graceful restart*/ 2018 augment "/rt:routing/rt:control-plane-protocols/" 2019 + "rt:control-plane-protocol/rsvp:rsvp/" 2020 + "rsvp:graceful-restart" { 2021 description 2022 "RSVP graceful restart configuration extensions"; 2023 uses graceful-restart-extended; 2024 } 2026 /** 2027 * RSVP all interfaces extensions 2028 */ 2030 /* RSVP interface signaling extensions */ 2031 augment "/rt:routing/rt:control-plane-protocols/" 2032 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { 2033 description 2034 "RSVP signaling all interfaces configuration extensions"; 2035 uses signaling-parameters-extended; 2036 } 2038 /* Packet statistics extension */ 2039 augment "/rt:routing/rt:control-plane-protocols/" 2040 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2041 + "rsvp:statistics/rsvp:packets" { 2042 description 2043 "RSVP packets all interfaces configuration extensions"; 2044 uses packets-extended-statistics; 2045 } 2047 /* RSVP refresh reduction extension */ 2048 augment "/rt:routing/rt:control-plane-protocols/" 2049 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2050 + "rsvp:refresh-reduction" { 2051 description 2052 "RSVP refresh-reduction all interface configuration 2053 extensions"; 2054 uses refresh-reduction-extended; 2055 } 2057 /* RSVP hellos extension */ 2058 augment "/rt:routing/rt:control-plane-protocols/" 2059 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2060 + "rsvp:hellos" { 2061 description 2062 "RSVP hello all interfaces configuration extensions"; 2063 uses hellos-extended; 2064 } 2066 /* RSVP authentication extension */ 2067 augment "/rt:routing/rt:control-plane-protocols/" 2068 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2069 + "rsvp:authentication" { 2070 description 2071 "RSVP authentication all interfaces configuration extensions"; 2072 uses authentication-extended; 2073 } 2075 /** 2076 * RSVP per interface extensions 2077 */ 2078 /* RSVP interface signaling extensions */ 2080 augment "/rt:routing/rt:control-plane-protocols/" 2081 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2082 + "rsvp:interface" { 2083 description 2084 "RSVP signaling interface configuration extensions"; 2085 uses signaling-parameters-extended; 2086 } 2087 /* Packet statistics extension */ 2088 augment "/rt:routing/rt:control-plane-protocols/" 2089 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2090 + "rsvp:interface/rsvp:statistics/rsvp:packets" { 2091 description 2092 "RSVP packet stats extensions"; 2093 uses packets-extended-statistics; 2094 } 2096 /* RSVP refresh reduction extension */ 2097 augment "/rt:routing/rt:control-plane-protocols/" 2098 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2099 + "rsvp:interface/rsvp:refresh-reduction" { 2100 description 2101 "RSVP refresh-reduction interface configuration extensions"; 2102 uses refresh-reduction-extended; 2103 } 2105 /* RSVP hellos extension */ 2106 augment "/rt:routing/rt:control-plane-protocols/" 2107 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2108 + "rsvp:interface/rsvp:hellos" { 2109 description 2110 "RSVP hello interface configuration extensions"; 2111 uses hellos-extended; 2112 } 2114 /* RSVP authentication extension */ 2115 augment "/rt:routing/rt:control-plane-protocols/" 2116 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2117 + "rsvp:interface/rsvp:authentication" { 2118 description 2119 "RSVP authentication interface configuration extensions"; 2120 uses authentication-extended; 2121 } 2122 } 2123 2125 Figure 5: RSVP extended YANG module 2127 6. IANA Considerations 2129 This document registers the following URIs in the IETF XML registry 2130 [RFC3688]. Following the format in [RFC3688], the following 2131 registration is requested to be made. 2133 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp 2134 Registrant Contact: The IESG. 2135 XML: N/A, the requested URI is an XML namespace. 2137 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-extended 2138 Registrant Contact: The IESG. 2139 XML: N/A, the requested URI is an XML namespace. 2141 This document registers two YANG modules in the YANG Module Names 2142 registry [RFC6020]. 2144 name: ietf-rsvp 2145 namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp 2146 prefix: rsvp 2147 reference: RFCXXXX 2149 name: ietf-rsvp-extended 2150 namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp-extended 2151 prefix: rsvp-extended 2152 reference: RFCXXXX 2154 7. Security Considerations 2156 The YANG module specified in this document defines a schema for data 2157 that is designed to be accessed via network management protocols such 2158 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 2159 is the secure transport layer, and the mandatory-to-implement secure 2160 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 2161 is HTTPS, and the mandatory-to-implement secure transport is TLS 2162 [RFC8446]. 2164 The Network Configuration Access Control Model (NACM) [RFC8341] 2165 provides the means to restrict access for particular NETCONF or 2166 RESTCONF users to a preconfigured subset of all available NETCONF or 2167 RESTCONF protocol operations and content. 2169 There are a number of data nodes defined in the YANG module(s) 2170 defined in this document that are writable/creatable/deletable (i.e., 2171 config true, which is the default). These data nodes may be 2172 considered sensitive or vulnerable in some network environments. 2173 Write operations (e.g., ) to these data nodes without 2174 proper protection can have a negative effect on network operations. 2175 These are the subtrees and data nodes and their sensitivity/ 2176 vulnerability: 2178 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 2179 rsvp:rsvp/ /rsvp:globals /rsvp:interfaces /rsvp:sessions 2180 All of which are considered sensitive and if access to either of 2181 these is compromised, it can result in temporary network outages 2182 or be employed to mount DoS attacks. 2184 Some of the readable data nodes in this YANG module may be considered 2185 sensitive or vulnerable in some network environments. It is thus 2186 important to control read access (e.g., via get, get-config, or 2187 notification) to these data nodes. These are the subtrees and data 2188 nodes and their sensitivity/vulnerability: 2190 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 2191 rsvp:rsvp/ /rsvp:globals /rsvp:interfaces /rsvp:sessions 2193 Additional information from these state data nodes can be inferred 2194 with respect to the network topology, and device location and 2195 subsequently be used to mount other attacks in the network. 2197 For RSVP authentication, the configuration supported is via the 2198 specification of key-chains [RFC8177] or the direct specification of 2199 key and authentication algorithm, and hence security considerations 2200 of [RFC8177] are inherited. This includes the considerations with 2201 respect to the local storage and handling of authentication keys. 2203 Some of the RPC operations defined in this YANG module may be 2204 considered sensitive or vulnerable in some network environments. It 2205 is thus important to control access to these operations. The RSVP 2206 YANG module support the "clear-session" and "clear-neighbor" RPCs. 2207 If access to either of these is compromised, they can result in 2208 temporary network outages be employed to mount DoS attacks. 2210 The security considerations spelled out in the YANG 1.1 specification 2211 [RFC7950] apply for this document as well. 2213 8. Acknowledgement 2215 The authors would like to thank Tom Petch for reviewing and providing 2216 useful feedback about the document. The authors would also like to 2217 thank Lou Berger for reviewing and providing valuable feedback on 2218 this document. 2220 9. Appendix A 2222 A simple network setup is shown in {fig-example title}. R1 runs the 2223 RSVP routing protocol on both interfaces 'ge0/0/0/1', and 2224 'ge0/0/0/2'. 2226 State on R1: 2228 Sessions: 2229 ========= 2230 Destination Protocol-ID Dest-port 2231 198.51.100.1 10 10 2233 Neighbors: 2234 ========== 2235 Neighbor Address Interface 2236 192.0.2.6 ge0/0/0/1 2238 192.0.2.5/30 2239 ge0/0/0/1 2240 +--- 2241 / 2242 +-----+ 2243 | R1 | 2244 +-----+ 2245 \ 2246 +--- 2247 ge0/0/0/2 2248 192.0.2.13/30 2250 Figure 6: Example of network configuration. 2252 The instance data tree could then be as follows: 2254 { 2255 "ietf-routing:routing": { 2256 "control-plane-protocols": { 2257 "control-plane-protocol": [ 2258 { 2259 "type": "rt:routing-protocol", 2260 "name": "rsvp:rsvp", 2261 "ietf-rsvp:rsvp": { 2262 "interfaces": { 2263 "refresh-reduction": { 2264 "enabled": true, 2265 "ietf-rsvp-extended:bundle-message-max-size": 2000, 2266 "ietf-rsvp-extended:reliable-ack-hold-time": 180, 2267 "ietf-rsvp-extended:reliable-ack-max-size": 2000, 2268 "ietf-rsvp-extended:reliable-retransmit-time": 180, 2269 "ietf-rsvp-extended:reliable-srefresh": [ 2270 null 2271 ], 2272 "ietf-rsvp-extended:summary-max-size": 2000 2273 }, 2274 "hellos": { 2275 "enabled": true, 2276 "ietf-rsvp-extended:interface-based": [ 2277 null 2278 ], 2279 "ietf-rsvp-extended:hello-interval": 27000, 2280 "ietf-rsvp-extended:hello-misses": 3 2281 }, 2282 "statistics": { 2283 "messages": { 2284 "ack-sent": "777", 2285 "ack-received": "4840", 2286 "bundle-sent": "2195", 2287 "bundle-received": "293", 2288 "hello-sent": "2516", 2289 "hello-received": "3535", 2290 "integrity-challenge-sent": "2737", 2291 "integrity-challenge-received": "2330", 2292 "integrity-response-sent": "895", 2293 "integrity-response-received": "1029", 2294 "path-sent": "1197", 2295 "path-received": "3568", 2296 "path-err-sent": "4658", 2297 "path-err-received": "695", 2298 "path-tear-sent": "3706", 2299 "path-tear-received": "2604", 2300 "resv-sent": "3353", 2301 "resv-received": "3129", 2302 "resv-err-sent": "1787", 2303 "resv-err-received": "3205", 2304 "resv-tear-sent": "4465", 2305 "resv-tear-received": "3056", 2306 "summary-refresh-sent": "655", 2307 "summary-refresh-received": "3856" 2308 }, 2309 "packets": { 2310 "sent": "2147", 2311 "received": "4374", 2312 "ietf-rsvp-extended:discontinuity-time": 2313 "2015-10-24T17:11:27+02:00", 2314 "ietf-rsvp-extended:out-dropped": "2696", 2315 "ietf-rsvp-extended:in-dropped": "941", 2316 "ietf-rsvp-extended:out-errors": "19", 2317 "ietf-rsvp-extended:in-errors": "2732" 2318 }, 2319 "errors": { 2320 "authenticate": "2540", 2321 "checksum": "2566", 2322 "packet-length": "267" 2323 } 2324 }, 2325 "interface": [ 2326 { 2327 "interface": "ge0/0/0/1", 2328 "statistics": { 2329 "messages": { 2330 "ack-sent": "2747", 2331 "ack-received": "4934", 2332 "bundle-sent": "1618", 2333 "bundle-received": "3668", 2334 "hello-sent": "4288", 2335 "hello-received": "1194", 2336 "integrity-challenge-sent": "4850", 2337 "integrity-challenge-received": "3979", 2338 "integrity-response-sent": "479", 2339 "integrity-response-received": "1773", 2340 "path-sent": "2230", 2341 "path-received": "1793", 2342 "path-err-sent": "465", 2343 "path-err-received": "1859", 2344 "path-tear-sent": "923", 2345 "path-tear-received": "3924", 2346 "resv-sent": "3203", 2347 "resv-received": "2507", 2348 "resv-err-sent": "1259", 2349 "resv-err-received": "2445", 2350 "resv-tear-sent": "3045", 2351 "resv-tear-received": "4676", 2352 "summary-refresh-sent": "365", 2353 "summary-refresh-received": "2129" 2354 }, 2355 "packets": { 2356 "sent": "847", 2357 "received": "3114", 2358 "ietf-rsvp-extended:discontinuity-time": 2359 "2015-10-24T17:11:27+02:00", 2360 "ietf-rsvp-extended:out-dropped": "1841", 2361 "ietf-rsvp-extended:in-dropped": "4832", 2362 "ietf-rsvp-extended:out-errors": "1334", 2363 "ietf-rsvp-extended:in-errors": "3900" 2364 }, 2365 "errors": { 2366 "authenticate": "3494", 2367 "checksum": "4374", 2368 "packet-length": "2456" 2369 } 2371 } 2372 }, 2373 { 2374 "interface": "ge0/0/0/2", 2375 "statistics": { 2376 "messages": { 2377 "ack-sent": "1276", 2378 "ack-received": "2427", 2379 "bundle-sent": "4053", 2380 "bundle-received": "3509", 2381 "hello-sent": "3261", 2382 "hello-received": "2863", 2383 "integrity-challenge-sent": "4744", 2384 "integrity-challenge-received": "3554", 2385 "integrity-response-sent": "3155", 2386 "integrity-response-received": "169", 2387 "path-sent": "3853", 2388 "path-received": "409", 2389 "path-err-sent": "4227", 2390 "path-err-received": "2830", 2391 "path-tear-sent": "1742", 2392 "path-tear-received": "3344", 2393 "resv-sent": "3154", 2394 "resv-received": "3492", 2395 "resv-err-sent": "3112", 2396 "resv-err-received": "3974", 2397 "resv-tear-sent": "3657", 2398 "resv-tear-received": "533", 2399 "summary-refresh-sent": "4036", 2400 "summary-refresh-received": "2123" 2401 }, 2402 "packets": { 2403 "sent": "473", 2404 "received": "314", 2405 "ietf-rsvp-extended:discontinuity-time": 2406 "2015-10-24T17:11:27+02:00", 2407 "ietf-rsvp-extended:out-dropped": "2042", 2408 "ietf-rsvp-extended:in-dropped": "90", 2409 "ietf-rsvp-extended:out-errors": "1210", 2410 "ietf-rsvp-extended:in-errors": "1361" 2411 }, 2412 "errors": { 2413 "authenticate": "543", 2414 "checksum": "2241", 2415 "packet-length": "480" 2416 } 2417 } 2418 } 2420 ], 2421 "ietf-rsvp-extended:refresh-interval": 30, 2422 "ietf-rsvp-extended:refresh-misses": 5, 2423 "ietf-rsvp-extended:checksum_enabled": true, 2424 "ietf-rsvp-extended:patherr-state-removal": [ 2425 null 2426 ] 2427 }, 2428 "sessions": { 2429 "session-ip": [ 2430 { 2431 "destination-port": 10, 2432 "protocol-id": 10, 2433 "destination": "198.51.100.1", 2434 "psbs": { 2435 "psb": [ 2436 { 2437 "source-port": 10, 2438 "expires-in": 100 2439 } 2440 ] 2441 }, 2442 "rsbs": { 2443 "rsb": [ 2444 { 2445 "source-port": 10, 2446 "reservation-style": 2447 "rsvp:reservation-wildcard-filter", 2448 "expires-in": 100 2449 } 2450 ] 2451 } 2452 } 2453 ] 2454 }, 2455 "neighbors": { 2456 "neighbor": [ 2457 { 2458 "address": "192.0.2.6", 2459 "epoch": 130, 2460 "expiry-time": 260, 2461 "graceful-restart": { 2462 "enabled": true, 2463 "local-restart-time": 271, 2464 "local-recovery-time": 138, 2465 "neighbor-restart-time": 341, 2466 "neighbor-recovery-time": 342 2467 }, 2468 "hello-status": "enabled", 2469 "interface": "ge0/0/0/1", 2470 "restart-count": 2, 2471 "restart-time": "2015-10-24T17:11:27+02:00" 2472 } 2473 ] 2474 }, 2475 "graceful-restart": { 2476 "enabled": true, 2477 "local-restart-time": 60, 2478 "local-recovery-time": 180, 2479 "neighbor-restart-time": 80, 2480 "neighbor-recovery-time": 200, 2481 "helper-mode": { 2482 "enabled": true 2483 } 2484 } 2485 } 2486 } 2487 ] 2488 } 2489 } 2490 } 2492 Figure 7: Example RSVP JSON encoded data instance tree. 2494 10. Contributors 2495 Himanshu Shah 2496 Ciena 2498 Email: hshah@ciena.com 2500 Xia Chen 2501 Huawei Technologies 2503 Email: jescia.chenxia@huawei.com 2505 Raqib Jones 2506 Brocade 2508 Email: raqib@Brocade.com 2510 Bin Wen 2511 Comcast 2513 Email: Bin_Wen@cable.comcast.com 2515 11. References 2517 11.1. Normative References 2519 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2520 Requirement Levels", BCP 14, RFC 2119, 2521 DOI 10.17487/RFC2119, March 1997, 2522 . 2524 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2525 DOI 10.17487/RFC3688, January 2004, 2526 . 2528 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2529 the Network Configuration Protocol (NETCONF)", RFC 6020, 2530 DOI 10.17487/RFC6020, October 2010, 2531 . 2533 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2534 and A. Bierman, Ed., "Network Configuration Protocol 2535 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2536 . 2538 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2539 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2540 . 2542 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2543 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2544 . 2546 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 2547 RFC 7950, DOI 10.17487/RFC7950, August 2016, 2548 . 2550 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2551 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2552 . 2554 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2555 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2556 May 2017, . 2558 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 2559 Zhang, "YANG Data Model for Key Chains", RFC 8177, 2560 DOI 10.17487/RFC8177, June 2017, 2561 . 2563 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 2564 "Common YANG Data Types for the Routing Area", RFC 8294, 2565 DOI 10.17487/RFC8294, December 2017, 2566 . 2568 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 2569 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 2570 . 2572 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 2573 Access Control Model", STD 91, RFC 8341, 2574 DOI 10.17487/RFC8341, March 2018, 2575 . 2577 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 2578 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 2579 . 2581 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 2582 Routing Management (NMDA Version)", RFC 8349, 2583 DOI 10.17487/RFC8349, March 2018, 2584 . 2586 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 2587 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 2588 . 2590 [RFC8639] Voit, E., Clemm, A., Gonzalez Prieto, A., Nilsen-Nygaard, 2591 E., and A. Tripathy, "Subscription to YANG Notifications", 2592 RFC 8639, DOI 10.17487/RFC8639, September 2019, 2593 . 2595 [RFC8641] Clemm, A. and E. Voit, "Subscription to YANG Notifications 2596 for Datastore Updates", RFC 8641, DOI 10.17487/RFC8641, 2597 September 2019, . 2599 11.2. Informative References 2601 [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S. 2602 Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 2603 Functional Specification", RFC 2205, DOI 10.17487/RFC2205, 2604 September 1997, . 2606 [RFC2747] Baker, F., Lindell, B., and M. Talwar, "RSVP Cryptographic 2607 Authentication", RFC 2747, DOI 10.17487/RFC2747, January 2608 2000, . 2610 [RFC2961] Berger, L., Gan, D., Swallow, G., Pan, P., Tommasi, F., 2611 and S. Molendini, "RSVP Refresh Overhead Reduction 2612 Extensions", RFC 2961, DOI 10.17487/RFC2961, April 2001, 2613 . 2615 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 2616 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 2617 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 2618 . 2620 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 2621 Switching (GMPLS) Signaling Resource ReserVation Protocol- 2622 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, 2623 DOI 10.17487/RFC3473, January 2003, 2624 . 2626 [rfc4558] Ali, Z., Rahman, R., Prairie, D., and D. Papadimitriou, 2627 "Node-ID Based Resource Reservation Protocol (RSVP) Hello: 2628 A Clarification Statement", RFC 4558, 2629 DOI 10.17487/RFC4558, June 2006, 2630 . 2632 [RFC5063] Satyanarayana, A., Ed. and R. Rahman, Ed., "Extensions to 2633 GMPLS Resource Reservation Protocol (RSVP) Graceful 2634 Restart", RFC 5063, DOI 10.17487/RFC5063, October 2007, 2635 . 2637 [RFC5495] Li, D., Gao, J., Satyanarayana, A., and S. Bardalai, 2638 "Description of the Resource Reservation Protocol - 2639 Traffic-Engineered (RSVP-TE) Graceful Restart Procedures", 2640 RFC 5495, DOI 10.17487/RFC5495, March 2009, 2641 . 2643 Authors' Addresses 2645 Vishnu Pavan Beeram 2646 Juniper Networks 2648 Email: vbeeram@juniper.net 2650 Tarek Saad 2651 Juniper Networks 2653 Email: tsaad@juniper.net 2655 Rakesh Gandhi 2656 Cisco Systems, Inc. 2658 Email: rgandhi@cisco.com 2660 Xufeng Liu 2661 Volta Networks 2663 Email: xufeng.liu.ietf@gmail.com 2665 Igor Bryskin 2666 Individual 2668 Email: i_bryskin@yahoo.com