idnits 2.17.1 draft-ietf-pce-pcep-yang-14.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 438 has weird spacing: '...in-type dom...' == Line 465 has weird spacing: '...in-type dom...' == Line 490 has weird spacing: '...ax-rate uin...' == Line 497 has weird spacing: '...--rw of ide...' == Line 506 has weird spacing: '...-source uin...' == (23 more instances...) -- The document date (July 8, 2020) is 1381 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 (-41) exists of draft-ietf-netconf-tls-client-server-19 == Outdated reference: A later version (-36) exists of draft-ietf-teas-yang-te-23 Summary: 0 errors (**), 0 flaws (~~), 9 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 PCE Working Group D. Dhody, Ed. 3 Internet-Draft Huawei Technologies 4 Intended status: Standards Track J. Hardwick 5 Expires: January 9, 2021 Metaswitch 6 V. Beeram 7 Juniper Networks 8 J. Tantsura 9 Apstra, Inc. 10 July 8, 2020 12 A YANG Data Model for Path Computation Element Communications Protocol 13 (PCEP) 14 draft-ietf-pce-pcep-yang-14 16 Abstract 18 This document defines a YANG data model for the management of Path 19 Computation Element communications Protocol (PCEP) for communications 20 between a Path Computation Client (PCC) and a Path Computation 21 Element (PCE), or between two PCEs. The data model includes 22 configuration and state data. 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 January 9, 2021. 41 Copyright Notice 43 Copyright (c) 2020 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 59 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 60 3. Terminology and Notation . . . . . . . . . . . . . . . . . . 3 61 3.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 5 62 3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5 63 3.3. Refrences in the Model . . . . . . . . . . . . . . . . . 5 64 4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 7 65 5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 8 66 5.1. The Overview of PCEP Data Model . . . . . . . . . . . . . 8 67 5.2. The Entity . . . . . . . . . . . . . . . . . . . . . . . 9 68 5.3. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 13 69 5.4. The Session Lists . . . . . . . . . . . . . . . . . . . . 15 70 5.5. Notifications . . . . . . . . . . . . . . . . . . . . . . 17 71 5.6. RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 72 5.7. The Full PCEP Data Model . . . . . . . . . . . . . . . . 18 73 6. The Design of PCEP Statistics Data Model . . . . . . . . . . 24 74 7. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 27 75 7.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 27 76 8. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 28 77 8.1. The PCE-Initiated LSP . . . . . . . . . . . . . . . . . . 28 78 9. Other Considerations . . . . . . . . . . . . . . . . . . . . 28 79 9.1. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 28 80 10. PCEP YANG Modules . . . . . . . . . . . . . . . . . . . . . . 28 81 10.1. ietf-pcep module . . . . . . . . . . . . . . . . . . . . 28 82 10.2. ietf-pcep-stats module . . . . . . . . . . . . . . . . . 83 83 11. Security Considerations . . . . . . . . . . . . . . . . . . . 101 84 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 102 85 13. Implementation Status . . . . . . . . . . . . . . . . . . . . 103 86 14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 103 87 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 104 88 15.1. Normative References . . . . . . . . . . . . . . . . . . 104 89 15.2. Informative References . . . . . . . . . . . . . . . . . 107 90 Appendix A. Example . . . . . . . . . . . . . . . . . . . . . . 109 91 Appendix B. Contributor Addresses . . . . . . . . . . . . . . . 112 92 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 113 94 1. Introduction 96 The Path Computation Element (PCE) defined in [RFC4655] is an entity 97 that is capable of computing a network path or route based on a 98 network graph, and applying computational constraints. A Path 99 Computation Client (PCC) may make requests to a PCE for paths to be 100 computed. 102 PCEP is the communication protocol between a PCC and PCE and is 103 defined in [RFC5440]. PCEP interactions include path computation 104 requests and path computation replies as well as notifications of 105 specific states related to the use of a PCE in the context of 106 Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) 107 Traffic Engineering (TE). [RFC8231] specifies extensions to PCEP to 108 enable stateful control of MPLS TE LSPs. 110 This document defines a YANG [RFC7950] data model for the management 111 of PCEP speakers. It is important to establish a common data model 112 for how PCEP speakers are identified, configured, and monitored. The 113 data model includes configuration data and state data. 115 This document contains a specification of the PCEP YANG module, 116 "ietf-pcep" which provides the PCEP [RFC5440] data model. 118 The PCEP operational state is included in the same tree as the PCEP 119 configuration consistent with Network Management Datastore 120 Architecture [RFC8342]. The origin of the data is indicated as per 121 the origin metadata annotation. 123 2. Requirements Language 125 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 126 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 127 "OPTIONAL" in this document are to be interpreted as described in BCP 128 14 [RFC2119] [RFC8174] when, and only when, they appear in all 129 capitals, as shown here. 131 3. Terminology and Notation 133 This document uses the terminology defined in [RFC4655] and 134 [RFC5440]. In particular, it uses the following acronyms. 136 o Path Computation Request message (PCReq). 138 o Path Computation Reply message (PCRep). 140 o Notification message (PCNtf). 142 o Error message (PCErr). 144 o Request Parameters object (RP). 146 o Synchronization Vector object (SVEC). 148 o Explicit Route object (ERO). 150 This document also uses the following terms defined in [RFC7420]: 152 o PCEP entity: a local PCEP speaker. 154 o PCEP peer: to refer to a remote PCEP speaker. 156 o PCEP speaker: where it is not necessary to distinguish between 157 local and remote. 159 Further, this document also uses the following terms defined in 160 [RFC8231] : 162 o Stateful PCE, Passive Stateful PCE, Active Stateful PCE 164 o Delegation, Revocation, Redelegation 166 o LSP State Report, Path Computation Report message (PCRpt). 168 o LSP State Update, Path Computation Update message (PCUpd). 170 [RFC8281] : 172 o PCE-initiated LSP, Path Computation LSP Initiate Message 173 (PCInitiate). 175 [RFC8408] : 177 o Path Setup Type (PST). 179 [RFC8664] : 181 o Segment Routing (SR). 183 [RFC6241] : 185 o Configuration data. 187 o State data. 189 3.1. Tree Diagrams 191 A simplified graphical representation of the data model is used in 192 this document. The meaning of the symbols in these diagrams is 193 defined in [RFC8340]. 195 3.2. Prefixes in Data Node Names 197 In this document, names of data nodes and other data model objects 198 are often used without a prefix, as long as it is clear from the 199 context in which YANG module each name is defined. Otherwise, names 200 are prefixed using the standard prefix associated with the 201 corresponding YANG module, as shown in Table 1. 203 +----------+------------------+-------------------------------------+ 204 | Prefix | YANG module | Reference | 205 +----------+------------------+-------------------------------------+ 206 | yang | ietf-yang-types | [RFC6991] | 207 | inet | ietf-inet-types | [RFC6991] | 208 | te | ietf-te | [I-D.ietf-teas-yang-te] | 209 | te-types | ietf-te-types | [I-D.ietf-teas-yang-te] | 210 | key- | ietf-key-chain | [RFC8177] | 211 | chain | | | 212 | nacm | ietf-netconf-acm | [RFC8341] | 213 | tlss | ietf-tls-server | [I-D.ietf-netconf-tls-client-server | 214 | | | ] | 215 | tlsc | ietf-tls-client | [I-D.ietf-netconf-tls-client-server | 216 | | | ] | 217 | ospf | ietf-ospf | [I-D.ietf-ospf-yang] | 218 | isis | ietf-isis | [I-D.ietf-isis-yang-isis-cfg] | 219 +----------+------------------+-------------------------------------+ 221 Table 1: Prefixes and corresponding YANG modules 223 3.3. Refrences in the Model 225 Following documents are refrenced in the model defined in this 226 document - 228 +----------------------------+--------------------------------------+ 229 | Documents | Reference | 230 +----------------------------+--------------------------------------+ 231 | RSVP-TE: Extensions to | [RFC3209] | 232 | RSVP for LSP Tunnels | | 233 | OSPF Protocol Extensions | [RFC5088] | 234 | for Path Computation | | 235 | Element (PCE) Discovery | | 236 | IS-IS Protocol Extensions | [RFC5089] | 237 | for Path Computation | | 238 | Element (PCE) Discovery | | 239 | Path Computation Element | [RFC5440] | 240 | (PCE) Communication | | 241 | Protocol (PCEP) | | 242 | Preserving Topology | [RFC5520] | 243 | Confidentiality in Inter- | | 244 | Domain Path Computation | | 245 | Using a Path-Key-Based | | 246 | Mechanism | | 247 | Encoding of Objective | [RFC5541] | 248 | Functions in the Path | | 249 | Computation Element | | 250 | Communication Protocol | | 251 | (PCEP) | | 252 | Path Computation Element | [RFC5557] | 253 | Communication Protocol | | 254 | (PCEP) Requirements and | | 255 | Protocol Extensions in | | 256 | Support of Global | | 257 | Concurrent Optimization | | 258 | Common YANG Data Types | [RFC6991] | 259 | YANG Data Model for Key | [RFC8177] | 260 | Chains | | 261 | Path Computation Element | [RFC8231] | 262 | Communication Protocol | | 263 | (PCEP) Extensions for | | 264 | Stateful PCE | | 265 | Optimizations of Label | [RFC8232] | 266 | Switched Path State | | 267 | Synchronization Procedures | | 268 | for a Stateful PCE | | 269 | PCEPS: Usage of TLS to | [RFC8253] | 270 | Provide a Secure Transport | | 271 | for the Path Computation | | 272 | Element Communication | | 273 | Protocol (PCEP) | | 274 | Path Computation Element | [RFC8281] | 275 | Communication Protocol | | 276 | (PCEP) Extensions for PCE- | | 277 | Initiated LSP Setup in a | | 278 | Stateful PCE Model | | 279 | Extensions to the Path | [RFC8306] | 280 | Computation Element | | 281 | Communication Protocol | | 282 | (PCEP) for Point-to- | | 283 | Multipoint Traffic | | 284 | Engineering Label Switched | | 285 | Paths | | 286 | Network Configuration | [RFC8341] | 287 | Access Control Model | | 288 | Conveying Path Setup Type | [RFC8408] | 289 | in PCE Communication | | 290 | Protocol (PCEP) Messages | | 291 | Traffic Engineering Common | [RFC8776] | 292 | YANG Types | | 293 | A YANG Data Model for | [I-D.ietf-teas-yang-te] | 294 | Traffic Engineering | | 295 | Tunnels and Interfaces | | 296 | YANG Groupings for TLS | [I-D.ietf-netconf-tls-client-server] | 297 | Clients and TLS Servers | | 298 | PCEP Extensions for | [RFC8664] | 299 | Segment Routing | | 300 | PCEP Extensions for | [RFC8697] | 301 | Establishing Relationships | | 302 | Between Sets of LSPs | | 303 | YANG Data Model for OSPF | [I-D.ietf-ospf-yang] | 304 | Protocol | | 305 | YANG Data Model for IS-IS | [I-D.ietf-isis-yang-isis-cfg] | 306 | Protocol | | 307 | PCEP extensions for GMPLS | [I-D.ietf-pce-gmpls-pcep-extensions] | 308 +----------------------------+--------------------------------------+ 310 Table 2: Refrences in the YANG modules 312 4. Objectives 314 This section describes some of the design objectives for the model: 316 o In case of existing implementations, it needs to map the data 317 model defined in this document to their proprietary native data 318 model. To facilitate such mappings, the data model should be 319 simple. 321 o The data model should be suitable for new implementations to use 322 as is. 324 o Mapping to the PCEP MIB Module should be clear. 326 o The data model should allow for static configurations of peers. 328 o The data model should include read-only counters in order to 329 gather statistics for sent and received PCEP messages, received 330 messages with errors, and messages that could not be sent due to 331 errors. This could be in a separate model which augments the base 332 data model. 334 o It should be fairly straightforward to augment the base data model 335 for advanced PCE features. 337 5. The Design of PCEP Data Model 339 5.1. The Overview of PCEP Data Model 341 The PCEP YANG module defined in this document has all the common 342 building blocks for the PCEP protocol. 344 module: ietf-pcep 345 +--rw pcep! 346 +--rw entity 347 +--rw addr inet:ip-address 348 +--rw enabled? boolean 349 +--rw role pcep-role 350 +--rw description? string 351 +--rw speaker-entity-id? string 352 | {stateful-sync-opt}? 353 +--rw admin-status? pcep-admin-status 354 +--ro index? uint32 355 +--ro oper-status? pcep-oper-status 356 +--rw domain 357 | +--rw domain* [domain-type domain] 358 | ... 359 +--rw capability 361 | ... 362 +--rw pce-info 363 | +--rw scope 364 | | ... 365 | +--rw neigh-domains 366 | | ... 367 | +--rw path-key {path-key}? 368 | ... 370 +--ro lsp-db {stateful}? 371 | +--ro db-ver? uint64 372 | | {stateful-sync-opt}? 373 | +--ro association-list* 374 | | [id source global-source extended-id] 375 | | ... 376 | +--ro lsp* [plsp-id pcc-id lsp-id] 377 | ... 378 +--ro path-keys {path-key}? 379 | +--ro path-keys* [path-key] 380 | ... 381 +--rw peers 382 +--rw peer* [addr] 384 +--ro sessions 385 +--ro session* [initiator] 386 ... 388 rpcs: 389 +---x trigger-resync {stateful,stateful-sync-opt}? 390 +---w input 391 +---w pcc? -> /pcep/entity/peers/peer/addr 393 notifications: 394 +---n pcep-session-up 395 | ... 396 +---n pcep-session-down 397 | ... 398 +---n pcep-session-local-overload 399 | ... 400 +---n pcep-session-local-overload-clear 401 | ... 402 +---n pcep-session-peer-overload 403 | ... 404 +---n pcep-session-peer-overload-clear 405 ... 407 5.2. The Entity 409 The PCEP yang module may contain status information for the local 410 PCEP entity. 412 The entity has an IP address (using ietf-inet-types [RFC6991]) and a 413 "role" leaf (the local entity PCEP role) as mandatory. 415 Note that, the PCEP MIB module [RFC7420] uses an entity list and a 416 system generated entity index as a primary index to the read only 417 entity table. If the device implements the PCEP MIB, the "index" 418 leaf MUST contain the value of the corresponding pcePcepEntityIndex 419 and only one entity is assumed. 421 The various information related to this entity such as its domain, 422 capcabilities etc. Further incase when the entity is PCE it could 423 also have path-key and the LSP-DB information. 425 module: ietf-pcep 426 +--rw pcep! 427 +--rw entity 428 +--rw addr inet:ip-address 429 +--rw enabled? boolean 430 +--rw role pcep-role 431 +--rw description? string 432 +--rw speaker-entity-id? string {sync-opt}? 433 +--rw admin-status? boolean 434 +--ro index? uint32 435 +--ro oper-status? pcep-oper-status 436 +--rw domain 437 | +--rw domain* [domain-type domain] 438 | +--rw domain-type domain-type 439 | +--rw domain domain 440 +--rw capability 441 | +--rw capability? bits 442 | +--rw pce-initiated? boolean {pce-initiated}? 443 | +--rw include-db-ver? boolean 444 | | {stateful,sync-opt}? 445 | +--rw trigger-resync? boolean 446 | | {stateful,sync-opt}? 447 | +--rw trigger-initial-sync? boolean 448 | | {stateful,sync-opt}? 449 | +--rw incremental-sync? boolean 450 | | {stateful,sync-opt}? 451 | +--rw sr {sr}? 452 | +--rw enabled? boolean 453 | +--rw msd-limit? boolean 454 | +--rw nai? boolean 455 +--rw msd? uint8 {sr}? 456 +--rw pce-info 457 | +--rw scope 458 | | +--rw path-scope? bits 459 | | +--rw intra-area-pref? uint8 460 | | +--rw inter-area-pref? uint8 461 | | +--rw inter-as-pref? uint8 462 | | +--rw inter-layer-pref? uint8 463 | +--rw neigh-domains 464 | | +--rw domain* [domain-type domain] 465 | | +--rw domain-type domain-type 466 | | +--rw domain domain 467 | +--rw path-key {path-key}? 468 | +--rw enabled? boolean 469 | +--rw discard-timer? uint32 470 | +--rw reuse-time? uint32 471 | +--rw pce-id? inet:ip-address 472 +--rw connect-timer? uint16 473 +--rw connect-max-retry? uint32 474 +--rw init-backoff-timer? uint16 475 +--rw max-backoff-timer? uint32 476 +--rw open-wait-timer? uint16 477 +--rw keep-wait-timer? uint16 478 +--rw keep-alive-timer? uint8 479 +--rw dead-timer? uint8 480 +--rw allow-negotiation? boolean 481 +--rw max-keep-alive-timer? uint8 482 +--rw max-dead-timer? uint8 483 +--rw min-keep-alive-timer? uint8 484 +--rw min-dead-timer? uint8 485 +--rw sync-timer? uint16 {svec}? 486 +--rw request-timer? uint16 487 +--rw max-sessions? uint32 488 +--rw max-unknown-reqs? uint32 489 +--rw max-unknown-msgs? uint32 490 +--rw pcep-notification-max-rate uint32 491 +--rw stateful-parameter {stateful}? 492 | +--rw state-timeout? uint32 493 | +--rw redelegation-timeout? uint32 494 | +--rw rpt-non-pcep-lsp? boolean 495 +--rw of-list {objective-function}? 496 | +--rw objective-function* [of] 497 | +--rw of identityref 498 +--ro lsp-db {stateful}? 499 | +--ro db-ver? uint64 {sync-opt}? 500 | +--ro association-list* 501 | | [type id source global-source extended-id] 502 | | {association}? 503 | | +--ro type identityref 504 | | +--ro id uint16 505 | | +--ro source inet:ip-address 506 | | +--ro global-source uint32 507 | | +--ro extended-id string 508 | | +--ro lsp* [plsp-id pcc-id lsp-id] 509 | | +--ro plsp-id -> /pcep/entity/lsp-db/lsp/plsp-id 510 | | +--ro pcc-id -> /pcep/entity/lsp-db/lsp/pcc-id 511 | | +--ro lsp-id -> /pcep/entity/lsp-db/lsp/lsp-id 512 | +--ro lsp* [plsp-id pcc-id lsp-id] 513 | +--ro plsp-id uint32 514 | +--ro pcc-id inet:ip-address 515 | +--ro source? 516 | | -> /te:te/lsps-state/lsp/source 517 | +--ro destination? 518 | | -> /te:te/lsps-state/lsp/destination 519 | +--ro tunnel-id? 520 | | -> /te:te/lsps-state/lsp/tunnel-id 521 | +--ro lsp-id 522 | | -> /te:te/lsps-state/lsp/lsp-id 523 | +--ro extended-tunnel-id? 524 | | -> /te:te/lsps-state/lsp/extended-tunnel-id 525 | +--ro admin-state? boolean 526 | +--ro operational-state? operational-state 527 | +--ro delegated 528 | | +--ro enabled? boolean 529 | | +--ro peer? -> /pcep/entity/peers/peer/addr 530 | | +--ro srp-id? uint32 531 | +--ro initiation {pce-initiated}? 532 | | +--ro enabled? boolean 533 | | +--ro peer? -> /pcep/entity/peers/peer/addr 534 | +--ro symbolic-path-name? string 535 | +--ro last-error? identityref 536 | +--ro pst? identityref 537 | +--ro association-list* 538 | [type id source global-source extended-id] 539 | {association}? 540 | +--ro type 541 | | -> /pcep/entity/lsp-db/association-list/type 542 | +--ro id 543 | | -> /pcep/entity/lsp-db/association-list/id 544 | +--ro source leafref 545 | +--ro global-source leafref 546 | +--ro extended-id leafref 547 +--ro path-keys {path-key}? 548 | +--ro path-keys* [path-key] 549 | +--ro path-key uint16 550 | +--ro cps 551 | | +--ro explicit-route-objects* [index] 552 | | +--ro index uint32 553 | | +--ro (type)? 554 | | +--:(numbered-node-hop) 555 | | | +--ro numbered-node-hop 556 | | | +--ro node-id te-node-id 557 | | | +--ro hop-type? te-hop-type 558 | | +--:(numbered-link-hop) 559 | | | +--ro numbered-link-hop 560 | | | +--ro link-tp-id te-tp-id 561 | | | +--ro hop-type? te-hop-type 562 | | | +--ro direction? te-link-direction 563 | | +--:(unnumbered-link-hop) 564 | | | +--ro unnumbered-link-hop 565 | | | +--ro link-tp-id te-tp-id 566 | | | +--ro node-id te-node-id 567 | | | +--ro hop-type? te-hop-type 568 | | | +--ro direction? te-link-direction 569 | | +--:(as-number) 570 | | | +--ro as-number-hop 571 | | | +--ro as-number inet:as-number 572 | | | +--ro hop-type? te-hop-type 573 | | +--:(label) 574 | | +--ro label-hop 575 | | +--ro te-label 576 | | +--ro (technology)? 577 | | | +--:(generic) 578 | | | ... 579 | | +--ro direction? 580 | | te-label-direction 581 | +--ro pcc-original? -> /pcep/entity/peers/peer/addr 582 | +--ro req-id? uint32 583 | +--ro retrieved? boolean 584 | +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr 585 | +--ro creation-time? yang:timestamp 586 | +--ro discard-time? uint32 587 | +--ro reuse-time? uint32 588 +--rw peers 589 +--rw peer* [addr] 590 ... 592 5.3. The Peer Lists 594 The peer list contains peer(s) that the local PCEP entity knows 595 about. A PCEP speaker is identified by its IP address. If there is 596 a PCEP speaker in the network that uses multiple IP addresses then it 597 looks like multiple distinct peers to the other PCEP speakers in the 598 network. 600 Since PCEP sessions can be ephemeral, the peer list tracks a peer 601 even when no PCEP session currently exists to that peer. The 602 statistics contained are an aggregate of the statistics for all 603 successive sessions to that peer. 605 To limit the quantity of information that is stored, an 606 implementation MAY choose to discard this information if and only if 607 no PCEP session exists to the corresponding peer. 609 The data model for PCEP peer presented in this document uses a flat 610 list of peers. Each peer in the list is identified by its IP address 611 (addr-type, addr). 613 There is a list for static peer configuration and operational state 614 of all peers (i.e.static as well as discovered)("/pcep/entity/ 615 peers"). The list is used to enable remote PCE configuration at PCC 616 (or PCE) and has the operational state of these peers as well as the 617 remote PCE peer which were discovered and PCC peers that have 618 initiated session. 620 module: ietf-pcep 621 +--rw pcep! 622 +--rw entity 623 ... 624 +--rw peers 625 +--rw peer* [addr] 626 +--rw addr inet:ip-address 627 +--rw role pcep-role 628 +--rw description? string 629 +--rw domain 630 | +--rw domain* [domain-type domain] 631 | +--rw domain-type domain-type 632 | +--rw domain domain 633 +--rw capability 634 | +--rw capability? bits 635 | +--rw pce-initiated? boolean 636 | | {pce-initiated}? 637 | +--rw include-db-ver? boolean 638 | | {stateful,sync-opt}? 639 | +--rw trigger-resync? boolean 640 | | {stateful,sync-opt}? 641 | +--rw trigger-initial-sync? boolean 642 | | {stateful,sync-opt}? 643 | +--rw incremental-sync? boolean 644 | | {stateful,sync-opt}? 645 | +--rw sr {sr}? 646 | +--rw enabled? boolean 647 | +--rw msd-limit? boolean 648 | +--rw nai? boolean 649 +--rw msd? uint8 {sr}? 650 +--rw pce-info 651 | +--rw scope 652 | | +--rw path-scope? bits 653 | | +--rw intra-area-pref? uint8 654 | | +--rw inter-area-pref? uint8 655 | | +--rw inter-as-pref? uint8 656 | | +--rw inter-layer-pref? uint8 657 | +--rw neigh-domains 658 | +--rw domain* [domain-type domain] 659 | +--rw domain-type domain-type 660 | +--rw domain domain 661 +--rw delegation-pref? uint8 {stateful}? 662 +--rw auth 663 | +--rw (auth-type-selection)? 664 | +--:(auth-key-chain) 665 | | +--rw key-chain? 666 | | key-chain:key-chain-ref 667 | +--:(auth-key) 668 | | +--rw crypto-algorithm identityref 669 | | +--rw (key-string-style)? 670 | | +--:(keystring) 671 | | | +--rw keystring? string 672 | | +--:(hexadecimal) 673 | | {key-chain:hex-key-string}? 674 | | +--rw hexadecimal-string? 675 | | yang:hex-string 676 | +--:(auth-tls) {tls}? 677 | +--rw (role)? 678 | +--:(server) 679 | | +--rw tls-server 680 | | ... 681 | +--:(client) 682 | +--rw tls-client 683 | ... 684 +--ro discontinuity-time? yang:timestamp 685 +--ro initiate-session? boolean 686 +--ro session-exists? boolean 687 +--ro session-up-time? yang:timestamp 688 +--ro session-fail-time? yang:timestamp 689 +--ro session-fail-up-time? yang:timestamp 690 +--ro sessions 691 +--ro session* [initiator] 692 ... 694 5.4. The Session Lists 696 The session list contains PCEP session that the PCEP entity (PCE or 697 PCC) is currently participating in. The statistics in session are 698 semantically different from those in peer since the former applies to 699 the current session only, whereas the latter is the aggregate for all 700 sessions that have existed to that peer. 702 Although [RFC5440] forbids more than one active PCEP session between 703 a given pair of PCEP entities at any given time, there is a window 704 during session establishment where two sessions may exist for a given 705 pair, one representing a session initiated by the local PCEP entity 706 and the other representing a session initiated by the peer. If 707 either of these sessions reaches active state first, then the other 708 is discarded. 710 The data model for PCEP session presented in this document uses a 711 flat list of sessions. Each session in the list is identified by its 712 initiator. This index allows two sessions to exist transiently for a 713 given peer, as discussed above. 715 module: ietf-pcep 716 +--rw pcep! 717 +--rw entity 718 ... 719 +--rw peers 720 +--rw peer* [addr] 721 ... 722 +--ro sessions 723 +--ro session* [initiator] 724 +--ro initiator pcep-initiator 725 +--ro role? 726 | -> /pcep/entity/role 727 +--ro state-last-change? yang:timestamp 728 +--ro state? pcep-sess-state 729 +--ro session-creation? yang:timestamp 730 +--ro connect-retry? yang:counter32 731 +--ro local-id? uint8 732 +--ro remote-id? uint8 733 +--ro keepalive-timer? uint8 734 +--ro peer-keepalive-timer? uint8 735 +--ro dead-timer? uint8 736 +--ro peer-dead-timer? uint8 737 +--ro ka-hold-time-rem? uint8 738 +--ro overloaded? boolean 739 +--ro overload-time? uint32 740 +--ro peer-overloaded? boolean 741 +--ro peer-overload-time? uint32 742 +--ro lspdb-sync? sync-state 743 | {stateful}? 744 +--ro recv-db-ver? uint64 745 | {stateful,sync-opt}? 746 +--ro of-list {objective-function}? 747 | +--ro objective-function* [of] 748 | +--ro of identityref 749 +--ro pst-list 750 | +--ro path-setup-type* [pst] 751 | +--ro pst identityref 752 +--ro assoc-type-list {association}? 753 | +--ro assoc-type* [at] 754 | +--ro at identityref 755 +--ro speaker-entity-id? string {sync-opt}? 756 +--ro discontinuity-time? yang:timestamp 758 5.5. Notifications 760 This YANG model defines a list of notifications to inform client of 761 important events detected during the protocol operation. The 762 notifications defined cover the PCEP MIB notifications. 764 notifications: 765 +---n pcep-session-up 766 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 767 | +--ro session-initiator? 768 | | -> /pcep/entity/peers/peer/sessions/session/initiator 769 | +--ro state-last-change? yang:timestamp 770 | +--ro state? pcep-sess-state 771 +---n pcep-session-down 772 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 773 | +--ro session-initiator? pcep-initiator 774 | +--ro state-last-change? yang:timestamp 775 | +--ro state? pcep-sess-state 776 +---n pcep-session-local-overload 777 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 778 | +--ro session-initiator? 779 | | -> /pcep/entity/peers/peer/sessions/session/initiator 780 | +--ro overloaded? boolean 781 | +--ro overload-time? uint32 782 +---n pcep-session-local-overload-clear 783 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 784 | +--ro overloaded? boolean 785 +---n pcep-session-peer-overload 786 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 787 | +--ro session-initiator? 788 | | -> /pcep/entity/peers/peer/sessions/session/initiator 789 | +--ro peer-overloaded? boolean 790 | +--ro peer-overload-time? uint32 791 +---n pcep-session-peer-overload-clear 792 +--ro peer-addr? -> /pcep/entity/peers/peer/addr 793 +--ro peer-overloaded? boolean 795 5.6. RPC 797 This YANG model defines a RPC to trigger state resynchronization to a 798 particular PCEP peer. 800 rpcs: 801 +---x trigger-resync {stateful,sync-opt}? 802 +---w input 803 +---w pcc? -> /pcep/entity/peers/peer/addr 805 5.7. The Full PCEP Data Model 807 The module, "ietf-pcep", defines the basic components of a PCE 808 speaker. The tree depth in the tree is set to 10. 810 module: ietf-pcep 811 +--rw pcep! 812 +--rw entity 813 +--rw addr inet:ip-address 814 +--rw enabled? boolean 815 +--rw role pcep-role 816 +--rw description? string 817 +--rw speaker-entity-id? string {sync-opt}? 818 +--rw admin-status? boolean 819 +--ro index? uint32 820 +--ro oper-status? pcep-oper-status 821 +--rw domain 822 | +--rw domain* [domain-type domain] 823 | +--rw domain-type domain-type 824 | +--rw domain domain 825 +--rw capability 826 | +--rw capability? bits 827 | +--rw pce-initiated? boolean {pce-initiated}? 828 | +--rw include-db-ver? boolean 829 | | {stateful,sync-opt}? 830 | +--rw trigger-resync? boolean 831 | | {stateful,sync-opt}? 832 | +--rw trigger-initial-sync? boolean 833 | | {stateful,sync-opt}? 834 | +--rw incremental-sync? boolean 835 | | {stateful,sync-opt}? 836 | +--rw sr {sr}? 837 | +--rw enabled? boolean 838 | +--rw msd-limit? boolean 839 | +--rw nai? boolean 840 +--rw msd? uint8 {sr}? 841 +--rw pce-info 842 | +--rw scope 843 | | +--rw path-scope? bits 844 | | +--rw intra-area-pref? uint8 845 | | +--rw inter-area-pref? uint8 846 | | +--rw inter-as-pref? uint8 847 | | +--rw inter-layer-pref? uint8 848 | +--rw neigh-domains 849 | | +--rw domain* [domain-type domain] 850 | | +--rw domain-type domain-type 851 | | +--rw domain domain 852 | +--rw path-key {path-key}? 853 | +--rw enabled? boolean 854 | +--rw discard-timer? uint32 855 | +--rw reuse-time? uint32 856 | +--rw pce-id? inet:ip-address 857 +--rw connect-timer? uint16 858 +--rw connect-max-retry? uint32 859 +--rw init-backoff-timer? uint16 860 +--rw max-backoff-timer? uint32 861 +--ro open-wait-timer? uint16 862 +--ro keep-wait-timer? uint16 863 +--rw keep-alive-timer? uint8 864 +--rw dead-timer? uint8 865 +--rw allow-negotiation? boolean 866 +--rw max-keep-alive-timer? uint8 867 +--rw max-dead-timer? uint8 868 +--rw min-keep-alive-timer? uint8 869 +--rw min-dead-timer? uint8 870 +--rw sync-timer? uint16 {svec}? 871 +--rw request-timer? uint16 872 +--rw max-sessions? uint32 873 +--rw max-unknown-reqs? uint32 874 +--rw max-unknown-msgs? uint32 875 +--rw pcep-notification-max-rate uint32 876 +--rw stateful-parameter {stateful}? 877 | +--rw state-timeout? uint32 878 | +--rw redelegation-timeout? uint32 879 | +--rw rpt-non-pcep-lsp? boolean 880 +--rw of-list {objective-function}? 881 | +--rw objective-function* [of] 882 | +--rw of identityref 883 +--ro lsp-db {stateful}? 884 | +--ro db-ver? uint64 {sync-opt}? 885 | +--ro association-list* 886 | | [type id source global-source extended-id] 887 | | {association}? 888 | | +--ro type identityref 889 | | +--ro id uint16 890 | | +--ro source inet:ip-address 891 | | +--ro global-source uint32 892 | | +--ro extended-id string 893 | | +--ro lsp* [plsp-id pcc-id lsp-id] 894 | | +--ro plsp-id -> /pcep/entity/lsp-db/lsp/plsp-id 895 | | +--ro pcc-id -> /pcep/entity/lsp-db/lsp/pcc-id 896 | | +--ro lsp-id -> /pcep/entity/lsp-db/lsp/lsp-id 897 | +--ro lsp* [plsp-id pcc-id lsp-id] 898 | +--ro plsp-id uint32 899 | +--ro pcc-id inet:ip-address 900 | +--ro source? 901 | | -> /te:te/lsps-state/lsp/source 902 | +--ro destination? 903 | | -> /te:te/lsps-state/lsp/destination 904 | +--ro tunnel-id? 905 | | -> /te:te/lsps-state/lsp/tunnel-id 906 | +--ro lsp-id 907 | | -> /te:te/lsps-state/lsp/lsp-id 908 | +--ro extended-tunnel-id? 909 | | -> /te:te/lsps-state/lsp/extended-tunnel-id 910 | +--ro admin-state? boolean 911 | +--ro operational-state? operational-state 912 | +--ro delegated 913 | | +--ro enabled? boolean 914 | | +--ro peer? -> /pcep/entity/peers/peer/addr 915 | | +--ro srp-id? uint32 916 | +--ro initiation {pce-initiated}? 917 | | +--ro enabled? boolean 918 | | +--ro peer? -> /pcep/entity/peers/peer/addr 919 | +--ro symbolic-path-name? string 920 | +--ro last-error? identityref 921 | +--ro pst? identityref 922 | +--ro association-list* 923 | [type id source global-source extended-id] 924 | {association}? 925 | +--ro type 926 | | -> /pcep/entity/lsp-db/association-list/type 927 | +--ro id 928 | | -> /pcep/entity/lsp-db/association-list/id 929 | +--ro source leafref 930 | +--ro global-source leafref 931 | +--ro extended-id leafref 932 +--ro path-keys {path-key}? 933 | +--ro path-keys* [path-key] 934 | +--ro path-key uint16 935 | +--ro cps 936 | | +--ro explicit-route-objects* [index] 937 | | +--ro index uint32 938 | | +--ro (type)? 939 | | +--:(numbered-node-hop) 940 | | | +--ro numbered-node-hop 941 | | | +--ro node-id te-node-id 942 | | | +--ro hop-type? te-hop-type 943 | | +--:(numbered-link-hop) 944 | | | +--ro numbered-link-hop 945 | | | +--ro link-tp-id te-tp-id 946 | | | +--ro hop-type? te-hop-type 947 | | | +--ro direction? te-link-direction 948 | | +--:(unnumbered-link-hop) 949 | | | +--ro unnumbered-link-hop 950 | | | +--ro link-tp-id te-tp-id 951 | | | +--ro node-id te-node-id 952 | | | +--ro hop-type? te-hop-type 953 | | | +--ro direction? te-link-direction 954 | | +--:(as-number) 955 | | | +--ro as-number-hop 956 | | | +--ro as-number inet:as-number 957 | | | +--ro hop-type? te-hop-type 958 | | +--:(label) 959 | | +--ro label-hop 960 | | +--ro te-label 961 | | ... 962 | +--ro pcc-original? -> /pcep/entity/peers/peer/addr 963 | +--ro req-id? uint32 964 | +--ro retrieved? boolean 965 | +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr 966 | +--ro creation-time? yang:timestamp 967 | +--ro discard-time? uint32 968 | +--ro reuse-time? uint32 969 +--rw peers 970 +--rw peer* [addr] 971 +--rw addr inet:ip-address 972 +--rw role pcep-role 973 +--rw description? string 974 +--rw domain 975 | +--rw domain* [domain-type domain] 976 | +--rw domain-type domain-type 977 | +--rw domain domain 978 +--rw capability 979 | +--rw capability? bits 980 | +--rw pce-initiated? boolean 981 | | {pce-initiated}? 982 | +--rw include-db-ver? boolean 983 | | {stateful,sync-opt}? 984 | +--rw trigger-resync? boolean 985 | | {stateful,sync-opt}? 986 | +--rw trigger-initial-sync? boolean 987 | | {stateful,sync-opt}? 988 | +--rw incremental-sync? boolean 989 | | {stateful,sync-opt}? 990 | +--rw sr {sr}? 991 | +--rw enabled? boolean 992 | +--rw msd-limit? boolean 993 | +--rw nai? boolean 994 +--rw msd? uint8 {sr}? 995 +--rw pce-info 996 | +--rw scope 997 | | +--rw path-scope? bits 998 | | +--rw intra-area-pref? uint8 999 | | +--rw inter-area-pref? uint8 1000 | | +--rw inter-as-pref? uint8 1001 | | +--rw inter-layer-pref? uint8 1002 | +--rw neigh-domains 1003 | +--rw domain* [domain-type domain] 1004 | +--rw domain-type domain-type 1005 | +--rw domain domain 1006 +--rw delegation-pref? uint8 {stateful}? 1007 +--rw auth 1008 | +--rw (auth-type-selection)? 1009 | +--:(auth-key-chain) 1010 | | +--rw key-chain? 1011 | | key-chain:key-chain-ref 1012 | +--:(auth-key) 1013 | | +--rw crypto-algorithm identityref 1014 | | +--rw (key-string-style)? 1015 | | +--:(keystring) 1016 | | | +--rw keystring? string 1017 | | +--:(hexadecimal) 1018 | | {key-chain:hex-key-string}? 1019 | | +--rw hexadecimal-string? 1020 | | yang:hex-string 1021 | +--:(auth-tls) {tls}? 1022 | +--rw (role)? 1023 | +--:(server) 1024 | | +--rw tls-server 1025 | | ... 1026 | +--:(client) 1027 | +--rw tls-client 1028 | ... 1029 +--ro discontinuity-time? yang:timestamp 1030 +--ro initiate-session? boolean 1031 +--ro session-exists? boolean 1032 +--ro session-up-time? yang:timestamp 1033 +--ro session-fail-time? yang:timestamp 1034 +--ro session-fail-up-time? yang:timestamp 1035 +--ro sessions 1036 +--ro session* [initiator] 1037 +--ro initiator pcep-initiator 1038 +--ro role? 1039 | -> /pcep/entity/role 1040 +--ro state-last-change? yang:timestamp 1041 +--ro state? pcep-sess-state 1042 +--ro session-creation? yang:timestamp 1043 +--ro connect-retry? yang:counter32 1044 +--ro local-id? uint8 1045 +--ro remote-id? uint8 1046 +--ro keepalive-timer? uint8 1047 +--ro peer-keepalive-timer? uint8 1048 +--ro dead-timer? uint8 1049 +--ro peer-dead-timer? uint8 1050 +--ro ka-hold-time-rem? uint8 1051 +--ro overloaded? boolean 1052 +--ro overload-time? uint32 1053 +--ro peer-overloaded? boolean 1054 +--ro peer-overload-time? uint32 1055 +--ro lspdb-sync? sync-state 1056 | {stateful}? 1057 +--ro recv-db-ver? uint64 1058 | {stateful,sync-opt}? 1059 +--ro of-list {objective-function}? 1060 | +--ro objective-function* [of] 1061 | +--ro of identityref 1062 +--ro pst-list 1063 | +--ro path-setup-type* [pst] 1064 | +--ro pst identityref 1065 +--ro assoc-type-list {association}? 1066 | +--ro assoc-type* [at] 1067 | +--ro at identityref 1068 +--ro speaker-entity-id? string {sync-opt}? 1069 +--ro discontinuity-time? yang:timestamp 1071 rpcs: 1072 +---x trigger-resync {stateful,sync-opt}? 1073 +---w input 1074 +---w pcc? -> /pcep/entity/peers/peer/addr 1076 notifications: 1077 +---n pcep-session-up 1078 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 1079 | +--ro session-initiator? 1080 | | -> /pcep/entity/peers/peer/sessions/session/initiator 1081 | +--ro state-last-change? yang:timestamp 1082 | +--ro state? pcep-sess-state 1083 +---n pcep-session-down 1084 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 1085 | +--ro session-initiator? pcep-initiator 1086 | +--ro state-last-change? yang:timestamp 1087 | +--ro state? pcep-sess-state 1088 +---n pcep-session-local-overload 1089 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 1090 | +--ro session-initiator? 1091 | | -> /pcep/entity/peers/peer/sessions/session/initiator 1092 | +--ro overloaded? boolean 1093 | +--ro overload-time? uint32 1094 +---n pcep-session-local-overload-clear 1095 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 1096 | +--ro overloaded? boolean 1097 +---n pcep-session-peer-overload 1098 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 1099 | +--ro session-initiator? 1100 | | -> /pcep/entity/peers/peer/sessions/session/initiator 1101 | +--ro peer-overloaded? boolean 1102 | +--ro peer-overload-time? uint32 1103 +---n pcep-session-peer-overload-clear 1104 +--ro peer-addr? -> /pcep/entity/peers/peer/addr 1105 +--ro peer-overloaded? boolean 1107 6. The Design of PCEP Statistics Data Model 1109 The module, "ietf-pcep-stats", augments the ietf-pcep module to 1110 include statistics at the PCEP peer and session level. 1112 module: ietf-pcep-stats 1113 augment /pcep:pcep/pcep:entity/pcep:peers/pcep:peer: 1114 +--ro num-sess-setup-ok? yang:counter32 1115 +--ro num-sess-setup-fail? yang:counter32 1116 +--ro pcep-stats 1117 +--ro avg-rsp-time? uint32 1118 +--ro lwm-rsp-time? uint32 1119 +--ro hwm-rsp-time? uint32 1120 +--ro num-pcreq-sent? yang:counter32 1121 +--ro num-pcreq-rcvd? yang:counter32 1122 +--ro num-pcrep-sent? yang:counter32 1123 +--ro num-pcrep-rcvd? yang:counter32 1124 +--ro num-pcerr-sent? yang:counter32 1125 +--ro num-pcerr-rcvd? yang:counter32 1126 +--ro num-pcntf-sent? yang:counter32 1127 +--ro num-pcntf-rcvd? yang:counter32 1128 +--ro num-keepalive-sent? yang:counter32 1129 +--ro num-keepalive-rcvd? yang:counter32 1130 +--ro num-unknown-rcvd? yang:counter32 1131 +--ro num-corrupt-rcvd? yang:counter32 1132 +--ro num-req-sent? yang:counter32 1133 +--ro num-req-sent-pend-rep? yang:counter32 1134 +--ro num-req-sent-ero-rcvd? yang:counter32 1135 +--ro num-req-sent-nopath-rcvd? yang:counter32 1136 +--ro num-req-sent-cancel-rcvd? yang:counter32 1137 +--ro num-req-sent-error-rcvd? yang:counter32 1138 +--ro num-req-sent-timeout? yang:counter32 1139 +--ro num-req-sent-cancel-sent? yang:counter32 1140 +--ro num-req-rcvd? yang:counter32 1141 +--ro num-req-rcvd-pend-rep? yang:counter32 1142 +--ro num-req-rcvd-ero-sent? yang:counter32 1143 +--ro num-req-rcvd-nopath-sent? yang:counter32 1144 +--ro num-req-rcvd-cancel-sent? yang:counter32 1145 +--ro num-req-rcvd-error-sent? yang:counter32 1146 +--ro num-req-rcvd-cancel-rcvd? yang:counter32 1147 +--ro num-rep-rcvd-unknown? yang:counter32 1148 +--ro num-req-rcvd-unknown? yang:counter32 1149 +--ro svec {pcep:svec}? 1150 | +--ro num-svec-sent? yang:counter32 1151 | +--ro num-svec-req-sent? yang:counter32 1152 | +--ro num-svec-rcvd? yang:counter32 1153 | +--ro num-svec-req-rcvd? yang:counter32 1154 +--ro stateful {pcep:stateful}? 1155 | +--ro num-pcrpt-sent? yang:counter32 1156 | +--ro num-pcrpt-rcvd? yang:counter32 1157 | +--ro num-pcupd-sent? yang:counter32 1158 | +--ro num-pcupd-rcvd? yang:counter32 1159 | +--ro num-rpt-sent? yang:counter32 1160 | +--ro num-rpt-rcvd? yang:counter32 1161 | +--ro num-rpt-rcvd-error-sent? yang:counter32 1162 | +--ro num-upd-sent? yang:counter32 1163 | +--ro num-upd-rcvd? yang:counter32 1164 | +--ro num-upd-rcvd-unknown? yang:counter32 1165 | +--ro num-upd-rcvd-undelegated? yang:counter32 1166 | +--ro num-upd-rcvd-error-sent? yang:counter32 1167 | +--ro initiation {pcep:pce-initiated}? 1168 | +--ro num-pcinitiate-sent? yang:counter32 1169 | +--ro num-pcinitiate-rcvd? yang:counter32 1170 | +--ro num-initiate-sent? yang:counter32 1171 | +--ro num-initiate-rcvd? yang:counter32 1172 | +--ro num-initiate-rcvd-error-sent? yang:counter32 1173 +--ro path-key {pcep:path-key}? 1174 | +--ro num-unknown-path-key? yang:counter32 1175 | +--ro num-exp-path-key? yang:counter32 1176 | +--ro num-dup-path-key? yang:counter32 1177 | +--ro num-path-key-no-attempt? yang:counter32 1178 +--ro num-req-sent-closed? yang:counter32 1179 +--ro num-req-rcvd-closed? yang:counter32 1180 augment /pcep:pcep/pcep:entity/pcep:peers/pcep:peer/pcep:sessions 1181 /pcep:session: 1182 +--ro pcep-stats 1183 +--ro avg-rsp-time? uint32 1184 +--ro lwm-rsp-time? uint32 1185 +--ro hwm-rsp-time? uint32 1186 +--ro num-pcreq-sent? yang:counter32 1187 +--ro num-pcreq-rcvd? yang:counter32 1188 +--ro num-pcrep-sent? yang:counter32 1189 +--ro num-pcrep-rcvd? yang:counter32 1190 +--ro num-pcerr-sent? yang:counter32 1191 +--ro num-pcerr-rcvd? yang:counter32 1192 +--ro num-pcntf-sent? yang:counter32 1193 +--ro num-pcntf-rcvd? yang:counter32 1194 +--ro num-keepalive-sent? yang:counter32 1195 +--ro num-keepalive-rcvd? yang:counter32 1196 +--ro num-unknown-rcvd? yang:counter32 1197 +--ro num-corrupt-rcvd? yang:counter32 1198 +--ro num-req-sent? yang:counter32 1199 +--ro num-req-sent-pend-rep? yang:counter32 1200 +--ro num-req-sent-ero-rcvd? yang:counter32 1201 +--ro num-req-sent-nopath-rcvd? yang:counter32 1202 +--ro num-req-sent-cancel-rcvd? yang:counter32 1203 +--ro num-req-sent-error-rcvd? yang:counter32 1204 +--ro num-req-sent-timeout? yang:counter32 1205 +--ro num-req-sent-cancel-sent? yang:counter32 1206 +--ro num-req-rcvd? yang:counter32 1207 +--ro num-req-rcvd-pend-rep? yang:counter32 1208 +--ro num-req-rcvd-ero-sent? yang:counter32 1209 +--ro num-req-rcvd-nopath-sent? yang:counter32 1210 +--ro num-req-rcvd-cancel-sent? yang:counter32 1211 +--ro num-req-rcvd-error-sent? yang:counter32 1212 +--ro num-req-rcvd-cancel-rcvd? yang:counter32 1213 +--ro num-rep-rcvd-unknown? yang:counter32 1214 +--ro num-req-rcvd-unknown? yang:counter32 1215 +--ro svec {pcep:svec}? 1216 | +--ro num-svec-sent? yang:counter32 1217 | +--ro num-svec-req-sent? yang:counter32 1218 | +--ro num-svec-rcvd? yang:counter32 1219 | +--ro num-svec-req-rcvd? yang:counter32 1220 +--ro stateful {pcep:stateful}? 1221 | +--ro num-pcrpt-sent? yang:counter32 1222 | +--ro num-pcrpt-rcvd? yang:counter32 1223 | +--ro num-pcupd-sent? yang:counter32 1224 | +--ro num-pcupd-rcvd? yang:counter32 1225 | +--ro num-rpt-sent? yang:counter32 1226 | +--ro num-rpt-rcvd? yang:counter32 1227 | +--ro num-rpt-rcvd-error-sent? yang:counter32 1228 | +--ro num-upd-sent? yang:counter32 1229 | +--ro num-upd-rcvd? yang:counter32 1230 | +--ro num-upd-rcvd-unknown? yang:counter32 1231 | +--ro num-upd-rcvd-undelegated? yang:counter32 1232 | +--ro num-upd-rcvd-error-sent? yang:counter32 1233 | +--ro initiation {pcep:pce-initiated}? 1234 | +--ro num-pcinitiate-sent? yang:counter32 1235 | +--ro num-pcinitiate-rcvd? yang:counter32 1236 | +--ro num-initiate-sent? yang:counter32 1237 | +--ro num-initiate-rcvd? yang:counter32 1238 | +--ro num-initiate-rcvd-error-sent? yang:counter32 1239 +--ro path-key {pcep:path-key}? 1240 +--ro num-unknown-path-key? yang:counter32 1241 +--ro num-exp-path-key? yang:counter32 1242 +--ro num-dup-path-key? yang:counter32 1243 +--ro num-path-key-no-attempt? yang:counter32 1245 7. Advanced PCE Features 1247 This document contains a specification of the base PCEP YANG module, 1248 "ietf-pcep" which provides the basic PCEP [RFC5440] data model. 1250 This document further handles advanced PCE features like - 1252 o Capability and Scope 1254 o Domain information (local/neighbour) 1256 o Path-Key 1258 o Objective Function (OF) 1260 o Global Concurrent Optimization (GCO) 1262 o P2MP 1264 o GMPLS 1266 o Inter-Layer 1268 o Stateful PCE 1270 o Segment Routing (SR) 1272 o Authentication including PCEPS (TLS) 1274 7.1. Stateful PCE's LSP-DB 1276 In the operational state of PCEP which supports stateful PCE mode, 1277 the list of LSP state are maintained in LSP-DB. The key is the PLSP- 1278 ID and the PCC IP address. 1280 The PCEP data model contains the operational state of LSPs 1281 (/pcep/entity/lsp-db/lsp/) with PCEP specific attributes. The 1282 generic TE attributes of the LSP are defined in 1283 [I-D.ietf-teas-yang-te]. A reference to LSP state in TE model is 1284 maintained. 1286 8. Open Issues and Next Step 1288 This section is added so that open issues can be tracked. This 1289 section would be removed when the document is ready for publication. 1291 8.1. The PCE-Initiated LSP 1293 The TE Model at [I-D.ietf-teas-yang-te] should support creating of 1294 tunnels at the controller (PCE) and marking them as PCE-Initiated. 1295 The LSP-DB in the PCEP Yang (/pcep/entity/lsp-db/lsp/initiation) also 1296 marks the LSPs which are PCE-initiated. 1298 9. Other Considerations 1300 9.1. PCEP over TLS (PCEPS) 1302 [RFC8253] describe the use of TLS in PCEP. The peer acting as the 1303 PCEP client MUST act as the TLS client. The TLS client actively 1304 opens the TLS connection and the TLS server passively listens for the 1305 incoming TLS connections. The well-known TCP port number 4189 is 1306 used by PCEP servers to listen for TCP connections established by 1307 PCEP over TLS clients. The TLS client MUST send the TLS ClientHello 1308 message to begin the TLS handshake. The TLS server MUST send a 1309 CertificateRequest in order to request a certificate from the TLS 1310 client. Once the TLS handshake has finished, the client and the 1311 server MAY begin to exchange PCEP messages. Client and server 1312 identity verification is done before the PCEP open message is sent. 1313 This means that the identity verification is completed before the 1314 PCEP session is started.. 1316 10. PCEP YANG Modules 1318 10.1. ietf-pcep module 1320 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 1321 actual RFC number and all occurrences of the revision date below with 1322 the date of RFC publication (and remove this note). 1324 file "ietf-pcep@2020-07-08.yang" 1325 module ietf-pcep { 1326 yang-version 1.1; 1327 namespace "urn:ietf:params:xml:ns:yang:ietf-pcep"; 1328 prefix pcep; 1330 import ietf-inet-types { 1331 prefix inet; 1332 reference 1333 "RFC 6991: Common YANG Data Types"; 1334 } 1335 import ietf-yang-types { 1336 prefix yang; 1337 reference 1338 "RFC 6991: Common YANG Data Types"; 1339 } 1340 import ietf-te { 1341 prefix te; 1342 reference 1343 "I-D.ietf-teas-yang-te: A YANG Data Model for Traffic 1344 Engineering Tunnels and Interfaces"; 1345 } 1346 import ietf-te-types { 1347 prefix te-types; 1348 reference 1349 "RFC 8776: Common YANG Data Types for Traffic Engineering"; 1350 } 1351 import ietf-key-chain { 1352 prefix key-chain; 1353 reference 1354 "RFC 8177: YANG Data Model for Key Chains"; 1355 } 1356 import ietf-netconf-acm { 1357 prefix nacm; 1358 reference 1359 "RFC 8341: Network Configuration Protocol (NETCONF) Access 1360 Control Model"; 1361 } 1362 import ietf-tls-server { 1363 prefix tlss; 1364 reference 1365 "I-D.ietf-netconf-tls-client-server: YANG Groupings for TLS 1366 Clients and TLS Servers"; 1367 } 1368 import ietf-tls-client { 1369 prefix tlsc; 1370 reference 1371 "I-D.ietf-netconf-tls-client-server: YANG Groupings for TLS 1372 Clients and TLS Servers"; 1373 } 1374 import ietf-ospf { 1375 prefix ospf; 1376 reference 1377 "I-D.ietf-ospf-yang: YANG Data Model for OSPF Protocol"; 1378 } 1379 import ietf-isis { 1380 prefix isis; 1381 reference 1382 "I-D.ietf-isis-yang-isis-cfg: YANG Data Model for IS-IS 1383 Protocol"; 1384 } 1386 organization 1387 "IETF PCE (Path Computation Element) Working Group"; 1388 contact 1389 "WG Web: 1390 WG List: 1391 Editor: Dhruv Dhody 1392 "; 1393 description 1394 "The YANG module defines a generic configuration and 1395 operational model for PCEP. 1397 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 1398 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 1399 'MAY', and 'OPTIONAL' in this document are to be interpreted as 1400 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 1401 they appear in all capitals, as shown here. 1403 Copyright (c) 2020 IETF Trust and the persons identified as 1404 authors of the code. All rights reserved. 1406 Redistribution and use in source and binary forms, with or 1407 without modification, is permitted pursuant to, and subject 1408 to the license terms contained in, the Simplified BSD License 1409 set forth in Section 4.c of the IETF Trust's Legal Provisions 1410 Relating to IETF Documents 1411 (https://trustee.ietf.org/license-info). 1413 This version of this YANG module is part of RFC XXXX; see the 1414 RFC itself for full legal notices."; 1416 revision 2020-07-08 { 1417 description 1418 "Initial revision."; 1419 reference 1420 "RFC XXXX: A YANG Data Model for Path Computation 1421 Element Communications Protocol (PCEP)"; 1422 } 1424 /* 1425 * Typedefs 1426 */ 1428 typedef pcep-role { 1429 type enumeration { 1430 enum unknown { 1431 value 0; 1432 description 1433 "An unknown role"; 1434 } 1435 enum pcc { 1436 value 1; 1437 description 1438 "The role of a Path Computation Client"; 1439 } 1440 enum pce { 1441 value 2; 1442 description 1443 "The role of Path Computation Element"; 1444 } 1445 enum pcc-and-pce { 1446 value 3; 1447 description 1448 "The role of both Path Computation Client and 1449 Path Computation Element"; 1450 } 1451 } 1452 description 1453 "The role of a PCEP speaker. 1454 Takes one of the following values 1455 - unknown(0): the role is not known. 1456 - pcc(1): the role is of a Path Computation 1457 Client (PCC). 1458 - pce(2): the role is of a Path Computation 1459 Server (PCE). 1460 - pccAndPce(3): the role is of both a PCC and 1461 a PCE."; 1462 } 1464 typedef pcep-oper-status { 1465 type enumeration { 1466 enum oper-status-up { 1467 value 1; 1468 description 1469 "The PCEP entity is active"; 1470 } 1471 enum oper-status-down { 1472 value 2; 1473 description 1474 "The PCEP entity is inactive"; 1475 } 1476 enum oper-status-going-up { 1477 value 3; 1478 description 1479 "The PCEP entity is activating"; 1480 } 1481 enum oper-status-going-down { 1482 value 4; 1483 description 1484 "The PCEP entity is deactivating"; 1485 } 1486 enum oper-status-failed { 1487 value 5; 1488 description 1489 "The PCEP entity has failed and will recover 1490 when possible."; 1491 } 1492 enum oper-status-failed-perm { 1493 value 6; 1494 description 1495 "The PCEP entity has failed and will not recover 1496 without operator intervention"; 1497 } 1498 } 1499 description 1500 "The operational status of the PCEP entity. 1501 Takes one of the following values 1502 - oper-status-up(1): Active 1503 - oper-status-down(2): Inactive 1504 - oper-status-going-up(3): Activating 1505 - oper-status-going-down(4): Deactivating 1506 - oper-status-failed(5): Failed 1507 - oper-status-failed-perm(6): Failed Permanantly"; 1508 reference 1509 "RFC 5440: Path Computation Element (PCE) Communication 1510 Protocol (PCEP)"; 1511 } 1513 typedef pcep-initiator { 1514 type enumeration { 1515 enum local { 1516 value 1; 1517 description 1518 "The local PCEP entity initiated the session"; 1519 } 1520 enum remote { 1521 value 2; 1522 description 1523 "The remote PCEP peer initiated the session"; 1524 } 1526 } 1527 description 1528 "The initiator of the session, that is, whether the TCP 1529 connection was initiated by the local PCEP entity or 1530 the remote peer. 1531 Takes one of the following values 1532 - local(1): Initiated locally 1533 - remote(2): Initiated remotely"; 1534 } 1536 typedef pcep-sess-state { 1537 type enumeration { 1538 enum tcp-pending { 1539 value 1; 1540 description 1541 "The tcp-pending state of PCEP session."; 1542 } 1543 enum open-wait { 1544 value 2; 1545 description 1546 "The open-wait state of PCEP session."; 1547 } 1548 enum keep-wait { 1549 value 3; 1550 description 1551 "The keep-wait state of PCEP session."; 1552 } 1553 enum session-up { 1554 value 4; 1555 description 1556 "The session-up state of PCEP session."; 1557 } 1558 } 1559 description 1560 "The current state of the session. 1561 The set of possible states excludes the idle state 1562 since entries do not exist in the idle state. 1563 Takes one of the following values 1564 - tcp-pending(1): PCEP TCP Pending state 1565 - open-wait(2): PCEP Open Wait state 1566 - keep-wait(3): PCEP Keep Wait state 1567 - session-up(4): PCEP Session Up state"; 1568 reference 1569 "RFC 5440: Path Computation Element (PCE) Communication 1570 Protocol (PCEP)"; 1571 } 1573 typedef domain-type { 1574 type enumeration { 1575 enum ospf-area { 1576 value 1; 1577 description 1578 "The OSPF area."; 1579 } 1580 enum isis-area { 1581 value 2; 1582 description 1583 "The IS-IS area."; 1584 } 1585 enum as { 1586 value 3; 1587 description 1588 "The Autonomous System (AS)."; 1589 } 1590 } 1591 description 1592 "The PCE Domain Type"; 1593 } 1595 typedef domain-ospf-area { 1596 type ospf:area-id-type; 1597 description 1598 "OSPF Area ID."; 1599 reference 1600 "I-D.ietf-ospf-yang: YANG Data Model for OSPF Protocol"; 1601 } 1603 typedef domain-isis-area { 1604 type isis:area-address; 1605 description 1606 "IS-IS Area ID."; 1607 reference 1608 "I-D.ietf-isis-yang-isis-cfg: YANG Data Model for IS-IS 1609 Protocol"; 1610 } 1612 typedef domain-as { 1613 type inet:as-number; 1614 description 1615 "Autonomous System number."; 1616 } 1618 typedef domain { 1619 type union { 1620 type domain-ospf-area; 1621 type domain-isis-area; 1622 type domain-as; 1623 } 1624 description 1625 "The Domain Information"; 1626 } 1628 typedef operational-state { 1629 type enumeration { 1630 enum down { 1631 value 0; 1632 description 1633 "not active."; 1634 } 1635 enum up { 1636 value 1; 1637 description 1638 "signalled."; 1639 } 1640 enum active { 1641 value 2; 1642 description 1643 "up and carrying traffic."; 1644 } 1645 enum going-down { 1646 value 3; 1647 description 1648 "LSP is being torn down, resources are 1649 being released."; 1650 } 1651 enum going-up { 1652 value 4; 1653 description 1654 "LSP is being signalled."; 1655 } 1656 } 1657 description 1658 "The operational status of the LSP"; 1659 reference 1660 "RFC 8231: Path Computation Element Communication Protocol 1661 (PCEP) Extensions for Stateful PCE"; 1662 } 1664 typedef sync-state { 1665 type enumeration { 1666 enum pending { 1667 value 0; 1668 description 1669 "The state synchronization 1670 has not started."; 1671 } 1672 enum ongoing { 1673 value 1; 1674 description 1675 "The state synchronization 1676 is ongoing."; 1677 } 1678 enum finished { 1679 value 2; 1680 description 1681 "The state synchronization 1682 is finished."; 1683 } 1684 } 1685 description 1686 "The LSP-DB state synchronization operational 1687 status."; 1688 reference 1689 "RFC 8231: Path Computation Element Communication Protocol 1690 (PCEP) Extensions for Stateful PCE"; 1691 } 1693 /* 1694 * Features 1695 */ 1697 feature svec { 1698 description 1699 "Support synchronized path computation."; 1700 reference 1701 "RFC 5440: Path Computation Element (PCE) Communication 1702 Protocol (PCEP)"; 1703 } 1705 feature gmpls { 1706 description 1707 "Support GMPLS."; 1708 reference 1709 "I-D.ietf-pce-gmpls-pcep-extensions: PCEP extensions for 1710 GMPLS"; 1711 } 1713 feature objective-function { 1714 description 1715 "Support OF as per RFC 5541."; 1716 reference 1717 "RFC 5541: Encoding of Objective Functions in the Path 1718 Computation Element Communication Protocol (PCEP)"; 1719 } 1721 feature global-concurrent { 1722 description 1723 "Support GCO as per RFC 5557."; 1724 reference 1725 "RFC 5557: Path Computation Element Communication Protocol 1726 (PCEP) Requirements and Protocol Extensions in Support of 1727 Global Concurrent Optimization"; 1728 } 1730 feature path-key { 1731 description 1732 "Support path-key as per RFC 5520."; 1733 reference 1734 "RFC 5520: Preserving Topology Confidentiality in Inter- 1735 Domain Path Computation Using a Path-Key-Based Mechanism"; 1736 } 1738 feature p2mp { 1739 description 1740 "Support P2MP as per RFC 8306."; 1741 reference 1742 "RFC 8306: Extensions to the Path Computation Element 1743 Communication Protocol (PCEP) for Point-to-Multipoint 1744 Traffic Engineering Label Switched Paths"; 1745 } 1747 feature stateful { 1748 description 1749 "Support stateful PCE as per RFC 8231."; 1750 reference 1751 "RFC 8231: Path Computation Element Communication Protocol 1752 (PCEP) Extensions for Stateful PCE"; 1753 } 1755 feature sync-opt { 1756 description 1757 "Support stateful sync optimization 1758 as per RFC 8232"; 1759 reference 1760 "RFC 8232: Optimizations of Label Switched Path State 1761 Synchronization Procedures for a Stateful PCE"; 1762 } 1764 feature pce-initiated { 1765 description 1766 "Support PCE-Initiated LSP as per 1767 RFC 8281."; 1768 reference 1769 "RFC 8281: Path Computation Element Communication Protocol 1770 (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful 1771 PCE Model"; 1772 } 1774 feature tls { 1775 description 1776 "Support PCEP over TLS as per 1777 RFC 8253."; 1778 reference 1779 "RFC 8253: PCEPS: Usage of TLS to Provide a Secure Transport 1780 for the Path Computation Element Communication Protocol 1781 (PCEP)"; 1782 } 1784 feature sr { 1785 description 1786 "Support Segment Routing for PCE."; 1787 reference 1788 "RFC 8664: Path Computation Element Communication Protocol 1789 (PCEP) Extensions for Segment Routing"; 1790 } 1792 feature association { 1793 description 1794 "Support Association in PCEP."; 1795 reference 1796 "RFC 8697: Path Computation Element Communication Protocol 1797 (PCEP) Extensions for Establishing Relationships between 1798 Sets of Label Switched Paths (LSPs)"; 1799 } 1801 /* 1802 * Identities 1803 */ 1805 identity lsp-error { 1806 if-feature "stateful"; 1807 description 1808 "Base LSP error"; 1809 reference 1810 "RFC 8231: Path Computation Element Communication Protocol 1811 (PCEP) Extensions for Stateful PCE"; 1812 } 1813 identity no-error-lsp-error { 1814 if-feature "stateful"; 1815 base lsp-error; 1816 description 1817 "No error, LSP is fine."; 1818 reference 1819 "RFC 8231: Path Computation Element Communication Protocol 1820 (PCEP) Extensions for Stateful PCE"; 1821 } 1823 identity unknown-lsp-error { 1824 if-feature "stateful"; 1825 base lsp-error; 1826 description 1827 "Unknown reason."; 1828 reference 1829 "RFC 8231: Path Computation Element Communication Protocol 1830 (PCEP) Extensions for Stateful PCE"; 1831 } 1833 identity limit-lsp-error { 1834 if-feature "stateful"; 1835 base lsp-error; 1836 description 1837 "Limit reached for PCE-controlled LSPs."; 1838 reference 1839 "RFC 8231: Path Computation Element Communication Protocol 1840 (PCEP) Extensions for Stateful PCE"; 1841 } 1843 identity pending-lsp-error { 1844 if-feature "stateful"; 1845 base lsp-error; 1846 description 1847 "Too many pending LSP update requests."; 1848 reference 1849 "RFC 8231: Path Computation Element Communication Protocol 1850 (PCEP) Extensions for Stateful PCE"; 1851 } 1853 identity unacceptable-lsp-error { 1854 if-feature "stateful"; 1855 base lsp-error; 1856 description 1857 "Unacceptable parameters."; 1858 reference 1859 "RFC 8231: Path Computation Element Communication Protocol 1860 (PCEP) Extensions for Stateful PCE"; 1862 } 1864 identity internal-lsp-error { 1865 if-feature "stateful"; 1866 base lsp-error; 1867 description 1868 "Internal error."; 1869 reference 1870 "RFC 8231: Path Computation Element Communication Protocol 1871 (PCEP) Extensions for Stateful PCE"; 1872 } 1874 identity admin-lsp-error { 1875 if-feature "stateful"; 1876 base lsp-error; 1877 description 1878 "LSP administratively brought down."; 1879 reference 1880 "RFC 8231: Path Computation Element Communication Protocol 1881 (PCEP) Extensions for Stateful PCE"; 1882 } 1884 identity preempted-lsp-error { 1885 if-feature "stateful"; 1886 base lsp-error; 1887 description 1888 "LSP preempted."; 1889 reference 1890 "RFC 8231: Path Computation Element Communication Protocol 1891 (PCEP) Extensions for Stateful PCE"; 1892 } 1894 identity rsvp-lsp-error { 1895 if-feature "stateful"; 1896 base lsp-error; 1897 description 1898 "RSVP signaling error."; 1899 reference 1900 "RFC 8231: Path Computation Element Communication Protocol 1901 (PCEP) Extensions for Stateful PCE"; 1902 } 1904 /* 1905 * Groupings 1906 */ 1908 grouping pce-scope { 1909 description 1910 "This grouping defines PCE path computation scope 1911 information which maybe relevant to PCE selection. 1912 This information corresponds to PCE auto-discovery 1913 information."; 1914 reference 1915 "RFC 5088: OSPF Protocol Extensions for Path 1916 Computation Element (PCE) Discovery 1917 RFC 5089: IS-IS Protocol Extensions for Path 1918 Computation Element (PCE) Discovery"; 1919 leaf path-scope { 1920 type bits { 1921 bit intra-area-scope { 1922 description 1923 "PCE can compute intra-area paths."; 1924 } 1925 bit inter-area-scope { 1926 description 1927 "PCE can compute inter-area paths."; 1928 } 1929 bit inter-area-scope-default { 1930 description 1931 "PCE can act as a default PCE for inter-area 1932 path computation."; 1933 } 1934 bit inter-as-scope { 1935 description 1936 "PCE can compute inter-AS paths."; 1937 } 1938 bit inter-as-scope-default { 1939 description 1940 "PCE can act as a default PCE for inter-AS 1941 path computation."; 1942 } 1943 bit inter-layer-scope { 1944 description 1945 "PCE can compute inter-layer paths."; 1946 } 1947 } 1948 description 1949 "The field corresponding to the path scope bits"; 1950 } 1951 leaf intra-area-pref { 1952 type uint8 { 1953 range "0..7"; 1954 } 1955 description 1956 "The PCE's preference for intra-area TE LSP 1957 computation."; 1959 } 1960 leaf inter-area-pref { 1961 type uint8 { 1962 range "0..7"; 1963 } 1964 description 1965 "The PCE's preference for inter-area TE LSP 1966 computation."; 1967 } 1968 leaf inter-as-pref { 1969 type uint8 { 1970 range "0..7"; 1971 } 1972 description 1973 "The PCE's preference for inter-AS TE LSP 1974 computation."; 1975 } 1976 leaf inter-layer-pref { 1977 type uint8 { 1978 range "0..7"; 1979 } 1980 description 1981 "The PCE's preference for inter-layer TE LSP 1982 computation."; 1983 } 1984 } 1986 //pce-scope 1988 grouping domain { 1989 description 1990 "This grouping specifies a Domain where the 1991 PCEP speaker has topology visibility."; 1992 leaf domain-type { 1993 type domain-type; 1994 description 1995 "The domain type."; 1996 } 1997 leaf domain { 1998 type domain; 1999 description 2000 "The domain Information."; 2001 } 2002 } 2004 //domain 2006 grouping info { 2007 description 2008 "This grouping specifies all information which 2009 maybe relevant to both PCC and PCE. 2010 This information corresponds to PCE auto-discovery 2011 information."; 2012 container domain { 2013 description 2014 "The local domain for the PCEP entity"; 2015 list domain { 2016 key "domain-type domain"; 2017 description 2018 "The local domain."; 2019 uses domain { 2020 description 2021 "The local domain for the PCEP entity."; 2022 } 2023 } 2024 } 2025 container capability { 2026 description 2027 "The PCEP entity capability information of local 2028 PCEP entity. This maybe relevant to PCE selection 2029 as well. This information corresponds to PCE auto- 2030 discovery information."; 2031 reference 2032 "RFC 5088: OSPF Protocol Extensions for Path 2033 Computation Element (PCE) Discovery 2034 RFC 5089: IS-IS Protocol Extensions for Path 2035 Computation Element (PCE) Discovery"; 2036 leaf capability { 2037 type bits { 2038 bit gmpls { 2039 if-feature "gmpls"; 2040 description 2041 "Path computation with GMPLS link 2042 constraints."; 2043 } 2044 bit bi-dir { 2045 description 2046 "Bidirectional path computation."; 2047 } 2048 bit diverse { 2049 description 2050 "Diverse path computation."; 2051 } 2052 bit load-balance { 2053 description 2054 "Load-balanced path computation."; 2056 } 2057 bit synchronize { 2058 if-feature "svec"; 2059 description 2060 "Synchronized paths computation."; 2061 } 2062 bit objective-function { 2063 if-feature "objective-function"; 2064 description 2065 "Support for multiple objective functions."; 2066 } 2067 bit add-path-constraint { 2068 description 2069 "Support for additive path constraints (max 2070 hop count, etc.)."; 2071 } 2072 bit prioritization { 2073 description 2074 "Support for request prioritization."; 2075 } 2076 bit multi-request { 2077 description 2078 "Support for multiple requests per message."; 2079 } 2080 bit global-concurrent { 2081 if-feature "global-concurrent"; 2082 description 2083 "Support for Global Concurrent Optimization 2084 (GCO)."; 2085 } 2086 bit p2mp { 2087 if-feature "p2mp"; 2088 description 2089 "Support for P2MP path computation."; 2090 } 2091 bit active { 2092 if-feature "stateful"; 2093 description 2094 "Support for active stateful PCE."; 2095 } 2096 bit passive { 2097 if-feature "stateful"; 2098 description 2099 "Support for passive stateful PCE."; 2100 } 2101 bit p2mp-active { 2102 if-feature "stateful"; 2103 if-feature "p2mp"; 2104 description 2105 "Support for active stateful PCE for P2MP."; 2106 } 2107 bit p2mp-passive { 2108 if-feature "stateful"; 2109 if-feature "p2mp"; 2110 description 2111 "Support for passive stateful PCE for P2MP."; 2112 } 2113 bit p2mp-pce-initiated { 2114 if-feature "stateful"; 2115 if-feature "pce-initiated"; 2116 if-feature "p2mp"; 2117 description 2118 "Support for PCE-initiated LSP for P2MP."; 2119 } 2120 } 2121 description 2122 "The bits string indicating the capabiliies"; 2123 reference 2124 "RFC 5088: OSPF Protocol Extensions for Path 2125 Computation Element (PCE) Discovery 2126 RFC 5089: IS-IS Protocol Extensions for Path 2127 Computation Element (PCE) Discovery"; 2128 } 2129 leaf pce-initiated { 2130 if-feature "pce-initiated"; 2131 type boolean; 2132 description 2133 "Set to true if PCE-initiated LSP capability is 2134 enabled."; 2135 reference 2136 "RFC 8281: Path Computation Element Communication 2137 Protocol (PCEP) Extensions for PCE-Initiated LSP 2138 Setup in a Stateful PCE Model"; 2139 } 2140 leaf include-db-ver { 2141 if-feature "stateful"; 2142 if-feature "sync-opt"; 2143 type boolean; 2144 description 2145 "Support inclusion of LSP-DB-VERSION 2146 in LSP object"; 2147 reference 2148 "RFC 8232: Optimizations of Label Switched Path State 2149 Synchronization Procedures for a Stateful PCE"; 2150 } 2151 leaf trigger-resync { 2152 if-feature "stateful"; 2153 if-feature "sync-opt"; 2154 type boolean; 2155 description 2156 "Support PCE triggered re-synchronization"; 2157 reference 2158 "RFC 8232: Optimizations of Label Switched Path State 2159 Synchronization Procedures for a Stateful PCE"; 2160 } 2161 leaf trigger-initial-sync { 2162 if-feature "stateful"; 2163 if-feature "sync-opt"; 2164 type boolean; 2165 description 2166 "PCE triggered initial synchronization"; 2167 reference 2168 "RFC 8232: Optimizations of Label Switched Path State 2169 Synchronization Procedures for a Stateful PCE"; 2170 } 2171 leaf incremental-sync { 2172 if-feature "stateful"; 2173 if-feature "sync-opt"; 2174 type boolean; 2175 description 2176 "Support incremental (delta) sync"; 2177 reference 2178 "RFC 8232: Optimizations of Label Switched Path State 2179 Synchronization Procedures for a Stateful PCE"; 2180 } 2181 container sr { 2182 if-feature "sr"; 2183 description 2184 "If segment routing is supported"; 2185 reference 2186 "RFC 8664: Path Computation Element Communication Protocol 2187 (PCEP) Extensions for Segment Routing"; 2188 leaf enabled { 2189 type boolean; 2190 description 2191 "Set to true if SR is enabled"; 2192 } 2193 leaf msd-limit { 2194 type boolean; 2195 default "false"; 2196 description 2197 "True indicates no limit on MSD, the 2198 leaf msd is ignored"; 2199 } 2200 leaf nai { 2201 type boolean; 2202 default "false"; 2203 description 2204 "True indicates capability to resolve NAI 2205 to SID"; 2206 } 2207 } 2208 //sr 2209 } 2210 //capability 2211 leaf msd { 2212 if-feature "sr"; 2213 type uint8; 2214 description 2215 "Maximum SID Depth for SR"; 2216 reference 2217 "RFC 8664: Path Computation Element Communication Protocol 2218 (PCEP) Extensions for Segment Routing"; 2219 } 2220 } 2222 //info 2224 grouping pce-info { 2225 description 2226 "This grouping specifies all PCE information 2227 which maybe relevant to the PCE selection. 2228 This information corresponds to PCE auto-discovery 2229 information."; 2230 container scope { 2231 description 2232 "The path computation scope"; 2233 uses pce-scope; 2234 } 2235 container neigh-domains { 2236 description 2237 "The list of neighbour PCE-Domain 2238 toward which a PCE can compute 2239 paths"; 2240 list domain { 2241 key "domain-type domain"; 2242 description 2243 "The neighbour domain."; 2244 uses domain { 2245 description 2246 "The PCE neighbour domain."; 2247 } 2249 } 2250 } 2251 } 2253 //pce-info 2255 grouping notification-instance-hdr { 2256 description 2257 "This group describes common instance specific data 2258 for notifications."; 2259 leaf peer-addr { 2260 type leafref { 2261 path "/pcep/entity/peers/peer/addr"; 2262 } 2263 description 2264 "Reference to peer address"; 2265 } 2266 } 2268 // notification-instance-hdr 2270 grouping notification-session-hdr { 2271 description 2272 "This group describes common session instance specific 2273 data for notifications."; 2274 leaf session-initiator { 2275 type leafref { 2276 path "/pcep/entity/peers/peer/sessions/" 2277 + "session/initiator"; 2278 } 2279 description 2280 "Reference to pcep session initiator leaf"; 2281 } 2282 } 2284 // notification-session-hdr 2286 grouping of-list { 2287 description 2288 "List of OF"; 2289 reference 2290 "RFC 5541: Encoding of Objective Functions in the Path 2291 Computation Element Communication Protocol (PCEP)"; 2292 list objective-function { 2293 key "of"; 2294 description 2295 "The list of authorized OF"; 2296 leaf of { 2297 type identityref { 2298 base te-types:objective-function-type; 2299 } 2300 description 2301 "The OF authorized"; 2302 } 2303 } 2304 } 2306 /* 2307 * Configuration data nodes 2308 */ 2310 container pcep { 2311 presence "The PCEP is enabled"; 2312 description 2313 "Parameters for list of configured PCEP entities 2314 on the device."; 2315 container entity { 2316 description 2317 "The configured PCEP entity on the device."; 2318 leaf addr { 2319 type inet:ip-address; 2320 mandatory true; 2321 description 2322 "The local Internet address of this PCEP entity. 2323 If operating as a PCE server, the PCEP entity 2324 listens on this address. If operating as a PCC, 2325 the PCEP entity binds outgoing TCP connections 2326 to this address. It is possible for the PCEP entity 2327 to operate both as a PCC and a PCE Server, in which 2328 case it uses this address both to listen for incoming 2329 TCP connections and to bind outgoing TCP connections."; 2330 } 2331 leaf enabled { 2332 type boolean; 2333 default "true"; 2334 description 2335 "The administrative status of this PCEP 2336 Entity."; 2337 } 2338 leaf role { 2339 type pcep-role; 2340 mandatory true; 2341 description 2342 "The role that this entity can play. 2343 Takes one of the following values. 2344 - unknown(0): this PCEP Entity role is not 2345 known. 2346 - pcc(1): this PCEP Entity is a PCC. 2347 - pce(2): this PCEP Entity is a PCE. 2348 - pcc-and-pce(3): this PCEP Entity is both 2349 a PCC and a PCE."; 2350 } 2351 leaf description { 2352 type string; 2353 description 2354 "Description of the PCEP entity configured 2355 by the user"; 2356 } 2357 leaf speaker-entity-id { 2358 if-feature "sync-opt"; 2359 type string; 2360 description 2361 "The Speaker Entity Identifier"; 2362 reference 2363 "RFC 8232: Optimizations of Label Switched 2364 Path State Synchronization Procedures for 2365 a Stateful PCE"; 2366 } 2367 leaf admin-status { 2368 type boolean; 2369 default "true"; 2370 description 2371 "The administrative status of this PCEP Entity. 2372 The value true represents admin status as up. 2373 This is the desired operational status as 2374 currently set by an operator or by default in 2375 the implementation. The value of oper-status 2376 represents the current status of an attempt to 2377 reach this desired status."; 2378 } 2379 leaf index { 2380 type uint32; 2381 config false; 2382 description 2383 "The index of the operational PECP entity"; 2384 } 2385 leaf oper-status { 2386 type pcep-oper-status; 2387 config false; 2388 description 2389 "The operational status of the PCEP entity. 2390 Takes one of the following values. 2391 - oper-status-up(1): the PCEP entity is active. 2392 - oper-status-down(2): the PCEP entity is inactive. 2394 - oper-status-going-up(3): the PCEP entity is 2395 activating. 2396 - oper-status-going-down(4): the PCEP entity is 2397 deactivating. 2398 - oper-status-failed(5): the PCEP entity has 2399 failed and will recover when possible. 2400 - oper-status-failed-perm(6): the PCEP entity 2401 has failed and will not recover without 2402 operator intervention."; 2403 } 2404 uses info { 2405 description 2406 "Local PCEP entity information"; 2407 } 2408 container pce-info { 2409 when "../role = 'pce'" 2410 + "or " 2411 + "../role = 'pcc-and-pce'" { 2412 description 2413 "These fields are applicable when the role is PCE."; 2414 } 2415 description 2416 "The Local PCE Entity PCE information"; 2417 uses pce-info { 2418 description 2419 "Local PCE information"; 2420 } 2421 container path-key { 2422 if-feature "path-key"; 2423 description 2424 "Path-Key Configuration"; 2425 reference 2426 "RFC 5520: Preserving Topology Confidentiality in Inter- 2427 Domain Path Computation Using a Path-Key-Based Mechanism"; 2428 leaf enabled { 2429 type boolean; 2430 description 2431 "Enabled or Disabled"; 2432 } 2433 leaf discard-timer { 2434 type uint32; 2435 units "minutes"; 2436 default "10"; 2437 description 2438 "A timer to discard unwanted path-keys"; 2439 } 2440 leaf reuse-time { 2441 type uint32; 2442 units "minutes"; 2443 default "30"; 2444 description 2445 "A time after which the path-keys could be reused"; 2446 } 2447 leaf pce-id { 2448 type inet:ip-address; 2449 description 2450 "PCE Address to be used in each Path-Key Subobject 2451 (PKS)"; 2452 } 2453 } 2454 } 2455 leaf connect-timer { 2456 type uint16 { 2457 range "1..65535"; 2458 } 2459 units "seconds"; 2460 default "60"; 2461 description 2462 "The time in seconds that the PCEP entity will wait 2463 to establish a TCP connection with a peer. If a 2464 TCP connection is not established within this time 2465 then PCEP aborts the session setup attempt."; 2466 reference 2467 "RFC 5440: Path Computation Element (PCE) Communication 2468 Protocol (PCEP)"; 2469 } 2470 leaf connect-max-retry { 2471 type uint32; 2472 default "5"; 2473 description 2474 "The maximum number of times the system tries to 2475 establish a TCP connection to a peer before the 2476 session with the peer transitions to the idle 2477 state."; 2478 reference 2479 "RFC 5440: Path Computation Element (PCE) Communication 2480 Protocol (PCEP)"; 2481 } 2482 leaf init-backoff-timer { 2483 type uint16 { 2484 range "1..65535"; 2485 } 2486 units "seconds"; 2487 description 2488 "The initial back-off time in seconds for retrying 2489 a failed session setup attempt to a peer. 2491 The back-off time increases for each failed 2492 session setup attempt, until a maximum back-off 2493 time is reached. The maximum back-off time is 2494 max-backoff-timer."; 2495 reference 2496 "RFC 5440: Path Computation Element (PCE) Communication 2497 Protocol (PCEP)"; 2498 } 2499 leaf max-backoff-timer { 2500 type uint32; 2501 units "seconds"; 2502 description 2503 "The maximum back-off time in seconds for retrying 2504 a failed session setup attempt to a peer. 2505 The back-off time increases for each failed session 2506 setup attempt, until this maximum value is reached. 2507 Session setup attempts then repeat periodically 2508 without any further increase in back-off time."; 2509 reference 2510 "RFC 5440: Path Computation Element (PCE) Communication 2511 Protocol (PCEP)"; 2512 } 2513 leaf open-wait-timer { 2514 type uint16; 2515 units "seconds"; 2516 default "60"; 2517 config false; 2518 description 2519 "The time in seconds that the PCEP entity will wait 2520 to receive an Open message from a peer after the 2521 TCP connection has come up. 2522 If no Open message is received within this time then 2523 PCEP terminates the TCP connection and deletes the 2524 associated sessions."; 2525 reference 2526 "RFC 5440: Path Computation Element (PCE) Communication 2527 Protocol (PCEP)"; 2528 } 2529 leaf keep-wait-timer { 2530 type uint16; 2531 units "seconds"; 2532 default "60"; 2533 config false; 2534 description 2535 "The time in seconds that the PCEP entity will wait 2536 to receive a Keepalive or PCErr message from a peer 2537 during session initialization after receiving an 2538 Open message. If no Keepalive or PCErr message is 2539 received within this time then PCEP terminates the 2540 TCP connection and deletes the associated 2541 sessions."; 2542 reference 2543 "RFC 5440: Path Computation Element (PCE) Communication 2544 Protocol (PCEP)"; 2545 } 2546 leaf keep-alive-timer { 2547 type uint8; 2548 units "seconds"; 2549 default "30"; 2550 description 2551 "The keep alive transmission timer that this PCEP 2552 entity will propose in the initial OPEN message of 2553 each session it is involved in. This is the 2554 maximum time between two consecutive messages sent 2555 to a peer. Zero means that the PCEP entity prefers 2556 not to send Keepalives at all. 2557 Note that the actual Keepalive transmission 2558 intervals, in either direction of an active PCEP 2559 session, are determined by negotiation between the 2560 peers as specified by RFC 5440, and so may differ 2561 from this configured value."; 2562 reference 2563 "RFC 5440: Path Computation Element (PCE) Communication 2564 Protocol (PCEP)"; 2565 } 2566 leaf dead-timer { 2567 type uint8; 2568 units "seconds"; 2569 must '(. > ../keep-alive-timer)' { 2570 error-message "The dead timer must be " 2571 + "larger than the keep alive timer"; 2572 } 2573 default "120"; 2574 description 2575 "The dead timer that this PCEP entity will propose 2576 in the initial OPEN message of each session it is 2577 involved in. This is the time after which a peer 2578 should declare a session down if it does not 2579 receive any PCEP messages. Zero suggests that the 2580 peer does not run a dead timer at all."; 2581 reference 2582 "RFC 5440: Path Computation Element (PCE) Communication 2583 Protocol (PCEP)"; 2584 } 2585 leaf allow-negotiation { 2586 type boolean; 2587 description 2588 "Whether the PCEP entity will permit negotiation of 2589 session parameters."; 2590 } 2591 leaf max-keep-alive-timer { 2592 type uint8; 2593 units "seconds"; 2594 description 2595 "In PCEP session parameter negotiation in seconds, 2596 the maximum value that this PCEP entity will 2597 accept from a peer for the interval between 2598 Keepalive transmissions. Zero means that the PCEP 2599 entity will allow no Keepalive transmission at 2600 all."; 2601 } 2602 leaf max-dead-timer { 2603 type uint8; 2604 units "seconds"; 2605 description 2606 "In PCEP session parameter negotiation in seconds, 2607 the maximum value that this PCEP entity will accept 2608 from a peer for the Dead timer. Zero means that 2609 the PCEP entity will allow not running a Dead 2610 timer."; 2611 } 2612 leaf min-keep-alive-timer { 2613 type uint8; 2614 units "seconds"; 2615 description 2616 "In PCEP session parameter negotiation in seconds, 2617 the minimum value that this PCEP entity will 2618 accept for the interval between Keepalive 2619 transmissions. Zero means that the PCEP entity 2620 insists on no Keepalive transmission at all."; 2621 } 2622 leaf min-dead-timer { 2623 type uint8; 2624 units "seconds"; 2625 description 2626 "In PCEP session parameter negotiation in 2627 seconds, the minimum value that this PCEP entity 2628 will accept for the Dead timer. Zero means that 2629 the PCEP entity insists on not running a Dead 2630 timer."; 2631 } 2632 leaf sync-timer { 2633 if-feature "svec"; 2634 type uint16; 2635 units "seconds"; 2636 default "60"; 2637 description 2638 "The value of SyncTimer in seconds is used in the 2639 case of synchronized path computation request 2640 using the SVEC object. Consider the case where a 2641 PCReq message is received by a PCE that contains 2642 the SVEC object referring to M synchronized path 2643 computation requests. If after the expiration of 2644 the SyncTimer all the M path computation requests 2645 have not been, received a protocol error is 2646 triggered and the PCE must cancel the whole set 2647 of path computation requests. 2648 The aim of the SyncTimer is to avoid the storage 2649 of unused synchronized requests should one of 2650 them get lost for some reasons (for example, a 2651 misbehaving PCC). 2652 Zero means that the PCEP entity does not use the 2653 SyncTimer."; 2654 reference 2655 "RFC 5440: Path Computation Element (PCE) 2656 Communication Protocol (PCEP)"; 2657 } 2658 leaf request-timer { 2659 type uint16 { 2660 range "1..65535"; 2661 } 2662 units "seconds"; 2663 description 2664 "The maximum time that the PCEP entity will wait 2665 for a response to a PCReq message."; 2666 } 2667 leaf max-sessions { 2668 type uint32; 2669 description 2670 "Maximum number of sessions involving this PCEP 2671 entity that can exist at any time."; 2672 } 2673 leaf max-unknown-reqs { 2674 type uint32; 2675 default "5"; 2676 description 2677 "The maximum number of unrecognized requests and 2678 replies that any session on this PCEP entity is 2679 willing to accept per minute before terminating 2680 the session. 2681 A PCRep message contains an unrecognized reply 2682 if it contains an RP object whose request ID 2683 does not correspond to any in-progress request 2684 sent by this PCEP entity. 2685 A PCReq message contains an unrecognized request 2686 if it contains an RP object whose request ID is 2687 zero."; 2688 reference 2689 "RFC 5440: Path Computation Element (PCE) 2690 Communication Protocol (PCEP)"; 2691 } 2692 leaf max-unknown-msgs { 2693 type uint32; 2694 default "5"; 2695 description 2696 "The maximum number of unknown messages that any 2697 session on this PCEP entity is willing to accept 2698 per minute before terminating the session."; 2699 reference 2700 "RFC 5440: Path Computation Element (PCE) 2701 Communication Protocol (PCEP)"; 2702 } 2703 leaf pcep-notification-max-rate { 2704 type uint32; 2705 mandatory true; 2706 description 2707 "This variable indicates the maximum number of 2708 notifications issued per second. If events 2709 occur more rapidly, the implementation may 2710 simply fail to emit these notifications during 2711 that period, or may queue them until an 2712 appropriate time. A value of 0 means no 2713 notifications are emitted and all should be 2714 discarded (that is, not queued)."; 2715 } 2716 container stateful-parameter { 2717 if-feature "stateful"; 2718 description 2719 "The configured stateful PCE parameters"; 2720 leaf state-timeout { 2721 type uint32; 2722 units "seconds"; 2723 description 2724 "When a PCEP session is terminated, a PCC 2725 waits for this time period before flushing 2726 LSP state associated with that PCEP session 2727 and reverting to operator-defined default 2728 parameters or behaviours."; 2729 } 2730 leaf redelegation-timeout { 2731 when "../../role = 'pcc'" 2732 + "or " 2733 + "../../role = 'pcc-and-pce'" { 2734 description 2735 "This field is applicable when the role is 2736 PCC"; 2737 } 2738 type uint32; 2739 units "seconds"; 2740 description 2741 "When a PCEP session is terminated, a PCC 2742 waits for this time period before revoking 2743 LSP delegation to a PCE and attempting to 2744 redelegate LSPs associated with the 2745 terminated PCEP session to an alternate 2746 PCE."; 2747 } 2748 leaf rpt-non-pcep-lsp { 2749 when "../../role = 'pcc'" 2750 + "or " 2751 + "../../role = 'pcc-and-pce'" { 2752 description 2753 "This field is applicable when the role is 2754 PCC"; 2755 } 2756 type boolean; 2757 default "true"; 2758 description 2759 "If set, a PCC reports LSPs that are not 2760 controlled by any PCE (for example, LSPs 2761 that are statically configured at the 2762 PCC). "; 2763 } 2764 reference 2765 "RFC 8231: Path Computation Element Communication Protocol 2766 (PCEP) Extensions for Stateful PCE"; 2767 } 2768 container of-list { 2769 when "../role = 'pce'" 2770 + "or " 2771 + "../role = 'pcc-and-pce'" { 2772 description 2773 "These field are applicable when the role is 2774 PCE"; 2775 } 2776 if-feature "objective-function"; 2777 uses of-list; 2778 description 2779 "The authorized OF-List at PCE for all peers"; 2780 } 2781 container lsp-db { 2782 if-feature "stateful"; 2783 config false; 2784 description 2785 "The LSP-DB"; 2786 leaf db-ver { 2787 when "../../role = 'pcc'" 2788 + "or " 2789 + "../../role = 'pcc-and-pce'" { 2790 description 2791 "This field is applicable when the role is 2792 PCC"; 2793 } 2794 if-feature "sync-opt"; 2795 type uint64; 2796 description 2797 "The LSP State Database Version Number"; 2798 } 2799 list association-list { 2800 if-feature "association"; 2801 key "type id source global-source extended-id"; 2802 description 2803 "List of all PCEP associations"; 2804 reference 2805 "RFC 8697: Path Computation Element Communication 2806 Protocol (PCEP) Extensions for Establishing 2807 Relationships between Sets of Label Switched 2808 Paths (LSPs)"; 2809 leaf type { 2810 type identityref { 2811 base te-types:association-type; 2812 } 2813 description 2814 "The PCEP association type"; 2815 } 2816 leaf id { 2817 type uint16; 2818 description 2819 "PCEP Association ID"; 2820 } 2821 leaf source { 2822 type inet:ip-address; 2823 description 2824 "PCEP Association Source."; 2825 } 2826 leaf global-source { 2827 type uint32; 2828 description 2829 "PCEP Association Global Source."; 2830 } 2831 leaf extended-id { 2832 type string; 2833 description 2834 "Additional information to support unique 2835 identification."; 2836 } 2837 list lsp { 2838 key "plsp-id pcc-id lsp-id"; 2839 description 2840 "List of all LSP in this association"; 2841 leaf plsp-id { 2842 type leafref { 2843 path "/pcep/entity/lsp-db/" 2844 + "lsp/plsp-id"; 2845 } 2846 description 2847 "Reference to PLSP-ID in LSP-DB"; 2848 } 2849 leaf pcc-id { 2850 type leafref { 2851 path "/pcep/entity/lsp-db/" 2852 + "lsp/pcc-id"; 2853 } 2854 description 2855 "Reference to PCC-ID in LSP-DB"; 2856 } 2857 leaf lsp-id { 2858 type leafref { 2859 path "/pcep/entity/lsp-db/" 2860 + "lsp/lsp-id"; 2861 } 2862 description 2863 "Reference to LSP ID in LSP-DB"; 2864 } 2865 } 2866 } 2867 list lsp { 2868 key "plsp-id pcc-id lsp-id"; 2869 description 2870 "List of all LSPs in LSP-DB"; 2871 leaf plsp-id { 2872 type uint32 { 2873 range "1..1048575"; 2874 } 2875 description 2876 "A PCEP-specific identifier for the LSP. A PCC 2877 creates a unique PLSP-ID for each LSP that is 2878 constant for the lifetime of a PCEP session. 2879 PLSP-ID is 20 bits with 0 and 0xFFFFF are 2880 reserved"; 2881 } 2882 leaf pcc-id { 2883 type inet:ip-address; 2884 description 2885 "The local internet address of the PCC, that 2886 generated the PLSP-ID."; 2887 } 2888 leaf source { 2889 type leafref { 2890 path "/te:te/te:lsps-state/te:lsp/te:source"; 2891 } 2892 description 2893 "Tunnel sender address extracted from 2894 SENDER_TEMPLATE object"; 2895 reference 2896 "RFC 3209: RSVP-TE: Extensions to RSVP for 2897 LSP Tunnels"; 2898 } 2899 leaf destination { 2900 type leafref { 2901 path "/te:te/te:lsps-state/te:lsp/te:" 2902 + "destination"; 2903 } 2904 description 2905 "Tunnel endpoint address extracted from 2906 SESSION object"; 2907 reference 2908 "RFC 3209: RSVP-TE: Extensions to RSVP for 2909 LSP Tunnels"; 2910 } 2911 leaf tunnel-id { 2912 type leafref { 2913 path "/te:te/te:lsps-state/te:lsp/te:tunnel-id"; 2914 } 2915 description 2916 "Tunnel identifier used in the SESSION 2917 that remains constant over the life 2918 of the tunnel."; 2919 reference 2920 "RFC 3209: RSVP-TE: Extensions to RSVP for 2921 LSP Tunnels"; 2922 } 2923 leaf lsp-id { 2924 type leafref { 2925 path "/te:te/te:lsps-state/te:lsp/te:lsp-id"; 2926 } 2927 description 2928 "Identifier used in the SENDER_TEMPLATE 2929 and the FILTER_SPEC that can be changed 2930 to allow a sender to share resources with 2931 itself."; 2932 reference 2933 "RFC 3209: RSVP-TE: Extensions to RSVP for 2934 LSP Tunnels"; 2935 } 2936 leaf extended-tunnel-id { 2937 type leafref { 2938 path "/te:te/te:lsps-state/te:lsp/te:" 2939 + "extended-tunnel-id"; 2940 } 2941 description 2942 "Extended Tunnel ID of the LSP."; 2943 reference 2944 "RFC 3209: RSVP-TE: Extensions to RSVP for 2945 LSP Tunnels"; 2946 } 2947 leaf admin-state { 2948 type boolean; 2949 description 2950 "The desired operational state"; 2951 } 2952 leaf operational-state { 2953 type operational-state; 2954 description 2955 "The operational status of the LSP"; 2956 } 2957 container delegated { 2958 description 2959 "The delegation related parameters"; 2960 leaf enabled { 2961 type boolean; 2962 description 2963 "LSP is delegated or not"; 2964 } 2965 leaf peer { 2966 type leafref { 2967 path "/pcep/entity/peers/peer/addr"; 2968 } 2969 must '(../enabled = true())' { 2970 error-message "The LSP must be delegated"; 2972 } 2973 description 2974 "At the PCC, the reference to the PCEP peer to 2975 which LSP is delegated; At the PCE, the 2976 reference to the PCEP peer which delegated this 2977 LSP"; 2978 } 2979 leaf srp-id { 2980 type uint32; 2981 description 2982 "The last SRP-ID-number associated with this 2983 LSP."; 2984 } 2985 } 2986 container initiation { 2987 if-feature "pce-initiated"; 2988 description 2989 "The PCE initiation related parameters"; 2990 reference 2991 "RFC 8281: Path Computation Element Communication 2992 Protocol (PCEP) Extensions for PCE-Initiated LSP 2993 Setup in a Stateful PCE Model"; 2994 leaf enabled { 2995 type boolean; 2996 description 2997 "Set to true if this LSP is initiated by a PCE"; 2998 } 2999 leaf peer { 3000 type leafref { 3001 path "/pcep/entity/peers/peer/addr"; 3002 } 3003 must '(../enabled = true())' { 3004 error-message "The LSP must be PCE-Initiated"; 3005 } 3006 description 3007 "At the PCC, the reference to the PCEP peer 3008 that initiated this LSP; At the PCE, the 3009 reference to the PCEP peer where the LSP 3010 is initiated"; 3011 } 3012 } 3013 leaf symbolic-path-name { 3014 type string; 3015 description 3016 "The symbolic path name associated with the LSP."; 3017 reference 3018 "RFC 8231: Path Computation Element Communication 3019 Protocol (PCEP) Extensions for Stateful PCE"; 3021 } 3022 leaf last-error { 3023 type identityref { 3024 base lsp-error; 3025 } 3026 description 3027 "The last error for the LSP."; 3028 } 3029 leaf pst { 3030 type identityref { 3031 base te-types:path-signaling-type; 3032 } 3033 default "te-types:path-setup-rsvp"; 3034 description 3035 "The Path Setup Type"; 3036 reference 3037 "RFC 8408: Conveying Path Setup Type in PCE 3038 Communication Protocol (PCEP) Messages"; 3039 } 3040 list association-list { 3041 if-feature "association"; 3042 key "type id source global-source extended-id"; 3043 description 3044 "List of all PCEP associations"; 3045 leaf type { 3046 type leafref { 3047 path "/pcep/entity/lsp-db/" 3048 + "association-list/type"; 3049 } 3050 description 3051 "PCEP Association Type"; 3052 } 3053 leaf id { 3054 type leafref { 3055 path "/pcep/entity/lsp-db/" 3056 + "association-list/id"; 3057 } 3058 description 3059 "PCEP Association ID"; 3060 } 3061 leaf source { 3062 type leafref { 3063 path "/pcep/entity/lsp-db/" 3064 + "association-list/source"; 3065 } 3066 description 3067 "PCEP Association Source."; 3068 } 3069 leaf global-source { 3070 type leafref { 3071 path "/pcep/entity/lsp-db/" 3072 + "association-list/global-source"; 3073 } 3074 description 3075 "PCEP Association Global Source."; 3076 } 3077 leaf extended-id { 3078 type leafref { 3079 path "/pcep/entity/lsp-db/" 3080 + "association-list/extended-id"; 3081 } 3082 description 3083 "Additional information to 3084 support unique identification."; 3085 } 3086 reference 3087 "RFC 8697: Path Computation Element Communication 3088 Protocol (PCEP) Extensions for Establishing 3089 Relationships between Sets of Label Switched 3090 Paths (LSPs)"; 3091 } 3092 } 3093 } 3094 container path-keys { 3095 when "../role = 'pce' or ../role = 'pcc-and-pce'" { 3096 description 3097 "These fields are applicable when the role is 3098 PCE"; 3099 } 3100 if-feature "path-key"; 3101 config false; 3102 description 3103 "The path-keys generated by the PCE"; 3104 reference 3105 "RFC 5520: Preserving Topology Confidentiality 3106 in Inter-Domain Path Computation Using a Path- 3107 Key-Based Mechanism"; 3108 list path-keys { 3109 key "path-key"; 3110 description 3111 "The list of path-keys generated by the PCE"; 3112 leaf path-key { 3113 type uint16; 3114 description 3115 "The identifier, or token used to represent 3116 the Confidential Path Segment (CPS) within 3117 the context of the PCE"; 3118 } 3119 container cps { 3120 description 3121 "The Confidential Path Segment (CPS)"; 3122 list explicit-route-objects { 3123 key "index"; 3124 description 3125 "List of explicit route objects"; 3126 leaf index { 3127 type uint32; 3128 description 3129 "ERO subobject index"; 3130 } 3131 uses te-types:explicit-route-hop; 3132 } 3133 } 3134 leaf pcc-original { 3135 type leafref { 3136 path "/pcep/entity/peers/peer/addr"; 3137 } 3138 description 3139 "Reference to PCC peer address of 3140 the original request"; 3141 } 3142 leaf req-id { 3143 type uint32; 3144 description 3145 "The request ID of the original PCReq."; 3146 } 3147 leaf retrieved { 3148 type boolean; 3149 description 3150 "If path-key has been retrieved yet"; 3151 } 3152 leaf pcc-retrieved { 3153 type leafref { 3154 path "/pcep/entity/peers/peer/addr"; 3155 } 3156 must '(../retrieved = true())' { 3157 error-message "The Path-key should be retreived"; 3158 } 3159 description 3160 "Reference to PCC peer address which 3161 retreived the path-key"; 3162 } 3163 leaf creation-time { 3164 type yang:timestamp; 3165 description 3166 "The timestamp value at the time this Path-Key 3167 was created."; 3168 } 3169 leaf discard-time { 3170 type uint32; 3171 units "minutes"; 3172 description 3173 "A time after which this path-keys will be 3174 discarded"; 3175 } 3176 leaf reuse-time { 3177 type uint32; 3178 units "minutes"; 3179 description 3180 "A time after which this path-keys could be 3181 reused"; 3182 } 3183 } 3184 } 3185 container peers { 3186 description 3187 "The list of configured peers for the 3188 entity (remote PCE)"; 3189 list peer { 3190 key "addr"; 3191 description 3192 "The peer configured for the entity. 3193 (remote PCE)"; 3194 leaf addr { 3195 type inet:ip-address; 3196 description 3197 "The local Internet address of this 3198 PCEP peer."; 3199 } 3200 leaf role { 3201 type pcep-role; 3202 mandatory true; 3203 description 3204 "The role of the PCEP Peer. 3205 Takes one of the following values. 3206 - unknown(0): this PCEP peer role is not 3207 known. 3208 - pcc(1): this PCEP peer is a PCC. 3209 - pce(2): this PCEP peer is a PCE. 3210 - pcc-and-pce(3): this PCEP peer 3211 is both a PCC and a PCE."; 3212 } 3213 leaf description { 3214 type string; 3215 description 3216 "Description of the PCEP peer 3217 configured by the user"; 3218 } 3219 uses info { 3220 description 3221 "PCE Peer information"; 3222 } 3223 container pce-info { 3224 uses pce-info { 3225 description 3226 "PCE Peer information"; 3227 } 3228 description 3229 "The PCE Peer information"; 3230 } 3231 leaf delegation-pref { 3232 if-feature "stateful"; 3233 type uint8 { 3234 range "0..7"; 3235 } 3236 description 3237 "The PCE peer delegation preference."; 3238 } 3239 container auth { 3240 description 3241 "The Authentication options"; 3242 choice auth-type-selection { 3243 description 3244 "Options for expressing authentication 3245 setting."; 3246 case auth-key-chain { 3247 leaf key-chain { 3248 type key-chain:key-chain-ref; 3249 description 3250 "key-chain name."; 3251 } 3252 } 3253 case auth-key { 3254 leaf crypto-algorithm { 3255 type identityref { 3256 base key-chain:crypto-algorithm; 3257 } 3258 mandatory true; 3259 description 3260 "Cryptographic algorithm associated 3261 with key."; 3262 } 3263 choice key-string-style { 3264 description 3265 "Key string styles"; 3266 case keystring { 3267 leaf keystring { 3268 nacm:default-deny-all; 3269 type string; 3270 description 3271 "Key string in ASCII format."; 3272 } 3273 } 3274 case hexadecimal { 3275 if-feature "key-chain:hex-key-string"; 3276 leaf hexadecimal-string { 3277 nacm:default-deny-all; 3278 type yang:hex-string; 3279 description 3280 "Key in hexadecimal string format. When 3281 compared to ASCII, specification in 3282 hexadecimal affords greater key entropy 3283 with the same number of internal 3284 key-string octets. Additionally, it 3285 discourages usage of well-known words or 3286 numbers."; 3287 } 3288 } 3289 } 3290 } 3291 case auth-tls { 3292 if-feature "tls"; 3293 choice role { 3294 description 3295 "The role of the local entity"; 3296 case server { 3297 container tls-server { 3298 uses tlss:tls-server-grouping { 3299 description 3300 "Server TLS information."; 3301 } 3302 description 3303 "TLS related information"; 3304 } 3305 } 3306 case client { 3307 container tls-client { 3308 uses tlsc:tls-client-grouping { 3309 description 3310 "Client TLS information."; 3311 } 3312 description 3313 "TLS related information"; 3314 } 3315 } 3316 } 3317 } 3318 } 3319 } 3320 leaf discontinuity-time { 3321 type yang:timestamp; 3322 config false; 3323 description 3324 "The timestamp of the time when the information and 3325 statistics were last reset."; 3326 } 3327 leaf initiate-session { 3328 type boolean; 3329 config false; 3330 description 3331 "Indicates whether the local PCEP entity initiates 3332 sessions to this peer, or waits for the peer to 3333 initiate a session."; 3334 } 3335 leaf session-exists { 3336 type boolean; 3337 config false; 3338 description 3339 "Indicates whether a session with 3340 this peer currently exists."; 3341 } 3342 leaf session-up-time { 3343 type yang:timestamp; 3344 config false; 3345 description 3346 "The timestamp value of the last time a 3347 session with this peer was successfully 3348 established."; 3349 } 3350 leaf session-fail-time { 3351 type yang:timestamp; 3352 config false; 3353 description 3354 "The timestamp value of the last time a 3355 session with this peer failed to be 3356 established."; 3358 } 3359 leaf session-fail-up-time { 3360 type yang:timestamp; 3361 config false; 3362 description 3363 "The timestamp value of the last time a 3364 session with this peer failed from 3365 active."; 3366 } 3367 container sessions { 3368 config false; 3369 description 3370 "This entry represents a single PCEP 3371 session in which the local PCEP entity participates. 3372 This entry exists only if the corresponding PCEP 3373 session has been initialized by some event, such as 3374 manual user configuration, auto-discovery of a peer, 3375 or an incoming TCP connection."; 3376 list session { 3377 key "initiator"; 3378 description 3379 "The list of sessions, note that for a time being 3380 two sessions may exist for a peer"; 3381 leaf initiator { 3382 type pcep-initiator; 3383 description 3384 "The initiator of the session,that is, whether 3385 the TCP connection was initiated by the local 3386 PCEP entity or the peer. 3387 There is a window during session 3388 initialization where two sessions can exist 3389 between a pair of PCEP speakers, each 3390 initiated by one of the speakers. One of 3391 these sessions is always discarded before it 3392 leaves OpenWait state. However, before it is 3393 discarded, two sessions to the given peer 3394 appear transiently in this yang module. The 3395 sessions are distinguished by who initiated 3396 them, and so this field is the key."; 3397 } 3398 leaf role { 3399 type leafref { 3400 path "/pcep/entity/role"; 3401 } 3402 description 3403 "The reference to peer role ."; 3404 } 3405 leaf state-last-change { 3406 type yang:timestamp; 3407 description 3408 "The timestamp value at the time this 3409 session entered its current state as 3410 denoted by the state leaf."; 3411 } 3412 leaf state { 3413 type pcep-sess-state; 3414 description 3415 "The current state of the session. 3416 The set of possible states excludes the 3417 idle state since entries do not exist 3418 in the idle state."; 3419 } 3420 leaf session-creation { 3421 type yang:timestamp; 3422 description 3423 "The timestamp value at the time this 3424 session was created."; 3425 } 3426 leaf connect-retry { 3427 type yang:counter32; 3428 description 3429 "The number of times that the local PCEP 3430 entity has attempted to establish a TCP 3431 connection for this session without 3432 success. The PCEP entity gives up when 3433 this reaches connect-max-retry."; 3434 } 3435 leaf local-id { 3436 type uint8; 3437 description 3438 "The value of the PCEP session ID used by 3439 the local PCEP entity in the Open message 3440 for this session. If state is tcp-pending 3441 then this is the session ID that will be 3442 used in the Open message. Otherwise, this 3443 is the session ID that was sent in the 3444 Open message."; 3445 reference 3446 "RFC 5440: Path Computation Element (PCE) 3447 Communication Protocol (PCEP)"; 3448 } 3449 leaf remote-id { 3450 type uint8; 3451 must "((../state != 'tcp-pending'" 3452 + "and " 3453 + "../state != 'open-wait' )" 3454 + "or " 3455 + "((../state = 'tcp-pending'" 3456 + " or " 3457 + "../state = 'open-wait' )" 3458 + "and (. = 0)))" { 3459 error-message "Invalid remote-id"; 3460 description 3461 "If state is tcp-pending or open-wait then 3462 this leaf is not used and MUST be set to 3463 zero."; 3464 } 3465 description 3466 "The value of the PCEP session ID used by the 3467 peer in its Open message for this session."; 3468 reference 3469 "RFC 5440: Path Computation Element (PCE) 3470 Communication Protocol (PCEP)"; 3471 } 3472 leaf keepalive-timer { 3473 type uint8; 3474 units "seconds"; 3475 must "(../state = 'session-up'" 3476 + "or " 3477 + "(../state != 'session-up'" 3478 + "and (. = 0)))" { 3479 error-message "Invalid keepalive timer"; 3480 description 3481 "This field is used if and only if state is 3482 session-up. Otherwise, it is not used and 3483 MUST be set to zero."; 3484 } 3485 description 3486 "The agreed maximum interval at which the local 3487 PCEP entity transmits PCEP messages on this PCEP 3488 session. Zero means that the local PCEP entity 3489 never sends Keepalives on this session."; 3490 reference 3491 "RFC 5440: Path Computation Element (PCE) 3492 Communication Protocol (PCEP)"; 3493 } 3494 leaf peer-keepalive-timer { 3495 type uint8; 3496 units "seconds"; 3497 must "(../state = 'session-up'" 3498 + "or " 3499 + "(../state != 'session-up'" 3500 + "and " 3501 + "(. = 0)))" { 3503 error-message "Invalid Peer keepalive timer"; 3504 description 3505 "This field is used if and only if state is 3506 session-up. Otherwise, it is not used and MUST 3507 be set to zero."; 3508 } 3509 description 3510 "The agreed maximum interval at which the peer 3511 transmits PCEP messages on this PCEP session. 3512 Zero means that the peer never sends Keepalives 3513 on this session."; 3514 reference 3515 "RFC 5440: Path Computation Element (PCE) 3516 Communication Protocol (PCEP)"; 3517 } 3518 leaf dead-timer { 3519 type uint8; 3520 units "seconds"; 3521 description 3522 "The dead timer interval for this PCEP session."; 3523 reference 3524 "RFC 5440: Path Computation Element (PCE) 3525 Communication Protocol (PCEP)"; 3526 } 3527 leaf peer-dead-timer { 3528 type uint8; 3529 units "seconds"; 3530 must "((../state != 'tcp-pending'" 3531 + "and " 3532 + "../state != 'open-wait' )" 3533 + "or " 3534 + "((../state = 'tcp-pending'" 3535 + " or " 3536 + "../state = 'open-wait' )" 3537 + "and " 3538 + "(. = 0)))" { 3539 error-message "Invalid Peer Dead timer"; 3540 description 3541 "If state is tcp-pending or open-wait then this 3542 leaf is not used and MUST be set to zero."; 3543 } 3544 description 3545 "The peer's dead-timer interval 3546 for this PCEP session."; 3547 reference 3548 "RFC 5440: Path Computation Element (PCE) 3549 Communication Protocol (PCEP)"; 3550 } 3551 leaf ka-hold-time-rem { 3552 type uint8; 3553 units "seconds"; 3554 must "((../state != 'tcp-pending'" 3555 + "and " 3556 + "../state != 'open-wait' ) " 3557 + "or " 3558 + "((../state = 'tcp-pending'" 3559 + "or " 3560 + "../state = 'open-wait' )" 3561 + "and " 3562 + "(. = 0)))" { 3563 error-message 3564 "Invalid Keepalive hold time remaining"; 3565 description 3566 "If state is tcp-pending or open-wait then this 3567 field is not used and MUST be set to zero."; 3568 } 3569 description 3570 "The keep alive hold time remaining for this 3571 session."; 3572 } 3573 leaf overloaded { 3574 type boolean; 3575 description 3576 "If the local PCEP entity has informed the peer that 3577 it is currently overloaded, then this is set to true. 3578 Otherwise, it is set to false."; 3579 reference 3580 "RFC 5440: Path Computation Element (PCE) 3581 Communication Protocol (PCEP)"; 3582 } 3583 leaf overload-time { 3584 type uint32; 3585 units "seconds"; 3586 must '((../overloaded = true()) ' 3587 + 'or ((../overloaded != true()) ' 3588 + 'and (. = 0)))' { 3589 error-message "Invalid overload-time"; 3590 description 3591 "This field is only used if overloaded is set to 3592 true. Otherwise, it is not used and MUST be set 3593 to zero."; 3594 } 3595 description 3596 "The interval of time that is remaining until the 3597 local PCEP entity will cease to be overloaded on 3598 this session."; 3600 reference 3601 "RFC 5440: Path Computation Element (PCE) 3602 Communication Protocol (PCEP)"; 3603 } 3604 leaf peer-overloaded { 3605 type boolean; 3606 description 3607 "If the peer has informed the local PCEP entity 3608 that it is currently overloaded, then this is 3609 set to true. Otherwise, it is set to false."; 3610 reference 3611 "RFC 5440: Path Computation Element (PCE) 3612 Communication Protocol (PCEP)"; 3613 } 3614 leaf peer-overload-time { 3615 type uint32; 3616 units "seconds"; 3617 must '((../peer-overloaded = ' 3618 + 'true()) or ' 3619 + '((../peer-overloaded !=' 3620 + 'true())' 3621 + ' and ' 3622 + '(. = 0)))' { 3623 error-message "Invalid peer overload time"; 3624 description 3625 "This field is only used if peer-overloaded 3626 is set to true. Otherwise, it is not used 3627 and MUST be set to zero."; 3628 } 3629 description 3630 "The interval of time that is remaining until 3631 the peer will cease to be overloaded. If it 3632 is not known how long the peer will stay in 3633 overloaded state, this leaf is set to zero."; 3634 reference 3635 "RFC 5440: Path Computation Element (PCE) 3636 Communication Protocol (PCEP)"; 3637 } 3638 leaf lspdb-sync { 3639 if-feature "stateful"; 3640 type sync-state; 3641 description 3642 "The LSP-DB state synchronization status."; 3643 reference 3644 "RFC 8231: Path Computation Element Communication 3645 Protocol (PCEP) Extensions for Stateful PCE"; 3646 } 3647 leaf recv-db-ver { 3648 when "../role = 'pcc'" 3649 + "or " 3650 + "../role = 'pcc-and-pce'" { 3651 description 3652 "This field is applicable when the role is 3653 PCC"; 3654 } 3655 if-feature "stateful"; 3656 if-feature "sync-opt"; 3657 type uint64; 3658 description 3659 "The last received LSP State Database Version 3660 Number"; 3661 reference 3662 "RFC 8231: Path Computation Element Communication 3663 Protocol (PCEP) Extensions for Stateful PCE"; 3664 } 3665 container of-list { 3666 when "../role = 'pce'" 3667 + "or " 3668 + "../role = 'pcc-and-pce'" { 3669 description 3670 "These fields are applicable when the role is 3671 PCE"; 3672 } 3673 if-feature "objective-function"; 3674 uses of-list; 3675 description 3676 "Indicate the list of supported OF on this 3677 session"; 3678 reference 3679 "RFC 5541: Encoding of Objective Functions in 3680 the Path Computation Element Communication 3681 Protocol (PCEP)"; 3682 } 3683 container pst-list { 3684 when "../role = 'pce'" 3685 + "or " 3686 + "../role = 'pcc-and-pce'" { 3687 description 3688 "These fields are applicable when the role is 3689 PCE"; 3690 } 3691 description 3692 "Indicate the list of supported 3693 PST on this session"; 3694 reference 3695 "RFC 8408: Conveying Path Setup Type in PCE 3696 Communication Protocol (PCEP) Messages"; 3697 list path-setup-type { 3698 key "pst"; 3699 description 3700 "The list of authorized PST"; 3701 leaf pst { 3702 type identityref { 3703 base te-types:path-signaling-type; 3704 } 3705 description 3706 "The PST authorized"; 3707 } 3708 } 3709 } 3710 container assoc-type-list { 3711 if-feature "association"; 3712 description 3713 "Indicate the list of supported association types 3714 on this session"; 3715 reference 3716 "RFC 8697: Path Computation Element Communication 3717 Protocol (PCEP) Extensions for Establishing 3718 Relationships between Sets of Label Switched 3719 Paths (LSPs)"; 3720 list assoc-type { 3721 key "at"; 3722 description 3723 "The list of authorized association types"; 3724 leaf at { 3725 type identityref { 3726 base te-types:association-type; 3727 } 3728 description 3729 "The association type authorized"; 3730 } 3731 } 3732 } 3733 leaf speaker-entity-id { 3734 if-feature "sync-opt"; 3735 type string; 3736 description 3737 "The Speaker Entity Identifier"; 3738 reference 3739 "RFC 8232: Optimizations of Label Switched 3740 Path State Synchronization Procedures for 3741 a Stateful PCE"; 3742 } 3743 leaf discontinuity-time { 3744 type yang:timestamp; 3745 description 3746 "The timestamp value of the time when the 3747 statistics were last reset."; 3748 } 3749 } 3750 // session 3751 } 3752 // sessions 3753 } 3754 //peer 3755 } 3756 //peers 3757 } 3758 //entity 3759 } 3761 //pcep 3762 /* 3763 * Notifications 3764 */ 3766 notification pcep-session-up { 3767 description 3768 "This notification is sent when the value of 3769 '/pcep/peers/peer/sessions/session/state' 3770 enters the 'session-up' state."; 3771 uses notification-instance-hdr; 3772 uses notification-session-hdr; 3773 leaf state-last-change { 3774 type yang:timestamp; 3775 description 3776 "The timestamp value at the time this session 3777 entered its current state as denoted by the state 3778 leaf."; 3779 } 3780 leaf state { 3781 type pcep-sess-state; 3782 description 3783 "The current state of the session. 3784 The set of possible states excludes the idle state 3785 since entries do not exist in the idle state."; 3786 } 3787 reference 3788 "RFC 5440: Path Computation Element (PCE) Communication 3789 Protocol (PCEP)"; 3790 } 3791 //notification 3793 notification pcep-session-down { 3794 description 3795 "This notification is sent when the value of 3796 '/pcep/peers/peer/sessions/session/state' 3797 leaves the 'session-up' state."; 3798 uses notification-instance-hdr; 3799 leaf session-initiator { 3800 type pcep-initiator; 3801 description 3802 "The initiator of the session."; 3803 } 3804 leaf state-last-change { 3805 type yang:timestamp; 3806 description 3807 "The timestamp value at the time this session 3808 entered its current state as denoted by the state 3809 leaf."; 3810 } 3811 leaf state { 3812 type pcep-sess-state; 3813 description 3814 "The current state of the session. 3815 The set of possible states excludes the idle state 3816 since entries do not exist in the idle state."; 3817 } 3818 reference 3819 "RFC 5440: Path Computation Element (PCE) Communication 3820 Protocol (PCEP)"; 3821 } 3823 //notification 3825 notification pcep-session-local-overload { 3826 description 3827 "This notification is sent when the local PCEP entity 3828 enters overload state for a peer."; 3829 uses notification-instance-hdr; 3830 uses notification-session-hdr; 3831 leaf overloaded { 3832 type boolean; 3833 description 3834 "If the local PCEP entity has informed the peer 3835 that it is currently overloaded, then this is set 3836 to true. Otherwise, it is set to false."; 3837 } 3838 leaf overload-time { 3839 type uint32; 3840 units "seconds"; 3841 description 3842 "The interval of time that is remaining until the 3843 local PCEP entity will cease to be overloaded on 3844 this session."; 3845 } 3846 reference 3847 "RFC 5440: Path Computation Element (PCE) Communication 3848 Protocol (PCEP)"; 3849 } 3851 //notification 3853 notification pcep-session-local-overload-clear { 3854 description 3855 "This notification is sent when the local PCEP entity 3856 leaves overload state for a peer."; 3857 uses notification-instance-hdr; 3858 leaf overloaded { 3859 type boolean; 3860 description 3861 "If the local PCEP entity has informed the peer 3862 that it is currently overloaded, then this is set 3863 to true. Otherwise, it is set to false."; 3864 } 3865 reference 3866 "RFC 5440: Path Computation Element (PCE) Communication 3867 Protocol (PCEP)"; 3868 } 3870 //notification 3872 notification pcep-session-peer-overload { 3873 description 3874 "This notification is sent when a peer enters overload 3875 state."; 3876 uses notification-instance-hdr; 3877 uses notification-session-hdr; 3878 leaf peer-overloaded { 3879 type boolean; 3880 description 3881 "If the peer has informed the local PCEP entity that 3882 it is currently overloaded, then this is set to 3883 true. Otherwise, it is set to false."; 3884 } 3885 leaf peer-overload-time { 3886 type uint32; 3887 units "seconds"; 3888 description 3889 "The interval of time that is remaining until the 3890 peer will cease to be overloaded. If it is not 3891 known how long the peer will stay in overloaded 3892 state, this leaf is set to zero."; 3893 } 3894 reference 3895 "RFC 5440: Path Computation Element (PCE) Communication 3896 Protocol (PCEP)"; 3897 } 3899 //notification 3901 notification pcep-session-peer-overload-clear { 3902 description 3903 "This notification is sent when a peer leaves overload 3904 state."; 3905 uses notification-instance-hdr; 3906 leaf peer-overloaded { 3907 type boolean; 3908 description 3909 "If the peer has informed the local PCEP entity that 3910 it is currently overloaded, then this is set to 3911 true. Otherwise, it is set to false."; 3912 } 3913 reference 3914 "RFC 5440: Path Computation Element (PCE) Communication 3915 Protocol (PCEP)"; 3916 } 3918 //notification 3919 /* 3920 * RPC 3921 */ 3923 rpc trigger-resync { 3924 if-feature "stateful"; 3925 if-feature "sync-opt"; 3926 description 3927 "Trigger the resyncrinization at the PCE"; 3928 reference 3929 "RFC 8232: Optimizations of Label Switched Path State 3930 Synchronization Procedures for a Stateful PCE"; 3931 input { 3932 leaf pcc { 3933 type leafref { 3934 path "/pcep/entity/peers/peer/addr"; 3936 } 3937 description 3938 "The IP address to identify the PCC. The state 3939 syncronization is re-triggered for all LSPs from 3940 the PCC. The rpc on the PCC will be ignored."; 3941 } 3942 } 3943 //input 3944 } 3946 //rpc 3947 } 3949 3951 10.2. ietf-pcep-stats module 3953 file "ietf-pcep-stats@2020-07-08.yang" 3954 module ietf-pcep-stats { 3955 yang-version 1.1; 3956 namespace "urn:ietf:params:xml:ns:yang:ietf-pcep-stats"; 3957 prefix pcep-stats; 3959 import ietf-pcep { 3960 prefix pcep; 3961 reference 3962 "RFC XXXX: A YANG Data Model for Path Computation 3963 Element Communications Protocol (PCEP)"; 3964 } 3965 import ietf-yang-types { 3966 prefix yang; 3967 reference 3968 "RFC 6991: Common YANG Data Types"; 3969 } 3971 organization 3972 "IETF PCE (Path Computation Element) Working Group"; 3973 contact 3974 "WG Web: 3975 WG List: 3976 Editor: Dhruv Dhody 3977 "; 3978 description 3979 "The YANG module augments the PCEP yang operational 3980 model with statistics, counters and telemetry data. 3982 Copyright (c) 2020 IETF Trust and the persons identified as 3983 authors of the code. All rights reserved. 3985 Redistribution and use in source and binary forms, with or 3986 without modification, is permitted pursuant to, and subject 3987 to the license terms contained in, the Simplified BSD License 3988 set forth in Section 4.c of the IETF Trust's Legal Provisions 3989 Relating to IETF Documents 3990 (https://trustee.ietf.org/license-info). 3992 This version of this YANG module is part of RFC XXXX; see the 3993 RFC itself for full legal notices."; 3995 revision 2020-07-08 { 3996 description 3997 "Initial revision."; 3998 reference 3999 "RFC XXXX: A YANG Data Model for Path Computation 4000 Element Communications Protocol (PCEP)"; 4001 } 4003 /* 4004 * Groupings 4005 */ 4007 grouping pcep-stats { 4008 description 4009 "This grouping defines statistics for PCEP. It is used 4010 for both peer and current session."; 4011 leaf avg-rsp-time { 4012 when "../../pcep:role = 'pce'" 4013 + "or " 4014 + "../../pcep:role = 'pcc-and-pce'" { 4015 description 4016 "Valid for PCEP Peer as PCE"; 4017 } 4018 type uint32; 4019 units "milliseconds"; 4020 description 4021 "The average response time. If an average response time 4022 has not been calculated then this leaf has the value 4023 zero."; 4024 } 4025 leaf lwm-rsp-time { 4026 when "../../pcep:role = 'pce'" 4027 + "or " 4028 + "../../pcep:role = 'pcc-and-pce'" { 4029 description 4030 "Valid for PCEP Peer as PCE"; 4032 } 4033 type uint32; 4034 units "milliseconds"; 4035 description 4036 "The smallest (low-water mark) response time seen. 4037 If no responses have been received then this leaf has 4038 the value zero."; 4039 } 4040 leaf hwm-rsp-time { 4041 when "../../pcep:role = 'pce'" 4042 + "or " 4043 + "../../pcep:role = 'pcc-and-pce'" { 4044 description 4045 "Valid for PCEP Peer as PCE"; 4046 } 4047 type uint32; 4048 units "milliseconds"; 4049 description 4050 "The greatest (high-water mark) response time seen. 4051 If no responses have been received then this object 4052 has the value zero."; 4053 } 4054 leaf num-pcreq-sent { 4055 when "../../pcep:role = 'pce'" 4056 + "or " 4057 + "../../pcep:role = 'pcc-and-pce'" { 4058 description 4059 "Valid for PCEP Peer as PCE"; 4060 } 4061 type yang:counter32; 4062 description 4063 "The number of PCReq messages sent."; 4064 } 4065 leaf num-pcreq-rcvd { 4066 when "../../pcep:role = 'pcc'" 4067 + "or " 4068 + "../../pcep:role = 'pcc-and-pce'" { 4069 description 4070 "Valid for PCEP Peer as PCC"; 4071 } 4072 type yang:counter32; 4073 description 4074 "The number of PCReq messages received."; 4075 } 4076 leaf num-pcrep-sent { 4077 when "../../pcep:role = 'pcc'" 4078 + "or " 4079 + "../../pcep:role = 'pcc-and-pce'" { 4081 description 4082 "Valid for PCEP Peer as PCC"; 4083 } 4084 type yang:counter32; 4085 description 4086 "The number of PCRep messages sent."; 4087 } 4088 leaf num-pcrep-rcvd { 4089 when "../../pcep:role = 'pce'" 4090 + "or " 4091 + "../../pcep:role = 'pcc-and-pce'" { 4092 description 4093 "Valid for PCEP Peer as PCE"; 4094 } 4095 type yang:counter32; 4096 description 4097 "The number of PCRep messages received."; 4098 } 4099 leaf num-pcerr-sent { 4100 type yang:counter32; 4101 description 4102 "The number of PCErr messages sent."; 4103 } 4104 leaf num-pcerr-rcvd { 4105 type yang:counter32; 4106 description 4107 "The number of PCErr messages received."; 4108 } 4109 leaf num-pcntf-sent { 4110 type yang:counter32; 4111 description 4112 "The number of PCNtf messages sent."; 4113 } 4114 leaf num-pcntf-rcvd { 4115 type yang:counter32; 4116 description 4117 "The number of PCNtf messages received."; 4118 } 4119 leaf num-keepalive-sent { 4120 type yang:counter32; 4121 description 4122 "The number of Keepalive messages sent."; 4123 } 4124 leaf num-keepalive-rcvd { 4125 type yang:counter32; 4126 description 4127 "The number of Keepalive messages received."; 4128 } 4129 leaf num-unknown-rcvd { 4130 type yang:counter32; 4131 description 4132 "The number of unknown messages received."; 4133 } 4134 leaf num-corrupt-rcvd { 4135 type yang:counter32; 4136 description 4137 "The number of corrupted PCEP message received."; 4138 } 4139 leaf num-req-sent { 4140 when "../../pcep:role = 'pce'" 4141 + "or " 4142 + "../../pcep:role = 'pcc-and-pce'" { 4143 description 4144 "Valid for PCEP Peer as PCE"; 4145 } 4146 type yang:counter32; 4147 description 4148 "The number of requests sent. A request corresponds 4149 1:1 with an RP object in a PCReq message. This might 4150 be greater than num-pcreq-sent because multiple 4151 requests can be batched into a single PCReq 4152 message."; 4153 } 4154 leaf num-req-sent-pend-rep { 4155 when "../../pcep:role = 'pce'" 4156 + "or " 4157 + "../../pcep:role = 'pcc-and-pce'" { 4158 description 4159 "Valid for PCEP Peer as PCE"; 4160 } 4161 type yang:counter32; 4162 description 4163 "The number of requests that have been sent for 4164 which a response is still pending."; 4165 } 4166 leaf num-req-sent-ero-rcvd { 4167 when "../../pcep:role = 'pce'" 4168 + "or " 4169 + "../../pcep:role = 'pcc-and-pce'" { 4170 description 4171 "Valid for PCEP Peer as PCE"; 4172 } 4173 type yang:counter32; 4174 description 4175 "The number of requests that have been sent for 4176 which a response with an ERO object was received. 4178 Such responses indicate that a path was 4179 successfully computed by the peer."; 4180 } 4181 leaf num-req-sent-nopath-rcvd { 4182 when "../../pcep:role = 'pce'" 4183 + "or " 4184 + "../../pcep:role = 'pcc-and-pce'" { 4185 description 4186 "Valid for PCEP Peer as PCE"; 4187 } 4188 type yang:counter32; 4189 description 4190 "The number of requests that have been sent for 4191 which a response with a NO-PATH object was 4192 received. Such responses indicate that the peer 4193 could not find a path to satisfy the 4194 request."; 4195 } 4196 leaf num-req-sent-cancel-rcvd { 4197 when "../../pcep:role = 'pce'" 4198 + "or " 4199 + "../../pcep:role = 'pcc-and-pce'" { 4200 description 4201 "Valid for PCEP Peer as PCE"; 4202 } 4203 type yang:counter32; 4204 description 4205 "The number of requests that were cancelled with 4206 a PCNtf message. This might be different than 4207 num-pcntf-rcvd because not all PCNtf messages are 4208 used to cancel requests, and a single PCNtf message 4209 can cancel multiple requests."; 4210 } 4211 leaf num-req-sent-error-rcvd { 4212 when "../../pcep:role = 'pce'" 4213 + "or " 4214 + "../../pcep:role = 'pcc-and-pce'" { 4215 description 4216 "Valid for PCEP Peer as PCE"; 4217 } 4218 type yang:counter32; 4219 description 4220 "The number of requests that were rejected with a 4221 PCErr message. This might be different than 4222 num-pcerr-rcvd because not all PCErr messages are 4223 used to reject requests, and a single PCErr message 4224 can reject multiple requests."; 4225 } 4226 leaf num-req-sent-timeout { 4227 when "../../pcep:role = 'pce'" 4228 + "or " 4229 + "../../pcep:role = 'pcc-and-pce'" { 4230 description 4231 "Valid for PCEP Peer as PCE"; 4232 } 4233 type yang:counter32; 4234 description 4235 "The number of requests that have been sent to a peer 4236 and have been abandoned because the peer has taken too 4237 long to respond to them."; 4238 } 4239 leaf num-req-sent-cancel-sent { 4240 when "../../pcep:role = 'pce'" 4241 + "or " 4242 + "../../pcep:role = 'pcc-and-pce'" { 4243 description 4244 "Valid for PCEP Peer as PCE"; 4245 } 4246 type yang:counter32; 4247 description 4248 "The number of requests that were sent to the peer and 4249 explicitly cancelled by the local PCEP entity sending 4250 a PCNtf."; 4251 } 4252 leaf num-req-rcvd { 4253 when "../../pcep:role = 'pcc'" 4254 + "or " 4255 + "../../pcep:role = 'pcc-and-pce'" { 4256 description 4257 "Valid for PCEP Peer as PCC"; 4258 } 4259 type yang:counter32; 4260 description 4261 "The number of requests received. A request 4262 corresponds 1:1 with an RP object in a PCReq 4263 message. 4264 This might be greater than num-pcreq-rcvd because 4265 multiple requests can be batched into a single 4266 PCReq message."; 4267 } 4268 leaf num-req-rcvd-pend-rep { 4269 when "../../pcep:role = 'pcc'" 4270 + "or " 4271 + "../../pcep:role = 'pcc-and-pce'" { 4272 description 4273 "Valid for PCEP Peer as PCC"; 4275 } 4276 type yang:counter32; 4277 description 4278 "The number of requests that have been received for 4279 which a response is still pending."; 4280 } 4281 leaf num-req-rcvd-ero-sent { 4282 when "../../pcep:role = 'pcc'" 4283 + "or " 4284 + "../../pcep:role = 'pcc-and-pce'" { 4285 description 4286 "Valid for PCEP Peer as PCC"; 4287 } 4288 type yang:counter32; 4289 description 4290 "The number of requests that have been received for 4291 which a response with an ERO object was sent. Such 4292 responses indicate that a path was successfully 4293 computed by the local PCEP entity."; 4294 } 4295 leaf num-req-rcvd-nopath-sent { 4296 when "../../pcep:role = 'pcc'" 4297 + "or " 4298 + "../../pcep:role = 'pcc-and-pce'" { 4299 description 4300 "Valid for PCEP Peer as PCC"; 4301 } 4302 type yang:counter32; 4303 description 4304 "The number of requests that have been received for 4305 which a response with a NO-PATH object was sent. Such 4306 responses indicate that the local PCEP entity could 4307 not find a path to satisfy the request."; 4308 } 4309 leaf num-req-rcvd-cancel-sent { 4310 when "../../pcep:role = 'pcc'" 4311 + "or " 4312 + "../../pcep:role = 'pcc-and-pce'" { 4313 description 4314 "Valid for PCEP Peer as PCC"; 4315 } 4316 type yang:counter32; 4317 description 4318 "The number of requests received that were cancelled 4319 by the local PCEP entity sending a PCNtf message. 4320 This might be different than num-pcntf-sent because 4321 not all PCNtf messages are used to cancel requests, 4322 and a single PCNtf message can cancel multiple 4323 requests."; 4324 } 4325 leaf num-req-rcvd-error-sent { 4326 when "../../pcep:role = 'pcc'" 4327 + "or " 4328 + "../../pcep:role = 'pcc-and-pce'" { 4329 description 4330 "Valid for PCEP Peer as PCC"; 4331 } 4332 type yang:counter32; 4333 description 4334 "The number of requests received that were cancelled 4335 by the local PCEP entity sending a PCErr message. 4336 This might be different than num-pcerr-sent because 4337 not all PCErr messages are used to cancel requests, 4338 and a single PCErr message can cancel multiple 4339 requests."; 4340 } 4341 leaf num-req-rcvd-cancel-rcvd { 4342 when "../../pcep:role = 'pcc'" 4343 + "or " 4344 + "../../pcep:role = 'pcc-and-pce'" { 4345 description 4346 "Valid for PCEP Peer as PCC"; 4347 } 4348 type yang:counter32; 4349 description 4350 "The number of requests that were received from the 4351 peer and explicitly cancelled by the peer sending 4352 a PCNtf."; 4353 } 4354 leaf num-rep-rcvd-unknown { 4355 when "../../pcep:role = 'pce'" 4356 + "or " 4357 + "../../pcep:role = 'pcc-and-pce'" { 4358 description 4359 "Valid for PCEP Peer as PCE"; 4360 } 4361 type yang:counter32; 4362 description 4363 "The number of responses to unknown requests 4364 received. A response to an unknown request is a 4365 response whose RP object does not contain the 4366 request ID of any request that is currently 4367 outstanding on the session."; 4368 } 4369 leaf num-req-rcvd-unknown { 4370 when "../../pcep:role = 'pcc'" 4371 + "or " 4372 + "../../pcep:role = 'pcc-and-pce'" { 4373 description 4374 "Valid for PCEP Peer as PCC"; 4375 } 4376 type yang:counter32; 4377 description 4378 "The number of unknown requests that have been 4379 received. An unknown request is a request 4380 whose RP object contains a request ID of zero."; 4381 } 4382 container svec { 4383 if-feature "pcep:svec"; 4384 description 4385 "If synchronized path computation is supported"; 4386 leaf num-svec-sent { 4387 when "../../../pcep:role = 'pce'" 4388 + "or " 4389 + "../../../pcep:role = 'pcc-and-pce'" { 4390 description 4391 "Valid for PCEP Peer as PCE"; 4392 } 4393 type yang:counter32; 4394 description 4395 "The number of SVEC objects sent in PCReq messages. 4396 An SVEC object represents a set of synchronized 4397 requests."; 4398 } 4399 leaf num-svec-req-sent { 4400 when "../../../pcep:role = 'pce'" 4401 + "or " 4402 + "../../../pcep:role = 'pcc-and-pce'" { 4403 description 4404 "Valid for PCEP Peer as PCE"; 4405 } 4406 type yang:counter32; 4407 description 4408 "The number of requests sent that appeared in one 4409 or more SVEC objects."; 4410 } 4411 leaf num-svec-rcvd { 4412 when "../../../pcep:role = 'pcc'" 4413 + "or " 4414 + "../../../pcep:role = 'pcc-and-pce'" { 4415 description 4416 "Valid for PCEP Peer as PCC"; 4417 } 4418 type yang:counter32; 4419 description 4420 "The number of SVEC objects received in PCReq 4421 messages. An SVEC object represents a set of 4422 synchronized requests."; 4423 } 4424 leaf num-svec-req-rcvd { 4425 when "../../../pcep:role = 'pcc'" 4426 + "or " 4427 + "../../../pcep:role = 'pcc-and-pce'" { 4428 description 4429 "Valid for PCEP Peer as PCC"; 4430 } 4431 type yang:counter32; 4432 description 4433 "The number of requests received that appeared 4434 in one or more SVEC objects."; 4435 } 4436 } 4437 //svec 4438 container stateful { 4439 if-feature "pcep:stateful"; 4440 description 4441 "Stateful PCE related statistics"; 4442 leaf num-pcrpt-sent { 4443 when "../../../pcep:role = 'pce'" 4444 + "or " 4445 + "../../../pcep:role = 'pcc-and-pce'" { 4446 description 4447 "Valid for PCEP Peer as PCE"; 4448 } 4449 type yang:counter32; 4450 description 4451 "The number of PCRpt messages sent."; 4452 } 4453 leaf num-pcrpt-rcvd { 4454 when "../../../pcep:role = 'pcc'" 4455 + "or " 4456 + "../../../pcep:role = 'pcc-and-pce'" { 4457 description 4458 "Valid for PCEP Peer as PCC"; 4459 } 4460 type yang:counter32; 4461 description 4462 "The number of PCRpt messages received."; 4463 } 4464 leaf num-pcupd-sent { 4465 when "../../../pcep:role = 'pcc'" 4466 + "or " 4467 + "../../../pcep:role = 'pcc-and-pce'" { 4468 description 4469 "Valid for PCEP Peer as PCC"; 4470 } 4471 type yang:counter32; 4472 description 4473 "The number of PCUpd messages sent."; 4474 } 4475 leaf num-pcupd-rcvd { 4476 when "../../../pcep:role = 'pce'" 4477 + "or " 4478 + "../../../pcep:role = 'pcc-and-pce'" { 4479 description 4480 "Valid for PCEP Peer as PCE"; 4481 } 4482 type yang:counter32; 4483 description 4484 "The number of PCUpd messages received."; 4485 } 4486 leaf num-rpt-sent { 4487 when "../../../pcep:role = 'pce'" 4488 + "or " 4489 + "../../../pcep:role = 'pcc-and-pce'" { 4490 description 4491 "Valid for PCEP Peer as PCE"; 4492 } 4493 type yang:counter32; 4494 description 4495 "The number of LSP Reports sent. A LSP report 4496 corresponds 1:1 with an LSP object in a PCRpt 4497 message. This might be greater than 4498 num-pcrpt-sent because multiple reports can 4499 be batched into a single PCRpt message."; 4500 } 4501 leaf num-rpt-rcvd { 4502 when "../../../pcep:role = 'pcc'" 4503 + "or " 4504 + "../../../pcep:role = 'pcc-and-pce'" { 4505 description 4506 "Valid for PCEP Peer as PCC"; 4507 } 4508 type yang:counter32; 4509 description 4510 "The number of LSP Reports received. A LSP report 4511 corresponds 1:1 with an LSP object in a PCRpt 4512 message. 4513 This might be greater than num-pcrpt-rcvd because 4514 multiple reports can be batched into a single 4515 PCRpt message."; 4516 } 4517 leaf num-rpt-rcvd-error-sent { 4518 when "../../../pcep:role = 'pcc'" 4519 + "or " 4520 + "../../../pcep:role = 'pcc-and-pce'" { 4521 description 4522 "Valid for PCEP Peer as PCC"; 4523 } 4524 type yang:counter32; 4525 description 4526 "The number of reports of LSPs received that were 4527 responded by the local PCEP entity by sending a 4528 PCErr message."; 4529 } 4530 leaf num-upd-sent { 4531 when "../../../pcep:role = 'pcc'" 4532 + "or " 4533 + "../../../pcep:role = 'pcc-and-pce'" { 4534 description 4535 "Valid for PCEP Peer as PCC"; 4536 } 4537 type yang:counter32; 4538 description 4539 "The number of LSP updates sent. A LSP update 4540 corresponds 1:1 with an LSP object in a PCUpd 4541 message. This might be greater than 4542 num-pcupd-sent because multiple updates can 4543 be batched into a single PCUpd message."; 4544 } 4545 leaf num-upd-rcvd { 4546 when "../../../pcep:role = 'pce'" 4547 + "or " 4548 + "../../../pcep:role = 'pcc-and-pce'" { 4549 description 4550 "Valid for PCEP Peer as PCE"; 4551 } 4552 type yang:counter32; 4553 description 4554 "The number of LSP Updates received. A LSP update 4555 corresponds 1:1 with an LSP object in a PCUpd 4556 message. 4557 This might be greater than num-pcupd-rcvd because 4558 multiple updates can be batched into a single 4559 PCUpd message."; 4560 } 4561 leaf num-upd-rcvd-unknown { 4562 when "../../../pcep:role = 'pce'" 4563 + "or " 4564 + "../../../pcep:role = 'pcc-and-pce'" { 4565 description 4566 "Valid for PCEP Peer as PCE"; 4567 } 4568 type yang:counter32; 4569 description 4570 "The number of updates to unknown LSPs 4571 received. An update to an unknown LSP is a 4572 update whose LSP object does not contain the 4573 PLSP-ID of any LSP that is currently 4574 present."; 4575 } 4576 leaf num-upd-rcvd-undelegated { 4577 when "../../../pcep:role = 'pce'" 4578 + "or " 4579 + "../../../pcep:role = 'pcc-and-pce'" { 4580 description 4581 "Valid for PCEP Peer as PCE"; 4582 } 4583 type yang:counter32; 4584 description 4585 "The number of updates to not delegated LSPs 4586 received. An update to an undelegated LSP is a 4587 update whose LSP object does not contain the 4588 PLSP-ID of any LSP that is currently 4589 delegated to current PCEP session."; 4590 } 4591 leaf num-upd-rcvd-error-sent { 4592 when "../../../pcep:role = 'pce'" 4593 + "or " 4594 + "../../../pcep:role = 'pcc-and-pce'" { 4595 description 4596 "Valid for PCEP Peer as PCE"; 4597 } 4598 type yang:counter32; 4599 description 4600 "The number of updates to LSPs received that were 4601 responded by the local PCEP entity by sending a 4602 PCErr message."; 4603 } 4604 container initiation { 4605 if-feature "pcep:pce-initiated"; 4606 description 4607 "PCE-Initiated related statistics"; 4608 leaf num-pcinitiate-sent { 4609 when "../../../../pcep:role = 'pcc'" 4610 + "or " 4611 + "../../../../pcep:role = 'pcc-and-pce'" { 4612 description 4613 "Valid for PCEP Peer as PCC"; 4614 } 4615 type yang:counter32; 4616 description 4617 "The number of PCInitiate messages sent."; 4618 } 4619 leaf num-pcinitiate-rcvd { 4620 when "../../../../pcep:role = 'pce'" 4621 + "or " 4622 + "../../../../pcep:role = 'pcc-and-pce'" { 4623 description 4624 "Valid for PCEP Peer as PCE"; 4625 } 4626 type yang:counter32; 4627 description 4628 "The number of PCInitiate messages received."; 4629 } 4630 leaf num-initiate-sent { 4631 when "../../../../pcep:role = 'pcc'" 4632 + "or " 4633 + "../../../../pcep:role = 'pcc-and-pce'" { 4634 description 4635 "Valid for PCEP Peer as PCC"; 4636 } 4637 type yang:counter32; 4638 description 4639 "The number of LSP Initiation sent via PCE. 4640 A LSP initiation corresponds 1:1 with an LSP 4641 object in a PCInitiate message. This might be 4642 greater than num-pcinitiate-sent because 4643 multiple initiations can be batched into a 4644 single PCInitiate message."; 4645 } 4646 leaf num-initiate-rcvd { 4647 when "../../../../pcep:role = 'pce'" 4648 + "or " 4649 + "../../../../pcep:role = 'pcc-and-pce'" { 4650 description 4651 "Valid for PCEP Peer as PCE"; 4652 } 4653 type yang:counter32; 4654 description 4655 "The number of LSP Initiation received from 4656 PCE. A LSP initiation corresponds 1:1 with 4657 an LSP object in a PCInitiate message. This 4658 might be greater than num-pcinitiate-rcvd 4659 because multiple initiations can be batched 4660 into a single PCInitiate message."; 4661 } 4662 leaf num-initiate-rcvd-error-sent { 4663 when "../../../../pcep:role = 'pce'" 4664 + "or " 4665 + "../../../../pcep:role = 'pcc-and-pce'" { 4666 description 4667 "Valid for PCEP Peer as PCE"; 4668 } 4669 type yang:counter32; 4670 description 4671 "The number of initiations of LSPs received 4672 that were responded by the local PCEP entity 4673 by sending a PCErr message."; 4674 } 4675 } 4676 //initiation 4677 } 4678 //stateful 4679 container path-key { 4680 when "../../pcep:role = 'pcc'" 4681 + "or " 4682 + "../../pcep:role = 'pcc-and-pce'" { 4683 description 4684 "Valid for PCEP Peer as PCC"; 4685 } 4686 if-feature "pcep:path-key"; 4687 description 4688 "If Path-Key is supported"; 4689 leaf num-unknown-path-key { 4690 type yang:counter32; 4691 description 4692 "The number of attempts to expand an unknown 4693 path-key."; 4694 } 4695 leaf num-exp-path-key { 4696 type yang:counter32; 4697 description 4698 "The number of attempts to expand an expired 4699 path-key."; 4700 } 4701 leaf num-dup-path-key { 4702 type yang:counter32; 4703 description 4704 "The number of duplicate attempts to expand same 4705 path-key."; 4706 } 4707 leaf num-path-key-no-attempt { 4708 type yang:counter32; 4709 description 4710 "The number of expired path-keys with no attempt to 4711 expand it."; 4712 } 4713 } 4714 //path-key 4715 } 4717 //pcep-stats 4718 /* 4719 * Augment modules to add statistics 4720 */ 4722 augment "/pcep:pcep/pcep:entity/pcep:peers/pcep:peer" { 4723 description 4724 "Augmenting the statistics"; 4725 leaf num-sess-setup-ok { 4726 type yang:counter32; 4727 config false; 4728 description 4729 "The number of PCEP sessions successfully established with 4730 the peer, including any current session. This counter is 4731 incremented each time a session with this peer is 4732 successfully established."; 4733 } 4734 leaf num-sess-setup-fail { 4735 type yang:counter32; 4736 config false; 4737 description 4738 "The number of PCEP sessions with the peer 4739 that have been attempted but failed 4740 before being fully established. This 4741 counter is incremented each time a 4742 session retry to this peer fails."; 4743 } 4744 container pcep-stats { 4745 config false; 4746 description 4747 "The container for all statistics at peer level."; 4748 uses pcep-stats { 4749 description 4750 "Since PCEP sessions can be ephemeral, the peer statistics 4751 tracks a peer even when no PCEP session currently exists 4752 to that peer. The statistics contained are an aggregate of 4753 the statistics for all successive sessions to that peer."; 4754 } 4755 leaf num-req-sent-closed { 4756 when "../../pcep:role = 'pce'" 4757 + "or " 4758 + "../../pcep:role = 'pcc-and-pce'" { 4759 description 4760 "Valid for PCEP Peer as PCE"; 4761 } 4762 type yang:counter32; 4763 description 4764 "The number of requests that were sent to the peer and 4765 implicitly cancelled when the session they were sent 4766 over was closed."; 4767 } 4768 leaf num-req-rcvd-closed { 4769 when "../../pcep:role = 'pcc'" 4770 + "or " 4771 + "../../pcep:role = 'pcc-and-pce'" { 4772 description 4773 "Valid for PCEP Peer as PCC"; 4774 } 4775 type yang:counter32; 4776 description 4777 "The number of requests that were received from the peer 4778 and implicitly cancelled when the session they were 4779 received over was closed."; 4780 } 4781 } 4782 //pcep-stats 4783 } 4785 //augment 4787 augment "/pcep:pcep/pcep:entity/pcep:peers/pcep:peer/" 4788 + "pcep:sessions/pcep:session" { 4789 description 4790 "Augmenting the statistics"; 4791 container pcep-stats { 4792 description 4793 "The container for all statistics at session level."; 4794 uses pcep-stats { 4795 description 4796 "The statistics contained are for the current sessions to 4797 that peer. These are lost when the session goes down."; 4798 } 4799 } 4800 //pcep-stats 4801 } 4802 //augment 4803 } 4805 4807 11. Security Considerations 4809 The YANG modules defined in this document is designed to be accessed 4810 via network management protocol such as NETCONF [RFC6241] or RESTCONF 4811 [RFC8040]. The lowest NETCONF layer is the secure transport layer 4812 and the mandatory-to-implement secure transport is SSH [RFC6242]. 4813 The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement 4814 secure transport is TLS [RFC8446] 4816 The NETCONF access control model [RFC8341] provides the means to 4817 restrict access for particular NETCONF or RESTCONF users to a pre- 4818 configured subset of all available NETCONF or RESTCONF protocol 4819 operations and content. 4821 There are a number of data nodes defined in the ietf-pcep YANG module 4822 which are writable/creatable/deletable (i.e., config true, which is 4823 the default). These data nodes may be considered sensitive or 4824 vulnerable in some network environments. Write operations (e.g., 4825 ) to these data nodes without proper protection can have 4826 a negative effect on network operations. These are the subtrees and 4827 data nodes and their sensitivity/vulnerability: 4829 /pcep/entity/ - configure local parameters, capabilities etc. 4831 /pcep/entity/peers - configure remote peers to setup PCEP session. 4833 Unauthorized access to above list can adversely affect the PCEP 4834 session between the local entity and the peers. This may lead to 4835 inability to compute new paths, stateful operations on the delegated 4836 as well as PCE-initiated LSPs. 4838 Some of the readable data nodes in the ietf-pcep YANG module may be 4839 considered sensitive or vulnerable in some network environments. It 4840 is thus important to control read access (e.g., via get, get-config, 4841 or notification) to these data nodes. These are the subtrees and 4842 data nodes and their sensitivity/vulnerability: 4844 /pcep/lsp-db - All the LSPs in the network. Unauthorized access 4845 to this could provide the all path and network usage information. 4847 /pcep/path-keys/ - The Confidential Path Segments (CPS) are hidden 4848 using path-keys. Unauthorized access to this could leak 4849 confidential path information. 4851 Some of the RPC operations in the ietf-pcep YANG module may be 4852 considered sensitive or vulnerable in some network environments. It 4853 is thus important to control access to these operations. These are 4854 the operations and their sensitivity/vulnerability: 4856 trigger-resync - trigger resynchronization with the PCE. 4857 Unauthorized access to this could force a PCEP session into 4858 continuous state synchronization. 4860 Further, this document also include another YANG module (called ietf- 4861 pcep-stats) for maintaining the statistics by augmenting the ietf- 4862 pcep YANG module. There are no data nodes defined in this module 4863 which are writable/creatable/deletable (i.e., config true). The 4864 readable data nodes in this YANG module may be considered sensitive 4865 or vulnerable in some network environments. The statistics could 4866 provide information related to the current usage patterns of the 4867 network. It is thus important to control read access (e.g., via get, 4868 get-config, or notification). 4870 The actual authentication key data (whether locally specified or part 4871 of a key-chain) is sensitive and needs to be kept secret from 4872 unauthorized parties; compromise of the key data would allow an 4873 attacker to forge PCEP traffic that would be accepted as authentic, 4874 potentially compromising the TE domain. 4876 The model describes several notifications, implementations must rate- 4877 limit the generation of these notifications to avoid creating 4878 significant notification load. Otherwise, this notification load may 4879 have some side effects on the system stability and may be exploited 4880 as an attack vector. 4882 12. IANA Considerations 4884 This document request the IANA to register two URIs in the "IETF XML 4885 Registry" [RFC3688]. Following the format in RFC 3688, the following 4886 registrations are requested - 4888 URI: urn:ietf:params:xml:ns:yang:ietf-pcep 4889 Registrant Contact: The IESG 4890 XML: N/A; the requested URI is an XML namespace. 4892 URI: urn:ietf:params:xml:ns:yang:ietf-pcep-stats 4893 Registrant Contact: The IESG 4894 XML: N/A; the requested URI is an XML namespace. 4896 This document request the IANA to register two YANG modules in the 4897 "YANG Module Names" registry [RFC6020], as follows - 4898 Name: ietf-pcep 4899 Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep 4900 Prefix: pcep 4901 Reference: [This.I-D] 4903 Name: ietf-pcep-stats 4904 Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep-stats 4905 Prefix: pcep-stats 4906 Reference: [This.I-D] 4908 13. Implementation Status 4910 [Note to the RFC Editor - remove this section before publication, as 4911 well as remove the reference to RFC 7942.] 4913 This section records the status of known implementations of the 4914 protocol defined by this specification at the time of posting of this 4915 Internet-Draft, and is based on a proposal described in [RFC7942]. 4916 The description of implementations in this section is intended to 4917 assist the IETF in its decision processes in progressing drafts to 4918 RFCs. Please note that the listing of any individual implementation 4919 here does not imply endorsement by the IETF. Furthermore, no effort 4920 has been spent to verify the information presented here that was 4921 supplied by IETF contributors. This is not intended as, and must not 4922 be construed to be, a catalog of available implementations or their 4923 features. Readers are advised to note that other implementations may 4924 exist. 4926 According to [RFC7942], "this will allow reviewers and working groups 4927 to assign due consideration to documents that have the benefit of 4928 running code, which may serve as evidence of valuable experimentation 4929 and feedback that have made the implemented protocols more mature. 4930 It is up to the individual working groups to use this information as 4931 they see fit". 4933 Currently, there are no known implementations of the YANG Module as 4934 specified. 4936 14. Acknowledgements 4938 The initial document is based on the PCEP MIB [RFC7420]. We would 4939 like to thank the authors of aforementioned documents. 4941 Thanks to Mahesh Jethmalani for the Yang Doctor review. 4943 Thanks to Martin Bjorklund and Tom Petch for providing guidance 4944 regarding the Yang guidelines. 4946 15. References 4948 15.1. Normative References 4950 [I-D.ietf-isis-yang-isis-cfg] 4951 Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. 4952 Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- 4953 isis-yang-isis-cfg-42 (work in progress), October 2019. 4955 [I-D.ietf-netconf-tls-client-server] 4956 Watsen, K. and G. Wu, "YANG Groupings for TLS Clients and 4957 TLS Servers", draft-ietf-netconf-tls-client-server-19 4958 (work in progress), May 2020. 4960 [I-D.ietf-ospf-yang] 4961 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 4962 "YANG Data Model for OSPF Protocol", draft-ietf-ospf- 4963 yang-29 (work in progress), October 2019. 4965 [I-D.ietf-pce-gmpls-pcep-extensions] 4966 Margaria, C., Dios, O., and F. Zhang, "PCEP extensions for 4967 GMPLS", draft-ietf-pce-gmpls-pcep-extensions-16 (work in 4968 progress), December 2019. 4970 [I-D.ietf-teas-yang-te] 4971 Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, 4972 "A YANG Data Model for Traffic Engineering Tunnels and 4973 Interfaces", draft-ietf-teas-yang-te-23 (work in 4974 progress), March 2020. 4976 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 4977 Requirement Levels", BCP 14, RFC 2119, 4978 DOI 10.17487/RFC2119, March 1997, 4979 . 4981 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 4982 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 4983 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 4984 . 4986 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 4987 DOI 10.17487/RFC3688, January 2004, 4988 . 4990 [RFC5088] Le Roux, JL., Ed., Vasseur, JP., Ed., Ikejiri, Y., and R. 4991 Zhang, "OSPF Protocol Extensions for Path Computation 4992 Element (PCE) Discovery", RFC 5088, DOI 10.17487/RFC5088, 4993 January 2008, . 4995 [RFC5089] Le Roux, JL., Ed., Vasseur, JP., Ed., Ikejiri, Y., and R. 4996 Zhang, "IS-IS Protocol Extensions for Path Computation 4997 Element (PCE) Discovery", RFC 5089, DOI 10.17487/RFC5089, 4998 January 2008, . 5000 [RFC5440] Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation 5001 Element (PCE) Communication Protocol (PCEP)", RFC 5440, 5002 DOI 10.17487/RFC5440, March 2009, 5003 . 5005 [RFC5520] Bradford, R., Ed., Vasseur, JP., and A. Farrel, 5006 "Preserving Topology Confidentiality in Inter-Domain Path 5007 Computation Using a Path-Key-Based Mechanism", RFC 5520, 5008 DOI 10.17487/RFC5520, April 2009, 5009 . 5011 [RFC5541] Le Roux, JL., Vasseur, JP., and Y. Lee, "Encoding of 5012 Objective Functions in the Path Computation Element 5013 Communication Protocol (PCEP)", RFC 5541, 5014 DOI 10.17487/RFC5541, June 2009, 5015 . 5017 [RFC5557] Lee, Y., Le Roux, JL., King, D., and E. Oki, "Path 5018 Computation Element Communication Protocol (PCEP) 5019 Requirements and Protocol Extensions in Support of Global 5020 Concurrent Optimization", RFC 5557, DOI 10.17487/RFC5557, 5021 July 2009, . 5023 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 5024 the Network Configuration Protocol (NETCONF)", RFC 6020, 5025 DOI 10.17487/RFC6020, October 2010, 5026 . 5028 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 5029 and A. Bierman, Ed., "Network Configuration Protocol 5030 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 5031 . 5033 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 5034 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 5035 . 5037 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 5038 RFC 6991, DOI 10.17487/RFC6991, July 2013, 5039 . 5041 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 5042 RFC 7950, DOI 10.17487/RFC7950, August 2016, 5043 . 5045 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 5046 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 5047 . 5049 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 5050 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 5051 May 2017, . 5053 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 5054 Zhang, "YANG Data Model for Key Chains", RFC 8177, 5055 DOI 10.17487/RFC8177, June 2017, 5056 . 5058 [RFC8231] Crabbe, E., Minei, I., Medved, J., and R. Varga, "Path 5059 Computation Element Communication Protocol (PCEP) 5060 Extensions for Stateful PCE", RFC 8231, 5061 DOI 10.17487/RFC8231, September 2017, 5062 . 5064 [RFC8232] Crabbe, E., Minei, I., Medved, J., Varga, R., Zhang, X., 5065 and D. Dhody, "Optimizations of Label Switched Path State 5066 Synchronization Procedures for a Stateful PCE", RFC 8232, 5067 DOI 10.17487/RFC8232, September 2017, 5068 . 5070 [RFC8253] Lopez, D., Gonzalez de Dios, O., Wu, Q., and D. Dhody, 5071 "PCEPS: Usage of TLS to Provide a Secure Transport for the 5072 Path Computation Element Communication Protocol (PCEP)", 5073 RFC 8253, DOI 10.17487/RFC8253, October 2017, 5074 . 5076 [RFC8281] Crabbe, E., Minei, I., Sivabalan, S., and R. Varga, "Path 5077 Computation Element Communication Protocol (PCEP) 5078 Extensions for PCE-Initiated LSP Setup in a Stateful PCE 5079 Model", RFC 8281, DOI 10.17487/RFC8281, December 2017, 5080 . 5082 [RFC8306] Zhao, Q., Dhody, D., Ed., Palleti, R., and D. King, 5083 "Extensions to the Path Computation Element Communication 5084 Protocol (PCEP) for Point-to-Multipoint Traffic 5085 Engineering Label Switched Paths", RFC 8306, 5086 DOI 10.17487/RFC8306, November 2017, 5087 . 5089 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 5090 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 5091 . 5093 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 5094 Access Control Model", STD 91, RFC 8341, 5095 DOI 10.17487/RFC8341, March 2018, 5096 . 5098 [RFC8408] Sivabalan, S., Tantsura, J., Minei, I., Varga, R., and J. 5099 Hardwick, "Conveying Path Setup Type in PCE Communication 5100 Protocol (PCEP) Messages", RFC 8408, DOI 10.17487/RFC8408, 5101 July 2018, . 5103 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 5104 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 5105 . 5107 [RFC8664] Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W., 5108 and J. Hardwick, "Path Computation Element Communication 5109 Protocol (PCEP) Extensions for Segment Routing", RFC 8664, 5110 DOI 10.17487/RFC8664, December 2019, 5111 . 5113 [RFC8697] Minei, I., Crabbe, E., Sivabalan, S., Ananthakrishnan, H., 5114 Dhody, D., and Y. Tanaka, "Path Computation Element 5115 Communication Protocol (PCEP) Extensions for Establishing 5116 Relationships between Sets of Label Switched Paths 5117 (LSPs)", RFC 8697, DOI 10.17487/RFC8697, January 2020, 5118 . 5120 [RFC8776] Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, 5121 "Common YANG Data Types for Traffic Engineering", 5122 RFC 8776, DOI 10.17487/RFC8776, June 2020, 5123 . 5125 15.2. Informative References 5127 [RFC4655] Farrel, A., Vasseur, J., and J. Ash, "A Path Computation 5128 Element (PCE)-Based Architecture", RFC 4655, 5129 DOI 10.17487/RFC4655, August 2006, 5130 . 5132 [RFC7420] Koushik, A., Stephan, E., Zhao, Q., King, D., and J. 5133 Hardwick, "Path Computation Element Communication Protocol 5134 (PCEP) Management Information Base (MIB) Module", 5135 RFC 7420, DOI 10.17487/RFC7420, December 2014, 5136 . 5138 [RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running 5139 Code: The Implementation Status Section", BCP 205, 5140 RFC 7942, DOI 10.17487/RFC7942, July 2016, 5141 . 5143 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 5144 and R. Wilton, "Network Management Datastore Architecture 5145 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 5146 . 5148 Appendix A. Example 5150 The example below provide an overview of PCEP peer session 5151 informations and LSP-DB in the Yang Module. 5153 +-------+ +-------+ 5154 | | | | 5155 | PCC1 |<---------------->| | 5156 | | | | 5157 +-------+ | | 5158 IP:192.0.2.1 | | 5159 | PCE | 5160 | | 5161 +-------+ | | 5162 | | | | 5163 | PCC2 |<---------------->| | 5164 | | | | 5165 +-------+ | | 5166 IP:192.0.2.2 | | 5167 | | 5168 | | 5169 +-------+ | | 5170 | | | | 5171 | PCC4 |<---------------->| | 5172 | | | | 5173 +-------+ | | 5174 IP:2001:DB8::4 | | 5175 +-------+ 5176 IP:192.0.2.3 5177 2001:DB8::3 5179 at PCE: 5180 { 5181 "entity": [ 5182 { 5183 "addr": "192.0.2.3", 5184 "oper-status": "oper-status-up", 5185 "role":"pce", 5186 "capability" : { 5187 "stateful": { 5188 "enabled": true 5189 } 5190 } 5191 "lsp-db" : [ 5192 "lsp" : { 5193 "plsp-id": 3, 5194 "pcc-id" :"192.0.2.1", 5195 "source": "192.0.2.1", 5196 "destination": "192.0.2.4" 5197 "tunnel-id": 16, 5198 "lsp-id": 3, 5199 "extended-tunnel-id": 0, 5200 "oper-status": "oper-status-up", 5201 "delegated": true, 5202 "symbolic-path-name": "iewauh", 5203 }, 5204 "lsp" : { 5205 "plsp-id": 4, 5206 "pcc-id" :"192.0.2.2", 5207 "source": "192.0.2.2", 5208 "destination": "192.0.2.5" 5209 "tunnel-id": 17, 5210 "lsp-id": 4 5211 "extended-tunnel-id": 0, 5212 "oper-status": "oper-status-up", 5213 "delegated": true, 5214 "symbolic-path-name": "iewauhiewauh", 5215 "extended-tunnel-id": 0 5216 } 5217 ] 5218 "peers":[ 5219 { 5220 "peer": { 5221 "addr":"192.0.2.1", 5222 "role": "pcc", 5224 "capability": { 5225 "stateful" : { 5226 "enabled": true, 5227 "active": yes, 5228 } 5229 } 5230 "sessions": [ 5231 { 5232 "session": { 5233 "initiator": "remote", 5234 "role": "pcc", 5235 } 5236 } 5237 ] 5238 } 5239 }, 5240 { 5241 "peer": { 5242 "addr":"192.0.2.2", 5243 "role": "pcc", 5245 "capability": { 5246 "stateful" : { 5247 "enabled": true, 5248 "active": true, 5249 } 5250 } 5251 "sessions": [ 5252 { 5253 "session": { 5254 "initiator": "remote", 5255 "role": "pcc", 5256 } 5257 } 5258 ] 5259 } 5260 } 5261 ] 5262 }, 5264 { 5265 "addr": "2001:DB8::3", 5266 "oper-status": "oper-status-up", 5267 "role":"pce", 5268 "peers":[ 5269 { 5270 "peer": { 5271 "addr":"2001:DB8::4", 5272 "role": "pcc", 5273 "sessions": [ 5274 { 5275 "session": { 5276 "initiator": "remote", 5277 "role": "pcc", 5278 } 5279 } 5280 ] 5281 } 5282 } 5283 ] 5284 } 5285 } 5287 Appendix B. Contributor Addresses 5289 Rohit Pobbathi 5290 Huawei Technologies 5291 Divyashree Techno Park, Whitefield 5292 Bangalore, Karnataka 560066 5293 India 5295 EMail: rohit.pobbathi@huawei.com 5297 Vinod KumarS 5298 Huawei Technologies 5299 Divyashree Techno Park, Whitefield 5300 Bangalore, Karnataka 560066 5301 India 5303 EMail: vinods.kumar@huawei.com 5305 Zafar Ali 5306 Cisco Systems 5307 Canada 5309 EMail: zali@cisco.com 5311 Xufeng Liu 5312 Volta Networks 5314 EMail: xufeng.liu.ietf@gmail.com 5316 Young Lee 5317 Futurewei 5318 5340 Legacy Drive, Building 3 5319 Plano, TX 75023 5320 USA 5322 EMail: younglee.tx@gmail.com 5324 Udayasree Palle 5326 EMail: udayasreereddy@gmail.com 5328 Xian Zhang 5329 Huawei Technologies 5330 Bantian, Longgang District 5331 Shenzhen 518129 5332 P.R.China 5334 EMail: zhang.xian@huawei.com 5335 Avantika 5336 ECI Telecom 5337 India 5339 EMail: avantika.srm@gmail.com 5341 Shashikanth 5342 Huawei Technologies 5343 Divyashree Techno Park, Whitefield 5344 Bangalore, Karnataka 560066 5345 India 5347 EMail: shashikanth.vh@huawei.com 5349 Authors' Addresses 5351 Dhruv Dhody (editor) 5352 Huawei Technologies 5353 Divyashree Techno Park, Whitefield 5354 Bangalore, Karnataka 560066 5355 India 5357 EMail: dhruv.ietf@gmail.com 5359 Jonathan Hardwick 5360 Metaswitch 5361 100 Church Street 5362 Enfield EN2 6BQ 5363 UK 5365 EMail: jonathan.hardwick@metaswitch.com 5367 Vishnu Pavan Beeram 5368 Juniper Networks 5369 USA 5371 EMail: vbeeram@juniper.net 5373 Jeff Tantsura 5374 Apstra, Inc. 5375 USA 5377 EMail: jefftant@gmail.com