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