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