idnits 2.17.1 draft-ietf-pce-pcep-yang-03.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 192 has weird spacing: '... rw for c...' == Line 193 has weird spacing: '... ro for n...' == Line 289 has weird spacing: '...in-type dom...' == Line 333 has weird spacing: '...in-type dom...' == Line 358 has weird spacing: '...rw name lea...' == (8 more instances...) -- The document date (June 29, 2017) is 2493 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 4766, but no explicit reference was found in the text ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-11) exists of draft-ietf-pce-pce-initiated-lsp-10 == Outdated reference: A later version (-10) exists of draft-ietf-pce-lsp-setup-type-04 == Outdated reference: A later version (-16) exists of draft-ietf-pce-segment-routing-09 == Outdated reference: A later version (-36) exists of draft-ietf-teas-yang-te-06 == Outdated reference: A later version (-41) exists of draft-ietf-netconf-tls-client-server-03 == Outdated reference: A later version (-20) exists of draft-ietf-netmod-rfc6087bis-13 == Outdated reference: A later version (-10) exists of draft-ietf-netmod-revised-datastores-02 == Outdated reference: A later version (-18) exists of draft-ietf-pce-pceps-14 Summary: 2 errors (**), 0 flaws (~~), 16 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 31, 2017 Metaswitch 6 V. Beeram 7 Juniper Networks 8 J. Tantsura 9 June 29, 2017 11 A YANG Data Model for Path Computation Element Communications Protocol 12 (PCEP) 13 draft-ietf-pce-pcep-yang-03 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 http://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 31, 2017. 41 Copyright Notice 43 Copyright (c) 2017 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 (http://trustee.ietf.org/license-info) in effect on the date of 49 publication of this document. Please review these documents 50 carefully, as they describe your rights and restrictions with respect 51 to this document. Code Components extracted from this document must 52 include Simplified BSD License text as described in Section 4.e of 53 the Trust Legal Provisions and are provided without warranty as 54 described in the Simplified BSD License. 56 Table of Contents 58 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 59 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 60 3. Terminology and Notation . . . . . . . . . . . . . . . . . . 3 61 3.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 62 3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5 63 4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 6 64 5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 6 65 5.1. The Entity . . . . . . . . . . . . . . . . . . . . . . . 15 66 5.2. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 15 67 5.3. The Session Lists . . . . . . . . . . . . . . . . . . . . 16 68 5.4. Notifications . . . . . . . . . . . . . . . . . . . . . . 16 69 5.5. RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 70 6. The Design of PCEP Statistics Data Model . . . . . . . . . . 16 71 7. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 19 72 7.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 20 73 8. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 20 74 8.1. The PCE-Initiated LSP . . . . . . . . . . . . . . . . . . 20 75 9. Other Considerations . . . . . . . . . . . . . . . . . . . . 20 76 9.1. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 20 77 10. PCEP YANG Modules . . . . . . . . . . . . . . . . . . . . . . 21 78 10.1. ietf-pcep module . . . . . . . . . . . . . . . . . . . . 21 79 10.2. ietf-pcep-stats module . . . . . . . . . . . . . . . . . 77 80 11. Security Considerations . . . . . . . . . . . . . . . . . . . 97 81 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 98 82 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 98 83 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 98 84 14.1. Normative References . . . . . . . . . . . . . . . . . . 98 85 14.2. Informative References . . . . . . . . . . . . . . . . . 100 86 Appendix A. Contributor Addresses . . . . . . . . . . . . . . . 102 87 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 103 89 1. Introduction 91 The Path Computation Element (PCE) defined in [RFC4655] is an entity 92 that is capable of computing a network path or route based on a 93 network graph, and applying computational constraints. A Path 94 Computation Client (PCC) may make requests to a PCE for paths to be 95 computed. 97 PCEP is the communication protocol between a PCC and PCE and is 98 defined in [RFC5440]. PCEP interactions include path computation 99 requests and path computation replies as well as notifications of 100 specific states related to the use of a PCE in the context of 101 Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) 102 Traffic Engineering (TE). [I-D.ietf-pce-stateful-pce] specifies 103 extensions to PCEP to enable stateful control of MPLS TE LSPs. 105 This document defines a YANG [RFC6020] data model for the management 106 of PCEP speakers. It is important to establish a common data model 107 for how PCEP speakers are identified, configured, and monitored. The 108 data model includes configuration data and state data (status 109 information and counters for the collection of statistics). 111 This document contains a specification of the PCEP YANG module, 112 "ietf-pcep" which provides the PCEP [RFC5440] data model. 114 The PCEP operational state is included in the same tree as the PCEP 115 configuration consistent with Network Management Datastore 116 Architecture [I-D.ietf-netmod-revised-datastores]. The origin of the 117 data is indicated as per the origin metadata annotation. 119 2. Requirements Language 121 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 122 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 123 document are to be interpreted as described in [RFC2119]. 125 3. Terminology and Notation 127 This document uses the terminology defined in [RFC4655] and 128 [RFC5440]. In particular, it uses the following acronyms. 130 o Path Computation Request message (PCReq). 132 o Path Computation Reply message (PCRep). 134 o Notification message (PCNtf). 136 o Error message (PCErr). 138 o Request Parameters object (RP). 140 o Synchronization Vector object (SVEC). 142 o Explicit Route object (ERO). 144 This document also uses the following terms defined in [RFC7420]: 146 o PCEP entity: a local PCEP speaker. 148 o PCEP peer: to refer to a remote PCEP speaker. 150 o PCEP speaker: where it is not necessary to distinguish between 151 local and remote. 153 Further, this document also uses the following terms defined in 154 [I-D.ietf-pce-stateful-pce] : 156 o Stateful PCE, Passive Stateful PCE, Active Stateful PCE 158 o Delegation, Revocation, Redelegation 160 o LSP State Report, Path Computation Report message (PCRpt). 162 o LSP State Update, Path Computation Update message (PCUpd). 164 [I-D.ietf-pce-pce-initiated-lsp] : 166 o PCE-initiated LSP, Path Computation LSP Initiate Message 167 (PCInitiate). 169 [I-D.ietf-pce-lsp-setup-type] : 171 o Path Setup Type (PST). 173 [I-D.ietf-pce-segment-routing] : 175 o Segment Routing (SR). 177 3.1. Tree Diagrams 179 A graphical representation of the complete data tree is presented in 180 Section 5. The meaning of the symbols in these diagrams is as 181 follows and as per [I-D.ietf-netmod-rfc6087bis]. Each node is 182 printed as: 184 186 is one of: 187 + for current 188 x for deprecated 189 o for obsolete 191 is one of: 192 rw for configuration data 193 ro for non-configuration data 194 -x for rpcs and actions 195 -n for notifications 197 is the name of the node 198 () means that the node is a choice node 199 :() means that the node is a case node 201 If the node is augmented into the tree from another module, 202 its name is printed as :. 204 is one of: 205 ? for an optional leaf, choice, anydata or anyxml 206 ! for a presence container 207 * for a leaf-list or list 208 [] for a list's keys 210 is the name of the type for leafs and leaf-lists 212 If the type is a leafref, the type is printed as 213 "-> TARGET", where TARGET is either the leafref path, 214 with prefixed removed if possible. 216 is the list of features this node depends on, 217 printed within curly brackets and a question mark "{...}? 219 3.2. Prefixes in Data Node Names 221 In this document, names of data nodes and other data model objects 222 are often used without a prefix, as long as it is clear from the 223 context in which YANG module each name is defined. Otherwise, names 224 are prefixed using the standard prefix associated with the 225 corresponding YANG module, as shown in Table 1. 227 +-----------+-----------------+-------------------------------------+ 228 | Prefix | YANG module | Reference | 229 +-----------+-----------------+-------------------------------------+ 230 | yang | ietf-yang-types | [RFC6991] | 231 | inet | ietf-inet-types | [RFC6991] | 232 | te | ietf-te | [I-D.ietf-teas-yang-te] | 233 | te-types | ietf-te-types | [I-D.ietf-teas-yang-te] | 234 | key-chain | ietf-key-chain | [RFC8177] | 235 | nacm | ietf-netconf- | [RFC6536] | 236 | | acm | | 237 | tls- | ietf-tls-server | [I-D.ietf-netconf-tls-client-server | 238 | server | | ] | 239 | tls- | ietf-tls-client | [I-D.ietf-netconf-tls-client-server | 240 | client | | ] | 241 +-----------+-----------------+-------------------------------------+ 243 Table 1: Prefixes and corresponding YANG modules 245 4. Objectives 247 This section describes some of the design objectives for the model: 249 o In case of existing implementations, it needs to map the data 250 model defined in this document to their proprietary native data 251 model. To facilitate such mappings, the data model should be 252 simple. 254 o The data model should be suitable for new implementations to use 255 as is. 257 o Mapping to the PCEP MIB Module should be clear. 259 o The data model should allow for static configurations of peers. 261 o The data model should include read-only counters in order to 262 gather statistics for sent and received PCEP messages, received 263 messages with errors, and messages that could not be sent due to 264 errors. This could be in a separate model which augments the base 265 data model. 267 o It should be fairly straightforward to augment the base data model 268 for advanced PCE features. 270 5. The Design of PCEP Data Model 272 The module, "ietf-pcep", defines the basic components of a PCE 273 speaker. 275 module: ietf-pcep 276 +--rw pcep! 277 +--rw entity 278 +--rw addr inet:ip-address 279 +--rw enabled? boolean 280 +--rw role pcep-role 281 +--rw description? string 282 +--rw speaker-entity-id? string 283 | {stateful-sync-opt}? 284 +--rw admin-status? pcep-admin-status 285 +--ro index? uint32 286 +--ro oper-status? pcep-oper-status 287 +--rw domain 288 | +--rw domain* [domain-type domain] 289 | +--rw domain-type domain-type 290 | +--rw domain domain 291 +--rw capability 292 | +--rw gmpls? boolean {gmpls}? 293 | +--rw bi-dir? boolean 294 | +--rw diverse? boolean 295 | +--rw load-balance? boolean 296 | +--rw synchronize? boolean {svec}? 297 | +--rw objective-function? boolean 298 | | {objective-function}? 299 | +--rw add-path-constraint? boolean 300 | +--rw prioritization? boolean 301 | +--rw multi-request? boolean 302 | +--rw gco? boolean {gco}? 303 | +--rw p2mp? boolean {p2mp}? 304 | +--rw stateful {stateful}? 305 | | +--rw enabled? boolean 306 | | +--rw active? boolean 307 | | +--rw pce-initiated? boolean 308 | | | {pce-initiated}? 309 | | +--rw include-db-ver? boolean 310 | | | {stateful-sync-opt}? 311 | | +--rw trigger-resync? boolean 312 | | | {stateful-sync-opt}? 313 | | +--rw trigger-initial-sync? boolean 314 | | | {stateful-sync-opt}? 315 | | +--rw incremental-sync? boolean 316 | | {stateful-sync-opt}? 317 | +--rw sr {sr}? 318 | +--rw enabled? boolean 319 +--rw pce-info 320 | +--rw scope 321 | | +--rw intra-area-scope? boolean 322 | | +--rw intra-area-pref? uint8 323 | | +--rw inter-area-scope? boolean 324 | | +--rw inter-area-scope-default? boolean 325 | | +--rw inter-area-pref? uint8 326 | | +--rw inter-as-scope? boolean 327 | | +--rw inter-as-scope-default? boolean 328 | | +--rw inter-as-pref? uint8 329 | | +--rw inter-layer-scope? boolean 330 | | +--rw inter-layer-pref? uint8 331 | +--rw neigh-domains 332 | | +--rw domain* [domain-type domain] 333 | | +--rw domain-type domain-type 334 | | +--rw domain domain 335 | +--rw path-key {path-key}? 336 | +--rw enabled? boolean 337 | +--rw discard-timer? uint32 338 | +--rw reuse-time? uint32 339 | +--rw pce-id? inet:ip-address 340 +--rw (auth-type-selection)? 341 | +--:(auth-key-chain) 342 | | +--rw key-chain? 343 | | key-chain:key-chain-ref 344 | +--:(auth-key) 345 | | +--rw crypto-algorithm identityref 346 | | +--rw key-string 347 | | +--rw (key-string-style)? 348 | | +--:(keystring) 349 | | | +--rw keystring? string 350 | | +--:(hexadecimal) 351 | | {key-chain:hex-key-string}? 352 | | +--rw hexadecimal-string? 353 | | yang:hex-string 354 | +--:(auth-tls) {tls}? 355 | +--rw tls-pce 356 | | +--rw certificates 357 | | | +--rw certificate* [name] 358 | | | +--rw name leafref 359 | | +--rw client-auth 360 | | | +--rw trusted-ca-certs? leafref 361 | | | +--rw trusted-client-certs? leafref 362 | | +--rw hello-params 363 | | {tls-server-hello-params-config}? 364 | | +--rw tls-versions 365 | | | +--rw tls-version* identityref 366 | | +--rw cipher-suites 367 | | +--rw cipher-suite* identityref 368 | +--rw tls-pcc 369 | +--rw server-auth 370 | | +--rw trusted-ca-certs? leafref 371 | | +--rw trusted-server-certs? leafref 372 | +--rw client-auth 373 | | +--rw (auth-type)? 374 | | +--:(certificate) 375 | | +--rw certificate? leafref 376 | +--rw hello-params 377 | {tls-client-hello-params-config}? 378 | +--rw tls-versions 379 | | +--rw tls-version* identityref 380 | +--rw cipher-suites 381 | +--rw cipher-suite* identityref 382 +--rw connect-timer? uint32 383 +--rw connect-max-retry? uint32 384 +--rw init-backoff-timer? uint32 385 +--rw max-backoff-timer? uint32 386 +--rw open-wait-timer? uint32 387 +--rw keep-wait-timer? uint32 388 +--rw keep-alive-timer? uint32 389 +--rw dead-timer? uint32 390 +--rw allow-negotiation? boolean 391 +--rw max-keep-alive-timer? uint32 392 +--rw max-dead-timer? uint32 393 +--rw min-keep-alive-timer? uint32 394 +--rw min-dead-timer? uint32 395 +--rw sync-timer? uint32 {svec}? 396 +--rw request-timer? uint32 397 +--rw max-sessions? uint32 398 +--rw max-unknown-reqs? uint32 399 +--rw max-unknown-msgs? uint32 400 +--rw pcep-notification-max-rate uint32 401 +--rw stateful-parameter {stateful}? 402 | +--rw state-timeout? uint32 403 | +--rw redelegation-timeout? uint32 404 | +--rw rpt-non-pcep-lsp? boolean 405 +--rw of-list {objective-function}? 406 | +--rw objective-function* [of] 407 | +--rw of objective-function 408 +--ro lsp-db {stateful}? 409 | +--ro db-ver? uint64 410 | | {stateful-sync-opt}? 411 | +--ro association-list* 412 | | [id source global-source extended-id] 413 | | +--ro type? assoc-type 414 | | +--ro id uint16 415 | | +--ro source inet:ip-address 416 | | +--ro global-source uint32 417 | | +--ro extended-id string 418 | | +--ro lsp* [plsp-id pcc-id] 419 | | +--ro plsp-id 420 | | | -> /pcep/entity/lsp-db/lsp/plsp-id 421 | | +--ro pcc-id 422 | | -> /pcep/entity/lsp-db/lsp/pcc-id 423 | +--ro lsp* [plsp-id pcc-id] 424 | +--ro plsp-id uint32 425 | +--ro pcc-id inet:ip-address 426 | +--ro lsp-ref 427 | | +--ro source? 428 | | | -> /te:te/lsps-state/lsp/source 429 | | +--ro destination? 430 | | | -> /te:te/lsps-state/lsp/destination 431 | | +--ro tunnel-id? 432 | | | -> /te:te/lsps-state/lsp/tunnel-id 433 | | +--ro lsp-id? 434 | | | -> /te:te/lsps-state/lsp/lsp-id 435 | | +--ro extended-tunnel-id? leafref 436 | | +--ro type? 437 | | -> /te:te/lsps-state/lsp/type 438 | +--ro admin-state? boolean 439 | +--ro operational-state? operational-state 440 | +--ro delegated 441 | | +--ro enabled? boolean 442 | | +--ro peer? -> /pcep/entity/peers/peer/addr 443 | | +--ro srp-id? uint32 444 | +--ro initiation {pce-initiated}? 445 | | +--ro enabled? boolean 446 | | +--ro peer? -> /pcep/entity/peers/peer/addr 447 | +--ro symbolic-path-name? string 448 | +--ro last-error? lsp-error 449 | +--ro pst? pst 450 | +--ro association-list* 451 | [id source global-source extended-id] 452 | +--ro id leafref 453 | +--ro source leafref 454 | +--ro global-source leafref 455 | +--ro extended-id leafref 456 +--ro path-keys {path-key}? 457 | +--ro path-keys* [path-key] 458 | +--ro path-key uint16 459 | +--ro cps 460 | | +--ro explicit-route-objects* [index] 461 | | +--ro explicit-route-usage? identityref 462 | | +--ro index uint32 463 | | +--ro (type)? 464 | | +--:(ip-address) 465 | | | +--ro ip-address-hop 466 | | | +--ro address? inet:ip-address 467 | | | +--ro hop-type? te-hop-type 468 | | +--:(as-number) 469 | | | +--ro as-number-hop 470 | | | +--ro as-number? binary 471 | | | +--ro hop-type? te-hop-type 472 | | +--:(unnumbered-link) 473 | | | +--ro unnumbered-hop 474 | | | +--ro router-id? 475 | | | | inet:ip-address 476 | | | +--ro interface-id? uint32 477 | | | +--ro hop-type? te-hop-type 478 | | +--:(label) 479 | | | +--ro label-hop 480 | | | +--ro value? 481 | | | rt-types:generalized-label 482 | | +--:(sid) 483 | | +--ro sid-hop 484 | | +--ro sid? 485 | | rt-types:generalized-label 486 | +--ro pcc-original? 487 | | -> /pcep/entity/peers/peer/addr 488 | +--ro req-id? uint32 489 | +--ro retrieved? boolean 490 | +--ro pcc-retrieved? 491 | | -> /pcep/entity/peers/peer/addr 492 | +--ro creation-time? yang:timestamp 493 | +--ro discard-time? uint32 494 | +--ro reuse-time? uint32 495 +--rw peers 496 +--rw peer* [addr] 497 +--rw addr inet:ip-address 498 +--ro role? pcep-role 499 +--rw description? string 500 +--rw domain 501 | +--rw domain* [domain-type domain] 502 | +--rw domain-type domain-type 503 | +--rw domain domain 504 +--rw capability 505 | +--rw gmpls? boolean 506 | | {gmpls}? 507 | +--rw bi-dir? boolean 508 | +--rw diverse? boolean 509 | +--rw load-balance? boolean 510 | +--rw synchronize? boolean {svec}? 511 | +--rw objective-function? boolean 512 | | {objective-function}? 513 | +--rw add-path-constraint? boolean 514 | +--rw prioritization? boolean 515 | +--rw multi-request? boolean 516 | +--rw gco? boolean {gco}? 517 | +--rw p2mp? boolean {p2mp}? 518 | +--rw stateful {stateful}? 519 | | +--rw enabled? boolean 520 | | +--rw active? boolean 521 | | +--rw pce-initiated? boolean 522 | | | {pce-initiated}? 523 | | +--rw include-db-ver? boolean 524 | | | {stateful-sync-opt}? 525 | | +--rw trigger-resync? boolean 526 | | | {stateful-sync-opt}? 527 | | +--rw trigger-initial-sync? boolean 528 | | | {stateful-sync-opt}? 529 | | +--rw incremental-sync? boolean 530 | | {stateful-sync-opt}? 531 | +--rw sr {sr}? 532 | +--rw enabled? boolean 533 +--rw pce-info 534 | +--rw scope 535 | | +--rw intra-area-scope? boolean 536 | | +--rw intra-area-pref? uint8 537 | | +--rw inter-area-scope? boolean 538 | | +--rw inter-area-scope-default? boolean 539 | | +--rw inter-area-pref? uint8 540 | | +--rw inter-as-scope? boolean 541 | | +--rw inter-as-scope-default? boolean 542 | | +--rw inter-as-pref? uint8 543 | | +--rw inter-layer-scope? boolean 544 | | +--rw inter-layer-pref? uint8 545 | +--rw neigh-domains 546 | +--rw domain* [domain-type domain] 547 | +--rw domain-type domain-type 548 | +--rw domain domain 549 +--rw delegation-pref? uint8 {stateful}? 550 +--rw (auth-type-selection)? 551 | +--:(auth-key-chain) 552 | | +--rw key-chain? 553 | | key-chain:key-chain-ref 554 | +--:(auth-key) 555 | | +--rw crypto-algorithm identityref 556 | | +--rw key-string 557 | | +--rw (key-string-style)? 558 | | +--:(keystring) 559 | | | +--rw keystring? string 560 | | +--:(hexadecimal) 561 | | {key-chain:hex-key-string}? 562 | | +--rw hexadecimal-string? 563 | | yang:hex-string 564 | +--:(auth-tls) {tls}? 565 | +--rw tls-pce 566 | | +--rw certificates 567 | | | +--rw certificate* [name] 568 | | | +--rw name leafref 569 | | +--rw client-auth 570 | | | +--rw trusted-ca-certs? leafref 571 | | | +--rw trusted-client-certs? leafref 572 | | +--rw hello-params 573 | | {tls-server-hello-params-config}? 574 | | +--rw tls-versions 575 | | | +--rw tls-version* identityref 576 | | +--rw cipher-suites 577 | | +--rw cipher-suite* identityref 578 | +--rw tls-pcc 579 | +--rw server-auth 580 | | +--rw trusted-ca-certs? leafref 581 | | +--rw trusted-server-certs? leafref 582 | +--rw client-auth 583 | | +--rw (auth-type)? 584 | | +--:(certificate) 585 | | +--rw certificate? leafref 586 | +--rw hello-params 587 | {tls-client-hello-params-config}? 588 | +--rw tls-versions 589 | | +--rw tls-version* identityref 590 | +--rw cipher-suites 591 | +--rw cipher-suite* identityref 592 +--ro discontinuity-time? yang:timestamp 593 +--ro initiate-session? boolean 594 +--ro session-exists? boolean 595 +--ro session-up-time? yang:timestamp 596 +--ro session-fail-time? yang:timestamp 597 +--ro session-fail-up-time? yang:timestamp 598 +--ro sessions 599 +--ro session* [initiator] 600 +--ro initiator pcep-initiator 601 +--ro role? 602 | -> /pcep/entity/role 603 +--ro state-last-change? yang:timestamp 604 +--ro state? pcep-sess-state 605 +--ro session-creation? yang:timestamp 606 +--ro connect-retry? yang:counter32 607 +--ro local-id? uint32 608 +--ro remote-id? uint32 609 +--ro keepalive-timer? uint32 610 +--ro peer-keepalive-timer? uint32 611 +--ro dead-timer? uint32 612 +--ro peer-dead-timer? uint32 613 +--ro ka-hold-time-rem? uint32 614 +--ro overload-time? uint32 615 +--ro peer-overloaded? boolean 616 +--ro peer-overload-time? uint32 617 +--ro lspdb-sync? sync-state 618 | {stateful}? 619 +--ro recv-db-ver? uint64 620 | {stateful,stateful-sync-opt}? 621 +--ro of-list {objective-function}? 622 | +--ro objective-function* [of] 623 | +--ro of objective-function 624 +--ro speaker-entity-id? string 625 | {stateful-sync-opt}? 626 +--ro discontinuity-time? yang:timestamp 628 rpcs: 629 +---x trigger-resync {stateful,stateful-sync-opt}? 630 +---w input 631 +---w pcc? -> /pcep/entity/peers/peer/addr 633 notifications: 634 +---n pcep-session-up 635 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 636 | +--ro session-initiator? leafref 637 | +--ro state-last-change? yang:timestamp 638 | +--ro state? pcep-sess-state 639 +---n pcep-session-down 640 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 641 | +--ro session-initiator? pcep-initiator 642 | +--ro state-last-change? yang:timestamp 643 | +--ro state? pcep-sess-state 644 +---n pcep-session-local-overload 645 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 646 | +--ro session-initiator? leafref 647 | +--ro overloaded? boolean 648 | +--ro overload-time? uint32 649 +---n pcep-session-local-overload-clear 650 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 651 | +--ro overloaded? boolean 652 +---n pcep-session-peer-overload 653 | +--ro peer-addr? -> /pcep/entity/peers/peer/addr 654 | +--ro session-initiator? leafref 655 | +--ro peer-overloaded? boolean 656 | +--ro peer-overload-time? uint32 657 +---n pcep-session-peer-overload-clear 658 +--ro peer-addr? -> /pcep/entity/peers/peer/addr 659 +--ro peer-overloaded? boolean 661 5.1. The Entity 663 The PCEP yang module may contain status information for the local 664 PCEP entity. 666 The entity has an IP address (using ietf-inet-types [RFC6991]) and a 667 "role" leaf (the local entity PCEP role) as mandatory. 669 Note that, the PCEP MIB module [RFC7420] uses an entity list and a 670 system generated entity index as a primary index to the read only 671 entity table. If the device implements the PCEP MIB, the "index" 672 leaf MUST contain the value of the corresponding pcePcepEntityIndex 673 and only one entity is assumed. 675 5.2. The Peer Lists 677 The peer list contains peer(s) that the local PCEP entity knows 678 about. A PCEP speaker is identified by its IP address. If there is 679 a PCEP speaker in the network that uses multiple IP addresses then it 680 looks like multiple distinct peers to the other PCEP speakers in the 681 network. 683 Since PCEP sessions can be ephemeral, the peer list tracks a peer 684 even when no PCEP session currently exists to that peer. The 685 statistics contained are an aggregate of the statistics for all 686 successive sessions to that peer. 688 To limit the quantity of information that is stored, an 689 implementation MAY choose to discard this information if and only if 690 no PCEP session exists to the corresponding peer. 692 The data model for PCEP peer presented in this document uses a flat 693 list of peers. Each peer in the list is identified by its IP address 694 (addr-type, addr). 696 There is a list for static peer configuration and operational state 697 of all peers (i.e.static as well as discovered)("/pcep/entity/ 698 peers"). The list is used to enable remote PCE configuration at PCC 699 (or PCE) and has the operational state of these peers as well as the 700 remote PCE peer which were discovered and PCC peers that have 701 initiated session. 703 5.3. The Session Lists 705 The session list contains PCEP session that the PCEP entity (PCE or 706 PCC) is currently participating in. The statistics in session are 707 semantically different from those in peer since the former applies to 708 the current session only, whereas the latter is the aggregate for all 709 sessions that have existed to that peer. 711 Although [RFC5440] forbids more than one active PCEP session between 712 a given pair of PCEP entities at any given time, there is a window 713 during session establishment where two sessions may exist for a given 714 pair, one representing a session initiated by the local PCEP entity 715 and the other representing a session initiated by the peer. If 716 either of these sessions reaches active state first, then the other 717 is discarded. 719 The data model for PCEP session presented in this document uses a 720 flat list of sessions. Each session in the list is identified by its 721 initiator. This index allows two sessions to exist transiently for a 722 given peer, as discussed above. 724 5.4. Notifications 726 This YANG model defines a list of notifications to inform client of 727 important events detected during the protocol operation. The 728 notifications defined cover the PCEP MIB notifications. 730 5.5. RPC 732 This YANG model defines a RPC to trigger state resynchronization to a 733 particular PCEP peer. 735 6. The Design of PCEP Statistics Data Model 737 The module, "ietf-pcep-stats", augments the ietf-pcep module to 738 include statistics at the PCEP peer and session level. 740 module: ietf-pcep-stats 741 augment /p:pcep/p:entity/p:peers/p:peer: 742 +--ro num-sess-setup-ok? yang:counter32 743 +--ro num-sess-setup-fail? yang:counter32 744 +--ro pcep-stats 745 +--ro avg-rsp-time? uint32 746 +--ro lwm-rsp-time? uint32 747 +--ro hwm-rsp-time? uint32 748 +--ro num-pcreq-sent? yang:counter32 749 +--ro num-pcreq-rcvd? yang:counter32 750 +--ro num-pcrep-sent? yang:counter32 751 +--ro num-pcrep-rcvd? yang:counter32 752 +--ro num-pcerr-sent? yang:counter32 753 +--ro num-pcerr-rcvd? yang:counter32 754 +--ro num-pcntf-sent? yang:counter32 755 +--ro num-pcntf-rcvd? yang:counter32 756 +--ro num-keepalive-sent? yang:counter32 757 +--ro num-keepalive-rcvd? yang:counter32 758 +--ro num-unknown-rcvd? yang:counter32 759 +--ro num-corrupt-rcvd? yang:counter32 760 +--ro num-req-sent? yang:counter32 761 +--ro num-req-sent-pend-rep? yang:counter32 762 +--ro num-req-sent-ero-rcvd? yang:counter32 763 +--ro num-req-sent-nopath-rcvd? yang:counter32 764 +--ro num-req-sent-cancel-rcvd? yang:counter32 765 +--ro num-req-sent-error-rcvd? yang:counter32 766 +--ro num-req-sent-timeout? yang:counter32 767 +--ro num-req-sent-cancel-sent? yang:counter32 768 +--ro num-req-rcvd? yang:counter32 769 +--ro num-req-rcvd-pend-rep? yang:counter32 770 +--ro num-req-rcvd-ero-sent? yang:counter32 771 +--ro num-req-rcvd-nopath-sent? yang:counter32 772 +--ro num-req-rcvd-cancel-sent? yang:counter32 773 +--ro num-req-rcvd-error-sent? yang:counter32 774 +--ro num-req-rcvd-cancel-rcvd? yang:counter32 775 +--ro num-rep-rcvd-unknown? yang:counter32 776 +--ro num-req-rcvd-unknown? yang:counter32 777 +--ro svec {p:svec}? 778 | +--ro num-svec-sent? yang:counter32 779 | +--ro num-svec-req-sent? yang:counter32 780 | +--ro num-svec-rcvd? yang:counter32 781 | +--ro num-svec-req-rcvd? yang:counter32 782 +--ro stateful {p:stateful}? 783 | +--ro num-pcrpt-sent? yang:counter32 784 | +--ro num-pcrpt-rcvd? yang:counter32 785 | +--ro num-pcupd-sent? yang:counter32 786 | +--ro num-pcupd-rcvd? yang:counter32 787 | +--ro num-rpt-sent? yang:counter32 788 | +--ro num-rpt-rcvd? yang:counter32 789 | +--ro num-rpt-rcvd-error-sent? yang:counter32 790 | +--ro num-upd-sent? yang:counter32 791 | +--ro num-upd-rcvd? yang:counter32 792 | +--ro num-upd-rcvd-unknown? yang:counter32 793 | +--ro num-upd-rcvd-undelegated? yang:counter32 794 | +--ro num-upd-rcvd-error-sent? yang:counter32 795 | +--ro initiation {p:pce-initiated}? 796 | +--ro num-pcinitiate-sent? yang:counter32 797 | +--ro num-pcinitiate-rcvd? yang:counter32 798 | +--ro num-initiate-sent? yang:counter32 799 | +--ro num-initiate-rcvd? yang:counter32 800 | +--ro num-initiate-rcvd-error-sent? yang:counter32 801 +--ro path-key {p:path-key}? 802 | +--ro num-unknown-path-key? yang:counter32 803 | +--ro num-exp-path-key? yang:counter32 804 | +--ro num-dup-path-key? yang:counter32 805 | +--ro num-path-key-no-attempt? yang:counter32 806 +--ro num-req-sent-closed? yang:counter32 807 +--ro num-req-rcvd-closed? yang:counter32 808 augment /p:pcep/p:entity/p:peers/p:peer/p:sessions/p:session: 809 +--ro pcep-stats 810 +--ro avg-rsp-time? uint32 811 +--ro lwm-rsp-time? uint32 812 +--ro hwm-rsp-time? uint32 813 +--ro num-pcreq-sent? yang:counter32 814 +--ro num-pcreq-rcvd? yang:counter32 815 +--ro num-pcrep-sent? yang:counter32 816 +--ro num-pcrep-rcvd? yang:counter32 817 +--ro num-pcerr-sent? yang:counter32 818 +--ro num-pcerr-rcvd? yang:counter32 819 +--ro num-pcntf-sent? yang:counter32 820 +--ro num-pcntf-rcvd? yang:counter32 821 +--ro num-keepalive-sent? yang:counter32 822 +--ro num-keepalive-rcvd? yang:counter32 823 +--ro num-unknown-rcvd? yang:counter32 824 +--ro num-corrupt-rcvd? yang:counter32 825 +--ro num-req-sent? yang:counter32 826 +--ro num-req-sent-pend-rep? yang:counter32 827 +--ro num-req-sent-ero-rcvd? yang:counter32 828 +--ro num-req-sent-nopath-rcvd? yang:counter32 829 +--ro num-req-sent-cancel-rcvd? yang:counter32 830 +--ro num-req-sent-error-rcvd? yang:counter32 831 +--ro num-req-sent-timeout? yang:counter32 832 +--ro num-req-sent-cancel-sent? yang:counter32 833 +--ro num-req-rcvd? yang:counter32 834 +--ro num-req-rcvd-pend-rep? yang:counter32 835 +--ro num-req-rcvd-ero-sent? yang:counter32 836 +--ro num-req-rcvd-nopath-sent? yang:counter32 837 +--ro num-req-rcvd-cancel-sent? yang:counter32 838 +--ro num-req-rcvd-error-sent? yang:counter32 839 +--ro num-req-rcvd-cancel-rcvd? yang:counter32 840 +--ro num-rep-rcvd-unknown? yang:counter32 841 +--ro num-req-rcvd-unknown? yang:counter32 842 +--ro svec {p:svec}? 843 | +--ro num-svec-sent? yang:counter32 844 | +--ro num-svec-req-sent? yang:counter32 845 | +--ro num-svec-rcvd? yang:counter32 846 | +--ro num-svec-req-rcvd? yang:counter32 847 +--ro stateful {p:stateful}? 848 | +--ro num-pcrpt-sent? yang:counter32 849 | +--ro num-pcrpt-rcvd? yang:counter32 850 | +--ro num-pcupd-sent? yang:counter32 851 | +--ro num-pcupd-rcvd? yang:counter32 852 | +--ro num-rpt-sent? yang:counter32 853 | +--ro num-rpt-rcvd? yang:counter32 854 | +--ro num-rpt-rcvd-error-sent? yang:counter32 855 | +--ro num-upd-sent? yang:counter32 856 | +--ro num-upd-rcvd? yang:counter32 857 | +--ro num-upd-rcvd-unknown? yang:counter32 858 | +--ro num-upd-rcvd-undelegated? yang:counter32 859 | +--ro num-upd-rcvd-error-sent? yang:counter32 860 | +--ro initiation {p:pce-initiated}? 861 | +--ro num-pcinitiate-sent? yang:counter32 862 | +--ro num-pcinitiate-rcvd? yang:counter32 863 | +--ro num-initiate-sent? yang:counter32 864 | +--ro num-initiate-rcvd? yang:counter32 865 | +--ro num-initiate-rcvd-error-sent? yang:counter32 866 +--ro path-key {p:path-key}? 867 +--ro num-unknown-path-key? yang:counter32 868 +--ro num-exp-path-key? yang:counter32 869 +--ro num-dup-path-key? yang:counter32 870 +--ro num-path-key-no-attempt? yang:counter32 872 7. Advanced PCE Features 874 This document contains a specification of the base PCEP YANG module, 875 "ietf-pcep" which provides the basic PCEP [RFC5440] data model. 877 This document further handles advanced PCE features like - 879 o Capability and Scope 881 o Domain information (local/neighbour) 883 o Path-Key 885 o OF 887 o GCO 889 o P2MP 891 o GMPLS 893 o Inter-Layer 894 o Stateful PCE 896 o Segement Routing 898 o Authentication including PCEPS (TLS) 900 7.1. Stateful PCE's LSP-DB 902 In the operational state of PCEP which supports stateful PCE mode, 903 the list of LSP state are maintained in LSP-DB. The key is the PLSP- 904 ID and the PCC IP address. 906 The PCEP data model contains the operational state of LSPs 907 (/pcep/entity/lsp-db/lsp/) with PCEP specific attributes. The 908 generic TE attributes of the LSP are defined in 909 [I-D.ietf-teas-yang-te]. A reference to LSP state in TE model is 910 maintained. 912 8. Open Issues and Next Step 914 This section is added so that open issues can be tracked. This 915 section would be removed when the document is ready for publication. 917 8.1. The PCE-Initiated LSP 919 The TE Model at [I-D.ietf-teas-yang-te] should support creating of 920 tunnels at the controller (PCE) and marking them as PCE-Initiated. 921 The LSP-DB in the PCEP Yang (/pcep/entity/lsp-db/lsp/initiation) also 922 marks the LSPs which are PCE-initiated. 924 9. Other Considerations 926 9.1. PCEP over TLS (PCEPS) 928 [I-D.ietf-pce-pceps] describe the use of TLS in PCEP. The peer 929 acting as the PCEP client MUST act as the TLS client. The TLS client 930 actively opens the TLS connection and the TLS server passively 931 listens for the incoming TLS connections. The well-known TCP port 932 number 4189 is used by PCEP servers to listen for TCP connections 933 established by PCEP over TLS clients. The TLS client MUST send the 934 TLS ClientHello message to begin the TLS handshake. The TLS server 935 MUST send a CertificateRequest in order to request a certificate from 936 the TLS client. Once the TLS handshake has finished, the client and 937 the server MAY begin to exchange PCEP messages. Client and server 938 identity verification is done before the PCEP open message is sent. 939 This means that the identity verification is completed before the 940 PCEP session is started.. 942 10. PCEP YANG Modules 944 10.1. ietf-pcep module 946 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 947 actual RFC number and all occurrences of the revision date below with 948 the date of RFC publication (and remove this note). 950 file "ietf-pcep@2017-06-29.yang" 951 module ietf-pcep { 953 yang-version 1.1; 955 namespace "urn:ietf:params:xml:ns:yang:ietf-pcep"; 956 prefix pcep; 958 import ietf-inet-types { 959 prefix "inet"; 960 } 962 import ietf-yang-types { 963 prefix "yang"; 964 } 966 import ietf-te { 967 prefix "te"; 968 } 970 import ietf-te-types { 971 prefix "te-types"; 972 } 974 import ietf-key-chain { 975 prefix "key-chain"; 976 } 978 import ietf-netconf-acm { 979 prefix "nacm"; 980 } 982 import ietf-tls-server { 983 prefix "tls-server"; 984 } 986 import ietf-tls-client { 987 prefix "tls-client"; 988 } 989 organization 990 "IETF PCE (Path Computation Element) Working Group"; 992 contact 993 "WG Web: 994 WG List: 995 WG Chair: JP Vasseur 996 997 WG Chair: Julien Meuric 998 999 WG Chair: Jonathan Hardwick 1000 1001 Editor: Dhruv Dhody 1002 "; 1004 description 1005 "The YANG module defines a generic configuration and 1006 operational model for PCEP common across all of the 1007 vendor implementations."; 1009 revision 2017-06-29 { 1010 description "Initial revision."; 1011 reference 1012 "RFC XXXX: A YANG Data Model for Path Computation 1013 Element Communications Protocol 1014 (PCEP)"; 1015 } 1017 /* 1018 * Identities 1019 */ 1021 identity pcep { 1022 description "Identity for the PCEP protocol."; 1023 } 1025 /* 1026 * Typedefs 1027 */ 1028 typedef pcep-role { 1029 type enumeration { 1030 enum unknown { 1031 value "0"; 1032 description 1033 "An unknown role"; 1034 } 1035 enum pcc { 1036 value "1"; 1037 description 1038 "The role of a Path Computation Client"; 1039 } 1040 enum pce { 1041 value "2"; 1042 description 1043 "The role of Path Computation Element"; 1044 } 1045 enum pcc-and-pce { 1046 value "3"; 1047 description 1048 "The role of both Path Computation Client and 1049 Path Computation Element"; 1050 } 1051 } 1053 description 1054 "The role of a PCEP speaker. 1055 Takes one of the following values 1056 - unknown(0): the role is not known. 1057 - pcc(1): the role is of a Path Computation 1058 Client (PCC). 1059 - pce(2): the role is of a Path Computation 1060 Server (PCE). 1061 - pccAndPce(3): the role is of both a PCC and 1062 a PCE."; 1064 } 1066 typedef pcep-admin-status { 1067 type enumeration { 1068 enum admin-status-up { 1069 value "1"; 1070 description 1071 "Admin Status is Up"; 1072 } 1073 enum admin-status-down { 1074 value "2"; 1075 description 1076 "Admin Status is Down"; 1077 } 1078 } 1080 description 1081 "The Admin Status of the PCEP entity. 1082 Takes one of the following values 1083 - admin-status-up(1): Admin Status is Up. 1085 - admin-status-down(2): Admin Status is Down"; 1086 } 1088 typedef pcep-oper-status { 1089 type enumeration { 1090 enum oper-status-up { 1091 value "1"; 1092 description 1093 "The PCEP entity is active"; 1094 } 1095 enum oper-status-down { 1096 value "2"; 1097 description 1098 "The PCEP entity is inactive"; 1099 } 1100 enum oper-status-going-up { 1101 value "3"; 1102 description 1103 "The PCEP entity is activating"; 1104 } 1105 enum oper-status-going-down { 1106 value "4"; 1107 description 1108 "The PCEP entity is deactivating"; 1109 } 1110 enum oper-status-failed { 1111 value "5"; 1112 description 1113 "The PCEP entity has failed and will recover 1114 when possible."; 1115 } 1116 enum oper-status-failed-perm { 1117 value "6"; 1118 description 1119 "The PCEP entity has failed and will not recover 1120 without operator intervention"; 1121 } 1122 } 1123 description 1124 "The operational status of the PCEP entity. 1125 Takes one of the following values 1126 - oper-status-up(1): Active 1127 - oper-status-down(2): Inactive 1128 - oper-status-going-up(3): Activating 1129 - oper-status-going-down(4): Deactivating 1130 - oper-status-failed(5): Failed 1131 - oper-status-failed-perm(6): Failed Permanantly"; 1132 } 1133 typedef pcep-initiator { 1134 type enumeration { 1135 enum local { 1136 value "1"; 1137 description 1138 "The local PCEP entity initiated the session"; 1139 } 1141 enum remote { 1142 value "2"; 1143 description 1144 "The remote PCEP peer initiated the session"; 1145 } 1146 } 1147 description 1148 "The initiator of the session, that is, whether the TCP 1149 connection was initiated by the local PCEP entity or 1150 the remote peer. 1151 Takes one of the following values 1152 - local(1): Initiated locally 1153 - remote(2): Initiated remotely"; 1154 } 1156 typedef pcep-sess-state { 1157 type enumeration { 1158 enum tcp-pending { 1159 value "1"; 1160 description 1161 "The tcp-pending state of PCEP session."; 1162 } 1164 enum open-wait { 1165 value "2"; 1166 description 1167 "The open-wait state of PCEP session."; 1168 } 1170 enum keep-wait { 1171 value "3"; 1172 description 1173 "The keep-wait state of PCEP session."; 1174 } 1176 enum session-up { 1177 value "4"; 1178 description 1179 "The session-up state of PCEP session."; 1180 } 1182 } 1183 description 1184 "The current state of the session. 1185 The set of possible states excludes the idle state 1186 since entries do not exist in the idle state. 1187 Takes one of the following values 1188 - tcp-pending(1): PCEP TCP Pending state 1189 - open-wait(2): PCEP Open Wait state 1190 - keep-wait(3): PCEP Keep Wait state 1191 - session-up(4): PCEP Session Up state"; 1192 } 1194 typedef domain-type { 1195 type enumeration { 1196 enum ospf-area { 1197 value "1"; 1198 description 1199 "The OSPF area."; 1200 } 1201 enum isis-area { 1202 value "2"; 1203 description 1204 "The IS-IS area."; 1205 } 1206 enum as { 1207 value "3"; 1208 description 1209 "The Autonomous System (AS)."; 1210 } 1211 } 1212 description 1213 "The PCE Domain Type"; 1214 } 1216 typedef domain-ospf-area { 1217 type union { 1218 type uint32; 1219 type yang:dotted-quad; 1220 } 1221 description 1222 "OSPF Area ID."; 1223 } 1225 typedef domain-isis-area { 1226 type string { 1227 pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}'; 1228 } 1229 description 1230 "IS-IS Area ID."; 1231 } 1233 typedef domain-as { 1234 type uint32; 1235 description 1236 "Autonomous System number."; 1238 } 1240 typedef domain { 1241 type union { 1242 type domain-ospf-area; 1243 type domain-isis-area; 1244 type domain-as; 1245 } 1246 description 1247 "The Domain Information"; 1248 } 1250 typedef operational-state { 1251 type enumeration { 1252 enum down { 1253 value "0"; 1254 description 1255 "not active."; 1256 } 1257 enum up { 1258 value "1"; 1259 description 1260 "signalled."; 1261 } 1262 enum active { 1263 value "2"; 1264 description 1265 "up and carrying traffic."; 1266 } 1267 enum going-down { 1268 value "3"; 1269 description 1270 "LSP is being torn down, resources are 1271 being released."; 1272 } 1273 enum going-up { 1274 value "4"; 1275 description 1276 "LSP is being signalled."; 1277 } 1279 } 1280 description 1281 "The operational status of the LSP"; 1282 } 1284 typedef lsp-error { 1285 type enumeration { 1286 enum no-error { 1287 value "0"; 1288 description 1289 "No error, LSP is fine."; 1290 } 1291 enum unknown { 1292 value "1"; 1293 description 1294 "Unknown reason."; 1295 } 1296 enum limit { 1297 value "2"; 1298 description 1299 "Limit reached for PCE-controlled LSPs."; 1300 } 1301 enum pending { 1302 value "3"; 1303 description 1304 "Too many pending LSP update requests."; 1305 } 1306 enum unacceptable { 1307 value "4"; 1308 description 1309 "Unacceptable parameters."; 1310 } 1311 enum internal { 1312 value "5"; 1313 description 1314 "Internal error."; 1315 } 1316 enum admin { 1317 value "6"; 1318 description 1319 "LSP administratively brought down."; 1320 } 1321 enum preempted { 1322 value "7"; 1323 description 1324 "LSP preempted."; 1325 } 1326 enum rsvp { 1327 value "8"; 1328 description 1329 "RSVP signaling error."; 1330 } 1331 } 1332 description 1333 "The LSP Error Codes."; 1334 } 1336 typedef sync-state { 1337 type enumeration { 1338 enum pending { 1339 value "0"; 1340 description 1341 "The state synchronization 1342 has not started."; 1343 } 1344 enum ongoing { 1345 value "1"; 1346 description 1347 "The state synchronization 1348 is ongoing."; 1349 } 1350 enum finished { 1351 value "2"; 1352 description 1353 "The state synchronization 1354 is finished."; 1355 } 1356 } 1357 description 1358 "The LSP-DB state synchronization operational 1359 status."; 1360 } 1362 typedef pst{ 1363 type enumeration{ 1364 enum rsvp-te{ 1365 value "0"; 1366 description 1367 "RSVP-TE signaling protocol"; 1368 } 1369 enum sr{ 1370 value "1"; 1371 description 1372 "Segment Routing Traffic Engineering"; 1373 } 1374 } 1375 description 1376 "The Path Setup Type"; 1377 } 1379 typedef assoc-type{ 1380 type enumeration{ 1381 enum protection{ 1382 value "1"; 1383 description 1384 "Path Protection Association Type"; 1385 } 1386 enum policy{ 1387 value "2"; 1388 description 1389 "Policy Association Type"; 1390 } 1391 enum diversity{ 1392 value "3"; 1393 description 1394 "Diversity Association Type"; 1395 } 1396 } 1397 description 1398 "The PCEP Association Type"; 1399 } 1401 typedef objective-function{ 1402 type enumeration{ 1403 enum mcp{ 1404 value "1"; 1405 description 1406 "Minimum Cost Path (MCP)"; 1407 } 1408 enum mlp{ 1409 value "2"; 1410 description 1411 "Minimum Load Path (MLP)"; 1412 } 1413 enum mbp{ 1414 value "3"; 1415 description 1416 "Maximum residual Bandwidth Path (MBP)"; 1417 } 1418 enum mbc{ 1419 value "4"; 1420 description 1421 "Minimize aggregate Bandwidth Consumption 1422 (MBC)"; 1424 } 1425 enum mll{ 1426 value "5"; 1427 description 1428 "Minimize the Load of the most loaded Link 1429 (MLL)"; 1430 } 1431 enum mcc{ 1432 value "6"; 1433 description 1434 "Minimize the Cumulative Cost of a set of 1435 paths (MCC)"; 1436 } 1437 enum spt{ 1438 value "7"; 1439 description 1440 "Shortest Path Tree (SPT)"; 1441 } 1442 enum mct{ 1443 value "8"; 1444 description 1445 "Minimum Cost Tree (MCT)"; 1446 } 1447 enum mplp{ 1448 value "9"; 1449 description 1450 "Minimum Packet Loss Path (MPLP)"; 1451 } 1452 enum mup{ 1453 value "10"; 1454 description 1455 "Maximum Under-Utilized Path (MUP)"; 1456 } 1457 enum mrup{ 1458 value "11"; 1459 description 1460 "Maximum Reserved Under-Utilized Path 1461 (MRUP)"; 1462 } 1463 } 1464 description 1465 "The PCEP Objective functions"; 1466 } 1468 /* 1469 * Features 1470 */ 1472 feature svec { 1473 description 1474 "Support synchronized path computation."; 1475 } 1477 feature gmpls { 1478 description 1479 "Support GMPLS."; 1480 } 1482 feature objective-function { 1483 description 1484 "Support OF as per RFC 5541."; 1485 } 1487 feature gco { 1488 description 1489 "Support GCO as per RFC 5557."; 1490 } 1492 feature path-key { 1493 description 1494 "Support path-key as per RFC 5520."; 1495 } 1497 feature p2mp { 1498 description 1499 "Support P2MP as per RFC 6006."; 1500 } 1502 feature stateful { 1503 description 1504 "Support stateful PCE."; 1505 } 1507 feature stateful-sync-opt { 1508 description 1509 "Support stateful sync optimization"; 1510 } 1512 feature pce-initiated { 1513 description 1514 "Support PCE-Initiated LSP."; 1515 } 1517 feature tls { 1518 description 1519 "Support PCEP over TLS."; 1521 } 1523 feature sr { 1524 description 1525 "Support Segment Routing for PCE."; 1526 } 1528 /* 1529 * Groupings 1530 */ 1531 grouping pcep-entity-info{ 1532 description 1533 "This grouping defines the attributes for PCEP entity."; 1534 leaf connect-timer { 1535 type uint32 { 1536 range "1..65535"; 1537 } 1538 units "seconds"; 1539 default 60; 1540 description 1541 "The time in seconds that the PCEP entity will wait 1542 to establish a TCP connection with a peer. If a 1543 TCP connection is not established within this time 1544 then PCEP aborts the session setup attempt."; 1545 reference 1546 "RFC 5440: Path Computation Element (PCE) 1547 Communication Protocol (PCEP)"; 1548 } 1550 leaf connect-max-retry { 1551 type uint32; 1552 default 5; 1553 description 1554 "The maximum number of times the system tries to 1555 establish a TCP connection to a peer before the 1556 session with the peer transitions to the idle 1557 state."; 1558 reference 1559 "RFC 5440: Path Computation Element (PCE) 1560 Communication Protocol (PCEP)"; 1561 } 1563 leaf init-backoff-timer { 1564 type uint32 { 1565 range "1..65535"; 1566 } 1567 units "seconds"; 1568 description 1569 "The initial back-off time in seconds for retrying 1570 a failed session setup attempt to a peer. 1571 The back-off time increases for each failed 1572 session setup attempt, until a maximum back-off 1573 time is reached. The maximum back-off time is 1574 max-backoff-timer."; 1575 } 1577 leaf max-backoff-timer { 1578 type uint32; 1579 units "seconds"; 1580 description 1581 "The maximum back-off time in seconds for retrying 1582 a failed session setup attempt to a peer. 1583 The back-off time increases for each failed session 1584 setup attempt, until this maximum value is reached. 1585 Session setup attempts then repeat periodically 1586 without any further increase in back-off time."; 1587 } 1589 leaf open-wait-timer { 1590 type uint32 { 1591 range "1..65535"; 1592 } 1593 units "seconds"; 1594 default 60; 1595 description 1596 "The time in seconds that the PCEP entity will wait 1597 to receive an Open message from a peer after the 1598 TCP connection has come up. 1599 If no Open message is received within this time then 1600 PCEP terminates the TCP connection and deletes the 1601 associated sessions."; 1602 reference 1603 "RFC 5440: Path Computation Element (PCE) 1604 Communication Protocol (PCEP)"; 1605 } 1607 leaf keep-wait-timer { 1608 type uint32 { 1609 range "1..65535"; 1610 } 1611 units "seconds"; 1612 default 60; 1613 description 1614 "The time in seconds that the PCEP entity will wait 1615 to receive a Keepalive or PCErr message from a peer 1616 during session initialization after receiving an 1617 Open message. If no Keepalive or PCErr message is 1618 received within this time then PCEP terminates the 1619 TCP connection and deletes the associated 1620 sessions."; 1621 reference 1622 "RFC 5440: Path Computation Element (PCE) 1623 Communication Protocol (PCEP)"; 1624 } 1626 leaf keep-alive-timer { 1627 type uint32 { 1628 range "0..255"; 1629 } 1630 units "seconds"; 1631 default 30; 1632 description 1633 "The keep alive transmission timer that this PCEP 1634 entity will propose in the initial OPEN message of 1635 each session it is involved in. This is the 1636 maximum time between two consecutive messages sent 1637 to a peer. Zero means that the PCEP entity prefers 1638 not to send Keepalives at all. 1639 Note that the actual Keepalive transmission 1640 intervals, in either direction of an active PCEP 1641 session, are determined by negotiation between the 1642 peers as specified by RFC 5440, and so may differ 1643 from this configured value."; 1644 reference 1645 "RFC 5440: Path Computation Element (PCE) 1646 Communication Protocol (PCEP)"; 1647 } 1649 leaf dead-timer { 1650 type uint32 { 1651 range "0..255"; 1652 } 1653 units "seconds"; 1654 must "(. > ../keep-alive-timer)" { 1655 error-message "The dead timer must be " 1656 + "larger than the keep alive timer"; 1657 description 1658 "This value MUST be greater than 1659 keep-alive-timer."; 1661 } 1662 default 120; 1663 description 1664 "The dead timer that this PCEP entity will propose 1665 in the initial OPEN message of each session it is 1666 involved in. This is the time after which a peer 1667 should declare a session down if it does not 1668 receive any PCEP messages. Zero suggests that the 1669 peer does not run a dead timer at all." ; 1670 reference 1671 "RFC 5440: Path Computation Element (PCE) 1672 Communication Protocol (PCEP)"; 1673 } 1675 leaf allow-negotiation{ 1676 type boolean; 1677 description 1678 "Whether the PCEP entity will permit negotiation of 1679 session parameters."; 1680 } 1682 leaf max-keep-alive-timer{ 1683 type uint32 { 1684 range "0..255"; 1685 } 1686 units "seconds"; 1687 description 1688 "In PCEP session parameter negotiation in seconds, 1689 the maximum value that this PCEP entity will 1690 accept from a peer for the interval between 1691 Keepalive transmissions. Zero means that the PCEP 1692 entity will allow no Keepalive transmission at 1693 all." ; 1694 } 1696 leaf max-dead-timer{ 1697 type uint32 { 1698 range "0..255"; 1699 } 1700 units "seconds"; 1701 description 1702 "In PCEP session parameter negotiation in seconds, 1703 the maximum value that this PCEP entity will accept 1704 from a peer for the Dead timer. Zero means that 1705 the PCEP entity will allow not running a Dead 1706 timer."; 1707 } 1709 leaf min-keep-alive-timer{ 1710 type uint32 { 1711 range "0..255"; 1712 } 1713 units "seconds"; 1714 description 1715 "In PCEP session parameter negotiation in seconds, 1716 the minimum value that this PCEP entity will 1717 accept for the interval between Keepalive 1718 transmissions. Zero means that the PCEP entity 1719 insists on no Keepalive transmission at all."; 1720 } 1722 leaf min-dead-timer{ 1723 type uint32 { 1724 range "0..255"; 1725 } 1726 units "seconds"; 1727 description 1728 "In PCEP session parameter negotiation in 1729 seconds, the minimum value that this PCEP entity 1730 will accept for the Dead timer. Zero means that 1731 the PCEP entity insists on not running a Dead 1732 timer."; 1733 } 1735 leaf sync-timer{ 1736 if-feature svec; 1737 type uint32 { 1738 range "0..65535"; 1739 } 1740 units "seconds"; 1741 default 60; 1742 description 1743 "The value of SyncTimer in seconds is used in the 1744 case of synchronized path computation request 1745 using the SVEC object. Consider the case where a 1746 PCReq message is received by a PCE that contains 1747 the SVEC object referring to M synchronized path 1748 computation requests. If after the expiration of 1749 the SyncTimer all the M path computation requests 1750 have not been, received a protocol error is 1751 triggered and the PCE MUST cancel the whole set 1752 of path computation requests. 1753 The aim of the SyncTimer is to avoid the storage 1754 of unused synchronized requests should one of 1755 them get lost for some reasons (for example, a 1756 misbehaving PCC). 1757 Zero means that the PCEP entity does not use the 1758 SyncTimer."; 1759 reference 1760 "RFC 5440: Path Computation Element (PCE) 1761 Communication Protocol (PCEP)"; 1762 } 1764 leaf request-timer{ 1765 type uint32 { 1766 range "1..65535"; 1767 } 1768 units "seconds"; 1769 description 1770 "The maximum time that the PCEP entity will wait 1771 for a response to a PCReq message."; 1772 } 1774 leaf max-sessions{ 1775 type uint32; 1776 description 1777 "Maximum number of sessions involving this PCEP 1778 entity that can exist at any time."; 1779 } 1781 leaf max-unknown-reqs{ 1782 type uint32; 1783 default 5; 1784 description 1785 "The maximum number of unrecognized requests and 1786 replies that any session on this PCEP entity is 1787 willing to accept per minute before terminating 1788 the session. 1789 A PCRep message contains an unrecognized reply 1790 if it contains an RP object whose request ID 1791 does not correspond to any in-progress request 1792 sent by this PCEP entity. 1793 A PCReq message contains an unrecognized request 1794 if it contains an RP object whose request ID is 1795 zero."; 1796 reference 1797 "RFC 5440: Path Computation Element (PCE) 1798 Communication Protocol (PCEP)"; 1799 } 1801 leaf max-unknown-msgs{ 1802 type uint32; 1803 default 5; 1804 description 1805 "The maximum number of unknown messages that any 1806 session on this PCEP entity is willing to accept 1807 per minute before terminating the session."; 1809 reference 1810 "RFC 5440: Path Computation Element (PCE) 1811 Communication Protocol (PCEP)"; 1812 } 1814 }//pcep-entity-info 1816 grouping pce-scope{ 1817 description 1818 "This grouping defines PCE path computation scope 1819 information which maybe relevant to PCE selection. 1820 This information corresponds to PCE auto-discovery 1821 information."; 1822 reference 1823 "RFC 5088: OSPF Protocol Extensions for Path 1824 Computation Element (PCE) 1825 Discovery 1826 RFC 5089: IS-IS Protocol Extensions for Path 1827 Computation Element (PCE) 1828 Discovery"; 1829 leaf intra-area-scope{ 1830 type boolean; 1831 default true; 1832 description 1833 "PCE can compute intra-area paths."; 1834 } 1835 leaf intra-area-pref{ 1836 type uint8{ 1837 range "0..7"; 1838 } 1839 description 1840 "The PCE's preference for intra-area TE LSP 1841 computation."; 1842 } 1843 leaf inter-area-scope{ 1844 type boolean; 1845 default false; 1846 description 1847 "PCE can compute inter-area paths."; 1848 } 1849 leaf inter-area-scope-default{ 1850 type boolean; 1851 default false; 1852 description 1853 "PCE can act as a default PCE for inter-area 1854 path computation."; 1855 } 1856 leaf inter-area-pref{ 1857 type uint8{ 1858 range "0..7"; 1859 } 1860 description 1861 "The PCE's preference for inter-area TE LSP 1862 computation."; 1863 } 1864 leaf inter-as-scope{ 1865 type boolean; 1866 default false; 1867 description 1868 "PCE can compute inter-AS paths."; 1869 } 1870 leaf inter-as-scope-default{ 1871 type boolean; 1872 default false; 1873 description 1874 "PCE can act as a default PCE for inter-AS 1875 path computation."; 1876 } 1877 leaf inter-as-pref{ 1878 type uint8{ 1879 range "0..7"; 1880 } 1881 description 1882 "The PCE's preference for inter-AS TE LSP 1883 computation."; 1884 } 1885 leaf inter-layer-scope{ 1886 type boolean; 1887 default false; 1888 description 1889 "PCE can compute inter-layer paths."; 1890 } 1891 leaf inter-layer-pref{ 1892 type uint8{ 1893 range "0..7"; 1894 } 1895 description 1896 "The PCE's preference for inter-layer TE LSP 1897 computation."; 1898 } 1899 }//pce-scope 1901 grouping domain{ 1902 description 1903 "This grouping specifies a Domain where the 1904 PCEP speaker has topology visibility."; 1906 leaf domain-type{ 1907 type domain-type; 1908 description 1909 "The domain type."; 1910 } 1911 leaf domain{ 1912 type domain; 1913 description 1914 "The domain Information."; 1915 } 1916 }//domain 1918 grouping capability{ 1919 description 1920 "This grouping specifies a capability 1921 information of local PCEP entity. This maybe 1922 relevant to PCE selection as well. This 1923 information corresponds to PCE auto-discovery 1924 information."; 1925 reference 1926 "RFC 5088: OSPF Protocol Extensions for Path 1927 Computation Element (PCE) 1928 Discovery 1929 RFC 5089: IS-IS Protocol Extensions for Path 1930 Computation Element (PCE) 1931 Discovery"; 1932 leaf gmpls{ 1933 if-feature gmpls; 1934 type boolean; 1935 description 1936 "Path computation with GMPLS link 1937 constraints."; 1938 } 1939 leaf bi-dir{ 1940 type boolean; 1941 description 1942 "Bidirectional path computation."; 1943 } 1944 leaf diverse{ 1945 type boolean; 1946 description 1947 "Diverse path computation."; 1948 } 1949 leaf load-balance{ 1950 type boolean; 1951 description 1952 "Load-balanced path computation."; 1953 } 1954 leaf synchronize{ 1955 if-feature svec; 1956 type boolean; 1957 description 1958 "Synchronized paths computation."; 1959 } 1960 leaf objective-function{ 1961 if-feature objective-function; 1962 type boolean; 1963 description 1964 "Support for multiple objective functions."; 1965 } 1966 leaf add-path-constraint{ 1967 type boolean; 1968 description 1969 "Support for additive path constraints (max 1970 hop count, etc.)."; 1971 } 1972 leaf prioritization{ 1973 type boolean; 1974 description 1975 "Support for request prioritization."; 1976 } 1977 leaf multi-request{ 1978 type boolean; 1979 description 1980 "Support for multiple requests per message."; 1981 } 1982 leaf gco{ 1983 if-feature gco; 1984 type boolean; 1985 description 1986 "Support for Global Concurrent Optimization 1987 (GCO)."; 1988 } 1989 leaf p2mp{ 1990 if-feature p2mp; 1991 type boolean; 1992 description 1993 "Support for P2MP path computation."; 1994 } 1996 container stateful{ 1997 if-feature stateful; 1998 description 1999 "If stateful PCE feature is present"; 2000 leaf enabled{ 2001 type boolean; 2002 description 2003 "Enabled or Disabled"; 2004 } 2005 leaf active{ 2006 type boolean; 2007 description 2008 "Support for active stateful PCE."; 2009 } 2010 leaf pce-initiated{ 2011 if-feature pce-initiated; 2012 type boolean; 2013 description 2014 "Support for PCE-initiated LSP."; 2015 } 2016 leaf include-db-ver{ 2017 if-feature stateful-sync-opt; 2018 type boolean; 2019 description 2020 "Support inclusion of LSP-DB-VERSION 2021 in LSP object"; 2022 } 2023 leaf trigger-resync{ 2024 if-feature stateful-sync-opt; 2025 type boolean; 2026 description 2027 "Support PCE triggered re-synchronization"; 2028 } 2029 leaf trigger-initial-sync{ 2030 if-feature stateful-sync-opt; 2031 type boolean; 2032 description 2033 "PCE triggered initial synchronization"; 2034 } 2035 leaf incremental-sync{ 2036 if-feature stateful-sync-opt; 2037 type boolean; 2038 description 2039 "Support incremental (delta) sync"; 2040 } 2041 } 2042 container sr{ 2043 if-feature sr; 2044 description 2045 "If segment routing is supported"; 2046 leaf enabled{ 2047 type boolean; 2048 description 2049 "Enabled or Disabled"; 2051 } 2053 } 2054 }//capability 2056 grouping info{ 2057 description 2058 "This grouping specifies all information which 2059 maybe relevant to both PCC and PCE. 2060 This information corresponds to PCE auto-discovery 2061 information."; 2062 container domain{ 2063 description 2064 "The local domain for the PCEP entity"; 2065 list domain{ 2066 key "domain-type domain"; 2067 description 2068 "The local domain."; 2069 uses domain{ 2070 description 2071 "The local domain for the PCEP entity."; 2072 } 2073 } 2074 } 2075 container capability{ 2076 description 2077 "The PCEP entity capability"; 2078 uses capability{ 2079 description 2080 "The PCEP entity supported 2081 capabilities."; 2082 } 2083 } 2085 }//info 2087 grouping pce-info{ 2088 description 2089 "This grouping specifies all PCE information 2090 which maybe relevant to the PCE selection. 2091 This information corresponds to PCE auto-discovery 2092 information."; 2093 container scope{ 2094 description 2095 "The path computation scope"; 2096 uses pce-scope; 2097 } 2098 container neigh-domains{ 2099 description 2100 "The list of neighbour PCE-Domain 2101 toward which a PCE can compute 2102 paths"; 2103 list domain{ 2104 key "domain-type domain"; 2106 description 2107 "The neighbour domain."; 2108 uses domain{ 2109 description 2110 "The PCE neighbour domain."; 2111 } 2112 } 2113 } 2114 }//pce-info 2116 grouping lsp-state{ 2117 description 2118 "This grouping defines the attributes for LSP in LSP-DB. 2119 These are the attributes specifically from the PCEP 2120 perspective"; 2121 leaf plsp-id{ 2122 type uint32{ 2123 range "1..1048575"; 2124 } 2125 description 2126 "A PCEP-specific identifier for the LSP. A PCC 2127 creates a unique PLSP-ID for each LSP that is 2128 constant for the lifetime of a PCEP session. 2129 PLSP-ID is 20 bits with 0 and 0xFFFFF are 2130 reserved"; 2131 } 2132 leaf pcc-id{ 2133 type inet:ip-address; 2134 description 2135 "The local internet address of the PCC, that 2136 generated the PLSP-ID."; 2137 } 2139 container lsp-ref{ 2140 description 2141 "reference to ietf-te lsp state"; 2143 leaf source { 2144 type leafref { 2145 path "/te:te/te:lsps-state/te:lsp/te:source"; 2147 } 2148 description 2149 "Tunnel sender address extracted from 2150 SENDER_TEMPLATE object"; 2151 reference "RFC3209"; 2152 } 2153 leaf destination { 2154 type leafref { 2155 path "/te:te/te:lsps-state/te:lsp/te:" 2156 + "destination"; 2157 } 2158 description 2159 "Tunnel endpoint address extracted from 2160 SESSION object"; 2161 reference "RFC3209"; 2162 } 2163 leaf tunnel-id { 2164 type leafref { 2165 path "/te:te/te:lsps-state/te:lsp/te:tunnel-id"; 2166 } 2167 description 2168 "Tunnel identifier used in the SESSION 2169 that remains constant over the life 2170 of the tunnel."; 2171 reference "RFC3209"; 2172 } 2173 leaf lsp-id { 2174 type leafref { 2175 path "/te:te/te:lsps-state/te:lsp/te:lsp-id"; 2176 } 2177 description 2178 "Identifier used in the SENDER_TEMPLATE 2179 and the FILTER_SPEC that can be changed 2180 to allow a sender to share resources with 2181 itself."; 2182 reference "RFC3209"; 2183 } 2184 leaf extended-tunnel-id { 2185 type leafref { 2186 path "/te:te/te:lsps-state/te:lsp/te:" 2187 + "extended-tunnel-id"; 2188 } 2189 description 2190 "Extended Tunnel ID of the LSP."; 2191 reference "RFC3209"; 2192 } 2193 leaf type { 2194 type leafref { 2195 path "/te:te/te:lsps-state/te:lsp/te:type"; 2196 } 2197 description "LSP type P2P or P2MP"; 2198 } 2199 } 2201 leaf admin-state{ 2202 type boolean; 2203 description 2204 "The desired operational state"; 2205 } 2206 leaf operational-state{ 2207 type operational-state; 2208 description 2209 "The operational status of the LSP"; 2210 } 2211 container delegated{ 2212 description 2213 "The delegation related parameters"; 2214 leaf enabled{ 2215 type boolean; 2216 description 2217 "LSP is delegated or not"; 2218 } 2219 leaf peer{ 2220 type leafref { 2221 path "/pcep/entity/peers/peer/addr"; 2222 } 2223 must "(../enabled = true())" 2224 { 2225 error-message 2226 "The LSP must be delegated"; 2227 description 2228 "When LSP is a delegated LSP"; 2229 } 2230 description 2231 "At the PCC, the reference to the PCEP peer to 2232 which LSP is delegated; At the PCE, the 2233 reference to the PCEP peer which delegated this 2234 LSP"; 2235 } 2236 leaf srp-id{ 2237 type uint32; 2238 description 2239 "The last SRP-ID-number associated with this 2240 LSP."; 2241 } 2242 } 2243 container initiation { 2244 if-feature pce-initiated; 2245 description 2246 "The PCE initiation related parameters"; 2247 leaf enabled{ 2248 type boolean; 2249 description 2250 "LSP is PCE-initiated or not"; 2251 } 2252 leaf peer{ 2253 type leafref { 2254 path "/pcep/entity/peers/peer/addr"; 2255 } 2256 must "(../enabled = true())" 2257 { 2258 error-message 2259 "The LSP must be PCE-Initiated"; 2260 description 2261 "When the LSP must be PCE-Initiated"; 2262 } 2263 description 2264 "At the PCC, the reference to the PCEP peer 2265 that initiated this LSP; At the PCE, the 2266 reference to the PCEP peer where the LSP 2267 is initiated"; 2268 } 2269 } 2270 leaf symbolic-path-name{ 2271 type string; 2272 description 2273 "The symbolic path name associated with the LSP."; 2274 } 2275 leaf last-error{ 2276 type lsp-error; 2277 description 2278 "The last error for the LSP."; 2279 } 2280 leaf pst{ 2281 type pst; 2282 default "rsvp-te"; 2283 description 2284 "The Path Setup Type"; 2286 } 2288 }//lsp-state 2290 grouping notification-instance-hdr { 2291 description 2292 "This group describes common instance specific data 2293 for notifications."; 2295 leaf peer-addr { 2296 type leafref { 2297 path "/pcep/entity/peers/peer/addr"; 2298 } 2299 description 2300 "Reference to peer address"; 2301 } 2303 }// notification-instance-hdr 2305 grouping notification-session-hdr { 2306 description 2307 "This group describes common session instance specific 2308 data for notifications."; 2310 leaf session-initiator { 2311 type leafref { 2312 path "/pcep/entity/peers/peer/sessions/" + 2313 "session/initiator"; 2314 } 2315 description 2316 "Reference to pcep session initiator leaf"; 2317 } 2318 }// notification-session-hdr 2320 grouping stateful-pce-parameter { 2321 description 2322 "This group describes stateful PCE specific 2323 parameters."; 2324 leaf state-timeout{ 2325 type uint32; 2326 units "seconds"; 2327 description 2328 "When a PCEP session is terminated, a PCC 2329 waits for this time period before flushing 2330 LSP state associated with that PCEP session 2331 and reverting to operator-defined default 2332 parameters or behaviours."; 2333 } 2334 leaf redelegation-timeout{ 2335 when "../../role = 'pcc'" + 2336 "or " + 2337 "../../role = 'pcc-and-pce'" 2338 { 2339 description 2340 "Valid at PCC"; 2341 } 2342 type uint32; 2343 units "seconds"; 2344 description 2345 "When a PCEP session is terminated, a PCC 2346 waits for this time period before revoking 2347 LSP delegation to a PCE and attempting to 2348 redelegate LSPs associated with the 2349 terminated PCEP session to an alternate 2350 PCE."; 2351 } 2352 leaf rpt-non-pcep-lsp{ 2353 when "../../role = 'pcc'" + 2354 "or " + 2355 "../../role = 'pcc-and-pce'" 2356 { 2357 description 2358 "Valid at PCC"; 2359 } 2360 type boolean; 2361 default true; 2362 description 2363 "If set, a PCC reports LSPs that are not 2364 controlled by any PCE (for example, LSPs 2365 that are statically configured at the 2366 PCC). "; 2367 } 2369 } 2371 grouping authentication { 2372 description "Authentication Information"; 2373 choice auth-type-selection { 2374 description 2375 "Options for expressing authentication setting."; 2376 case auth-key-chain { 2377 leaf key-chain { 2378 type key-chain:key-chain-ref; 2379 description 2380 "key-chain name."; 2381 } 2382 } 2383 case auth-key { 2384 leaf crypto-algorithm { 2385 type identityref { 2386 base key-chain:crypto-algorithm; 2388 } 2389 mandatory true; 2390 description 2391 "Cryptographic algorithm associated with key."; 2392 } 2393 container key-string { 2394 description 2395 "The key string."; 2396 nacm:default-deny-all; 2397 choice key-string-style { 2398 description 2399 "Key string styles"; 2400 case keystring { 2401 leaf keystring { 2402 type string; 2403 description 2404 "Key string in ASCII format."; 2405 } 2406 } 2407 case hexadecimal { 2408 if-feature "key-chain:hex-key-string"; 2409 leaf hexadecimal-string { 2410 type yang:hex-string; 2411 description 2412 "Key in hexadecimal string format. When 2413 compared to ASCII, specification in 2414 hexadecimal affords greater key 2415 entropy with the same number of 2416 octets. Additionally, it discourages 2417 usage of well-known words or 2418 numbers."; 2419 } 2420 } 2421 } 2422 } 2423 } 2424 case auth-tls { 2425 if-feature tls; 2426 container tls-pce { 2427 when "../role = 'pce' " 2428 + "or ../role = 'pcc-and-pce'" { 2429 description 2430 "Valid for PCEP Peer as PCE/PCC-PCE"; 2431 } 2433 uses tls-server:tls-server-grouping { 2434 description 2435 "Server TLS information."; 2437 } 2438 description 2439 "TLS related information"; 2440 } 2442 container tls-pcc { 2443 when "../role = 'pcc' " 2444 + "or ../role = 'pcc-and-pce'" { 2445 description 2446 "Valid for PCEP Peer as PCC/PCC_PCE"; 2447 } 2449 uses tls-client:tls-client-grouping { 2450 description 2451 "Client TLS information."; 2452 } 2454 description 2455 "TLS related information"; 2456 } 2457 } 2458 } 2459 } 2461 grouping path-key { 2462 description "Path-key related information"; 2463 leaf enabled{ 2464 type boolean; 2465 description 2466 "Enabled or Disabled"; 2467 } 2468 leaf discard-timer { 2469 type uint32; 2470 units "minutes"; 2471 default 10; 2472 description 2473 "A timer to discard unwanted path-keys"; 2474 } 2475 leaf reuse-time { 2476 type uint32; 2477 units "minutes"; 2478 default 30; 2479 description 2480 "A time after which the path-keys could be reused"; 2481 } 2482 leaf pce-id { 2483 type inet:ip-address; 2484 description 2485 "PCE Address to be used in each Path-Key Subobject 2486 (PKS)"; 2487 } 2488 } 2490 grouping path-key-state { 2491 description "Table to allow inspection of path-keys"; 2492 list path-keys{ 2493 key "path-key"; 2495 description 2496 "The list of path-keys generated by the PCE"; 2498 leaf path-key { 2499 type uint16; 2500 description 2501 "The identifier, or token used to represent 2502 the Confidential Path Segment (CPS) within 2503 the context of the PCE"; 2504 } 2505 container cps { 2506 description 2507 "The Confidential Path Segment (CPS)"; 2508 list explicit-route-objects { 2509 key "index"; 2510 description 2511 "List of explicit route objects"; 2513 leaf explicit-route-usage { 2514 type identityref { 2515 base te-types:route-usage-type; 2516 } 2517 description 2518 "An explicit-route hop action."; 2519 } 2521 uses te-types:explicit-route-hop_config; 2522 } 2523 } 2524 leaf pcc-original { 2525 type leafref { 2526 path "/pcep/entity/peers/peer/addr"; 2527 } 2528 description 2529 "Reference to PCC peer address of 2530 the original request"; 2531 } 2532 leaf req-id { 2533 type uint32; 2534 description 2535 "The request ID of the original PCReq."; 2536 } 2537 leaf retrieved { 2538 type boolean; 2539 description 2540 "If path-key has been retrieved yet"; 2541 } 2542 leaf pcc-retrieved { 2543 type leafref { 2544 path "/pcep/entity/peers/peer/addr"; 2545 } 2546 must "(../retrieved = true())" 2547 { 2548 error-message 2549 "The Path-key should be retreived"; 2550 description 2551 "When Path-Key has been retreived"; 2552 } 2553 description 2554 "Reference to PCC peer address which 2555 retreived the path-key"; 2556 } 2557 leaf creation-time { 2558 type yang:timestamp; 2559 description 2560 "The timestamp value at the time this Path-Key 2561 was created."; 2562 } 2563 leaf discard-time { 2564 type uint32; 2565 units "minutes"; 2566 description 2567 "A time after which this path-keys will be 2568 discarded"; 2569 } 2570 leaf reuse-time { 2571 type uint32; 2572 units "minutes"; 2573 description 2574 "A time after which this path-keys could be 2575 reused"; 2576 } 2577 } 2578 } 2580 grouping of-list { 2581 description "List of OF"; 2582 list objective-function{ 2583 key "of"; 2585 description 2586 "The list of authorized OF"; 2588 leaf of { 2589 type objective-function; 2590 description 2591 "The OF authorized"; 2592 } 2593 } 2594 } 2595 grouping association { 2596 description 2597 "Generic Association parameters"; 2598 leaf type { 2599 type "assoc-type"; 2600 description 2601 "The PCEP association type"; 2602 } 2603 leaf id { 2604 type uint16; 2605 description 2606 "PCEP Association ID"; 2607 } 2608 leaf source { 2609 type inet:ip-address; 2610 description 2611 "PCEP Association Source."; 2612 } 2613 leaf global-source { 2614 type uint32; 2615 description 2616 "PCEP Association Global 2617 Source."; 2618 } 2619 leaf extended-id{ 2620 type string; 2621 description 2622 "Additional information to 2623 support unique identification."; 2624 } 2625 } 2626 grouping association-ref { 2627 description 2628 "Generic Association parameters"; 2630 leaf id { 2631 type leafref { 2632 path "/pcep/entity/lsp-db/" 2633 + "association-list/id"; 2634 } 2635 description 2636 "PCEP Association ID"; 2637 } 2638 leaf source { 2639 type leafref { 2640 path "/pcep/entity/lsp-db/" 2641 + "association-list/source"; 2642 } 2643 description 2644 "PCEP Association Source."; 2645 } 2646 leaf global-source { 2647 type leafref { 2648 path "/pcep/entity/lsp-db/" 2649 + "association-list/global-source"; 2650 } 2651 description 2652 "PCEP Association Global 2653 Source."; 2654 } 2655 leaf extended-id{ 2656 type leafref { 2657 path "/pcep/entity/lsp-db/" 2658 + "association-list/extended-id"; 2659 } 2660 description 2661 "Additional information to 2662 support unique identification."; 2663 } 2664 } 2666 grouping session-grouping { 2667 description 2668 "Session grouping"; 2669 container sessions { 2670 config false; 2671 description 2672 "This entry represents a single PCEP 2673 session in which the local PCEP entity participates. 2674 This entry exists only if the corresponding PCEP 2675 session has been initialized by some event, such as 2676 manual user configuration, auto-discovery of a peer, 2677 or an incoming TCP connection."; 2679 list session { 2680 key "initiator"; 2681 description 2682 "The list of sessions, note that 2683 for a time being two sessions 2684 may exist for a peer"; 2686 leaf initiator { 2687 type pcep-initiator; 2688 description 2689 "The initiator of the session,that is, whether 2690 the TCP connection was initiated by the local 2691 PCEP entity or the peer. 2692 There is a window during session 2693 initialization where two sessions can exist 2694 between a pair of PCEP speakers, each 2695 initiated by one of the speakers. One of 2696 these sessions is always discarded before it 2697 leaves OpenWait state. However, before it is 2698 discarded, two sessions to the given peer 2699 appear transiently in this MIB module. The 2700 sessions are distinguished by who initiated 2701 them, and so this field is the key."; 2702 } 2704 leaf role { 2705 type leafref { 2706 path "/pcep/entity/role"; 2707 } 2708 description 2709 "The reference to peer role ."; 2710 } 2712 leaf state-last-change { 2713 type yang:timestamp; 2714 description 2715 "The timestamp value at the time this 2716 session entered its current state as 2717 denoted by the state leaf."; 2718 } 2720 leaf state { 2721 type pcep-sess-state; 2722 description 2723 "The current state of the session. 2724 The set of possible states excludes the 2725 idle state since entries do not exist 2726 in the idle state."; 2728 } 2730 leaf session-creation { 2731 type yang:timestamp; 2732 description 2733 "The timestamp value at the time this 2734 session was created."; 2735 } 2737 leaf connect-retry { 2738 type yang:counter32; 2739 description 2740 "The number of times that the local PCEP 2741 entity has attempted to establish a TCP 2742 connection for this session without 2743 success. The PCEP entity gives up when 2744 this reaches connect-max-retry."; 2745 } 2747 leaf local-id { 2748 type uint32 { 2749 range "0..255"; 2750 } 2751 description 2752 "The value of the PCEP session ID used by 2753 the local PCEP entity in the Open message 2754 for this session. If state is tcp-pending 2755 then this is the session ID that will be 2756 used in the Open message. Otherwise, this 2757 is the session ID that was sent in the 2758 Open message."; 2759 } 2761 leaf remote-id { 2762 type uint32 { 2763 range "0..255"; 2764 } 2765 must "((../state != 'tcp-pending'" + 2766 "and " + 2767 "../state != 'open-wait' )" + 2768 "or " + 2769 "((../state = 'tcp-pending'" + 2770 " or " + 2771 "../state = 'open-wait' )" + 2772 "and (. = 0)))" { 2773 error-message 2774 "Invalid remote-id"; 2775 description 2776 "If state is tcp- 2777 pending or open-wait 2778 then this leaf is not 2779 used and MUST be set 2780 to zero."; 2781 } 2782 description 2783 "The value of the PCEP session 2784 ID used by the peer in its 2785 Open message for this 2786 session."; 2787 } 2789 leaf keepalive-timer { 2790 type uint32 { 2791 range "0..255"; 2792 } 2793 units "seconds"; 2794 must "(../state = 'session-up'" + 2795 "or " + 2796 "(../state != 'session-up'" + 2797 "and (. = 0)))" { 2798 error-message 2799 "Invalid keepalive 2800 timer"; 2801 description 2802 "This field is used if 2803 and only if state is 2804 session-up. Otherwise, 2805 it is not used and 2806 MUST be set to 2807 zero."; 2808 } 2809 description 2810 "The agreed maximum interval at 2811 which the local PCEP entity 2812 transmits PCEP messages on 2813 this PCEP session. Zero means 2814 that the local PCEP entity 2815 never sends Keepalives on this 2816 session."; 2817 } 2819 leaf peer-keepalive-timer { 2820 type uint32 { 2821 range "0..255"; 2822 } 2823 units "seconds"; 2824 must "(../state = 'session-up'" + 2825 "or " + 2826 "(../state != 'session-up'" + 2827 "and " + 2828 "(. = 0)))" { 2829 error-message 2830 "Invalid Peer keepalive 2831 timer"; 2832 description 2833 "This field is used if 2834 and only if state is 2835 session-up. Otherwise, 2836 it is not used and MUST 2837 be set to zero."; 2838 } 2839 description 2840 "The agreed maximum interval at 2841 which the peer transmits PCEP 2842 messages on this PCEP session. 2843 Zero means that the peer never 2844 sends Keepalives on this 2845 session."; 2846 } 2848 leaf dead-timer { 2849 type uint32 { 2850 range "0..255"; 2851 } 2852 units "seconds"; 2853 description 2854 "The dead timer interval for 2855 this PCEP session."; 2856 } 2858 leaf peer-dead-timer { 2859 type uint32 { 2860 range "0..255"; 2861 } 2862 units "seconds"; 2863 must "((../state != 'tcp-pending'" + 2864 "and " + 2865 "../state != 'open-wait' )" + 2866 "or " + 2867 "((../state = 'tcp-pending'" + 2868 " or " + 2869 "../state = 'open-wait' )" + 2870 "and " + 2871 "(. = 0)))" { 2872 error-message 2873 "Invalid Peer Dead 2874 timer"; 2875 description 2876 "If state is tcp- 2877 pending or open-wait 2878 then this leaf is not 2879 used and MUST be set to 2880 zero."; 2881 } 2882 description 2883 "The peer's dead-timer interval 2884 for this PCEP session."; 2885 } 2887 leaf ka-hold-time-rem { 2888 type uint32 { 2889 range "0..255"; 2890 } 2891 units "seconds"; 2892 must "((../state != 'tcp-pending'" + 2893 "and " + 2894 "../state != 'open-wait' ) " + 2895 "or " + 2896 "((../state = 'tcp-pending'" + 2897 "or " + 2898 "../state = 'open-wait' )" + 2899 "and " + 2900 "(. = 0)))" { 2901 error-message 2902 "Invalid Keepalive hold 2903 time remaining"; 2904 description 2905 "If state is tcp-pending 2906 or open-wait then this 2907 field is not used and 2908 MUST be set to zero."; 2909 } 2910 description 2911 "The keep alive hold time 2912 remaining for this session."; 2913 } 2915 leaf overload-time { 2916 type uint32; 2917 units "seconds"; 2918 must "((../overloaded = true()) " + 2919 "or ((../overloaded != true()) " + 2920 "and (. = 0)))" { 2921 error-message 2922 "Invalid overload-time"; 2923 description 2924 "This field is only used 2925 if overloaded is set to 2926 true. Otherwise, it is 2927 not used and MUST be 2928 set to zero."; 2929 } 2930 description 2931 "The interval of time that is 2932 remaining until the local PCEP 2933 entity will cease to be 2934 overloaded on this session."; 2935 } 2937 leaf peer-overloaded { 2938 type boolean; 2939 description 2940 "If the peer has informed the 2941 local PCEP entity that it is 2942 currently overloaded, then 2943 this is set to true. 2944 Otherwise, it is set to 2945 false."; 2946 } 2948 leaf peer-overload-time { 2949 type uint32; 2950 units "seconds"; 2951 must "((../peer-overloaded = " + 2952 "true()) or " + 2953 "((../peer-overloaded !=" + 2954 "true())" + 2955 " and " + 2956 "(. = 0)))" { 2957 error-message 2958 "Invalid peer overload 2959 time"; 2960 description 2961 "This field is only used 2962 if peer-overloaded is 2963 set to true. Otherwise, 2964 it is not used and MUST 2965 be set to zero."; 2966 } 2967 description 2968 "The interval of time that is 2969 remaining until the peer will 2970 cease to be overloaded. If it 2971 is not known how long the peer 2972 will stay in overloaded state, 2973 this leaf is set to zero."; 2974 } 2976 leaf lspdb-sync { 2977 if-feature stateful; 2978 type sync-state; 2979 description 2980 "The LSP-DB state 2981 synchronization status."; 2982 } 2984 leaf recv-db-ver{ 2985 when "../role = 'pcc'" + 2986 "or " + 2987 "../role = 'pcc-and-pce'" 2988 { 2989 description 2990 "Valid for PCEP Peer as 2991 PCC"; 2992 } 2994 if-feature stateful; 2995 if-feature stateful-sync-opt; 2997 type uint64; 2999 description 3000 "The last received LSP State 3001 Database Version Number"; 3002 } 3004 container of-list{ 3005 when "../role = 'pce'" + 3006 "or " + 3007 "../role = 'pcc-and-pce'" 3008 { 3009 description 3010 "Valid for PCEP Peer as 3011 PCE"; 3012 } 3013 if-feature objective-function; 3015 uses of-list; 3016 description 3017 "Indicate the list of supported 3018 OF on this session"; 3019 } 3021 leaf speaker-entity-id{ 3022 if-feature stateful-sync-opt; 3023 type string; 3024 description 3025 "The Speaker Entity Identifier"; 3026 } 3028 leaf discontinuity-time { 3029 type yang:timestamp; 3030 description 3031 "The timestamp value of the 3032 time when the statistics were 3033 last reset."; 3034 } 3035 } // session 3036 } // sessions 3037 } 3038 /* 3039 * Configuration data nodes 3040 */ 3041 container pcep{ 3043 presence 3044 "The PCEP is enabled"; 3046 description 3047 "Parameters for list of configured PCEP entities 3048 on the device."; 3050 container entity { 3052 description 3053 "The configured PCEP entity on the device."; 3055 leaf addr { 3056 type inet:ip-address; 3057 mandatory true; 3058 description 3059 "The local Internet address of this PCEP 3060 entity. 3061 If operating as a PCE server, the PCEP 3062 entity listens on this address. 3064 If operating as a PCC, the PCEP entity 3065 binds outgoing TCP connections to this 3066 address. 3067 It is possible for the PCEP entity to 3068 operate both as a PCC and a PCE Server, in 3069 which case it uses this address both to 3070 listen for incoming TCP connections and to 3071 bind outgoing TCP connections."; 3072 } 3074 leaf enabled { 3075 type boolean; 3076 default true; 3077 description 3078 "The administrative status of this PCEP 3079 Entity."; 3080 } 3082 leaf role { 3083 type pcep-role; 3084 mandatory true; 3085 description 3086 "The role that this entity can play. 3087 Takes one of the following values. 3088 - unknown(0): this PCEP Entity role is not 3089 known. 3090 - pcc(1): this PCEP Entity is a PCC. 3091 - pce(2): this PCEP Entity is a PCE. 3092 - pcc-and-pce(3): this PCEP Entity is both 3093 a PCC and a PCE."; 3094 } 3096 leaf description { 3097 type string; 3098 description 3099 "Description of the PCEP entity configured 3100 by the user"; 3101 } 3103 leaf speaker-entity-id{ 3104 if-feature stateful-sync-opt; 3105 type string; 3106 description 3107 "The Speaker Entity Identifier"; 3108 } 3110 leaf admin-status { 3111 type pcep-admin-status; 3112 description 3113 "The administrative status of this PCEP Entity. 3114 This is the desired operational status as 3115 currently set by an operator or by default in 3116 the implementation. The value of enabled 3117 represents the current status of an attempt 3118 to reach this desired status."; 3119 } 3121 leaf index{ 3122 type uint32; 3123 config "false"; 3124 description 3125 "The index of the operational PECP entity"; 3126 } 3128 leaf oper-status { 3129 type pcep-oper-status; 3130 config "false"; 3131 description 3132 "The operational status of the PCEP entity. 3133 Takes one of the following values. 3134 - oper-status-up(1): the PCEP entity is active. 3135 - oper-status-down(2): the PCEP entity is inactive. 3136 - oper-status-going-up(3): the PCEP entity is 3137 activating. 3138 - oper-status-going-down(4): the PCEP entity is 3139 deactivating. 3140 - oper-status-failed(5): the PCEP entity has 3141 failed and will recover when possible. 3142 - oper-status-failed-perm(6): the PCEP entity 3143 has failed and will not recover without 3144 operator intervention."; 3145 } 3147 uses info { 3148 description 3149 "Local PCEP entity information"; 3150 } 3152 container pce-info { 3153 when "../role = 'pce'" + 3154 "or " + 3155 "../role = 'pcc-and-pce'" 3156 { 3157 description 3158 "Valid at PCE"; 3160 } 3161 uses pce-info { 3162 description 3163 "Local PCE information"; 3164 } 3165 container path-key { 3166 if-feature path-key; 3167 uses path-key { 3168 description 3169 "Path-Key Configuration"; 3170 } 3171 description 3172 "Path-Key Configuration"; 3173 } 3175 description 3176 "The Local PCE Entity PCE information"; 3177 } 3179 uses authentication { 3180 description 3181 "Local PCEP entity authentication information"; 3182 } 3184 uses pcep-entity-info { 3185 description 3186 "The configuration related to the PCEP 3187 entity."; 3188 } 3190 leaf pcep-notification-max-rate { 3191 type uint32; 3192 mandatory true; 3193 description 3194 "This variable indicates the maximum number of 3195 notifications issued per second. If events 3196 occur more rapidly, the implementation may 3197 simply fail to emit these notifications during 3198 that period, or may queue them until an 3199 appropriate time. A value of 0 means no 3200 notifications are emitted and all should be 3201 discarded (that is, not queued)."; 3202 } 3204 container stateful-parameter{ 3205 if-feature stateful; 3206 must "(/pcep/entity/capability/stateful/enabled" + 3207 " = true())" 3209 { 3210 error-message 3211 "The Stateful PCE must be enabled"; 3212 description 3213 "When PCEP entity is stateful 3214 enabled"; 3215 } 3216 uses stateful-pce-parameter; 3218 description 3219 "The configured stateful parameters"; 3220 } 3222 container of-list{ 3223 when "../role = 'pce'" + 3224 "or " + 3225 "../role = 'pcc-and-pce'" 3226 { 3227 description 3228 "Valid at PCE"; 3229 } 3230 if-feature objective-function; 3232 uses of-list; 3234 description 3235 "The authorized OF-List at PCE for all peers"; 3236 } 3238 container lsp-db{ 3239 if-feature stateful; 3240 config false; 3241 description 3242 "The LSP-DB"; 3243 leaf db-ver{ 3244 when "../../role = 'pcc'" + 3245 "or " + 3246 "../../role = 'pcc-and-pce'" 3247 { 3248 description 3249 "Valid at PCC"; 3250 } 3251 if-feature stateful-sync-opt; 3252 type uint64; 3253 description 3254 "The LSP State Database Version Number"; 3255 } 3256 list association-list { 3257 key "id source global-source extended-id"; 3258 description 3259 "List of all PCEP associations"; 3260 uses association { 3261 description 3262 "The Association attributes"; 3263 } 3264 list lsp { 3265 key "plsp-id pcc-id"; 3266 description 3267 "List of all LSP in this association"; 3268 leaf plsp-id { 3269 type leafref { 3270 path "/pcep/entity/lsp-db/" 3271 + "lsp/plsp-id"; 3272 } 3273 description 3274 "Reference to PLSP-ID in LSP-DB"; 3275 } 3276 leaf pcc-id { 3277 type leafref { 3278 path "/pcep/entity/lsp-db/" 3279 + "lsp/pcc-id"; 3280 } 3281 description 3282 "Reference to PCC-ID in LSP-DB"; 3283 } 3284 } 3285 } 3286 list lsp { 3287 key "plsp-id pcc-id"; 3288 description 3289 "List of all LSPs in LSP-DB"; 3290 uses lsp-state { 3291 description 3292 "The PCEP specific attributes for 3293 LSP-DB."; 3294 } 3295 list association-list { 3296 key "id source global-source extended-id"; 3297 description 3298 "List of all PCEP associations"; 3299 uses association-ref { 3300 description 3301 "Reference to the Association 3302 attributes"; 3303 } 3304 } 3306 } 3307 } 3309 container path-keys { 3310 when "../role = 'pce' or ../role = 'pcc-and-pce'" { 3311 description 3312 "Valid at PCE"; 3313 } 3314 if-feature path-key; 3315 config false; 3316 uses path-key-state; 3317 description 3318 "The path-keys generated by the PCE"; 3319 } 3321 container peers{ 3322 description 3323 "The list of configured peers for the 3324 entity (remote PCE)"; 3325 list peer{ 3326 key "addr"; 3328 description 3329 "The peer configured for the entity. 3330 (remote PCE)"; 3332 leaf addr { 3333 type inet:ip-address; 3334 description 3335 "The local Internet address of this 3336 PCEP peer."; 3337 } 3339 leaf role { 3340 type pcep-role; 3341 config false; 3342 description 3343 "The role of the PCEP Peer. 3344 Takes one of the following values. 3345 - unknown(0): this PCEP peer role is not 3346 known. 3347 - pcc(1): this PCEP peer is a PCC. 3348 - pce(2): this PCEP peer is a PCE. 3349 - pcc-and-pce(3): this PCEP peer 3350 is both a PCC and a PCE."; 3351 } 3353 leaf description { 3354 type string; 3355 description 3356 "Description of the PCEP peer 3357 configured by the user"; 3358 } 3359 uses info { 3360 description 3361 "PCE Peer information"; 3362 } 3364 container pce-info { 3365 when "../role = 'pce'" + 3366 "or " + 3367 "../role = 'pcc-and-pce'" 3368 { 3369 description 3370 "When the peer is PCE"; 3371 } 3373 uses pce-info { 3374 description 3375 "PCE Peer information"; 3376 } 3377 description 3378 "The PCE Peer information"; 3379 } 3381 leaf delegation-pref{ 3382 if-feature stateful; 3383 type uint8{ 3384 range "0..7"; 3385 } 3386 must "(/pcep/entity/capability/stateful" + 3387 "/active = true())" 3388 { 3389 error-message 3390 "The Active Stateful PCE must be 3391 enabled"; 3392 description 3393 "When PCEP entity is active stateful 3394 enabled"; 3395 } 3396 description 3397 "The PCE peer delegation preference."; 3398 } 3399 uses authentication { 3400 description 3401 "PCE Peer authentication"; 3403 } 3404 leaf discontinuity-time { 3405 type yang:timestamp; 3406 config false; 3407 description 3408 "The timestamp of the time when the 3409 information and statistics were last 3410 reset."; 3411 } 3413 leaf initiate-session { 3414 type boolean; 3415 config false; 3416 description 3417 "Indicates whether the local PCEP 3418 entity initiates sessions to this peer, 3419 or waits for the peer to initiate a 3420 session."; 3421 } 3423 leaf session-exists{ 3424 type boolean; 3425 config false; 3426 description 3427 "Indicates whether a session with 3428 this peer currently exists."; 3429 } 3431 leaf session-up-time{ 3432 type yang:timestamp; 3433 config false; 3434 description 3435 "The timestamp value of the last time a 3436 session with this peer was successfully 3437 established."; 3438 } 3440 leaf session-fail-time{ 3441 type yang:timestamp; 3442 config false; 3443 description 3444 "The timestamp value of the last time a 3445 session with this peer failed to be 3446 established."; 3447 } 3449 leaf session-fail-up-time{ 3450 type yang:timestamp; 3451 config false; 3452 description 3453 "The timestamp value of the last time a 3454 session with this peer failed from 3455 active."; 3456 } 3458 uses session-grouping { 3459 description 3460 "session information"; 3461 } 3462 }//peer 3463 }//peers 3464 }//entity 3465 }//pcep 3467 /* 3468 * Notifications 3469 */ 3470 notification pcep-session-up { 3471 description 3472 "This notification is sent when the value of 3473 '/pcep/peers/peer/sessions/session/state' 3474 enters the 'session-up' state."; 3476 uses notification-instance-hdr; 3478 uses notification-session-hdr; 3480 leaf state-last-change { 3481 type yang:timestamp; 3482 description 3483 "The timestamp value at the time this session 3484 entered its current state as denoted by the state 3485 leaf."; 3486 } 3488 leaf state { 3489 type pcep-sess-state; 3490 description 3491 "The current state of the session. 3492 The set of possible states excludes the idle state 3493 since entries do not exist in the idle state."; 3494 } 3495 } //notification 3497 notification pcep-session-down { 3498 description 3499 "This notification is sent when the value of 3500 '/pcep/peers/peer/sessions/session/state' 3501 leaves the 'session-up' state."; 3503 uses notification-instance-hdr; 3505 leaf session-initiator { 3506 type pcep-initiator; 3507 description 3508 "The initiator of the session."; 3509 } 3511 leaf state-last-change { 3512 type yang:timestamp; 3513 description 3514 "The timestamp value at the time this session 3515 entered its current state as denoted by the state 3516 leaf."; 3517 } 3519 leaf state { 3520 type pcep-sess-state; 3521 description 3522 "The current state of the session. 3523 The set of possible states excludes the idle state 3524 since entries do not exist in the idle state."; 3525 } 3526 } //notification 3528 notification pcep-session-local-overload { 3529 description 3530 "This notification is sent when the local PCEP entity 3531 enters overload state for a peer."; 3533 uses notification-instance-hdr; 3535 uses notification-session-hdr; 3537 leaf overloaded { 3538 type boolean; 3539 description 3540 "If the local PCEP entity has informed the peer 3541 that it is currently overloaded, then this is set 3542 to true. Otherwise, it is set to false."; 3543 } 3545 leaf overload-time { 3546 type uint32; 3547 units "seconds"; 3548 description 3549 "The interval of time that is remaining until the 3550 local PCEP entity will cease to be overloaded on 3551 this session."; 3552 } 3553 } //notification 3555 notification pcep-session-local-overload-clear { 3556 description 3557 "This notification is sent when the local PCEP entity 3558 leaves overload state for a peer."; 3560 uses notification-instance-hdr; 3562 leaf overloaded { 3563 type boolean; 3564 description 3565 "If the local PCEP entity has informed the peer 3566 that it is currently overloaded, then this is set 3567 to true. Otherwise, it is set to false."; 3568 } 3569 } //notification 3571 notification pcep-session-peer-overload { 3572 description 3573 "This notification is sent when a peer enters overload 3574 state."; 3576 uses notification-instance-hdr; 3578 uses notification-session-hdr; 3580 leaf peer-overloaded { 3581 type boolean; 3582 description 3583 "If the peer has informed the local PCEP entity that 3584 it is currently overloaded, then this is set to 3585 true. Otherwise, it is set to false."; 3586 } 3588 leaf peer-overload-time { 3589 type uint32; 3590 units "seconds"; 3591 description 3592 "The interval of time that is remaining until the 3593 peer will cease to be overloaded. If it is not 3594 known how long the peer will stay in overloaded 3595 state, this leaf is set to zero."; 3596 } 3597 } //notification 3599 notification pcep-session-peer-overload-clear { 3600 description 3601 "This notification is sent when a peer leaves overload 3602 state."; 3604 uses notification-instance-hdr; 3606 leaf peer-overloaded { 3607 type boolean; 3608 description 3609 "If the peer has informed the local PCEP entity that 3610 it is currently overloaded, then this is set to 3611 true. Otherwise, it is set to false."; 3612 } 3613 } //notification 3615 /* 3616 * RPC 3617 */ 3619 rpc trigger-resync { 3620 if-feature stateful; 3621 if-feature stateful-sync-opt; 3622 description 3623 "Trigger the resyncrinization at the PCE"; 3624 input { 3625 leaf pcc { 3626 type leafref { 3627 path "/pcep/entity/peers/peer/addr"; 3628 } 3629 description 3630 "The IP address to identify the PCC. The state 3631 syncronization is re-triggered for all LSPs from 3632 the PCC. The rpc on the PCC will be ignored."; 3633 } 3634 } 3635 }//rpc 3637 }//module 3639 3640 10.2. ietf-pcep-stats module 3642 file "ietf-pcep-stats@2017-06-29.yang" 3643 module ietf-pcep-stats { 3645 yang-version 1.1; 3647 namespace "urn:ietf:params:xml:ns:yang:ietf-pcep-stats"; 3648 prefix ps; 3650 import ietf-pcep { 3651 prefix p; 3652 } 3654 import ietf-yang-types { 3655 prefix "yang"; 3656 } 3658 organization 3659 "IETF PCE (Path Computation Element) Working Group"; 3661 contact 3662 "WG Web: 3663 WG List: 3664 WG Chair: JP Vasseur 3665 3666 WG Chair: Julien Meuric 3667 3668 WG Chair: Jonathan Hardwick 3669 3670 Editor: Dhruv Dhody 3671 "; 3673 description 3674 "The YANG module augments the PCEP yang operational 3675 model with statistics, counters and telemetry data"; 3677 revision 2017-06-29 { 3678 description "Initial revision."; 3679 reference 3680 "RFC XXXX: A YANG Data Model for Path Computation 3681 Element Communications Protocol 3682 (PCEP)"; 3684 } 3686 /* 3687 * Groupings 3688 */ 3690 grouping pcep-stats{ 3691 description 3692 "This grouping defines statistics for PCEP. It is used 3693 for both peer and current session."; 3694 leaf avg-rsp-time{ 3695 when "../../p:role = 'pce'" + 3696 "or " + 3697 "../../p:role = 'pcc-and-pce'" 3698 { 3699 description 3700 "Valid for PCEP Peer as PCE"; 3701 } 3702 type uint32; 3703 units "milliseconds"; 3705 description 3706 "The average response time. 3707 If an average response time has not been 3708 calculated then this leaf has the value zero."; 3709 } 3711 leaf lwm-rsp-time{ 3712 when "../../p:role = 'pce'" + 3713 "or " + 3714 "../../p:role = 'pcc-and-pce'" 3715 { 3716 description 3717 "Valid for PCEP Peer as PCE"; 3718 } 3719 type uint32; 3720 units "milliseconds"; 3722 description 3723 "The smallest (low-water mark) response time seen. 3724 If no responses have been received then this 3725 leaf has the value zero."; 3726 } 3728 leaf hwm-rsp-time{ 3729 when "../../p:role = 'pce'" + 3730 "or " + 3731 "../../p:role = 'pcc-and-pce'" 3732 { 3733 description 3734 "Valid for PCEP Peer as PCE"; 3735 } 3736 type uint32; 3737 units "milliseconds"; 3739 description 3740 "The greatest (high-water mark) response time seen. 3741 If no responses have been received then this object 3742 has the value zero."; 3743 } 3745 leaf num-pcreq-sent{ 3746 when "../../p:role = 'pce'" + 3747 "or " + 3748 "../../p:role = 'pcc-and-pce'" 3749 { 3750 description 3751 "Valid for PCEP Peer as PCE"; 3752 } 3753 type yang:counter32; 3754 description 3755 "The number of PCReq messages sent."; 3756 } 3758 leaf num-pcreq-rcvd{ 3759 when "../../p:role = 'pcc'" + 3760 "or " + 3761 "../../p:role = 'pcc-and-pce'" 3762 { 3763 description 3764 "Valid for PCEP Peer as PCC"; 3765 } 3766 type yang:counter32; 3767 description 3768 "The number of PCReq messages received."; 3769 } 3771 leaf num-pcrep-sent{ 3772 when "../../p:role = 'pcc'" + 3773 "or " + 3774 "../../p:role = 'pcc-and-pce'" 3775 { 3776 description 3777 "Valid for PCEP Peer as PCC"; 3778 } 3780 type yang:counter32; 3781 description 3782 "The number of PCRep messages sent."; 3783 } 3785 leaf num-pcrep-rcvd{ 3786 when "../../p:role = 'pce'" + 3787 "or " + 3788 "../../p:role = 'pcc-and-pce'" 3789 { 3790 description 3791 "Valid for PCEP Peer as PCE"; 3792 } 3794 type yang:counter32; 3795 description 3796 "The number of PCRep messages received."; 3797 } 3799 leaf num-pcerr-sent{ 3800 type yang:counter32; 3801 description 3802 "The number of PCErr messages sent."; 3803 } 3805 leaf num-pcerr-rcvd{ 3806 type yang:counter32; 3807 description 3808 "The number of PCErr messages received."; 3809 } 3811 leaf num-pcntf-sent{ 3812 type yang:counter32; 3813 description 3814 "The number of PCNtf messages sent."; 3815 } 3817 leaf num-pcntf-rcvd{ 3818 type yang:counter32; 3819 description 3820 "The number of PCNtf messages received."; 3821 } 3823 leaf num-keepalive-sent{ 3824 type yang:counter32; 3825 description 3826 "The number of Keepalive messages sent."; 3827 } 3829 leaf num-keepalive-rcvd{ 3830 type yang:counter32; 3831 description 3832 "The number of Keepalive messages received."; 3833 } 3835 leaf num-unknown-rcvd{ 3836 type yang:counter32; 3837 description 3838 "The number of unknown messages received."; 3839 } 3841 leaf num-corrupt-rcvd{ 3842 type yang:counter32; 3843 description 3844 "The number of corrupted PCEP message received."; 3845 } 3847 leaf num-req-sent{ 3848 when "../../p:role = 'pce'" + 3849 "or " + 3850 "../../p:role = 'pcc-and-pce'" 3851 { 3852 description 3853 "Valid for PCEP Peer as PCE"; 3854 } 3855 type yang:counter32; 3856 description 3857 "The number of requests sent. A request corresponds 3858 1:1 with an RP object in a PCReq message. This might 3859 be greater than num-pcreq-sent because multiple 3860 requests can be batched into a single PCReq 3861 message."; 3862 } 3864 leaf num-req-sent-pend-rep{ 3865 when "../../p:role = 'pce'" + 3866 "or " + 3867 "../../p:role = 'pcc-and-pce'" 3868 { 3869 description 3870 "Valid for PCEP Peer as PCE"; 3871 } 3872 type yang:counter32; 3873 description 3874 "The number of requests that have been sent for 3875 which a response is still pending."; 3876 } 3878 leaf num-req-sent-ero-rcvd{ 3879 when "../../p:role = 'pce'" + 3880 "or " + 3881 "../../p:role = 'pcc-and-pce'" 3882 { 3883 description 3884 "Valid for PCEP Peer as PCE"; 3885 } 3886 type yang:counter32; 3887 description 3888 "The number of requests that have been sent for 3889 which a response with an ERO object was received. 3890 Such responses indicate that a path was 3891 successfully computed by the peer."; 3892 } 3894 leaf num-req-sent-nopath-rcvd{ 3895 when "../../p:role = 'pce'" + 3896 "or " + 3897 "../../p:role = 'pcc-and-pce'" 3898 { 3899 description 3900 "Valid for PCEP Peer as PCE"; 3901 } 3902 type yang:counter32; 3903 description 3904 "The number of requests that have been sent for 3905 which a response with a NO-PATH object was 3906 received. Such responses indicate that the peer 3907 could not find a path to satisfy the 3908 request."; 3909 } 3911 leaf num-req-sent-cancel-rcvd{ 3912 when "../../p:role = 'pce'" + 3913 "or " + 3914 "../../p:role = 'pcc-and-pce'" 3915 { 3916 description 3917 "Valid for PCEP Peer as PCE"; 3918 } 3919 type yang:counter32; 3920 description 3921 "The number of requests that were cancelled with 3922 a PCNtf message. 3923 This might be different than num-pcntf-rcvd because 3924 not all PCNtf messages are used to cancel requests, 3925 and a single PCNtf message can cancel multiple 3926 requests."; 3927 } 3929 leaf num-req-sent-error-rcvd{ 3930 when "../../p:role = 'pce'" + 3931 "or " + 3932 "../../p:role = 'pcc-and-pce'" 3933 { 3934 description 3935 "Valid for PCEP Peer as PCE"; 3936 } 3937 type yang:counter32; 3938 description 3939 "The number of requests that were rejected with a 3940 PCErr message. 3941 This might be different than num-pcerr-rcvd because 3942 not all PCErr messages are used to reject requests, 3943 and a single PCErr message can reject multiple 3944 requests."; 3945 } 3947 leaf num-req-sent-timeout{ 3948 when "../../p:role = 'pce'" + 3949 "or " + 3950 "../../p:role = 'pcc-and-pce'" 3951 { 3952 description 3953 "Valid for PCEP Peer as PCE"; 3954 } 3955 type yang:counter32; 3956 description 3957 "The number of requests that have been sent to a peer 3958 and have been abandoned because the peer has taken too 3959 long to respond to them."; 3960 } 3962 leaf num-req-sent-cancel-sent{ 3963 when "../../p:role = 'pce'" + 3964 "or " + 3965 "../../p:role = 'pcc-and-pce'" 3966 { 3967 description 3968 "Valid for PCEP Peer as PCE"; 3970 } 3971 type yang:counter32; 3972 description 3973 "The number of requests that were sent to the peer and 3974 explicitly cancelled by the local PCEP entity sending 3975 a PCNtf."; 3976 } 3978 leaf num-req-rcvd{ 3979 when "../../p:role = 'pcc'" + 3980 "or " + 3981 "../../p:role = 'pcc-and-pce'" 3982 { 3983 description 3984 "Valid for PCEP Peer as PCC"; 3985 } 3986 type yang:counter32; 3987 description 3988 "The number of requests received. A request 3989 corresponds 1:1 with an RP object in a PCReq 3990 message. 3991 This might be greater than num-pcreq-rcvd because 3992 multiple requests can be batched into a single 3993 PCReq message."; 3994 } 3996 leaf num-req-rcvd-pend-rep{ 3997 when "../../p:role = 'pcc'" + 3998 "or " + 3999 "../../p:role = 'pcc-and-pce'" 4000 { 4001 description 4002 "Valid for PCEP Peer as PCC"; 4003 } 4004 type yang:counter32; 4005 description 4006 "The number of requests that have been received for 4007 which a response is still pending."; 4008 } 4010 leaf num-req-rcvd-ero-sent{ 4011 when "../../p:role = 'pcc'" + 4012 "or " + 4013 "../../p:role = 'pcc-and-pce'" 4014 { 4015 description 4016 "Valid for PCEP Peer as PCC"; 4017 } 4018 type yang:counter32; 4019 description 4020 "The number of requests that have been received for 4021 which a response with an ERO object was sent. Such 4022 responses indicate that a path was successfully 4023 computed by the local PCEP entity."; 4024 } 4026 leaf num-req-rcvd-nopath-sent{ 4027 when "../../p:role = 'pcc'" + 4028 "or " + 4029 "../../p:role = 'pcc-and-pce'" 4030 { 4031 description 4032 "Valid for PCEP Peer as PCC"; 4033 } 4034 type yang:counter32; 4035 description 4036 "The number of requests that have been received for 4037 which a response with a NO-PATH object was sent. Such 4038 responses indicate that the local PCEP entity could 4039 not find a path to satisfy the request."; 4040 } 4042 leaf num-req-rcvd-cancel-sent{ 4043 when "../../p:role = 'pcc'" + 4044 "or " + 4045 "../../p:role = 'pcc-and-pce'" 4046 { 4047 description 4048 "Valid for PCEP Peer as PCC"; 4049 } 4050 type yang:counter32; 4051 description 4052 "The number of requests received that were cancelled 4053 by the local PCEP entity sending a PCNtf message. 4054 This might be different than num-pcntf-sent because 4055 not all PCNtf messages are used to cancel requests, 4056 and a single PCNtf message can cancel multiple 4057 requests."; 4058 } 4060 leaf num-req-rcvd-error-sent{ 4061 when "../../p:role = 'pcc'" + 4062 "or " + 4063 "../../p:role = 'pcc-and-pce'" 4064 { 4065 description 4066 "Valid for PCEP Peer as PCC"; 4067 } 4068 type yang:counter32; 4069 description 4070 "The number of requests received that were cancelled 4071 by the local PCEP entity sending a PCErr message. 4072 This might be different than num-pcerr-sent because 4073 not all PCErr messages are used to cancel requests, 4074 and a single PCErr message can cancel multiple 4075 requests."; 4076 } 4078 leaf num-req-rcvd-cancel-rcvd{ 4079 when "../../p:role = 'pcc'" + 4080 "or " + 4081 "../../p:role = 'pcc-and-pce'" 4082 { 4083 description 4084 "Valid for PCEP Peer as PCC"; 4085 } 4086 type yang:counter32; 4087 description 4088 "The number of requests that were received from the 4089 peer and explicitly cancelled by the peer sending 4090 a PCNtf."; 4091 } 4093 leaf num-rep-rcvd-unknown{ 4094 when "../../p:role = 'pce'" + 4095 "or " + 4096 "../../p:role = 'pcc-and-pce'" 4097 { 4098 description 4099 "Valid for PCEP Peer as PCE"; 4100 } 4101 type yang:counter32; 4102 description 4103 "The number of responses to unknown requests 4104 received. A response to an unknown request is a 4105 response whose RP object does not contain the 4106 request ID of any request that is currently 4107 outstanding on the session."; 4108 } 4110 leaf num-req-rcvd-unknown{ 4111 when "../../p:role = 'pcc'" + 4112 "or " + 4113 "../../p:role = 'pcc-and-pce'" 4115 { 4116 description 4117 "Valid for PCEP Peer as PCC"; 4118 } 4119 type yang:counter32; 4120 description 4121 "The number of unknown requests that have been 4122 received. An unknown request is a request 4123 whose RP object contains a request ID of 4124 zero."; 4125 } 4127 container svec{ 4128 if-feature p:svec; 4129 description 4130 "If synchronized path computation is supported"; 4131 leaf num-svec-sent{ 4132 when "../../../p:role = 'pce'" + 4133 "or " + 4134 "../../../p:role = 'pcc-and-pce'" 4135 { 4136 description 4137 "Valid for PCEP Peer as PCE"; 4138 } 4139 type yang:counter32; 4140 description 4141 "The number of SVEC objects sent in PCReq messages. 4142 An SVEC object represents a set of synchronized 4143 requests."; 4144 } 4146 leaf num-svec-req-sent{ 4147 when "../../../p:role = 'pce'" + 4148 "or " + 4149 "../../../p:role = 'pcc-and-pce'" 4150 { 4151 description 4152 "Valid for PCEP Peer as PCE"; 4153 } 4154 type yang:counter32; 4155 description 4156 "The number of requests sent that appeared in one 4157 or more SVEC objects."; 4158 } 4160 leaf num-svec-rcvd{ 4161 when "../../../p:role = 'pcc'" + 4162 "or " + 4163 "../../../p:role = 'pcc-and-pce'" 4164 { 4165 description 4166 "Valid for PCEP Peer as PCC"; 4167 } 4168 type yang:counter32; 4169 description 4170 "The number of SVEC objects received in PCReq 4171 messages. An SVEC object represents a set of 4172 synchronized requests."; 4173 } 4175 leaf num-svec-req-rcvd{ 4176 when "../../../p:role = 'pcc'" + 4177 "or " + 4178 "../../../p:role = 'pcc-and-pce'" 4179 { 4180 description 4181 "Valid for PCEP Peer as PCC"; 4182 } 4183 type yang:counter32; 4184 description 4185 "The number of requests received that appeared 4186 in one or more SVEC objects."; 4187 } 4188 } 4189 container stateful{ 4190 if-feature p:stateful; 4191 description 4192 "Stateful PCE related statistics"; 4193 leaf num-pcrpt-sent{ 4194 when "../../../p:role = 'pce'" + 4195 "or " + 4196 "../../../p:role = 'pcc-and-pce'" 4197 { 4198 description 4199 "Valid for PCEP Peer as PCE"; 4200 } 4201 type yang:counter32; 4202 description 4203 "The number of PCRpt messages sent."; 4204 } 4206 leaf num-pcrpt-rcvd{ 4207 when "../../../p:role = 'pcc'" + 4208 "or " + 4209 "../../../p:role = 'pcc-and-pce'" 4210 { 4211 description 4212 "Valid for PCEP Peer as PCC"; 4213 } 4214 type yang:counter32; 4215 description 4216 "The number of PCRpt messages received."; 4217 } 4219 leaf num-pcupd-sent{ 4220 when "../../../p:role = 'pcc'" + 4221 "or " + 4222 "../../../p:role = 'pcc-and-pce'" 4223 { 4224 description 4225 "Valid for PCEP Peer as PCC"; 4226 } 4227 type yang:counter32; 4228 description 4229 "The number of PCUpd messages sent."; 4230 } 4232 leaf num-pcupd-rcvd{ 4233 when "../../../p:role = 'pce'" + 4234 "or " + 4235 "../../../p:role = 'pcc-and-pce'" 4236 { 4237 description 4238 "Valid for PCEP Peer as PCE"; 4239 } 4240 type yang:counter32; 4241 description 4242 "The number of PCUpd messages received."; 4243 } 4245 leaf num-rpt-sent{ 4246 when "../../../p:role = 'pce'" + 4247 "or " + 4248 "../../../p:role = 'pcc-and-pce'" 4249 { 4250 description 4251 "Valid for PCEP Peer as PCE"; 4252 } 4253 type yang:counter32; 4254 description 4255 "The number of LSP Reports sent. A LSP report 4256 corresponds 1:1 with an LSP object in a PCRpt 4257 message. This might be greater than 4258 num-pcrpt-sent because multiple reports can 4259 be batched into a single PCRpt message."; 4260 } 4262 leaf num-rpt-rcvd{ 4263 when "../../../p:role = 'pcc'" + 4264 "or " + 4265 "../../../p:role = 'pcc-and-pce'" 4266 { 4267 description 4268 "Valid for PCEP Peer as PCC"; 4269 } 4270 type yang:counter32; 4271 description 4272 "The number of LSP Reports received. A LSP report 4273 corresponds 1:1 with an LSP object in a PCRpt 4274 message. 4275 This might be greater than num-pcrpt-rcvd because 4276 multiple reports can be batched into a single 4277 PCRpt message."; 4278 } 4280 leaf num-rpt-rcvd-error-sent{ 4281 when "../../../p:role = 'pcc'" + 4282 "or " + 4283 "../../../p:role = 'pcc-and-pce'" 4284 { 4285 description 4286 "Valid for PCEP Peer as PCC"; 4287 } 4288 type yang:counter32; 4289 description 4290 "The number of reports of LSPs received that were 4291 responded by the local PCEP entity by sending a 4292 PCErr message."; 4293 } 4295 leaf num-upd-sent{ 4296 when "../../../p:role = 'pcc'" + 4297 "or " + 4298 "../../../p:role = 'pcc-and-pce'" 4299 { 4300 description 4301 "Valid for PCEP Peer as PCC"; 4302 } 4303 type yang:counter32; 4304 description 4305 "The number of LSP updates sent. A LSP update 4306 corresponds 1:1 with an LSP object in a PCUpd 4307 message. This might be greater than 4308 num-pcupd-sent because multiple updates can 4309 be batched into a single PCUpd message."; 4310 } 4312 leaf num-upd-rcvd{ 4313 when "../../../p:role = 'pce'" + 4314 "or " + 4315 "../../../p:role = 'pcc-and-pce'" 4316 { 4317 description 4318 "Valid for PCEP Peer as PCE"; 4319 } 4320 type yang:counter32; 4321 description 4322 "The number of LSP Updates received. A LSP update 4323 corresponds 1:1 with an LSP object in a PCUpd 4324 message. 4325 This might be greater than num-pcupd-rcvd because 4326 multiple updates can be batched into a single 4327 PCUpd message."; 4328 } 4330 leaf num-upd-rcvd-unknown{ 4331 when "../../../p:role = 'pce'" + 4332 "or " + 4333 "../../../p:role = 'pcc-and-pce'" 4334 { 4335 description 4336 "Valid for PCEP Peer as PCE"; 4337 } 4338 type yang:counter32; 4339 description 4340 "The number of updates to unknown LSPs 4341 received. An update to an unknown LSP is a 4342 update whose LSP object does not contain the 4343 PLSP-ID of any LSP that is currently 4344 present."; 4345 } 4347 leaf num-upd-rcvd-undelegated{ 4348 when "../../../p:role = 'pce'" + 4349 "or " + 4350 "../../../p:role = 'pcc-and-pce'" 4351 { 4352 description 4353 "Valid for PCEP Peer as PCE"; 4354 } 4355 type yang:counter32; 4356 description 4357 "The number of updates to not delegated LSPs 4358 received. An update to an undelegated LSP is a 4359 update whose LSP object does not contain the 4360 PLSP-ID of any LSP that is currently 4361 delegated to current PCEP session."; 4362 } 4364 leaf num-upd-rcvd-error-sent{ 4365 when "../../../p:role = 'pce'" + 4366 "or " + 4367 "../../../p:role = 'pcc-and-pce'" 4368 { 4369 description 4370 "Valid for PCEP Peer as PCE"; 4371 } 4372 type yang:counter32; 4373 description 4374 "The number of updates to LSPs received that were 4375 responded by the local PCEP entity by sending a 4376 PCErr message."; 4377 } 4378 container initiation { 4379 if-feature p:pce-initiated; 4380 description 4381 "PCE-Initiated related statistics"; 4382 leaf num-pcinitiate-sent{ 4383 when "../../../../p:role = 'pcc'" + 4384 "or " + 4385 "../../../../p:role = 'pcc-and-pce'" 4386 { 4387 description 4388 "Valid for PCEP Peer as PCC"; 4389 } 4390 type yang:counter32; 4391 description 4392 "The number of PCInitiate messages sent."; 4393 } 4395 leaf num-pcinitiate-rcvd{ 4396 when "../../../../p:role = 'pce'" + 4397 "or " + 4398 "../../../../p:role = 'pcc-and-pce'" 4399 { 4400 description 4401 "Valid for PCEP Peer as PCE"; 4402 } 4403 type yang:counter32; 4404 description 4405 "The number of PCInitiate messages received."; 4406 } 4408 leaf num-initiate-sent{ 4409 when "../../../../p:role = 'pcc'" + 4410 "or " + 4411 "../../../../p:role = 'pcc-and-pce'" 4412 { 4413 description 4414 "Valid for PCEP Peer as PCC"; 4415 } 4416 type yang:counter32; 4417 description 4418 "The number of LSP Initiation sent via PCE. 4419 A LSP initiation corresponds 1:1 with an LSP 4420 object in a PCInitiate message. This might be 4421 greater than num-pcinitiate-sent because 4422 multiple initiations can be batched into a 4423 single PCInitiate message."; 4424 } 4426 leaf num-initiate-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 LSP Initiation received from 4437 PCE. A LSP initiation corresponds 1:1 with 4438 an LSP object in a PCInitiate message. This 4439 might be greater than num-pcinitiate-rcvd 4440 because multiple initiations can be batched 4441 into a single PCInitiate message."; 4442 } 4444 leaf num-initiate-rcvd-error-sent{ 4445 when "../../../../p:role = 'pce'" + 4446 "or " + 4447 "../../../../p:role = 'pcc-and-pce'" 4448 { 4449 description 4450 "Valid for PCEP Peer as PCE"; 4452 } 4453 type yang:counter32; 4454 description 4455 "The number of initiations of LSPs received 4456 that were responded by the local PCEP entity 4457 by sending a PCErr message."; 4458 } 4459 } 4460 } 4461 container path-key { 4462 when "../../p:role = 'pcc'" + 4463 "or " + 4464 "../../p:role = 'pcc-and-pce'" 4465 { 4466 description 4467 "Valid for PCEP Peer as PCC"; 4468 } 4469 if-feature p:path-key; 4470 description 4471 "If Path-Key is supported"; 4472 leaf num-unknown-path-key{ 4473 type yang:counter32; 4474 description 4475 "The number of attempts to expand an unknown 4476 path-key."; 4477 } 4478 leaf num-exp-path-key{ 4479 type yang:counter32; 4480 description 4481 "The number of attempts to expand an expired 4482 path-key."; 4483 } 4484 leaf num-dup-path-key{ 4485 type yang:counter32; 4486 description 4487 "The number of duplicate attempts to expand same 4488 path-key."; 4489 } 4490 leaf num-path-key-no-attempt{ 4491 type yang:counter32; 4492 description 4493 "The number of expired path-keys with no attempt to 4494 expand it."; 4495 } 4496 } 4497 }//pcep-stats 4499 /* 4500 * Augment modules to add statistics 4501 */ 4503 augment "/p:pcep/p:entity/p:peers/p:peer" { 4504 description 4505 "Augmenting the statistics"; 4506 leaf num-sess-setup-ok{ 4507 type yang:counter32; 4508 config false; 4509 description 4510 "The number of PCEP sessions successfully 4511 successfully established with the peer, 4512 including any current session. This 4513 counter is incremented each time a 4514 session with this peer is successfully 4515 established."; 4516 } 4518 leaf num-sess-setup-fail{ 4519 type yang:counter32; 4520 config false; 4521 description 4522 "The number of PCEP sessions with the peer 4523 that have been attempted but failed 4524 before being fully established. This 4525 counter is incremented each time a 4526 session retry to this peer fails."; 4527 } 4528 container pcep-stats { 4529 config false; 4530 description 4531 "The container for all statistics at peer 4532 level."; 4533 uses pcep-stats{ 4534 description 4535 "Since PCEP sessions can be 4536 ephemeral, the peer statistics tracks 4537 a peer even when no PCEP session 4538 currently exists to that peer. The 4539 statistics contained are an aggregate 4540 of the statistics for all successive 4541 sessions to that peer."; 4542 } 4544 leaf num-req-sent-closed{ 4545 when "../../p:role = 'pce'" + 4546 "or " + 4547 "../../p:role = 'pcc-and-pce'" 4549 { 4550 description 4551 "Valid for PCEP Peer as PCE"; 4552 } 4553 type yang:counter32; 4554 description 4555 "The number of requests that were 4556 sent to the peer and implicitly 4557 cancelled when the session they were 4558 sent over was closed."; 4559 } 4561 leaf num-req-rcvd-closed{ 4562 when "../../p:role = 'pcc'" + 4563 "or " + 4564 "../../p:role = 'pcc-and-pce'" 4565 { 4566 description 4567 "Valid for PCEP Peer as PCC"; 4568 } 4569 type yang:counter32; 4570 description 4571 "The number of requests that were 4572 received from the peer and 4573 implicitly cancelled when the 4574 session they were received over 4575 was closed."; 4576 } 4577 }//pcep-stats 4578 }//augment 4580 augment "/p:pcep/p:entity/p:peers/p:peer/" + 4581 "p:sessions/p:session" { 4582 description 4583 "Augmenting the statistics"; 4584 container pcep-stats { 4585 description 4586 "The container for all statistics 4587 at session level."; 4588 uses pcep-stats{ 4589 description 4590 "The statistics contained are 4591 for the current sessions to 4592 that peer. These are lost 4593 when the session goes down. 4594 "; 4595 } 4596 }//pcep-stats 4598 }//augment 4600 }//module 4602 4604 11. Security Considerations 4606 The YANG module defined in this document is designed to be accessed 4607 via network management protocol such as NETCONF [RFC6241] or RESTCONF 4608 [RFC8040]. The lowest NETCONF layer is the secure transport layer 4609 and the mandatory-to-implement secure transport is SSH [RFC6242]. 4610 The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement 4611 secure transport is TLS [RFC5246] 4613 The NETCONF access control model [RFC6536] provides the means to 4614 restrict access for particular NETCONF or RESTCONF users to a pre- 4615 configured subset of all available NETCONF or RESTCONF protocol 4616 operations and content. 4618 There are a number of data nodes defined in the YANG module which are 4619 writable/creatable/deletable (i.e., config true, which is the 4620 default). These data nodes may be considered sensitive or vulnerable 4621 in some network environments. Write operations (e.g., ) 4622 to these data nodes without proper protection can have a negative 4623 effect on network operations. These are the subtrees and data nodes 4624 and their sensitivity/vulnerability: 4626 /pcep/entity/ - configure local parameters, capabilities etc. 4628 /pcep/entity/peers - configure remote peers to setup PCEP session. 4630 Unauthorized access to above list can adversely affect the PCEP 4631 session between the local entity and the peers. This may lead to 4632 inability to compute new paths, stateful operations on the delegated 4633 as well as PCE-initiated LSPs. 4635 Some of the readable data nodes in this YANG module may be considered 4636 sensitive or vulnerable in some network environments. It is thus 4637 important to control read access (e.g., via get, get-config, or 4638 notification) to these data nodes. These are the subtrees and data 4639 nodes and their sensitivity/vulnerability: 4641 /pcep/lsp-db - All the LSPs in the network. Unauthorized access 4642 to this could provide the all path and network usage information. 4644 /pcep/path-keys/ - The Confidential Path Segments (CPS) are hidden 4645 using path-keys. Unauthorized access to this could leak 4646 confidential path information. 4648 Some of the RPC operations in this YANG module may be considered 4649 sensitive or vulnerable in some network environments. It is thus 4650 important to control access to these operations. These are the 4651 operations and their sensitivity/vulnerability: 4653 trigger-resync - trigger resynchronization with the PCE. 4654 Unauthorized access to this could force a PCEP session into 4655 continuous state synchronization. 4657 12. IANA Considerations 4659 This document registers a URI in the "IETF XML Registry" [RFC3688]. 4660 Following the format in RFC 3688, the following registration has been 4661 made. 4663 URI: urn:ietf:params:xml:ns:yang:ietf-pcep 4665 Registrant Contact: The PCE WG of the IETF. 4667 XML: N/A; the requested URI is an XML namespace. 4669 This document registers a YANG module in the "YANG Module Names" 4670 registry [RFC6020]. 4672 Name: ietf-pcep 4673 Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep 4674 Prefix: pcep 4675 Reference: This I-D 4677 13. Acknowledgements 4679 The initial document is based on the PCEP MIB [RFC7420]. We would 4680 like to thank the authors of aforementioned documents. 4682 14. References 4684 14.1. Normative References 4686 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 4687 Requirement Levels", BCP 14, RFC 2119, 4688 DOI 10.17487/RFC2119, March 1997, 4689 . 4691 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 4692 DOI 10.17487/RFC3688, January 2004, 4693 . 4695 [RFC5440] Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation 4696 Element (PCE) Communication Protocol (PCEP)", RFC 5440, 4697 DOI 10.17487/RFC5440, March 2009, 4698 . 4700 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 4701 (TLS) Protocol Version 1.2", RFC 5246, 4702 DOI 10.17487/RFC5246, August 2008, 4703 . 4705 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 4706 the Network Configuration Protocol (NETCONF)", RFC 6020, 4707 DOI 10.17487/RFC6020, October 2010, 4708 . 4710 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 4711 and A. Bierman, Ed., "Network Configuration Protocol 4712 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 4713 . 4715 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 4716 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 4717 . 4719 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 4720 Protocol (NETCONF) Access Control Model", RFC 6536, 4721 DOI 10.17487/RFC6536, March 2012, 4722 . 4724 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 4725 RFC 6991, DOI 10.17487/RFC6991, July 2013, 4726 . 4728 [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. 4729 Zhang, "YANG Data Model for Key Chains", RFC 8177, 4730 DOI 10.17487/RFC8177, June 2017, 4731 . 4733 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 4734 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 4735 . 4737 [I-D.ietf-pce-stateful-pce] 4738 Crabbe, E., Minei, I., Medved, J., and R. Varga, "PCEP 4739 Extensions for Stateful PCE", draft-ietf-pce-stateful- 4740 pce-21 (work in progress), June 2017. 4742 [I-D.ietf-pce-pce-initiated-lsp] 4743 Crabbe, E., Minei, I., Sivabalan, S., and R. Varga, "PCEP 4744 Extensions for PCE-initiated LSP Setup in a Stateful PCE 4745 Model", draft-ietf-pce-pce-initiated-lsp-10 (work in 4746 progress), June 2017. 4748 [I-D.ietf-pce-lsp-setup-type] 4749 Sivabalan, S., Tantsura, J., Minei, I., Varga, R., and J. 4750 Hardwick, "Conveying path setup type in PCEP messages", 4751 draft-ietf-pce-lsp-setup-type-04 (work in progress), April 4752 2017. 4754 [I-D.ietf-pce-segment-routing] 4755 Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W., 4756 and J. Hardwick, "PCEP Extensions for Segment Routing", 4757 draft-ietf-pce-segment-routing-09 (work in progress), 4758 April 2017. 4760 [I-D.ietf-teas-yang-te] 4761 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and 4762 I. Bryskin, "A YANG Data Model for Traffic Engineering 4763 Tunnels and Interfaces", draft-ietf-teas-yang-te-06 (work 4764 in progress), March 2017. 4766 [I-D.ietf-netconf-tls-client-server] 4767 Watsen, K. and G. Wu, "TLS Client and Server Models", 4768 draft-ietf-netconf-tls-client-server-03 (work in 4769 progress), June 2017. 4771 14.2. Informative References 4773 [RFC4655] Farrel, A., Vasseur, J., and J. Ash, "A Path Computation 4774 Element (PCE)-Based Architecture", RFC 4655, 4775 DOI 10.17487/RFC4655, August 2006, 4776 . 4778 [RFC7420] Koushik, A., Stephan, E., Zhao, Q., King, D., and J. 4779 Hardwick, "Path Computation Element Communication Protocol 4780 (PCEP) Management Information Base (MIB) Module", 4781 RFC 7420, DOI 10.17487/RFC7420, December 2014, 4782 . 4784 [I-D.ietf-netmod-rfc6087bis] 4785 Bierman, A., "Guidelines for Authors and Reviewers of YANG 4786 Data Model Documents", draft-ietf-netmod-rfc6087bis-13 4787 (work in progress), June 2017. 4789 [I-D.ietf-netmod-revised-datastores] 4790 Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 4791 and R. Wilton, "Network Management Datastore 4792 Architecture", draft-ietf-netmod-revised-datastores-02 4793 (work in progress), May 2017. 4795 [I-D.ietf-pce-pceps] 4796 Lopez, D., Dios, O., Wu, Q., and D. Dhody, "Secure 4797 Transport for PCEP", draft-ietf-pce-pceps-14 (work in 4798 progress), May 2017. 4800 Appendix A. Contributor Addresses 4802 Rohit Pobbathi 4803 Huawei Technologies 4804 Divyashree Techno Park, Whitefield 4805 Bangalore, Karnataka 560066 4806 India 4808 EMail: rohit.pobbathi@huawei.com 4810 Vinod KumarS 4811 Huawei Technologies 4812 Divyashree Techno Park, Whitefield 4813 Bangalore, Karnataka 560066 4814 India 4816 EMail: vinods.kumar@huawei.com 4818 Zafar Ali 4819 Cisco Systems 4820 Canada 4822 EMail: zali@cisco.com 4824 Xufeng Liu 4825 Jabil 4826 8281 Greensboro Drive, Suite 200 4827 McLean VA 22102 4828 USA 4830 EMail: Xufeng_Liu@jabil.com 4832 Young Lee 4833 Huawei Technologies 4834 5340 Legacy Drive, Building 3 4835 Plano, TX 75023, USA 4837 Phone: (469) 277-5838 4838 EMail: leeyoung@huawei.com 4840 Udayasree Palle 4841 Huawei Technologies 4842 Divyashree Techno Park, Whitefield 4843 Bangalore, Karnataka 560066 4844 India 4846 EMail: udayasreereddy@gmail.com 4847 Xian Zhang 4848 Huawei Technologies 4849 Bantian, Longgang District 4850 Shenzhen 518129 4851 P.R.China 4853 EMail: zhang.xian@huawei.com 4855 Avantika 4856 Huawei Technologies 4857 Divyashree Techno Park, Whitefield 4858 Bangalore, Karnataka 560066 4859 India 4861 EMail: s.avantika.avantika@gmail.com 4863 Shashikanth 4864 Huawei Technologies 4865 Divyashree Techno Park, Whitefield 4866 Bangalore, Karnataka 560066 4867 India 4869 EMail: shashikanth.vh@huawei.com 4871 Authors' Addresses 4873 Dhruv Dhody (editor) 4874 Huawei Technologies 4875 Divyashree Techno Park, Whitefield 4876 Bangalore, Karnataka 560066 4877 India 4879 EMail: dhruv.ietf@gmail.com 4881 Jonathan Hardwick 4882 Metaswitch 4883 100 Church Street 4884 Enfield EN2 6BQ 4885 UK 4887 EMail: jonathan.hardwick@metaswitch.com 4888 Vishnu Pavan Beeram 4889 Juniper Networks 4890 USA 4892 EMail: vbeeram@juniper.net 4894 Jeff Tantsura 4895 USA 4897 EMail: jefftant@gmail.com