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