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