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