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