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