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