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