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