idnits 2.17.1 draft-ietf-pce-pcep-yang-15.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 439 has weird spacing: '...in-type dom...' == Line 466 has weird spacing: '...in-type dom...' == Line 491 has weird spacing: '...ax-rate uin...' == Line 498 has weird spacing: '...--rw of ide...' == Line 507 has weird spacing: '...-source uin...' == (23 more instances...) -- The document date (October 31, 2020) is 1273 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-22 == Outdated reference: A later version (-36) exists of draft-ietf-teas-yang-te-25 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: May 4, 2021 Metaswitch 6 V. Beeram 7 Juniper Networks 8 J. Tantsura 9 Apstra, Inc. 10 October 31, 2020 12 A YANG Data Model for Path Computation Element Communications Protocol 13 (PCEP) 14 draft-ietf-pce-pcep-yang-15 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 May 4, 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 8.2. LSP-ID . . . . . . . . . . . . . . . . . . . . . . . . . 28 79 9. Other Considerations . . . . . . . . . . . . . . . . . . . . 28 80 9.1. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 28 81 10. PCEP YANG Modules . . . . . . . . . . . . . . . . . . . . . . 28 82 10.1. ietf-pcep module . . . . . . . . . . . . . . . . . . . . 28 83 10.2. ietf-pcep-stats module . . . . . . . . . . . . . . . . . 83 84 11. Security Considerations . . . . . . . . . . . . . . . . . . . 101 85 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 102 86 13. Implementation Status . . . . . . . . . . . . . . . . . . . . 103 87 14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 104 88 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 104 89 15.1. Normative References . . . . . . . . . . . . . . . . . . 104 90 15.2. Informative References . . . . . . . . . . . . . . . . . 108 91 Appendix A. Example . . . . . . . . . . . . . . . . . . . . . . 109 92 Appendix B. Contributor Addresses . . . . . . . . . . . . . . . 112 93 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 113 95 1. Introduction 97 The Path Computation Element (PCE) defined in [RFC4655] is an entity 98 that is capable of computing a network path or route based on a 99 network graph, and applying computational constraints. A Path 100 Computation Client (PCC) may make requests to a PCE for paths to be 101 computed. 103 PCEP is the communication protocol between a PCC and PCE and is 104 defined in [RFC5440]. PCEP interactions include path computation 105 requests and path computation replies as well as notifications of 106 specific states related to the use of a PCE in the context of 107 Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) 108 Traffic Engineering (TE). [RFC8231] specifies extensions to PCEP to 109 enable stateful control of MPLS TE LSPs. 111 This document defines a YANG [RFC7950] data model for the management 112 of PCEP speakers. It is important to establish a common data model 113 for how PCEP speakers are identified, configured, and monitored. The 114 data model includes configuration data and state data. 116 This document contains a specification of the PCEP YANG module, 117 "ietf-pcep" which provides the PCEP [RFC5440] data model. 119 The PCEP operational state is included in the same tree as the PCEP 120 configuration consistent with Network Management Datastore 121 Architecture [RFC8342]. The origin of the data is indicated as per 122 the origin metadata annotation. 124 2. Requirements Language 126 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 127 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 128 "OPTIONAL" in this document are to be interpreted as described in BCP 129 14 [RFC2119] [RFC8174] when, and only when, they appear in all 130 capitals, as shown here. 132 3. Terminology and Notation 134 This document uses the terminology defined in [RFC4655] and 135 [RFC5440]. In particular, it uses the following acronyms. 137 o Path Computation Request message (PCReq). 139 o Path Computation Reply message (PCRep). 141 o Notification message (PCNtf). 143 o Error message (PCErr). 145 o Request Parameters object (RP). 147 o Synchronization Vector object (SVEC). 149 o Explicit Route object (ERO). 151 This document also uses the following terms defined in [RFC7420]: 153 o PCEP entity: a local PCEP speaker. 155 o PCEP peer: to refer to a remote PCEP speaker. 157 o PCEP speaker: where it is not necessary to distinguish between 158 local and remote. 160 Further, this document also uses the following terms defined in 161 [RFC8231] : 163 o Stateful PCE, Passive Stateful PCE, Active Stateful PCE 165 o Delegation, Revocation, Redelegation 167 o LSP State Report, Path Computation Report message (PCRpt). 169 o LSP State Update, Path Computation Update message (PCUpd). 171 [RFC8281] : 173 o PCE-initiated LSP, Path Computation LSP Initiate Message 174 (PCInitiate). 176 [RFC8408] : 178 o Path Setup Type (PST). 180 [RFC8664] : 182 o Segment Routing (SR). 184 [RFC6241] : 186 o Configuration data. 188 o State data. 190 3.1. Tree Diagrams 192 A simplified graphical representation of the data model is used in 193 this document. The meaning of the symbols in these diagrams is 194 defined in [RFC8340]. 196 3.2. Prefixes in Data Node Names 198 In this document, names of data nodes and other data model objects 199 are often used without a prefix, as long as it is clear from the 200 context in which YANG module each name is defined. Otherwise, names 201 are prefixed using the standard prefix associated with the 202 corresponding YANG module, as shown in Table 1. 204 +----------+------------------+-------------------------------------+ 205 | Prefix | YANG module | Reference | 206 +----------+------------------+-------------------------------------+ 207 | yang | ietf-yang-types | [RFC6991] | 208 | inet | ietf-inet-types | [RFC6991] | 209 | te | ietf-te | [I-D.ietf-teas-yang-te] | 210 | te-types | ietf-te-types | [RFC8776] | 211 | key- | ietf-key-chain | [RFC8177] | 212 | chain | | | 213 | nacm | ietf-netconf-acm | [RFC8341] | 214 | tlss | ietf-tls-server | [I-D.ietf-netconf-tls-client-server | 215 | | | ] | 216 | tlsc | ietf-tls-client | [I-D.ietf-netconf-tls-client-server | 217 | | | ] | 218 | ospf | ietf-ospf | [I-D.ietf-ospf-yang] | 219 | isis | ietf-isis | [I-D.ietf-isis-yang-isis-cfg] | 220 +----------+------------------+-------------------------------------+ 222 Table 1: Prefixes and corresponding YANG modules 224 3.3. Refrences in the Model 226 Following documents are refrenced in the model defined in this 227 document - 229 +----------------------------+--------------------------------------+ 230 | Documents | Reference | 231 +----------------------------+--------------------------------------+ 232 | RSVP-TE: Extensions to | [RFC3209] | 233 | RSVP for LSP Tunnels | | 234 | OSPF Protocol Extensions | [RFC5088] | 235 | for Path Computation | | 236 | Element (PCE) Discovery | | 237 | IS-IS Protocol Extensions | [RFC5089] | 238 | for Path Computation | | 239 | Element (PCE) Discovery | | 240 | Path Computation Element | [RFC5440] | 241 | (PCE) Communication | | 242 | Protocol (PCEP) | | 243 | Preserving Topology | [RFC5520] | 244 | Confidentiality in Inter- | | 245 | Domain Path Computation | | 246 | Using a Path-Key-Based | | 247 | Mechanism | | 248 | Encoding of Objective | [RFC5541] | 249 | Functions in the Path | | 250 | Computation Element | | 251 | Communication Protocol | | 252 | (PCEP) | | 253 | Path Computation Element | [RFC5557] | 254 | Communication Protocol | | 255 | (PCEP) Requirements and | | 256 | Protocol Extensions in | | 257 | Support of Global | | 258 | Concurrent Optimization | | 259 | Common YANG Data Types | [RFC6991] | 260 | YANG Data Model for Key | [RFC8177] | 261 | Chains | | 262 | Path Computation Element | [RFC8231] | 263 | Communication Protocol | | 264 | (PCEP) Extensions for | | 265 | Stateful PCE | | 266 | Optimizations of Label | [RFC8232] | 267 | Switched Path State | | 268 | Synchronization Procedures | | 269 | for a Stateful PCE | | 270 | PCEPS: Usage of TLS to | [RFC8253] | 271 | Provide a Secure Transport | | 272 | for the Path Computation | | 273 | Element Communication | | 274 | Protocol (PCEP) | | 275 | Path Computation Element | [RFC8281] | 276 | Communication Protocol | | 277 | (PCEP) Extensions for PCE- | | 278 | Initiated LSP Setup in a | | 279 | Stateful PCE Model | | 280 | Extensions to the Path | [RFC8306] | 281 | Computation Element | | 282 | Communication Protocol | | 283 | (PCEP) for Point-to- | | 284 | Multipoint Traffic | | 285 | Engineering Label Switched | | 286 | Paths | | 287 | Network Configuration | [RFC8341] | 288 | Access Control Model | | 289 | Conveying Path Setup Type | [RFC8408] | 290 | in PCE Communication | | 291 | Protocol (PCEP) Messages | | 292 | Traffic Engineering Common | [RFC8776] | 293 | YANG Types | | 294 | A YANG Data Model for | [I-D.ietf-teas-yang-te] | 295 | Traffic Engineering | | 296 | Tunnels and Interfaces | | 297 | YANG Groupings for TLS | [I-D.ietf-netconf-tls-client-server] | 298 | Clients and TLS Servers | | 299 | PCEP Extensions for | [RFC8664] | 300 | Segment Routing | | 301 | PCEP Extensions for | [RFC8697] | 302 | Establishing Relationships | | 303 | Between Sets of LSPs | | 304 | YANG Data Model for OSPF | [I-D.ietf-ospf-yang] | 305 | Protocol | | 306 | YANG Data Model for IS-IS | [I-D.ietf-isis-yang-isis-cfg] | 307 | Protocol | | 308 | PCEP extensions for GMPLS | [RFC8779] | 309 +----------------------------+--------------------------------------+ 311 Table 2: Refrences in the YANG modules 313 4. Objectives 315 This section describes some of the design objectives for the model: 317 o In case of existing implementations, it needs to map the data 318 model defined in this document to their proprietary native data 319 model. To facilitate such mappings, the data model should be 320 simple. 322 o The data model should be suitable for new implementations to use 323 as is. 325 o Mapping to the PCEP MIB Module should be clear. 327 o The data model should allow for static configurations of peers. 329 o The data model should include read-only counters in order to 330 gather statistics for sent and received PCEP messages, received 331 messages with errors, and messages that could not be sent due to 332 errors. This could be in a separate model which augments the base 333 data model. 335 o It should be fairly straightforward to augment the base data model 336 for advanced PCE features. 338 5. The Design of PCEP Data Model 340 5.1. The Overview of PCEP Data Model 342 The PCEP YANG module defined in this document has all the common 343 building blocks for the PCEP protocol. 345 module: ietf-pcep 346 +--rw pcep! 347 +--rw entity 348 +--rw addr inet:ip-address 349 +--rw enabled? boolean 350 +--rw role pcep-role 351 +--rw description? string 352 +--rw speaker-entity-id? string 353 | {stateful-sync-opt}? 354 +--rw admin-status? pcep-admin-status 355 +--ro index? uint32 356 +--ro oper-status? pcep-oper-status 357 +--rw domain 358 | +--rw domain* [domain-type domain] 359 | ... 360 +--rw capability 362 | ... 363 +--rw pce-info 364 | +--rw scope 365 | | ... 366 | +--rw neigh-domains 367 | | ... 368 | +--rw path-key {path-key}? 369 | ... 371 +--ro lsp-db {stateful}? 372 | +--ro db-ver? uint64 373 | | {stateful-sync-opt}? 374 | +--ro association-list* 375 | | [id source global-source extended-id] 376 | | ... 377 | +--ro lsp* [plsp-id pcc-id lsp-id] 378 | ... 379 +--ro path-keys {path-key}? 380 | +--ro path-keys* [path-key] 381 | ... 382 +--rw peers 383 +--rw peer* [addr] 385 +--ro sessions 386 +--ro session* [initiator] 387 ... 389 rpcs: 390 +---x trigger-resync {stateful,stateful-sync-opt}? 391 +---w input 392 +---w pcc? -> /pcep/entity/peers/peer/addr 394 notifications: 395 +---n pcep-session-up 396 | ... 397 +---n pcep-session-down 398 | ... 399 +---n pcep-session-local-overload 400 | ... 401 +---n pcep-session-local-overload-clear 402 | ... 403 +---n pcep-session-peer-overload 404 | ... 405 +---n pcep-session-peer-overload-clear 406 ... 408 5.2. The Entity 410 The PCEP yang module may contain status information for the local 411 PCEP entity. 413 The entity has an IP address (using ietf-inet-types [RFC6991]) and a 414 "role" leaf (the local entity PCEP role) as mandatory. 416 Note that, the PCEP MIB module [RFC7420] uses an entity list and a 417 system generated entity index as a primary index to the read only 418 entity table. If the device implements the PCEP MIB, the "index" 419 leaf MUST contain the value of the corresponding pcePcepEntityIndex 420 and only one entity is assumed. 422 The various information related to this entity such as its domain, 423 capcabilities etc. Further incase when the entity is PCE it could 424 also have path-key and the LSP-DB information. 426 module: ietf-pcep 427 +--rw pcep! 428 +--rw entity 429 +--rw addr inet:ip-address 430 +--rw enabled? boolean 431 +--rw role pcep-role 432 +--rw description? string 433 +--rw speaker-entity-id? string {sync-opt}? 434 +--rw admin-status? boolean 435 +--ro index? uint32 436 +--ro oper-status? pcep-oper-status 437 +--rw domain 438 | +--rw domain* [domain-type domain] 439 | +--rw domain-type domain-type 440 | +--rw domain domain 441 +--rw capability 442 | +--rw capability? bits 443 | +--rw pce-initiated? boolean {pce-initiated}? 444 | +--rw include-db-ver? boolean 445 | | {stateful,sync-opt}? 446 | +--rw trigger-resync? boolean 447 | | {stateful,sync-opt}? 448 | +--rw trigger-initial-sync? boolean 449 | | {stateful,sync-opt}? 450 | +--rw incremental-sync? boolean 451 | | {stateful,sync-opt}? 452 | +--rw sr {sr}? 453 | +--rw enabled? boolean 454 | +--rw msd-limit? boolean 455 | +--rw nai? boolean 456 +--rw msd? uint8 {sr}? 457 +--rw pce-info 458 | +--rw scope 459 | | +--rw path-scope? bits 460 | | +--rw intra-area-pref? uint8 461 | | +--rw inter-area-pref? uint8 462 | | +--rw inter-as-pref? uint8 463 | | +--rw inter-layer-pref? uint8 464 | +--rw neigh-domains 465 | | +--rw domain* [domain-type domain] 466 | | +--rw domain-type domain-type 467 | | +--rw domain domain 468 | +--rw path-key {path-key}? 469 | +--rw enabled? boolean 470 | +--rw discard-timer? uint32 471 | +--rw reuse-time? uint32 472 | +--rw pce-id? inet:ip-address 473 +--rw connect-timer? uint16 474 +--rw connect-max-retry? uint32 475 +--rw init-backoff-timer? uint16 476 +--rw max-backoff-timer? uint32 477 +--rw open-wait-timer? uint16 478 +--rw keep-wait-timer? uint16 479 +--rw keep-alive-timer? uint8 480 +--rw dead-timer? uint8 481 +--rw allow-negotiation? boolean 482 +--rw max-keep-alive-timer? uint8 483 +--rw max-dead-timer? uint8 484 +--rw min-keep-alive-timer? uint8 485 +--rw min-dead-timer? uint8 486 +--rw sync-timer? uint16 {svec}? 487 +--rw request-timer? uint16 488 +--rw max-sessions? uint32 489 +--rw max-unknown-reqs? uint32 490 +--rw max-unknown-msgs? uint32 491 +--rw pcep-notification-max-rate uint32 492 +--rw stateful-parameter {stateful}? 493 | +--rw state-timeout? uint32 494 | +--rw redelegation-timeout? uint32 495 | +--rw rpt-non-pcep-lsp? boolean 496 +--rw of-list {objective-function}? 497 | +--rw objective-function* [of] 498 | +--rw of identityref 499 +--ro lsp-db {stateful}? 500 | +--ro db-ver? uint64 {sync-opt}? 501 | +--ro association-list* 502 | | [type id source global-source extended-id] 503 | | {association}? 504 | | +--ro type identityref 505 | | +--ro id uint16 506 | | +--ro source inet:ip-address 507 | | +--ro global-source uint32 508 | | +--ro extended-id string 509 | | +--ro lsp* [plsp-id pcc-id lsp-id] 510 | | +--ro plsp-id -> /pcep/entity/lsp-db/lsp/plsp-id 511 | | +--ro pcc-id -> /pcep/entity/lsp-db/lsp/pcc-id 512 | | +--ro lsp-id -> /pcep/entity/lsp-db/lsp/lsp-id 513 | +--ro lsp* [plsp-id pcc-id lsp-id] 514 | +--ro plsp-id uint32 515 | +--ro pcc-id inet:ip-address 516 | +--ro source? 517 | | -> /te:te/lsps/lsp/source 518 | +--ro destination? 519 | | -> /te:te/lsps/lsp/destination 520 | +--ro tunnel-id? 521 | | -> /te:te/lsps/lsp/tunnel-id 522 | +--ro lsp-id 523 | | -> /te:te/lsps/lsp/lsp-id 524 | +--ro extended-tunnel-id? 525 | | -> /te:te/lsps/lsp/extended-tunnel-id 526 | +--ro admin-state? boolean 527 | +--ro operational-state? operational-state 528 | +--ro delegated 529 | | +--ro enabled? boolean 530 | | +--ro peer? -> /pcep/entity/peers/peer/addr 531 | | +--ro srp-id? uint32 532 | +--ro initiation {pce-initiated}? 533 | | +--ro enabled? boolean 534 | | +--ro peer? -> /pcep/entity/peers/peer/addr 535 | +--ro symbolic-path-name? string 536 | +--ro last-error? identityref 537 | +--ro pst? identityref 538 | +--ro association-list* 539 | [type id source global-source extended-id] 540 | {association}? 541 | +--ro type 542 | | -> /pcep/entity/lsp-db/association-list/type 543 | +--ro id 544 | | -> /pcep/entity/lsp-db/association-list/id 545 | +--ro source leafref 546 | +--ro global-source leafref 547 | +--ro extended-id leafref 548 +--ro path-keys {path-key}? 549 | +--ro path-keys* [path-key] 550 | +--ro path-key uint16 551 | +--ro cps 552 | | +--ro explicit-route-objects* [index] 553 | | +--ro index uint32 554 | | +--ro (type)? 555 | | +--:(numbered-node-hop) 556 | | | +--ro numbered-node-hop 557 | | | +--ro node-id te-node-id 558 | | | +--ro hop-type? te-hop-type 559 | | +--:(numbered-link-hop) 560 | | | +--ro numbered-link-hop 561 | | | +--ro link-tp-id te-tp-id 562 | | | +--ro hop-type? te-hop-type 563 | | | +--ro direction? te-link-direction 564 | | +--:(unnumbered-link-hop) 565 | | | +--ro unnumbered-link-hop 566 | | | +--ro link-tp-id te-tp-id 567 | | | +--ro node-id te-node-id 568 | | | +--ro hop-type? te-hop-type 569 | | | +--ro direction? te-link-direction 570 | | +--:(as-number) 571 | | | +--ro as-number-hop 572 | | | +--ro as-number inet:as-number 573 | | | +--ro hop-type? te-hop-type 574 | | +--:(label) 575 | | +--ro label-hop 576 | | +--ro te-label 577 | | +--ro (technology)? 578 | | | +--:(generic) 579 | | | ... 580 | | +--ro direction? 581 | | te-label-direction 582 | +--ro pcc-original? -> /pcep/entity/peers/peer/addr 583 | +--ro req-id? uint32 584 | +--ro retrieved? boolean 585 | +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr 586 | +--ro creation-time? yang:timestamp 587 | +--ro discard-time? uint32 588 | +--ro reuse-time? uint32 589 +--rw peers 590 +--rw peer* [addr] 591 ... 593 5.3. The Peer Lists 595 The peer list contains peer(s) that the local PCEP entity knows 596 about. A PCEP speaker is identified by its IP address. If there is 597 a PCEP speaker in the network that uses multiple IP addresses then it 598 looks like multiple distinct peers to the other PCEP speakers in the 599 network. 601 Since PCEP sessions can be ephemeral, the peer list tracks a peer 602 even when no PCEP session currently exists to that peer. The 603 statistics contained are an aggregate of the statistics for all 604 successive sessions to that peer. 606 To limit the quantity of information that is stored, an 607 implementation MAY choose to discard this information if and only if 608 no PCEP session exists to the corresponding peer. 610 The data model for PCEP peer presented in this document uses a flat 611 list of peers. Each peer in the list is identified by its IP address 612 (addr-type, addr). 614 There is a list for static peer configuration and operational state 615 of all peers (i.e.static as well as discovered)("/pcep/entity/ 616 peers"). The list is used to enable remote PCE configuration at PCC 617 (or PCE) and has the operational state of these peers as well as the 618 remote PCE peer which were discovered and PCC peers that have 619 initiated session. 621 module: ietf-pcep 622 +--rw pcep! 623 +--rw entity 624 ... 625 +--rw peers 626 +--rw peer* [addr] 627 +--rw addr inet:ip-address 628 +--rw role pcep-role 629 +--rw description? string 630 +--rw domain 631 | +--rw domain* [domain-type domain] 632 | +--rw domain-type domain-type 633 | +--rw domain domain 634 +--rw capability 635 | +--rw capability? bits 636 | +--rw pce-initiated? boolean 637 | | {pce-initiated}? 638 | +--rw include-db-ver? boolean 639 | | {stateful,sync-opt}? 640 | +--rw trigger-resync? boolean 641 | | {stateful,sync-opt}? 642 | +--rw trigger-initial-sync? boolean 643 | | {stateful,sync-opt}? 644 | +--rw incremental-sync? boolean 645 | | {stateful,sync-opt}? 646 | +--rw sr {sr}? 647 | +--rw enabled? boolean 648 | +--rw msd-limit? boolean 649 | +--rw nai? boolean 650 +--rw msd? uint8 {sr}? 651 +--rw pce-info 652 | +--rw scope 653 | | +--rw path-scope? bits 654 | | +--rw intra-area-pref? uint8 655 | | +--rw inter-area-pref? uint8 656 | | +--rw inter-as-pref? uint8 657 | | +--rw inter-layer-pref? uint8 658 | +--rw neigh-domains 659 | +--rw domain* [domain-type domain] 660 | +--rw domain-type domain-type 661 | +--rw domain domain 662 +--rw delegation-pref? uint8 {stateful}? 663 +--rw auth 664 | +--rw (auth-type-selection)? 665 | +--:(auth-key-chain) 666 | | +--rw key-chain? 667 | | key-chain:key-chain-ref 668 | +--:(auth-key) 669 | | +--rw crypto-algorithm identityref 670 | | +--rw (key-string-style)? 671 | | +--:(keystring) 672 | | | +--rw keystring? string 673 | | +--:(hexadecimal) 674 | | {key-chain:hex-key-string}? 675 | | +--rw hexadecimal-string? 676 | | yang:hex-string 677 | +--:(auth-tls) {tls}? 678 | +--rw (role)? 679 | +--:(server) 680 | | +--rw tls-server 681 | | ... 682 | +--:(client) 683 | +--rw tls-client 684 | ... 685 +--ro discontinuity-time? yang:timestamp 686 +--ro initiate-session? boolean 687 +--ro session-exists? boolean 688 +--ro session-up-time? yang:timestamp 689 +--ro session-fail-time? yang:timestamp 690 +--ro session-fail-up-time? yang:timestamp 691 +--ro sessions 692 +--ro session* [initiator] 693 ... 695 5.4. The Session Lists 697 The session list contains PCEP session that the PCEP entity (PCE or 698 PCC) is currently participating in. The statistics in session are 699 semantically different from those in peer since the former applies to 700 the current session only, whereas the latter is the aggregate for all 701 sessions that have existed to that peer. 703 Although [RFC5440] forbids more than one active PCEP session between 704 a given pair of PCEP entities at any given time, there is a window 705 during session establishment where two sessions may exist for a given 706 pair, one representing a session initiated by the local PCEP entity 707 and the other representing a session initiated by the peer. If 708 either of these sessions reaches active state first, then the other 709 is discarded. 711 The data model for PCEP session presented in this document uses a 712 flat list of sessions. Each session in the list is identified by its 713 initiator. This index allows two sessions to exist transiently for a 714 given peer, as discussed above. 716 module: ietf-pcep 717 +--rw pcep! 718 +--rw entity 719 ... 720 +--rw peers 721 +--rw peer* [addr] 722 ... 723 +--ro sessions 724 +--ro session* [initiator] 725 +--ro initiator pcep-initiator 726 +--ro role? 727 | -> /pcep/entity/role 728 +--ro state-last-change? yang:timestamp 729 +--ro state? pcep-sess-state 730 +--ro session-creation? yang:timestamp 731 +--ro connect-retry? yang:counter32 732 +--ro local-id? uint8 733 +--ro remote-id? uint8 734 +--ro keepalive-timer? uint8 735 +--ro peer-keepalive-timer? uint8 736 +--ro dead-timer? uint8 737 +--ro peer-dead-timer? uint8 738 +--ro ka-hold-time-rem? uint8 739 +--ro overloaded? boolean 740 +--ro overload-time? uint32 741 +--ro peer-overloaded? boolean 742 +--ro peer-overload-time? uint32 743 +--ro lspdb-sync? sync-state 744 | {stateful}? 745 +--ro recv-db-ver? uint64 746 | {stateful,sync-opt}? 747 +--ro of-list {objective-function}? 748 | +--ro objective-function* [of] 749 | +--ro of identityref 750 +--ro pst-list 751 | +--ro path-setup-type* [pst] 752 | +--ro pst identityref 753 +--ro assoc-type-list {association}? 754 | +--ro assoc-type* [at] 755 | +--ro at identityref 756 +--ro speaker-entity-id? string {sync-opt}? 757 +--ro discontinuity-time? yang:timestamp 759 5.5. Notifications 761 This YANG model defines a list of notifications to inform client of 762 important events detected during the protocol operation. The 763 notifications defined cover the PCEP MIB notifications. 765 notifications: 766 +---n pcep-session-up 767 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 768 | +--ro session-initiator? 769 | | -> /pcep/entity/peers/peer/sessions/session/initiator 770 | +--ro state-last-change? yang:timestamp 771 | +--ro state? pcep-sess-state 772 +---n pcep-session-down 773 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 774 | +--ro session-initiator? pcep-initiator 775 | +--ro state-last-change? yang:timestamp 776 | +--ro state? pcep-sess-state 777 +---n pcep-session-local-overload 778 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 779 | +--ro session-initiator? 780 | | -> /pcep/entity/peers/peer/sessions/session/initiator 781 | +--ro overloaded? boolean 782 | +--ro overload-time? uint32 783 +---n pcep-session-local-overload-clear 784 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 785 | +--ro overloaded? boolean 786 +---n pcep-session-peer-overload 787 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 788 | +--ro session-initiator? 789 | | -> /pcep/entity/peers/peer/sessions/session/initiator 790 | +--ro peer-overloaded? boolean 791 | +--ro peer-overload-time? uint32 792 +---n pcep-session-peer-overload-clear 793 +--ro peer-addr? -> /pcep/entity/peers/peer/addr 794 +--ro peer-overloaded? boolean 796 5.6. RPC 798 This YANG model defines a RPC to trigger state resynchronization to a 799 particular PCEP peer. 801 rpcs: 802 +---x trigger-resync {stateful,sync-opt}? 803 +---w input 804 +---w pcc? -> /pcep/entity/peers/peer/addr 806 5.7. The Full PCEP Data Model 808 The module, "ietf-pcep", defines the basic components of a PCE 809 speaker. The tree depth in the tree is set to 10. 811 module: ietf-pcep 812 +--rw pcep! 813 +--rw entity 814 +--rw addr inet:ip-address 815 +--rw enabled? boolean 816 +--rw role pcep-role 817 +--rw description? string 818 +--rw speaker-entity-id? string {sync-opt}? 819 +--rw admin-status? boolean 820 +--ro index? uint32 821 +--ro oper-status? pcep-oper-status 822 +--rw domain 823 | +--rw domain* [domain-type domain] 824 | +--rw domain-type domain-type 825 | +--rw domain domain 826 +--rw capability 827 | +--rw capability? bits 828 | +--rw pce-initiated? boolean {pce-initiated}? 829 | +--rw include-db-ver? boolean {stateful,sync-opt}? 830 | +--rw trigger-resync? boolean {stateful,sync-opt}? 831 | +--rw trigger-initial-sync? boolean {stateful,sync-opt}? 832 | +--rw incremental-sync? boolean {stateful,sync-opt}? 833 | +--rw sr {sr}? 834 | +--rw enabled? boolean 835 | +--rw msd-limit? boolean 836 | +--rw nai? boolean 837 +--rw msd? uint8 {sr}? 838 +--rw pce-info 839 | +--rw scope 840 | | +--rw path-scope? bits 841 | | +--rw intra-area-pref? uint8 842 | | +--rw inter-area-pref? uint8 843 | | +--rw inter-as-pref? uint8 844 | | +--rw inter-layer-pref? uint8 845 | +--rw neigh-domains 846 | | +--rw domain* [domain-type domain] 847 | | +--rw domain-type domain-type 848 | | +--rw domain domain 849 | +--rw path-key {path-key}? 850 | +--rw enabled? boolean 851 | +--rw discard-timer? uint32 852 | +--rw reuse-time? uint32 853 | +--rw pce-id? inet:ip-address 854 +--rw connect-timer? uint16 855 +--rw connect-max-retry? uint32 856 +--rw init-backoff-timer? uint16 857 +--rw max-backoff-timer? uint32 858 +--ro open-wait-timer? uint16 859 +--ro keep-wait-timer? uint16 860 +--rw keep-alive-timer? uint8 861 +--rw dead-timer? uint8 862 +--rw allow-negotiation? boolean 863 +--rw max-keep-alive-timer? uint8 864 +--rw max-dead-timer? uint8 865 +--rw min-keep-alive-timer? uint8 866 +--rw min-dead-timer? uint8 867 +--rw sync-timer? uint16 {svec}? 868 +--rw request-timer? uint16 869 +--rw max-sessions? uint32 870 +--rw max-unknown-reqs? uint32 871 +--rw max-unknown-msgs? uint32 872 +--rw pcep-notification-max-rate uint32 873 +--rw stateful-parameter {stateful}? 874 | +--rw state-timeout? uint32 875 | +--rw redelegation-timeout? uint32 876 | +--rw rpt-non-pcep-lsp? boolean 877 +--rw of-list {objective-function}? 878 | +--rw objective-function* [of] 879 | +--rw of identityref 880 +--ro lsp-db {stateful}? 881 | +--ro db-ver? uint64 {sync-opt}? 882 | +--ro association-list* 883 | | [type id source global-source extended-id] 884 | | {association}? 885 | | +--ro type identityref 886 | | +--ro id uint16 887 | | +--ro source inet:ip-address 888 | | +--ro global-source uint32 889 | | +--ro extended-id string 890 | | +--ro lsp* [plsp-id pcc-id lsp-id] 891 | | +--ro plsp-id -> /pcep/entity/lsp-db/lsp/plsp-id 892 | | +--ro pcc-id -> /pcep/entity/lsp-db/lsp/pcc-id 893 | | +--ro lsp-id -> /pcep/entity/lsp-db/lsp/lsp-id 894 | +--ro lsp* [plsp-id pcc-id lsp-id] 895 | +--ro plsp-id uint32 896 | +--ro pcc-id inet:ip-address 897 | +--ro source? -> /te:te/lsps/lsp/source 898 | +--ro destination? 899 | | -> /te:te/lsps/lsp/destination 900 | +--ro tunnel-id? 901 | | -> /te:te/lsps/lsp/tunnel-id 902 | +--ro lsp-id -> /te:te/lsps/lsp/lsp-id 903 | +--ro extended-tunnel-id? 904 | | -> /te:te/lsps/lsp/extended-tunnel-id 905 | +--ro admin-state? boolean 906 | +--ro operational-state? operational-state 907 | +--ro delegated 908 | | +--ro enabled? boolean 909 | | +--ro peer? -> /pcep/entity/peers/peer/addr 910 | | +--ro srp-id? uint32 911 | +--ro initiation {pce-initiated}? 912 | | +--ro enabled? boolean 913 | | +--ro peer? -> /pcep/entity/peers/peer/addr 914 | +--ro symbolic-path-name? string 915 | +--ro last-error? identityref 916 | +--ro pst? identityref 917 | +--ro association-list* 918 | [type id source global-source extended-id] 919 | {association}? 920 | +--ro type 921 | | -> /pcep/entity/lsp-db/association-list/type 922 | +--ro id 923 | | -> /pcep/entity/lsp-db/association-list/id 924 | +--ro source leafref 925 | +--ro global-source leafref 926 | +--ro extended-id leafref 927 +--ro path-keys {path-key}? 928 | +--ro path-keys* [path-key] 929 | +--ro path-key uint16 930 | +--ro cps 931 | | +--ro explicit-route-objects* [index] 932 | | +--ro index uint32 933 | | +--ro (type)? 934 | | +--:(numbered-node-hop) 935 | | | +--ro numbered-node-hop 936 | | | +--ro node-id te-node-id 937 | | | +--ro hop-type? te-hop-type 938 | | +--:(numbered-link-hop) 939 | | | +--ro numbered-link-hop 940 | | | +--ro link-tp-id te-tp-id 941 | | | +--ro hop-type? te-hop-type 942 | | | +--ro direction? te-link-direction 943 | | +--:(unnumbered-link-hop) 944 | | | +--ro unnumbered-link-hop 945 | | | +--ro link-tp-id te-tp-id 946 | | | +--ro node-id te-node-id 947 | | | +--ro hop-type? te-hop-type 948 | | | +--ro direction? te-link-direction 949 | | +--:(as-number) 950 | | | +--ro as-number-hop 951 | | | +--ro as-number inet:as-number 952 | | | +--ro hop-type? te-hop-type 953 | | +--:(label) 954 | | +--ro label-hop 955 | | +--ro te-label 956 | | ... 957 | +--ro pcc-original? -> /pcep/entity/peers/peer/addr 958 | +--ro req-id? uint32 959 | +--ro retrieved? boolean 960 | +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr 961 | +--ro creation-time? yang:timestamp 962 | +--ro discard-time? uint32 963 | +--ro reuse-time? uint32 964 +--rw peers 965 +--rw peer* [addr] 966 +--rw addr inet:ip-address 967 +--rw role pcep-role 968 +--rw description? string 969 +--rw domain 970 | +--rw domain* [domain-type domain] 971 | +--rw domain-type domain-type 972 | +--rw domain domain 973 +--rw capability 974 | +--rw capability? bits 975 | +--rw pce-initiated? boolean 976 | | {pce-initiated}? 977 | +--rw include-db-ver? boolean 978 | | {stateful,sync-opt}? 979 | +--rw trigger-resync? boolean 980 | | {stateful,sync-opt}? 981 | +--rw trigger-initial-sync? boolean 982 | | {stateful,sync-opt}? 983 | +--rw incremental-sync? boolean 984 | | {stateful,sync-opt}? 985 | +--rw sr {sr}? 986 | +--rw enabled? boolean 987 | +--rw msd-limit? boolean 988 | +--rw nai? boolean 989 +--rw msd? uint8 {sr}? 990 +--rw pce-info 991 | +--rw scope 992 | | +--rw path-scope? bits 993 | | +--rw intra-area-pref? uint8 994 | | +--rw inter-area-pref? uint8 995 | | +--rw inter-as-pref? uint8 996 | | +--rw inter-layer-pref? uint8 997 | +--rw neigh-domains 998 | +--rw domain* [domain-type domain] 999 | +--rw domain-type domain-type 1000 | +--rw domain domain 1001 +--rw delegation-pref? uint8 {stateful}? 1002 +--rw auth 1003 | +--rw (auth-type-selection)? 1004 | +--:(auth-key-chain) 1005 | | +--rw key-chain? 1006 | | key-chain:key-chain-ref 1007 | +--:(auth-key) 1008 | | +--rw crypto-algorithm identityref 1009 | | +--rw (key-string-style)? 1010 | | +--:(keystring) 1011 | | | +--rw keystring? string 1012 | | +--:(hexadecimal) 1013 | | {key-chain:hex-key-string}? 1014 | | +--rw hexadecimal-string? 1015 | | yang:hex-string 1016 | +--:(auth-tls) {tls}? 1017 | +--rw (role)? 1018 | +--:(server) 1019 | | +--rw tls-server 1020 | | ... 1021 | +--:(client) 1022 | +--rw tls-client 1023 | ... 1024 +--ro discontinuity-time? yang:timestamp 1025 +--ro initiate-session? boolean 1026 +--ro session-exists? boolean 1027 +--ro session-up-time? yang:timestamp 1028 +--ro session-fail-time? yang:timestamp 1029 +--ro session-fail-up-time? yang:timestamp 1030 +--ro sessions 1031 +--ro session* [initiator] 1032 +--ro initiator pcep-initiator 1033 +--ro role? 1034 | -> /pcep/entity/role 1035 +--ro state-last-change? yang:timestamp 1036 +--ro state? pcep-sess-state 1037 +--ro session-creation? yang:timestamp 1038 +--ro connect-retry? yang:counter32 1039 +--ro local-id? uint8 1040 +--ro remote-id? uint8 1041 +--ro keepalive-timer? uint8 1042 +--ro peer-keepalive-timer? uint8 1043 +--ro dead-timer? uint8 1044 +--ro peer-dead-timer? uint8 1045 +--ro ka-hold-time-rem? uint8 1046 +--ro overloaded? boolean 1047 +--ro overload-time? uint32 1048 +--ro peer-overloaded? boolean 1049 +--ro peer-overload-time? uint32 1050 +--ro lspdb-sync? sync-state 1051 | {stateful}? 1052 +--ro recv-db-ver? uint64 1053 | {stateful,sync-opt}? 1054 +--ro of-list {objective-function}? 1055 | +--ro objective-function* [of] 1056 | +--ro of identityref 1057 +--ro pst-list 1058 | +--ro path-setup-type* [pst] 1059 | +--ro pst identityref 1060 +--ro assoc-type-list {association}? 1061 | +--ro assoc-type* [at] 1062 | +--ro at identityref 1063 +--ro speaker-entity-id? string {sync-opt}? 1064 +--ro discontinuity-time? yang:timestamp 1066 rpcs: 1067 +---x trigger-resync {stateful,sync-opt}? 1068 +---w input 1069 +---w pcc? -> /pcep/entity/peers/peer/addr 1071 notifications: 1072 +---n pcep-session-up 1073 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 1074 | +--ro session-initiator? 1075 | | -> /pcep/entity/peers/peer/sessions/session/initiator 1076 | +--ro state-last-change? yang:timestamp 1077 | +--ro state? pcep-sess-state 1078 +---n pcep-session-down 1079 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 1080 | +--ro session-initiator? pcep-initiator 1081 | +--ro state-last-change? yang:timestamp 1082 | +--ro state? pcep-sess-state 1083 +---n pcep-session-local-overload 1084 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 1085 | +--ro session-initiator? 1086 | | -> /pcep/entity/peers/peer/sessions/session/initiator 1087 | +--ro overloaded? boolean 1088 | +--ro overload-time? uint32 1089 +---n pcep-session-local-overload-clear 1090 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 1091 | +--ro overloaded? boolean 1092 +---n pcep-session-peer-overload 1093 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 1094 | +--ro session-initiator? 1095 | | -> /pcep/entity/peers/peer/sessions/session/initiator 1096 | +--ro peer-overloaded? boolean 1097 | +--ro peer-overload-time? uint32 1098 +---n pcep-session-peer-overload-clear 1099 +--ro peer-addr? -> /pcep/entity/peers/peer/addr 1100 +--ro peer-overloaded? boolean 1102 6. The Design of PCEP Statistics Data Model 1104 The module, "ietf-pcep-stats", augments the ietf-pcep module to 1105 include statistics at the PCEP peer and session level. 1107 module: ietf-pcep-stats 1108 augment /pcep:pcep/pcep:entity/pcep:peers/pcep:peer: 1109 +--ro num-sess-setup-ok? yang:counter32 1110 +--ro num-sess-setup-fail? yang:counter32 1111 +--ro pcep-stats 1112 +--ro avg-rsp-time? uint32 1113 +--ro lwm-rsp-time? uint32 1114 +--ro hwm-rsp-time? uint32 1115 +--ro num-pcreq-sent? yang:counter32 1116 +--ro num-pcreq-rcvd? yang:counter32 1117 +--ro num-pcrep-sent? yang:counter32 1118 +--ro num-pcrep-rcvd? yang:counter32 1119 +--ro num-pcerr-sent? yang:counter32 1120 +--ro num-pcerr-rcvd? yang:counter32 1121 +--ro num-pcntf-sent? yang:counter32 1122 +--ro num-pcntf-rcvd? yang:counter32 1123 +--ro num-keepalive-sent? yang:counter32 1124 +--ro num-keepalive-rcvd? yang:counter32 1125 +--ro num-unknown-rcvd? yang:counter32 1126 +--ro num-corrupt-rcvd? yang:counter32 1127 +--ro num-req-sent? yang:counter32 1128 +--ro num-req-sent-pend-rep? yang:counter32 1129 +--ro num-req-sent-ero-rcvd? yang:counter32 1130 +--ro num-req-sent-nopath-rcvd? yang:counter32 1131 +--ro num-req-sent-cancel-rcvd? yang:counter32 1132 +--ro num-req-sent-error-rcvd? yang:counter32 1133 +--ro num-req-sent-timeout? yang:counter32 1134 +--ro num-req-sent-cancel-sent? yang:counter32 1135 +--ro num-req-rcvd? yang:counter32 1136 +--ro num-req-rcvd-pend-rep? yang:counter32 1137 +--ro num-req-rcvd-ero-sent? yang:counter32 1138 +--ro num-req-rcvd-nopath-sent? yang:counter32 1139 +--ro num-req-rcvd-cancel-sent? yang:counter32 1140 +--ro num-req-rcvd-error-sent? yang:counter32 1141 +--ro num-req-rcvd-cancel-rcvd? yang:counter32 1142 +--ro num-rep-rcvd-unknown? yang:counter32 1143 +--ro num-req-rcvd-unknown? yang:counter32 1144 +--ro svec {pcep:svec}? 1145 | +--ro num-svec-sent? yang:counter32 1146 | +--ro num-svec-req-sent? yang:counter32 1147 | +--ro num-svec-rcvd? yang:counter32 1148 | +--ro num-svec-req-rcvd? yang:counter32 1149 +--ro stateful {pcep:stateful}? 1150 | +--ro num-pcrpt-sent? yang:counter32 1151 | +--ro num-pcrpt-rcvd? yang:counter32 1152 | +--ro num-pcupd-sent? yang:counter32 1153 | +--ro num-pcupd-rcvd? yang:counter32 1154 | +--ro num-rpt-sent? yang:counter32 1155 | +--ro num-rpt-rcvd? yang:counter32 1156 | +--ro num-rpt-rcvd-error-sent? yang:counter32 1157 | +--ro num-upd-sent? yang:counter32 1158 | +--ro num-upd-rcvd? yang:counter32 1159 | +--ro num-upd-rcvd-unknown? yang:counter32 1160 | +--ro num-upd-rcvd-undelegated? yang:counter32 1161 | +--ro num-upd-rcvd-error-sent? yang:counter32 1162 | +--ro initiation {pcep:pce-initiated}? 1163 | +--ro num-pcinitiate-sent? yang:counter32 1164 | +--ro num-pcinitiate-rcvd? yang:counter32 1165 | +--ro num-initiate-sent? yang:counter32 1166 | +--ro num-initiate-rcvd? yang:counter32 1167 | +--ro num-initiate-rcvd-error-sent? yang:counter32 1168 +--ro path-key {pcep:path-key}? 1169 | +--ro num-unknown-path-key? yang:counter32 1170 | +--ro num-exp-path-key? yang:counter32 1171 | +--ro num-dup-path-key? yang:counter32 1172 | +--ro num-path-key-no-attempt? yang:counter32 1173 +--ro num-req-sent-closed? yang:counter32 1174 +--ro num-req-rcvd-closed? yang:counter32 1175 augment /pcep:pcep/pcep:entity/pcep:peers/pcep:peer/pcep:sessions 1176 /pcep:session: 1177 +--ro pcep-stats 1178 +--ro avg-rsp-time? uint32 1179 +--ro lwm-rsp-time? uint32 1180 +--ro hwm-rsp-time? uint32 1181 +--ro num-pcreq-sent? yang:counter32 1182 +--ro num-pcreq-rcvd? yang:counter32 1183 +--ro num-pcrep-sent? yang:counter32 1184 +--ro num-pcrep-rcvd? yang:counter32 1185 +--ro num-pcerr-sent? yang:counter32 1186 +--ro num-pcerr-rcvd? yang:counter32 1187 +--ro num-pcntf-sent? yang:counter32 1188 +--ro num-pcntf-rcvd? yang:counter32 1189 +--ro num-keepalive-sent? yang:counter32 1190 +--ro num-keepalive-rcvd? yang:counter32 1191 +--ro num-unknown-rcvd? yang:counter32 1192 +--ro num-corrupt-rcvd? yang:counter32 1193 +--ro num-req-sent? yang:counter32 1194 +--ro num-req-sent-pend-rep? yang:counter32 1195 +--ro num-req-sent-ero-rcvd? yang:counter32 1196 +--ro num-req-sent-nopath-rcvd? yang:counter32 1197 +--ro num-req-sent-cancel-rcvd? yang:counter32 1198 +--ro num-req-sent-error-rcvd? yang:counter32 1199 +--ro num-req-sent-timeout? yang:counter32 1200 +--ro num-req-sent-cancel-sent? yang:counter32 1201 +--ro num-req-rcvd? yang:counter32 1202 +--ro num-req-rcvd-pend-rep? yang:counter32 1203 +--ro num-req-rcvd-ero-sent? yang:counter32 1204 +--ro num-req-rcvd-nopath-sent? yang:counter32 1205 +--ro num-req-rcvd-cancel-sent? yang:counter32 1206 +--ro num-req-rcvd-error-sent? yang:counter32 1207 +--ro num-req-rcvd-cancel-rcvd? yang:counter32 1208 +--ro num-rep-rcvd-unknown? yang:counter32 1209 +--ro num-req-rcvd-unknown? yang:counter32 1210 +--ro svec {pcep:svec}? 1211 | +--ro num-svec-sent? yang:counter32 1212 | +--ro num-svec-req-sent? yang:counter32 1213 | +--ro num-svec-rcvd? yang:counter32 1214 | +--ro num-svec-req-rcvd? yang:counter32 1215 +--ro stateful {pcep:stateful}? 1216 | +--ro num-pcrpt-sent? yang:counter32 1217 | +--ro num-pcrpt-rcvd? yang:counter32 1218 | +--ro num-pcupd-sent? yang:counter32 1219 | +--ro num-pcupd-rcvd? yang:counter32 1220 | +--ro num-rpt-sent? yang:counter32 1221 | +--ro num-rpt-rcvd? yang:counter32 1222 | +--ro num-rpt-rcvd-error-sent? yang:counter32 1223 | +--ro num-upd-sent? yang:counter32 1224 | +--ro num-upd-rcvd? yang:counter32 1225 | +--ro num-upd-rcvd-unknown? yang:counter32 1226 | +--ro num-upd-rcvd-undelegated? yang:counter32 1227 | +--ro num-upd-rcvd-error-sent? yang:counter32 1228 | +--ro initiation {pcep:pce-initiated}? 1229 | +--ro num-pcinitiate-sent? yang:counter32 1230 | +--ro num-pcinitiate-rcvd? yang:counter32 1231 | +--ro num-initiate-sent? yang:counter32 1232 | +--ro num-initiate-rcvd? yang:counter32 1233 | +--ro num-initiate-rcvd-error-sent? yang:counter32 1234 +--ro path-key {pcep:path-key}? 1235 +--ro num-unknown-path-key? yang:counter32 1236 +--ro num-exp-path-key? yang:counter32 1237 +--ro num-dup-path-key? yang:counter32 1238 +--ro num-path-key-no-attempt? yang:counter32 1240 7. Advanced PCE Features 1242 This document contains a specification of the base PCEP YANG module, 1243 "ietf-pcep" which provides the basic PCEP [RFC5440] data model. 1245 This document further handles advanced PCE features like - 1247 o Capability and Scope 1249 o Domain information (local/neighbour) 1251 o Path-Key 1253 o Objective Function (OF) 1255 o Global Concurrent Optimization (GCO) 1257 o P2MP 1259 o GMPLS 1261 o Inter-Layer 1263 o Stateful PCE 1265 o Segment Routing (SR) 1267 o Authentication including PCEPS (TLS) 1269 7.1. Stateful PCE's LSP-DB 1271 In the operational state of PCEP which supports stateful PCE mode, 1272 the list of LSP state are maintained in LSP-DB. The key is the PLSP- 1273 ID and the PCC IP address. 1275 The PCEP data model contains the operational state of LSPs 1276 (/pcep/entity/lsp-db/lsp/) with PCEP specific attributes. The 1277 generic TE attributes of the LSP are defined in 1278 [I-D.ietf-teas-yang-te]. A reference to LSP state in TE model is 1279 maintained. 1281 8. Open Issues and Next Step 1283 This section is added so that open issues can be tracked. This 1284 section would be removed when the document is ready for publication. 1286 8.1. The PCE-Initiated LSP 1288 The TE Model at [I-D.ietf-teas-yang-te] should support creating of 1289 tunnels at the controller (PCE) and marking them as PCE-Initiated. 1290 The LSP-DB in the PCEP Yang (/pcep/entity/lsp-db/lsp/initiation) also 1291 marks the LSPs which are PCE-initiated. 1293 8.2. LSP-ID 1295 Use of lsp-id as a key in the LSPDB could be an issue for a non-RSVP- 1296 TE path setup type. The lsp-id filed is currently a leafref to the 1297 TE model [I-D.ietf-teas-yang-te]. Need to a confirm if this is 1298 problematic. 1300 9. Other Considerations 1302 9.1. PCEP over TLS (PCEPS) 1304 [RFC8253] describe the use of TLS in PCEP. The peer acting as the 1305 PCEP client must act as the TLS client. The TLS client actively 1306 opens the TLS connection and the TLS server passively listens for the 1307 incoming TLS connections. The well-known TCP port number 4189 is 1308 used by PCEP servers to listen for TCP connections established by 1309 PCEP over TLS clients. The TLS client sends the TLS ClientHello 1310 message to begin the TLS handshake. The TLS server sends a 1311 CertificateRequest in order to request a certificate from the TLS 1312 client. Once the TLS handshake has finished, the client and the 1313 server begin to exchange PCEP messages. Client and server identity 1314 verification is done before the PCEP open message is sent. This 1315 means that the identity verification is completed before the PCEP 1316 session is started. 1318 10. PCEP YANG Modules 1320 10.1. ietf-pcep module 1322 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 1323 actual RFC number and all occurrences of the revision date below with 1324 the date of RFC publication (and remove this note). 1326 file "ietf-pcep@2020-10-31.yang" 1327 module ietf-pcep { 1328 yang-version 1.1; 1329 namespace "urn:ietf:params:xml:ns:yang:ietf-pcep"; 1330 prefix pcep; 1332 import ietf-inet-types { 1333 prefix inet; 1334 reference 1335 "RFC 6991: Common YANG Data Types"; 1336 } 1337 import ietf-yang-types { 1338 prefix yang; 1339 reference 1340 "RFC 6991: Common YANG Data Types"; 1341 } 1342 import ietf-te { 1343 prefix te; 1344 reference 1345 "I-D.ietf-teas-yang-te: A YANG Data Model for Traffic 1346 Engineering Tunnels and Interfaces"; 1347 } 1348 import ietf-te-types { 1349 prefix te-types; 1350 reference 1351 "RFC 8776: Common YANG Data Types for Traffic Engineering"; 1352 } 1353 import ietf-key-chain { 1354 prefix key-chain; 1355 reference 1356 "RFC 8177: YANG Data Model for Key Chains"; 1357 } 1358 import ietf-netconf-acm { 1359 prefix nacm; 1360 reference 1361 "RFC 8341: Network Configuration Protocol (NETCONF) Access 1362 Control Model"; 1363 } 1364 import ietf-tls-server { 1365 prefix tlss; 1366 reference 1367 "I-D.ietf-netconf-tls-client-server: YANG Groupings for TLS 1368 Clients and TLS Servers"; 1369 } 1370 import ietf-tls-client { 1371 prefix tlsc; 1372 reference 1373 "I-D.ietf-netconf-tls-client-server: YANG Groupings for TLS 1374 Clients and TLS Servers"; 1375 } 1376 import ietf-ospf { 1377 prefix ospf; 1378 reference 1379 "I-D.ietf-ospf-yang: YANG Data Model for OSPF Protocol"; 1380 } 1381 import ietf-isis { 1382 prefix isis; 1383 reference 1384 "I-D.ietf-isis-yang-isis-cfg: YANG Data Model for IS-IS 1385 Protocol"; 1386 } 1388 organization 1389 "IETF PCE (Path Computation Element) Working Group"; 1390 contact 1391 "WG Web: 1392 WG List: 1393 Editor: Dhruv Dhody 1394 "; 1395 description 1396 "The YANG module defines a generic configuration and 1397 operational model for PCEP. 1399 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 1400 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 1401 'MAY', and 'OPTIONAL' in this document are to be interpreted as 1402 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 1403 they appear in all capitals, as shown here. 1405 Copyright (c) 2020 IETF Trust and the persons identified as 1406 authors of the code. All rights reserved. 1408 Redistribution and use in source and binary forms, with or 1409 without modification, is permitted pursuant to, and subject 1410 to the license terms contained in, the Simplified BSD License 1411 set forth in Section 4.c of the IETF Trust's Legal Provisions 1412 Relating to IETF Documents 1413 (https://trustee.ietf.org/license-info). 1415 This version of this YANG module is part of RFC XXXX; see the 1416 RFC itself for full legal notices."; 1418 revision 2020-10-31 { 1419 description 1420 "Initial revision."; 1421 reference 1422 "RFC XXXX: A YANG Data Model for Path Computation 1423 Element Communications Protocol (PCEP)"; 1425 } 1427 /* 1428 * Typedefs 1429 */ 1431 typedef pcep-role { 1432 type enumeration { 1433 enum unknown { 1434 value 0; 1435 description 1436 "An unknown role"; 1437 } 1438 enum pcc { 1439 value 1; 1440 description 1441 "The role of a Path Computation Client"; 1442 } 1443 enum pce { 1444 value 2; 1445 description 1446 "The role of Path Computation Element"; 1447 } 1448 enum pcc-and-pce { 1449 value 3; 1450 description 1451 "The role of both Path Computation Client and 1452 Path Computation Element"; 1453 } 1454 } 1455 description 1456 "The role of a PCEP speaker. 1457 Takes one of the following values 1458 - unknown(0): the role is not known. 1459 - pcc(1): the role is of a Path Computation 1460 Client (PCC). 1461 - pce(2): the role is of a Path Computation 1462 Server (PCE). 1463 - pccAndPce(3): the role is of both a PCC and 1464 a PCE."; 1465 } 1467 typedef pcep-oper-status { 1468 type enumeration { 1469 enum oper-status-up { 1470 value 1; 1471 description 1472 "The PCEP entity is active"; 1474 } 1475 enum oper-status-down { 1476 value 2; 1477 description 1478 "The PCEP entity is inactive"; 1479 } 1480 enum oper-status-going-up { 1481 value 3; 1482 description 1483 "The PCEP entity is activating"; 1484 } 1485 enum oper-status-going-down { 1486 value 4; 1487 description 1488 "The PCEP entity is deactivating"; 1489 } 1490 enum oper-status-failed { 1491 value 5; 1492 description 1493 "The PCEP entity has failed and will recover 1494 when possible."; 1495 } 1496 enum oper-status-failed-perm { 1497 value 6; 1498 description 1499 "The PCEP entity has failed and will not recover 1500 without operator intervention"; 1501 } 1502 } 1503 description 1504 "The operational status of the PCEP entity. 1505 Takes one of the following values 1506 - oper-status-up(1): Active 1507 - oper-status-down(2): Inactive 1508 - oper-status-going-up(3): Activating 1509 - oper-status-going-down(4): Deactivating 1510 - oper-status-failed(5): Failed 1511 - oper-status-failed-perm(6): Failed Permanantly"; 1512 reference 1513 "RFC 5440: Path Computation Element (PCE) Communication 1514 Protocol (PCEP)"; 1515 } 1517 typedef pcep-initiator { 1518 type enumeration { 1519 enum local { 1520 value 1; 1521 description 1522 "The local PCEP entity initiated the session"; 1523 } 1524 enum remote { 1525 value 2; 1526 description 1527 "The remote PCEP peer initiated the session"; 1528 } 1529 } 1530 description 1531 "The initiator of the session, that is, whether the TCP 1532 connection was initiated by the local PCEP entity or 1533 the remote peer. 1534 Takes one of the following values 1535 - local(1): Initiated locally 1536 - remote(2): Initiated remotely"; 1537 } 1539 typedef pcep-sess-state { 1540 type enumeration { 1541 enum tcp-pending { 1542 value 1; 1543 description 1544 "The tcp-pending state of PCEP session."; 1545 } 1546 enum open-wait { 1547 value 2; 1548 description 1549 "The open-wait state of PCEP session."; 1550 } 1551 enum keep-wait { 1552 value 3; 1553 description 1554 "The keep-wait state of PCEP session."; 1555 } 1556 enum session-up { 1557 value 4; 1558 description 1559 "The session-up state of PCEP session."; 1560 } 1561 } 1562 description 1563 "The current state of the session. 1564 The set of possible states excludes the idle state 1565 since entries do not exist in the idle state. 1566 Takes one of the following values 1567 - tcp-pending(1): PCEP TCP Pending state 1568 - open-wait(2): PCEP Open Wait state 1569 - keep-wait(3): PCEP Keep Wait state 1570 - session-up(4): PCEP Session Up state"; 1571 reference 1572 "RFC 5440: Path Computation Element (PCE) Communication 1573 Protocol (PCEP)"; 1574 } 1576 typedef domain-type { 1577 type enumeration { 1578 enum ospf-area { 1579 value 1; 1580 description 1581 "The OSPF area."; 1582 } 1583 enum isis-area { 1584 value 2; 1585 description 1586 "The IS-IS area."; 1587 } 1588 enum as { 1589 value 3; 1590 description 1591 "The Autonomous System (AS)."; 1592 } 1593 } 1594 description 1595 "The PCE Domain Type"; 1596 } 1598 typedef domain-ospf-area { 1599 type ospf:area-id-type; 1600 description 1601 "OSPF Area ID."; 1602 reference 1603 "I-D.ietf-ospf-yang: YANG Data Model for OSPF Protocol"; 1604 } 1606 typedef domain-isis-area { 1607 type isis:area-address; 1608 description 1609 "IS-IS Area ID."; 1610 reference 1611 "I-D.ietf-isis-yang-isis-cfg: YANG Data Model for IS-IS 1612 Protocol"; 1613 } 1615 typedef domain-as { 1616 type inet:as-number; 1617 description 1618 "Autonomous System number."; 1619 } 1621 typedef domain { 1622 type union { 1623 type domain-ospf-area; 1624 type domain-isis-area; 1625 type domain-as; 1626 } 1627 description 1628 "The Domain Information"; 1629 } 1631 typedef operational-state { 1632 type enumeration { 1633 enum down { 1634 value 0; 1635 description 1636 "not active."; 1637 } 1638 enum up { 1639 value 1; 1640 description 1641 "signalled."; 1642 } 1643 enum active { 1644 value 2; 1645 description 1646 "up and carrying traffic."; 1647 } 1648 enum going-down { 1649 value 3; 1650 description 1651 "LSP is being torn down, resources are 1652 being released."; 1653 } 1654 enum going-up { 1655 value 4; 1656 description 1657 "LSP is being signalled."; 1658 } 1659 } 1660 description 1661 "The operational status of the LSP"; 1662 reference 1663 "RFC 8231: Path Computation Element Communication Protocol 1664 (PCEP) Extensions for Stateful PCE"; 1665 } 1666 typedef sync-state { 1667 type enumeration { 1668 enum pending { 1669 value 0; 1670 description 1671 "The state synchronization 1672 has not started."; 1673 } 1674 enum ongoing { 1675 value 1; 1676 description 1677 "The state synchronization 1678 is ongoing."; 1679 } 1680 enum finished { 1681 value 2; 1682 description 1683 "The state synchronization 1684 is finished."; 1685 } 1686 } 1687 description 1688 "The LSP-DB state synchronization operational 1689 status."; 1690 reference 1691 "RFC 8231: Path Computation Element Communication Protocol 1692 (PCEP) Extensions for Stateful PCE"; 1693 } 1695 /* 1696 * Features 1697 */ 1699 feature svec { 1700 description 1701 "Support synchronized path computation."; 1702 reference 1703 "RFC 5440: Path Computation Element (PCE) Communication 1704 Protocol (PCEP)"; 1705 } 1707 feature gmpls { 1708 description 1709 "Support GMPLS."; 1710 reference 1711 "RFC 8779: PCEP extensions for GMPLS"; 1712 } 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"; 1810 reference 1811 "RFC 8231: Path Computation Element Communication Protocol 1812 (PCEP) Extensions for Stateful PCE"; 1813 } 1815 identity no-error-lsp-error { 1816 if-feature "stateful"; 1817 base lsp-error; 1818 description 1819 "No error, LSP is fine."; 1820 reference 1821 "RFC 8231: Path Computation Element Communication Protocol 1822 (PCEP) Extensions for Stateful PCE"; 1823 } 1825 identity unknown-lsp-error { 1826 if-feature "stateful"; 1827 base lsp-error; 1828 description 1829 "Unknown reason."; 1830 reference 1831 "RFC 8231: Path Computation Element Communication Protocol 1832 (PCEP) Extensions for Stateful PCE"; 1833 } 1835 identity limit-lsp-error { 1836 if-feature "stateful"; 1837 base lsp-error; 1838 description 1839 "Limit reached for PCE-controlled LSPs."; 1840 reference 1841 "RFC 8231: Path Computation Element Communication Protocol 1842 (PCEP) Extensions for Stateful PCE"; 1843 } 1845 identity pending-lsp-error { 1846 if-feature "stateful"; 1847 base lsp-error; 1848 description 1849 "Too many pending LSP update requests."; 1850 reference 1851 "RFC 8231: Path Computation Element Communication Protocol 1852 (PCEP) Extensions for Stateful PCE"; 1853 } 1855 identity unacceptable-lsp-error { 1856 if-feature "stateful"; 1857 base lsp-error; 1858 description 1859 "Unacceptable parameters."; 1860 reference 1861 "RFC 8231: Path Computation Element Communication Protocol 1862 (PCEP) Extensions for Stateful PCE"; 1863 } 1865 identity internal-lsp-error { 1866 if-feature "stateful"; 1867 base lsp-error; 1868 description 1869 "Internal error."; 1870 reference 1871 "RFC 8231: Path Computation Element Communication Protocol 1872 (PCEP) Extensions for Stateful PCE"; 1873 } 1875 identity admin-lsp-error { 1876 if-feature "stateful"; 1877 base lsp-error; 1878 description 1879 "LSP administratively brought down."; 1880 reference 1881 "RFC 8231: Path Computation Element Communication Protocol 1882 (PCEP) Extensions for Stateful PCE"; 1883 } 1885 identity preempted-lsp-error { 1886 if-feature "stateful"; 1887 base lsp-error; 1888 description 1889 "LSP preempted."; 1890 reference 1891 "RFC 8231: Path Computation Element Communication Protocol 1892 (PCEP) Extensions for Stateful PCE"; 1893 } 1895 identity rsvp-lsp-error { 1896 if-feature "stateful"; 1897 base lsp-error; 1898 description 1899 "RSVP signaling error."; 1900 reference 1901 "RFC 8231: Path Computation Element Communication Protocol 1902 (PCEP) Extensions for Stateful PCE"; 1903 } 1905 /* 1906 * Groupings 1907 */ 1909 grouping pce-scope { 1910 description 1911 "This grouping defines PCE path computation scope 1912 information which maybe relevant to PCE selection. 1913 This information corresponds to PCE auto-discovery 1914 information."; 1915 reference 1916 "RFC 5088: OSPF Protocol Extensions for Path 1917 Computation Element (PCE) Discovery 1918 RFC 5089: IS-IS Protocol Extensions for Path 1919 Computation Element (PCE) Discovery"; 1920 leaf path-scope { 1921 type bits { 1922 bit intra-area-scope { 1923 description 1924 "PCE can compute intra-area paths."; 1925 } 1926 bit inter-area-scope { 1927 description 1928 "PCE can compute inter-area paths."; 1929 } 1930 bit inter-area-scope-default { 1931 description 1932 "PCE can act as a default PCE for inter-area 1933 path computation."; 1934 } 1935 bit inter-as-scope { 1936 description 1937 "PCE can compute inter-AS paths."; 1938 } 1939 bit inter-as-scope-default { 1940 description 1941 "PCE can act as a default PCE for inter-AS 1942 path computation."; 1943 } 1944 bit inter-layer-scope { 1945 description 1946 "PCE can compute inter-layer paths."; 1947 } 1948 } 1949 description 1950 "The field corresponding to the path scope bits"; 1951 } 1952 leaf intra-area-pref { 1953 type uint8 { 1954 range "0..7"; 1955 } 1956 description 1957 "The PCE's preference for intra-area TE LSP 1958 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 } 2003 } 2005 //domain 2007 grouping info { 2008 description 2009 "This grouping specifies all information which 2010 maybe relevant to both PCC and PCE. 2011 This information corresponds to PCE auto-discovery 2012 information."; 2013 container domain { 2014 description 2015 "The local domain for the PCEP entity"; 2016 list domain { 2017 key "domain-type domain"; 2018 description 2019 "The local domain."; 2020 uses domain { 2021 description 2022 "The local domain for the PCEP entity."; 2023 } 2024 } 2025 } 2026 container capability { 2027 description 2028 "The PCEP entity capability information of local 2029 PCEP entity. This maybe relevant to PCE selection 2030 as well. This information corresponds to PCE auto- 2031 discovery information."; 2032 reference 2033 "RFC 5088: OSPF Protocol Extensions for Path 2034 Computation Element (PCE) Discovery 2035 RFC 5089: IS-IS Protocol Extensions for Path 2036 Computation Element (PCE) Discovery"; 2037 leaf capability { 2038 type bits { 2039 bit gmpls { 2040 if-feature "gmpls"; 2041 description 2042 "Path computation with GMPLS link 2043 constraints."; 2044 } 2045 bit bi-dir { 2046 description 2047 "Bidirectional path computation."; 2048 } 2049 bit diverse { 2050 description 2051 "Diverse path computation."; 2052 } 2053 bit load-balance { 2054 description 2055 "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"; 2148 reference 2149 "RFC 8232: Optimizations of Label Switched Path State 2150 Synchronization Procedures for a Stateful PCE"; 2151 } 2152 leaf trigger-resync { 2153 if-feature "stateful"; 2154 if-feature "sync-opt"; 2155 type boolean; 2156 description 2157 "Support PCE triggered re-synchronization"; 2158 reference 2159 "RFC 8232: Optimizations of Label Switched Path State 2160 Synchronization Procedures for a Stateful PCE"; 2161 } 2162 leaf trigger-initial-sync { 2163 if-feature "stateful"; 2164 if-feature "sync-opt"; 2165 type boolean; 2166 description 2167 "PCE triggered initial synchronization"; 2168 reference 2169 "RFC 8232: Optimizations of Label Switched Path State 2170 Synchronization Procedures for a Stateful PCE"; 2171 } 2172 leaf incremental-sync { 2173 if-feature "stateful"; 2174 if-feature "sync-opt"; 2175 type boolean; 2176 description 2177 "Support incremental (delta) sync"; 2178 reference 2179 "RFC 8232: Optimizations of Label Switched Path State 2180 Synchronization Procedures for a Stateful PCE"; 2181 } 2182 container sr { 2183 if-feature "sr"; 2184 description 2185 "If segment routing is supported"; 2186 reference 2187 "RFC 8664: Path Computation Element Communication Protocol 2188 (PCEP) Extensions for Segment Routing"; 2189 leaf enabled { 2190 type boolean; 2191 description 2192 "Set to true if SR is enabled"; 2193 } 2194 leaf msd-limit { 2195 type boolean; 2196 default "false"; 2197 description 2198 "True indicates no limit on MSD, the 2199 leaf msd is ignored"; 2200 } 2201 leaf nai { 2202 type boolean; 2203 default "false"; 2204 description 2205 "True indicates capability to resolve NAI 2206 to SID"; 2207 } 2208 } 2209 //sr 2210 } 2211 //capability 2212 leaf msd { 2213 if-feature "sr"; 2214 type uint8; 2215 description 2216 "Maximum SID Depth for SR"; 2217 reference 2218 "RFC 8664: Path Computation Element Communication Protocol 2219 (PCEP) Extensions for Segment Routing"; 2220 } 2221 } 2223 //info 2225 grouping pce-info { 2226 description 2227 "This grouping specifies all PCE information 2228 which maybe relevant to the PCE selection. 2229 This information corresponds to PCE auto-discovery 2230 information."; 2231 container scope { 2232 description 2233 "The path computation scope"; 2234 uses pce-scope; 2235 } 2236 container neigh-domains { 2237 description 2238 "The list of neighbour PCE-Domain 2239 toward which a PCE can compute 2240 paths"; 2241 list domain { 2242 key "domain-type domain"; 2243 description 2244 "The neighbour domain."; 2245 uses domain { 2246 description 2247 "The PCE neighbour domain."; 2248 } 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)"; 2293 list objective-function { 2294 key "of"; 2295 description 2296 "The list of authorized OF"; 2297 leaf of { 2298 type identityref { 2299 base te-types:objective-function-type; 2300 } 2301 description 2302 "The OF authorized"; 2303 } 2304 } 2305 } 2307 /* 2308 * Configuration data nodes 2309 */ 2311 container pcep { 2312 presence "The PCEP is enabled"; 2313 description 2314 "Parameters for list of configured PCEP entities 2315 on the device."; 2316 container entity { 2317 description 2318 "The configured PCEP entity on the device."; 2319 leaf addr { 2320 type inet:ip-address; 2321 mandatory true; 2322 description 2323 "The local Internet address of this PCEP entity. 2324 If operating as a PCE server, the PCEP entity 2325 listens on this address. If operating as a PCC, 2326 the PCEP entity binds outgoing TCP connections 2327 to this address. It is possible for the PCEP entity 2328 to operate both as a PCC and a PCE Server, in which 2329 case it uses this address both to listen for incoming 2330 TCP connections and to bind outgoing TCP connections."; 2331 } 2332 leaf enabled { 2333 type boolean; 2334 default "true"; 2335 description 2336 "The administrative status of this PCEP 2337 Entity."; 2338 } 2339 leaf role { 2340 type pcep-role; 2341 mandatory true; 2342 description 2343 "The role that this entity can play. 2344 Takes one of the following values. 2345 - unknown(0): this PCEP Entity role is not 2346 known. 2347 - pcc(1): this PCEP Entity is a PCC. 2348 - pce(2): this PCEP Entity is a PCE. 2349 - pcc-and-pce(3): this PCEP Entity is both 2350 a PCC and a PCE."; 2351 } 2352 leaf description { 2353 type string; 2354 description 2355 "Description of the PCEP entity configured 2356 by the user"; 2357 } 2358 leaf speaker-entity-id { 2359 if-feature "sync-opt"; 2360 type string; 2361 description 2362 "The Speaker Entity Identifier"; 2363 reference 2364 "RFC 8232: Optimizations of Label Switched 2365 Path State Synchronization Procedures for 2366 a Stateful PCE"; 2367 } 2368 leaf admin-status { 2369 type boolean; 2370 default "true"; 2371 description 2372 "The administrative status of this PCEP Entity. 2373 The value true represents admin status as up. 2374 This is the desired operational status as 2375 currently set by an operator or by default in 2376 the implementation. The value of oper-status 2377 represents the current status of an attempt to 2378 reach this desired status."; 2379 } 2380 leaf index { 2381 type uint32; 2382 config false; 2383 description 2384 "The index of the operational PECP entity"; 2385 } 2386 leaf oper-status { 2387 type pcep-oper-status; 2388 config false; 2389 description 2390 "The operational status of the PCEP entity. 2391 Takes one of the following values. 2392 - oper-status-up(1): the PCEP entity is active. 2393 - 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"; 2486 } 2487 units "seconds"; 2488 description 2489 "The initial back-off time in seconds for retrying 2490 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/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/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/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/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/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"; 2971 } 2972 description 2973 "At the PCC, the reference to the PCEP peer to 2974 which LSP is delegated; At the PCE, the 2975 reference to the PCEP peer which delegated this 2976 LSP"; 2977 } 2978 leaf srp-id { 2979 type uint32; 2980 description 2981 "The last SRP-ID-number associated with this 2982 LSP."; 2983 } 2984 } 2985 container initiation { 2986 if-feature "pce-initiated"; 2987 description 2988 "The PCE initiation related parameters"; 2989 reference 2990 "RFC 8281: Path Computation Element Communication 2991 Protocol (PCEP) Extensions for PCE-Initiated LSP 2992 Setup in a Stateful PCE Model"; 2993 leaf enabled { 2994 type boolean; 2995 description 2996 "Set to true if this LSP is initiated by a PCE"; 2997 } 2998 leaf peer { 2999 type leafref { 3000 path "/pcep/entity/peers/peer/addr"; 3001 } 3002 must '(../enabled = true())' { 3003 error-message "The LSP must be PCE-Initiated"; 3004 } 3005 description 3006 "At the PCC, the reference to the PCEP peer 3007 that initiated this LSP; At the PCE, the 3008 reference to the PCEP peer where the LSP 3009 is initiated"; 3010 } 3011 } 3012 leaf symbolic-path-name { 3013 type string; 3014 description 3015 "The symbolic path name associated with the LSP."; 3016 reference 3017 "RFC 8231: Path Computation Element Communication 3018 Protocol (PCEP) Extensions for Stateful PCE"; 3019 } 3020 leaf last-error { 3021 type identityref { 3022 base lsp-error; 3023 } 3024 description 3025 "The last error for the LSP."; 3026 } 3027 leaf pst { 3028 type identityref { 3029 base te-types:path-signaling-type; 3030 } 3031 default "te-types:path-setup-rsvp"; 3032 description 3033 "The Path Setup Type"; 3034 reference 3035 "RFC 8408: Conveying Path Setup Type in PCE 3036 Communication Protocol (PCEP) Messages"; 3037 } 3038 list association-list { 3039 if-feature "association"; 3040 key "type id source global-source extended-id"; 3041 description 3042 "List of all PCEP associations"; 3043 leaf type { 3044 type leafref { 3045 path "/pcep/entity/lsp-db/" 3046 + "association-list/type"; 3047 } 3048 description 3049 "PCEP Association Type"; 3050 } 3051 leaf id { 3052 type leafref { 3053 path "/pcep/entity/lsp-db/" 3054 + "association-list/id"; 3055 } 3056 description 3057 "PCEP Association ID"; 3058 } 3059 leaf source { 3060 type leafref { 3061 path "/pcep/entity/lsp-db/" 3062 + "association-list/source"; 3063 } 3064 description 3065 "PCEP Association Source."; 3066 } 3067 leaf global-source { 3068 type leafref { 3069 path "/pcep/entity/lsp-db/" 3070 + "association-list/global-source"; 3071 } 3072 description 3073 "PCEP Association Global Source."; 3074 } 3075 leaf extended-id { 3076 type leafref { 3077 path "/pcep/entity/lsp-db/" 3078 + "association-list/extended-id"; 3079 } 3080 description 3081 "Additional information to 3082 support unique identification."; 3083 } 3084 reference 3085 "RFC 8697: Path Computation Element Communication 3086 Protocol (PCEP) Extensions for Establishing 3087 Relationships between Sets of Label Switched 3088 Paths (LSPs)"; 3089 } 3090 } 3091 } 3092 container path-keys { 3093 when "../role = 'pce' or ../role = 'pcc-and-pce'" { 3094 description 3095 "These fields are applicable when the role is 3096 PCE"; 3097 } 3098 if-feature "path-key"; 3099 config false; 3100 description 3101 "The path-keys generated by the PCE"; 3102 reference 3103 "RFC 5520: Preserving Topology Confidentiality 3104 in Inter-Domain Path Computation Using a Path- 3105 Key-Based Mechanism"; 3106 list path-keys { 3107 key "path-key"; 3108 description 3109 "The list of path-keys generated by the PCE"; 3111 leaf path-key { 3112 type uint16; 3113 description 3114 "The identifier, or token used to represent 3115 the Confidential Path Segment (CPS) within 3116 the context of the PCE"; 3117 } 3118 container cps { 3119 description 3120 "The Confidential Path Segment (CPS)"; 3121 list explicit-route-objects { 3122 key "index"; 3123 description 3124 "List of explicit route objects"; 3125 leaf index { 3126 type uint32; 3127 description 3128 "ERO subobject index"; 3129 } 3130 uses te-types:explicit-route-hop; 3131 } 3132 } 3133 leaf pcc-original { 3134 type leafref { 3135 path "/pcep/entity/peers/peer/addr"; 3136 } 3137 description 3138 "Reference to PCC peer address of 3139 the original request"; 3140 } 3141 leaf req-id { 3142 type uint32; 3143 description 3144 "The request ID of the original PCReq."; 3145 } 3146 leaf retrieved { 3147 type boolean; 3148 description 3149 "If path-key has been retrieved yet"; 3150 } 3151 leaf pcc-retrieved { 3152 type leafref { 3153 path "/pcep/entity/peers/peer/addr"; 3154 } 3155 must '(../retrieved = true())' { 3156 error-message "The Path-key should be retreived"; 3157 } 3158 description 3159 "Reference to PCC peer address which 3160 retreived the path-key"; 3161 } 3162 leaf creation-time { 3163 type yang:timestamp; 3164 description 3165 "The timestamp value at the time this Path-Key 3166 was created."; 3167 } 3168 leaf discard-time { 3169 type uint32; 3170 units "minutes"; 3171 description 3172 "A time after which this path-keys will be 3173 discarded"; 3174 } 3175 leaf reuse-time { 3176 type uint32; 3177 units "minutes"; 3178 description 3179 "A time after which this path-keys could be 3180 reused"; 3181 } 3182 } 3183 } 3184 container peers { 3185 description 3186 "The list of configured peers for the 3187 entity (remote PCE)"; 3188 list peer { 3189 key "addr"; 3190 description 3191 "The peer configured for the entity. 3192 (remote PCE)"; 3193 leaf addr { 3194 type inet:ip-address; 3195 description 3196 "The local Internet address of this 3197 PCEP peer."; 3198 } 3199 leaf role { 3200 type pcep-role; 3201 mandatory true; 3202 description 3203 "The role of the PCEP Peer. 3204 Takes one of the following values. 3205 - unknown(0): this PCEP peer role is not 3206 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"; 3305 } 3306 } 3307 case client { 3308 container tls-client { 3309 uses tlsc:tls-client-grouping { 3310 description 3311 "Client TLS information."; 3312 } 3313 description 3314 "TLS related information"; 3315 } 3316 } 3317 } 3318 } 3319 } 3320 } 3321 leaf discontinuity-time { 3322 type yang:timestamp; 3323 config false; 3324 description 3325 "The timestamp of the time when the information and 3326 statistics were last reset."; 3327 } 3328 leaf initiate-session { 3329 type boolean; 3330 config false; 3331 description 3332 "Indicates whether the local PCEP entity initiates 3333 sessions to this peer, or waits for the peer to 3334 initiate a session."; 3335 } 3336 leaf session-exists { 3337 type boolean; 3338 config false; 3339 description 3340 "Indicates whether a session with 3341 this peer currently exists."; 3342 } 3343 leaf session-up-time { 3344 type yang:timestamp; 3345 config false; 3346 description 3347 "The timestamp value of the last time a 3348 session with this peer was successfully 3349 established."; 3350 } 3351 leaf session-fail-time { 3352 type yang:timestamp; 3353 config false; 3354 description 3355 "The timestamp value of the last time a 3356 session with this peer failed to be 3357 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"; 3402 } 3403 description 3404 "The reference to peer role ."; 3405 } 3406 leaf state-last-change { 3407 type yang:timestamp; 3408 description 3409 "The timestamp value at the time this 3410 session entered its current state as 3411 denoted by the state leaf."; 3412 } 3413 leaf state { 3414 type pcep-sess-state; 3415 description 3416 "The current state of the session. 3417 The set of possible states excludes the 3418 idle state since entries do not exist 3419 in the idle state."; 3420 } 3421 leaf session-creation { 3422 type yang:timestamp; 3423 description 3424 "The timestamp value at the time this 3425 session was created."; 3426 } 3427 leaf connect-retry { 3428 type yang:counter32; 3429 description 3430 "The number of times that the local PCEP 3431 entity has attempted to establish a TCP 3432 connection for this session without 3433 success. The PCEP entity gives up when 3434 this reaches connect-max-retry."; 3435 } 3436 leaf local-id { 3437 type uint8; 3438 description 3439 "The value of the PCEP session ID used by 3440 the local PCEP entity in the Open message 3441 for this session. If state is tcp-pending 3442 then this is the session ID that will be 3443 used in the Open message. Otherwise, this 3444 is the session ID that was sent in the 3445 Open message."; 3446 reference 3447 "RFC 5440: Path Computation Element (PCE) 3448 Communication Protocol (PCEP)"; 3449 } 3450 leaf remote-id { 3451 type uint8; 3452 must "((../state != 'tcp-pending'" 3453 + "and " 3454 + "../state != 'open-wait' )" 3455 + "or " 3456 + "((../state = 'tcp-pending'" 3457 + " or " 3458 + "../state = 'open-wait' )" 3459 + "and (. = 0)))" { 3460 error-message "Invalid remote-id"; 3461 description 3462 "If state is tcp-pending or open-wait then 3463 this leaf is not used and MUST be set to 3464 zero."; 3465 } 3466 description 3467 "The value of the PCEP session ID used by the 3468 peer in its Open message for this session."; 3469 reference 3470 "RFC 5440: Path Computation Element (PCE) 3471 Communication Protocol (PCEP)"; 3472 } 3473 leaf keepalive-timer { 3474 type uint8; 3475 units "seconds"; 3476 must "(../state = 'session-up'" 3477 + "or " 3478 + "(../state != 'session-up'" 3479 + "and (. = 0)))" { 3480 error-message "Invalid keepalive timer"; 3481 description 3482 "This field is used if and only if state is 3483 session-up. Otherwise, it is not used and 3484 MUST be set to zero."; 3485 } 3486 description 3487 "The agreed maximum interval at which the local 3488 PCEP entity transmits PCEP messages on this PCEP 3489 session. Zero means that the local PCEP entity 3490 never sends Keepalives on this session."; 3491 reference 3492 "RFC 5440: Path Computation Element (PCE) 3493 Communication Protocol (PCEP)"; 3494 } 3495 leaf peer-keepalive-timer { 3496 type uint8; 3497 units "seconds"; 3498 must "(../state = 'session-up'" 3499 + "or " 3500 + "(../state != 'session-up'" 3501 + "and " 3502 + "(. = 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."; 3595 } 3596 description 3597 "The interval of time that is remaining until the 3598 local PCEP entity will cease to be overloaded on 3599 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."; 3644 reference 3645 "RFC 8231: Path Computation Element Communication 3646 Protocol (PCEP) Extensions for Stateful PCE"; 3647 } 3648 leaf recv-db-ver { 3649 when "../role = 'pcc'" 3650 + "or " 3651 + "../role = 'pcc-and-pce'" { 3652 description 3653 "This field is applicable when the role is 3654 PCC"; 3655 } 3656 if-feature "stateful"; 3657 if-feature "sync-opt"; 3658 type uint64; 3659 description 3660 "The last received LSP State Database Version 3661 Number"; 3662 reference 3663 "RFC 8231: Path Computation Element Communication 3664 Protocol (PCEP) Extensions for Stateful PCE"; 3665 } 3666 container of-list { 3667 when "../role = 'pce'" 3668 + "or " 3669 + "../role = 'pcc-and-pce'" { 3670 description 3671 "These fields are applicable when the role is 3672 PCE"; 3673 } 3674 if-feature "objective-function"; 3675 uses of-list; 3676 description 3677 "Indicate the list of supported OF on this 3678 session"; 3679 reference 3680 "RFC 5541: Encoding of Objective Functions in 3681 the Path Computation Element Communication 3682 Protocol (PCEP)"; 3683 } 3684 container pst-list { 3685 when "../role = 'pce'" 3686 + "or " 3687 + "../role = 'pcc-and-pce'" { 3688 description 3689 "These fields are applicable when the role is 3690 PCE"; 3691 } 3692 description 3693 "Indicate the list of supported 3694 PST on this session"; 3695 reference 3696 "RFC 8408: Conveying Path Setup Type in PCE 3697 Communication Protocol (PCEP) Messages"; 3698 list path-setup-type { 3699 key "pst"; 3700 description 3701 "The list of authorized PST"; 3702 leaf pst { 3703 type identityref { 3704 base te-types:path-signaling-type; 3705 } 3706 description 3707 "The PST authorized"; 3708 } 3709 } 3710 } 3711 container assoc-type-list { 3712 if-feature "association"; 3713 description 3714 "Indicate the list of supported association types 3715 on this session"; 3716 reference 3717 "RFC 8697: Path Computation Element Communication 3718 Protocol (PCEP) Extensions for Establishing 3719 Relationships between Sets of Label Switched 3720 Paths (LSPs)"; 3721 list assoc-type { 3722 key "at"; 3723 description 3724 "The list of authorized association types"; 3725 leaf at { 3726 type identityref { 3727 base te-types:association-type; 3728 } 3729 description 3730 "The association type authorized"; 3731 } 3732 } 3733 } 3734 leaf speaker-entity-id { 3735 if-feature "sync-opt"; 3736 type string; 3737 description 3738 "The Speaker Entity Identifier"; 3739 reference 3740 "RFC 8232: Optimizations of Label Switched 3741 Path State Synchronization Procedures for 3742 a Stateful PCE"; 3743 } 3744 leaf discontinuity-time { 3745 type yang:timestamp; 3746 description 3747 "The timestamp value of the time when the 3748 statistics were last reset."; 3749 } 3750 } 3751 // session 3752 } 3753 // sessions 3754 } 3755 //peer 3756 } 3757 //peers 3758 } 3759 //entity 3760 } 3762 //pcep 3763 /* 3764 * Notifications 3765 */ 3767 notification pcep-session-up { 3768 description 3769 "This notification is sent when the value of 3770 '/pcep/peers/peer/sessions/session/state' 3771 enters the 'session-up' state."; 3772 uses notification-instance-hdr; 3773 uses notification-session-hdr; 3774 leaf state-last-change { 3775 type yang:timestamp; 3776 description 3777 "The timestamp value at the time this session 3778 entered its current state as denoted by the state 3779 leaf."; 3780 } 3781 leaf state { 3782 type pcep-sess-state; 3783 description 3784 "The current state of the session. 3785 The set of possible states excludes the idle state 3786 since entries do not exist in the idle state."; 3787 } 3788 reference 3789 "RFC 5440: Path Computation Element (PCE) Communication 3790 Protocol (PCEP)"; 3791 } 3793 //notification 3795 notification pcep-session-down { 3796 description 3797 "This notification is sent when the value of 3798 '/pcep/peers/peer/sessions/session/state' 3799 leaves the 'session-up' state."; 3800 uses notification-instance-hdr; 3801 leaf session-initiator { 3802 type pcep-initiator; 3803 description 3804 "The initiator of the session."; 3805 } 3806 leaf state-last-change { 3807 type yang:timestamp; 3808 description 3809 "The timestamp value at the time this session 3810 entered its current state as denoted by the state 3811 leaf."; 3812 } 3813 leaf state { 3814 type pcep-sess-state; 3815 description 3816 "The current state of the session. 3817 The set of possible states excludes the idle state 3818 since entries do not exist in the idle state."; 3819 } 3820 reference 3821 "RFC 5440: Path Computation Element (PCE) Communication 3822 Protocol (PCEP)"; 3823 } 3825 //notification 3827 notification pcep-session-local-overload { 3828 description 3829 "This notification is sent when the local PCEP entity 3830 enters overload state for a peer."; 3831 uses notification-instance-hdr; 3832 uses notification-session-hdr; 3833 leaf overloaded { 3834 type boolean; 3835 description 3836 "If the local PCEP entity has informed the peer 3837 that it is currently overloaded, then this is set 3838 to true. Otherwise, it is set to false."; 3839 } 3840 leaf overload-time { 3841 type uint32; 3842 units "seconds"; 3843 description 3844 "The interval of time that is remaining until the 3845 local PCEP entity will cease to be overloaded on 3846 this session."; 3847 } 3848 reference 3849 "RFC 5440: Path Computation Element (PCE) Communication 3850 Protocol (PCEP)"; 3851 } 3853 //notification 3855 notification pcep-session-local-overload-clear { 3856 description 3857 "This notification is sent when the local PCEP entity 3858 leaves overload state for a peer."; 3859 uses notification-instance-hdr; 3860 leaf overloaded { 3861 type boolean; 3862 description 3863 "If the local PCEP entity has informed the peer 3864 that it is currently overloaded, then this is set 3865 to true. Otherwise, it is set to false."; 3866 } 3867 reference 3868 "RFC 5440: Path Computation Element (PCE) Communication 3869 Protocol (PCEP)"; 3870 } 3872 //notification 3874 notification pcep-session-peer-overload { 3875 description 3876 "This notification is sent when a peer enters overload 3877 state."; 3878 uses notification-instance-hdr; 3879 uses notification-session-hdr; 3880 leaf peer-overloaded { 3881 type boolean; 3882 description 3883 "If the peer has informed the local PCEP entity that 3884 it is currently overloaded, then this is set to 3885 true. Otherwise, it is set to false."; 3886 } 3887 leaf peer-overload-time { 3888 type uint32; 3889 units "seconds"; 3890 description 3891 "The interval of time that is remaining until the 3892 peer will cease to be overloaded. If it is not 3893 known how long the peer will stay in overloaded 3894 state, this leaf is set to zero."; 3895 } 3896 reference 3897 "RFC 5440: Path Computation Element (PCE) Communication 3898 Protocol (PCEP)"; 3899 } 3901 //notification 3903 notification pcep-session-peer-overload-clear { 3904 description 3905 "This notification is sent when a peer leaves overload 3906 state."; 3907 uses notification-instance-hdr; 3908 leaf peer-overloaded { 3909 type boolean; 3910 description 3911 "If the peer has informed the local PCEP entity that 3912 it is currently overloaded, then this is set to 3913 true. Otherwise, it is set to false."; 3914 } 3915 reference 3916 "RFC 5440: Path Computation Element (PCE) Communication 3917 Protocol (PCEP)"; 3918 } 3920 //notification 3921 /* 3922 * RPC 3923 */ 3925 rpc trigger-resync { 3926 if-feature "stateful"; 3927 if-feature "sync-opt"; 3928 description 3929 "Trigger the resyncrinization at the PCE"; 3930 reference 3931 "RFC 8232: Optimizations of Label Switched Path State 3932 Synchronization Procedures for a Stateful PCE"; 3933 input { 3934 leaf pcc { 3935 type leafref { 3936 path "/pcep/entity/peers/peer/addr"; 3937 } 3938 description 3939 "The IP address to identify the PCC. The state 3940 syncronization is re-triggered for all LSPs from 3941 the PCC. The rpc on the PCC will be ignored."; 3942 } 3943 } 3944 //input 3945 } 3947 //rpc 3948 } 3950 3952 10.2. ietf-pcep-stats module 3954 file "ietf-pcep-stats@2020-10-31.yang" 3955 module ietf-pcep-stats { 3956 yang-version 1.1; 3957 namespace "urn:ietf:params:xml:ns:yang:ietf-pcep-stats"; 3958 prefix pcep-stats; 3960 import ietf-pcep { 3961 prefix pcep; 3962 reference 3963 "RFC XXXX: A YANG Data Model for Path Computation 3964 Element Communications Protocol (PCEP)"; 3965 } 3966 import ietf-yang-types { 3967 prefix yang; 3968 reference 3969 "RFC 6991: Common YANG Data Types"; 3970 } 3972 organization 3973 "IETF PCE (Path Computation Element) Working Group"; 3974 contact 3975 "WG Web: 3976 WG List: 3977 Editor: Dhruv Dhody 3978 "; 3980 description 3981 "The YANG module augments the PCEP yang operational 3982 model with statistics, counters and telemetry data. 3984 Copyright (c) 2020 IETF Trust and the persons identified as 3985 authors of the code. All rights reserved. 3987 Redistribution and use in source and binary forms, with or 3988 without modification, is permitted pursuant to, and subject 3989 to the license terms contained in, the Simplified BSD License 3990 set forth in Section 4.c of the IETF Trust's Legal Provisions 3991 Relating to IETF Documents 3992 (https://trustee.ietf.org/license-info). 3994 This version of this YANG module is part of RFC XXXX; see the 3995 RFC itself for full legal notices."; 3997 revision 2020-10-31 { 3998 description 3999 "Initial revision."; 4000 reference 4001 "RFC XXXX: A YANG Data Model for Path Computation 4002 Element Communications Protocol (PCEP)"; 4003 } 4005 /* 4006 * Groupings 4007 */ 4009 grouping pcep-stats { 4010 description 4011 "This grouping defines statistics for PCEP. It is used 4012 for both peer and current session."; 4013 leaf avg-rsp-time { 4014 when "../../pcep:role = 'pce'" 4015 + "or " 4016 + "../../pcep:role = 'pcc-and-pce'" { 4017 description 4018 "Valid for PCEP Peer as PCE"; 4019 } 4020 type uint32; 4021 units "milliseconds"; 4022 description 4023 "The average response time. If an average response time 4024 has not been calculated then this leaf has the value 4025 zero."; 4026 } 4027 leaf lwm-rsp-time { 4028 when "../../pcep:role = 'pce'" 4029 + "or " 4030 + "../../pcep:role = 'pcc-and-pce'" { 4031 description 4032 "Valid for PCEP Peer as PCE"; 4033 } 4034 type uint32; 4035 units "milliseconds"; 4036 description 4037 "The smallest (low-water mark) response time seen. 4038 If no responses have been received then this leaf has 4039 the value zero."; 4040 } 4041 leaf hwm-rsp-time { 4042 when "../../pcep:role = 'pce'" 4043 + "or " 4044 + "../../pcep:role = 'pcc-and-pce'" { 4045 description 4046 "Valid for PCEP Peer as PCE"; 4047 } 4048 type uint32; 4049 units "milliseconds"; 4050 description 4051 "The greatest (high-water mark) response time seen. 4052 If no responses have been received then this object 4053 has the value zero."; 4054 } 4055 leaf num-pcreq-sent { 4056 when "../../pcep:role = 'pce'" 4057 + "or " 4058 + "../../pcep:role = 'pcc-and-pce'" { 4059 description 4060 "Valid for PCEP Peer as PCE"; 4061 } 4062 type yang:counter32; 4063 description 4064 "The number of PCReq messages sent."; 4065 } 4066 leaf num-pcreq-rcvd { 4067 when "../../pcep:role = 'pcc'" 4068 + "or " 4069 + "../../pcep:role = 'pcc-and-pce'" { 4070 description 4071 "Valid for PCEP Peer as PCC"; 4072 } 4073 type yang:counter32; 4074 description 4075 "The number of PCReq messages received."; 4077 } 4078 leaf num-pcrep-sent { 4079 when "../../pcep:role = 'pcc'" 4080 + "or " 4081 + "../../pcep:role = 'pcc-and-pce'" { 4082 description 4083 "Valid for PCEP Peer as PCC"; 4084 } 4085 type yang:counter32; 4086 description 4087 "The number of PCRep messages sent."; 4088 } 4089 leaf num-pcrep-rcvd { 4090 when "../../pcep:role = 'pce'" 4091 + "or " 4092 + "../../pcep:role = 'pcc-and-pce'" { 4093 description 4094 "Valid for PCEP Peer as PCE"; 4095 } 4096 type yang:counter32; 4097 description 4098 "The number of PCRep messages received."; 4099 } 4100 leaf num-pcerr-sent { 4101 type yang:counter32; 4102 description 4103 "The number of PCErr messages sent."; 4104 } 4105 leaf num-pcerr-rcvd { 4106 type yang:counter32; 4107 description 4108 "The number of PCErr messages received."; 4109 } 4110 leaf num-pcntf-sent { 4111 type yang:counter32; 4112 description 4113 "The number of PCNtf messages sent."; 4114 } 4115 leaf num-pcntf-rcvd { 4116 type yang:counter32; 4117 description 4118 "The number of PCNtf messages received."; 4119 } 4120 leaf num-keepalive-sent { 4121 type yang:counter32; 4122 description 4123 "The number of Keepalive messages sent."; 4124 } 4125 leaf num-keepalive-rcvd { 4126 type yang:counter32; 4127 description 4128 "The number of Keepalive messages received."; 4129 } 4130 leaf num-unknown-rcvd { 4131 type yang:counter32; 4132 description 4133 "The number of unknown messages received."; 4134 } 4135 leaf num-corrupt-rcvd { 4136 type yang:counter32; 4137 description 4138 "The number of corrupted PCEP message received."; 4139 } 4140 leaf num-req-sent { 4141 when "../../pcep:role = 'pce'" 4142 + "or " 4143 + "../../pcep:role = 'pcc-and-pce'" { 4144 description 4145 "Valid for PCEP Peer as PCE"; 4146 } 4147 type yang:counter32; 4148 description 4149 "The number of requests sent. A request corresponds 4150 1:1 with an RP object in a PCReq message. This might 4151 be greater than num-pcreq-sent because multiple 4152 requests can be batched into a single PCReq 4153 message."; 4154 } 4155 leaf num-req-sent-pend-rep { 4156 when "../../pcep:role = 'pce'" 4157 + "or " 4158 + "../../pcep:role = 'pcc-and-pce'" { 4159 description 4160 "Valid for PCEP Peer as PCE"; 4161 } 4162 type yang:counter32; 4163 description 4164 "The number of requests that have been sent for 4165 which a response is still pending."; 4166 } 4167 leaf num-req-sent-ero-rcvd { 4168 when "../../pcep:role = 'pce'" 4169 + "or " 4170 + "../../pcep:role = 'pcc-and-pce'" { 4171 description 4172 "Valid for PCEP Peer as PCE"; 4174 } 4175 type yang:counter32; 4176 description 4177 "The number of requests that have been sent for 4178 which a response with an ERO object was received. 4179 Such responses indicate that a path was 4180 successfully computed by the peer."; 4181 } 4182 leaf num-req-sent-nopath-rcvd { 4183 when "../../pcep:role = 'pce'" 4184 + "or " 4185 + "../../pcep:role = 'pcc-and-pce'" { 4186 description 4187 "Valid for PCEP Peer as PCE"; 4188 } 4189 type yang:counter32; 4190 description 4191 "The number of requests that have been sent for 4192 which a response with a NO-PATH object was 4193 received. Such responses indicate that the peer 4194 could not find a path to satisfy the 4195 request."; 4196 } 4197 leaf num-req-sent-cancel-rcvd { 4198 when "../../pcep:role = 'pce'" 4199 + "or " 4200 + "../../pcep:role = 'pcc-and-pce'" { 4201 description 4202 "Valid for PCEP Peer as PCE"; 4203 } 4204 type yang:counter32; 4205 description 4206 "The number of requests that were cancelled with 4207 a PCNtf message. This might be different than 4208 num-pcntf-rcvd because not all PCNtf messages are 4209 used to cancel requests, and a single PCNtf message 4210 can cancel multiple requests."; 4211 } 4212 leaf num-req-sent-error-rcvd { 4213 when "../../pcep:role = 'pce'" 4214 + "or " 4215 + "../../pcep:role = 'pcc-and-pce'" { 4216 description 4217 "Valid for PCEP Peer as PCE"; 4218 } 4219 type yang:counter32; 4220 description 4221 "The number of requests that were rejected with a 4222 PCErr message. This might be different than 4223 num-pcerr-rcvd because not all PCErr messages are 4224 used to reject requests, and a single PCErr message 4225 can reject multiple requests."; 4226 } 4227 leaf num-req-sent-timeout { 4228 when "../../pcep:role = 'pce'" 4229 + "or " 4230 + "../../pcep:role = 'pcc-and-pce'" { 4231 description 4232 "Valid for PCEP Peer as PCE"; 4233 } 4234 type yang:counter32; 4235 description 4236 "The number of requests that have been sent to a peer 4237 and have been abandoned because the peer has taken too 4238 long to respond to them."; 4239 } 4240 leaf num-req-sent-cancel-sent { 4241 when "../../pcep:role = 'pce'" 4242 + "or " 4243 + "../../pcep:role = 'pcc-and-pce'" { 4244 description 4245 "Valid for PCEP Peer as PCE"; 4246 } 4247 type yang:counter32; 4248 description 4249 "The number of requests that were sent to the peer and 4250 explicitly cancelled by the local PCEP entity sending 4251 a PCNtf."; 4252 } 4253 leaf num-req-rcvd { 4254 when "../../pcep:role = 'pcc'" 4255 + "or " 4256 + "../../pcep:role = 'pcc-and-pce'" { 4257 description 4258 "Valid for PCEP Peer as PCC"; 4259 } 4260 type yang:counter32; 4261 description 4262 "The number of requests received. A request 4263 corresponds 1:1 with an RP object in a PCReq 4264 message. 4265 This might be greater than num-pcreq-rcvd because 4266 multiple requests can be batched into a single 4267 PCReq message."; 4268 } 4269 leaf num-req-rcvd-pend-rep { 4270 when "../../pcep:role = 'pcc'" 4271 + "or " 4272 + "../../pcep:role = 'pcc-and-pce'" { 4273 description 4274 "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."; 4799 } 4800 } 4801 //pcep-stats 4802 } 4804 //augment 4805 } 4807 4809 11. Security Considerations 4811 The YANG modules defined in this document is designed to be accessed 4812 via network management protocol such as NETCONF [RFC6241] or RESTCONF 4813 [RFC8040]. The lowest NETCONF layer is the secure transport layer 4814 and the mandatory-to-implement secure transport is SSH [RFC6242]. 4815 The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement 4816 secure transport is TLS [RFC8446] 4818 The NETCONF access control model [RFC8341] provides the means to 4819 restrict access for particular NETCONF or RESTCONF users to a pre- 4820 configured subset of all available NETCONF or RESTCONF protocol 4821 operations and content. 4823 There are a number of data nodes defined in the ietf-pcep YANG module 4824 which are writable/creatable/deletable (i.e., config true, which is 4825 the default). These data nodes may be considered sensitive or 4826 vulnerable in some network environments. Write operations (e.g., 4827 ) to these data nodes without proper protection can have 4828 a negative effect on network operations. These are the subtrees and 4829 data nodes and their sensitivity/vulnerability: 4831 /pcep/entity/ - configure local parameters, capabilities etc. 4833 /pcep/entity/peers - configure remote peers to setup PCEP session. 4835 Unauthorized access to above list can adversely affect the PCEP 4836 session between the local entity and the peers. This may lead to 4837 inability to compute new paths, stateful operations on the delegated 4838 as well as PCE-initiated LSPs. 4840 Some of the readable data nodes in the ietf-pcep YANG module may be 4841 considered sensitive or vulnerable in some network environments. It 4842 is thus important to control read access (e.g., via get, get-config, 4843 or notification) to these data nodes. These are the subtrees and 4844 data nodes and their sensitivity/vulnerability: 4846 /pcep/lsp-db - All the LSPs in the network. Unauthorized access 4847 to this could provide the all path and network usage information. 4849 /pcep/path-keys/ - The Confidential Path Segments (CPS) are hidden 4850 using path-keys. Unauthorized access to this could leak 4851 confidential path information. 4853 Some of the RPC operations in the ietf-pcep YANG module may be 4854 considered sensitive or vulnerable in some network environments. It 4855 is thus important to control access to these operations. These are 4856 the operations and their sensitivity/vulnerability: 4858 trigger-resync - trigger resynchronization with the PCE. 4859 Unauthorized access to this could force a PCEP session into 4860 continuous state synchronization. 4862 Further, this document also include another YANG module (called ietf- 4863 pcep-stats) for maintaining the statistics by augmenting the ietf- 4864 pcep YANG module. There are no data nodes defined in this module 4865 which are writable/creatable/deletable (i.e., config true). The 4866 readable data nodes in this YANG module may be considered sensitive 4867 or vulnerable in some network environments. The statistics could 4868 provide information related to the current usage patterns of the 4869 network. It is thus important to control read access (e.g., via get, 4870 get-config, or notification). 4872 The actual authentication key data (whether locally specified or part 4873 of a key-chain) is sensitive and needs to be kept secret from 4874 unauthorized parties; compromise of the key data would allow an 4875 attacker to forge PCEP traffic that would be accepted as authentic, 4876 potentially compromising the TE domain. 4878 The model describes several notifications, implementations must rate- 4879 limit the generation of these notifications to avoid creating 4880 significant notification load. Otherwise, this notification load may 4881 have some side effects on the system stability and may be exploited 4882 as an attack vector. 4884 12. IANA Considerations 4886 This document request the IANA to register two URIs in the "IETF XML 4887 Registry" [RFC3688]. Following the format in RFC 3688, the following 4888 registrations are requested - 4889 URI: urn:ietf:params:xml:ns:yang:ietf-pcep 4890 Registrant Contact: The IESG 4891 XML: N/A; the requested URI is an XML namespace. 4893 URI: urn:ietf:params:xml:ns:yang:ietf-pcep-stats 4894 Registrant Contact: The IESG 4895 XML: N/A; the requested URI is an XML namespace. 4897 This document request the IANA to register two YANG modules in the 4898 "YANG Module Names" registry [RFC6020], as follows - 4900 Name: ietf-pcep 4901 Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep 4902 Prefix: pcep 4903 Reference: [This.I-D] 4905 Name: ietf-pcep-stats 4906 Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep-stats 4907 Prefix: pcep-stats 4908 Reference: [This.I-D] 4910 13. Implementation Status 4912 [Note to the RFC Editor - remove this section before publication, as 4913 well as remove the reference to RFC 7942.] 4915 This section records the status of known implementations of the 4916 protocol defined by this specification at the time of posting of this 4917 Internet-Draft, and is based on a proposal described in [RFC7942]. 4918 The description of implementations in this section is intended to 4919 assist the IETF in its decision processes in progressing drafts to 4920 RFCs. Please note that the listing of any individual implementation 4921 here does not imply endorsement by the IETF. Furthermore, no effort 4922 has been spent to verify the information presented here that was 4923 supplied by IETF contributors. This is not intended as, and must not 4924 be construed to be, a catalog of available implementations or their 4925 features. Readers are advised to note that other implementations may 4926 exist. 4928 According to [RFC7942], "this will allow reviewers and working groups 4929 to assign due consideration to documents that have the benefit of 4930 running code, which may serve as evidence of valuable experimentation 4931 and feedback that have made the implemented protocols more mature. 4932 It is up to the individual working groups to use this information as 4933 they see fit". 4935 Currently, there are no known implementations of the YANG Module as 4936 specified. 4938 14. Acknowledgements 4940 The initial document is based on the PCEP MIB [RFC7420]. We would 4941 like to thank the authors of aforementioned documents. 4943 Thanks to Mahesh Jethmalani for the Yang Doctor review. 4945 Thanks to Martin Bjorklund and Tom Petch for providing guidance 4946 regarding the Yang guidelines. 4948 15. References 4950 15.1. Normative References 4952 [I-D.ietf-isis-yang-isis-cfg] 4953 Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. 4954 Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- 4955 isis-yang-isis-cfg-42 (work in progress), October 2019. 4957 [I-D.ietf-netconf-tls-client-server] 4958 Watsen, K., "YANG Groupings for TLS Clients and TLS 4959 Servers", draft-ietf-netconf-tls-client-server-22 (work in 4960 progress), August 2020. 4962 [I-D.ietf-ospf-yang] 4963 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 4964 "YANG Data Model for OSPF Protocol", draft-ietf-ospf- 4965 yang-29 (work in progress), October 2019. 4967 [I-D.ietf-teas-yang-te] 4968 Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, 4969 "A YANG Data Model for Traffic Engineering Tunnels, Label 4970 Switched Paths and Interfaces", draft-ietf-teas-yang-te-25 4971 (work in progress), July 2020. 4973 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 4974 Requirement Levels", BCP 14, RFC 2119, 4975 DOI 10.17487/RFC2119, March 1997, 4976 . 4978 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 4979 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 4980 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 4981 . 4983 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 4984 DOI 10.17487/RFC3688, January 2004, 4985 . 4987 [RFC5088] Le Roux, JL., Ed., Vasseur, JP., Ed., Ikejiri, Y., and R. 4988 Zhang, "OSPF Protocol Extensions for Path Computation 4989 Element (PCE) Discovery", RFC 5088, DOI 10.17487/RFC5088, 4990 January 2008, . 4992 [RFC5089] Le Roux, JL., Ed., Vasseur, JP., Ed., Ikejiri, Y., and R. 4993 Zhang, "IS-IS Protocol Extensions for Path Computation 4994 Element (PCE) Discovery", RFC 5089, DOI 10.17487/RFC5089, 4995 January 2008, . 4997 [RFC5440] Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation 4998 Element (PCE) Communication Protocol (PCEP)", RFC 5440, 4999 DOI 10.17487/RFC5440, March 2009, 5000 . 5002 [RFC5520] Bradford, R., Ed., Vasseur, JP., and A. Farrel, 5003 "Preserving Topology Confidentiality in Inter-Domain Path 5004 Computation Using a Path-Key-Based Mechanism", RFC 5520, 5005 DOI 10.17487/RFC5520, April 2009, 5006 . 5008 [RFC5541] Le Roux, JL., Vasseur, JP., and Y. Lee, "Encoding of 5009 Objective Functions in the Path Computation Element 5010 Communication Protocol (PCEP)", RFC 5541, 5011 DOI 10.17487/RFC5541, June 2009, 5012 . 5014 [RFC5557] Lee, Y., Le Roux, JL., King, D., and E. Oki, "Path 5015 Computation Element Communication Protocol (PCEP) 5016 Requirements and Protocol Extensions in Support of Global 5017 Concurrent Optimization", RFC 5557, DOI 10.17487/RFC5557, 5018 July 2009, . 5020 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 5021 the Network Configuration Protocol (NETCONF)", RFC 6020, 5022 DOI 10.17487/RFC6020, October 2010, 5023 . 5025 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 5026 and A. Bierman, Ed., "Network Configuration Protocol 5027 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 5028 . 5030 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 5031 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 5032 . 5034 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 5035 RFC 6991, DOI 10.17487/RFC6991, July 2013, 5036 . 5038 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 5039 RFC 7950, DOI 10.17487/RFC7950, August 2016, 5040 . 5042 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 5043 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 5044 . 5046 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 5047 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 5048 May 2017, . 5050 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 5051 Zhang, "YANG Data Model for Key Chains", RFC 8177, 5052 DOI 10.17487/RFC8177, June 2017, 5053 . 5055 [RFC8231] Crabbe, E., Minei, I., Medved, J., and R. Varga, "Path 5056 Computation Element Communication Protocol (PCEP) 5057 Extensions for Stateful PCE", RFC 8231, 5058 DOI 10.17487/RFC8231, September 2017, 5059 . 5061 [RFC8232] Crabbe, E., Minei, I., Medved, J., Varga, R., Zhang, X., 5062 and D. Dhody, "Optimizations of Label Switched Path State 5063 Synchronization Procedures for a Stateful PCE", RFC 8232, 5064 DOI 10.17487/RFC8232, September 2017, 5065 . 5067 [RFC8253] Lopez, D., Gonzalez de Dios, O., Wu, Q., and D. Dhody, 5068 "PCEPS: Usage of TLS to Provide a Secure Transport for the 5069 Path Computation Element Communication Protocol (PCEP)", 5070 RFC 8253, DOI 10.17487/RFC8253, October 2017, 5071 . 5073 [RFC8281] Crabbe, E., Minei, I., Sivabalan, S., and R. Varga, "Path 5074 Computation Element Communication Protocol (PCEP) 5075 Extensions for PCE-Initiated LSP Setup in a Stateful PCE 5076 Model", RFC 8281, DOI 10.17487/RFC8281, December 2017, 5077 . 5079 [RFC8306] Zhao, Q., Dhody, D., Ed., Palleti, R., and D. King, 5080 "Extensions to the Path Computation Element Communication 5081 Protocol (PCEP) for Point-to-Multipoint Traffic 5082 Engineering Label Switched Paths", RFC 8306, 5083 DOI 10.17487/RFC8306, November 2017, 5084 . 5086 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 5087 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 5088 . 5090 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 5091 Access Control Model", STD 91, RFC 8341, 5092 DOI 10.17487/RFC8341, March 2018, 5093 . 5095 [RFC8408] Sivabalan, S., Tantsura, J., Minei, I., Varga, R., and J. 5096 Hardwick, "Conveying Path Setup Type in PCE Communication 5097 Protocol (PCEP) Messages", RFC 8408, DOI 10.17487/RFC8408, 5098 July 2018, . 5100 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 5101 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 5102 . 5104 [RFC8664] Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W., 5105 and J. Hardwick, "Path Computation Element Communication 5106 Protocol (PCEP) Extensions for Segment Routing", RFC 8664, 5107 DOI 10.17487/RFC8664, December 2019, 5108 . 5110 [RFC8697] Minei, I., Crabbe, E., Sivabalan, S., Ananthakrishnan, H., 5111 Dhody, D., and Y. Tanaka, "Path Computation Element 5112 Communication Protocol (PCEP) Extensions for Establishing 5113 Relationships between Sets of Label Switched Paths 5114 (LSPs)", RFC 8697, DOI 10.17487/RFC8697, January 2020, 5115 . 5117 [RFC8776] Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, 5118 "Common YANG Data Types for Traffic Engineering", 5119 RFC 8776, DOI 10.17487/RFC8776, June 2020, 5120 . 5122 [RFC8779] Margaria, C., Ed., Gonzalez de Dios, O., Ed., and F. 5123 Zhang, Ed., "Path Computation Element Communication 5124 Protocol (PCEP) Extensions for GMPLS", RFC 8779, 5125 DOI 10.17487/RFC8779, July 2020, 5126 . 5128 15.2. Informative References 5130 [RFC4655] Farrel, A., Vasseur, J., and J. Ash, "A Path Computation 5131 Element (PCE)-Based Architecture", RFC 4655, 5132 DOI 10.17487/RFC4655, August 2006, 5133 . 5135 [RFC7420] Koushik, A., Stephan, E., Zhao, Q., King, D., and J. 5136 Hardwick, "Path Computation Element Communication Protocol 5137 (PCEP) Management Information Base (MIB) Module", 5138 RFC 7420, DOI 10.17487/RFC7420, December 2014, 5139 . 5141 [RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running 5142 Code: The Implementation Status Section", BCP 205, 5143 RFC 7942, DOI 10.17487/RFC7942, July 2016, 5144 . 5146 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 5147 and R. Wilton, "Network Management Datastore Architecture 5148 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 5149 . 5151 Appendix A. Example 5153 The example below provide an overview of PCEP peer session 5154 informations and LSP-DB in the Yang Module. 5156 +-------+ +-------+ 5157 | | | | 5158 | PCC1 |<---------------->| | 5159 | | | | 5160 +-------+ | | 5161 IP:192.0.2.1 | | 5162 | PCE | 5163 | | 5164 +-------+ | | 5165 | | | | 5166 | PCC2 |<---------------->| | 5167 | | | | 5168 +-------+ | | 5169 IP:192.0.2.2 | | 5170 | | 5171 | | 5172 +-------+ | | 5173 | | | | 5174 | PCC4 |<---------------->| | 5175 | | | | 5176 +-------+ | | 5177 IP:2001:DB8::4 | | 5178 +-------+ 5179 IP:192.0.2.3 5180 2001:DB8::3 5182 at PCE: 5183 { 5184 "entity": [ 5185 { 5186 "addr": "192.0.2.3", 5187 "oper-status": "oper-status-up", 5188 "role":"pce", 5189 "capability" : { 5190 "stateful": { 5191 "enabled": true 5192 } 5193 } 5194 "lsp-db" : [ 5195 "lsp" : { 5196 "plsp-id": 3, 5197 "pcc-id" :"192.0.2.1", 5198 "source": "192.0.2.1", 5199 "destination": "192.0.2.4" 5200 "tunnel-id": 16, 5201 "lsp-id": 3, 5202 "extended-tunnel-id": 0, 5203 "oper-status": "oper-status-up", 5204 "delegated": true, 5205 "symbolic-path-name": "iewauh", 5206 }, 5207 "lsp" : { 5208 "plsp-id": 4, 5209 "pcc-id" :"192.0.2.2", 5210 "source": "192.0.2.2", 5211 "destination": "192.0.2.5" 5212 "tunnel-id": 17, 5213 "lsp-id": 4 5214 "extended-tunnel-id": 0, 5215 "oper-status": "oper-status-up", 5216 "delegated": true, 5217 "symbolic-path-name": "iewauhiewauh", 5218 "extended-tunnel-id": 0 5219 } 5220 ] 5221 "peers":[ 5222 { 5223 "peer": { 5224 "addr":"192.0.2.1", 5225 "role": "pcc", 5227 "capability": { 5228 "stateful" : { 5229 "enabled": true, 5230 "active": yes, 5231 } 5232 } 5233 "sessions": [ 5234 { 5235 "session": { 5236 "initiator": "remote", 5237 "role": "pcc", 5238 } 5239 } 5240 ] 5241 } 5242 }, 5243 { 5244 "peer": { 5245 "addr":"192.0.2.2", 5246 "role": "pcc", 5248 "capability": { 5249 "stateful" : { 5250 "enabled": true, 5251 "active": true, 5252 } 5253 } 5254 "sessions": [ 5255 { 5256 "session": { 5257 "initiator": "remote", 5258 "role": "pcc", 5259 } 5260 } 5261 ] 5262 } 5263 } 5264 ] 5265 }, 5267 { 5268 "addr": "2001:DB8::3", 5269 "oper-status": "oper-status-up", 5270 "role":"pce", 5271 "peers":[ 5272 { 5273 "peer": { 5274 "addr":"2001:DB8::4", 5275 "role": "pcc", 5276 "sessions": [ 5277 { 5278 "session": { 5279 "initiator": "remote", 5280 "role": "pcc", 5281 } 5282 } 5283 ] 5284 } 5285 } 5286 ] 5287 } 5288 } 5290 Appendix B. Contributor Addresses 5292 Rohit Pobbathi 5293 Huawei Technologies 5294 Divyashree Techno Park, Whitefield 5295 Bangalore, Karnataka 560066 5296 India 5298 EMail: rohit.pobbathi@huawei.com 5300 Vinod KumarS 5301 Huawei Technologies 5302 Divyashree Techno Park, Whitefield 5303 Bangalore, Karnataka 560066 5304 India 5306 EMail: vinods.kumar@huawei.com 5308 Zafar Ali 5309 Cisco Systems 5310 Canada 5312 EMail: zali@cisco.com 5314 Xufeng Liu 5315 Volta Networks 5317 EMail: xufeng.liu.ietf@gmail.com 5319 Young Lee 5320 Samsung 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 5336 Avantika 5337 ECI Telecom 5338 India 5340 EMail: avantika.srm@gmail.com 5342 Shashikanth 5343 Huawei Technologies 5344 Divyashree Techno Park, Whitefield 5345 Bangalore, Karnataka 560066 5346 India 5348 EMail: shashikanth.vh@huawei.com 5350 Authors' Addresses 5352 Dhruv Dhody (editor) 5353 Huawei Technologies 5354 Divyashree Techno Park, Whitefield 5355 Bangalore, Karnataka 560066 5356 India 5358 EMail: dhruv.ietf@gmail.com 5360 Jonathan Hardwick 5361 Metaswitch 5362 100 Church Street 5363 Enfield EN2 6BQ 5364 UK 5366 EMail: jonathan.hardwick@metaswitch.com 5368 Vishnu Pavan Beeram 5369 Juniper Networks 5370 USA 5372 EMail: vbeeram@juniper.net 5374 Jeff Tantsura 5375 Apstra, Inc. 5376 USA 5378 EMail: jefftant.ietf@gmail.com