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