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