idnits 2.17.1 draft-ietf-teas-yang-rsvp-11.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 293 has weird spacing: '...on-port ine...' == Line 471 has weird spacing: '...ce-name lea...' == Line 481 has weird spacing: '...on-port ine...' == Line 484 has weird spacing: '...ce-name lea...' == Line 750 has weird spacing: '...gnaling param...' == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (July 04, 2019) is 1758 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-09) exists of draft-ietf-teas-yang-rsvp-te-06 Summary: 0 errors (**), 0 flaws (~~), 8 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 TEAS Working Group V. Beeram 3 Internet-Draft T. Saad 4 Intended status: Standards Track Juniper Networks 5 Expires: January 5, 2020 R. Gandhi 6 Cisco Systems, Inc. 7 X. Liu 8 Jabil 9 I. Bryskin 10 Huawei Technologies 11 July 04, 2019 13 A YANG Data Model for Resource Reservation Protocol (RSVP) 14 draft-ietf-teas-yang-rsvp-11 16 Abstract 18 This document defines a YANG data model for the configuration and 19 management of RSVP Protocol. The model covers the building blocks of 20 the RSVP protocol that can be augmented and used by other RSVP 21 extension models such as RSVP extensions to Traffic-Engineering 22 (RSVP-TE). The model covers the configuration, operational state, 23 remote procedure calls, and event notifications data. 25 Status of This Memo 27 This Internet-Draft is submitted in full conformance with the 28 provisions of BCP 78 and BCP 79. 30 Internet-Drafts are working documents of the Internet Engineering 31 Task Force (IETF). Note that other groups may also distribute 32 working documents as Internet-Drafts. The list of current Internet- 33 Drafts is at https://datatracker.ietf.org/drafts/current/. 35 Internet-Drafts are draft documents valid for a maximum of six months 36 and may be updated, replaced, or obsoleted by other documents at any 37 time. It is inappropriate to use Internet-Drafts as reference 38 material or to cite them other than as "work in progress." 40 This Internet-Draft will expire on January 5, 2020. 42 Copyright Notice 44 Copyright (c) 2019 IETF Trust and the persons identified as the 45 document authors. All rights reserved. 47 This document is subject to BCP 78 and the IETF Trust's Legal 48 Provisions Relating to IETF Documents 49 (https://trustee.ietf.org/license-info) in effect on the date of 50 publication of this document. Please review these documents 51 carefully, as they describe your rights and restrictions with respect 52 to this document. Code Components extracted from this document must 53 include Simplified BSD License text as described in Section 4.e of 54 the Trust Legal Provisions and are provided without warranty as 55 described in the Simplified BSD License. 57 Table of Contents 59 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 60 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 61 1.2. Model Tree Diagram . . . . . . . . . . . . . . . . . . . 3 62 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 63 2. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 3 64 2.1. Module(s) Relationship . . . . . . . . . . . . . . . . . 4 65 2.2. Design Considerations . . . . . . . . . . . . . . . . . . 4 66 2.3. Model Notifications . . . . . . . . . . . . . . . . . . . 5 67 2.4. RSVP Base YANG Model . . . . . . . . . . . . . . . . . . 5 68 2.4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 7 69 2.4.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 11 70 2.5. RSVP Extended YANG Model . . . . . . . . . . . . . . . . 31 71 2.5.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 31 72 2.5.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 33 73 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 44 74 4. Security Considerations . . . . . . . . . . . . . . . . . . . 45 75 5. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 46 76 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 46 77 7. Normative References . . . . . . . . . . . . . . . . . . . . 46 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 49 80 1. Introduction 82 YANG [RFC6020] is a data definition language that was introduced to 83 define the contents of a conceptual data store that allows networked 84 devices to be managed using NETCONF [RFC6241]. YANG is proving 85 relevant beyond its initial confines, as bindings to other interfaces 86 (e.g. ReST) and encoding other than XML (e.g. JSON) are being 87 defined. Furthermore, YANG data models can be used as the basis of 88 implementation for other interfaces, such as CLI and programmatic 89 APIs. 91 This document defines a YANG data model that can be used to configure 92 and manage the RSVP protocol [RFC2205]. This model covers RSVP 93 protocol building blocks that can be augmented and used by other RSVP 94 extension models- such as for signaling RSVP-TE MPLS (or other 95 technology specific) Label Switched Paths (LSP)s. 97 1.1. Terminology 99 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 100 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 101 "OPTIONAL" in this document are to be interpreted as described in BCP 102 14 [RFC2119] [RFC8174] when, and only when, they appear in all 103 capitals, as shown here. 105 The terminology for describing YANG data models is found in 106 [RFC7950]. 108 1.2. Model Tree Diagram 110 A full tree diagram of the module(s) defined in this document is 111 given in subsequent sections as per the syntax defined in [RFC8340]. 113 1.3. Prefixes in Data Node Names 115 In this document, names of data nodes and other data model objects 116 are prefixed using the standard prefix associated with the 117 corresponding YANG imported modules, as shown in Table 1. 119 +-----------+--------------------+-----------+ 120 | Prefix | YANG module | Reference | 121 +-----------+--------------------+-----------+ 122 | yang | ietf-yang-types | [RFC6991] | 123 | inet | ietf-inet-types | [RFC6991] | 124 | rt-type | ietf-routing-types | XX | 125 | key-chain | ietf-key-chain | XX | 126 +---------+----------------------+-----------+ 128 Table 1: Prefixes and corresponding YANG modules 130 2. Model Overview 132 The RSVP base YANG module augments the "control-plane-protocol" list 133 in ietf-routing [RFC8349] module with specific RSVP parameters in an 134 "rsvp" container. It also defines an extension identity "rsvp" of 135 base "rt:routing-protocol" to identify the RSVP protocol. 137 The augmentation of the RSVP model by other models (e.g. RSVP-TE for 138 MPLS or other technologies) are outside the scope of this document 139 and are discussed in separate document(s), e.g. 140 [I-D.ietf-teas-yang-rsvp-te]. 142 2.1. Module(s) Relationship 144 This document divides the RSVP model into two modules: base and 145 extended RSVP modules. Some RSVP features are categorized as core to 146 the function of the protocol and are supported by most vendors 147 claiming the support for RSVP protocol. Such features configuration 148 and state are grouped in the RSVP base module. 150 Other extended RSVP features are categorized as either optional or 151 providing ability to better tune the basic functionality of the RSVP 152 protocol. The support for extended RSVP features by all vendors is 153 considered optional. Such features are grouped in a separate RSVP 154 extended module. 156 The relationship between the base and extended RSVP YANG model and 157 the IETF routing YANG model is shown in Figure 1. 159 +--------------+ 160 Routing | ietf-routing | 161 +--------------+ 162 o 163 | 164 +-----------+ 165 RSVP module | ietf-rsvp | 166 +-----------+ 167 o 168 | o: augment relationship 169 RSVP extended | 170 module +--------------------+ 171 | ietf-rsvp-extended | 172 +--------------------+ 174 Figure 1: Relationship of RSVP and RSVP extended modules with other 175 protocol modules 177 2.2. Design Considerations 179 The RSVP base model does not aim to be feature complete. The primary 180 intent is to cover a set of standard core features that are commonly 181 in use. For example: 183 o Authentication ([RFC2747]) 185 o Refresh Reduction ([RFC2961]) 187 o Hellos ([RFC3209]) 189 o Graceful Restart ([RFC3473], [RFC5063]) 190 The extended RSVP YANG model covers the configuration for optional 191 features that are not must for basic RSVP protocol operation. 193 The defined data model supports configuration inheritance for 194 neighbors, and interfaces. Data elements defined in the main 195 container (e.g. the container that encompasses the list of 196 interfaces, or neighbors) are assumed to apply equally to all 197 elements of the list, unless overridden explicitly for a certain 198 element (e.g. interface). Vendors are expected to augment the above 199 container(s) to provide the list of inheritance command for their 200 implementations. 202 2.3. Model Notifications 204 Notifications data modeling is key in any defined data model. 206 [I-D.ietf-netconf-subscribed-notifications] and 207 [I-D.ietf-netconf-yang-push] define a subscription and push mechanism 208 for YANG datastores. This mechanism currently allows the user to: 210 o Subscribe notifications on a per client basis 212 o Specify subtree filters or xpath filters so that only interested 213 contents will be sent. 215 o Specify either periodic or on-demand notifications. 217 2.4. RSVP Base YANG Model 219 The RSVP base YANG data model defines the container "rsvp" as the top 220 level container in this data model. The presence of this container 221 enables the RSVP protocol functionality. 223 The derived state data is contained in "read-only" nodes directly 224 under the intended object as shown in Figure 2. 226 module: ietf-rsvp 227 +--rw rsvp! 228 +--rw globals 229 . 230 . 231 +--rw interfaces 232 . 233 +-- ro <> 234 . 235 . 236 +--rw neighbors 237 . 238 +-- ro <> 239 . 240 . 241 +--rw sessions 242 . 243 +-- ro <> 244 . 245 rpcs: 246 +--x clear-session 247 +--x clear-neighbor 249 Figure 2: RSVP high-level tree model view 251 Configuration and state data are grouped to those applicable on per 252 node (global), per interface, per neighbor, or per session. 254 Global Data: 256 The global data cover the configuration and state that is 257 applicable the RSVP protocol behavior. 259 Interface Data: 261 The interface data configuration and state model relevant 262 attributes applicable to one or all RSVP interfaces. Any data or 263 state at the "interfaces" container level is equally applicable to 264 all interfaces - unless overridden by explicit configuration or 265 state under a specific interface. 267 Neighbor Data: 269 The neighbor data cover configuration and state relevant to RSVP 270 neighbors. Neighbors can be dynamically discovered using RSVP 271 signaling or explicitly configured. 273 Session Data: 275 The sessions data branch covers configuration and state relevant 276 to RSVP sessions. This is usually derived state that is result of 277 signaling. This model defines attributes related to IP RSVP 278 sessions as defined in [RFC2205]. 280 2.4.1. Tree Diagram 282 Figure 3 shows the YANG tree representation for configuration and 283 state data that is augmenting the RSVP basic module: 285 module: ietf-rsvp 286 augment /rt:routing/rt:control-plane-protocols 287 /rt:control-plane-protocol: 288 +--rw rsvp! 289 +--rw globals 290 | +--rw sessions 291 | | +--ro session-ip* 292 | | [destination protocol-id destination-port] 293 | | +--ro destination-port inet:port-number 294 | | +--ro protocol-id uint8 295 | | +--ro source? inet:ip-address 296 | | +--ro destination inet:ip-address 297 | | +--ro session-name? string 298 | | +--ro session-state? enumeration 299 | | +--ro session-type? identityref 300 | | +--ro psbs 301 | | | +--ro psb* [] 302 | | | +--ro source-port? inet:port-number 303 | | | +--ro expires-in? uint32 304 | | +--ro rsbs 305 | | +--ro rsb* [] 306 | | +--ro source-port? inet:port-number 307 | | +--ro reservation-style? identityref 308 | | +--ro expires-in? uint32 309 | +--ro statistics 310 | | +--ro messages 311 | | | +--ro ack-sent? yang:counter64 312 | | | +--ro ack-received? yang:counter64 313 | | | +--ro bundle-sent? yang:counter64 314 | | | +--ro bundle-received? yang:counter64 315 | | | +--ro hello-sent? yang:counter64 316 | | | +--ro hello-received? yang:counter64 317 | | | +--ro integrity-challenge-sent? yang:counter64 318 | | | +--ro integrity-challenge-received? yang:counter64 319 | | | +--ro integrity-response-sent? yang:counter64 320 | | | +--ro integrity-response-received? yang:counter64 321 | | | +--ro notify-sent? yang:counter64 322 | | | +--ro notify-received? yang:counter64 323 | | | +--ro path-sent? yang:counter64 324 | | | +--ro path-received? yang:counter64 325 | | | +--ro path-err-sent? yang:counter64 326 | | | +--ro path-err-received? yang:counter64 327 | | | +--ro path-tear-sent? yang:counter64 328 | | | +--ro path-tear-received? yang:counter64 329 | | | +--ro resv-sent? yang:counter64 330 | | | +--ro resv-received? yang:counter64 331 | | | +--ro resv-confirm-sent? yang:counter64 332 | | | +--ro resv-confirm-received? yang:counter64 333 | | | +--ro resv-err-sent? yang:counter64 334 | | | +--ro resv-err-received? yang:counter64 335 | | | +--ro resv-tear-sent? yang:counter64 336 | | | +--ro resv-tear-received? yang:counter64 337 | | | +--ro summary-refresh-sent? yang:counter64 338 | | | +--ro summary-refresh-received? yang:counter64 339 | | | +--ro unknown-messages-received? yang:counter64 340 | | +--ro packets 341 | | | +--ro sent? yang:counter64 342 | | | +--ro received? yang:counter64 343 | | +--ro errors 344 | | +--ro authenticate? yang:counter64 345 | | +--ro checksum? yang:counter64 346 | | +--ro packet-length? yang:counter64 347 | +--rw graceful-restart 348 | +--rw enabled? boolean 349 +--rw interfaces 350 | +--rw refresh-reduction 351 | | +--rw enabled? boolean 352 | +--rw hellos 353 | | +--rw enabled? boolean 354 | +--rw authentication 355 | | +--rw enabled? boolean 356 | | +--rw authentication-key? string 357 | | +--rw crypto-algorithm identityref 358 | +--ro statistics 359 | | +--ro messages 360 | | | +--ro ack-sent? yang:counter64 361 | | | +--ro ack-received? yang:counter64 362 | | | +--ro bundle-sent? yang:counter64 363 | | | +--ro bundle-received? yang:counter64 364 | | | +--ro hello-sent? yang:counter64 365 | | | +--ro hello-received? yang:counter64 366 | | | +--ro integrity-challenge-sent? yang:counter64 367 | | | +--ro integrity-challenge-received? yang:counter64 368 | | | +--ro integrity-response-sent? yang:counter64 369 | | | +--ro integrity-response-received? yang:counter64 370 | | | +--ro notify-sent? yang:counter64 371 | | | +--ro notify-received? yang:counter64 372 | | | +--ro path-sent? yang:counter64 373 | | | +--ro path-received? yang:counter64 374 | | | +--ro path-err-sent? yang:counter64 375 | | | +--ro path-err-received? yang:counter64 376 | | | +--ro path-tear-sent? yang:counter64 377 | | | +--ro path-tear-received? yang:counter64 378 | | | +--ro resv-sent? yang:counter64 379 | | | +--ro resv-received? yang:counter64 380 | | | +--ro resv-confirm-sent? yang:counter64 381 | | | +--ro resv-confirm-received? yang:counter64 382 | | | +--ro resv-err-sent? yang:counter64 383 | | | +--ro resv-err-received? yang:counter64 384 | | | +--ro resv-tear-sent? yang:counter64 385 | | | +--ro resv-tear-received? yang:counter64 386 | | | +--ro summary-refresh-sent? yang:counter64 387 | | | +--ro summary-refresh-received? yang:counter64 388 | | | +--ro unknown-messages-received? yang:counter64 389 | | +--ro packets 390 | | | +--ro sent? yang:counter64 391 | | | +--ro received? yang:counter64 392 | | +--ro errors 393 | | +--ro authenticate? yang:counter64 394 | | +--ro checksum? yang:counter64 395 | | +--ro packet-length? yang:counter64 396 | +--rw interface* [interface] 397 | +--rw interface if:interface-ref 398 | +--rw refresh-reduction 399 | | +--rw enabled? boolean 400 | +--rw hellos 401 | | +--rw enabled? boolean 402 | +--rw authentication 403 | | +--rw enabled? boolean 404 | | +--rw authentication-key? string 405 | | +--rw crypto-algorithm identityref 406 | +--ro statistics 407 | +--ro messages 408 | | +--ro ack-sent? yang:counter64 409 | | +--ro ack-received? yang:counter64 410 | | +--ro bundle-sent? yang:counter64 411 | | +--ro bundle-received? yang:counter64 412 | | +--ro hello-sent? yang:counter64 413 | | +--ro hello-received? yang:counter64 414 | | +--ro integrity-challenge-sent? yang:counter64 415 | | +--ro integrity-challenge-received? yang:counter64 416 | | +--ro integrity-response-sent? yang:counter64 417 | | +--ro integrity-response-received? yang:counter64 418 | | +--ro notify-sent? yang:counter64 419 | | +--ro notify-received? yang:counter64 420 | | +--ro path-sent? yang:counter64 421 | | +--ro path-received? yang:counter64 422 | | +--ro path-err-sent? yang:counter64 423 | | +--ro path-err-received? yang:counter64 424 | | +--ro path-tear-sent? yang:counter64 425 | | +--ro path-tear-received? yang:counter64 426 | | +--ro resv-sent? yang:counter64 427 | | +--ro resv-received? yang:counter64 428 | | +--ro resv-confirm-sent? yang:counter64 429 | | +--ro resv-confirm-received? yang:counter64 430 | | +--ro resv-err-sent? yang:counter64 431 | | +--ro resv-err-received? yang:counter64 432 | | +--ro resv-tear-sent? yang:counter64 433 | | +--ro resv-tear-received? yang:counter64 434 | | +--ro summary-refresh-sent? yang:counter64 435 | | +--ro summary-refresh-received? yang:counter64 436 | | +--ro unknown-messages-received? yang:counter64 437 | +--ro packets 438 | | +--ro sent? yang:counter64 439 | | +--ro received? yang:counter64 440 | +--ro errors 441 | +--ro authenticate? yang:counter64 442 | +--ro checksum? yang:counter64 443 | +--ro packet-length? yang:counter64 444 +--rw neighbors 445 +--rw neighbor* [address] 446 +--rw address inet:ip-address 447 +--rw epoch? uint32 448 +--rw expiry-time? uint32 449 +--rw graceful-restart 450 | +--rw enabled? boolean 451 | +--rw local-restart-time? uint32 452 | +--rw local-recovery-time? uint32 453 | +--rw neighbor-restart-time? uint32 454 | +--rw neighbor-recovery-time? uint32 455 | +--rw helper-mode 456 | +--rw enabled? boolean 457 | +--rw max-helper-restart-time? uint32 458 | +--rw max-helper-recovery-time? uint32 459 | +--rw neighbor-restart-time-remaining? uint32 460 | +--rw neighbor-recovery-time-remaining? uint32 461 +--rw hello-status? enumeration 462 +--rw interface? if:interface-ref 463 +--rw neighbor-state? enumeration 464 +--rw refresh-reduction-capable? boolean 465 +--rw restart-count? yang:counter32 466 +--rw restart-time? yang:date-and-time 468 rpcs: 469 +---x clear-session 470 | +---w input 471 | +---w routing-protocol-instance-name leafref 472 | +---w (filter-type) 473 | +--:(match-all) 474 | | +---w all empty 475 | +--:(match-one) 476 | +---w session-info 477 | +---w (session-type) 478 | +--:(rsvp-session-ip) 479 | +---w destination leafref 480 | +---w protocol-id uint8 481 | +---w destination-port inet:ip-address 482 +---x clear-neighbor 483 +---w input 484 +---w routing-protocol-instance-name leafref 485 +---w (filter-type) 486 +--:(match-all) 487 | +---w all empty 488 +--:(match-one) 489 +---w neighbor-address leafref 491 Figure 3: RSVP model tree diagram 493 2.4.2. YANG Module 495 The ietf-rsvp module imports from the following modules: 497 o ietf-interfaces defined in [RFC8343] 499 o ietf-yang-types and ietf-inet-types defined in [RFC6991] 501 o ietf-routing defined in [RFC8349] 503 o ietf-key-chain defined in [RFC8177] 505 file "ietf-rsvp@2019-07-04.yang" 506 module ietf-rsvp { 507 yang-version 1.1; 509 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp"; 511 /* Replace with IANA when assigned */ 512 prefix "rsvp"; 513 import ietf-interfaces { 514 prefix if; 515 reference "RFC8343: A YANG Data Model for Interface Management"; 516 } 518 import ietf-inet-types { 519 prefix inet; 520 reference "RFC6991: Common YANG Data Types"; 521 } 523 import ietf-yang-types { 524 prefix "yang"; 525 reference "RFC6991: Common YANG Data Types"; 526 } 528 import ietf-routing { 529 prefix "rt"; 530 reference 531 "RFC8349: A YANG Data Model for Routing Management 532 (NMDA Version)"; 533 } 535 import ietf-key-chain { 536 prefix "key-chain"; 537 reference "RFC8177: YANG Data Model for Key Chains"; 538 } 540 organization 541 "IETF Traffic Engineering Architecture and Signaling (TEAS) 542 Working Group"; 544 contact 545 "WG Web: 546 WG List: 548 Editor: Vishnu Pavan Beeram 549 551 Editor: Tarek Saad 552 554 Editor: Rakesh Gandhi 555 557 Editor: Xufeng Liu 558 560 Editor: Igor Bryskin 561 563 Editor: Himanshu Shah 564 "; 566 description 567 "This module contains the RSVP YANG data model. 568 The model fully conforms to the Network Management Datastore 569 Architecture (NMDA). 571 Copyright (c) 2019 IETF Trust and the persons 572 identified as authors of the code. All rights reserved. 574 Redistribution and use in source and binary forms, with or 575 without modification, is permitted pursuant to, and subject 576 to the license terms contained in, the Simplified BSD License 577 set forth in Section 4.c of the IETF Trust's Legal Provisions 578 Relating to IETF Documents 579 (https://trustee.ietf.org/license-info). 580 This version of this YANG module is part of RFC XXXX; see 581 the RFC itself for full legal notices."; 583 // RFC Ed.: replace XXXX with actual RFC number and remove this 584 // note. 586 // RFC Ed.: update the date below with the date of RFC publication 587 // and remove this note. 589 revision "2019-07-04" { 590 description 591 "A YANG Data Model for Resource Reservation Protocol"; 592 reference 593 "RFCXXXX: A YANG Data Model for Resource Reservation Protocol 594 (RSVP)"; 595 } 597 identity rsvp { 598 base "rt:routing-protocol"; 599 description "RSVP protocol"; 600 } 602 identity rsvp-session-type { 603 description "Base RSVP session type"; 604 } 606 identity rsvp-session-ip { 607 base rsvp-session-type; 608 description "RSVP IP session type"; 610 } 612 identity reservation-style { 613 description "Base identity for reservation style"; 614 } 616 identity reservation-wildcard-filter { 617 base reservation-style; 618 description "Wildcard-Filter (WF) Style"; 619 reference "RFC2205"; 620 } 622 identity reservation-fixed-filter { 623 base reservation-style; 624 description "Fixed-Filter (FF) Style"; 625 reference "RFC2205"; 626 } 628 identity reservation-shared-explicit { 629 base reservation-style; 630 description "Shared Explicit (SE) Style"; 631 reference "RFC2205"; 632 } 634 grouping graceful-restart-config { 635 description 636 "Base configuration parameters relating to RSVP 637 Graceful-Restart"; 638 leaf enabled { 639 type boolean; 640 description 641 "'true' if RSVP Graceful Restart is enabled. 642 'false' if RSVP Graceful Restart is disabled."; 643 } 644 } 646 grouping graceful-restart { 647 description 648 "RSVP graceful restart parameters grouping"; 649 container graceful-restart { 650 description 651 "RSVP graceful restart parameters container"; 652 uses graceful-restart-config; 653 } 654 } 656 grouping refresh-reduction-config { 657 description 658 "Configuration parameters relating to RSVP 659 refresh reduction"; 661 leaf enabled { 662 type boolean; 663 description 664 "'true' if RSVP Refresh Reduction is enabled. 665 'false' if RSVP Refresh Reduction is disabled."; 666 } 667 } 669 grouping refresh-reduction { 670 description 671 "Top level grouping for RSVP refresh reduction 672 parameters"; 673 container refresh-reduction { 674 description 675 "Top level container for RSVP refresh reduction 676 parameters"; 677 uses refresh-reduction-config; 678 } 679 } 681 grouping authentication-config { 682 description 683 "Configuration parameters relating to RSVP 684 authentication"; 685 leaf enabled { 686 type boolean; 687 description 688 "'true' if RSVP Authentication is enabled. 689 'false' if RSVP Authentication is disabled."; 690 } 691 leaf authentication-key { 692 type string; 693 description 694 "An authentication key string"; 695 reference 696 "RFC 2747: RSVP Cryptographic Authentication"; 697 } 698 leaf crypto-algorithm { 699 type identityref { 700 base key-chain:crypto-algorithm; 701 } 702 mandatory true; 703 description 704 "Cryptographic algorithm associated with key."; 705 } 707 } 709 grouping authentication { 710 description 711 "Top level grouping for RSVP authentication parameters"; 712 container authentication { 713 description 714 "Top level container for RSVP authentication 715 parameters"; 716 uses authentication-config; 717 } 718 } 720 grouping hellos-config { 721 description 722 "Configuration parameters relating to RSVP 723 hellos"; 724 leaf enabled { 725 type boolean; 726 description 727 "'true' if RSVP Hello is enabled. 728 'false' if RSVP Hello is disabled."; 729 } 730 } 732 grouping hellos { 733 description 734 "Top level grouping for RSVP hellos parameters"; 735 container hellos { 736 description 737 "Top level container for RSVP hello parameters"; 738 uses hellos-config; 739 } 740 } 742 grouping signaling-parameters-config { 743 description 744 "Configuration parameters relating to RSVP 745 signaling"; 746 } 748 grouping signaling-parameters { 749 description 750 "Top level grouping for RSVP signaling parameters"; 751 uses signaling-parameters-config; 752 } 754 grouping session-attributes-state { 755 description 756 "Top level grouping for RSVP session properties"; 757 leaf destination-port { 758 type inet:port-number; 759 description "RSVP destination port"; 760 reference "RFC2205"; 761 } 762 leaf protocol-id { 763 type uint8; 764 description "The IP protocol ID."; 765 reference "RFC2205, section 3.2"; 766 } 767 leaf source { 768 type inet:ip-address; 769 description "RSVP source address"; 770 reference "RFC2205"; 771 } 772 leaf destination { 773 type inet:ip-address; 774 description "RSVP destination address"; 775 reference "RFC2205"; 776 } 777 leaf session-name { 778 type string; 779 description 780 "The signaled name of this RSVP session."; 781 } 782 leaf session-state { 783 type enumeration { 784 enum "up" { 785 description 786 "RSVP session is up"; 787 } 788 enum "down" { 789 description 790 "RSVP session is down"; 791 } 792 } 793 description 794 "Enumeration of RSVP session states"; 795 } 796 leaf session-type { 797 type identityref { 798 base rsvp-session-type; 799 } 800 description "RSVP session type"; 801 } 802 container psbs { 803 description "Path State Block container"; 804 list psb { 805 description "List of path state blocks"; 806 leaf source-port { 807 type inet:port-number; 808 description "RSVP source port"; 809 reference "RFC2205"; 810 } 811 leaf expires-in { 812 type uint32; 813 units seconds; 814 description "Time to reservation expiry (in seconds)"; 815 } 816 } 817 } 818 container rsbs { 819 description "Reservation State Block container"; 820 list rsb { 821 description "List of reservation state blocks"; 822 leaf source-port { 823 type inet:port-number; 824 description "RSVP source port"; 825 reference "RFC2205"; 826 } 827 leaf reservation-style { 828 type identityref { 829 base reservation-style; 830 } 831 description "RSVP reservation style"; 832 } 833 leaf expires-in { 834 type uint32; 835 units seconds; 836 description "Time to reservation expiry (in seconds)"; 837 } 838 } 839 } 840 } 842 grouping neighbor-attributes { 843 description 844 "Top level grouping for RSVP neighbor properties"; 845 leaf address { 846 type inet:ip-address; 847 description 848 "Address of RSVP neighbor"; 849 } 850 leaf epoch { 851 type uint32; 852 description 853 "Neighbor epoch."; 854 } 856 leaf expiry-time { 857 type uint32; 858 units seconds; 859 description 860 "Neighbor expiry time after which the neighbor state 861 is purged if no states associated with it"; 862 } 864 container graceful-restart { 865 description 866 "Graceful restart information."; 868 leaf enabled { 869 type boolean; 870 description 871 "'true' if graceful restart is enabled for the neighbor."; 872 } 874 leaf local-restart-time { 875 type uint32; 876 units seconds; 877 description 878 "Local node restart time"; 879 } 881 leaf local-recovery-time { 882 type uint32; 883 units seconds; 884 description 885 "Local node recover time"; 886 } 888 leaf neighbor-restart-time { 889 type uint32; 890 units seconds; 891 description 892 "Neighbor restart time"; 893 } 895 leaf neighbor-recovery-time { 896 type uint32; 897 units seconds; 898 description 899 "Neighbor recover time"; 900 } 902 container helper-mode { 903 description 904 "Helper mode information "; 906 leaf enabled { 907 type boolean; 908 description 909 "'true' if helper mode is enabled."; 910 } 912 leaf max-helper-restart-time { 913 type uint32; 914 units seconds; 915 description 916 "The time the router or switch waits after it 917 discovers that a neighboring router has gone down 918 before it declares the neighbor down"; 919 } 921 leaf max-helper-recovery-time { 922 type uint32; 923 units seconds; 924 description 925 "The amount of time the router retains the state of its 926 RSVP neighbors while they undergo a graceful restart"; 927 } 929 leaf neighbor-restart-time-remaining { 930 type uint32; 931 units seconds; 932 description 933 "Number of seconds remaining for neighbor to send 934 Hello message after restart."; 935 } 937 leaf neighbor-recovery-time-remaining { 938 type uint32; 939 units seconds; 940 description 941 "Number of seconds remaining for neighbor to 942 refresh."; 943 } 944 } // helper-mode 945 } // graceful-restart 946 leaf hello-status { 947 type enumeration { 948 enum "enabled" { 949 description 950 "Enabled"; 951 } 952 enum "disabled" { 953 description 954 "Disabled"; 955 } 956 enum "restarting" { 957 description 958 "Restarting"; 959 } 960 } 961 description 962 "Hello status"; 963 } 965 leaf interface { 966 type if:interface-ref; 967 description 968 "Interface where RSVP neighbor was detected"; 969 } 971 leaf neighbor-state { 972 type enumeration { 973 enum "up" { 974 description 975 "up"; 976 } 977 enum "down" { 978 description 979 "down"; 980 } 981 enum "hello-disable" { 982 description 983 "hello-disable"; 984 } 985 enum "restarting" { 986 description 987 "restarting"; 988 } 989 } 990 description 991 "Neighbor state"; 992 } 993 leaf refresh-reduction-capable { 994 type boolean; 995 description 996 "enables all RSVP refresh reduction message 997 bundling, RSVP message ID, reliable message delivery 998 and summary refresh"; 999 reference 1000 "RFC 2961 RSVP Refresh Overhead Reduction 1001 Extensions"; 1002 } 1004 leaf restart-count { 1005 type yang:counter32; 1006 description 1007 "Number of times this neighbor restart"; 1008 } 1010 leaf restart-time { 1011 type yang:date-and-time; 1012 description 1013 "Last restart time of the neighbor"; 1014 } 1015 } 1017 grouping packets-state { 1018 description 1019 "Packet statistics grouping"; 1020 container packets { 1021 description 1022 "Packet statistics container"; 1023 leaf sent { 1024 type yang:counter64; 1025 description 1026 "Packet sent count"; 1027 } 1029 leaf received { 1030 type yang:counter64; 1031 description 1032 "Packet received count"; 1033 } 1034 } 1035 } 1037 grouping protocol-state { 1038 description 1039 "RSVP protocol statistics grouping"; 1040 container messages { 1041 description 1042 "RSVP protocol statistics container"; 1043 leaf ack-sent { 1044 type yang:counter64; 1045 description 1046 "Hello sent count"; 1047 } 1049 leaf ack-received { 1050 type yang:counter64; 1051 description 1052 "Hello received count"; 1053 } 1055 leaf bundle-sent { 1056 type yang:counter64; 1057 description 1058 "Bundle sent count"; 1059 } 1061 leaf bundle-received { 1062 type yang:counter64; 1063 description 1064 "Bundle received count"; 1065 } 1067 leaf hello-sent { 1068 type yang:counter64; 1069 description 1070 "Hello sent count"; 1071 } 1073 leaf hello-received { 1074 type yang:counter64; 1075 description 1076 "Hello received count"; 1077 } 1079 leaf integrity-challenge-sent { 1080 type yang:counter64; 1081 description 1082 "Integrity Challenge sent count"; 1083 } 1085 leaf integrity-challenge-received { 1086 type yang:counter64; 1087 description 1088 "Integrity Challenge received count"; 1090 } 1092 leaf integrity-response-sent { 1093 type yang:counter64; 1094 description 1095 "Integrity Response sent count"; 1096 } 1098 leaf integrity-response-received { 1099 type yang:counter64; 1100 description 1101 "Integrity Response received count"; 1102 } 1104 leaf notify-sent { 1105 type yang:counter64; 1106 description 1107 "Notify sent count"; 1108 } 1110 leaf notify-received { 1111 type yang:counter64; 1112 description 1113 "Notify received count"; 1114 } 1116 leaf path-sent { 1117 type yang:counter64; 1118 description 1119 "Path sent count"; 1120 } 1122 leaf path-received { 1123 type yang:counter64; 1124 description 1125 "Path received count"; 1126 } 1128 leaf path-err-sent { 1129 type yang:counter64; 1130 description 1131 "Path error sent count"; 1132 } 1134 leaf path-err-received { 1135 type yang:counter64; 1136 description 1137 "Path error received count"; 1139 } 1141 leaf path-tear-sent { 1142 type yang:counter64; 1143 description 1144 "Path tear sent count"; 1145 } 1147 leaf path-tear-received { 1148 type yang:counter64; 1149 description 1150 "Path tear received count"; 1151 } 1153 leaf resv-sent { 1154 type yang:counter64; 1155 description 1156 "Resv sent count"; 1157 } 1159 leaf resv-received { 1160 type yang:counter64; 1161 description 1162 "Resv received count"; 1163 } 1165 leaf resv-confirm-sent { 1166 type yang:counter64; 1167 description 1168 "Confirm sent count"; 1169 } 1171 leaf resv-confirm-received { 1172 type yang:counter64; 1173 description 1174 "Confirm received count"; 1175 } 1177 leaf resv-err-sent { 1178 type yang:counter64; 1179 description 1180 "Resv error sent count"; 1181 } 1183 leaf resv-err-received { 1184 type yang:counter64; 1185 description 1186 "Resv error received count"; 1188 } 1190 leaf resv-tear-sent { 1191 type yang:counter64; 1192 description 1193 "Resv tear sent count"; 1194 } 1196 leaf resv-tear-received { 1197 type yang:counter64; 1198 description 1199 "Resv tear received count"; 1200 } 1202 leaf summary-refresh-sent { 1203 type yang:counter64; 1204 description 1205 "Summary refresh sent count"; 1206 } 1208 leaf summary-refresh-received { 1209 type yang:counter64; 1210 description 1211 "Summary refresh received count"; 1212 } 1214 leaf unknown-messages-received { 1215 type yang:counter64; 1216 description 1217 "Unknown packet received count"; 1218 } 1219 } 1220 } 1222 grouping errors-state { 1223 description 1224 "Error statistics state grouping"; 1225 container errors { 1226 description 1227 "Error statistics state container"; 1228 leaf authenticate { 1229 type yang:counter64; 1230 description 1231 "The total number of packets received with an 1232 authentication failure."; 1233 } 1235 leaf checksum { 1236 type yang:counter64; 1237 description 1238 "The total number of packets received with an invalid 1239 checksum value."; 1240 } 1242 leaf packet-length { 1243 type yang:counter64; 1244 description 1245 "The total number of packets received with an invalid 1246 packet length."; 1247 } 1248 } 1249 } 1251 grouping statistics-state { 1252 description "RSVP statistic attributes."; 1253 container statistics { 1254 config false; 1255 description 1256 "statistics state container"; 1257 uses protocol-state; 1258 uses packets-state; 1259 uses errors-state; 1260 } 1261 } 1263 grouping neighbor-derived-state { 1264 description 1265 "Derived state at neighbor level."; 1267 } 1269 grouping global-attributes { 1270 description 1271 "Top level grouping for RSVP global properties"; 1272 container sessions { 1273 description 1274 "RSVP sessions container"; 1275 list session-ip { 1276 key "destination protocol-id destination-port"; 1277 config false; 1278 description 1279 "List of RSVP sessions"; 1281 uses session-attributes-state; 1282 } 1283 } 1284 uses statistics-state; 1285 } 1287 grouping intf-attributes { 1288 description 1289 "Top level grouping for RSVP interface properties"; 1290 uses signaling-parameters; 1291 uses refresh-reduction; 1292 uses hellos; 1293 uses authentication; 1294 uses statistics-state; 1295 } 1297 augment "/rt:routing/rt:control-plane-protocols/" 1298 + "rt:control-plane-protocol" { 1299 when "rt:type = 'rsvp:rsvp'" { 1300 description 1301 "This augment is only valid when routing protocol 1302 instance type is RSVP."; 1303 } 1304 description 1305 "RSVP protocol augmentation"; 1306 container rsvp { 1307 presence "Enable RSVP feature"; 1308 description "RSVP feature container"; 1309 container globals { 1310 description "RSVP global properties."; 1311 uses global-attributes; 1312 uses graceful-restart; 1313 } 1315 container interfaces { 1316 description 1317 "RSVP interfaces container"; 1318 uses intf-attributes; 1320 list interface { 1321 key "interface"; 1322 description 1323 "RSVP interfaces."; 1324 leaf interface { 1325 type if:interface-ref; 1326 description 1327 "RSVP interface."; 1328 } 1329 uses intf-attributes; 1330 } 1331 } 1332 container neighbors { 1333 description "RSVP neighbors container"; 1334 list neighbor { 1335 key "address"; 1336 description "List of RSVP neighbors"; 1337 uses neighbor-attributes; 1338 } 1339 } 1340 } 1341 } 1343 grouping session-ref { 1344 description "Session reference information"; 1345 leaf destination { 1346 type leafref { 1347 path "/rt:routing/rt:control-plane-protocols" + 1348 "/rt:control-plane-protocol/rsvp:rsvp/rsvp:globals" + 1349 "/rsvp:sessions/rsvp:session-ip/destination"; 1350 } 1351 mandatory true; 1352 description "RSVP session"; 1353 } 1354 leaf protocol-id { 1355 type uint8; 1356 mandatory true; 1357 description "The RSVP session protocol ID"; 1358 } 1359 leaf destination-port { 1360 type inet:ip-address; 1361 mandatory true; 1362 description "The RSVP session destination port"; 1363 } 1364 } 1366 rpc clear-session { 1367 description "Clears RSVP sessions RPC"; 1368 input { 1369 leaf routing-protocol-instance-name { 1370 type leafref { 1371 path "/rt:routing/rt:control-plane-protocols/" 1372 + "rt:control-plane-protocol/rt:name"; 1373 } 1374 mandatory "true"; 1375 description 1376 "Name of the RSVP protocol instance whose session 1377 is being cleared. 1379 If the corresponding RSVP instance doesn't exist, 1380 then the operation will fail with an error-tag of 1381 'data-missing' and an error-app-tag of 1382 'routing-protocol-instance-not-found'."; 1383 } 1384 choice filter-type { 1385 mandatory true; 1386 description "Filter choice"; 1387 case match-all { 1388 leaf all { 1389 type empty; 1390 mandatory true; 1391 description "Match all RSVP sessions"; 1392 } 1393 } 1394 case match-one { 1395 container session-info { 1396 description 1397 "Specifies the specific session to invoke operation on"; 1398 choice session-type { 1399 mandatory true; 1400 description "RSVP session type"; 1401 case rsvp-session-ip { 1402 uses session-ref; 1403 } 1404 } 1405 } 1406 } 1407 } 1408 } 1409 } 1411 rpc clear-neighbor { 1412 description 1413 "RPC to clear the RSVP Hello session to a neighbor"; 1414 input { 1415 leaf routing-protocol-instance-name { 1416 type leafref { 1417 path "/rt:routing/rt:control-plane-protocols/" 1418 + "rt:control-plane-protocol/rt:name"; 1419 } 1420 mandatory "true"; 1421 description 1422 "Name of the RSVP protocol instance whose session 1423 is being cleared. 1425 If the corresponding RSVP instance doesn't exist, 1426 then the operation will fail with an error-tag of 1427 'data-missing' and an error-app-tag of 1428 'routing-protocol-instance-not-found'."; 1429 } 1430 choice filter-type { 1431 mandatory true; 1432 description "Filter choice"; 1433 case match-all { 1434 leaf all { 1435 type empty; 1436 mandatory true; 1437 description "Match all RSVP neighbor sessions"; 1438 } 1439 } 1440 case match-one { 1441 leaf neighbor-address { 1442 type leafref { 1443 path "/rt:routing/rt:control-plane-protocols" + 1444 "/rt:control-plane-protocol/rsvp:rsvp" + 1445 "/rsvp:neighbors/rsvp:neighbor/address"; 1446 } 1447 mandatory true; 1448 description "Match specific RSVP neighbor session"; 1449 } 1450 } 1451 } 1452 } 1453 } 1454 } 1455 1457 2.5. RSVP Extended YANG Model 1459 The RSVP extended YANG model covers non-core RSVP feature(s). It 1460 also covers feature(s) that are not necessarily supported by all 1461 vendors, and hence, can be guarded with "if-feature" checks. 1463 2.5.1. Tree Diagram 1465 Figure 4 shows the YANG tree representation for configuration and 1466 state data that is augmenting the RSVP extended module: 1468 module: ietf-rsvp-extended 1469 augment /rt:routing/rt:control-plane-protocols 1470 /rt:control-plane-protocol/rsvp:rsvp/rsvp:globals 1471 /rsvp:graceful-restart: 1472 +--rw restart-time? uint32 1473 +--rw recovery-time? uint32 1474 augment /rt:routing/rt:control-plane-protocols 1475 /rt:control-plane-protocol/rsvp:rsvp/rsvp:globals 1476 /rsvp:statistics/rsvp:packets: 1477 +--ro discontinuity-time? yang:date-and-time 1478 +--ro out-dropped? yang:counter64 1479 +--ro in-dropped? yang:counter64 1480 +--ro out-errors? yang:counter64 1481 +--ro in-errors? yang:counter64 1482 augment /rt:routing/rt:control-plane-protocols 1483 /rt:control-plane-protocol/rsvp:rsvp/rsvp:globals 1484 /rsvp:statistics/rsvp:messages: 1485 augment /rt:routing/rt:control-plane-protocols 1486 /rt:control-plane-protocol/rsvp:rsvp/rsvp:globals 1487 /rsvp:statistics/rsvp:errors: 1488 augment /rt:routing/rt:control-plane-protocols 1489 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces: 1490 +--rw refresh-interval? uint32 1491 +--rw refresh-misses? uint32 1492 +--rw checksum? boolean 1493 +--rw patherr-state-removal? empty 1494 augment /rt:routing/rt:control-plane-protocols 1495 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1496 /rsvp:refresh-reduction: 1497 +--rw bundle-message-max-size? uint32 1498 +--rw reliable-ack-hold-time? uint32 1499 +--rw reliable-ack-max-size? uint32 1500 +--rw reliable-retransmit-time? uint32 1501 +--rw reliable-srefresh? empty 1502 +--rw summary-max-size? uint32 1503 augment /rt:routing/rt:control-plane-protocols 1504 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1505 /rsvp:hellos: 1506 +--rw interface-based? empty 1507 +--rw hello-interval? uint32 1508 +--rw hello-misses? uint32 1509 augment /rt:routing/rt:control-plane-protocols 1510 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1511 /rsvp:authentication: 1512 +--rw lifetime? uint32 1513 +--rw window-size? uint32 1514 +--rw challenge? empty 1515 +--rw retransmits? uint32 1516 +--rw key-chain? key-chain:key-chain-ref 1517 augment /rt:routing/rt:control-plane-protocols 1518 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1519 /rsvp:interface: 1520 +--rw refresh-interval? uint32 1521 +--rw refresh-misses? uint32 1522 +--rw checksum? boolean 1523 +--rw patherr-state-removal? empty 1525 augment /rt:routing/rt:control-plane-protocols 1526 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1527 /rsvp:interface/rsvp:refresh-reduction: 1528 +--rw bundle-message-max-size? uint32 1529 +--rw reliable-ack-hold-time? uint32 1530 +--rw reliable-ack-max-size? uint32 1531 +--rw reliable-retransmit-time? uint32 1532 +--rw reliable-srefresh? empty 1533 +--rw summary-max-size? uint32 1534 augment /rt:routing/rt:control-plane-protocols 1535 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1536 /rsvp:interface/rsvp:hellos: 1537 +--rw interface-based? empty 1538 +--rw hello-interval? uint32 1539 +--rw hello-misses? uint32 1540 augment /rt:routing/rt:control-plane-protocols 1541 /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces 1542 /rsvp:interface/rsvp:authentication: 1543 +--rw lifetime? uint32 1544 +--rw window-size? uint32 1545 +--rw challenge? empty 1546 +--rw retransmits? uint32 1547 +--rw key-chain? key-chain:key-chain-ref 1549 Figure 4: RSVP extended model tree diagram 1551 2.5.2. YANG Module 1553 The ietf-rsvp-extended module imports from the following modules: 1555 o ietf-rsvp defined in this document 1557 o ietf-routing defined in [RFC8349] 1559 o ietf-yang-types and ietf-inet-types defined in [RFC6991] 1561 o ietf-key-chain defined in [RFC8177] 1563 Figure 5 shows the RSVP extended YANG module: 1565 file "ietf-rsvp-extended@2019-07-04.yang" 1566 module ietf-rsvp-extended { 1567 yang-version 1.1; 1569 namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-extended"; 1571 prefix "rsvp-ext"; 1572 import ietf-rsvp { 1573 prefix "rsvp"; 1574 reference 1575 "RFCXXXX: A YANG Data Model for Resource Reservation Protocol 1576 (RSVP)"; 1577 } 1579 import ietf-routing { 1580 prefix "rt"; 1581 reference 1582 "RFC8349: A YANG Data Model for Routing Management 1583 (NMDA Version)"; 1584 } 1586 import ietf-yang-types { 1587 prefix "yang"; 1588 reference "RFC6991: Common YANG Data Types"; 1589 } 1591 import ietf-key-chain { 1592 prefix "key-chain"; 1593 reference "RFC8177: YANG Data Model for Key Chains"; 1594 } 1596 organization 1597 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1598 Working Group"; 1600 contact 1601 "WG Web: 1602 WG List: 1604 Editor: Vishnu Pavan Beeram 1605 1607 Editor: Tarek Saad 1608 1610 Editor: Rakesh Gandhi 1611 1613 Editor: Himanshu Shah 1614 1616 Editor: Xufeng Liu 1617 1619 Editor: Xia Chen 1620 1622 Editor: Raqib Jones 1623 1625 Editor: Bin Wen 1626 "; 1628 description 1629 "This module contains the Extended RSVP YANG data model. 1630 The model fully conforms to the Network Management Datastore 1631 Architecture (NMDA). 1633 Copyright (c) 2019 IETF Trust and the persons 1634 identified as authors of the code. All rights reserved. 1636 Redistribution and use in source and binary forms, with or 1637 without modification, is permitted pursuant to, and subject 1638 to the license terms contained in, the Simplified BSD License 1639 set forth in Section 4.c of the IETF Trust's Legal Provisions 1640 Relating to IETF Documents 1641 (https://trustee.ietf.org/license-info). 1642 This version of this YANG module is part of RFC XXXX; see 1643 the RFC itself for full legal notices."; 1645 // RFC Ed.: replace XXXX with actual RFC number and remove this 1646 // note. 1648 // RFC Ed.: update the date below with the date of RFC publication 1649 // and remove this note. 1651 revision "2019-07-04" { 1652 description 1653 "A YANG Data Model for Extended Resource Reservation 1654 Protocol"; 1655 reference 1656 "RFCXXXX: A YANG Data Model for Resource Reservation Protocol 1657 (RSVP)"; 1658 } 1660 /* RSVP features */ 1661 feature authentication { 1662 description 1663 "Indicates support for RSVP authentication"; 1664 } 1666 feature error-statistics { 1667 description 1668 "Indicates support for error statistics"; 1669 } 1671 feature global-statistics { 1672 description 1673 "Indicates support for global statistics"; 1674 } 1676 feature graceful-restart { 1677 description 1678 "Indicates support for RSVP graceful restart"; 1679 } 1681 feature hellos { 1682 description 1683 "Indicates support for RSVP hellos (RFC3209)."; 1684 } 1686 feature notify { 1687 description 1688 "Indicates support for RSVP notify message (RFC3473)."; 1689 } 1691 feature refresh-reduction { 1692 description 1693 "Indicates support for RSVP refresh reduction (RFC2961)."; 1694 } 1696 feature refresh-reduction-extended { 1697 description 1698 "Indicates support for RSVP refresh reduction (RFC2961)."; 1699 } 1701 feature per-interface-statistics { 1702 description 1703 "Indicates support for per interface statistics"; 1704 } 1706 grouping graceful-restart-extended-config { 1707 description 1708 "Configuration parameters relating to RSVP 1709 Graceful-Restart"; 1710 leaf restart-time { 1711 type uint32; 1712 units seconds; 1713 description 1714 "Graceful restart time (seconds)."; 1715 reference 1716 "RFC 5495: Description of the Resource 1717 Reservation Protocol - Traffic-Engineered 1718 (RSVP-TE) Graceful Restart Procedures"; 1719 } 1720 leaf recovery-time { 1721 type uint32; 1722 units seconds; 1723 description 1724 "RSVP state recovery time"; 1725 } 1726 } 1728 grouping authentication-extended-config { 1729 description 1730 "Configuration parameters relating to RSVP 1731 authentication"; 1732 leaf lifetime { 1733 type uint32 { 1734 range "30..86400"; 1735 } 1736 units seconds; 1737 description 1738 "Life time for each security association"; 1739 reference 1740 "RFC 2747: RSVP Cryptographic 1741 Authentication"; 1742 } 1743 leaf window-size { 1744 type uint32 { 1745 range "1..64"; 1746 } 1747 description 1748 "Window-size to limit number of out-of-order 1749 messages."; 1750 reference 1751 "RFC 2747: RSVP Cryptographic 1752 Authentication"; 1753 } 1754 leaf challenge { 1755 type empty; 1756 description 1757 "Enable challenge messages."; 1758 reference 1759 "RFC 2747: RSVP Cryptographic 1760 Authentication"; 1761 } 1762 leaf retransmits { 1763 type uint32 { 1764 range "1..10000"; 1765 } 1766 description 1767 "Number of retransmits when messages are 1768 dropped."; 1769 reference 1770 "RFC 2747: RSVP Cryptographic 1771 Authentication"; 1772 } 1773 leaf key-chain { 1774 type key-chain:key-chain-ref; 1775 description 1776 "Key chain name to authenticate RSVP 1777 signaling messages."; 1778 reference 1779 "RFC 2747: RSVP Cryptographic 1780 Authentication"; 1781 } 1782 } 1784 grouping hellos-extended-config { 1785 description 1786 "Configuration parameters relating to RSVP 1787 hellos"; 1788 leaf interface-based { 1789 type empty; 1790 description 1791 "Enable interface-based Hello adjacency if present."; 1792 } 1793 leaf hello-interval { 1794 type uint32; 1795 units milliseconds; 1796 description 1797 "Configure interval between successive Hello 1798 messages in milliseconds."; 1799 reference 1800 "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels. 1801 RFC 5495: Description of the Resource 1802 Reservation Protocol - Traffic-Engineered 1803 (RSVP-TE) Graceful Restart Procedures"; 1804 } 1805 leaf hello-misses { 1806 type uint32 { 1807 range "1..10"; 1808 } 1809 description 1810 "Configure max number of consecutive missed 1811 Hello messages."; 1813 reference 1814 "RFC 3209: RSVP-TE: Extensions to RSVP for 1815 LSP Tunnels RFC 5495: Description of the 1816 Resource Reservation Protocol - Traffic- 1817 Engineered (RSVP-TE) Graceful Restart 1818 Procedures"; 1819 } 1820 } 1822 grouping signaling-parameters-extended-config { 1823 description 1824 "Configuration parameters relating to RSVP 1825 signaling"; 1826 leaf refresh-interval { 1827 type uint32; 1828 description 1829 "Set interval between successive refreshes"; 1830 } 1831 leaf refresh-misses { 1832 type uint32; 1833 description 1834 "Set max number of consecutive missed 1835 messages for state expiry"; 1836 } 1837 leaf checksum { 1838 type boolean; 1839 description 1840 "Enable RSVP message checksum computation"; 1841 } 1842 leaf patherr-state-removal { 1843 type empty; 1844 description 1845 "State-Removal flag in Path Error message 1846 if present."; 1847 } 1848 } 1850 grouping refresh-reduction-extended-config { 1851 description 1852 "Configuration parameters relating to RSVP 1853 refresh reduction"; 1855 leaf bundle-message-max-size { 1856 type uint32 { 1857 range "512..65000"; 1858 } 1859 description 1860 "Configure maximum size (bytes) of a 1861 single RSVP Bundle message."; 1862 } 1863 leaf reliable-ack-hold-time { 1864 type uint32; 1865 units milliseconds; 1866 description 1867 "Configure hold time in milliseconds for 1868 sending RSVP ACK message(s)."; 1869 } 1870 leaf reliable-ack-max-size { 1871 type uint32; 1872 description 1873 "Configure max size of a single RSVP ACK 1874 message."; 1875 } 1876 leaf reliable-retransmit-time { 1877 type uint32; 1878 units milliseconds; 1879 description 1880 "Configure min delay in milliseconds to 1881 wait for an ACK before a retransmit."; 1882 } 1883 leaf reliable-srefresh { 1884 type empty; 1885 description 1886 "Configure use of reliable messaging for 1887 summary refresh if present."; 1888 } 1889 leaf summary-max-size { 1890 type uint32 { 1891 range "20..65000"; 1892 } 1893 description 1894 "Configure max size (bytes) of a single 1895 RSVP summary refresh message."; 1896 } 1897 } 1899 grouping packets-extended-state { 1900 description 1901 "Packet statistics."; 1902 leaf discontinuity-time { 1903 type yang:date-and-time; 1904 description 1905 "The time on the most recent occasion at which any one 1906 or more of the statistic counters suffered a 1907 discontinuity. If no such discontinuities have occurred 1908 since the last re-initialization of the local 1909 management subsystem, then this node contains the time 1910 the local management subsystem re-initialized itself."; 1911 } 1912 leaf out-dropped { 1913 type yang:counter64; 1914 description 1915 "Out packet drop count"; 1916 } 1918 leaf in-dropped { 1919 type yang:counter64; 1920 description 1921 "In packet drop count"; 1922 } 1924 leaf out-errors { 1925 type yang:counter64; 1926 description 1927 "Out packet errors count"; 1928 } 1930 leaf in-errors { 1931 type yang:counter64; 1932 description 1933 "In packet rx errors count"; 1934 } 1935 } 1937 grouping protocol-extended-state { 1938 description "RSVP protocol statistics."; 1939 } 1941 grouping errors-extended-state { 1942 description 1943 "Error statistics."; 1944 } 1946 grouping extended-state { 1947 description "RSVP statistic attributes."; 1948 uses packets-extended-state; 1949 uses protocol-extended-state; 1950 uses errors-extended-state; 1951 } 1953 /** 1954 * RSVP extensions augmentations 1955 */ 1957 /* RSVP globals graceful restart*/ 1958 augment "/rt:routing/rt:control-plane-protocols/" + 1959 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1960 "rsvp:graceful-restart" { 1961 description 1962 "RSVP globals configuration extensions"; 1963 uses graceful-restart-extended-config; 1964 } 1966 /* RSVP statistics augmentation */ 1967 augment "/rt:routing/rt:control-plane-protocols/" + 1968 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1969 "rsvp:statistics/rsvp:packets" { 1970 description 1971 "RSVP packet stats extensions"; 1972 uses packets-extended-state; 1973 } 1974 augment "/rt:routing/rt:control-plane-protocols/" + 1975 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1976 "rsvp:statistics/rsvp:messages" { 1977 description 1978 "RSVP protocol message stats extensions"; 1979 uses protocol-extended-state; 1980 } 1981 augment "/rt:routing/rt:control-plane-protocols/" + 1982 "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + 1983 "rsvp:statistics/rsvp:errors" { 1984 description 1985 "RSVP errors stats extensions"; 1986 uses errors-extended-state; 1987 } 1989 /** 1990 * RSVP all interfaces extensions 1991 */ 1993 /* RSVP interface signaling extensions */ 1994 augment "/rt:routing/rt:control-plane-protocols/" 1995 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { 1996 description 1997 "RSVP signaling all interfaces configuration extensions"; 1998 uses signaling-parameters-extended-config; 1999 } 2001 /* RSVP refresh reduction extension */ 2002 augment "/rt:routing/rt:control-plane-protocols/" 2003 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2004 + "rsvp:refresh-reduction" { 2006 description 2007 "RSVP refresh-reduction all interface configuration 2008 extensions"; 2009 uses refresh-reduction-extended-config; 2010 } 2012 /* RSVP hellos extension */ 2013 augment "/rt:routing/rt:control-plane-protocols/" 2014 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2015 + "rsvp:hellos" { 2016 description 2017 "RSVP hello all interfaces configuration extensions"; 2018 uses hellos-extended-config; 2019 } 2021 /* RSVP authentication extension */ 2022 augment "/rt:routing/rt:control-plane-protocols/" 2023 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" 2024 + "rsvp:authentication" { 2025 description 2026 "RSVP authentication all interfaces configuration extensions"; 2027 uses authentication-extended-config; 2028 } 2030 /** 2031 * RSVP interface extensions 2032 */ 2034 /* RSVP interface signaling extensions */ 2035 augment "/rt:routing/rt:control-plane-protocols/" 2036 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2037 "rsvp:interface" { 2038 description 2039 "RSVP signaling interface configuration extensions"; 2040 uses signaling-parameters-extended-config; 2041 } 2043 /* RSVP refresh reduction extension */ 2044 augment "/rt:routing/rt:control-plane-protocols/" 2045 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2046 "rsvp:interface/rsvp:refresh-reduction" { 2047 description 2048 "RSVP refresh-reduction interface configuration extensions"; 2049 uses refresh-reduction-extended-config; 2050 } 2052 /* RSVP hellos extension */ 2053 augment "/rt:routing/rt:control-plane-protocols/" 2054 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2055 "rsvp:interface/rsvp:hellos" { 2056 description 2057 "RSVP hello interface configuration extensions"; 2058 uses hellos-extended-config; 2059 } 2061 /* RSVP authentication extension */ 2062 augment "/rt:routing/rt:control-plane-protocols/" 2063 + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + 2064 "rsvp:interface/rsvp:authentication" { 2065 description 2066 "RSVP authentication interface configuration extensions"; 2067 uses authentication-extended-config; 2068 } 2069 } 2070 2072 Figure 5: RSVP extended YANG module 2074 3. IANA Considerations 2076 This document registers the following URIs in the IETF XML registry 2077 [RFC3688]. Following the format in [RFC3688], the following 2078 registration is requested to be made. 2080 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp 2081 XML: N/A, the requested URI is an XML namespace. 2083 URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-extended 2084 XML: N/A, the requested URI is an XML namespace. 2086 This document registers two YANG modules in the YANG Module Names 2087 registry [RFC6020]. 2089 name: ietf-rsvp 2090 namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp 2091 prefix: ietf-rsvp 2092 reference: RFCXXXX 2094 name: ietf-rsvp-extended 2095 namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp-extended 2096 prefix: ietf-rsvp-extendeed 2097 reference: RFCXXXX 2099 4. Security Considerations 2101 The YANG module specified in this document defines a schema for data 2102 that is designed to be accessed via network management protocols such 2103 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 2104 is the secure transport layer, and the mandatory-to-implement secure 2105 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 2106 is HTTPS, and the mandatory-to-implement secure transport is TLS 2107 [RFC8446]. 2109 The Network Configuration Access Control Model (NACM) [RFC8341] 2110 provides the means to restrict access for particular NETCONF or 2111 RESTCONF users to a preconfigured subset of all available NETCONF or 2112 RESTCONF protocol operations and content. 2114 There are a number of data nodes defined in the YANG module which are 2115 writable/creatable/deletable (i.e., config true, which is the 2116 default). These data nodes may be considered sensitive or vulnerable 2117 in some network environments. Write operations (e.g., ) 2118 to these data nodes without proper protection can have a negative 2119 effect on network operations. 2121 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ 2122 rsvp: 2124 The presence of this container enables the RSVP protocol 2125 functionality on a device. It alsocontrols the configuration 2126 settings on data nodes pertaining to RSVP sessions, interfaces and 2127 neighbors. All of which are considered sensitive and if access to 2128 either of these is compromised, it can result in temporary network 2129 outages or be employed to mount DoS attacks. 2131 For RSVP authentication, the configuration supported is via the 2132 specification of key-chains [RFC8177] or the direct specification of 2133 key and authentication algorithm, and hence security considerations 2134 of [RFC8177] are inherited. This includes the considerations with 2135 respect to the local storage and handling of authentication keys. 2137 Some of the RPC operations defined in this YANG module may be 2138 considered sensitive or vulnerable in some network environments. It 2139 is thus important to control access to these operations. The RSVP 2140 YANG module support the "clear-session" and "clear-neighbor" RPCs. 2141 If access to either of these is compromised, they can result in 2142 temporary network outages be employed to mount DoS attacks. 2144 The security considerations spelled out in the YANG 1.1 specification 2145 [RFC7950] apply for this document as well. 2147 5. Acknowledgement 2149 The authors would like to thank Lou Berger for reviewing and 2150 providing valuable feedback on this document. 2152 6. Contributors 2154 Himanshu Shah 2155 Ciena 2157 Email: hshah@ciena.com 2159 Xia Chen 2160 Huawei Technologies 2162 Email: jescia.chenxia@huawei.com 2164 Raqib Jones 2165 Brocade 2167 Email: raqib@Brocade.com 2169 Bin Wen 2170 Comcast 2172 Email: Bin_Wen@cable.comcast.com 2174 7. Normative References 2176 [I-D.ietf-netconf-subscribed-notifications] 2177 Voit, E., Clemm, A., Prieto, A., Nilsen-Nygaard, E., and 2178 A. Tripathy, "Subscription to YANG Event Notifications", 2179 draft-ietf-netconf-subscribed-notifications-26 (work in 2180 progress), May 2019. 2182 [I-D.ietf-netconf-yang-push] 2183 Clemm, A. and E. Voit, "Subscription to YANG Datastores", 2184 draft-ietf-netconf-yang-push-25 (work in progress), May 2185 2019. 2187 [I-D.ietf-teas-yang-rsvp-te] 2188 Beeram, V., Saad, T., Gandhi, R., Liu, X., Bryskin, I., 2189 and H. Shah, "A YANG Data Model for RSVP-TE Protocol", 2190 draft-ietf-teas-yang-rsvp-te-06 (work in progress), April 2191 2019. 2193 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2194 Requirement Levels", BCP 14, RFC 2119, 2195 DOI 10.17487/RFC2119, March 1997, 2196 . 2198 [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S. 2199 Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 2200 Functional Specification", RFC 2205, DOI 10.17487/RFC2205, 2201 September 1997, . 2203 [RFC2747] Baker, F., Lindell, B., and M. Talwar, "RSVP Cryptographic 2204 Authentication", RFC 2747, DOI 10.17487/RFC2747, January 2205 2000, . 2207 [RFC2961] Berger, L., Gan, D., Swallow, G., Pan, P., Tommasi, F., 2208 and S. Molendini, "RSVP Refresh Overhead Reduction 2209 Extensions", RFC 2961, DOI 10.17487/RFC2961, April 2001, 2210 . 2212 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 2213 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 2214 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 2215 . 2217 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 2218 Switching (GMPLS) Signaling Resource ReserVation Protocol- 2219 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, 2220 DOI 10.17487/RFC3473, January 2003, 2221 . 2223 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2224 DOI 10.17487/RFC3688, January 2004, 2225 . 2227 [RFC5063] Satyanarayana, A., Ed. and R. Rahman, Ed., "Extensions to 2228 GMPLS Resource Reservation Protocol (RSVP) Graceful 2229 Restart", RFC 5063, DOI 10.17487/RFC5063, October 2007, 2230 . 2232 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2233 the Network Configuration Protocol (NETCONF)", RFC 6020, 2234 DOI 10.17487/RFC6020, October 2010, 2235 . 2237 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2238 and A. Bierman, Ed., "Network Configuration Protocol 2239 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2240 . 2242 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2243 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2244 . 2246 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2247 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2248 . 2250 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 2251 RFC 7950, DOI 10.17487/RFC7950, August 2016, 2252 . 2254 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2255 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2256 . 2258 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2259 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2260 May 2017, . 2262 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 2263 Zhang, "YANG Data Model for Key Chains", RFC 8177, 2264 DOI 10.17487/RFC8177, June 2017, 2265 . 2267 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 2268 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 2269 . 2271 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 2272 Access Control Model", STD 91, RFC 8341, 2273 DOI 10.17487/RFC8341, March 2018, 2274 . 2276 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 2277 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 2278 . 2280 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 2281 Routing Management (NMDA Version)", RFC 8349, 2282 DOI 10.17487/RFC8349, March 2018, 2283 . 2285 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 2286 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 2287 . 2289 Authors' Addresses 2291 Vishnu Pavan Beeram 2292 Juniper Networks 2294 Email: vbeeram@juniper.net 2296 Tarek Saad 2297 Juniper Networks 2299 Email: tsaad@juniper.net 2301 Rakesh Gandhi 2302 Cisco Systems, Inc. 2304 Email: rgandhi@cisco.com 2306 Xufeng Liu 2307 Jabil 2309 Email: Xufeng_Liu@jabil.com 2311 Igor Bryskin 2312 Huawei Technologies 2314 Email: Igor.Bryskin@huawei.com