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