idnits 2.17.1 draft-ietf-pce-pcep-yang-00.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 48 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 256 has weird spacing: '...in-type dom...' == Line 291 has weird spacing: '...in-type dom...' == Line 340 has weird spacing: '...ax-rate uin...' == Line 351 has weird spacing: '...in-type dom...' == Line 385 has weird spacing: '...in-type dom...' == (23 more instances...) -- The document date (September 12, 2016) is 2776 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-07 -- 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-23 == Outdated reference: A later version (-20) exists of draft-ietf-netmod-rfc6087bis-08 == Outdated reference: A later version (-36) exists of draft-ietf-teas-yang-te-04 Summary: 1 error (**), 0 flaws (~~), 14 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: March 16, 2017 Metaswitch 6 V. Beeram 7 Juniper Networks 8 J. Tantsura 9 September 12, 2016 11 A YANG Data Model for Path Computation Element Communications Protocol 12 (PCEP) 13 draft-ietf-pce-pcep-yang-00 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 March 16, 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 . . . . . . . . . . . . . . . . . . . . . . . 17 66 5.2. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 18 67 5.3. The Session Lists . . . . . . . . . . . . . . . . . . . . 18 68 5.4. Notifications . . . . . . . . . . . . . . . . . . . . . . 19 69 6. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 19 70 6.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 19 71 7. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 20 72 7.1. The PCE-Initiated LSP . . . . . . . . . . . . . . . . . . 20 73 7.2. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 20 74 8. PCEP YANG Module . . . . . . . . . . . . . . . . . . . . . . 20 75 9. Security Considerations . . . . . . . . . . . . . . . . . . . 83 76 10. Manageability Considerations . . . . . . . . . . . . . . . . 84 77 10.1. Control of Function and Policy . . . . . . . . . . . . . 84 78 10.2. Information and Data Models . . . . . . . . . . . . . . 84 79 10.3. Liveness Detection and Monitoring . . . . . . . . . . . 84 80 10.4. Verify Correct Operations . . . . . . . . . . . . . . . 84 81 10.5. Requirements On Other Protocols . . . . . . . . . . . . 84 82 10.6. Impact On Network Operations . . . . . . . . . . . . . . 84 83 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 84 84 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 85 85 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 85 86 13.1. Normative References . . . . . . . . . . . . . . . . . . 85 87 13.2. Informative References . . . . . . . . . . . . . . . . . 86 88 Appendix A. Contributor Addresses . . . . . . . . . . . . . . . 88 89 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 89 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 o Segment Identifier (SID). 176 o Maximum SID Depth (MSD). 178 3.1. Tree Diagrams 180 A graphical representation of the complete data tree is presented in 181 Section 5. The meaning of the symbols in these diagrams is as 182 follows and as per [I-D.ietf-netmod-rfc6087bis]: 184 o Brackets "[" and "]" enclose list keys. 186 o Curly braces "{" and "}" contain names of optional features that 187 make the corresponding node conditional. 189 o Abbreviations before data node names: "rw" means configuration 190 (read-write), and "ro" state data (read-only). 192 o Symbols after data node names: "?" means an optional node and "*" 193 denotes a "list" or "leaf-list". 195 o Parentheses enclose choice and case nodes, and case nodes are also 196 marked with a colon (":"). 198 o Ellipsis ("...") stands for contents of subtrees that are not 199 shown. 201 3.2. Prefixes in Data Node Names 203 In this document, names of data nodes and other data model objects 204 are often used without a prefix, as long as it is clear from the 205 context in which YANG module each name is defined. Otherwise, names 206 are prefixed using the standard prefix associated with the 207 corresponding YANG module, as shown in Table 1. 209 +--------+-----------------+-----------+ 210 | Prefix | YANG module | Reference | 211 +--------+-----------------+-----------+ 212 | yang | ietf-yang-types | [RFC6991] | 213 | inet | ietf-inet-types | [RFC6991] | 214 +--------+-----------------+-----------+ 216 Table 1: Prefixes and corresponding YANG modules 218 4. Objectives 220 This section describes some of the design objectives for the model: 222 o In case of existing implementations, it needs to map the data 223 model defined in this document to their proprietary native data 224 model. To facilitate such mappings, the data model should be 225 simple. 227 o The data model should be suitable for new implementations to use 228 as is. 230 o Mapping to the PCEP MIB Module should be clear. 232 o The data model should allow for static configurations of peers. 234 o The data model should include read-only counters in order to 235 gather statistics for sent and received PCEP messages, received 236 messages with errors, and messages that could not be sent due to 237 errors. 239 o It should be fairly straightforward to augment the base data model 240 for advanced PCE features. 242 5. The Design of PCEP Data Model 244 The module, "ietf-pcep", defines the basic components of a PCE 245 speaker. 247 module: ietf-pcep 248 +--rw pcep! 249 | +--rw entity 250 | +--rw addr inet:ip-address 251 | +--rw enabled? boolean 252 | +--rw role pcep-role 253 | +--rw description? string 254 | +--rw domain 255 | | +--rw domain* [domain-type domain] 256 | | +--rw domain-type domain-type 257 | | +--rw domain domain 258 | +--rw capability 259 | | +--rw gmpls? boolean {gmpls}? 260 | | +--rw bi-dir? boolean 261 | | +--rw diverse? boolean 262 | | +--rw load-balance? boolean 263 | | +--rw synchronize? boolean {svec}? 264 | | +--rw objective-function? boolean {obj-fn}? 265 | | +--rw add-path-constraint? boolean 266 | | +--rw prioritization? boolean 267 | | +--rw multi-request? boolean 268 | | +--rw gco? boolean {gco}? 269 | | +--rw p2mp? boolean {p2mp}? 270 | | +--rw stateful {stateful}? 271 | | | +--rw enabled? boolean 272 | | | +--rw active? boolean 273 | | | +--rw pce-initiated? boolean {pce-initiated}? 274 | | +--rw sr {sr}? 275 | | +--rw enabled? boolean 276 | | +--rw msd? uint8 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 (auth-type-selection)? 294 | | +--:(auth-key-chain) 295 | | | +--rw key-chain? key-chain:key-chain-ref 296 | | +--:(auth-key) 297 | | | +--rw key? string 298 | | | +--rw crypto-algorithm 299 | | | +--rw (algorithm)? 300 | | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? 301 | | | | +--rw hmac-sha1-12? empty 302 | | | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}? 303 | | | | +--rw aes-cmac-prf-128? empty 304 | | | +--:(md5) 305 | | | | +--rw md5? empty 306 | | | +--:(sha-1) 307 | | | | +--rw sha-1? empty 308 | | | +--:(hmac-sha-1) 309 | | | | +--rw hmac-sha-1? empty 310 | | | +--:(hmac-sha-256) 311 | | | | +--rw hmac-sha-256? empty 312 | | | +--:(hmac-sha-384) 313 | | | | +--rw hmac-sha-384? empty 314 | | | +--:(hmac-sha-512) 315 | | | | +--rw hmac-sha-512? empty 316 | | | +--:(clear-text) {clear-text}? 317 | | | | +--rw clear-text? empty 318 | | | +--:(replay-protection-only) {replay-protection-only}? 319 | | | +--rw replay-protection-only? empty 320 | | +--:(auth-tls) {tls}? 321 | | +--rw tls 322 | +--rw connect-timer? uint32 323 | +--rw connect-max-retry? uint32 324 | +--rw init-backoff-timer? uint32 325 | +--rw max-backoff-timer? uint32 326 | +--rw open-wait-timer? uint32 327 | +--rw keep-wait-timer? uint32 328 | +--rw keep-alive-timer? uint32 329 | +--rw dead-timer? uint32 330 | +--rw allow-negotiation? boolean 331 | +--rw max-keep-alive-timer? uint32 332 | +--rw max-dead-timer? uint32 333 | +--rw min-keep-alive-timer? uint32 334 | +--rw min-dead-timer? uint32 335 | +--rw sync-timer? uint32 {svec}? 336 | +--rw request-timer? uint32 337 | +--rw max-sessions? uint32 338 | +--rw max-unknown-reqs? uint32 339 | +--rw max-unknown-msgs? uint32 340 | +--rw pcep-notification-max-rate uint32 341 | +--rw stateful-parameter {stateful}? 342 | | +--rw state-timeout? uint32 343 | | +--rw redelegation-timeout? uint32 344 | | +--rw rpt-non-pcep-lsp? boolean 345 | +--rw peers 346 | +--rw peer* [addr] 347 | +--rw addr inet:ip-address 348 | +--rw description? string 349 | +--rw domain 350 | | +--rw domain* [domain-type domain] 351 | | +--rw domain-type domain-type 352 | | +--rw domain domain 353 | +--rw capability 354 | | +--rw gmpls? boolean {gmpls}? 355 | | +--rw bi-dir? boolean 356 | | +--rw diverse? boolean 357 | | +--rw load-balance? boolean 358 | | +--rw synchronize? boolean {svec}? 359 | | +--rw objective-function? boolean {obj-fn}? 360 | | +--rw add-path-constraint? boolean 361 | | +--rw prioritization? boolean 362 | | +--rw multi-request? boolean 363 | | +--rw gco? boolean {gco}? 364 | | +--rw p2mp? boolean {p2mp}? 365 | | +--rw stateful {stateful}? 366 | | | +--rw enabled? boolean 367 | | | +--rw active? boolean 368 | | | +--rw pce-initiated? boolean {pce-initiated}? 369 | | +--rw sr {sr}? 370 | | +--rw enabled? boolean 371 | | +--rw msd? uint8 372 | +--rw scope 373 | | +--rw intra-area-scope? boolean 374 | | +--rw intra-area-pref? uint8 375 | | +--rw inter-area-scope? boolean 376 | | +--rw inter-area-scope-default? boolean 377 | | +--rw inter-area-pref? uint8 378 | | +--rw inter-as-scope? boolean 379 | | +--rw inter-as-scope-default? boolean 380 | | +--rw inter-as-pref? uint8 381 | | +--rw inter-layer-scope? boolean 382 | | +--rw inter-layer-pref? uint8 383 | +--rw neigh-domains 384 | | +--rw domain* [domain-type domain] 385 | | +--rw domain-type domain-type 386 | | +--rw domain domain 387 | +--rw delegation-pref? uint8 {stateful}? 388 | +--rw (auth-type-selection)? 389 | +--:(auth-key-chain) 390 | | +--rw key-chain? key-chain:key-chain-ref 391 | +--:(auth-key) 392 | | +--rw key? string 393 | | +--rw crypto-algorithm 394 | | +--rw (algorithm)? 395 | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? 396 | | | +--rw hmac-sha1-12? empty 397 | | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}? 398 | | | +--rw aes-cmac-prf-128? empty 399 | | +--:(md5) 400 | | | +--rw md5? empty 401 | | +--:(sha-1) 402 | | | +--rw sha-1? empty 403 | | +--:(hmac-sha-1) 404 | | | +--rw hmac-sha-1? empty 405 | | +--:(hmac-sha-256) 406 | | | +--rw hmac-sha-256? empty 407 | | +--:(hmac-sha-384) 408 | | | +--rw hmac-sha-384? empty 409 | | +--:(hmac-sha-512) 410 | | | +--rw hmac-sha-512? empty 411 | | +--:(clear-text) {clear-text}? 412 | | | +--rw clear-text? empty 413 | | +--:(replay-protection-only) {replay-protection-only}? 414 | | +--rw replay-protection-only? empty 415 | +--:(auth-tls) {tls}? 416 | +--rw tls 417 +--ro pcep-state 418 +--ro entity 419 +--ro addr? inet:ip-address 420 +--ro index? uint32 421 +--ro admin-status? pcep-admin-status 422 +--ro oper-status? pcep-admin-status 423 +--ro role? pcep-role 424 +--ro domain 425 | +--ro domain* [domain-type domain] 426 | +--ro domain-type domain-type 427 | +--ro domain domain 428 +--ro capability 429 | +--ro gmpls? boolean {gmpls}? 430 | +--ro bi-dir? boolean 431 | +--ro diverse? boolean 432 | +--ro load-balance? boolean 433 | +--ro synchronize? boolean {svec}? 434 | +--ro objective-function? boolean {obj-fn}? 435 | +--ro add-path-constraint? boolean 436 | +--ro prioritization? boolean 437 | +--ro multi-request? boolean 438 | +--ro gco? boolean {gco}? 439 | +--ro p2mp? boolean {p2mp}? 440 | +--ro stateful {stateful}? 441 | | +--ro enabled? boolean 442 | | +--ro active? boolean 443 | | +--ro pce-initiated? boolean {pce-initiated}? 444 | +--ro sr {sr}? 445 | +--ro enabled? boolean 446 | +--ro msd? uint8 447 +--ro pce-info 448 | +--ro scope 449 | | +--ro intra-area-scope? boolean 450 | | +--ro intra-area-pref? uint8 451 | | +--ro inter-area-scope? boolean 452 | | +--ro inter-area-scope-default? boolean 453 | | +--ro inter-area-pref? uint8 454 | | +--ro inter-as-scope? boolean 455 | | +--ro inter-as-scope-default? boolean 456 | | +--ro inter-as-pref? uint8 457 | | +--ro inter-layer-scope? boolean 458 | | +--ro inter-layer-pref? uint8 459 | +--ro neigh-domains 460 | | +--ro domain* [domain-type domain] 461 | | +--ro domain-type domain-type 462 | | +--ro domain domain 463 | +--ro (auth-type-selection)? 464 | +--:(auth-key-chain) 465 | | +--ro key-chain? key-chain:key-chain-ref 466 | +--:(auth-key) 467 | | +--ro key? string 468 | | +--ro crypto-algorithm 469 | | +--ro (algorithm)? 470 | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? 471 | | | +--ro hmac-sha1-12? empty 472 | | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}? 473 | | | +--ro aes-cmac-prf-128? empty 474 | | +--:(md5) 475 | | | +--ro md5? empty 476 | | +--:(sha-1) 477 | | | +--ro sha-1? empty 478 | | +--:(hmac-sha-1) 479 | | | +--ro hmac-sha-1? empty 480 | | +--:(hmac-sha-256) 481 | | | +--ro hmac-sha-256? empty 482 | | +--:(hmac-sha-384) 483 | | | +--ro hmac-sha-384? empty 484 | | +--:(hmac-sha-512) 485 | | | +--ro hmac-sha-512? empty 486 | | +--:(clear-text) {clear-text}? 487 | | | +--ro clear-text? empty 488 | | +--:(replay-protection-only) {replay-protection-only}? 489 | | +--ro replay-protection-only? empty 490 | +--:(auth-tls) {tls}? 491 | +--ro tls 492 +--ro connect-timer? uint32 493 +--ro connect-max-retry? uint32 494 +--ro init-backoff-timer? uint32 495 +--ro max-backoff-timer? uint32 496 +--ro open-wait-timer? uint32 497 +--ro keep-wait-timer? uint32 498 +--ro keep-alive-timer? uint32 499 +--ro dead-timer? uint32 500 +--ro allow-negotiation? boolean 501 +--ro max-keep-alive-timer? uint32 502 +--ro max-dead-timer? uint32 503 +--ro min-keep-alive-timer? uint32 504 +--ro min-dead-timer? uint32 505 +--ro sync-timer? uint32 {svec}? 506 +--ro request-timer? uint32 507 +--ro max-sessions? uint32 508 +--ro max-unknown-reqs? uint32 509 +--ro max-unknown-msgs? uint32 510 +--ro stateful-parameter {stateful}? 511 | +--ro state-timeout? uint32 512 | +--ro redelegation-timeout? uint32 513 | +--ro rpt-non-pcep-lsp? boolean 514 +--ro lsp-db {stateful}? 515 | +--ro association-list* [id source global-source extended-id] 516 | | +--ro type? assoc-type 517 | | +--ro id uint16 518 | | +--ro source inet:ip-address 519 | | +--ro global-source uint32 520 | | +--ro extended-id string 521 | | +--ro lsp* [plsp-id pcc-id] 522 | | +--ro plsp-id -> /pcep-state/entity/lsp-db/lsp/plsp-id 523 | | +--ro pcc-id -> /pcep-state/entity/lsp-db/lsp/pcc-id 524 | +--ro lsp* [plsp-id pcc-id] 525 | +--ro plsp-id uint32 526 | +--ro pcc-id inet:ip-address 527 | +--ro lsp-ref 528 | | +--ro source? -> /te:te/lsps-state/lsp/source 529 | | +--ro destination? -> /te:te/lsps-state/lsp/destination 530 | | +--ro tunnel-id? -> /te:te/lsps-state/lsp/tunnel-id 531 | | +--ro lsp-id? -> /te:te/lsps-state/lsp/lsp-id 532 | | +--ro extended-tunnel-id? -> /te:te/lsps-state/lsp/extended-tunnel-id 533 | | +--ro type? -> /te:te/lsps-state/lsp/type 534 | +--ro admin-state? boolean 535 | +--ro operational-state? operational-state 536 | +--ro delegated 537 | | +--ro enabled? boolean 538 | | +--ro pce? -> /pcep-state/entity/peers/peer/addr 539 | | +--ro srp-id? uint32 540 | +--ro initiation {pce-initiated}? 541 | | +--ro enabled? boolean 542 | | +--ro pce? -> /pcep-state/entity/peers/peer/addr 543 | +--ro symbolic-path-name? string 544 | +--ro last-error? lsp-error 545 | +--ro pst? pst 546 | +--ro association-list* [id source global-source extended-id] 547 | +--ro id -> /pcep-state/entity/lsp-db/association-list/id 548 | +--ro source -> /pcep-state/entity/lsp-db/association-list/source 549 | +--ro global-source -> /pcep-state/entity/lsp-db/association-list/global-source 550 | +--ro extended-id -> /pcep-state/entity/lsp-db/association-list/extended-id 551 +--ro peers 552 +--ro peer* [addr] 553 +--ro addr inet:ip-address 554 +--ro role? pcep-role 555 +--ro domain 556 | +--ro domain* [domain-type domain] 557 | +--ro domain-type domain-type 558 | +--ro domain domain 559 +--ro capability 560 | +--ro gmpls? boolean {gmpls}? 561 | +--ro bi-dir? boolean 562 | +--ro diverse? boolean 563 | +--ro load-balance? boolean 564 | +--ro synchronize? boolean {svec}? 565 | +--ro objective-function? boolean {obj-fn}? 566 | +--ro add-path-constraint? boolean 567 | +--ro prioritization? boolean 568 | +--ro multi-request? boolean 569 | +--ro gco? boolean {gco}? 570 | +--ro p2mp? boolean {p2mp}? 571 | +--ro stateful {stateful}? 572 | | +--ro enabled? boolean 573 | | +--ro active? boolean 574 | | +--ro pce-initiated? boolean {pce-initiated}? 575 | +--ro sr {sr}? 576 | +--ro enabled? boolean 577 | +--ro msd? uint8 578 +--ro pce-info 579 | +--ro scope 580 | | +--ro intra-area-scope? boolean 581 | | +--ro intra-area-pref? uint8 582 | | +--ro inter-area-scope? boolean 583 | | +--ro inter-area-scope-default? boolean 584 | | +--ro inter-area-pref? uint8 585 | | +--ro inter-as-scope? boolean 586 | | +--ro inter-as-scope-default? boolean 587 | | +--ro inter-as-pref? uint8 588 | | +--ro inter-layer-scope? boolean 589 | | +--ro inter-layer-pref? uint8 590 | +--ro neigh-domains 591 | +--ro domain* [domain-type domain] 592 | +--ro domain-type domain-type 593 | +--ro domain domain 594 +--ro delegation-pref? uint8 {stateful}? 595 +--ro (auth-type-selection)? 596 | +--:(auth-key-chain) 597 | | +--ro key-chain? key-chain:key-chain-ref 598 | +--:(auth-key) 599 | | +--ro key? string 600 | | +--ro crypto-algorithm 601 | | +--ro (algorithm)? 602 | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? 603 | | | +--ro hmac-sha1-12? empty 604 | | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}? 605 | | | +--ro aes-cmac-prf-128? empty 606 | | +--:(md5) 607 | | | +--ro md5? empty 608 | | +--:(sha-1) 609 | | | +--ro sha-1? empty 610 | | +--:(hmac-sha-1) 611 | | | +--ro hmac-sha-1? empty 612 | | +--:(hmac-sha-256) 613 | | | +--ro hmac-sha-256? empty 614 | | +--:(hmac-sha-384) 615 | | | +--ro hmac-sha-384? empty 616 | | +--:(hmac-sha-512) 617 | | | +--ro hmac-sha-512? empty 618 | | +--:(clear-text) {clear-text}? 619 | | | +--ro clear-text? empty 620 | | +--:(replay-protection-only) {replay-protection-only}? 621 | | +--ro replay-protection-only? empty 622 | +--:(auth-tls) {tls}? 623 | +--ro tls 624 +--ro discontinuity-time? yang:timestamp 625 +--ro initiate-session? boolean 626 +--ro session-exists? boolean 627 +--ro num-sess-setup-ok? yang:counter32 628 +--ro num-sess-setup-fail? yang:counter32 629 +--ro session-up-time? yang:timestamp 630 +--ro session-fail-time? yang:timestamp 631 +--ro session-fail-up-time? yang:timestamp 632 +--ro pcep-stats 633 | +--ro avg-rsp-time? uint32 634 | +--ro lwm-rsp-time? uint32 635 | +--ro hwm-rsp-time? uint32 636 | +--ro num-pcreq-sent? yang:counter32 637 | +--ro num-pcreq-rcvd? yang:counter32 638 | +--ro num-pcrep-sent? yang:counter32 639 | +--ro num-pcrep-rcvd? yang:counter32 640 | +--ro num-pcerr-sent? yang:counter32 641 | +--ro num-pcerr-rcvd? yang:counter32 642 | +--ro num-pcntf-sent? yang:counter32 643 | +--ro num-pcntf-rcvd? yang:counter32 644 | +--ro num-keepalive-sent? yang:counter32 645 | +--ro num-keepalive-rcvd? yang:counter32 646 | +--ro num-unknown-rcvd? yang:counter32 647 | +--ro num-corrupt-rcvd? yang:counter32 648 | +--ro num-req-sent? yang:counter32 649 | +--ro num-req-sent-pend-rep? yang:counter32 650 | +--ro num-req-sent-ero-rcvd? yang:counter32 651 | +--ro num-req-sent-nopath-rcvd? yang:counter32 652 | +--ro num-req-sent-cancel-rcvd? yang:counter32 653 | +--ro num-req-sent-error-rcvd? yang:counter32 654 | +--ro num-req-sent-timeout? yang:counter32 655 | +--ro num-req-sent-cancel-sent? yang:counter32 656 | +--ro num-req-rcvd? yang:counter32 657 | +--ro num-req-rcvd-pend-rep? yang:counter32 658 | +--ro num-req-rcvd-ero-sent? yang:counter32 659 | +--ro num-req-rcvd-nopath-sent? yang:counter32 660 | +--ro num-req-rcvd-cancel-sent? yang:counter32 661 | +--ro num-req-rcvd-error-sent? yang:counter32 662 | +--ro num-req-rcvd-cancel-rcvd? yang:counter32 663 | +--ro num-rep-rcvd-unknown? yang:counter32 664 | +--ro num-req-rcvd-unknown? yang:counter32 665 | +--ro svec {svec}? 666 | | +--ro num-svec-sent? yang:counter32 667 | | +--ro num-svec-req-sent? yang:counter32 668 | | +--ro num-svec-rcvd? yang:counter32 669 | | +--ro num-svec-req-rcvd? yang:counter32 670 | +--ro stateful {stateful}? 671 | | +--ro num-pcrpt-sent? yang:counter32 672 | | +--ro num-pcrpt-rcvd? yang:counter32 673 | | +--ro num-pcupd-sent? yang:counter32 674 | | +--ro num-pcupd-rcvd? yang:counter32 675 | | +--ro num-rpt-sent? yang:counter32 676 | | +--ro num-rpt-rcvd? yang:counter32 677 | | +--ro num-rpt-rcvd-error-sent? yang:counter32 678 | | +--ro num-upd-sent? yang:counter32 679 | | +--ro num-upd-rcvd? yang:counter32 680 | | +--ro num-upd-rcvd-unknown? yang:counter32 681 | | +--ro num-upd-rcvd-undelegated? yang:counter32 682 | | +--ro num-upd-rcvd-error-sent? yang:counter32 683 | | +--ro initiation {pce-initiated}? 684 | | +--ro num-pcinitiate-sent? yang:counter32 685 | | +--ro num-pcinitiate-rcvd? yang:counter32 686 | | +--ro num-initiate-sent? yang:counter32 687 | | +--ro num-initiate-rcvd? yang:counter32 688 | | +--ro num-initiate-rcvd-error-sent? yang:counter32 689 | +--ro num-req-sent-closed? yang:counter32 690 | +--ro num-req-rcvd-closed? yang:counter32 691 +--ro sessions 692 +--ro session* [initiator] 693 +--ro initiator pcep-initiator 694 +--ro state-last-change? yang:timestamp 695 +--ro state? pcep-sess-state 696 +--ro session-creation? yang:timestamp 697 +--ro connect-retry? yang:counter32 698 +--ro local-id? uint32 699 +--ro remote-id? uint32 700 +--ro keepalive-timer? uint32 701 +--ro peer-keepalive-timer? uint32 702 +--ro dead-timer? uint32 703 +--ro peer-dead-timer? uint32 704 +--ro ka-hold-time-rem? uint32 705 +--ro overloaded? boolean 706 +--ro overload-time? uint32 707 +--ro peer-overloaded? boolean 708 +--ro peer-overload-time? uint32 709 +--ro lspdb-sync? sync-state {stateful}? 710 +--ro discontinuity-time? yang:timestamp 711 +--ro pcep-stats 712 +--ro avg-rsp-time? uint32 713 +--ro lwm-rsp-time? uint32 714 +--ro hwm-rsp-time? uint32 715 +--ro num-pcreq-sent? yang:counter32 716 +--ro num-pcreq-rcvd? yang:counter32 717 +--ro num-pcrep-sent? yang:counter32 718 +--ro num-pcrep-rcvd? yang:counter32 719 +--ro num-pcerr-sent? yang:counter32 720 +--ro num-pcerr-rcvd? yang:counter32 721 +--ro num-pcntf-sent? yang:counter32 722 +--ro num-pcntf-rcvd? yang:counter32 723 +--ro num-keepalive-sent? yang:counter32 724 +--ro num-keepalive-rcvd? yang:counter32 725 +--ro num-unknown-rcvd? yang:counter32 726 +--ro num-corrupt-rcvd? yang:counter32 727 +--ro num-req-sent? yang:counter32 728 +--ro num-req-sent-pend-rep? yang:counter32 729 +--ro num-req-sent-ero-rcvd? yang:counter32 730 +--ro num-req-sent-nopath-rcvd? yang:counter32 731 +--ro num-req-sent-cancel-rcvd? yang:counter32 732 +--ro num-req-sent-error-rcvd? yang:counter32 733 +--ro num-req-sent-timeout? yang:counter32 734 +--ro num-req-sent-cancel-sent? yang:counter32 735 +--ro num-req-rcvd? yang:counter32 736 +--ro num-req-rcvd-pend-rep? yang:counter32 737 +--ro num-req-rcvd-ero-sent? yang:counter32 738 +--ro num-req-rcvd-nopath-sent? yang:counter32 739 +--ro num-req-rcvd-cancel-sent? yang:counter32 740 +--ro num-req-rcvd-error-sent? yang:counter32 741 +--ro num-req-rcvd-cancel-rcvd? yang:counter32 742 +--ro num-rep-rcvd-unknown? yang:counter32 743 +--ro num-req-rcvd-unknown? yang:counter32 744 +--ro svec {svec}? 745 | +--ro num-svec-sent? yang:counter32 746 | +--ro num-svec-req-sent? yang:counter32 747 | +--ro num-svec-rcvd? yang:counter32 748 | +--ro num-svec-req-rcvd? yang:counter32 749 +--ro stateful {stateful}? 750 +--ro num-pcrpt-sent? yang:counter32 751 +--ro num-pcrpt-rcvd? yang:counter32 752 +--ro num-pcupd-sent? yang:counter32 753 +--ro num-pcupd-rcvd? yang:counter32 754 +--ro num-rpt-sent? yang:counter32 755 +--ro num-rpt-rcvd? yang:counter32 756 +--ro num-rpt-rcvd-error-sent? yang:counter32 757 +--ro num-upd-sent? yang:counter32 758 +--ro num-upd-rcvd? yang:counter32 759 +--ro num-upd-rcvd-unknown? yang:counter32 760 +--ro num-upd-rcvd-undelegated? yang:counter32 761 +--ro num-upd-rcvd-error-sent? yang:counter32 762 +--ro initiation {pce-initiated}? 763 +--ro num-pcinitiate-sent? yang:counter32 764 +--ro num-pcinitiate-rcvd? yang:counter32 765 +--ro num-initiate-sent? yang:counter32 766 +--ro num-initiate-rcvd? yang:counter32 767 +--ro num-initiate-rcvd-error-sent? yang:counter32 768 notifications: 769 +---n pcep-session-up 770 | +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr 771 | +--ro session-initiator? -> /pcep-state/entity/peers/peer/sessions/session/initiator 772 | +--ro state-last-change? yang:timestamp 773 | +--ro state? pcep-sess-state 774 +---n pcep-session-down 775 | +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr 776 | +--ro session-initiator? pcep-initiator 777 | +--ro state-last-change? yang:timestamp 778 | +--ro state? pcep-sess-state 779 +---n pcep-session-local-overload 780 | +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr 781 | +--ro session-initiator? -> /pcep-state/entity/peers/peer/sessions/session/initiator 782 | +--ro overloaded? boolean 783 | +--ro overload-time? uint32 784 +---n pcep-session-local-overload-clear 785 | +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr 786 | +--ro overloaded? boolean 787 +---n pcep-session-peer-overload 788 | +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr 789 | +--ro session-initiator? -> /pcep-state/entity/peers/peer/sessions/session/initiator 790 | +--ro peer-overloaded? boolean 791 | +--ro peer-overload-time? uint32 792 +---n pcep-session-peer-overload-clear 793 +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr 794 +--ro peer-overloaded? boolean 796 5.1. The Entity 798 The PCEP yang module may contain status information for the local 799 PCEP entity. 801 The entity has an IP address (using ietf-inet-types [RFC6991]) and a 802 "role" leaf (the local entity PCEP role) as mandatory. 804 Note that, the PCEP MIB module [RFC7420] uses an entity list and a 805 system generated entity index as a primary index to the read only 806 entity table. If the device implements the PCEP MIB, the "index" 807 leaf MUST contain the value of the corresponding pcePcepEntityIndex 808 and only one entity is assumed. 810 5.2. The Peer Lists 812 The peer list contains peer(s) that the local PCEP entity knows 813 about. A PCEP speaker is identified by its IP address. If there is 814 a PCEP speaker in the network that uses multiple IP addresses then it 815 looks like multiple distinct peers to the other PCEP speakers in the 816 network. 818 Since PCEP sessions can be ephemeral, the peer list tracks a peer 819 even when no PCEP session currently exists to that peer. The 820 statistics contained are an aggregate of the statistics for all 821 successive sessions to that peer. 823 To limit the quantity of information that is stored, an 824 implementation MAY choose to discard this information if and only if 825 no PCEP session exists to the corresponding peer. 827 The data model for PCEP peer presented in this document uses a flat 828 list of peers. Each peer in the list is identified by its IP address 829 (addr-type, addr). 831 There is one list for static peer configuration ("/pcep/entity/ 832 peers"), and a separate list for the operational state of all peers 833 (i.e. static as well as discovered)("/pcep-state/entity/peers"). 834 The former is used to enable remote PCE configuration at PCC (or PCE) 835 while the latter has the operational state of these peers as well as 836 the remote PCE peer which were discovered and PCC peers that have 837 initiated session. 839 5.3. The Session Lists 841 The session list contains PCEP session that the PCEP entity (PCE or 842 PCC) is currently participating in. The statistics in session are 843 semantically different from those in peer since the former applies to 844 the current session only, whereas the latter is the aggregate for all 845 sessions that have existed to that peer. 847 Although [RFC5440] forbids more than one active PCEP session between 848 a given pair of PCEP entities at any given time, there is a window 849 during session establishment where two sessions may exist for a given 850 pair, one representing a session initiated by the local PCEP entity 851 and the other representing a session initiated by the peer. If 852 either of these sessions reaches active state first, then the other 853 is discarded. 855 The data model for PCEP session presented in this document uses a 856 flat list of sessions. Each session in the list is identified by its 857 initiator. This index allows two sessions to exist transiently for a 858 given peer, as discussed above. 860 There is only one list for the operational state of all sessions 861 ("/pcep-state/entity/peers/peer/sessions/session"). 863 5.4. Notifications 865 This YANG model defines a list of notifications to inform client of 866 important events detected during the protocol operation. The 867 notifications defined cover the PCEP MIB notifications. 869 6. Advanced PCE Features 871 This document contains a specification of the base PCEP YANG module, 872 "ietf-pcep" which provides the basic PCEP [RFC5440] data model. 874 This document further handles advanced PCE features like - 876 o Capability and Scope 878 o Domain information (local/neighbour) 880 o Path-Key 882 o OF 884 o GCO 886 o P2MP 888 o GMPLS 890 o Inter-Layer 892 o Stateful PCE 894 o Segement Routing 896 o Authentication including PCEPS (TLS) 898 [Editor's Note - Some of them would be added in a future revision.] 900 6.1. Stateful PCE's LSP-DB 902 In the operational state of PCEP which supports stateful PCE mode, 903 the list of LSP state are maintained in LSP-DB. The key is the PLSP- 904 ID and the PCC IP address. 906 The PCEP data model contains the operational state of LSPs (/pcep- 907 state/entity/lsp-db/lsp/) with PCEP specific attributes. The generic 908 TE attributes of the LSP are defined in [I-D.ietf-teas-yang-te]. A 909 reference to LSP state in TE model is maintained. 911 7. Open Issues and Next Step 913 This section is added so that open issues can be tracked. This 914 section would be removed when the document is ready for publication. 916 7.1. The PCE-Initiated LSP 918 The TE Model at [I-D.ietf-teas-yang-te] should support creationg of 919 tunnels at the controller (PCE) and marking them as PCE-Initiated. 920 The LSP-DB in the PCEP Yang (/pcep-state/entity/lsp-db/lsp/ 921 initiation) also marks the LSPs which are PCE-initiated. 923 7.2. PCEP over TLS (PCEPS) 925 A future version of this document would add TLS related 926 configurations. 928 8. PCEP YANG Module 930 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 931 actual RFC number and all occurrences of the revision date below with 932 the date of RFC publication (and remove this note). 934 file "ietf-pcep@2016-07-07.yang" 935 module ietf-pcep { 936 namespace "urn:ietf:params:xml:ns:yang:ietf-pcep"; 937 prefix pcep; 939 import ietf-inet-types { 940 prefix "inet"; 941 } 943 import ietf-yang-types { 944 prefix "yang"; 945 } 947 import ietf-te { 948 prefix "te"; 949 } 951 import ietf-key-chain { 952 prefix "key-chain"; 954 } 956 organization 957 "IETF PCE (Path Computation Element) Working Group"; 959 contact 960 "WG Web: 961 WG List: 962 WG Chair: JP Vasseur 963 964 WG Chair: Julien Meuric 965 966 WG Chair: Jonathan Hardwick 967 968 Editor: Dhruv Dhody 969 "; 971 description 972 "The YANG module defines a generic configuration and 973 operational model for PCEP common across all of the 974 vendor implementations."; 976 revision 2016-07-07 { 977 description "Initial revision."; 978 reference 979 "RFC XXXX: A YANG Data Model for Path Computation 980 Element Communications Protocol 981 (PCEP)"; 982 } 984 /* 985 * Identities 986 */ 988 identity pcep { 989 description "Identity for the PCEP protocol."; 990 } 992 /* 993 * Typedefs 994 */ 995 typedef pcep-role { 996 type enumeration { 997 enum unknown { 998 value "0"; 999 description 1000 "An unknown role"; 1001 } 1002 enum pcc { 1003 value "1"; 1004 description 1005 "The role of a Path Computation Client"; 1006 } 1007 enum pce { 1008 value "2"; 1009 description 1010 "The role of Path Computation Element"; 1011 } 1012 enum pcc-and-pce { 1013 value "3"; 1014 description 1015 "The role of both Path Computation Client and 1016 Path Computation Element"; 1017 } 1018 } 1020 description 1021 "The role of a PCEP speaker. 1022 Takes one of the following values 1023 - unknown(0): the role is not known. 1024 - pcc(1): the role is of a Path Computation 1025 Client (PCC). 1026 - pce(2): the role is of a Path Computation 1027 Server (PCE). 1028 - pccAndPce(3): the role is of both a PCC and 1029 a PCE."; 1031 } 1033 typedef pcep-admin-status { 1034 type enumeration { 1035 enum admin-status-up { 1036 value "1"; 1037 description 1038 "Admin Status is Up"; 1039 } 1040 enum admin-status-down { 1041 value "2"; 1042 description 1043 "Admin Status is Down"; 1044 } 1045 } 1047 description 1048 "The Admin Status of the PCEP entity. 1049 Takes one of the following values 1050 - admin-status-up(1): Admin Status is Up. 1051 - admin-status-down(2): Admin Status is Down"; 1052 } 1054 typedef pcep-oper-status { 1055 type enumeration { 1056 enum oper-status-up { 1057 value "1"; 1058 description 1059 "The PCEP entity is active"; 1060 } 1061 enum oper-status-down { 1062 value "2"; 1063 description 1064 "The PCEP entity is inactive"; 1065 } 1066 enum oper-status-going-up { 1067 value "3"; 1068 description 1069 "The PCEP entity is activating"; 1070 } 1071 enum oper-status-going-down { 1072 value "4"; 1073 description 1074 "The PCEP entity is deactivating"; 1075 } 1076 enum oper-status-failed { 1077 value "5"; 1078 description 1079 "The PCEP entity has failed and will recover 1080 when possible."; 1081 } 1082 enum oper-status-failed-perm { 1083 value "6"; 1084 description 1085 "The PCEP entity has failed and will not recover 1086 without operator intervention"; 1087 } 1088 } 1089 description 1090 "The operational status of the PCEP entity. 1091 Takes one of the following values 1092 - oper-status-up(1): Active 1093 - oper-status-down(2): Inactive 1094 - oper-status-going-up(3): Activating 1095 - oper-status-going-down(4): Deactivating 1096 - oper-status-failed(5): Failed 1097 - oper-status-failed-perm(6): Failed Permanantly"; 1098 } 1100 typedef pcep-initiator { 1101 type enumeration { 1102 enum local { 1103 value "1"; 1104 description 1105 "The local PCEP entity initiated the session"; 1106 } 1108 enum remote { 1109 value "2"; 1110 description 1111 "The remote PCEP peer initiated the session"; 1112 } 1113 } 1114 description 1115 "The initiator of the session, that is, whether the TCP 1116 connection was initiated by the local PCEP entity or 1117 the remote peer. 1118 Takes one of the following values 1119 - local(1): Initiated locally 1120 - remote(2): Initiated remotely"; 1121 } 1123 typedef pcep-sess-state { 1124 type enumeration { 1125 enum tcp-pending { 1126 value "1"; 1127 description 1128 "The tcp-pending state of PCEP session."; 1129 } 1131 enum open-wait { 1132 value "2"; 1133 description 1134 "The open-wait state of PCEP session."; 1135 } 1137 enum keep-wait { 1138 value "3"; 1139 description 1140 "The keep-wait state of PCEP session."; 1141 } 1143 enum session-up { 1144 value "4"; 1145 description 1146 "The session-up state of PCEP session."; 1147 } 1148 } 1149 description 1150 "The current state of the session. 1151 The set of possible states excludes the idle state 1152 since entries do not exist in the idle state. 1153 Takes one of the following values 1154 - tcp-pending(1): PCEP TCP Pending state 1155 - open-wait(2): PCEP Open Wait state 1156 - keep-wait(3): PCEP Keep Wait state 1157 - session-up(4): PCEP Session Up state"; 1158 } 1160 typedef domain-type { 1161 type enumeration { 1162 enum ospf-area { 1163 value "1"; 1164 description 1165 "The OSPF area."; 1166 } 1167 enum isis-area { 1168 value "2"; 1169 description 1170 "The IS-IS area."; 1171 } 1172 enum as { 1173 value "3"; 1174 description 1175 "The Autonomous System (AS)."; 1176 } 1177 } 1178 description 1179 "The PCE Domain Type"; 1180 } 1182 typedef domain-ospf-area { 1183 type union { 1184 type uint32; 1185 type yang:dotted-quad; 1186 } 1187 description 1188 "OSPF Area ID."; 1189 } 1191 typedef domain-isis-area { 1192 type string { 1193 pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}'; 1194 } 1195 description 1196 "IS-IS Area ID."; 1197 } 1199 typedef domain-as { 1200 type uint32; 1201 description 1202 "Autonomous System number."; 1204 } 1206 typedef domain { 1207 type union { 1208 type domain-ospf-area; 1209 type domain-isis-area; 1210 type domain-as; 1211 } 1212 description 1213 "The Domain Information"; 1214 } 1216 typedef operational-state { 1217 type enumeration { 1218 enum down { 1219 value "0"; 1220 description 1221 "not active."; 1222 } 1223 enum up { 1224 value "1"; 1225 description 1226 "signalled."; 1227 } 1228 enum active { 1229 value "2"; 1230 description 1231 "up and carrying traffic."; 1232 } 1233 enum going-down { 1234 value "3"; 1235 description 1236 "LSP is being torn down, resources are 1237 being released."; 1238 } 1239 enum going-up { 1240 value "4"; 1241 description 1242 "LSP is being signalled."; 1243 } 1244 } 1245 description 1246 "The operational status of the LSP"; 1247 } 1249 typedef lsp-error { 1250 type enumeration { 1251 enum no-error { 1252 value "0"; 1253 description 1254 "No error, LSP is fine."; 1255 } 1256 enum unknown { 1257 value "1"; 1258 description 1259 "Unknown reason."; 1260 } 1261 enum limit { 1262 value "2"; 1263 description 1264 "Limit reached for PCE-controlled LSPs."; 1265 } 1266 enum pending { 1267 value "3"; 1268 description 1269 "Too many pending LSP update requests."; 1270 } 1271 enum unacceptable { 1272 value "4"; 1273 description 1274 "Unacceptable parameters."; 1275 } 1276 enum internal { 1277 value "5"; 1278 description 1279 "Internal error."; 1280 } 1281 enum admin { 1282 value "6"; 1283 description 1284 "LSP administratively brought down."; 1285 } 1286 enum preempted { 1287 value "7"; 1288 description 1289 "LSP preempted."; 1290 } 1291 enum rsvp { 1292 value "8"; 1293 description 1294 "RSVP signaling error."; 1295 } 1296 } 1297 description 1298 "The LSP Error Codes."; 1299 } 1301 typedef sync-state { 1302 type enumeration { 1303 enum pending { 1304 value "0"; 1305 description 1306 "The state synchronization 1307 has not started."; 1308 } 1309 enum ongoing { 1310 value "1"; 1311 description 1312 "The state synchronization 1313 is ongoing."; 1314 } 1315 enum finished { 1316 value "2"; 1317 description 1318 "The state synchronization 1319 is finished."; 1320 } 1321 } 1322 description 1323 "The LSP-DB state synchronization operational status."; 1324 } 1326 typedef pst{ 1327 type enumeration{ 1328 enum rsvp-te{ 1329 value "0"; 1330 description 1331 "RSVP-TE signaling protocol"; 1332 } 1333 enum sr{ 1334 value "1"; 1335 description 1336 "Segment Routing Traffic Engineering"; 1337 } 1338 } 1339 description 1340 "The Path Setup Type"; 1341 } 1343 typedef assoc-type{ 1344 type enumeration{ 1345 enum protection{ 1346 value "1"; 1347 description 1348 "Path Protection Association Type"; 1349 } 1350 } 1351 description 1352 "The PCEP Association Type"; 1353 } 1355 /* 1356 * Features 1357 */ 1359 feature svec { 1360 description 1361 "Support synchronized path computation."; 1362 } 1364 feature gmpls { 1365 description 1366 "Support GMPLS."; 1367 } 1369 feature obj-fn { 1370 description 1371 "Support OF as per RFC 5541."; 1372 } 1374 feature gco { 1375 description 1376 "Support GCO as per RFC 5557."; 1377 } 1379 feature pathkey { 1380 description 1381 "Support pathkey as per RFC 5520."; 1382 } 1383 feature p2mp { 1384 description 1385 "Support P2MP as per RFC 6006."; 1386 } 1388 feature stateful { 1389 description 1390 "Support stateful PCE."; 1391 } 1393 feature pce-initiated { 1394 description 1395 "Support PCE-Initiated LSP."; 1396 } 1398 feature tls { 1399 description 1400 "Support PCEP over TLS."; 1401 } 1403 feature sr { 1404 description 1405 "Support Segement Routing for PCE."; 1406 } 1408 /* 1409 * Groupings 1410 */ 1412 grouping pcep-entity-info{ 1413 description 1414 "This grouping defines the attributes for PCEP entity."; 1415 leaf connect-timer { 1416 type uint32 { 1417 range "1..65535"; 1418 } 1419 units "seconds"; 1420 default 60; 1421 description 1422 "The time in seconds that the PCEP entity will wait 1423 to establish a TCP connection with a peer. If a 1424 TCP connection is not established within this time 1425 then PCEP aborts the session setup attempt."; 1426 reference 1427 "RFC 5440: Path Computation Element (PCE) 1428 Communication Protocol (PCEP)"; 1430 } 1432 leaf connect-max-retry { 1433 type uint32; 1434 default 5; 1435 description 1436 "The maximum number of times the system tries to 1437 establish a TCP connection to a peer before the 1438 session with the peer transitions to the idle 1439 state."; 1440 reference 1441 "RFC 5440: Path Computation Element (PCE) 1442 Communication Protocol (PCEP)"; 1443 } 1445 leaf init-backoff-timer { 1446 type uint32 { 1447 range "1..65535"; 1448 } 1449 units "seconds"; 1450 description 1451 "The initial back-off time in seconds for retrying 1452 a failed session setup attempt to a peer. 1453 The back-off time increases for each failed 1454 session setup attempt, until a maximum back-off 1455 time is reached. The maximum back-off time is 1456 max-backoff-timer."; 1457 } 1459 leaf max-backoff-timer { 1460 type uint32; 1461 units "seconds"; 1462 description 1463 "The maximum back-off time in seconds for retrying 1464 a failed session setup attempt to a peer. 1465 The back-off time increases for each failed session 1466 setup attempt, until this maximum value is reached. 1467 Session setup attempts then repeat periodically 1468 without any further increase in back-off time."; 1469 } 1471 leaf open-wait-timer { 1472 type uint32 { 1473 range "1..65535"; 1474 } 1475 units "seconds"; 1476 default 60; 1477 description 1478 "The time in seconds that the PCEP entity will wait 1479 to receive an Open message from a peer after the 1480 TCP connection has come up. 1481 If no Open message is received within this time then 1482 PCEP terminates the TCP connection and deletes the 1483 associated sessions."; 1484 reference 1485 "RFC 5440: Path Computation Element (PCE) 1486 Communication Protocol (PCEP)"; 1487 } 1489 leaf keep-wait-timer { 1490 type uint32 { 1491 range "1..65535"; 1492 } 1493 units "seconds"; 1494 default 60; 1495 description 1496 "The time in seconds that the PCEP entity will wait 1497 to receive a Keepalive or PCErr message from a peer 1498 during session initialization after receiving an 1499 Open message. If no Keepalive or PCErr message is 1500 received within this time then PCEP terminates the 1501 TCP connection and deletes the associated 1502 sessions."; 1503 reference 1504 "RFC 5440: Path Computation Element (PCE) 1505 Communication Protocol (PCEP)"; 1506 } 1508 leaf keep-alive-timer { 1509 type uint32 { 1510 range "0..255"; 1511 } 1512 units "seconds"; 1513 default 30; 1514 description 1515 "The keep alive transmission timer that this PCEP 1516 entity will propose in the initial OPEN message of 1517 each session it is involved in. This is the 1518 maximum time between two consecutive messages sent 1519 to a peer. Zero means that the PCEP entity prefers 1520 not to send Keepalives at all. 1521 Note that the actual Keepalive transmission 1522 intervals, in either direction of an active PCEP 1523 session, are determined by negotiation between the 1524 peers as specified by RFC 5440, and so may differ 1525 from this configured value."; 1527 reference 1528 "RFC 5440: Path Computation Element (PCE) 1529 Communication Protocol (PCEP)"; 1530 } 1532 leaf dead-timer { 1533 type uint32 { 1534 range "0..255"; 1535 } 1536 units "seconds"; 1537 must ". >= ../keep-alive-timer" { 1538 error-message "The dead timer must be " 1539 + "larger than the keep alive timer"; 1540 description 1541 "This value MUST be greater than 1542 keep-alive-timer."; 1544 } 1545 default 120; 1546 description 1547 "The dead timer that this PCEP entity will propose 1548 in the initial OPEN message of each session it is 1549 involved in. This is the time after which a peer 1550 should declare a session down if it does not 1551 receive any PCEP messages. Zero suggests that the 1552 peer does not run a dead timer at all." ; 1553 reference 1554 "RFC 5440: Path Computation Element (PCE) 1555 Communication Protocol (PCEP)"; 1556 } 1558 leaf allow-negotiation{ 1559 type boolean; 1560 description 1561 "Whether the PCEP entity will permit negotiation of 1562 session parameters."; 1563 } 1565 leaf max-keep-alive-timer{ 1566 type uint32 { 1567 range "0..255"; 1568 } 1569 units "seconds"; 1570 description 1571 "In PCEP session parameter negotiation in seconds, 1572 the maximum value that this PCEP entity will 1573 accept from a peer for the interval between 1574 Keepalive transmissions. Zero means that the PCEP 1575 entity will allow no Keepalive transmission at 1576 all." ; 1577 } 1579 leaf max-dead-timer{ 1580 type uint32 { 1581 range "0..255"; 1582 } 1583 units "seconds"; 1584 description 1585 "In PCEP session parameter negotiation in seconds, 1586 the maximum value that this PCEP entity will accept 1587 from a peer for the Dead timer. Zero means that 1588 the PCEP entity will allow not running a Dead 1589 timer."; 1590 } 1592 leaf min-keep-alive-timer{ 1593 type uint32 { 1594 range "0..255"; 1595 } 1596 units "seconds"; 1597 description 1598 "In PCEP session parameter negotiation in seconds, 1599 the minimum value that this PCEP entity will 1600 accept for the interval between Keepalive 1601 transmissions. Zero means that the PCEP entity 1602 insists on no Keepalive transmission at all."; 1603 } 1605 leaf min-dead-timer{ 1606 type uint32 { 1607 range "0..255"; 1608 } 1609 units "seconds"; 1610 description 1611 "In PCEP session parameter negotiation in 1612 seconds, the minimum value that this PCEP entity 1613 will accept for the Dead timer. Zero means that 1614 the PCEP entity insists on not running a Dead 1615 timer."; 1616 } 1618 leaf sync-timer{ 1619 if-feature svec; 1620 type uint32 { 1621 range "0..65535"; 1622 } 1623 units "seconds"; 1624 default 60; 1625 description 1626 "The value of SyncTimer in seconds is used in the 1627 case of synchronized path computation request 1628 using the SVEC object. Consider the case where a 1629 PCReq message is received by a PCE that contains 1630 the SVEC object referring to M synchronized path 1631 computation requests. If after the expiration of 1632 the SyncTimer all the M path computation requests 1633 have not been, received a protocol error is 1634 triggered and the PCE MUST cancel the whole set 1635 of path computation requests. 1636 The aim of the SyncTimer is to avoid the storage 1637 of unused synchronized requests should one of 1638 them get lost for some reasons (for example, a 1639 misbehaving PCC). 1640 Zero means that the PCEP entity does not use the 1641 SyncTimer."; 1642 reference 1643 "RFC 5440: Path Computation Element (PCE) 1644 Communication Protocol (PCEP)"; 1645 } 1647 leaf request-timer{ 1648 type uint32 { 1649 range "1..65535"; 1650 } 1651 units "seconds"; 1652 description 1653 "The maximum time that the PCEP entity will wait 1654 for a response to a PCReq message."; 1655 } 1657 leaf max-sessions{ 1658 type uint32; 1659 description 1660 "Maximum number of sessions involving this PCEP 1661 entity that can exist at any time."; 1662 } 1664 leaf max-unknown-reqs{ 1665 type uint32; 1666 default 5; 1667 description 1668 "The maximum number of unrecognized requests and 1669 replies that any session on this PCEP entity is 1670 willing to accept per minute before terminating 1671 the session. 1672 A PCRep message contains an unrecognized reply 1673 if it contains an RP object whose request ID 1674 does not correspond to any in-progress request 1675 sent by this PCEP entity. 1676 A PCReq message contains an unrecognized request 1677 if it contains an RP object whose request ID is 1678 zero."; 1679 reference 1680 "RFC 5440: Path Computation Element (PCE) 1681 Communication Protocol (PCEP)"; 1682 } 1684 leaf max-unknown-msgs{ 1685 type uint32; 1686 default 5; 1687 description 1688 "The maximum number of unknown messages that any 1689 session on this PCEP entity is willing to accept 1690 per minute before terminating the session."; 1691 reference 1692 "RFC 5440: Path Computation Element (PCE) 1693 Communication Protocol (PCEP)"; 1694 } 1696 }//pcep-entity-info 1698 grouping pce-scope{ 1699 description 1700 "This grouping defines PCE path computation scope 1701 information which maybe relevant to PCE selection. 1702 This information corresponds to PCE auto-discovery 1703 information."; 1704 reference 1705 "RFC 5088: OSPF Protocol Extensions for Path 1706 Computation Element (PCE) 1707 Discovery 1708 RFC 5089: IS-IS Protocol Extensions for Path 1709 Computation Element (PCE) 1710 Discovery"; 1711 leaf intra-area-scope{ 1712 type boolean; 1713 default true; 1714 description 1715 "PCE can compute intra-area paths."; 1716 } 1717 leaf intra-area-pref{ 1718 type uint8{ 1719 range "0..7"; 1720 } 1721 description 1722 "The PCE's preference for intra-area TE LSP 1723 computation."; 1724 } 1725 leaf inter-area-scope{ 1726 type boolean; 1727 default false; 1728 description 1729 "PCE can compute inter-area paths."; 1730 } 1731 leaf inter-area-scope-default{ 1732 type boolean; 1733 default false; 1734 description 1735 "PCE can act as a default PCE for inter-area 1736 path computation."; 1737 } 1738 leaf inter-area-pref{ 1739 type uint8{ 1740 range "0..7"; 1741 } 1742 description 1743 "The PCE's preference for inter-area TE LSP 1744 computation."; 1745 } 1746 leaf inter-as-scope{ 1747 type boolean; 1748 default false; 1749 description 1750 "PCE can compute inter-AS paths."; 1751 } 1752 leaf inter-as-scope-default{ 1753 type boolean; 1754 default false; 1755 description 1756 "PCE can act as a default PCE for inter-AS 1757 path computation."; 1758 } 1759 leaf inter-as-pref{ 1760 type uint8{ 1761 range "0..7"; 1762 } 1763 description 1764 "The PCE's preference for inter-AS TE LSP 1765 computation."; 1767 } 1768 leaf inter-layer-scope{ 1769 type boolean; 1770 default false; 1771 description 1772 "PCE can compute inter-layer paths."; 1773 } 1774 leaf inter-layer-pref{ 1775 type uint8{ 1776 range "0..7"; 1777 } 1778 description 1779 "The PCE's preference for inter-layer TE LSP 1780 computation."; 1781 } 1782 }//pce-scope 1784 grouping domain{ 1785 description 1786 "This grouping specifies a Domain where the 1787 PCEP speaker has topology visibility."; 1788 leaf domain-type{ 1789 type domain-type; 1790 description 1791 "The domain type."; 1792 } 1793 leaf domain{ 1794 type domain; 1795 description 1796 "The domain Information."; 1797 } 1798 }//domain 1800 grouping capability{ 1801 description 1802 "This grouping specifies a capability 1803 information of local PCEP entity. This maybe 1804 relevant to PCE selection as well. This 1805 information corresponds to PCE auto-discovery 1806 information."; 1807 reference 1808 "RFC 5088: OSPF Protocol Extensions for Path 1809 Computation Element (PCE) 1810 Discovery 1811 RFC 5089: IS-IS Protocol Extensions for Path 1812 Computation Element (PCE) 1813 Discovery"; 1814 leaf gmpls{ 1815 if-feature gmpls; 1816 type boolean; 1817 description 1818 "Path computation with GMPLS link 1819 constraints."; 1820 } 1821 leaf bi-dir{ 1822 type boolean; 1823 description 1824 "Bidirectional path computation."; 1825 } 1826 leaf diverse{ 1827 type boolean; 1828 description 1829 "Diverse path computation."; 1830 } 1831 leaf load-balance{ 1832 type boolean; 1833 description 1834 "Load-balanced path computation."; 1835 } 1836 leaf synchronize{ 1837 if-feature svec; 1838 type boolean; 1839 description 1840 "Synchronized paths computation."; 1841 } 1842 leaf objective-function{ 1843 if-feature obj-fn; 1844 type boolean; 1845 description 1846 "Support for multiple objective functions."; 1847 } 1848 leaf add-path-constraint{ 1849 type boolean; 1850 description 1851 "Support for additive path constraints (max 1852 hop count, etc.)."; 1853 } 1854 leaf prioritization{ 1855 type boolean; 1856 description 1857 "Support for request prioritization."; 1858 } 1859 leaf multi-request{ 1860 type boolean; 1861 description 1862 "Support for multiple requests per message."; 1864 } 1865 leaf gco{ 1866 if-feature gco; 1867 type boolean; 1868 description 1869 "Support for Global Concurrent Optimization 1870 (GCO)."; 1871 } 1872 leaf p2mp{ 1873 if-feature p2mp; 1874 type boolean; 1875 description 1876 "Support for P2MP path computation."; 1877 } 1879 container stateful{ 1880 if-feature stateful; 1881 description 1882 "If stateful PCE feature is present"; 1883 leaf enabled{ 1884 type boolean; 1885 description 1886 "Enabled or Disabled"; 1887 } 1888 leaf active{ 1889 type boolean; 1890 description 1891 "Support for active stateful PCE."; 1892 } 1893 leaf pce-initiated{ 1894 if-feature pce-initiated; 1895 type boolean; 1896 description 1897 "Support for PCE-initiated LSP."; 1898 } 1899 } 1900 container sr{ 1901 if-feature sr; 1902 description 1903 "If segment routing is supported"; 1904 leaf enabled{ 1905 type boolean; 1906 description 1907 "Enabled or Disabled"; 1908 } 1909 leaf msd{ /*should be in MPLS yang model (?)*/ 1910 type uint8; 1911 must "((../../role == 'pcc')" + 1912 " or " + 1913 "(../../role == 'pcc-and-pce')))" 1914 { 1915 error-message 1916 "The PCEP entity must be PCC"; 1917 description 1918 "When PCEP entity is PCC for 1919 MSD to be applicable"; 1920 } 1921 description 1922 "Maximum SID Depth"; 1923 } 1924 } 1925 }//capability 1927 grouping info{ 1928 description 1929 "This grouping specifies all information which 1930 maybe relevant to both PCC and PCE. 1931 This information corresponds to PCE auto-discovery 1932 information."; 1933 container domain{ 1934 description 1935 "The local domain for the PCEP entity"; 1936 list domain{ 1937 key "domain-type domain"; 1938 description 1939 "The local domain."; 1940 uses domain{ 1941 description 1942 "The local domain for the PCEP entity."; 1943 } 1944 } 1945 } 1946 container capability{ 1947 description 1948 "The PCEP entity capability"; 1949 uses capability{ 1950 description 1951 "The PCEP entity supported 1952 capabilities."; 1953 } 1954 } 1955 }//info 1957 grouping pce-info{ 1958 description 1959 "This grouping specifies all PCE information 1960 which maybe relevant to the PCE selection. 1961 This information corresponds to PCE auto-discovery 1962 information."; 1963 container scope{ 1964 description 1965 "The path computation scope"; 1966 uses pce-scope; 1967 } 1969 container neigh-domains{ 1970 description 1971 "The list of neighbour PCE-Domain 1972 toward which a PCE can compute 1973 paths"; 1974 list domain{ 1975 key "domain-type domain"; 1977 description 1978 "The neighbour domain."; 1979 uses domain{ 1980 description 1981 "The PCE neighbour domain."; 1982 } 1983 } 1984 } 1985 }//pce-info 1987 grouping pcep-stats{ 1988 description 1989 "This grouping defines statistics for PCEP. It is used 1990 for both peer and current session."; 1991 leaf avg-rsp-time{ 1992 type uint32; 1993 units "milliseconds"; 1994 must "(/pcep-state/entity/peers/peer/role != 'pcc'" + 1995 " or " + 1996 "(/pcep-state/entity/peers/peer/role = 'pcc'" + 1997 " and avg-rsp-time = 0))" { 1998 error-message 1999 "Invalid average response time"; 2000 description 2001 "If role is pcc then this leaf is meaningless 2002 and is set to zero."; 2003 } 2004 description 2005 "The average response time. 2006 If an average response time has not been 2007 calculated then this leaf has the value zero."; 2009 } 2011 leaf lwm-rsp-time{ 2012 type uint32; 2013 units "milliseconds"; 2014 must "(/pcep-state/entity/peers/peer/role != 'pcc'" + 2015 " or " + 2016 "(/pcep-state/entity/peers/peer/role = 'pcc'" + 2017 " and lwm-rsp-time = 0))" { 2018 error-message 2019 "Invalid smallest (low-water mark) 2020 response time"; 2021 description 2022 "If role is pcc then this leaf is meaningless 2023 and is set to zero."; 2024 } 2025 description 2026 "The smallest (low-water mark) response time seen. 2027 If no responses have been received then this 2028 leaf has the value zero."; 2029 } 2031 leaf hwm-rsp-time{ 2032 type uint32; 2033 units "milliseconds"; 2034 must "(/pcep-state/entity/peers/peer/role != 'pcc'" + 2035 " or " + 2036 "(/pcep-state/entity/peers/peer/role = 'pcc'" + 2037 " and hwm-rsp-time = 0))" { 2038 error-message 2039 "Invalid greatest (high-water mark) 2040 response time seen"; 2041 description 2042 "If role is pcc then this field is 2043 meaningless and is set to zero."; 2044 } 2045 description 2046 "The greatest (high-water mark) response time seen. 2047 If no responses have been received then this object 2048 has the value zero."; 2049 } 2051 leaf num-pcreq-sent{ 2052 type yang:counter32; 2053 description 2054 "The number of PCReq messages sent."; 2055 } 2056 leaf num-pcreq-rcvd{ 2057 type yang:counter32; 2058 description 2059 "The number of PCReq messages received."; 2060 } 2062 leaf num-pcrep-sent{ 2063 type yang:counter32; 2064 description 2065 "The number of PCRep messages sent."; 2066 } 2068 leaf num-pcrep-rcvd{ 2069 type yang:counter32; 2070 description 2071 "The number of PCRep messages received."; 2072 } 2074 leaf num-pcerr-sent{ 2075 type yang:counter32; 2076 description 2077 "The number of PCErr messages sent."; 2078 } 2080 leaf num-pcerr-rcvd{ 2081 type yang:counter32; 2082 description 2083 "The number of PCErr messages received."; 2084 } 2086 leaf num-pcntf-sent{ 2087 type yang:counter32; 2088 description 2089 "The number of PCNtf messages sent."; 2090 } 2092 leaf num-pcntf-rcvd{ 2093 type yang:counter32; 2094 description 2095 "The number of PCNtf messages received."; 2096 } 2098 leaf num-keepalive-sent{ 2099 type yang:counter32; 2100 description 2101 "The number of Keepalive messages sent."; 2102 } 2103 leaf num-keepalive-rcvd{ 2104 type yang:counter32; 2105 description 2106 "The number of Keepalive messages received."; 2107 } 2109 leaf num-unknown-rcvd{ 2110 type yang:counter32; 2111 description 2112 "The number of unknown messages received."; 2113 } 2115 leaf num-corrupt-rcvd{ 2116 type yang:counter32; 2117 description 2118 "The number of corrupted PCEP message received."; 2119 } 2121 leaf num-req-sent{ 2122 type yang:counter32; 2123 description 2124 "The number of requests sent. A request corresponds 2125 1:1 with an RP object in a PCReq message. This might 2126 be greater than num-pcreq-sent because multiple 2127 requests can be batched into a single PCReq 2128 message."; 2129 } 2131 leaf num-req-sent-pend-rep{ 2132 type yang:counter32; 2133 description 2134 "The number of requests that have been sent for 2135 which a response is still pending."; 2136 } 2138 leaf num-req-sent-ero-rcvd{ 2139 type yang:counter32; 2140 description 2141 "The number of requests that have been sent for 2142 which a response with an ERO object was received. 2143 Such responses indicate that a path was 2144 successfully computed by the peer."; 2145 } 2147 leaf num-req-sent-nopath-rcvd{ 2148 type yang:counter32; 2149 description 2150 "The number of requests that have been sent for 2151 which a response with a NO-PATH object was 2152 received. Such responses indicate that the peer 2153 could not find a path to satisfy the 2154 request."; 2155 } 2157 leaf num-req-sent-cancel-rcvd{ 2158 type yang:counter32; 2159 description 2160 "The number of requests that were cancelled with 2161 a PCNtf message. 2162 This might be different than num-pcntf-rcvd because 2163 not all PCNtf messages are used to cancel requests, 2164 and a single PCNtf message can cancel multiple 2165 requests."; 2166 } 2168 leaf num-req-sent-error-rcvd{ 2169 type yang:counter32; 2170 description 2171 "The number of requests that were rejected with a 2172 PCErr message. 2173 This might be different than num-pcerr-rcvd because 2174 not all PCErr messages are used to reject requests, 2175 and a single PCErr message can reject multiple 2176 requests."; 2177 } 2179 leaf num-req-sent-timeout{ 2180 type yang:counter32; 2181 description 2182 "The number of requests that have been sent to a peer 2183 and have been abandoned because the peer has taken too 2184 long to respond to them."; 2185 } 2187 leaf num-req-sent-cancel-sent{ 2188 type yang:counter32; 2189 description 2190 "The number of requests that were sent to the peer and 2191 explicitly cancelled by the local PCEP entity sending 2192 a PCNtf."; 2193 } 2195 leaf num-req-rcvd{ 2196 type yang:counter32; 2197 description 2198 "The number of requests received. A request 2199 corresponds 1:1 with an RP object in a PCReq 2200 message. 2201 This might be greater than num-pcreq-rcvd because 2202 multiple requests can be batched into a single 2203 PCReq message."; 2204 } 2206 leaf num-req-rcvd-pend-rep{ 2207 type yang:counter32; 2208 description 2209 "The number of requests that have been received for 2210 which a response is still pending."; 2211 } 2213 leaf num-req-rcvd-ero-sent{ 2214 type yang:counter32; 2215 description 2216 "The number of requests that have been received for 2217 which a response with an ERO object was sent. Such 2218 responses indicate that a path was successfully 2219 computed by the local PCEP entity."; 2220 } 2222 leaf num-req-rcvd-nopath-sent{ 2223 type yang:counter32; 2224 description 2225 "The number of requests that have been received for 2226 which a response with a NO-PATH object was sent. Such 2227 responses indicate that the local PCEP entity could 2228 not find a path to satisfy the request."; 2229 } 2231 leaf num-req-rcvd-cancel-sent{ 2232 type yang:counter32; 2233 description 2234 "The number of requests received that were cancelled 2235 by the local PCEP entity sending a PCNtf message. 2236 This might be different than num-pcntf-sent because 2237 not all PCNtf messages are used to cancel requests, 2238 and a single PCNtf message can cancel multiple 2239 requests."; 2240 } 2242 leaf num-req-rcvd-error-sent{ 2243 type yang:counter32; 2244 description 2245 "The number of requests received that were cancelled 2246 by the local PCEP entity sending a PCErr message. 2248 This might be different than num-pcerr-sent because 2249 not all PCErr messages are used to cancel requests, 2250 and a single PCErr message can cancel multiple 2251 requests."; 2252 } 2254 leaf num-req-rcvd-cancel-rcvd{ 2255 type yang:counter32; 2256 description 2257 "The number of requests that were received from the 2258 peer and explicitly cancelled by the peer sending 2259 a PCNtf."; 2260 } 2262 leaf num-rep-rcvd-unknown{ 2263 type yang:counter32; 2264 description 2265 "The number of responses to unknown requests 2266 received. A response to an unknown request is a 2267 response whose RP object does not contain the 2268 request ID of any request that is currently 2269 outstanding on the session."; 2270 } 2272 leaf num-req-rcvd-unknown{ 2273 type yang:counter32; 2274 description 2275 "The number of unknown requests that have been 2276 received. An unknown request is a request 2277 whose RP object contains a request ID of 2278 zero."; 2279 } 2281 container svec{ 2282 if-feature svec; 2283 description 2284 "If synchronized path computation is supported"; 2285 leaf num-svec-sent{ 2286 type yang:counter32; 2287 description 2288 "The number of SVEC objects sent in PCReq messages. 2289 An SVEC object represents a set of synchronized 2290 requests."; 2291 } 2293 leaf num-svec-req-sent{ 2294 type yang:counter32; 2295 description 2296 "The number of requests sent that appeared in one 2297 or more SVEC objects."; 2298 } 2300 leaf num-svec-rcvd{ 2301 type yang:counter32; 2302 description 2303 "The number of SVEC objects received in PCReq 2304 messages. An SVEC object represents a set of 2305 synchronized requests."; 2306 } 2308 leaf num-svec-req-rcvd{ 2309 type yang:counter32; 2310 description 2311 "The number of requests received that appeared 2312 in one or more SVEC objects."; 2313 } 2314 } 2315 container stateful{ 2316 if-feature stateful; 2317 description 2318 "Stateful PCE related statistics"; 2319 leaf num-pcrpt-sent{ 2320 type yang:counter32; 2321 description 2322 "The number of PCRpt messages sent."; 2323 } 2325 leaf num-pcrpt-rcvd{ 2326 type yang:counter32; 2327 description 2328 "The number of PCRpt messages received."; 2329 } 2331 leaf num-pcupd-sent{ 2332 type yang:counter32; 2333 description 2334 "The number of PCUpd messages sent."; 2335 } 2337 leaf num-pcupd-rcvd{ 2338 type yang:counter32; 2339 description 2340 "The number of PCUpd messages received."; 2341 } 2343 leaf num-rpt-sent{ 2344 type yang:counter32; 2345 description 2346 "The number of LSP Reports sent. A LSP report 2347 corresponds 1:1 with an LSP object in a PCRpt 2348 message. This might be greater than 2349 num-pcrpt-sent because multiple reports can 2350 be batched into a single PCRpt message."; 2351 } 2353 leaf num-rpt-rcvd{ 2354 type yang:counter32; 2355 description 2356 "The number of LSP Reports received. A LSP report 2357 corresponds 1:1 with an LSP object in a PCRpt 2358 message. 2359 This might be greater than num-pcrpt-rcvd because 2360 multiple reports can be batched into a single 2361 PCRpt message."; 2362 } 2364 leaf num-rpt-rcvd-error-sent{ 2365 type yang:counter32; 2366 description 2367 "The number of reports of LSPs received that were 2368 responded by the local PCEP entity by sending a 2369 PCErr message."; 2370 } 2372 leaf num-upd-sent{ 2373 type yang:counter32; 2374 description 2375 "The number of LSP updates sent. A LSP update 2376 corresponds 1:1 with an LSP object in a PCUpd 2377 message. This might be greater than 2378 num-pcupd-sent because multiple updates can 2379 be batched into a single PCUpd message."; 2380 } 2382 leaf num-upd-rcvd{ 2383 type yang:counter32; 2384 description 2385 "The number of LSP Updates received. A LSP update 2386 corresponds 1:1 with an LSP object in a PCUpd 2387 message. 2388 This might be greater than num-pcupd-rcvd because 2389 multiple updates can be batched into a single 2390 PCUpd message."; 2391 } 2392 leaf num-upd-rcvd-unknown{ 2393 type yang:counter32; 2394 description 2395 "The number of updates to unknown LSPs 2396 received. An update to an unknown LSP is a 2397 update whose LSP object does not contain the 2398 PLSP-ID of any LSP that is currently 2399 present."; 2400 } 2402 leaf num-upd-rcvd-undelegated{ 2403 type yang:counter32; 2404 description 2405 "The number of updates to not delegated LSPs 2406 received. An update to an undelegated LSP is a 2407 update whose LSP object does not contain the 2408 PLSP-ID of any LSP that is currently 2409 delegated to current PCEP session."; 2410 } 2412 leaf num-upd-rcvd-error-sent{ 2413 type yang:counter32; 2414 description 2415 "The number of updates to LSPs received that were 2416 responded by the local PCEP entity by sending a 2417 PCErr message."; 2418 } 2419 container initiation { 2420 if-feature pce-initiated; 2421 description 2422 "PCE-Initiated related statistics"; 2423 leaf num-pcinitiate-sent{ 2424 type yang:counter32; 2425 description 2426 "The number of PCInitiate messages sent."; 2427 } 2429 leaf num-pcinitiate-rcvd{ 2430 type yang:counter32; 2431 description 2432 "The number of PCInitiate messages received."; 2433 } 2435 leaf num-initiate-sent{ 2436 type yang:counter32; 2437 description 2438 "The number of LSP Initiation sent via PCE. 2439 A LSP initiation corresponds 1:1 with an LSP 2440 object in a PCInitiate message. This might be 2441 greater than num-pcinitiate-sent because 2442 multiple initiations can be batched into a 2443 single PCInitiate message."; 2444 } 2446 leaf num-initiate-rcvd{ 2447 type yang:counter32; 2448 description 2449 "The number of LSP Initiation received from 2450 PCE. A LSP initiation corresponds 1:1 with 2451 an LSP object in a PCInitiate message. This 2452 might be greater than num-pcinitiate-rcvd 2453 because multiple initiations can be batched 2454 into a single PCInitiate message."; 2455 } 2457 leaf num-initiate-rcvd-error-sent{ 2458 type yang:counter32; 2459 description 2460 "The number of initiations of LSPs received 2461 that were responded by the local PCEP entity 2462 by sending a PCErr message."; 2463 } 2464 } 2465 } 2466 }//pcep-stats 2468 grouping lsp-state{ 2469 description 2470 "This grouping defines the attributes for LSP in LSP-DB. 2471 These are the attributes specifically from the PCEP 2472 perspective"; 2473 leaf plsp-id{ 2474 type uint32{ 2475 range "1..1048575"; 2476 } 2477 description 2478 "A PCEP-specific identifier for the LSP. A PCC 2479 creates a unique PLSP-ID for each LSP that is 2480 constant for the lifetime of a PCEP session. 2481 PLSP-ID is 20 bits with 0 and 0xFFFFF are 2482 reserved"; 2483 } 2484 leaf pcc-id{ 2485 type inet:ip-address; 2486 description 2487 "The local internet address of the PCC, that 2488 generated the PLSP-ID."; 2489 } 2491 container lsp-ref{ 2492 description 2493 "reference to ietf-te lsp state"; 2495 leaf source { 2496 type leafref { 2497 path "/te:te/te:lsps-state/te:lsp/te:source"; 2498 } 2499 description 2500 "Tunnel sender address extracted from 2501 SENDER_TEMPLATE object"; 2502 reference "RFC3209"; 2503 } 2504 leaf destination { 2505 type leafref { 2506 path "/te:te/te:lsps-state/te:lsp/te:" 2507 + "destination"; 2508 } 2509 description 2510 "Tunnel endpoint address extracted from 2511 SESSION object"; 2512 reference "RFC3209"; 2513 } 2514 leaf tunnel-id { 2515 type leafref { 2516 path "/te:te/te:lsps-state/te:lsp/te:tunnel-id"; 2517 } 2518 description 2519 "Tunnel identifier used in the SESSION 2520 that remains constant over the life 2521 of the tunnel."; 2522 reference "RFC3209"; 2523 } 2524 leaf lsp-id { 2525 type leafref { 2526 path "/te:te/te:lsps-state/te:lsp/te:lsp-id"; 2527 } 2528 description 2529 "Identifier used in the SENDER_TEMPLATE 2530 and the FILTER_SPEC that can be changed 2531 to allow a sender to share resources with 2532 itself."; 2533 reference "RFC3209"; 2534 } 2535 leaf extended-tunnel-id { 2536 type leafref { 2537 path "/te:te/te:lsps-state/te:lsp/te:" 2538 + "extended-tunnel-id"; 2539 } 2540 description 2541 "Extended Tunnel ID of the LSP."; 2542 reference "RFC3209"; 2543 } 2544 leaf type { 2545 type leafref { 2546 path "/te:te/te:lsps-state/te:lsp/te:type"; 2547 } 2548 description "LSP type P2P or P2MP"; 2549 } 2550 } 2552 leaf admin-state{ 2553 type boolean; 2554 description 2555 "The desired operational state"; 2556 } 2557 leaf operational-state{ 2558 type operational-state; 2559 description 2560 "The operational status of the LSP"; 2561 } 2562 container delegated{ 2563 description 2564 "The delegation related parameters"; 2565 leaf enabled{ 2566 type boolean; 2567 description 2568 "LSP is delegated or not"; 2569 } 2570 leaf pce{ 2571 type leafref { 2572 path "/pcep-state/entity/peers/peer/addr"; 2573 } 2574 must "((../enabled == true)" + 2575 " and " + 2576 "((../../role == 'pcc')" + 2577 " or " + 2578 "(../../role == 'pcc-and-pce')))" 2579 { 2580 error-message 2581 "The PCEP entity must be PCC 2582 and the LSP be delegated"; 2583 description 2584 "When PCEP entity is PCC for 2585 delegated LSP"; 2586 } 2587 description 2588 "The reference to the PCE peer to 2589 which LSP is delegated"; 2590 } 2591 leaf srp-id{ 2592 type uint32; 2593 description 2594 "The last SRP-ID-number associated with this 2595 LSP."; 2596 } 2597 } 2598 container initiation { 2599 if-feature pce-initiated; 2600 description 2601 "The PCE initiation related parameters"; 2602 leaf enabled{ 2603 type boolean; 2604 description 2605 "LSP is PCE-initiated or not"; 2606 } 2607 leaf pce{ 2608 type leafref { 2609 path "/pcep-state/entity/peers/peer/addr"; 2610 } 2611 must "(../enabled == true)" 2612 { 2613 error-message 2614 "The LSP must be PCE-Initiated"; 2615 description 2616 "When the LSP must be PCE-Initiated"; 2617 } 2618 description 2619 "The reference to the PCE 2620 that initiated this LSP"; 2621 } 2622 } 2623 leaf symbolic-path-name{ 2624 type string; 2625 description 2626 "The symbolic path name associated with the LSP."; 2627 } 2628 leaf last-error{ 2629 type lsp-error; 2630 description 2631 "The last error for the LSP."; 2633 } 2634 leaf pst{ 2635 type pst; 2636 default "rsvp-te"; 2637 description 2638 "The Path Setup Type"; 2640 } 2642 }//lsp-state 2644 grouping notification-instance-hdr { 2645 description 2646 "This group describes common instance specific data 2647 for notifications."; 2649 leaf peer-addr { 2650 type leafref { 2651 path "/pcep-state/entity/peers/peer/addr"; 2652 } 2653 description 2654 "Reference to peer address"; 2655 } 2657 }// notification-instance-hdr 2659 grouping notification-session-hdr { 2660 description 2661 "This group describes common session instance specific 2662 data for notifications."; 2664 leaf session-initiator { 2665 type leafref { 2666 path "/pcep-state/entity/peers/peer/sessions/" + 2667 "session/initiator"; 2668 } 2669 description 2670 "Reference to pcep session initiator leaf"; 2671 } 2672 }// notification-session-hdr 2674 grouping stateful-pce-parameter { 2675 description 2676 "This group describes stateful PCE specific 2677 parameters."; 2678 leaf state-timeout{ 2679 type uint32; 2680 units "seconds"; 2681 description 2682 "When a PCEP session is terminated, a PCC 2683 waits for this time period before flushing 2684 LSP state associated with that PCEP session 2685 and reverting to operator-defined default 2686 parameters or behaviours."; 2687 } 2688 leaf redelegation-timeout{ 2689 type uint32; 2690 units "seconds"; 2691 must "((../role == 'pcc')" + 2692 " or " + 2693 "(../role == 'pcc-and-pce'))" 2694 { 2695 error-message "The PCEP entity must be PCC"; 2696 description 2697 "When PCEP entity is PCC"; 2698 } 2699 description 2700 "When a PCEP session is terminated, a PCC 2701 waits for this time period before revoking 2702 LSP delegation to a PCE and attempting to 2703 redelegate LSPs associated with the 2704 terminated PCEP session to an alternate 2705 PCE."; 2706 } 2707 leaf rpt-non-pcep-lsp{ 2708 type boolean; 2709 must "((../role == 'pcc')" + 2710 " or " + 2711 "(../role == 'pcc-and-pce'))" 2712 { 2713 error-message "The PCEP entity must be PCC"; 2714 description 2715 "When PCEP entity is PCC"; 2716 } 2717 description 2718 "If set, a PCC reports LSPs that are not 2719 controlled by any PCE (for example, LSPs 2720 that are statically configured at the 2721 PCC). "; 2722 } 2724 } 2726 grouping authentication { 2727 description "Authentication Information"; 2728 choice auth-type-selection { 2729 description 2730 "Options for expressing authentication setting."; 2731 case auth-key-chain { 2732 leaf key-chain { 2733 type key-chain:key-chain-ref; 2734 description 2735 "key-chain name."; 2736 } 2737 } 2738 case auth-key { 2739 leaf key { 2740 type string; 2741 description 2742 "Key string in ASCII format."; 2743 } 2744 container crypto-algorithm { 2745 uses key-chain:crypto-algorithm-types; 2746 description 2747 "Cryptographic algorithm associated 2748 with key."; 2749 } 2750 } 2751 case auth-tls { 2752 if-feature tls; 2753 container tls { 2754 description 2755 "TLS related information - TBD"; 2756 } 2757 } 2758 } 2759 } 2761 grouping association { 2762 description 2763 "Generic Association parameters"; 2764 leaf type { 2765 type "assoc-type"; 2766 description 2767 "The PCEP association type"; 2768 } 2769 leaf id { 2770 type uint16; 2771 description 2772 "PCEP Association ID"; 2773 } 2774 leaf source { 2775 type inet:ip-address; 2776 description 2777 "PCEP Association Source."; 2778 } 2779 leaf global-source { 2780 type uint32; 2781 description 2782 "PCEP Association Global 2783 Source."; 2784 } 2785 leaf extended-id{ 2786 type string; 2787 description 2788 "Additional information to 2789 support unique identification."; 2790 } 2791 } 2792 grouping association-ref { 2793 description 2794 "Generic Association parameters"; 2795 leaf id { 2796 type leafref { 2797 path "/pcep-state/entity/lsp-db/" 2798 + "association-list/id"; 2799 } 2800 description 2801 "PCEP Association ID"; 2802 } 2803 leaf source { 2804 type leafref { 2805 path "/pcep-state/entity/lsp-db/" 2806 + "association-list/source"; 2807 } 2808 description 2809 "PCEP Association Source."; 2810 } 2811 leaf global-source { 2812 type leafref { 2813 path "/pcep-state/entity/lsp-db/" 2814 + "association-list/global-source"; 2815 } 2816 description 2817 "PCEP Association Global 2818 Source."; 2819 } 2820 leaf extended-id{ 2821 type leafref { 2822 path "/pcep-state/entity/lsp-db/" 2823 + "association-list/extended-id"; 2824 } 2825 description 2826 "Additional information to 2827 support unique identification."; 2828 } 2829 } 2830 /* 2831 * Configuration data nodes 2832 */ 2833 container pcep{ 2835 presence 2836 "The PCEP is enabled"; 2838 description 2839 "Parameters for list of configured PCEP entities 2840 on the device."; 2842 container entity { 2844 description 2845 "The configured PCEP entity on the device."; 2847 leaf addr { 2848 type inet:ip-address; 2849 mandatory true; 2850 description 2851 "The local Internet address of this PCEP 2852 entity. 2853 If operating as a PCE server, the PCEP 2854 entity listens on this address. 2855 If operating as a PCC, the PCEP entity 2856 binds outgoing TCP connections to this 2857 address. 2858 It is possible for the PCEP entity to 2859 operate both as a PCC and a PCE Server, in 2860 which case it uses this address both to 2861 listen for incoming TCP connections and to 2862 bind outgoing TCP connections."; 2863 } 2865 leaf enabled { 2866 type boolean; 2867 default true; 2868 description 2869 "The administrative status of this PCEP 2870 Entity."; 2871 } 2872 leaf role { 2873 type pcep-role; 2874 mandatory true; 2875 description 2876 "The role that this entity can play. 2877 Takes one of the following values. 2878 - unknown(0): this PCEP Entity role is not 2879 known. 2880 - pcc(1): this PCEP Entity is a PCC. 2881 - pce(2): this PCEP Entity is a PCE. 2882 - pcc-and-pce(3): this PCEP Entity is both 2883 a PCC and a PCE."; 2884 } 2886 leaf description { 2887 type string; 2888 description 2889 "Description of the PCEP entity configured 2890 by the user"; 2891 } 2893 uses info { 2894 description 2895 "Local PCEP entity information"; 2896 } 2898 container pce-info { 2899 must "((../role == 'pce')" + 2900 " or " + 2901 "(../role == 'pcc-and-pce'))" 2902 { 2903 error-message "The PCEP entity must be PCE"; 2904 description 2905 "When PCEP entity is PCE"; 2906 } 2907 uses pce-info { 2908 description 2909 "Local PCE information"; 2910 } 2911 uses authentication { 2912 description 2913 "Local PCE authentication information"; 2914 } 2916 description 2917 "The Local PCE Entity PCE information"; 2919 } 2921 uses pcep-entity-info { 2922 description 2923 "The configuration related to the PCEP 2924 entity."; 2925 } 2927 leaf pcep-notification-max-rate { 2928 type uint32; 2929 mandatory true; 2930 description 2931 "This variable indicates the maximum number of 2932 notifications issued per second. If events occur 2933 more rapidly, the implementation may simply fail 2934 to emit these notifications during that period, 2935 or may queue them until an appropriate time. A 2936 value of 0 means no notifications are emitted 2937 and all should be discarded (that is, not 2938 queued)."; 2939 } 2941 container stateful-parameter{ 2942 if-feature stateful; 2943 must "(../info/capability/stateful/active == true)" 2944 { 2945 error-message 2946 "The Active Stateful PCE must be enabled"; 2947 description 2948 "When PCEP entity is active stateful 2949 enabled"; 2950 } 2951 uses stateful-pce-parameter; 2953 description 2954 "The configured stateful parameters"; 2955 } 2957 container peers{ 2958 must "((../role == 'pcc')" + 2959 " or " + 2960 "(../role == 'pcc-and-pce'))" 2961 { 2962 error-message 2963 "The PCEP entity must be PCC"; 2965 description 2966 "When PCEP entity is PCC, as remote 2967 PCE peers are configured."; 2968 } 2969 description 2970 "The list of configured peers for the 2971 entity (remote PCE)"; 2972 list peer{ 2973 key "addr"; 2975 description 2976 "The peer configured for the entity. 2977 (remote PCE)"; 2979 leaf addr { 2980 type inet:ip-address; 2981 description 2982 "The local Internet address of this 2983 PCEP peer."; 2984 } 2986 leaf description { 2987 type string; 2988 description 2989 "Description of the PCEP peer 2990 configured by the user"; 2991 } 2992 uses info { 2993 description 2994 "PCE Peer information"; 2995 } 2996 uses pce-info { 2997 description 2998 "PCE Peer information"; 2999 } 3001 leaf delegation-pref{ 3002 if-feature stateful; 3003 type uint8{ 3004 range "0..7"; 3005 } 3006 must "(../../info/capability/stateful/active" 3007 + "== true)" 3008 { 3009 error-message 3010 "The Active Stateful PCE must be 3011 enabled"; 3012 description 3013 "When PCEP entity is active stateful 3014 enabled"; 3015 } 3016 description 3017 "The PCE peer delegation preference."; 3018 } 3019 uses authentication { 3020 description 3021 "PCE Peer authentication"; 3022 } 3023 }//peer 3024 }//peers 3025 }//entity 3026 }//pcep 3028 /* 3029 * Operational data nodes 3030 */ 3032 container pcep-state{ 3033 config false; 3034 description 3035 "The list of operational PCEP entities on the 3036 device."; 3038 container entity{ 3039 description 3040 "The operational PCEP entity on the device."; 3042 leaf addr { 3043 type inet:ip-address; 3044 description 3045 "The local Internet address of this PCEP 3046 entity. 3047 If operating as a PCE server, the PCEP 3048 entity listens on this address. 3049 If operating as a PCC, the PCEP entity 3050 binds outgoing TCP connections to this 3051 address. 3052 It is possible for the PCEP entity to 3053 operate both as a PCC and a PCE Server, in 3054 which case it uses this address both to 3055 listen for incoming TCP connections and to 3056 bind outgoing TCP connections."; 3057 } 3059 leaf index{ 3060 type uint32; 3061 description 3062 "The index of the operational PECP 3063 entity"; 3064 } 3066 leaf admin-status { 3067 type pcep-admin-status; 3068 description 3069 "The administrative status of this PCEP Entity. 3070 This is the desired operational status as 3071 currently set by an operator or by default in 3072 the implementation. The value of enabled 3073 represents the current status of an attempt 3074 to reach this desired status."; 3075 } 3077 leaf oper-status { 3078 type pcep-admin-status; 3079 description 3080 "The operational status of the PCEP entity. 3081 Takes one of the following values. 3082 - oper-status-up(1): the PCEP entity is 3083 active. 3084 - oper-status-down(2): the PCEP entity is 3085 inactive. 3086 - oper-status-going-up(3): the PCEP entity is 3087 activating. 3088 - oper-status-going-down(4): the PCEP entity is 3089 deactivating. 3090 - oper-status-failed(5): the PCEP entity has 3091 failed and will recover when possible. 3092 - oper-status-failed-perm(6): the PCEP entity 3093 has failed and will not recover without 3094 operator intervention."; 3095 } 3097 leaf role { 3098 type pcep-role; 3099 description 3100 "The role that this entity can play. 3101 Takes one of the following values. 3102 - unknown(0): this PCEP entity role is 3103 not known. 3104 - pcc(1): this PCEP entity is a PCC. 3105 - pce(2): this PCEP entity is a PCE. 3106 - pcc-and-pce(3): this PCEP entity is 3107 both a PCC and a PCE."; 3109 } 3111 uses info { 3112 description 3113 "Local PCEP entity information"; 3114 } 3116 container pce-info { 3117 when "((../role == 'pce')" + 3118 " or " + 3119 "(../role == 'pcc-and-pce'))" 3120 { 3121 description 3122 "When PCEP entity is PCE"; 3123 } 3124 uses pce-info { 3125 description 3126 "Local PCE information"; 3127 } 3128 uses authentication { 3129 description 3130 "Local PCE authentication information"; 3131 } 3132 description 3133 "The Local PCE Entity PCE information"; 3134 } 3136 uses pcep-entity-info{ 3137 description 3138 "The operational information related to the 3139 PCEP entity."; 3140 } 3142 container stateful-parameter{ 3143 if-feature stateful; 3144 must "(../info/capability/stateful/active == true)" 3145 { 3146 error-message 3147 "The Active Stateful PCE must be enabled"; 3148 description 3149 "When PCEP entity is active stateful 3150 enabled"; 3151 } 3152 uses stateful-pce-parameter; 3154 description 3155 "The operational stateful parameters"; 3156 } 3157 container lsp-db{ 3158 if-feature stateful; 3159 description 3160 "The LSP-DB"; 3161 list association-list { 3162 key "id source global-source extended-id"; 3163 description 3164 "List of all PCEP associations"; 3165 uses association { 3166 description 3167 "The Association attributes"; 3168 } 3169 list lsp { 3170 key "plsp-id pcc-id"; 3171 description 3172 "List of all LSP in this association"; 3173 leaf plsp-id { 3174 type leafref { 3175 path "/pcep-state/entity/lsp-db/" 3176 + "lsp/plsp-id"; 3177 } 3178 description 3179 "Reference to PLSP-ID in LSP-DB"; 3180 } 3181 leaf pcc-id { 3182 type leafref { 3183 path "/pcep-state/entity/lsp-db/" 3184 + "lsp/pcc-id"; 3185 } 3186 description 3187 "Reference to PCC-ID in LSP-DB"; 3188 } 3189 } 3190 } 3191 list lsp{ 3192 key "plsp-id pcc-id"; 3193 description 3194 "List of all LSPs in LSP-DB"; 3195 uses lsp-state{ 3196 description 3197 "The PCEP specific attributes for 3198 LSP-DB."; 3199 } 3200 list association-list { 3201 key "id source global-source extended-id"; 3202 description 3203 "List of all PCEP associations"; 3204 uses association-ref { 3205 description 3206 "Reference to the Association 3207 attributes"; 3208 } 3209 } 3211 } 3212 } 3213 container peers{ 3214 description 3215 "The list of peers for the entity"; 3217 list peer{ 3218 key "addr"; 3220 description 3221 "The peer for the entity."; 3223 leaf addr { 3224 type inet:ip-address; 3225 description 3226 "The local Internet address of this PCEP 3227 peer."; 3228 } 3230 leaf role { 3231 type pcep-role; 3232 description 3233 "The role of the PCEP Peer. 3234 Takes one of the following values. 3235 - unknown(0): this PCEP peer role 3236 is not known. 3237 - pcc(1): this PCEP peer is a PCC. 3238 - pce(2): this PCEP peer is a PCE. 3239 - pcc-and-pce(3): this PCEP peer 3240 is both a PCC and a PCE."; 3241 } 3243 uses info { 3244 description 3245 "PCEP peer information"; 3246 } 3248 container pce-info { 3249 when "((../role == 'pce')" + 3250 " or " + 3251 "(../role == 'pcc-and-pce'))" 3252 { 3253 description 3254 "When PCEP entity is PCE"; 3255 } 3256 uses pce-info { 3257 description 3258 "PCE Peer information"; 3259 } 3260 description 3261 "The PCE Peer information"; 3262 } 3264 leaf delegation-pref{ 3265 if-feature stateful; 3266 type uint8{ 3267 range "0..7"; 3268 } 3269 must "((../../role == 'pcc')" + 3270 " or " + 3271 "(../../role == 'pcc-and-pce'))" 3272 { 3273 error-message 3274 "The PCEP entity must be PCC"; 3275 description 3276 "When PCEP entity is PCC"; 3277 } 3278 must "(../../info/capability/stateful/active" 3279 + " == true)" 3280 { 3281 error-message 3282 "The Active Stateful PCE must be 3283 enabled"; 3284 description 3285 "When PCEP entity is active stateful 3286 enabled"; 3287 } 3288 description 3289 "The PCE peer delegation preference."; 3290 } 3292 uses authentication { 3293 description 3294 "PCE Peer authentication"; 3295 } 3297 leaf discontinuity-time { 3298 type yang:timestamp; 3299 description 3300 "The timestamp of the time when the 3301 information and statistics were 3302 last reset."; 3303 } 3305 leaf initiate-session { 3306 type boolean; 3307 description 3308 "Indicates whether the local PCEP 3309 entity initiates sessions to this peer, 3310 or waits for the peer to initiate a 3311 session."; 3312 } 3314 leaf session-exists{ 3315 type boolean; 3316 description 3317 "Indicates whether a session with 3318 this peer currently exists."; 3319 } 3321 leaf num-sess-setup-ok{ 3322 type yang:counter32; 3323 description 3324 "The number of PCEP sessions successfully 3325 successfully established with the peer, 3326 including any current session. This 3327 counter is incremented each time a 3328 session with this peer is successfully 3329 established."; 3330 } 3332 leaf num-sess-setup-fail{ 3333 type yang:counter32; 3334 description 3335 "The number of PCEP sessions with the peer 3336 that have been attempted but failed 3337 before being fully established. This 3338 counter is incremented each time a 3339 session retry to this peer fails."; 3340 } 3342 leaf session-up-time{ 3343 type yang:timestamp; 3344 must "(../num-sess-setup-ok != 0 or " + 3345 "(../num-sess-setup-ok = 0 and " + 3346 "session-up-time = 0))" { 3347 error-message 3348 "Invalid Session Up timestamp"; 3349 description 3350 "If num-sess-setup-ok is zero, 3351 then this leaf contains zero."; 3352 } 3353 description 3354 "The timestamp value of the last time a 3355 session with this peer was successfully 3356 established."; 3357 } 3359 leaf session-fail-time{ 3360 type yang:timestamp; 3361 must "(../num-sess-setup-fail != 0 or " + 3362 "(../num-sess-setup-fail = 0 and " + 3363 "session-fail-time = 0))" { 3364 error-message 3365 "Invalid Session Fail timestamp"; 3366 description 3367 "If num-sess-setup-fail is zero, 3368 then this leaf contains zero."; 3369 } 3370 description 3371 "The timestamp value of the last time a 3372 session with this peer failed to be 3373 established."; 3374 } 3376 leaf session-fail-up-time{ 3377 type yang:timestamp; 3378 must "(../num-sess-setup-ok != 0 or " + 3379 "(../num-sess-setup-ok = 0 and " + 3380 "session-fail-up-time = 0))" { 3381 error-message 3382 "Invalid Session Fail from 3383 Up timestamp"; 3384 description 3385 "If num-sess-setup-ok is zero, 3386 then this leaf contains zero."; 3387 } 3388 description 3389 "The timestamp value of the last time a 3390 session with this peer failed from 3391 active."; 3392 } 3394 container pcep-stats { 3395 description 3396 "The container for all statistics at peer 3397 level."; 3398 uses pcep-stats{ 3399 description 3400 "Since PCEP sessions can be 3401 ephemeral, the peer statistics tracks 3402 a peer even when no PCEP session 3403 currently exists to that peer. The 3404 statistics contained are an aggregate 3405 of the statistics for all successive 3406 sessions to that peer."; 3407 } 3409 leaf num-req-sent-closed{ 3410 type yang:counter32; 3411 description 3412 "The number of requests that were 3413 sent to the peer and implicitly 3414 cancelled when the session they were 3415 sent over was closed."; 3416 } 3418 leaf num-req-rcvd-closed{ 3419 type yang:counter32; 3420 description 3421 "The number of requests that were 3422 received from the peer and 3423 implicitly cancelled when the 3424 session they were received over 3425 was closed."; 3426 } 3427 }//pcep-stats 3429 container sessions { 3430 description 3431 "This entry represents a single PCEP 3432 session in which the local PCEP entity 3433 participates. 3434 This entry exists only if the 3435 corresponding PCEP session has been 3436 initialized by some event, such as 3437 manual user configuration, auto- 3438 discovery of a peer, or an incoming 3439 TCP connection."; 3441 list session { 3442 key "initiator"; 3444 description 3445 "The list of sessions, note that 3446 for a time being two sessions 3447 may exist for a peer"; 3449 leaf initiator { 3450 type pcep-initiator; 3451 description 3452 "The initiator of the session, 3453 that is, whether the TCP 3454 connection was initiated by 3455 the local PCEP entity or the 3456 peer. 3457 There is a window during 3458 session initialization where 3459 two sessions can exist between 3460 a pair of PCEP speakers, each 3461 initiated by one of the 3462 speakers. One of these 3463 sessions is always discarded 3464 before it leaves OpenWait state. 3465 However, before it is discarded, 3466 two sessions to the given peer 3467 appear transiently in this MIB 3468 module. The sessions are 3469 distinguished by who initiated 3470 them, and so this field is the 3471 key."; 3472 } 3474 leaf state-last-change { 3475 type yang:timestamp; 3476 description 3477 "The timestamp value at the 3478 time this session entered its 3479 current state as denoted by 3480 the state leaf."; 3481 } 3483 leaf state { 3484 type pcep-sess-state; 3485 description 3486 "The current state of the 3487 session. 3488 The set of possible states 3489 excludes the idle state since 3490 entries do not exist in the 3491 idle state."; 3492 } 3494 leaf session-creation { 3495 type yang:timestamp; 3496 description 3497 "The timestamp value at the 3498 time this session was 3499 created."; 3500 } 3502 leaf connect-retry { 3503 type yang:counter32; 3504 description 3505 "The number of times that the 3506 local PCEP entity has 3507 attempted to establish a TCP 3508 connection for this session 3509 without success. The PCEP 3510 entity gives up when this 3511 reaches connect-max-retry."; 3512 } 3514 leaf local-id { 3515 type uint32 { 3516 range "0..255"; 3517 } 3518 description 3519 "The value of the PCEP session 3520 ID used by the local PCEP 3521 entity in the Open message 3522 for this session. 3523 If state is tcp-pending then 3524 this is the session ID that 3525 will be used in the Open 3526 message. Otherwise, this is 3527 the session ID that was sent 3528 in the Open message."; 3529 } 3531 leaf remote-id { 3532 type uint32 { 3533 range "0..255"; 3534 } 3535 must "((../state != 'tcp-pending'" + 3536 "and " + 3537 "../state != 'open-wait' )" + 3538 "or " + 3539 "((../state = 'tcp-pending'" + 3540 " or " + 3541 "../state = 'open-wait' )" + 3542 "and remote-id = 0))" { 3543 error-message 3544 "Invalid remote-id"; 3545 description 3546 "If state is tcp-pending 3547 or open-wait then this 3548 leaf is not used and 3549 MUST be set to zero."; 3550 } 3551 description 3552 "The value of the PCEP session 3553 ID used by the peer in its 3554 Open message for this 3555 session."; 3556 } 3558 leaf keepalive-timer { 3559 type uint32 { 3560 range "0..255"; 3561 } 3562 units "seconds"; 3563 must "(../state = 'session-up'" + 3564 "or " + 3565 "(../state != 'session-up'" + 3566 "and keepalive-timer = 0))" { 3567 error-message 3568 "Invalid keepalive 3569 timer"; 3570 description 3571 "This field is used if 3572 and only if state is 3573 session-up. Otherwise, 3574 it is not used and 3575 MUST be set to 3576 zero."; 3577 } 3578 description 3579 "The agreed maximum interval at 3580 which the local PCEP entity 3581 transmits PCEP messages on this 3582 PCEP session. Zero means that 3583 the local PCEP entity never 3584 sends Keepalives on this 3585 session."; 3586 } 3588 leaf peer-keepalive-timer { 3589 type uint32 { 3590 range "0..255"; 3591 } 3592 units "seconds"; 3593 must "(../state = 'session-up'" + 3594 "or " + 3595 "(../state != 'session-up'" + 3596 "and " + 3597 "peer-keepalive-timer = 0))" { 3598 error-message 3599 "Invalid Peer keepalive 3600 timer"; 3601 description 3602 "This field is used if 3603 and only if state is 3604 session-up. Otherwise, 3605 it is not used and MUST 3606 be set to zero."; 3607 } 3608 description 3609 "The agreed maximum interval at 3610 which the peer transmits PCEP 3611 messages on this PCEP session. 3612 Zero means that the peer never 3613 sends Keepalives on this 3614 session."; 3615 } 3617 leaf dead-timer { 3618 type uint32 { 3619 range "0..255"; 3620 } 3621 units "seconds"; 3622 description 3623 "The dead timer interval for 3624 this PCEP session."; 3625 } 3627 leaf peer-dead-timer { 3628 type uint32 { 3629 range "0..255"; 3630 } 3631 units "seconds"; 3632 must "((../state != 'tcp-pending'" + 3633 "and " + 3634 "../state != 'open-wait' )" + 3635 "or " + 3636 "((../state = 'tcp-pending'" + 3637 " or " + 3638 "../state = 'open-wait' )" + 3639 "and " + 3640 "peer-dead-timer = 0))" { 3641 error-message 3642 "Invalid Peer Dead 3643 timer"; 3644 description 3645 "If state is tcp- 3646 pending or open-wait 3647 then this leaf is not 3648 used and MUST be set to 3649 zero."; 3650 } 3651 description 3652 "The peer's dead-timer interval 3653 for this PCEP session."; 3654 } 3656 leaf ka-hold-time-rem { 3657 type uint32 { 3658 range "0..255"; 3659 } 3660 units "seconds"; 3661 must "((../state != 'tcp-pending'" + 3662 "and " + 3663 "../state != 'open-wait' ) " + 3664 "or " + 3665 "((../state = 'tcp-pending'" + 3666 "or " + 3667 "../state = 'open-wait' )" + 3668 "and " + 3669 "ka-hold-time-rem = 0))" { 3670 error-message 3671 "Invalid Keepalive hold 3672 time remaining"; 3673 description 3674 "If state is tcp-pending 3675 or open-wait then this 3676 field is not used and 3677 MUST be set to zero."; 3678 } 3679 description 3680 "The keep alive hold time 3681 remaining for this session."; 3682 } 3684 leaf overloaded { 3685 type boolean; 3686 description 3687 "If the local PCEP entity has 3688 informed the peer that it is 3689 currently overloaded, then this 3690 is set to true. Otherwise, it 3691 is set to false."; 3692 } 3694 leaf overload-time { 3695 type uint32; 3696 units "seconds"; 3697 must "(../overloaded = true or" + 3698 "(../overloaded != true and" + 3699 " overload-time = 0))" { 3700 error-message 3701 "Invalid overload-time"; 3702 description 3703 "This field is only used 3704 if overloaded is set to 3705 true. Otherwise, it is 3706 not used and MUST be set 3707 to zero."; 3708 } 3709 description 3710 "The interval of time that is 3711 remaining until the local PCEP 3712 entity will cease to be 3713 overloaded on this session."; 3714 } 3716 leaf peer-overloaded { 3717 type boolean; 3718 description 3719 "If the peer has informed the 3720 local PCEP entity that it is 3721 currently overloaded, then this 3722 is set to true. Otherwise, it 3723 is set to false."; 3724 } 3726 leaf peer-overload-time { 3727 type uint32; 3728 units "seconds"; 3729 must "(../peer-overloaded = true" + 3730 " or " + 3731 "(../peer-overloaded != true" + 3732 " and " + 3733 "peer-overload-time = 0))" { 3734 error-message 3735 "Invalid peer overload 3736 time"; 3737 description 3738 "This field is only used 3739 if peer-overloaded is 3740 set to true. Otherwise, 3741 it is not used and MUST 3742 be set to zero."; 3743 } 3744 description 3745 "The interval of time that is 3746 remaining until the peer will 3747 cease to be overloaded. If it 3748 is not known how long the peer 3749 will stay in overloaded state, 3750 this leaf is set to zero."; 3751 } 3752 leaf lspdb-sync { 3753 if-feature stateful; 3754 type sync-state; 3755 description 3756 "The LSP-DB state synchronization 3757 status."; 3758 } 3759 leaf discontinuity-time { 3760 type yang:timestamp; 3761 description 3762 "The timestamp value of the time 3763 when the statistics were last 3764 reset."; 3765 } 3767 container pcep-stats { 3768 description 3769 "The container for all statistics 3770 at session level."; 3771 uses pcep-stats{ 3772 description 3773 "The statistics contained are 3774 for the current sessions to 3775 that peer. These are lost 3776 when the session goes down. 3778 "; 3779 } 3780 }//pcep-stats 3782 } // session 3783 } // sessions 3784 }//peer 3785 }//peers 3786 }//entity 3787 }//pcep-state 3789 /* 3790 * Notifications 3791 */ 3792 notification pcep-session-up { 3793 description 3794 "This notification is sent when the value of 3795 '/pcep/pcep-state/peers/peer/sessions/session/state' 3796 enters the 'session-up' state."; 3798 uses notification-instance-hdr; 3800 uses notification-session-hdr; 3802 leaf state-last-change { 3803 type yang:timestamp; 3804 description 3805 "The timestamp value at the time this session entered 3806 its current state as denoted by the state leaf."; 3807 } 3809 leaf state { 3810 type pcep-sess-state; 3811 description 3812 "The current state of the session. 3813 The set of possible states excludes the idle state 3814 since entries do not exist in the idle state."; 3815 } 3816 } //notification 3818 notification pcep-session-down { 3819 description 3820 "This notification is sent when the value of 3821 '/pcep/pcep-state/peers/peer/sessions/session/state' 3822 leaves the 'session-up' state."; 3824 uses notification-instance-hdr; 3825 leaf session-initiator { 3826 type pcep-initiator; 3827 description 3828 "The initiator of the session."; 3829 } 3831 leaf state-last-change { 3832 type yang:timestamp; 3833 description 3834 "The timestamp value at the time this session entered 3835 its current state as denoted by the state leaf."; 3836 } 3838 leaf state { 3839 type pcep-sess-state; 3840 description 3841 "The current state of the session. 3842 The set of possible states excludes the idle state 3843 since entries do not exist in the idle state."; 3844 } 3845 } //notification 3847 notification pcep-session-local-overload { 3848 description 3849 "This notification is sent when the local PCEP entity 3850 enters overload state for a peer."; 3852 uses notification-instance-hdr; 3854 uses notification-session-hdr; 3856 leaf overloaded { 3857 type boolean; 3858 description 3859 "If the local PCEP entity has informed the peer that 3860 it is currently overloaded, then this is set to 3861 true. Otherwise, it is set to false."; 3862 } 3864 leaf overload-time { 3865 type uint32; 3866 units "seconds"; 3867 must "(../overloaded = true or " + 3868 "(../overloaded != true and " + 3869 "overload-time = 0))" { 3870 error-message 3871 "Invalid overload-time"; 3872 description 3873 "This field is only used if overloaded is 3874 set to true. Otherwise, it is not used 3875 and MUST be set to zero."; 3876 } 3877 description 3878 "The interval of time that is remaining until the 3879 local PCEP entity will cease to be overloaded on 3880 this session."; 3881 } 3882 } //notification 3884 notification pcep-session-local-overload-clear { 3885 description 3886 "This notification is sent when the local PCEP entity 3887 leaves overload state for a peer."; 3889 uses notification-instance-hdr; 3891 leaf overloaded { 3892 type boolean; 3893 description 3894 "If the local PCEP entity has informed the peer 3895 that it is currently overloaded, then this is set 3896 to true. Otherwise, it is set to false."; 3897 } 3898 } //notification 3900 notification pcep-session-peer-overload { 3901 description 3902 "This notification is sent when a peer enters overload 3903 state."; 3905 uses notification-instance-hdr; 3907 uses notification-session-hdr; 3909 leaf peer-overloaded { 3910 type boolean; 3911 description 3912 "If the peer has informed the local PCEP entity that 3913 it is currently overloaded, then this is set to true. 3914 Otherwise, it is set to false."; 3915 } 3917 leaf peer-overload-time { 3918 type uint32; 3919 units "seconds"; 3920 must "(../peer-overloaded = true or " + 3921 "(../peer-overloaded != true and " + 3922 "peer-overload-time = 0))" { 3923 error-message 3924 "Invalid peer-overload-time"; 3925 description 3926 "This field is only used if 3927 peer-overloaded is set to true. 3928 Otherwise, it is not used and MUST 3929 be set to zero."; 3930 } 3931 description 3932 "The interval of time that is remaining until the 3933 peer will cease to be overloaded. If it is not known 3934 how long the peer will stay in overloaded state, this 3935 leaf is set to zero."; 3936 } 3937 } //notification 3939 notification pcep-session-peer-overload-clear { 3940 description 3941 "This notification is sent when a peer leaves overload 3942 state."; 3944 uses notification-instance-hdr; 3946 leaf peer-overloaded { 3947 type boolean; 3948 description 3949 "If the peer has informed the local PCEP entity that 3950 it is currently overloaded, then this is set to true. 3951 Otherwise, it is set to false."; 3952 } 3953 } //notification 3954 }//module 3956 3958 9. Security Considerations 3960 The YANG module defined in this memo is designed to be accessed via 3961 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 3962 secure transport layer and the mandatory-to-implement secure 3963 transport is SSH [RFC6242]. The NETCONF access control model 3964 [RFC6536] provides the means to restrict access for particular 3965 NETCONF users to a pre-configured subset of all available NETCONF 3966 protocol operations and content. 3968 There are a number of data nodes defined in the YANG module which are 3969 writable/creatable/deletable (i.e., config true, which is the 3970 default). These data nodes may be considered sensitive or vulnerable 3971 in some network environments. Write operations (e.g., ) 3972 to these data nodes without proper protection can have a negative 3973 effect on network operations. 3975 TBD: List specific Subtrees and data nodes and their sensitivity/ 3976 vulnerability. 3978 10. Manageability Considerations 3980 10.1. Control of Function and Policy 3982 10.2. Information and Data Models 3984 10.3. Liveness Detection and Monitoring 3986 10.4. Verify Correct Operations 3988 10.5. Requirements On Other Protocols 3990 10.6. Impact On Network Operations 3992 11. IANA Considerations 3994 This document registers a URI in the "IETF XML Registry" [RFC3688]. 3995 Following the format in RFC 3688, the following registration has been 3996 made. 3998 URI: urn:ietf:params:xml:ns:yang:ietf-pcep 4000 Registrant Contact: The PCE WG of the IETF. 4002 XML: N/A; the requested URI is an XML namespace. 4004 This document registers a YANG module in the "YANG Module Names" 4005 registry [RFC6020]. 4007 Name: ietf-pcep 4008 Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep 4009 Prefix: pcep 4010 Reference: This I-D 4012 12. Acknowledgements 4014 The initial document is based on the PCEP MIB [RFC7420]. Further 4015 this document structure is based on Routing Yang Module 4016 [I-D.ietf-netmod-routing-cfg]. We would like to thank the authors of 4017 aforementioned documents. 4019 13. References 4021 13.1. Normative References 4023 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 4024 Requirement Levels", BCP 14, RFC 2119, 4025 DOI 10.17487/RFC2119, March 1997, 4026 . 4028 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 4029 DOI 10.17487/RFC3688, January 2004, 4030 . 4032 [RFC5440] Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation 4033 Element (PCE) Communication Protocol (PCEP)", RFC 5440, 4034 DOI 10.17487/RFC5440, March 2009, 4035 . 4037 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 4038 the Network Configuration Protocol (NETCONF)", RFC 6020, 4039 DOI 10.17487/RFC6020, October 2010, 4040 . 4042 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 4043 RFC 6991, DOI 10.17487/RFC6991, July 2013, 4044 . 4046 [I-D.ietf-pce-stateful-pce] 4047 Crabbe, E., Minei, I., Medved, J., and R. Varga, "PCEP 4048 Extensions for Stateful PCE", draft-ietf-pce-stateful- 4049 pce-16 (work in progress), September 2016. 4051 [I-D.ietf-pce-pce-initiated-lsp] 4052 Crabbe, E., Minei, I., Sivabalan, S., and R. Varga, "PCEP 4053 Extensions for PCE-initiated LSP Setup in a Stateful PCE 4054 Model", draft-ietf-pce-pce-initiated-lsp-07 (work in 4055 progress), July 2016. 4057 [I-D.ietf-pce-lsp-setup-type] 4058 Sivabalan, S., Medved, J., Minei, I., Crabbe, E., Varga, 4059 R., Tantsura, J., and J. Hardwick, "Conveying path setup 4060 type in PCEP messages", draft-ietf-pce-lsp-setup-type-03 4061 (work in progress), June 2015. 4063 [I-D.ietf-pce-segment-routing] 4064 Sivabalan, S., Medved, J., Filsfils, C., Crabbe, E., 4065 Lopez, V., Tantsura, J., Henderickx, W., and J. Hardwick, 4066 "PCEP Extensions for Segment Routing", draft-ietf-pce- 4067 segment-routing-07 (work in progress), March 2016. 4069 13.2. Informative References 4071 [RFC4655] Farrel, A., Vasseur, J., and J. Ash, "A Path Computation 4072 Element (PCE)-Based Architecture", RFC 4655, 4073 DOI 10.17487/RFC4655, August 2006, 4074 . 4076 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 4077 and A. Bierman, Ed., "Network Configuration Protocol 4078 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 4079 . 4081 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 4082 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 4083 . 4085 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 4086 Protocol (NETCONF) Access Control Model", RFC 6536, 4087 DOI 10.17487/RFC6536, March 2012, 4088 . 4090 [RFC7420] Koushik, A., Stephan, E., Zhao, Q., King, D., and J. 4091 Hardwick, "Path Computation Element Communication Protocol 4092 (PCEP) Management Information Base (MIB) Module", 4093 RFC 7420, DOI 10.17487/RFC7420, December 2014, 4094 . 4096 [I-D.ietf-netmod-routing-cfg] 4097 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 4098 Management", draft-ietf-netmod-routing-cfg-23 (work in 4099 progress), August 2016. 4101 [I-D.ietf-netmod-rfc6087bis] 4102 Bierman, A., "Guidelines for Authors and Reviewers of YANG 4103 Data Model Documents", draft-ietf-netmod-rfc6087bis-08 4104 (work in progress), September 2016. 4106 [I-D.ietf-teas-yang-te] 4107 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., 4108 Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data 4109 Model for Traffic Engineering Tunnels and Interfaces", 4110 draft-ietf-teas-yang-te-04 (work in progress), July 2016. 4112 Appendix A. Contributor Addresses 4114 Rohit Pobbathi 4115 Huawei Technologies 4116 Divyashree Techno Park, Whitefield 4117 Bangalore, Karnataka 560066 4118 India 4120 EMail: rohit.pobbathi@huawei.com 4122 Vinod KumarS 4123 Huawei Technologies 4124 Divyashree Techno Park, Whitefield 4125 Bangalore, Karnataka 560066 4126 India 4128 EMail: vinods.kumar@huawei.com 4130 Zafar Ali 4131 Cisco Systems 4132 Canada 4134 EMail: zali@cisco.com 4136 Xufeng Liu 4137 Ericsson 4138 1595 Spring Hill Road, Suite 500 4139 Vienna, VA 22182 4140 USA 4142 EMail: xufeng.liu@ericsson.com 4144 Young Lee 4145 Huawei Technologies 4146 5340 Legacy Drive, Building 3 4147 Plano, TX 75023, USA 4149 Phone: (469) 277-5838 4150 EMail: leeyoung@huawei.com 4152 Udayasree Palle 4153 Huawei Technologies 4154 Divyashree Techno Park, Whitefield 4155 Bangalore, Karnataka 560066 4156 India 4158 EMail: udayasree.palle@huawei.com 4159 Xian Zhang 4160 Huawei Technologies 4161 Bantian, Longgang District 4162 Shenzhen 518129 4163 P.R.China 4165 EMail: zhang.xian@huawei.com 4167 Avantika 4168 Huawei Technologies 4169 Divyashree Techno Park, Whitefield 4170 Bangalore, Karnataka 560066 4171 India 4173 EMail: avantika.sushilkumar@huawei.com 4175 Authors' Addresses 4177 Dhruv Dhody (editor) 4178 Huawei Technologies 4179 Divyashree Techno Park, Whitefield 4180 Bangalore, Karnataka 560066 4181 India 4183 EMail: dhruv.ietf@gmail.com 4185 Jonathan Hardwick 4186 Metaswitch 4187 100 Church Street 4188 Enfield EN2 6BQ 4189 UK 4191 EMail: jonathan.hardwick@metaswitch.com 4193 Vishnu Pavan Beeram 4194 Juniper Networks 4195 USA 4197 EMail: vbeeram@juniper.net 4199 Jeff Tantsura 4200 USA 4202 EMail: jefftant@gmail.com