draft-ietf-pce-pcep-yang-01.txt   draft-ietf-pce-pcep-yang-02.txt 
PCE Working Group D. Dhody, Ed. PCE Working Group D. Dhody, Ed.
Internet-Draft Huawei Technologies Internet-Draft Huawei Technologies
Intended status: Standards Track J. Hardwick Intended status: Standards Track J. Hardwick
Expires: April 30, 2017 Metaswitch Expires: September 13, 2017 Metaswitch
V. Beeram V. Beeram
Juniper Networks Juniper Networks
J. Tantsura J. Tantsura
October 27, 2016 March 12, 2017
A YANG Data Model for Path Computation Element Communications Protocol A YANG Data Model for Path Computation Element Communications Protocol
(PCEP) (PCEP)
draft-ietf-pce-pcep-yang-01 draft-ietf-pce-pcep-yang-02
Abstract Abstract
This document defines a YANG data model for the management of Path This document defines a YANG data model for the management of Path
Computation Element communications Protocol (PCEP) for communications Computation Element communications Protocol (PCEP) for communications
between a Path Computation Client (PCC) and a Path Computation between a Path Computation Client (PCC) and a Path Computation
Element (PCE), or between two PCEs. The data model includes Element (PCE), or between two PCEs. The data model includes
configuration data and state data (status information and counters configuration data and state data (status information and counters
for the collection of statistics). for the collection of statistics).
skipping to change at page 1, line 40 skipping to change at page 1, line 40
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 30, 2017. This Internet-Draft will expire on September 13, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3
3. Terminology and Notation . . . . . . . . . . . . . . . . . . 3 3. Terminology and Notation . . . . . . . . . . . . . . . . . . 3
3.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 3.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4
3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5 3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5
4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 5 4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 6
5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 6 5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 6
5.1. The Entity . . . . . . . . . . . . . . . . . . . . . . . 19 5.1. The Entity . . . . . . . . . . . . . . . . . . . . . . . 17
5.2. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 19 5.2. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 17
5.3. The Session Lists . . . . . . . . . . . . . . . . . . . . 20 5.3. The Session Lists . . . . . . . . . . . . . . . . . . . . 18
5.4. Notifications . . . . . . . . . . . . . . . . . . . . . . 20 5.4. Notifications . . . . . . . . . . . . . . . . . . . . . . 18
6. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 20 5.5. RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 21 6. The Design of PCEP Statistics Data Model . . . . . . . . . . 19
7. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 21 7. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 22
7.1. The PCE-Initiated LSP . . . . . . . . . . . . . . . . . . 21 7.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 22
7.2. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 21 8. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 22
8. PCEP YANG Module . . . . . . . . . . . . . . . . . . . . . . 22 8.1. The PCE-Initiated LSP . . . . . . . . . . . . . . . . . . 23
9. Security Considerations . . . . . . . . . . . . . . . . . . . 94 8.2. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 23
10. Manageability Considerations . . . . . . . . . . . . . . . . 94 9. PCEP YANG Modules . . . . . . . . . . . . . . . . . . . . . . 23
10.1. Control of Function and Policy . . . . . . . . . . . . . 94 9.1. ietf-pcep module . . . . . . . . . . . . . . . . . . . . 23
10.2. Information and Data Models . . . . . . . . . . . . . . 94 9.2. ietf-pcep-stats module . . . . . . . . . . . . . . . . . 83
10.3. Liveness Detection and Monitoring . . . . . . . . . . . 94 10. Security Considerations . . . . . . . . . . . . . . . . . . . 103
10.4. Verify Correct Operations . . . . . . . . . . . . . . . 94 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 104
10.5. Requirements On Other Protocols . . . . . . . . . . . . 94 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 105
10.6. Impact On Network Operations . . . . . . . . . . . . . . 94 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 105
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 94 13.1. Normative References . . . . . . . . . . . . . . . . . . 105
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 95 13.2. Informative References . . . . . . . . . . . . . . . . . 106
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 95 Appendix A. Contributor Addresses . . . . . . . . . . . . . . . 108
13.1. Normative References . . . . . . . . . . . . . . . . . . 95 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 109
13.2. Informative References . . . . . . . . . . . . . . . . . 96
Appendix A. Contributor Addresses . . . . . . . . . . . . . . . 98
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 99
1. Introduction 1. Introduction
The Path Computation Element (PCE) defined in [RFC4655] is an entity The Path Computation Element (PCE) defined in [RFC4655] is an entity
that is capable of computing a network path or route based on a that is capable of computing a network path or route based on a
network graph, and applying computational constraints. A Path network graph, and applying computational constraints. A Path
Computation Client (PCC) may make requests to a PCE for paths to be Computation Client (PCC) may make requests to a PCE for paths to be
computed. computed.
PCEP is the communication protocol between a PCC and PCE and is PCEP is the communication protocol between a PCC and PCE and is
skipping to change at page 4, line 38 skipping to change at page 4, line 36
o Path Setup Type (PST). o Path Setup Type (PST).
[I-D.ietf-pce-segment-routing] : [I-D.ietf-pce-segment-routing] :
o Segment Routing (SR). o Segment Routing (SR).
3.1. Tree Diagrams 3.1. Tree Diagrams
A graphical representation of the complete data tree is presented in A graphical representation of the complete data tree is presented in
Section 5. The meaning of the symbols in these diagrams is as Section 5. The meaning of the symbols in these diagrams is as
follows and as per [I-D.ietf-netmod-rfc6087bis]: follows and as per [I-D.ietf-netmod-rfc6087bis]. Each node is
printed as:
o Brackets "[" and "]" enclose list keys. <status> <flags> <name> <opts> <type> <if-features>
o Abbreviations before data node names: "rw" means configuration <status> is one of:
(read-write) and "ro" state data (read-only). + for current
x for deprecated
o for obsolete
o Symbols after data node names: "?" means an optional node, "!" <flags> is one of:
means a presence container, and "*" denotes a list and leaf-list. rw for configuration data
ro for non-configuration data
-x for rpcs and actions
-n for notifications
o Parentheses enclose choice and case nodes, and case nodes are also <name> is the name of the node
marked with a colon (":"). (<name>) means that the node is a choice node
:(<name>) means that the node is a case node
o Ellipsis ("...") stands for contents of subtrees that are not If the node is augmented into the tree from another module,
shown. its name is printed as <prefix>:<name>.
<opts> is one of:
? for an optional leaf, choice, anydata or anyxml
! for a presence container
* for a leaf-list or list
[<keys>] for a list's keys
<type> is the name of the type for leafs and leaf-lists
If the type is a leafref, the type is printed as
"-> TARGET", where TARGET is either the leafref path,
with prefixed removed if possible.
<if-features> is the list of features this node depends on,
printed within curly brackets and a question mark "{...}?
3.2. Prefixes in Data Node Names 3.2. Prefixes in Data Node Names
In this document, names of data nodes and other data model objects In this document, names of data nodes and other data model objects
are often used without a prefix, as long as it is clear from the are often used without a prefix, as long as it is clear from the
context in which YANG module each name is defined. Otherwise, names context in which YANG module each name is defined. Otherwise, names
are prefixed using the standard prefix associated with the are prefixed using the standard prefix associated with the
corresponding YANG module, as shown in Table 1. corresponding YANG module, as shown in Table 1.
+-----------+-----------------+---------------------------------+ +-----------+------------------+---------------------------------+
| Prefix | YANG module | Reference | | Prefix | YANG module | Reference |
+-----------+-----------------+---------------------------------+ +-----------+------------------+---------------------------------+
| yang | ietf-yang-types | [RFC6991] | | yang | ietf-yang-types | [RFC6991] |
| inet | ietf-inet-types | [RFC6991] | | inet | ietf-inet-types | [RFC6991] |
| te | ietf-te | [I-D.ietf-teas-yang-te] | | te | ietf-te | [I-D.ietf-teas-yang-te] |
| te-types | ietf-te-types | [I-D.ietf-teas-yang-te] | | te-types | ietf-te-types | [I-D.ietf-teas-yang-te] |
| key-chain | ietf-key-chain | [I-D.ietf-rtgwg-yang-key-chain] | | key-chain | ietf-key-chain | [I-D.ietf-rtgwg-yang-key-chain] |
+-----------+-----------------+---------------------------------+ | nacm | ietf-netconf-acm | [RFC6536] |
+-----------+------------------+---------------------------------+
Table 1: Prefixes and corresponding YANG modules Table 1: Prefixes and corresponding YANG modules
4. Objectives 4. Objectives
This section describes some of the design objectives for the model: This section describes some of the design objectives for the model:
o In case of existing implementations, it needs to map the data o In case of existing implementations, it needs to map the data
model defined in this document to their proprietary native data model defined in this document to their proprietary native data
model. To facilitate such mappings, the data model should be model. To facilitate such mappings, the data model should be
skipping to change at page 5, line 44 skipping to change at page 6, line 37
o The data model should be suitable for new implementations to use o The data model should be suitable for new implementations to use
as is. as is.
o Mapping to the PCEP MIB Module should be clear. o Mapping to the PCEP MIB Module should be clear.
o The data model should allow for static configurations of peers. o The data model should allow for static configurations of peers.
o The data model should include read-only counters in order to o The data model should include read-only counters in order to
gather statistics for sent and received PCEP messages, received gather statistics for sent and received PCEP messages, received
messages with errors, and messages that could not be sent due to messages with errors, and messages that could not be sent due to
errors. errors. This could be in a separate model which augments the base
data model.
o It should be fairly straightforward to augment the base data model o It should be fairly straightforward to augment the base data model
for advanced PCE features. for advanced PCE features.
5. The Design of PCEP Data Model 5. The Design of PCEP Data Model
The module, "ietf-pcep", defines the basic components of a PCE The module, "ietf-pcep", defines the basic components of a PCE
speaker. speaker.
module: ietf-pcep module: ietf-pcep
+--rw pcep! +--rw pcep!
| +--rw entity | +--rw entity
| +--rw addr inet:ip-address | +--rw addr inet:ip-address
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw role pcep-role | +--rw role pcep-role
| +--rw description? string | +--rw description? string
| +--rw speaker-entity-id? string {stateful-sync-opt}? | +--rw speaker-entity-id? string
| +--rw domain | | {stateful-sync-opt}?
| | +--rw domain* [domain-type domain] | +--rw domain
| | +--rw domain-type domain-type | | +--rw domain* [domain-type domain]
| | +--rw domain domain | | +--rw domain-type domain-type
| +--rw capability | | +--rw domain domain
| | +--rw gmpls? boolean {gmpls}? | +--rw capability
| | +--rw bi-dir? boolean | | +--rw gmpls? boolean {gmpls}?
| | +--rw diverse? boolean | | +--rw bi-dir? boolean
| | +--rw load-balance? boolean | | +--rw diverse? boolean
| | +--rw synchronize? boolean {svec}? | | +--rw load-balance? boolean
| | +--rw objective-function? boolean {objective-function}? | | +--rw synchronize? boolean {svec}?
| | +--rw add-path-constraint? boolean | | +--rw objective-function? boolean
| | +--rw prioritization? boolean | | | {objective-function}?
| | +--rw multi-request? boolean | | +--rw add-path-constraint? boolean
| | +--rw gco? boolean {gco}? | | +--rw prioritization? boolean
| | +--rw p2mp? boolean {p2mp}? | | +--rw multi-request? boolean
| | +--rw stateful {stateful}? | | +--rw gco? boolean {gco}?
| | | +--rw enabled? boolean | | +--rw p2mp? boolean {p2mp}?
| | | +--rw active? boolean | | +--rw stateful {stateful}?
| | | +--rw pce-initiated? boolean {pce-initiated}? | | | +--rw enabled? boolean
| | | +--rw include-db-ver? boolean {stateful-sync-opt}? | | | +--rw active? boolean
| | | +--rw trigger-resync? boolean {stateful-sync-opt}? | | | +--rw pce-initiated? boolean
| | | +--rw trigger-initial-sync? boolean {stateful-sync-opt}? | | | | {pce-initiated}?
| | | +--rw incremental-sync? boolean {stateful-sync-opt}? | | | +--rw include-db-ver? boolean
| | +--rw sr {sr}? | | | | {stateful-sync-opt}?
| | +--rw enabled? boolean | | | +--rw trigger-resync? boolean
| +--rw pce-info | | | | {stateful-sync-opt}?
| | +--rw scope | | | +--rw trigger-initial-sync? boolean
| | | +--rw intra-area-scope? boolean | | | | {stateful-sync-opt}?
| | | +--rw intra-area-pref? uint8 | | | +--rw incremental-sync? boolean
| | | +--rw inter-area-scope? boolean | | | {stateful-sync-opt}?
| | | +--rw inter-area-scope-default? boolean | | +--rw sr {sr}?
| | | +--rw inter-area-pref? uint8 | | +--rw enabled? boolean
| | | +--rw inter-as-scope? boolean | +--rw pce-info
| | | +--rw inter-as-scope-default? boolean | | +--rw scope
| | | +--rw inter-as-pref? uint8 | | | +--rw intra-area-scope? boolean
| | | +--rw inter-layer-scope? boolean | | | +--rw intra-area-pref? uint8
| | | +--rw inter-layer-pref? uint8 | | | +--rw inter-area-scope? boolean
| | +--rw neigh-domains | | | +--rw inter-area-scope-default? boolean
| | | +--rw domain* [domain-type domain] | | | +--rw inter-area-pref? uint8
| | | +--rw domain-type domain-type | | | +--rw inter-as-scope? boolean
| | | +--rw domain domain | | | +--rw inter-as-scope-default? boolean
| | +--rw path-key {path-key}? | | | +--rw inter-as-pref? uint8
| | +--rw enabled? boolean | | | +--rw inter-layer-scope? boolean
| | +--rw discard-timer? uint32 | | | +--rw inter-layer-pref? uint8
| | +--rw reuse-time? uint32 | | +--rw neigh-domains
| | +--rw pce-id? inet:ip-address | | | +--rw domain* [domain-type domain]
| +--rw (auth-type-selection)? | | | +--rw domain-type domain-type
| | +--:(auth-key-chain) | | | +--rw domain domain
| | | +--rw key-chain? key-chain:key-chain-ref | | +--rw path-key {path-key}?
| | +--:(auth-key) | | +--rw enabled? boolean
| | | +--rw key? string | | +--rw discard-timer? uint32
| | | +--rw crypto-algorithm | | +--rw reuse-time? uint32
| | | +--rw (algorithm)? | | +--rw pce-id? inet:ip-address
| | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? | +--rw (auth-type-selection)?
| | | | +--rw hmac-sha1-12? empty | | +--:(auth-key-chain)
| | | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}? | | | +--rw key-chain?
| | | | +--rw aes-cmac-prf-128? empty | | | key-chain:key-chain-ref
| | | +--:(md5) | | +--:(auth-key)
| | | | +--rw md5? empty | | | +--rw crypto-algorithm identityref
| | | +--:(sha-1) | | | +--rw key-string
| | | | +--rw sha-1? empty | | | +--rw (key-string-style)?
| | | +--:(hmac-sha-1) | | | +--:(keystring)
| | | | +--rw hmac-sha-1? empty | | | | +--rw keystring? string
| | | +--:(hmac-sha-256) | | | +--:(hexadecimal)
| | | | +--rw hmac-sha-256? empty | | | {key-chain:hex-key-string}?
| | | +--:(hmac-sha-384) | | | +--rw hexadecimal-string? yang:hex-string
| | | | +--rw hmac-sha-384? empty | | +--:(auth-tls) {tls}?
| | | +--:(hmac-sha-512) | | +--rw tls
| | | | +--rw hmac-sha-512? empty | +--rw connect-timer? uint32
| | | +--:(clear-text) {clear-text}? | +--rw connect-max-retry? uint32
| | | | +--rw clear-text? empty | +--rw init-backoff-timer? uint32
| | | +--:(replay-protection-only) {replay-protection-only}? | +--rw max-backoff-timer? uint32
| | | +--rw replay-protection-only? empty | +--rw open-wait-timer? uint32
| | +--:(auth-tls) {tls}? | +--rw keep-wait-timer? uint32
| | +--rw tls | +--rw keep-alive-timer? uint32
| +--rw connect-timer? uint32 | +--rw dead-timer? uint32
| +--rw connect-max-retry? uint32 | +--rw allow-negotiation? boolean
| +--rw init-backoff-timer? uint32 | +--rw max-keep-alive-timer? uint32
| +--rw max-backoff-timer? uint32 | +--rw max-dead-timer? uint32
| +--rw open-wait-timer? uint32 | +--rw min-keep-alive-timer? uint32
| +--rw keep-wait-timer? uint32 | +--rw min-dead-timer? uint32
| +--rw keep-alive-timer? uint32 | +--rw sync-timer? uint32 {svec}?
| +--rw dead-timer? uint32 | +--rw request-timer? uint32
| +--rw allow-negotiation? boolean | +--rw max-sessions? uint32
| +--rw max-keep-alive-timer? uint32 | +--rw max-unknown-reqs? uint32
| +--rw max-dead-timer? uint32 | +--rw max-unknown-msgs? uint32
| +--rw min-keep-alive-timer? uint32 | +--rw pcep-notification-max-rate uint32
| +--rw min-dead-timer? uint32 | +--rw stateful-parameter {stateful}?
| +--rw sync-timer? uint32 {svec}? | | +--rw state-timeout? uint32
| +--rw request-timer? uint32 | | +--rw redelegation-timeout? uint32
| +--rw max-sessions? uint32 | | +--rw rpt-non-pcep-lsp? boolean
| +--rw max-unknown-reqs? uint32 | +--rw of-list {objective-function}?
| +--rw max-unknown-msgs? uint32 | | +--rw objective-function* [of]
| +--rw pcep-notification-max-rate uint32 | | +--rw of objective-function
| +--rw stateful-parameter {stateful}? | +--rw peers
| | +--rw state-timeout? uint32 | +--rw peer* [addr]
| | +--rw redelegation-timeout? uint32 | +--rw addr inet:ip-address
| | +--rw rpt-non-pcep-lsp? boolean | +--rw description? string
| +--rw of-list {objective-function}? | +--rw domain
| | +--rw objective-function* [of] | | +--rw domain* [domain-type domain]
| | +--rw of objective-function | | +--rw domain-type domain-type
| +--rw peers | | +--rw domain domain
| +--rw peer* [addr] | +--rw capability
| +--rw addr inet:ip-address | | +--rw gmpls? boolean {gmpls}?
| +--rw description? string | | +--rw bi-dir? boolean
| +--rw domain | | +--rw diverse? boolean
| | +--rw domain* [domain-type domain] | | +--rw load-balance? boolean
| | +--rw domain-type domain-type | | +--rw synchronize? boolean {svec}?
| | +--rw domain domain | | +--rw objective-function? boolean
| +--rw capability | | | {objective-function}?
| | +--rw gmpls? boolean {gmpls}? | | +--rw add-path-constraint? boolean
| | +--rw bi-dir? boolean | | +--rw prioritization? boolean
| | +--rw diverse? boolean | | +--rw multi-request? boolean
| | +--rw load-balance? boolean | | +--rw gco? boolean {gco}?
| | +--rw synchronize? boolean {svec}? | | +--rw p2mp? boolean {p2mp}?
| | +--rw objective-function? boolean {objective-function}? | | +--rw stateful {stateful}?
| | +--rw add-path-constraint? boolean | | | +--rw enabled? boolean
| | +--rw prioritization? boolean | | | +--rw active? boolean
| | +--rw multi-request? boolean | | | +--rw pce-initiated? boolean
| | +--rw gco? boolean {gco}? | | | | {pce-initiated}?
| | +--rw p2mp? boolean {p2mp}? | | | +--rw include-db-ver? boolean
| | +--rw stateful {stateful}? | | | | {stateful-sync-opt}?
| | | +--rw enabled? boolean | | | +--rw trigger-resync? boolean
| | | +--rw active? boolean | | | | {stateful-sync-opt}?
| | | +--rw pce-initiated? boolean {pce-initiated}? | | | +--rw trigger-initial-sync? boolean
| | | +--rw include-db-ver? boolean {stateful-sync-opt}? | | | | {stateful-sync-opt}?
| | | +--rw trigger-resync? boolean {stateful-sync-opt}? | | | +--rw incremental-sync? boolean
| | | +--rw trigger-initial-sync? boolean {stateful-sync-opt}? | | | {stateful-sync-opt}?
| | | +--rw incremental-sync? boolean {stateful-sync-opt}? | | +--rw sr {sr}?
| | +--rw sr {sr}? | | +--rw enabled? boolean
| | +--rw enabled? boolean | +--rw scope
| +--rw scope | | +--rw intra-area-scope? boolean
| | +--rw intra-area-scope? boolean | | +--rw intra-area-pref? uint8
| | +--rw intra-area-pref? uint8 | | +--rw inter-area-scope? boolean
| | +--rw inter-area-scope? boolean | | +--rw inter-area-scope-default? boolean
| | +--rw inter-area-scope-default? boolean | | +--rw inter-area-pref? uint8
| | +--rw inter-area-pref? uint8 | | +--rw inter-as-scope? boolean
| | +--rw inter-as-scope? boolean | | +--rw inter-as-scope-default? boolean
| | +--rw inter-as-scope-default? boolean | | +--rw inter-as-pref? uint8
| | +--rw inter-as-pref? uint8 | | +--rw inter-layer-scope? boolean
| | +--rw inter-layer-scope? boolean | | +--rw inter-layer-pref? uint8
| | +--rw inter-layer-pref? uint8 | +--rw neigh-domains
| +--rw neigh-domains | | +--rw domain* [domain-type domain]
| | +--rw domain* [domain-type domain] | | +--rw domain-type domain-type
| | +--rw domain-type domain-type | | +--rw domain domain
| | +--rw domain domain | +--rw delegation-pref? uint8 {stateful}?
| +--rw delegation-pref? uint8 {stateful}? | +--rw (auth-type-selection)?
| +--rw (auth-type-selection)? | +--:(auth-key-chain)
| | +--:(auth-key-chain) | | +--rw key-chain?
| | | +--rw key-chain? key-chain:key-chain-ref | | key-chain:key-chain-ref
| | +--:(auth-key) | +--:(auth-key)
| | | +--rw key? string | | +--rw crypto-algorithm identityref
| | | +--rw crypto-algorithm | | +--rw key-string
| | | +--rw (algorithm)? | | +--rw (key-string-style)?
| | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? | | +--:(keystring)
| | | | +--rw hmac-sha1-12? empty | | | +--rw keystring? string
| | | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}? | | +--:(hexadecimal)
| | | | +--rw aes-cmac-prf-128? empty | | {key-chain:hex-key-string}?
| | | +--:(md5) | | +--rw hexadecimal-string?
| | | | +--rw md5? empty | | yang:hex-string
| | | +--:(sha-1) | +--:(auth-tls) {tls}?
| | | | +--rw sha-1? empty | +--rw tls
| | | +--:(hmac-sha-1) +--ro pcep-state
| | | | +--rw hmac-sha-1? empty +--ro entity
| | | +--:(hmac-sha-256) +--ro addr? inet:ip-address
| | | | +--rw hmac-sha-256? empty +--ro index? uint32
| | | +--:(hmac-sha-384) +--ro admin-status? pcep-admin-status
| | | | +--rw hmac-sha-384? empty +--ro oper-status? pcep-admin-status
| | | +--:(hmac-sha-512) +--ro role? pcep-role
| | | | +--rw hmac-sha-512? empty +--ro description? string
| | | +--:(clear-text) {clear-text}? +--ro speaker-entity-id? string
| | | | +--rw clear-text? empty | {stateful-sync-opt}?
| | | +--:(replay-protection-only) {replay-protection-only}? +--ro domain
| | | +--rw replay-protection-only? empty | +--ro domain* [domain-type domain]
| | +--:(auth-tls) {tls}? | +--ro domain-type domain-type
| | +--rw tls | +--ro domain domain
| +--rw of-list {objective-function}? +--ro capability
| +--rw objective-function* [of] | +--ro gmpls? boolean {gmpls}?
| +--rw of objective-function | +--ro bi-dir? boolean
+--ro pcep-state | +--ro diverse? boolean
+--ro entity | +--ro load-balance? boolean
+--ro addr? inet:ip-address | +--ro synchronize? boolean {svec}?
+--ro index? uint32 | +--ro objective-function? boolean
+--ro admin-status? pcep-admin-status | | {objective-function}?
+--ro oper-status? pcep-admin-status | +--ro add-path-constraint? boolean
+--ro role? pcep-role | +--ro prioritization? boolean
+--ro description? string | +--ro multi-request? boolean
+--ro speaker-entity-id? string {stateful-sync-opt}? | +--ro gco? boolean {gco}?
+--ro domain | +--ro p2mp? boolean {p2mp}?
| +--ro domain* [domain-type domain] | +--ro stateful {stateful}?
| +--ro domain-type domain-type | | +--ro enabled? boolean
| +--ro domain domain | | +--ro active? boolean
+--ro capability | | +--ro pce-initiated? boolean
| +--ro gmpls? boolean {gmpls}? | | | {pce-initiated}?
| +--ro bi-dir? boolean | | +--ro include-db-ver? boolean
| +--ro diverse? boolean | | | {stateful-sync-opt}?
| +--ro load-balance? boolean | | +--ro trigger-resync? boolean
| +--ro synchronize? boolean {svec}? | | | {stateful-sync-opt}?
| +--ro objective-function? boolean {objective-function}? | | +--ro trigger-initial-sync? boolean
| +--ro add-path-constraint? boolean | | | {stateful-sync-opt}?
| +--ro prioritization? boolean | | +--ro incremental-sync? boolean
| +--ro multi-request? boolean | | {stateful-sync-opt}?
| +--ro gco? boolean {gco}? | +--ro sr {sr}?
| +--ro p2mp? boolean {p2mp}? | +--ro enabled? boolean
| +--ro stateful {stateful}? +--ro pce-info
| | +--ro enabled? boolean | +--ro scope
| | +--ro active? boolean | | +--ro intra-area-scope? boolean
| | +--ro pce-initiated? boolean {pce-initiated}? | | +--ro intra-area-pref? uint8
| | +--ro include-db-ver? boolean {stateful-sync-opt}? | | +--ro inter-area-scope? boolean
| | +--ro trigger-resync? boolean {stateful-sync-opt}? | | +--ro inter-area-scope-default? boolean
| | +--ro trigger-initial-sync? boolean {stateful-sync-opt}? | | +--ro inter-area-pref? uint8
| | +--ro incremental-sync? boolean {stateful-sync-opt}? | | +--ro inter-as-scope? boolean
| +--ro sr {sr}? | | +--ro inter-as-scope-default? boolean
| +--ro enabled? boolean | | +--ro inter-as-pref? uint8
+--ro pce-info | | +--ro inter-layer-scope? boolean
| +--ro scope | | +--ro inter-layer-pref? uint8
| | +--ro intra-area-scope? boolean | +--ro neigh-domains
| | +--ro intra-area-pref? uint8 | | +--ro domain* [domain-type domain]
| | +--ro inter-area-scope? boolean | | +--ro domain-type domain-type
| | +--ro inter-area-scope-default? boolean | | +--ro domain domain
| | +--ro inter-area-pref? uint8 | +--ro path-key {path-key}?
| | +--ro inter-as-scope? boolean | +--ro enabled? boolean
| | +--ro inter-as-scope-default? boolean | +--ro discard-timer? uint32
| | +--ro inter-as-pref? uint8 | +--ro reuse-time? uint32
| | +--ro inter-layer-scope? boolean | +--ro pce-id? inet:ip-address
| | +--ro inter-layer-pref? uint8 +--ro (auth-type-selection)?
| +--ro neigh-domains | +--:(auth-key-chain)
| | +--ro domain* [domain-type domain] | | +--ro key-chain?
| | +--ro domain-type domain-type | | key-chain:key-chain-ref
| | +--ro domain domain | +--:(auth-key)
| +--ro path-key {path-key}? | | +--ro crypto-algorithm identityref
| +--ro enabled? boolean | | +--ro key-string
| +--ro discard-timer? uint32 | | +--ro (key-string-style)?
| +--ro reuse-time? uint32 | | +--:(keystring)
| +--ro pce-id? inet:ip-address | | | +--ro keystring? string
+--ro (auth-type-selection)? | | +--:(hexadecimal)
| +--:(auth-key-chain) | | {key-chain:hex-key-string}?
| | +--ro key-chain? key-chain:key-chain-ref | | +--ro hexadecimal-string? yang:hex-string
| +--:(auth-key) | +--:(auth-tls) {tls}?
| | +--ro key? string | +--ro tls
| | +--ro crypto-algorithm +--ro connect-timer? uint32
| | +--ro (algorithm)? +--ro connect-max-retry? uint32
| | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? +--ro init-backoff-timer? uint32
| | | +--ro hmac-sha1-12? empty +--ro max-backoff-timer? uint32
| | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}? +--ro open-wait-timer? uint32
| | | +--ro aes-cmac-prf-128? empty +--ro keep-wait-timer? uint32
| | +--:(md5) +--ro keep-alive-timer? uint32
| | | +--ro md5? empty +--ro dead-timer? uint32
| | +--:(sha-1) +--ro allow-negotiation? boolean
| | | +--ro sha-1? empty +--ro max-keep-alive-timer? uint32
| | +--:(hmac-sha-1) +--ro max-dead-timer? uint32
| | | +--ro hmac-sha-1? empty +--ro min-keep-alive-timer? uint32
| | +--:(hmac-sha-256) +--ro min-dead-timer? uint32
| | | +--ro hmac-sha-256? empty +--ro sync-timer? uint32 {svec}?
| | +--:(hmac-sha-384) +--ro request-timer? uint32
| | | +--ro hmac-sha-384? empty +--ro max-sessions? uint32
| | +--:(hmac-sha-512) +--ro max-unknown-reqs? uint32
| | | +--ro hmac-sha-512? empty +--ro max-unknown-msgs? uint32
| | +--:(clear-text) {clear-text}? +--ro stateful-parameter {stateful}?
| | | +--ro clear-text? empty | +--ro state-timeout? uint32
| | +--:(replay-protection-only) {replay-protection-only}? | +--ro redelegation-timeout? uint32
| | +--ro replay-protection-only? empty | +--ro rpt-non-pcep-lsp? boolean
| +--:(auth-tls) {tls}? +--ro lsp-db {stateful}?
| +--ro tls | +--ro db-ver? uint64
+--ro connect-timer? uint32 | | {stateful-sync-opt}?
+--ro connect-max-retry? uint32 | +--ro association-list*
+--ro init-backoff-timer? uint32 | | [id source global-source extended-id]
+--ro max-backoff-timer? uint32 | | +--ro type? assoc-type
+--ro open-wait-timer? uint32 | | +--ro id uint16
+--ro keep-wait-timer? uint32 | | +--ro source inet:ip-address
+--ro keep-alive-timer? uint32 | | +--ro global-source uint32
+--ro dead-timer? uint32 | | +--ro extended-id string
+--ro allow-negotiation? boolean | | +--ro lsp* [plsp-id pcc-id]
+--ro max-keep-alive-timer? uint32 | | +--ro plsp-id leafref
+--ro max-dead-timer? uint32 | | +--ro pcc-id leafref
+--ro min-keep-alive-timer? uint32 | +--ro lsp* [plsp-id pcc-id]
+--ro min-dead-timer? uint32 | +--ro plsp-id uint32
+--ro sync-timer? uint32 {svec}? | +--ro pcc-id inet:ip-address
+--ro request-timer? uint32 | +--ro lsp-ref
+--ro max-sessions? uint32 | | +--ro source?
+--ro max-unknown-reqs? uint32 | | | -> /te:te/lsps-state/lsp/source
+--ro max-unknown-msgs? uint32 | | +--ro destination?
+--ro stateful-parameter {stateful}? | | | -> /te:te/lsps-state/lsp/destination
| +--ro state-timeout? uint32 | | +--ro tunnel-id?
| +--ro redelegation-timeout? uint32 | | | -> /te:te/lsps-state/lsp/tunnel-id
| +--ro rpt-non-pcep-lsp? boolean | | +--ro lsp-id?
+--ro lsp-db {stateful}? | | | -> /te:te/lsps-state/lsp/lsp-id
| +--ro db-ver? uint64 {stateful-sync-opt}? | | +--ro extended-tunnel-id? leafref
| +--ro association-list* [id source global-source extended-id] | | +--ro type?
| | +--ro type? assoc-type | | -> /te:te/lsps-state/lsp/type
| | +--ro id uint16 | +--ro admin-state? boolean
| | +--ro source inet:ip-address | +--ro operational-state? operational-state
| | +--ro global-source uint32 | +--ro delegated
| | +--ro extended-id string | | +--ro enabled? boolean
| | +--ro lsp* [plsp-id pcc-id] | | +--ro peer?
| | +--ro plsp-id -> /pcep-state/entity/lsp-db/lsp/plsp-id | | | -> /pcep-state/entity/peers/peer/addr
| | +--ro pcc-id -> /pcep-state/entity/lsp-db/lsp/pcc-id | | +--ro srp-id? uint32
| +--ro lsp* [plsp-id pcc-id] | +--ro initiation {pce-initiated}?
| +--ro plsp-id uint32 | | +--ro enabled? boolean
| +--ro pcc-id inet:ip-address | | +--ro peer?
| +--ro lsp-ref | | -> /pcep-state/entity/peers/peer/addr
| | +--ro source? -> /te:te/lsps-state/lsp/source | +--ro symbolic-path-name? string
| | +--ro destination? -> /te:te/lsps-state/lsp/destination | +--ro last-error? lsp-error
| | +--ro tunnel-id? -> /te:te/lsps-state/lsp/tunnel-id | +--ro pst? pst
| | +--ro lsp-id? -> /te:te/lsps-state/lsp/lsp-id | +--ro association-list*
| | +--ro extended-tunnel-id? -> /te:te/lsps-state/lsp/extended-tunnel-id | [id source global-source extended-id]
| | +--ro type? -> /te:te/lsps-state/lsp/type | +--ro id leafref
| +--ro admin-state? boolean | +--ro source leafref
| +--ro operational-state? operational-state | +--ro global-source leafref
| +--ro delegated | +--ro extended-id leafref
| | +--ro enabled? boolean +--ro path-keys {path-key}?
| | +--ro pce? -> /pcep-state/entity/peers/peer/addr | +--ro path-keys* [path-key]
| | +--ro srp-id? uint32 | +--ro path-key uint16
| +--ro initiation {pce-initiated}? | +--ro cps
| | +--ro enabled? boolean | | +--ro explicit-route-objects* [index]
| | +--ro pce? -> /pcep-state/entity/peers/peer/addr | | +--ro explicit-route-usage? identityref
| +--ro symbolic-path-name? string | | +--ro index uint32
| +--ro last-error? lsp-error | | +--ro (type)?
| +--ro pst? pst | | +--:(ip-address)
| +--ro association-list* [id source global-source extended-id] | | | +--ro ip-address-hop
| +--ro id -> /pcep-state/entity/lsp-db/association-list/id | | | +--ro address? inet:ip-address
| +--ro source -> /pcep-state/entity/lsp-db/association-list/source | | | +--ro hop-type? te-hop-type
| +--ro global-source -> /pcep-state/entity/lsp-db/association-list/global-source | | +--:(as-number)
| +--ro extended-id -> /pcep-state/entity/lsp-db/association-list/extended-id | | | +--ro as-number-hop
+--ro path-keys {path-key}? | | | +--ro as-number? binary
| +--ro path-keys* [path-key] | | | +--ro hop-type? te-hop-type
| +--ro path-key uint16 | | +--:(unnumbered-link)
| +--ro cps | | | +--ro unnumbered-hop
| | +--ro explicit-route-objects* [index] | | | +--ro router-id? inet:ip-address
| | +--ro index uint8 | | | +--ro interface-id? uint32
| | +--ro explicit-route-usage? identityref | | | +--ro hop-type? te-hop-type
| | +--ro (type)? | | +--:(label)
| | +--:(ipv4-address) | | | +--ro label-hop
| | | +--ro v4-address? inet:ipv4-address | | | +--ro value?
| | | +--ro v4-prefix-length? uint8 | | | rt-types:generalized-label
| | | +--ro v4-loose? boolean | | +--:(sid)
| | +--:(ipv6-address) | | +--ro sid-hop
| | | +--ro v6-address? inet:ipv6-address | | +--ro sid?
| | | +--ro v6-prefix-length? uint8 | | rt-types:generalized-label
| | | +--ro v6-loose? boolean | +--ro pcc-original?
| | +--:(as-number) | | -> /pcep-state/entity/peers/peer/addr
| | | +--ro as-number? uint16 | +--ro req-id? uint32
| | +--:(unnumbered-link) | +--ro retrieved? boolean
| | | +--ro router-id? inet:ip-address | +--ro pcc-retrieved?
| | | +--ro interface-id? uint32 | | -> /pcep-state/entity/peers/peer/addr
| | +--:(label) | +--ro creation-time? yang:timestamp
| | +--ro value? uint32 | +--ro discard-time? uint32
| +--ro pcc-original? -> /pcep-state/entity/peers/peer/addr | +--ro reuse-time? uint32
| +--ro req-id? uint32 +--ro of-list {objective-function}?
| +--ro retrieved? boolean | +--ro objective-function* [of]
| +--ro pcc-retrieved? -> /pcep-state/entity/peers/peer/addr | +--ro of objective-function
| +--ro creation-time? yang:timestamp +--ro peers
| +--ro discard-time? uint32 +--ro peer* [addr]
| +--ro reuse-time? uint32 +--ro addr inet:ip-address
+--ro of-list {objective-function}? +--ro role? pcep-role
| +--ro objective-function* [of] +--ro domain
| +--ro of objective-function | +--ro domain* [domain-type domain]
+--ro peers | +--ro domain-type domain-type
+--ro peer* [addr] | +--ro domain domain
+--ro addr inet:ip-address +--ro capability
+--ro role? pcep-role | +--ro gmpls? boolean {gmpls}?
+--ro domain | +--ro bi-dir? boolean
| +--ro domain* [domain-type domain] | +--ro diverse? boolean
| +--ro domain-type domain-type | +--ro load-balance? boolean
| +--ro domain domain | +--ro synchronize? boolean {svec}?
+--ro capability | +--ro objective-function? boolean
| +--ro gmpls? boolean {gmpls}? | | {objective-function}?
| +--ro bi-dir? boolean | +--ro add-path-constraint? boolean
| +--ro diverse? boolean | +--ro prioritization? boolean
| +--ro load-balance? boolean | +--ro multi-request? boolean
| +--ro synchronize? boolean {svec}? | +--ro gco? boolean {gco}?
| +--ro objective-function? boolean {objective-function}? | +--ro p2mp? boolean {p2mp}?
| +--ro add-path-constraint? boolean | +--ro stateful {stateful}?
| +--ro prioritization? boolean | | +--ro enabled? boolean
| +--ro multi-request? boolean | | +--ro active? boolean
| +--ro gco? boolean {gco}? | | +--ro pce-initiated? boolean
| +--ro p2mp? boolean {p2mp}? | | | {pce-initiated}?
| +--ro stateful {stateful}? | | +--ro include-db-ver? boolean
| | +--ro enabled? boolean | | | {stateful-sync-opt}?
| | +--ro active? boolean | | +--ro trigger-resync? boolean
| | +--ro pce-initiated? boolean {pce-initiated}? | | | {stateful-sync-opt}?
| | +--ro include-db-ver? boolean {stateful-sync-opt}? | | +--ro trigger-initial-sync? boolean
| | +--ro trigger-resync? boolean {stateful-sync-opt}? | | | {stateful-sync-opt}?
| | +--ro trigger-initial-sync? boolean {stateful-sync-opt}? | | +--ro incremental-sync? boolean
| | +--ro incremental-sync? boolean {stateful-sync-opt}? | | {stateful-sync-opt}?
| +--ro sr {sr}? | +--ro sr {sr}?
| +--ro enabled? boolean | +--ro enabled? boolean
+--ro pce-info +--ro pce-info
| +--ro scope | +--ro scope
| | +--ro intra-area-scope? boolean | | +--ro intra-area-scope? boolean
| | +--ro intra-area-pref? uint8 | | +--ro intra-area-pref? uint8
| | +--ro inter-area-scope? boolean | | +--ro inter-area-scope? boolean
| | +--ro inter-area-scope-default? boolean | | +--ro inter-area-scope-default? boolean
| | +--ro inter-area-pref? uint8 | | +--ro inter-area-pref? uint8
| | +--ro inter-as-scope? boolean | | +--ro inter-as-scope? boolean
| | +--ro inter-as-scope-default? boolean | | +--ro inter-as-scope-default? boolean
| | +--ro inter-as-pref? uint8 | | +--ro inter-as-pref? uint8
| | +--ro inter-layer-scope? boolean | | +--ro inter-layer-scope? boolean
| | +--ro inter-layer-pref? uint8 | | +--ro inter-layer-pref? uint8
| +--ro neigh-domains | +--ro neigh-domains
| +--ro domain* [domain-type domain] | +--ro domain* [domain-type domain]
| +--ro domain-type domain-type | +--ro domain-type domain-type
| +--ro domain domain | +--ro domain domain
+--ro delegation-pref? uint8 {stateful}? +--ro delegation-pref? uint8 {stateful}?
+--ro (auth-type-selection)? +--ro (auth-type-selection)?
| +--:(auth-key-chain) | +--:(auth-key-chain)
| | +--ro key-chain? key-chain:key-chain-ref | | +--ro key-chain?
| +--:(auth-key) | | key-chain:key-chain-ref
| | +--ro key? string | +--:(auth-key)
| | +--ro crypto-algorithm | | +--ro crypto-algorithm identityref
| | +--ro (algorithm)? | | +--ro key-string
| | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? | | +--ro (key-string-style)?
| | | +--ro hmac-sha1-12? empty | | +--:(keystring)
| | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}? | | | +--ro keystring? string
| | | +--ro aes-cmac-prf-128? empty | | +--:(hexadecimal)
| | +--:(md5) | | {key-chain:hex-key-string}?
| | | +--ro md5? empty | | +--ro hexadecimal-string?
| | +--:(sha-1) | | yang:hex-string
| | | +--ro sha-1? empty | +--:(auth-tls) {tls}?
| | +--:(hmac-sha-1) | +--ro tls
| | | +--ro hmac-sha-1? empty +--ro discontinuity-time? yang:timestamp
| | +--:(hmac-sha-256) +--ro initiate-session? boolean
| | | +--ro hmac-sha-256? empty +--ro session-exists? boolean
| | +--:(hmac-sha-384) +--ro session-up-time? yang:timestamp
| | | +--ro hmac-sha-384? empty +--ro session-fail-time? yang:timestamp
| | +--:(hmac-sha-512) +--ro session-fail-up-time? yang:timestamp
| | | +--ro hmac-sha-512? empty +--ro sessions
| | +--:(clear-text) {clear-text}? +--ro session* [initiator]
| | | +--ro clear-text? empty +--ro initiator pcep-initiator
| | +--:(replay-protection-only) {replay-protection-only}? +--ro role? -> ../../../role
| | +--ro replay-protection-only? empty +--ro state-last-change? yang:timestamp
| +--:(auth-tls) {tls}? +--ro state? pcep-sess-state
| +--ro tls +--ro session-creation? yang:timestamp
+--ro of-list {objective-function}? +--ro connect-retry? yang:counter32
| +--ro objective-function* [of] +--ro local-id? uint32
| +--ro of objective-function +--ro remote-id? uint32
+--ro discontinuity-time? yang:timestamp +--ro keepalive-timer? uint32
+--ro initiate-session? boolean +--ro peer-keepalive-timer? uint32
+--ro session-exists? boolean +--ro dead-timer? uint32
+--ro num-sess-setup-ok? yang:counter32 +--ro peer-dead-timer? uint32
+--ro num-sess-setup-fail? yang:counter32 +--ro ka-hold-time-rem? uint32
+--ro session-up-time? yang:timestamp +--ro overloaded? boolean
+--ro session-fail-time? yang:timestamp +--ro overload-time? uint32
+--ro session-fail-up-time? yang:timestamp +--ro peer-overloaded? boolean
+--ro pcep-stats +--ro peer-overload-time? uint32
| +--ro avg-rsp-time? uint32 +--ro lspdb-sync? sync-state
| +--ro lwm-rsp-time? uint32 | {stateful}?
| +--ro hwm-rsp-time? uint32 +--ro recv-db-ver? uint64
| +--ro num-pcreq-sent? yang:counter32 | {stateful,stateful-sync-opt}?
| +--ro num-pcreq-rcvd? yang:counter32 +--ro of-list {objective-function}?
| +--ro num-pcrep-sent? yang:counter32 | +--ro objective-function* [of]
| +--ro num-pcrep-rcvd? yang:counter32 | +--ro of objective-function
| +--ro num-pcerr-sent? yang:counter32 +--ro speaker-entity-id? string
| +--ro num-pcerr-rcvd? yang:counter32 | {stateful-sync-opt}?
| +--ro num-pcntf-sent? yang:counter32 +--ro discontinuity-time? yang:timestamp
| +--ro num-pcntf-rcvd? yang:counter32
| +--ro num-keepalive-sent? yang:counter32 rpcs:
| +--ro num-keepalive-rcvd? yang:counter32 +---x trigger-resync {stateful,stateful-sync-opt}?
| +--ro num-unknown-rcvd? yang:counter32 +---w input
| +--ro num-corrupt-rcvd? yang:counter32 +---w pcc? -> /pcep-state/entity/peers/peer/addr
| +--ro num-req-sent? yang:counter32
| +--ro num-req-sent-pend-rep? yang:counter32 notifications:
| +--ro num-req-sent-ero-rcvd? yang:counter32 +---n pcep-session-up
| +--ro num-req-sent-nopath-rcvd? yang:counter32 | +--ro peer-addr?
| +--ro num-req-sent-cancel-rcvd? yang:counter32 | | -> /pcep-state/entity/peers/peer/addr
| +--ro num-req-sent-error-rcvd? yang:counter32 | +--ro session-initiator? leafref
| +--ro num-req-sent-timeout? yang:counter32 | +--ro state-last-change? yang:timestamp
| +--ro num-req-sent-cancel-sent? yang:counter32 | +--ro state? pcep-sess-state
| +--ro num-req-rcvd? yang:counter32 +---n pcep-session-down
| +--ro num-req-rcvd-pend-rep? yang:counter32 | +--ro peer-addr?
| +--ro num-req-rcvd-ero-sent? yang:counter32 | | -> /pcep-state/entity/peers/peer/addr
| +--ro num-req-rcvd-nopath-sent? yang:counter32 | +--ro session-initiator? pcep-initiator
| +--ro num-req-rcvd-cancel-sent? yang:counter32 | +--ro state-last-change? yang:timestamp
| +--ro num-req-rcvd-error-sent? yang:counter32 | +--ro state? pcep-sess-state
| +--ro num-req-rcvd-cancel-rcvd? yang:counter32 +---n pcep-session-local-overload
| +--ro num-rep-rcvd-unknown? yang:counter32 | +--ro peer-addr?
| +--ro num-req-rcvd-unknown? yang:counter32 | | -> /pcep-state/entity/peers/peer/addr
| +--ro svec {svec}? | +--ro session-initiator? leafref
| | +--ro num-svec-sent? yang:counter32 | +--ro overloaded? boolean
| | +--ro num-svec-req-sent? yang:counter32 | +--ro overload-time? uint32
| | +--ro num-svec-rcvd? yang:counter32 +---n pcep-session-local-overload-clear
| | +--ro num-svec-req-rcvd? yang:counter32 | +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr
| +--ro stateful {stateful}? | +--ro overloaded? boolean
| | +--ro num-pcrpt-sent? yang:counter32 +---n pcep-session-peer-overload
| | +--ro num-pcrpt-rcvd? yang:counter32 | +--ro peer-addr?
| | +--ro num-pcupd-sent? yang:counter32 | | -> /pcep-state/entity/peers/peer/addr
| | +--ro num-pcupd-rcvd? yang:counter32 | +--ro session-initiator? leafref
| | +--ro num-rpt-sent? yang:counter32 | +--ro peer-overloaded? boolean
| | +--ro num-rpt-rcvd? yang:counter32 | +--ro peer-overload-time? uint32
| | +--ro num-rpt-rcvd-error-sent? yang:counter32 +---n pcep-session-peer-overload-clear
| | +--ro num-upd-sent? yang:counter32 +--ro peer-addr?
| | +--ro num-upd-rcvd? yang:counter32 | -> /pcep-state/entity/peers/peer/addr
| | +--ro num-upd-rcvd-unknown? yang:counter32 +--ro peer-overloaded? boolean
| | +--ro num-upd-rcvd-undelegated? yang:counter32
| | +--ro num-upd-rcvd-error-sent? yang:counter32
| | +--ro initiation {pce-initiated}?
| | +--ro num-pcinitiate-sent? yang:counter32
| | +--ro num-pcinitiate-rcvd? yang:counter32
| | +--ro num-initiate-sent? yang:counter32
| | +--ro num-initiate-rcvd? yang:counter32
| | +--ro num-initiate-rcvd-error-sent? yang:counter32
| +--ro path-key {path-key}?
| | +--ro num-unknown-path-key? yang:counter32
| | +--ro num-exp-path-key? yang:counter32
| | +--ro num-dup-path-key? yang:counter32
| | +--ro num-path-key-no-attempt? yang:counter32
| +--ro num-req-sent-closed? yang:counter32
| +--ro num-req-rcvd-closed? yang:counter32
+--ro sessions
+--ro session* [initiator]
+--ro initiator pcep-initiator
+--ro state-last-change? yang:timestamp
+--ro state? pcep-sess-state
+--ro session-creation? yang:timestamp
+--ro connect-retry? yang:counter32
+--ro local-id? uint32
+--ro remote-id? uint32
+--ro keepalive-timer? uint32
+--ro peer-keepalive-timer? uint32
+--ro dead-timer? uint32
+--ro peer-dead-timer? uint32
+--ro ka-hold-time-rem? uint32
+--ro overloaded? boolean
+--ro overload-time? uint32
+--ro peer-overloaded? boolean
+--ro peer-overload-time? uint32
+--ro lspdb-sync? sync-state {stateful}?
+--ro recv-db-ver? uint64 {stateful,stateful-sync-opt}?
+--ro of-list {objective-function}?
| +--ro objective-function* [of]
| +--ro of objective-function
+--ro speaker-entity-id? string {stateful-sync-opt}?
+--ro discontinuity-time? yang:timestamp
+--ro pcep-stats
+--ro avg-rsp-time? uint32
+--ro lwm-rsp-time? uint32
+--ro hwm-rsp-time? uint32
+--ro num-pcreq-sent? yang:counter32
+--ro num-pcreq-rcvd? yang:counter32
+--ro num-pcrep-sent? yang:counter32
+--ro num-pcrep-rcvd? yang:counter32
+--ro num-pcerr-sent? yang:counter32
+--ro num-pcerr-rcvd? yang:counter32
+--ro num-pcntf-sent? yang:counter32
+--ro num-pcntf-rcvd? yang:counter32
+--ro num-keepalive-sent? yang:counter32
+--ro num-keepalive-rcvd? yang:counter32
+--ro num-unknown-rcvd? yang:counter32
+--ro num-corrupt-rcvd? yang:counter32
+--ro num-req-sent? yang:counter32
+--ro num-req-sent-pend-rep? yang:counter32
+--ro num-req-sent-ero-rcvd? yang:counter32
+--ro num-req-sent-nopath-rcvd? yang:counter32
+--ro num-req-sent-cancel-rcvd? yang:counter32
+--ro num-req-sent-error-rcvd? yang:counter32
+--ro num-req-sent-timeout? yang:counter32
+--ro num-req-sent-cancel-sent? yang:counter32
+--ro num-req-rcvd? yang:counter32
+--ro num-req-rcvd-pend-rep? yang:counter32
+--ro num-req-rcvd-ero-sent? yang:counter32
+--ro num-req-rcvd-nopath-sent? yang:counter32
+--ro num-req-rcvd-cancel-sent? yang:counter32
+--ro num-req-rcvd-error-sent? yang:counter32
+--ro num-req-rcvd-cancel-rcvd? yang:counter32
+--ro num-rep-rcvd-unknown? yang:counter32
+--ro num-req-rcvd-unknown? yang:counter32
+--ro svec {svec}?
| +--ro num-svec-sent? yang:counter32
| +--ro num-svec-req-sent? yang:counter32
| +--ro num-svec-rcvd? yang:counter32
| +--ro num-svec-req-rcvd? yang:counter32
+--ro stateful {stateful}?
| +--ro num-pcrpt-sent? yang:counter32
| +--ro num-pcrpt-rcvd? yang:counter32
| +--ro num-pcupd-sent? yang:counter32
| +--ro num-pcupd-rcvd? yang:counter32
| +--ro num-rpt-sent? yang:counter32
| +--ro num-rpt-rcvd? yang:counter32
| +--ro num-rpt-rcvd-error-sent? yang:counter32
| +--ro num-upd-sent? yang:counter32
| +--ro num-upd-rcvd? yang:counter32
| +--ro num-upd-rcvd-unknown? yang:counter32
| +--ro num-upd-rcvd-undelegated? yang:counter32
| +--ro num-upd-rcvd-error-sent? yang:counter32
| +--ro initiation {pce-initiated}?
| +--ro num-pcinitiate-sent? yang:counter32
| +--ro num-pcinitiate-rcvd? yang:counter32
| +--ro num-initiate-sent? yang:counter32
| +--ro num-initiate-rcvd? yang:counter32
| +--ro num-initiate-rcvd-error-sent? yang:counter32
+--ro path-key {path-key}?
+--ro num-unknown-path-key? yang:counter32
+--ro num-exp-path-key? yang:counter32
+--ro num-dup-path-key? yang:counter32
+--ro num-path-key-no-attempt? yang:counter32
notifications:
+---n pcep-session-up
| +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr
| +--ro session-initiator? -> /pcep-state/entity/peers/peer/sessions/session/initiator
| +--ro state-last-change? yang:timestamp
| +--ro state? pcep-sess-state
+---n pcep-session-down
| +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr
| +--ro session-initiator? pcep-initiator
| +--ro state-last-change? yang:timestamp
| +--ro state? pcep-sess-state
+---n pcep-session-local-overload
| +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr
| +--ro session-initiator? -> /pcep-state/entity/peers/peer/sessions/session/initiator
| +--ro overloaded? boolean
| +--ro overload-time? uint32
+---n pcep-session-local-overload-clear
| +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr
| +--ro overloaded? boolean
+---n pcep-session-peer-overload
| +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr
| +--ro session-initiator? -> /pcep-state/entity/peers/peer/sessions/session/initiator
| +--ro peer-overloaded? boolean
| +--ro peer-overload-time? uint32
+---n pcep-session-peer-overload-clear
+--ro peer-addr? -> /pcep-state/entity/peers/peer/addr
+--ro peer-overloaded? boolean
5.1. The Entity 5.1. The Entity
The PCEP yang module may contain status information for the local The PCEP yang module may contain status information for the local
PCEP entity. PCEP entity.
The entity has an IP address (using ietf-inet-types [RFC6991]) and a The entity has an IP address (using ietf-inet-types [RFC6991]) and a
"role" leaf (the local entity PCEP role) as mandatory. "role" leaf (the local entity PCEP role) as mandatory.
Note that, the PCEP MIB module [RFC7420] uses an entity list and a Note that, the PCEP MIB module [RFC7420] uses an entity list and a
skipping to change at page 20, line 43 skipping to change at page 19, line 5
There is only one list for the operational state of all sessions There is only one list for the operational state of all sessions
("/pcep-state/entity/peers/peer/sessions/session"). ("/pcep-state/entity/peers/peer/sessions/session").
5.4. Notifications 5.4. Notifications
This YANG model defines a list of notifications to inform client of This YANG model defines a list of notifications to inform client of
important events detected during the protocol operation. The important events detected during the protocol operation. The
notifications defined cover the PCEP MIB notifications. notifications defined cover the PCEP MIB notifications.
6. Advanced PCE Features 5.5. RPC
This YANG model defines a RPC to trigger state resynchronization to a
particular PCEP peer.
6. The Design of PCEP Statistics Data Model
The module, "ietf-pcep-stats", augments the ietf-pcep module to
include statistics at the PCEP peer and session level.
module: ietf-pcep-stats
augment /p:pcep-state/p:entity/p:peers/p:peer:
+--ro num-sess-setup-ok? yang:counter32
+--ro num-sess-setup-fail? yang:counter32
+--ro pcep-stats
+--ro avg-rsp-time? uint32
+--ro lwm-rsp-time? uint32
+--ro hwm-rsp-time? uint32
+--ro num-pcreq-sent? yang:counter32
+--ro num-pcreq-rcvd? yang:counter32
+--ro num-pcrep-sent? yang:counter32
+--ro num-pcrep-rcvd? yang:counter32
+--ro num-pcerr-sent? yang:counter32
+--ro num-pcerr-rcvd? yang:counter32
+--ro num-pcntf-sent? yang:counter32
+--ro num-pcntf-rcvd? yang:counter32
+--ro num-keepalive-sent? yang:counter32
+--ro num-keepalive-rcvd? yang:counter32
+--ro num-unknown-rcvd? yang:counter32
+--ro num-corrupt-rcvd? yang:counter32
+--ro num-req-sent? yang:counter32
+--ro num-req-sent-pend-rep? yang:counter32
+--ro num-req-sent-ero-rcvd? yang:counter32
+--ro num-req-sent-nopath-rcvd? yang:counter32
+--ro num-req-sent-cancel-rcvd? yang:counter32
+--ro num-req-sent-error-rcvd? yang:counter32
+--ro num-req-sent-timeout? yang:counter32
+--ro num-req-sent-cancel-sent? yang:counter32
+--ro num-req-rcvd? yang:counter32
+--ro num-req-rcvd-pend-rep? yang:counter32
+--ro num-req-rcvd-ero-sent? yang:counter32
+--ro num-req-rcvd-nopath-sent? yang:counter32
+--ro num-req-rcvd-cancel-sent? yang:counter32
+--ro num-req-rcvd-error-sent? yang:counter32
+--ro num-req-rcvd-cancel-rcvd? yang:counter32
+--ro num-rep-rcvd-unknown? yang:counter32
+--ro num-req-rcvd-unknown? yang:counter32
+--ro svec {p:svec}?
| +--ro num-svec-sent? yang:counter32
| +--ro num-svec-req-sent? yang:counter32
| +--ro num-svec-rcvd? yang:counter32
| +--ro num-svec-req-rcvd? yang:counter32
+--ro stateful {p:stateful}?
| +--ro num-pcrpt-sent? yang:counter32
| +--ro num-pcrpt-rcvd? yang:counter32
| +--ro num-pcupd-sent? yang:counter32
| +--ro num-pcupd-rcvd? yang:counter32
| +--ro num-rpt-sent? yang:counter32
| +--ro num-rpt-rcvd? yang:counter32
| +--ro num-rpt-rcvd-error-sent? yang:counter32
| +--ro num-upd-sent? yang:counter32
| +--ro num-upd-rcvd? yang:counter32
| +--ro num-upd-rcvd-unknown? yang:counter32
| +--ro num-upd-rcvd-undelegated? yang:counter32
| +--ro num-upd-rcvd-error-sent? yang:counter32
| +--ro initiation {p:pce-initiated}?
| +--ro num-pcinitiate-sent? yang:counter32
| +--ro num-pcinitiate-rcvd? yang:counter32
| +--ro num-initiate-sent? yang:counter32
| +--ro num-initiate-rcvd? yang:counter32
| +--ro num-initiate-rcvd-error-sent? yang:counter32
+--ro path-key {p:path-key}?
| +--ro num-unknown-path-key? yang:counter32
| +--ro num-exp-path-key? yang:counter32
| +--ro num-dup-path-key? yang:counter32
| +--ro num-path-key-no-attempt? yang:counter32
+--ro num-req-sent-closed? yang:counter32
+--ro num-req-rcvd-closed? yang:counter32
augment /p:pcep-state/p:entity/p:peers/p:peer/p:sessions/p:session:
+--ro pcep-stats
+--ro avg-rsp-time? uint32
+--ro lwm-rsp-time? uint32
+--ro hwm-rsp-time? uint32
+--ro num-pcreq-sent? yang:counter32
+--ro num-pcreq-rcvd? yang:counter32
+--ro num-pcrep-sent? yang:counter32
+--ro num-pcrep-rcvd? yang:counter32
+--ro num-pcerr-sent? yang:counter32
+--ro num-pcerr-rcvd? yang:counter32
+--ro num-pcntf-sent? yang:counter32
+--ro num-pcntf-rcvd? yang:counter32
+--ro num-keepalive-sent? yang:counter32
+--ro num-keepalive-rcvd? yang:counter32
+--ro num-unknown-rcvd? yang:counter32
+--ro num-corrupt-rcvd? yang:counter32
+--ro num-req-sent? yang:counter32
+--ro num-req-sent-pend-rep? yang:counter32
+--ro num-req-sent-ero-rcvd? yang:counter32
+--ro num-req-sent-nopath-rcvd? yang:counter32
+--ro num-req-sent-cancel-rcvd? yang:counter32
+--ro num-req-sent-error-rcvd? yang:counter32
+--ro num-req-sent-timeout? yang:counter32
+--ro num-req-sent-cancel-sent? yang:counter32
+--ro num-req-rcvd? yang:counter32
+--ro num-req-rcvd-pend-rep? yang:counter32
+--ro num-req-rcvd-ero-sent? yang:counter32
+--ro num-req-rcvd-nopath-sent? yang:counter32
+--ro num-req-rcvd-cancel-sent? yang:counter32
+--ro num-req-rcvd-error-sent? yang:counter32
+--ro num-req-rcvd-cancel-rcvd? yang:counter32
+--ro num-rep-rcvd-unknown? yang:counter32
+--ro num-req-rcvd-unknown? yang:counter32
+--ro svec {p:svec}?
| +--ro num-svec-sent? yang:counter32
| +--ro num-svec-req-sent? yang:counter32
| +--ro num-svec-rcvd? yang:counter32
| +--ro num-svec-req-rcvd? yang:counter32
+--ro stateful {p:stateful}?
| +--ro num-pcrpt-sent? yang:counter32
| +--ro num-pcrpt-rcvd? yang:counter32
| +--ro num-pcupd-sent? yang:counter32
| +--ro num-pcupd-rcvd? yang:counter32
| +--ro num-rpt-sent? yang:counter32
| +--ro num-rpt-rcvd? yang:counter32
| +--ro num-rpt-rcvd-error-sent? yang:counter32
| +--ro num-upd-sent? yang:counter32
| +--ro num-upd-rcvd? yang:counter32
| +--ro num-upd-rcvd-unknown? yang:counter32
| +--ro num-upd-rcvd-undelegated? yang:counter32
| +--ro num-upd-rcvd-error-sent? yang:counter32
| +--ro initiation {p:pce-initiated}?
| +--ro num-pcinitiate-sent? yang:counter32
| +--ro num-pcinitiate-rcvd? yang:counter32
| +--ro num-initiate-sent? yang:counter32
| +--ro num-initiate-rcvd? yang:counter32
| +--ro num-initiate-rcvd-error-sent? yang:counter32
+--ro path-key {p:path-key}?
+--ro num-unknown-path-key? yang:counter32
+--ro num-exp-path-key? yang:counter32
+--ro num-dup-path-key? yang:counter32
+--ro num-path-key-no-attempt? yang:counter32
7. Advanced PCE Features
This document contains a specification of the base PCEP YANG module, This document contains a specification of the base PCEP YANG module,
"ietf-pcep" which provides the basic PCEP [RFC5440] data model. "ietf-pcep" which provides the basic PCEP [RFC5440] data model.
This document further handles advanced PCE features like - This document further handles advanced PCE features like -
o Capability and Scope o Capability and Scope
o Domain information (local/neighbour) o Domain information (local/neighbour)
o Path-Key o Path-Key
o OF o OF
o GCO o GCO
o P2MP o P2MP
o GMPLS o GMPLS
skipping to change at page 21, line 22 skipping to change at page 22, line 34
o GMPLS o GMPLS
o Inter-Layer o Inter-Layer
o Stateful PCE o Stateful PCE
o Segement Routing o Segement Routing
o Authentication including PCEPS (TLS) o Authentication including PCEPS (TLS)
[Editor's Note - Some of them would be added in a future revision.] [Editor's Note - TLS would be added in a future revision]
6.1. Stateful PCE's LSP-DB 7.1. Stateful PCE's LSP-DB
In the operational state of PCEP which supports stateful PCE mode, In the operational state of PCEP which supports stateful PCE mode,
the list of LSP state are maintained in LSP-DB. The key is the PLSP- the list of LSP state are maintained in LSP-DB. The key is the PLSP-
ID and the PCC IP address. ID and the PCC IP address.
The PCEP data model contains the operational state of LSPs (/pcep- The PCEP data model contains the operational state of LSPs (/pcep-
state/entity/lsp-db/lsp/) with PCEP specific attributes. The generic state/entity/lsp-db/lsp/) with PCEP specific attributes. The generic
TE attributes of the LSP are defined in [I-D.ietf-teas-yang-te]. A TE attributes of the LSP are defined in [I-D.ietf-teas-yang-te]. A
reference to LSP state in TE model is maintained. reference to LSP state in TE model is maintained.
7. Open Issues and Next Step 8. Open Issues and Next Step
This section is added so that open issues can be tracked. This This section is added so that open issues can be tracked. This
section would be removed when the document is ready for publication. section would be removed when the document is ready for publication.
7.1. The PCE-Initiated LSP 8.1. The PCE-Initiated LSP
The TE Model at [I-D.ietf-teas-yang-te] should support creationg of The TE Model at [I-D.ietf-teas-yang-te] should support creationg of
tunnels at the controller (PCE) and marking them as PCE-Initiated. tunnels at the controller (PCE) and marking them as PCE-Initiated.
The LSP-DB in the PCEP Yang (/pcep-state/entity/lsp-db/lsp/ The LSP-DB in the PCEP Yang (/pcep-state/entity/lsp-db/lsp/
initiation) also marks the LSPs which are PCE-initiated. initiation) also marks the LSPs which are PCE-initiated.
7.2. PCEP over TLS (PCEPS) 8.2. PCEP over TLS (PCEPS)
A future version of this document would add TLS related A future version of this document would add TLS related
configurations. configurations.
8. PCEP YANG Module 9. PCEP YANG Modules
9.1. ietf-pcep module
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the RFC Ed.: In this section, replace all occurrences of 'XXXX' with the
actual RFC number and all occurrences of the revision date below with actual RFC number and all occurrences of the revision date below with
the date of RFC publication (and remove this note). the date of RFC publication (and remove this note).
<CODE BEGINS> file "ietf-pcep@2016-10-27.yang" <CODE BEGINS> file "ietf-pcep@2017-03-12.yang"
module ietf-pcep { module ietf-pcep {
namespace "urn:ietf:params:xml:ns:yang:ietf-pcep";
prefix pcep;
import ietf-inet-types { yang-version 1.1;
prefix "inet";
}
import ietf-yang-types { namespace "urn:ietf:params:xml:ns:yang:ietf-pcep";
prefix "yang"; prefix pcep;
}
import ietf-te { import ietf-inet-types {
prefix "te"; prefix "inet";
} }
import ietf-te-types { import ietf-yang-types {
prefix "te-types"; prefix "yang";
} }
import ietf-key-chain { import ietf-te {
prefix "key-chain"; prefix "te";
} }
organization import ietf-te-types {
"IETF PCE (Path Computation Element) Working Group"; prefix "te-types";
}
contact import ietf-key-chain {
"WG Web: <http://tools.ietf.org/wg/pce/> prefix "key-chain";
WG List: <mailto:pce@ietf.org> }
WG Chair: JP Vasseur
<mailto:jpv@cisco.com>
WG Chair: Julien Meuric
<mailto:julien.meuric@orange.com>
WG Chair: Jonathan Hardwick
<mailto:Jonathan.Hardwick@metaswitch.com>
Editor: Dhruv Dhody
<mailto:dhruv.ietf@gmail.com>";
description import ietf-netconf-acm {
"The YANG module defines a generic configuration and prefix nacm;
operational model for PCEP common across all of the }
vendor implementations.";
revision 2016-10-27 { organization
description "Initial revision."; "IETF PCE (Path Computation Element) Working Group";
reference
"RFC XXXX: A YANG Data Model for Path Computation
Element Communications Protocol
(PCEP)";
}
/* contact
* Identities "WG Web: <http://tools.ietf.org/wg/pce/>
*/ WG List: <mailto:pce@ietf.org>
WG Chair: JP Vasseur
<mailto:jpv@cisco.com>
WG Chair: Julien Meuric
<mailto:julien.meuric@orange.com>
WG Chair: Jonathan Hardwick
<mailto:Jonathan.Hardwick@metaswitch.com>
Editor: Dhruv Dhody
<mailto:dhruv.ietf@gmail.com>";
identity pcep { description
description "Identity for the PCEP protocol."; "The YANG module defines a generic configuration and
} operational model for PCEP common across all of the
vendor implementations.";
/* revision 2017-03-12 {
* Typedefs description "Initial revision.";
*/ reference
typedef pcep-role { "RFC XXXX: A YANG Data Model for Path Computation
type enumeration { Element Communications Protocol
enum unknown { (PCEP)";
value "0"; }
description
"An unknown role";
}
enum pcc {
value "1";
description
"The role of a Path Computation Client";
}
enum pce {
value "2";
description
"The role of Path Computation Element";
}
enum pcc-and-pce {
value "3";
description
"The role of both Path Computation Client and
Path Computation Element";
}
} /*
* Identities
*/
description identity pcep {
"The role of a PCEP speaker. description "Identity for the PCEP protocol.";
Takes one of the following values }
- unknown(0): the role is not known.
- pcc(1): the role is of a Path Computation
Client (PCC).
- pce(2): the role is of a Path Computation
Server (PCE).
- pccAndPce(3): the role is of both a PCC and
a PCE.";
} /*
* Typedefs
*/
typedef pcep-admin-status { typedef pcep-role {
type enumeration { type enumeration {
enum admin-status-up { enum unknown {
value "1"; value "0";
description description
"Admin Status is Up"; "An unknown role";
} }
enum admin-status-down { enum pcc {
value "2"; value "1";
description description
"Admin Status is Down"; "The role of a Path Computation Client";
} }
} enum pce {
value "2";
description
"The role of Path Computation Element";
}
enum pcc-and-pce {
value "3";
description
"The role of both Path Computation Client and
Path Computation Element";
}
}
description description
"The Admin Status of the PCEP entity. "The role of a PCEP speaker.
Takes one of the following values Takes one of the following values
- admin-status-up(1): Admin Status is Up. - unknown(0): the role is not known.
- admin-status-down(2): Admin Status is Down"; - pcc(1): the role is of a Path Computation
} Client (PCC).
- pce(2): the role is of a Path Computation
Server (PCE).
- pccAndPce(3): the role is of both a PCC and
a PCE.";
typedef pcep-oper-status { }
type enumeration {
enum oper-status-up {
value "1";
description
"The PCEP entity is active";
}
enum oper-status-down {
value "2";
description
"The PCEP entity is inactive";
}
enum oper-status-going-up {
value "3";
description
"The PCEP entity is activating";
}
enum oper-status-going-down {
value "4";
description
"The PCEP entity is deactivating";
}
enum oper-status-failed {
value "5";
description
"The PCEP entity has failed and will recover
when possible.";
}
enum oper-status-failed-perm {
value "6";
description
"The PCEP entity has failed and will not recover
without operator intervention";
}
}
description
"The operational status of the PCEP entity.
Takes one of the following values
- oper-status-up(1): Active
- oper-status-down(2): Inactive
- oper-status-going-up(3): Activating
- oper-status-going-down(4): Deactivating
- oper-status-failed(5): Failed
- oper-status-failed-perm(6): Failed Permanantly";
}
typedef pcep-initiator { typedef pcep-admin-status {
type enumeration { type enumeration {
enum local { enum admin-status-up {
value "1"; value "1";
description description
"The local PCEP entity initiated the session"; "Admin Status is Up";
} }
enum admin-status-down {
value "2";
description
"Admin Status is Down";
}
}
enum remote { description
value "2"; "The Admin Status of the PCEP entity.
description Takes one of the following values
"The remote PCEP peer initiated the session"; - admin-status-up(1): Admin Status is Up.
} - admin-status-down(2): Admin Status is Down";
} }
description
"The initiator of the session, that is, whether the TCP
connection was initiated by the local PCEP entity or
the remote peer.
Takes one of the following values
- local(1): Initiated locally
- remote(2): Initiated remotely";
}
typedef pcep-sess-state { typedef pcep-oper-status {
type enumeration { type enumeration {
enum tcp-pending { enum oper-status-up {
value "1"; value "1";
description description
"The tcp-pending state of PCEP session."; "The PCEP entity is active";
} }
enum oper-status-down {
value "2";
description
"The PCEP entity is inactive";
}
enum oper-status-going-up {
value "3";
description
"The PCEP entity is activating";
}
enum oper-status-going-down {
value "4";
description
"The PCEP entity is deactivating";
}
enum oper-status-failed {
value "5";
description
"The PCEP entity has failed and will recover
when possible.";
}
enum oper-status-failed-perm {
value "6";
description
"The PCEP entity has failed and will not recover
without operator intervention";
}
}
description
"The operational status of the PCEP entity.
enum open-wait { Takes one of the following values
value "2"; - oper-status-up(1): Active
description - oper-status-down(2): Inactive
"The open-wait state of PCEP session."; - oper-status-going-up(3): Activating
} - oper-status-going-down(4): Deactivating
- oper-status-failed(5): Failed
- oper-status-failed-perm(6): Failed Permanantly";
}
enum keep-wait { typedef pcep-initiator {
value "3"; type enumeration {
description enum local {
"The keep-wait state of PCEP session."; value "1";
} description
"The local PCEP entity initiated the session";
}
enum session-up { enum remote {
value "4"; value "2";
description description
"The session-up state of PCEP session."; "The remote PCEP peer initiated the session";
} }
} }
description description
"The current state of the session. "The initiator of the session, that is, whether the TCP
The set of possible states excludes the idle state connection was initiated by the local PCEP entity or
since entries do not exist in the idle state. the remote peer.
Takes one of the following values Takes one of the following values
- tcp-pending(1): PCEP TCP Pending state - local(1): Initiated locally
- open-wait(2): PCEP Open Wait state - remote(2): Initiated remotely";
- keep-wait(3): PCEP Keep Wait state }
- session-up(4): PCEP Session Up state";
}
typedef domain-type { typedef pcep-sess-state {
type enumeration { type enumeration {
enum ospf-area { enum tcp-pending {
value "1"; value "1";
description description
"The OSPF area."; "The tcp-pending state of PCEP session.";
} }
enum isis-area {
value "2";
description
"The IS-IS area.";
}
enum as {
value "3";
description
"The Autonomous System (AS).";
}
}
description
"The PCE Domain Type";
}
typedef domain-ospf-area { enum open-wait {
type union { value "2";
type uint32; description
type yang:dotted-quad; "The open-wait state of PCEP session.";
}
enum keep-wait {
value "3";
description
"The keep-wait state of PCEP session.";
}
enum session-up {
value "4";
description
"The session-up state of PCEP session.";
}
}
description
"The current state of the session.
The set of possible states excludes the idle state
since entries do not exist in the idle state.
Takes one of the following values
- tcp-pending(1): PCEP TCP Pending state
- open-wait(2): PCEP Open Wait state
- keep-wait(3): PCEP Keep Wait state
- session-up(4): PCEP Session Up state";
} }
description
"OSPF Area ID.";
}
typedef domain-isis-area { typedef domain-type {
type string { type enumeration {
pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}'; enum ospf-area {
} value "1";
description description
"IS-IS Area ID."; "The OSPF area.";
} }
enum isis-area {
value "2";
description
"The IS-IS area.";
}
enum as {
value "3";
description
"The Autonomous System (AS).";
}
}
description
"The PCE Domain Type";
}
typedef domain-as { typedef domain-ospf-area {
type uint32; type union {
description type uint32;
"Autonomous System number."; type yang:dotted-quad;
}
description
"OSPF Area ID.";
}
} typedef domain-isis-area {
type string {
pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}';
}
description
"IS-IS Area ID.";
}
typedef domain { typedef domain-as {
type union { type uint32;
type domain-ospf-area; description
type domain-isis-area; "Autonomous System number.";
type domain-as;
}
description
"The Domain Information";
}
typedef operational-state { }
type enumeration {
enum down {
value "0";
description
"not active.";
}
enum up {
value "1";
description
"signalled.";
}
enum active {
value "2";
description
"up and carrying traffic.";
}
enum going-down {
value "3";
description
"LSP is being torn down, resources are
being released.";
}
enum going-up {
value "4";
description
"LSP is being signalled.";
}
}
description
"The operational status of the LSP";
}
typedef lsp-error { typedef domain {
type enumeration { type union {
enum no-error { type domain-ospf-area;
value "0"; type domain-isis-area;
description type domain-as;
"No error, LSP is fine."; }
} description
enum unknown { "The Domain Information";
value "1"; }
description
"Unknown reason.";
}
enum limit {
value "2";
description
"Limit reached for PCE-controlled LSPs.";
}
enum pending {
value "3";
description
"Too many pending LSP update requests.";
}
enum unacceptable {
value "4";
description
"Unacceptable parameters.";
}
enum internal {
value "5";
description
"Internal error.";
}
enum admin {
value "6";
description
"LSP administratively brought down.";
}
enum preempted {
value "7";
description
"LSP preempted.";
}
enum rsvp {
value "8";
description
"RSVP signaling error.";
}
}
description
"The LSP Error Codes.";
}
typedef sync-state { typedef operational-state {
type enumeration { type enumeration {
enum pending { enum down {
value "0"; value "0";
description description
"The state synchronization "not active.";
has not started."; }
} enum up {
enum ongoing { value "1";
value "1"; description
description "signalled.";
"The state synchronization }
is ongoing."; enum active {
} value "2";
enum finished { description
value "2"; "up and carrying traffic.";
description }
"The state synchronization enum going-down {
is finished."; value "3";
} description
} "LSP is being torn down, resources are
description being released.";
"The LSP-DB state synchronization operational status."; }
} enum going-up {
value "4";
description
"LSP is being signalled.";
}
}
description
"The operational status of the LSP";
}
typedef pst{ typedef lsp-error {
type enumeration{ type enumeration {
enum rsvp-te{ enum no-error {
value "0"; value "0";
description description
"RSVP-TE signaling protocol"; "No error, LSP is fine.";
} }
enum sr{ enum unknown {
value "1"; value "1";
description description
"Segment Routing Traffic Engineering"; "Unknown reason.";
} }
} enum limit {
description value "2";
"The Path Setup Type"; description
} "Limit reached for PCE-controlled LSPs.";
}
enum pending {
value "3";
description
"Too many pending LSP update requests.";
}
enum unacceptable {
value "4";
description
"Unacceptable parameters.";
}
enum internal {
value "5";
description
"Internal error.";
}
enum admin {
value "6";
description
"LSP administratively brought down.";
}
enum preempted {
value "7";
description
"LSP preempted.";
}
enum rsvp {
value "8";
description
"RSVP signaling error.";
}
}
description
"The LSP Error Codes.";
}
typedef assoc-type{ typedef sync-state {
type enumeration{ type enumeration {
enum protection{ enum pending {
value "1"; value "0";
description description
"Path Protection Association Type"; "The state synchronization
} has not started.";
} }
description enum ongoing {
"The PCEP Association Type"; value "1";
} description
typedef objective-function{ "The state synchronization
type enumeration{ is ongoing.";
enum mcp{ }
value "1"; enum finished {
description value "2";
"Minimum Cost Path (MCP)"; description
} "The state synchronization
enum mlp{ is finished.";
value "2"; }
description }
"Minimum Load Path (MLP)"; description
} "The LSP-DB state synchronization operational
enum mbp{ status.";
value "3"; }
description
"Maximum residual Bandwidth Path (MBP)";
}
enum mbc{
value "4";
description
"Minimize aggregate Bandwidth Consumption (MBC)";
}
enum mll{
value "5";
description
"Minimize the Load of the most loaded Link (MLL)";
}
enum mcc{
value "6";
description
"Minimize the Cumulative Cost of a set of paths
(MCC)";
}
enum spt{
value "7";
description
"Shortest Path Tree (SPT)";
}
enum mct{
value "8";
description
"Minimum Cost Tree (MCT)";
}
enum mplp{
value "9";
description
"Minimum Packet Loss Path (MPLP)";
}
enum mup{
value "10";
description
"Maximum Under-Utilized Path (MUP)";
}
enum mrup{
value "11";
description
"Maximum Reserved Under-Utilized Path (MRUP)";
}
}
description
"The PCEP Objective functions";
}
/* typedef pst{
* Features type enumeration{
*/ enum rsvp-te{
value "0";
description
"RSVP-TE signaling protocol";
}
enum sr{
value "1";
description
"Segment Routing Traffic Engineering";
}
}
description
"The Path Setup Type";
}
feature svec { typedef assoc-type{
description type enumeration{
"Support synchronized path computation."; enum protection{
} value "1";
description
"Path Protection Association Type";
}
enum policy{
value "2";
description
"Policy Association Type";
}
enum diversity{
value "3";
description
"Diversity Association Type";
}
}
description
"The PCEP Association Type";
}
feature gmpls { typedef objective-function{
description type enumeration{
"Support GMPLS."; enum mcp{
} value "1";
description
"Minimum Cost Path (MCP)";
}
enum mlp{
value "2";
description
"Minimum Load Path (MLP)";
}
enum mbp{
value "3";
description
"Maximum residual Bandwidth Path (MBP)";
}
enum mbc{
value "4";
description
"Minimize aggregate Bandwidth Consumption
(MBC)";
}
enum mll{
value "5";
description
"Minimize the Load of the most loaded Link
(MLL)";
}
enum mcc{
value "6";
description
"Minimize the Cumulative Cost of a set of
paths (MCC)";
}
enum spt{
value "7";
description
"Shortest Path Tree (SPT)";
}
enum mct{
value "8";
description
"Minimum Cost Tree (MCT)";
}
enum mplp{
value "9";
description
"Minimum Packet Loss Path (MPLP)";
}
enum mup{
value "10";
description
"Maximum Under-Utilized Path (MUP)";
}
enum mrup{
value "11";
description
"Maximum Reserved Under-Utilized Path
(MRUP)";
}
feature objective-function { }
description description
"Support OF as per RFC 5541."; "The PCEP Objective functions";
} }
feature gco { /*
description * Features
"Support GCO as per RFC 5557."; */
}
feature path-key { feature svec {
description description
"Support path-key as per RFC 5520."; "Support synchronized path computation.";
} }
feature p2mp { feature gmpls {
description description
"Support P2MP as per RFC 6006."; "Support GMPLS.";
} }
feature stateful {
description
"Support stateful PCE.";
}
feature stateful-sync-opt { feature objective-function {
description description
"Support stateful sync optimization"; "Support OF as per RFC 5541.";
} }
feature pce-initiated { feature gco {
description description
"Support PCE-Initiated LSP."; "Support GCO as per RFC 5557.";
} }
feature tls { feature path-key {
description description
"Support PCEP over TLS."; "Support path-key as per RFC 5520.";
} }
feature sr { feature p2mp {
description description
"Support Segment Routing for PCE."; "Support P2MP as per RFC 6006.";
} }
/* feature stateful {
* Groupings description
*/ "Support stateful PCE.";
}
grouping pcep-entity-info{ feature stateful-sync-opt {
description description
"This grouping defines the attributes for PCEP entity."; "Support stateful sync optimization";
leaf connect-timer { }
type uint32 { feature pce-initiated {
range "1..65535"; description
} "Support PCE-Initiated LSP.";
units "seconds"; }
default 60;
description
"The time in seconds that the PCEP entity will wait
to establish a TCP connection with a peer. If a
TCP connection is not established within this time
then PCEP aborts the session setup attempt.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
} feature tls {
description
"Support PCEP over TLS.";
}
leaf connect-max-retry { feature sr {
type uint32; description
default 5; "Support Segment Routing for PCE.";
description }
"The maximum number of times the system tries to
establish a TCP connection to a peer before the
session with the peer transitions to the idle
state.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf init-backoff-timer { /*
type uint32 { * Groupings
range "1..65535"; */
}
units "seconds";
description
"The initial back-off time in seconds for retrying
a failed session setup attempt to a peer.
The back-off time increases for each failed
session setup attempt, until a maximum back-off
time is reached. The maximum back-off time is
max-backoff-timer.";
}
leaf max-backoff-timer { grouping pcep-entity-info{
type uint32; description
units "seconds"; "This grouping defines the attributes for PCEP entity.";
description leaf connect-timer {
"The maximum back-off time in seconds for retrying type uint32 {
a failed session setup attempt to a peer. range "1..65535";
The back-off time increases for each failed session }
setup attempt, until this maximum value is reached. units "seconds";
Session setup attempts then repeat periodically default 60;
without any further increase in back-off time."; description
} "The time in seconds that the PCEP entity will wait
to establish a TCP connection with a peer. If a
TCP connection is not established within this time
then PCEP aborts the session setup attempt.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf open-wait-timer { leaf connect-max-retry {
type uint32 { type uint32;
range "1..65535"; default 5;
} description
units "seconds"; "The maximum number of times the system tries to
default 60; establish a TCP connection to a peer before the
description session with the peer transitions to the idle
"The time in seconds that the PCEP entity will wait state.";
to receive an Open message from a peer after the
TCP connection has come up.
If no Open message is received within this time then
PCEP terminates the TCP connection and deletes the
associated sessions.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf keep-wait-timer { reference
type uint32 { "RFC 5440: Path Computation Element (PCE)
range "1..65535"; Communication Protocol (PCEP)";
} }
units "seconds";
default 60;
description
"The time in seconds that the PCEP entity will wait
to receive a Keepalive or PCErr message from a peer
during session initialization after receiving an
Open message. If no Keepalive or PCErr message is
received within this time then PCEP terminates the
TCP connection and deletes the associated
sessions.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf keep-alive-timer { leaf init-backoff-timer {
type uint32 { type uint32 {
range "0..255"; range "1..65535";
} }
units "seconds"; units "seconds";
default 30; description
description "The initial back-off time in seconds for retrying
"The keep alive transmission timer that this PCEP a failed session setup attempt to a peer.
entity will propose in the initial OPEN message of The back-off time increases for each failed
each session it is involved in. This is the session setup attempt, until a maximum back-off
maximum time between two consecutive messages sent time is reached. The maximum back-off time is
to a peer. Zero means that the PCEP entity prefers max-backoff-timer.";
not to send Keepalives at all. }
Note that the actual Keepalive transmission
intervals, in either direction of an active PCEP
session, are determined by negotiation between the
peers as specified by RFC 5440, and so may differ
from this configured value.";
reference leaf max-backoff-timer {
"RFC 5440: Path Computation Element (PCE) type uint32;
Communication Protocol (PCEP)"; units "seconds";
} description
"The maximum back-off time in seconds for retrying
a failed session setup attempt to a peer.
The back-off time increases for each failed session
setup attempt, until this maximum value is reached.
Session setup attempts then repeat periodically
without any further increase in back-off time.";
}
leaf dead-timer { leaf open-wait-timer {
type uint32 { type uint32 {
range "0..255"; range "1..65535";
} }
units "seconds"; units "seconds";
must "(. > ../keep-alive-timer)" { default 60;
error-message "The dead timer must be " description
+ "larger than the keep alive timer"; "The time in seconds that the PCEP entity will wait
description to receive an Open message from a peer after the
"This value MUST be greater than TCP connection has come up.
keep-alive-timer."; If no Open message is received within this time then
PCEP terminates the TCP connection and deletes the
associated sessions.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf keep-wait-timer {
type uint32 {
range "1..65535";
}
units "seconds";
default 60;
description
"The time in seconds that the PCEP entity will wait
to receive a Keepalive or PCErr message from a peer
during session initialization after receiving an
Open message. If no Keepalive or PCErr message is
received within this time then PCEP terminates the
TCP connection and deletes the associated
sessions.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
} leaf keep-alive-timer {
default 120; type uint32 {
description range "0..255";
"The dead timer that this PCEP entity will propose }
in the initial OPEN message of each session it is units "seconds";
involved in. This is the time after which a peer default 30;
should declare a session down if it does not description
receive any PCEP messages. Zero suggests that the "The keep alive transmission timer that this PCEP
peer does not run a dead timer at all." ; entity will propose in the initial OPEN message of
reference each session it is involved in. This is the
"RFC 5440: Path Computation Element (PCE) maximum time between two consecutive messages sent
Communication Protocol (PCEP)"; to a peer. Zero means that the PCEP entity prefers
} not to send Keepalives at all.
Note that the actual Keepalive transmission
intervals, in either direction of an active PCEP
session, are determined by negotiation between the
peers as specified by RFC 5440, and so may differ
from this configured value.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf allow-negotiation{ leaf dead-timer {
type boolean; type uint32 {
description range "0..255";
"Whether the PCEP entity will permit negotiation of }
session parameters."; units "seconds";
} must "(. > ../keep-alive-timer)" {
error-message "The dead timer must be "
+ "larger than the keep alive timer";
description
"This value MUST be greater than
keep-alive-timer.";
leaf max-keep-alive-timer{ }
type uint32 { default 120;
range "0..255"; description
} "The dead timer that this PCEP entity will propose
units "seconds"; in the initial OPEN message of each session it is
description involved in. This is the time after which a peer
"In PCEP session parameter negotiation in seconds, should declare a session down if it does not
the maximum value that this PCEP entity will receive any PCEP messages. Zero suggests that the
accept from a peer for the interval between peer does not run a dead timer at all." ;
Keepalive transmissions. Zero means that the PCEP reference
entity will allow no Keepalive transmission at "RFC 5440: Path Computation Element (PCE)
all." ; Communication Protocol (PCEP)";
} }
leaf max-dead-timer{ leaf allow-negotiation{
type uint32 { type boolean;
range "0..255"; description
} "Whether the PCEP entity will permit negotiation of
units "seconds"; session parameters.";
description }
"In PCEP session parameter negotiation in seconds,
the maximum value that this PCEP entity will accept
from a peer for the Dead timer. Zero means that
the PCEP entity will allow not running a Dead
timer.";
}
leaf min-keep-alive-timer{ leaf max-keep-alive-timer{
type uint32 { type uint32 {
range "0..255"; range "0..255";
} }
units "seconds"; units "seconds";
description description
"In PCEP session parameter negotiation in seconds, "In PCEP session parameter negotiation in seconds,
the minimum value that this PCEP entity will the maximum value that this PCEP entity will
accept for the interval between Keepalive accept from a peer for the interval between
transmissions. Zero means that the PCEP entity Keepalive transmissions. Zero means that the PCEP
insists on no Keepalive transmission at all."; entity will allow no Keepalive transmission at
} all." ;
}
leaf min-dead-timer{ leaf max-dead-timer{
type uint32 { type uint32 {
range "0..255"; range "0..255";
} }
units "seconds"; units "seconds";
description description
"In PCEP session parameter negotiation in "In PCEP session parameter negotiation in seconds,
seconds, the minimum value that this PCEP entity the maximum value that this PCEP entity will accept
will accept for the Dead timer. Zero means that from a peer for the Dead timer. Zero means that
the PCEP entity insists on not running a Dead the PCEP entity will allow not running a Dead
timer."; timer.";
} }
leaf sync-timer{ leaf min-keep-alive-timer{
if-feature svec; type uint32 {
type uint32 { range "0..255";
range "0..65535"; }
} units "seconds";
units "seconds"; description
default 60; "In PCEP session parameter negotiation in seconds,
description the minimum value that this PCEP entity will
"The value of SyncTimer in seconds is used in the accept for the interval between Keepalive
case of synchronized path computation request transmissions. Zero means that the PCEP entity
using the SVEC object. Consider the case where a insists on no Keepalive transmission at all.";
PCReq message is received by a PCE that contains }
the SVEC object referring to M synchronized path
computation requests. If after the expiration of
the SyncTimer all the M path computation requests
have not been, received a protocol error is
triggered and the PCE MUST cancel the whole set
of path computation requests.
The aim of the SyncTimer is to avoid the storage
of unused synchronized requests should one of
them get lost for some reasons (for example, a
misbehaving PCC).
Zero means that the PCEP entity does not use the
SyncTimer.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf request-timer{ leaf min-dead-timer{
type uint32 { type uint32 {
range "1..65535"; range "0..255";
} }
units "seconds"; units "seconds";
description description
"The maximum time that the PCEP entity will wait "In PCEP session parameter negotiation in
for a response to a PCReq message."; seconds, the minimum value that this PCEP entity
} will accept for the Dead timer. Zero means that
the PCEP entity insists on not running a Dead
timer.";
}
leaf max-sessions{ leaf sync-timer{
type uint32; if-feature svec;
description type uint32 {
"Maximum number of sessions involving this PCEP range "0..65535";
entity that can exist at any time."; }
} units "seconds";
default 60;
description
"The value of SyncTimer in seconds is used in the
case of synchronized path computation request
using the SVEC object. Consider the case where a
PCReq message is received by a PCE that contains
the SVEC object referring to M synchronized path
computation requests. If after the expiration of
the SyncTimer all the M path computation requests
have not been, received a protocol error is
triggered and the PCE MUST cancel the whole set
of path computation requests.
The aim of the SyncTimer is to avoid the storage
of unused synchronized requests should one of
them get lost for some reasons (for example, a
misbehaving PCC).
Zero means that the PCEP entity does not use the
SyncTimer.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf max-unknown-reqs{ leaf request-timer{
type uint32; type uint32 {
default 5; range "1..65535";
description }
"The maximum number of unrecognized requests and units "seconds";
replies that any session on this PCEP entity is description
willing to accept per minute before terminating "The maximum time that the PCEP entity will wait
the session. for a response to a PCReq message.";
A PCRep message contains an unrecognized reply }
if it contains an RP object whose request ID
does not correspond to any in-progress request
sent by this PCEP entity.
A PCReq message contains an unrecognized request
if it contains an RP object whose request ID is
zero.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf max-unknown-msgs{ leaf max-sessions{
type uint32; type uint32;
default 5; description
description "Maximum number of sessions involving this PCEP
"The maximum number of unknown messages that any entity that can exist at any time.";
session on this PCEP entity is willing to accept }
per minute before terminating the session.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
}//pcep-entity-info leaf max-unknown-reqs{
type uint32;
default 5;
description
"The maximum number of unrecognized requests and
replies that any session on this PCEP entity is
willing to accept per minute before terminating
the session.
A PCRep message contains an unrecognized reply
if it contains an RP object whose request ID
does not correspond to any in-progress request
sent by this PCEP entity.
A PCReq message contains an unrecognized request
if it contains an RP object whose request ID is
zero.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
grouping pce-scope{ leaf max-unknown-msgs{
description type uint32;
"This grouping defines PCE path computation scope default 5;
information which maybe relevant to PCE selection. description
This information corresponds to PCE auto-discovery "The maximum number of unknown messages that any
information."; session on this PCEP entity is willing to accept
reference per minute before terminating the session.";
"RFC 5088: OSPF Protocol Extensions for Path reference
Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Discovery Communication Protocol (PCEP)";
RFC 5089: IS-IS Protocol Extensions for Path }
Computation Element (PCE)
Discovery";
leaf intra-area-scope{
type boolean;
default true;
description
"PCE can compute intra-area paths.";
}
leaf intra-area-pref{
type uint8{
range "0..7";
}
description
"The PCE's preference for intra-area TE LSP
computation.";
}
leaf inter-area-scope{
type boolean;
default false;
description
"PCE can compute inter-area paths.";
}
leaf inter-area-scope-default{
type boolean;
default false;
description
"PCE can act as a default PCE for inter-area
path computation.";
}
leaf inter-area-pref{
type uint8{
range "0..7";
}
description
"The PCE's preference for inter-area TE LSP
computation.";
}
leaf inter-as-scope{
type boolean;
default false;
description
"PCE can compute inter-AS paths.";
}
leaf inter-as-scope-default{
type boolean;
default false;
description
"PCE can act as a default PCE for inter-AS
path computation.";
}
leaf inter-as-pref{
type uint8{
range "0..7";
}
description
"The PCE's preference for inter-AS TE LSP
computation.";
} }//pcep-entity-info
leaf inter-layer-scope{
type boolean;
default false;
description
"PCE can compute inter-layer paths.";
}
leaf inter-layer-pref{
type uint8{
range "0..7";
}
description
"The PCE's preference for inter-layer TE LSP
computation.";
}
}//pce-scope
grouping domain{ grouping pce-scope{
description description
"This grouping specifies a Domain where the "This grouping defines PCE path computation scope
PCEP speaker has topology visibility."; information which maybe relevant to PCE selection.
leaf domain-type{ This information corresponds to PCE auto-discovery
type domain-type; information.";
description reference
"The domain type."; "RFC 5088: OSPF Protocol Extensions for Path
} Computation Element (PCE)
leaf domain{ Discovery
type domain; RFC 5089: IS-IS Protocol Extensions for Path
description Computation Element (PCE)
"The domain Information."; Discovery";
} leaf intra-area-scope{
}//domain type boolean;
default true;
description
"PCE can compute intra-area paths.";
}
leaf intra-area-pref{
type uint8{
range "0..7";
}
description
"The PCE's preference for intra-area TE LSP
computation.";
}
leaf inter-area-scope{
type boolean;
default false;
description
"PCE can compute inter-area paths.";
}
leaf inter-area-scope-default{
type boolean;
default false;
description
"PCE can act as a default PCE for inter-area
path computation.";
}
leaf inter-area-pref{
type uint8{
range "0..7";
}
description
"The PCE's preference for inter-area TE LSP
computation.";
}
leaf inter-as-scope{
type boolean;
default false;
description
"PCE can compute inter-AS paths.";
}
leaf inter-as-scope-default{
type boolean;
default false;
description
"PCE can act as a default PCE for inter-AS
path computation.";
}
leaf inter-as-pref{
type uint8{
range "0..7";
}
description
"The PCE's preference for inter-AS TE LSP
computation.";
}
leaf inter-layer-scope{
type boolean;
default false;
description
"PCE can compute inter-layer paths.";
}
leaf inter-layer-pref{
type uint8{
range "0..7";
}
description
"The PCE's preference for inter-layer TE LSP
computation.";
}
}//pce-scope
grouping capability{ grouping domain{
description description
"This grouping specifies a capability "This grouping specifies a Domain where the
information of local PCEP entity. This maybe PCEP speaker has topology visibility.";
relevant to PCE selection as well. This leaf domain-type{
information corresponds to PCE auto-discovery type domain-type;
information."; description
reference "The domain type.";
"RFC 5088: OSPF Protocol Extensions for Path }
Computation Element (PCE) leaf domain{
Discovery type domain;
RFC 5089: IS-IS Protocol Extensions for Path description
Computation Element (PCE) "The domain Information.";
Discovery"; }
leaf gmpls{ }//domain
if-feature gmpls;
type boolean;
description
"Path computation with GMPLS link
constraints.";
}
leaf bi-dir{
type boolean;
description
"Bidirectional path computation.";
}
leaf diverse{
type boolean;
description
"Diverse path computation.";
}
leaf load-balance{
type boolean;
description
"Load-balanced path computation.";
}
leaf synchronize{
if-feature svec;
type boolean;
description
"Synchronized paths computation.";
}
leaf objective-function{
if-feature objective-function;
type boolean;
description
"Support for multiple objective functions.";
}
leaf add-path-constraint{
type boolean;
description
"Support for additive path constraints (max
hop count, etc.).";
}
leaf prioritization{
type boolean;
description
"Support for request prioritization.";
}
leaf multi-request{
type boolean;
description
"Support for multiple requests per message.";
} grouping capability{
leaf gco{ description
if-feature gco; "This grouping specifies a capability
type boolean; information of local PCEP entity. This maybe
description relevant to PCE selection as well. This
"Support for Global Concurrent Optimization information corresponds to PCE auto-discovery
(GCO)."; information.";
} reference
leaf p2mp{ "RFC 5088: OSPF Protocol Extensions for Path
if-feature p2mp; Computation Element (PCE)
type boolean; Discovery
description RFC 5089: IS-IS Protocol Extensions for Path
"Support for P2MP path computation."; Computation Element (PCE)
} Discovery";
leaf gmpls{
if-feature gmpls;
type boolean;
description
"Path computation with GMPLS link
constraints.";
}
leaf bi-dir{
type boolean;
description
"Bidirectional path computation.";
}
leaf diverse{
type boolean;
description
"Diverse path computation.";
}
leaf load-balance{
type boolean;
description
"Load-balanced path computation.";
}
leaf synchronize{
if-feature svec;
type boolean;
description
"Synchronized paths computation.";
}
leaf objective-function{
if-feature objective-function;
type boolean;
description
"Support for multiple objective functions.";
}
leaf add-path-constraint{
type boolean;
description
"Support for additive path constraints (max
hop count, etc.).";
}
leaf prioritization{
type boolean;
description
"Support for request prioritization.";
}
leaf multi-request{
type boolean;
description
"Support for multiple requests per message.";
}
leaf gco{
if-feature gco;
type boolean;
description
"Support for Global Concurrent Optimization
(GCO).";
}
leaf p2mp{
if-feature p2mp;
type boolean;
description
"Support for P2MP path computation.";
}
container stateful{ container stateful{
if-feature stateful; if-feature stateful;
description description
"If stateful PCE feature is present"; "If stateful PCE feature is present";
leaf enabled{ leaf enabled{
type boolean; type boolean;
description description
"Enabled or Disabled"; "Enabled or Disabled";
} }
leaf active{ leaf active{
type boolean; type boolean;
description description
"Support for active stateful PCE."; "Support for active stateful PCE.";
} }
leaf pce-initiated{ leaf pce-initiated{
if-feature pce-initiated; if-feature pce-initiated;
type boolean; type boolean;
description description
"Support for PCE-initiated LSP."; "Support for PCE-initiated LSP.";
} }
leaf include-db-ver{ leaf include-db-ver{
if-feature stateful-sync-opt; if-feature stateful-sync-opt;
type boolean; type boolean;
description description
"Support inclusion of LSP-DB-VERSION "Support inclusion of LSP-DB-VERSION
in LSP object"; in LSP object";
} }
leaf trigger-resync{ leaf trigger-resync{
if-feature stateful-sync-opt; if-feature stateful-sync-opt;
type boolean; type boolean;
description description
"Support PCE triggered re-synchronization"; "Support PCE triggered re-synchronization";
} }
leaf trigger-initial-sync{ leaf trigger-initial-sync{
if-feature stateful-sync-opt; if-feature stateful-sync-opt;
type boolean; type boolean;
description description
"PCE triggered initial synchronization"; "PCE triggered initial synchronization";
} }
leaf incremental-sync{ leaf incremental-sync{
if-feature stateful-sync-opt; if-feature stateful-sync-opt;
type boolean; type boolean;
description description
"Support incremental (delta) sync"; "Support incremental (delta) sync";
}
}
container sr{
if-feature sr;
description
"If segment routing is supported";
leaf enabled{
type boolean;
description
"Enabled or Disabled";
}
} }
}//capability }
container sr{
if-feature sr;
description
"If segment routing is supported";
leaf enabled{
type boolean;
description
"Enabled or Disabled";
}
grouping info{ }
description }//capability
"This grouping specifies all information which
maybe relevant to both PCC and PCE.
This information corresponds to PCE auto-discovery
information.";
container domain{
description
"The local domain for the PCEP entity";
list domain{
key "domain-type domain";
description
"The local domain.";
uses domain{
description
"The local domain for the PCEP entity.";
}
}
}
container capability{
description
"The PCEP entity capability";
uses capability{ grouping info{
description description
"The PCEP entity supported "This grouping specifies all information which
capabilities."; maybe relevant to both PCC and PCE.
} This information corresponds to PCE auto-discovery
} information.";
container domain{
description
"The local domain for the PCEP entity";
list domain{
key "domain-type domain";
description
"The local domain.";
uses domain{
description
"The local domain for the PCEP entity.";
}
}
}
container capability{
description
"The PCEP entity capability";
uses capability{
description
"The PCEP entity supported
capabilities.";
}
}
}//info }//info
grouping pce-info{ grouping pce-info{
description description
"This grouping specifies all PCE information "This grouping specifies all PCE information
which maybe relevant to the PCE selection. which maybe relevant to the PCE selection.
This information corresponds to PCE auto-discovery This information corresponds to PCE auto-discovery
information."; information.";
container scope{ container scope{
description description
"The path computation scope"; "The path computation scope";
uses pce-scope; uses pce-scope;
} }
container neigh-domains{ container neigh-domains{
description description
"The list of neighbour PCE-Domain "The list of neighbour PCE-Domain
toward which a PCE can compute toward which a PCE can compute
paths"; paths";
list domain{ list domain{
key "domain-type domain"; key "domain-type domain";
description description
"The neighbour domain."; "The neighbour domain.";
uses domain{ uses domain{
description
"The PCE neighbour domain.";
}
}
}
}//pce-info
grouping lsp-state{
description
"This grouping defines the attributes for LSP in LSP-DB.
These are the attributes specifically from the PCEP
perspective";
leaf plsp-id{
type uint32{
range "1..1048575";
}
description
"A PCEP-specific identifier for the LSP. A PCC
creates a unique PLSP-ID for each LSP that is
constant for the lifetime of a PCEP session.
PLSP-ID is 20 bits with 0 and 0xFFFFF are
reserved";
}
leaf pcc-id{
type inet:ip-address;
description
"The local internet address of the PCC, that
generated the PLSP-ID.";
}
container lsp-ref{
description
"reference to ietf-te lsp state";
leaf source {
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:source";
}
description
"Tunnel sender address extracted from
SENDER_TEMPLATE object";
reference "RFC3209";
}
leaf destination {
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:"
+ "destination";
}
description
"Tunnel endpoint address extracted from
SESSION object";
reference "RFC3209";
}
leaf tunnel-id {
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:tunnel-id";
}
description
"Tunnel identifier used in the SESSION
that remains constant over the life
of the tunnel.";
reference "RFC3209";
}
leaf lsp-id {
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:lsp-id";
}
description
"Identifier used in the SENDER_TEMPLATE
and the FILTER_SPEC that can be changed
to allow a sender to share resources with
itself.";
reference "RFC3209";
}
leaf extended-tunnel-id {
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:"
+ "extended-tunnel-id";
}
description
"Extended Tunnel ID of the LSP.";
reference "RFC3209";
}
leaf type {
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:type";
}
description "LSP type P2P or P2MP";
}
}
leaf admin-state{
type boolean;
description
"The desired operational state";
}
leaf operational-state{
type operational-state;
description
"The operational status of the LSP";
}
container delegated{
description
"The delegation related parameters";
leaf enabled{
type boolean;
description
"LSP is delegated or not";
}
leaf peer{
type leafref {
path "/pcep-state/entity/peers/peer/addr";
}
must "(../enabled = true())"
{
error-message
"The LSP must be delegated";
description
"When LSP is a delegated LSP";
}
description
"At the PCC, the reference to the PCEP peer to
which LSP is delegated; At the PCE, the
reference to the PCEP peer which delegated this
LSP";
}
leaf srp-id{
type uint32;
description
"The last SRP-ID-number associated with this
LSP.";
}
}
container initiation {
if-feature pce-initiated;
description
"The PCE initiation related parameters";
leaf enabled{
type boolean;
description
"LSP is PCE-initiated or not";
}
leaf peer{
type leafref {
path "/pcep-state/entity/peers/peer/addr";
}
must "(../enabled = true())"
{
error-message
"The LSP must be PCE-Initiated";
description
"When the LSP must be PCE-Initiated";
}
description
"At the PCC, the reference to the PCEP peer
that initiated this LSP; At the PCE, the
reference to the PCEP peer where the LSP
is initiated";
}
}
leaf symbolic-path-name{
type string;
description
"The symbolic path name associated with the LSP.";
}
leaf last-error{
type lsp-error;
description
"The last error for the LSP.";
}
leaf pst{
type pst;
default "rsvp-te";
description
"The Path Setup Type";
}
}//lsp-state
grouping notification-instance-hdr {
description
"This group describes common instance specific data
for notifications.";
leaf peer-addr {
type leafref {
path "/pcep-state/entity/peers/peer/addr";
}
description
"Reference to peer address";
}
}// notification-instance-hdr
grouping notification-session-hdr {
description
"This group describes common session instance specific
data for notifications.";
leaf session-initiator {
type leafref {
path "/pcep-state/entity/peers/peer/sessions/" +
"session/initiator";
}
description
"Reference to pcep session initiator leaf";
}
}// notification-session-hdr
grouping stateful-pce-parameter {
description
"This group describes stateful PCE specific
parameters.";
leaf state-timeout{
type uint32;
units "seconds";
description
"When a PCEP session is terminated, a PCC
waits for this time period before flushing
LSP state associated with that PCEP session
and reverting to operator-defined default
parameters or behaviours.";
}
leaf redelegation-timeout{
when "../../role = 'pcc'" +
"or " +
"../../role = 'pcc-and-pce'"
{
description
"Valid at PCC";
}
type uint32;
units "seconds";
description
"When a PCEP session is terminated, a PCC
waits for this time period before revoking
LSP delegation to a PCE and attempting to
redelegate LSPs associated with the
terminated PCEP session to an alternate
PCE.";
}
leaf rpt-non-pcep-lsp{
when "../../role = 'pcc'" +
"or " +
"../../role = 'pcc-and-pce'"
{
description
"Valid at PCC";
}
type boolean;
default true;
description
"If set, a PCC reports LSPs that are not
controlled by any PCE (for example, LSPs
that are statically configured at the
PCC). ";
}
}
grouping authentication {
description "Authentication Information";
choice auth-type-selection {
description
"Options for expressing authentication setting.";
case auth-key-chain {
leaf key-chain {
type key-chain:key-chain-ref;
description
"key-chain name.";
}
}
case auth-key {
leaf crypto-algorithm {
type identityref {
base key-chain:crypto-algorithm;
}
mandatory true;
description description
"The PCE neighbour domain."; "Cryptographic algorithm associated with key.";
} }
} container key-string {
} description
}//pce-info "The key string.";
nacm:default-deny-all;
choice key-string-style {
description
"Key string styles";
case keystring {
leaf keystring {
type string;
description
"Key string in ASCII format.";
}
}
case hexadecimal {
if-feature "key-chain:hex-key-string";
leaf hexadecimal-string {
type yang:hex-string;
description
"Key in hexadecimal string format. When
compared to ASCII, specification in
hexadecimal affords greater key
entropy with the same number of
octets. Additionally, it discourages
usage of well-known words or
numbers.";
}
}
}
}
}
case auth-tls {
if-feature tls;
container tls {
description
"TLS related information - TBD";
}
}
}
}
grouping pcep-stats{ grouping path-key {
description description "Path-key related information";
"This grouping defines statistics for PCEP. It is used leaf enabled{
for both peer and current session."; type boolean;
leaf avg-rsp-time{ description
type uint32; "Enabled or Disabled";
units "milliseconds"; }
must "(/pcep-state/entity/peers/peer/role != 'pcc'" + leaf discard-timer {
" or " + type uint32;
"(/pcep-state/entity/peers/peer/role = 'pcc'" + units "minutes";
" and (. = 0)))" { default 10;
error-message description
"Invalid average response time"; "A timer to discard unwanted path-keys";
description }
"If role is pcc then this leaf is meaningless leaf reuse-time {
and is set to zero."; type uint32;
} units "minutes";
description default 30;
"The average response time. description
If an average response time has not been "A time after which the path-keys could be reused";
calculated then this leaf has the value zero."; }
} leaf pce-id {
type inet:ip-address;
description
"PCE Address to be used in each Path-Key Subobject
(PKS)";
}
}
leaf lwm-rsp-time{ grouping path-key-state {
type uint32; description "Table to allow inspection of path-keys";
units "milliseconds"; list path-keys{
must "(/pcep-state/entity/peers/peer/role != 'pcc'" + key "path-key";
" or " +
"(/pcep-state/entity/peers/peer/role = 'pcc'" +
" and (. = 0)))" {
error-message
"Invalid smallest (low-water mark)
response time";
description
"If role is pcc then this leaf is meaningless
and is set to zero.";
}
description
"The smallest (low-water mark) response time seen.
If no responses have been received then this
leaf has the value zero.";
}
leaf hwm-rsp-time{ description
type uint32; "The list of path-keys generated by the PCE";
units "milliseconds";
must "(/pcep-state/entity/peers/peer/role != 'pcc'" +
" or " +
"(/pcep-state/entity/peers/peer/role = 'pcc'" +
" and (. = 0)))" {
error-message
"Invalid greatest (high-water mark)
response time seen";
description
"If role is pcc then this field is
meaningless and is set to zero.";
} leaf path-key {
description type uint16;
"The greatest (high-water mark) response time seen. description
If no responses have been received then this object "The identifier, or token used to represent
has the value zero."; the Confidential Path Segment (CPS) within
} the context of the PCE";
}
container cps {
description
"The Confidential Path Segment (CPS)";
list explicit-route-objects {
key "index";
description
"List of explicit route objects";
leaf num-pcreq-sent{ leaf explicit-route-usage {
type yang:counter32; type identityref {
description base te-types:route-usage-type;
"The number of PCReq messages sent."; }
} description
"An explicit-route hop action.";
}
leaf num-pcreq-rcvd{ uses te-types:explicit-route-hop_config;
type yang:counter32; }
description }
"The number of PCReq messages received."; leaf pcc-original {
} type leafref {
path "/pcep-state/entity/peers/peer/addr";
}
description
"Reference to PCC peer address of
the original request";
}
leaf req-id {
type uint32;
description
"The request ID of the original PCReq.";
}
leaf retrieved {
type boolean;
description
"If path-key has been retrieved yet";
}
leaf pcc-retrieved {
type leafref {
path "/pcep-state/entity/peers/peer/addr";
}
must "(../retrieved = true())"
{
error-message
"The Path-key should be retreived";
description
"When Path-Key has been retreived";
}
description
"Reference to PCC peer address which
retreived the path-key";
}
leaf creation-time {
type yang:timestamp;
description
"The timestamp value at the time this Path-Key
was created.";
}
leaf discard-time {
type uint32;
units "minutes";
description
"A time after which this path-keys will be
discarded";
}
leaf reuse-time {
type uint32;
units "minutes";
description
"A time after which this path-keys could be
reused";
}
}
}
leaf num-pcrep-sent{ grouping of-list {
type yang:counter32; description "List of OF";
description list objective-function{
"The number of PCRep messages sent."; key "of";
}
leaf num-pcrep-rcvd{ description
type yang:counter32; "The list of authorized OF";
description
"The number of PCRep messages received.";
}
leaf num-pcerr-sent{ leaf of {
type yang:counter32; type objective-function;
description description
"The number of PCErr messages sent."; "The OF authorized";
} }
}
}
grouping association {
description
"Generic Association parameters";
leaf type {
type "assoc-type";
description
"The PCEP association type";
}
leaf id {
type uint16;
description
"PCEP Association ID";
}
leaf source {
type inet:ip-address;
description
"PCEP Association Source.";
}
leaf global-source {
type uint32;
description
"PCEP Association Global
Source.";
}
leaf extended-id{
type string;
description
"Additional information to
support unique identification.";
}
}
grouping association-ref {
description
"Generic Association parameters";
leaf id {
type leafref {
path "/pcep-state/entity/lsp-db/"
+ "association-list/id";
}
description
"PCEP Association ID";
}
leaf source {
type leafref {
path "/pcep-state/entity/lsp-db/"
+ "association-list/source";
}
description
"PCEP Association Source.";
leaf num-pcerr-rcvd{ }
type yang:counter32; leaf global-source {
description type leafref {
"The number of PCErr messages received."; path "/pcep-state/entity/lsp-db/"
} + "association-list/global-source";
}
description
"PCEP Association Global
Source.";
}
leaf extended-id{
type leafref {
path "/pcep-state/entity/lsp-db/"
+ "association-list/extended-id";
}
description
"Additional information to
support unique identification.";
}
}
/*
* Configuration data nodes
*/
container pcep{
leaf num-pcntf-sent{ presence
type yang:counter32; "The PCEP is enabled";
description
"The number of PCNtf messages sent.";
}
leaf num-pcntf-rcvd{
type yang:counter32;
description
"The number of PCNtf messages received.";
}
leaf num-keepalive-sent{ description
type yang:counter32; "Parameters for list of configured PCEP entities
description on the device.";
"The number of Keepalive messages sent.";
}
leaf num-keepalive-rcvd{ container entity {
type yang:counter32;
description
"The number of Keepalive messages received.";
}
leaf num-unknown-rcvd{ description
type yang:counter32; "The configured PCEP entity on the device.";
description
"The number of unknown messages received.";
}
leaf num-corrupt-rcvd{ leaf addr {
type yang:counter32; type inet:ip-address;
description mandatory true;
"The number of corrupted PCEP message received."; description
} "The local Internet address of this PCEP
entity.
If operating as a PCE server, the PCEP
entity listens on this address.
If operating as a PCC, the PCEP entity
binds outgoing TCP connections to this
address.
leaf num-req-sent{ It is possible for the PCEP entity to
type yang:counter32; operate both as a PCC and a PCE Server, in
description which case it uses this address both to
"The number of requests sent. A request corresponds listen for incoming TCP connections and to
1:1 with an RP object in a PCReq message. This might bind outgoing TCP connections.";
be greater than num-pcreq-sent because multiple }
requests can be batched into a single PCReq
message.";
}
leaf num-req-sent-pend-rep{ leaf enabled {
type yang:counter32; type boolean;
description default true;
"The number of requests that have been sent for description
which a response is still pending."; "The administrative status of this PCEP
} Entity.";
}
leaf num-req-sent-ero-rcvd{ leaf role {
type yang:counter32; type pcep-role;
description mandatory true;
"The number of requests that have been sent for description
which a response with an ERO object was received. "The role that this entity can play.
Such responses indicate that a path was Takes one of the following values.
successfully computed by the peer."; - unknown(0): this PCEP Entity role is not
} known.
- pcc(1): this PCEP Entity is a PCC.
- pce(2): this PCEP Entity is a PCE.
- pcc-and-pce(3): this PCEP Entity is both
a PCC and a PCE.";
}
leaf num-req-sent-nopath-rcvd{ leaf description {
type yang:counter32; type string;
description description
"The number of requests that have been sent for "Description of the PCEP entity configured
which a response with a NO-PATH object was by the user";
received. Such responses indicate that the peer }
could not find a path to satisfy the
request.";
}
leaf num-req-sent-cancel-rcvd{ leaf speaker-entity-id{
type yang:counter32; if-feature stateful-sync-opt;
description type string;
"The number of requests that were cancelled with description
a PCNtf message. "The Speaker Entity Identifier";
This might be different than num-pcntf-rcvd because }
not all PCNtf messages are used to cancel requests,
and a single PCNtf message can cancel multiple
requests.";
}
leaf num-req-sent-error-rcvd{ uses info {
type yang:counter32; description
description "Local PCEP entity information";
"The number of requests that were rejected with a }
PCErr message. container pce-info {
This might be different than num-pcerr-rcvd because when "../role = 'pce'" +
not all PCErr messages are used to reject requests, "or " +
and a single PCErr message can reject multiple "../role = 'pcc-and-pce'"
requests."; {
} description
"Valid at PCE";
}
uses pce-info {
description
"Local PCE information";
}
container path-key {
if-feature path-key;
uses path-key {
description
"Path-Key Configuration";
}
description
"Path-Key Configuration";
}
leaf num-req-sent-timeout{ description
type yang:counter32; "The Local PCE Entity PCE information";
description }
"The number of requests that have been sent to a peer
and have been abandoned because the peer has taken too
long to respond to them.";
}
leaf num-req-sent-cancel-sent{
type yang:counter32;
description
"The number of requests that were sent to the peer and
explicitly cancelled by the local PCEP entity sending
a PCNtf.";
}
leaf num-req-rcvd{ uses authentication {
type yang:counter32; description
description "Local PCEP entity authentication information";
"The number of requests received. A request }
corresponds 1:1 with an RP object in a PCReq
message.
This might be greater than num-pcreq-rcvd because
multiple requests can be batched into a single
PCReq message.";
}
leaf num-req-rcvd-pend-rep{ uses pcep-entity-info {
type yang:counter32; description
description "The configuration related to the PCEP
"The number of requests that have been received for entity.";
which a response is still pending."; }
}
leaf num-req-rcvd-ero-sent{ leaf pcep-notification-max-rate {
type yang:counter32; type uint32;
description mandatory true;
"The number of requests that have been received for description
which a response with an ERO object was sent. Such "This variable indicates the maximum number of
responses indicate that a path was successfully notifications issued per second. If events
computed by the local PCEP entity."; occur more rapidly, the implementation may
} simply fail to emit these notifications during
that period, or may queue them until an
appropriate time. A value of 0 means no
notifications are emitted and all should be
discarded (that is, not queued).";
}
leaf num-req-rcvd-nopath-sent{ container stateful-parameter{
type yang:counter32; if-feature stateful;
description must "(/pcep/entity/capability/stateful/enabled" +
"The number of requests that have been received for " = true())"
which a response with a NO-PATH object was sent. Such {
responses indicate that the local PCEP entity could error-message
not find a path to satisfy the request."; "The Stateful PCE must be enabled";
} description
"When PCEP entity is stateful
enabled";
}
uses stateful-pce-parameter;
leaf num-req-rcvd-cancel-sent{ description
type yang:counter32; "The configured stateful parameters";
description }
"The number of requests received that were cancelled
by the local PCEP entity sending a PCNtf message.
This might be different than num-pcntf-sent because
not all PCNtf messages are used to cancel requests,
and a single PCNtf message can cancel multiple
requests.";
}
leaf num-req-rcvd-error-sent{ container of-list{
type yang:counter32; when "../role = 'pce'" +
description "or " +
"The number of requests received that were cancelled "../role = 'pcc-and-pce'"
by the local PCEP entity sending a PCErr message. {
This might be different than num-pcerr-sent because description
not all PCErr messages are used to cancel requests, "Valid at PCE";
and a single PCErr message can cancel multiple }
requests."; if-feature objective-function;
}
leaf num-req-rcvd-cancel-rcvd{ uses of-list;
type yang:counter32;
description
"The number of requests that were received from the
peer and explicitly cancelled by the peer sending
a PCNtf.";
}
leaf num-rep-rcvd-unknown{ description
type yang:counter32; "The authorized OF-List at PCE for all peers";
description }
"The number of responses to unknown requests
received. A response to an unknown request is a
response whose RP object does not contain the
request ID of any request that is currently
outstanding on the session.";
}
leaf num-req-rcvd-unknown{ container peers{
type yang:counter32; when "../role = 'pcc'" +
description "or " +
"The number of unknown requests that have been "../role = 'pcc-and-pce'"
received. An unknown request is a request {
whose RP object contains a request ID of description
zero."; "Valid at PCC";
} }
description
"The list of configured peers for the
entity (remote PCE)";
list peer{
key "addr";
container svec{ description
if-feature svec; "The peer configured for the entity.
description (remote PCE)";
"If synchronized path computation is supported";
leaf num-svec-sent{
type yang:counter32;
description
"The number of SVEC objects sent in PCReq messages.
An SVEC object represents a set of synchronized
requests.";
}
leaf num-svec-req-sent{ leaf addr {
type yang:counter32; type inet:ip-address;
description description
"The number of requests sent that appeared in one "The local Internet address of this
or more SVEC objects."; PCEP peer.";
} }
leaf num-svec-rcvd{ leaf description {
type yang:counter32; type string;
description description
"The number of SVEC objects received in PCReq "Description of the PCEP peer
messages. An SVEC object represents a set of configured by the user";
synchronized requests."; }
} uses info {
description
"PCE Peer information";
}
uses pce-info {
description
"PCE Peer information";
}
leaf num-svec-req-rcvd{ leaf delegation-pref{
type yang:counter32; if-feature stateful;
description type uint8{
"The number of requests received that appeared range "0..7";
in one or more SVEC objects."; }
} must "(/pcep/entity/capability/stateful" +
} "/active = true())"
container stateful{ {
if-feature stateful; error-message
description "The Active Stateful PCE must be
"Stateful PCE related statistics"; enabled";
leaf num-pcrpt-sent{ description
type yang:counter32; "When PCEP entity is active stateful
description enabled";
"The number of PCRpt messages sent."; }
} description
"The PCE peer delegation preference.";
}
uses authentication {
description
"PCE Peer authentication";
}
}//peer
}//peers
}//entity
}//pcep
leaf num-pcrpt-rcvd{ /*
type yang:counter32; * Operational data nodes
description */
"The number of PCRpt messages received.";
}
leaf num-pcupd-sent{ container pcep-state{
type yang:counter32; config false;
description description
"The number of PCUpd messages sent."; "The list of operational PCEP entities on the
} device.";
leaf num-pcupd-rcvd{ container entity{
type yang:counter32; description
description "The operational PCEP entity on the device.";
"The number of PCUpd messages received.";
}
leaf num-rpt-sent{ leaf addr {
type yang:counter32; type inet:ip-address;
description description
"The number of LSP Reports sent. A LSP report "The local Internet address of this PCEP
corresponds 1:1 with an LSP object in a PCRpt entity.
message. This might be greater than If operating as a PCE server, the PCEP
num-pcrpt-sent because multiple reports can entity listens on this address.
be batched into a single PCRpt message."; If operating as a PCC, the PCEP entity
} binds outgoing TCP connections to this
address.
It is possible for the PCEP entity to
operate both as a PCC and a PCE Server, in
which case it uses this address both to
listen for incoming TCP connections and to
bind outgoing TCP connections.";
}
leaf num-rpt-rcvd{ leaf index{
type yang:counter32; type uint32;
description description
"The number of LSP Reports received. A LSP report "The index of the operational PECP
corresponds 1:1 with an LSP object in a PCRpt entity";
message. }
This might be greater than num-pcrpt-rcvd because leaf admin-status {
multiple reports can be batched into a single type pcep-admin-status;
PCRpt message."; description
} "The administrative status of this PCEP Entity.
This is the desired operational status as
currently set by an operator or by default in
the implementation. The value of enabled
represents the current status of an attempt
to reach this desired status.";
}
leaf num-rpt-rcvd-error-sent{ leaf oper-status {
type yang:counter32; type pcep-admin-status;
description description
"The number of reports of LSPs received that were "The operational status of the PCEP entity.
responded by the local PCEP entity by sending a Takes one of the following values.
PCErr message."; - oper-status-up(1): the PCEP entity is
} active.
- oper-status-down(2): the PCEP entity is
inactive.
- oper-status-going-up(3): the PCEP entity is
activating.
- oper-status-going-down(4): the PCEP entity is
deactivating.
- oper-status-failed(5): the PCEP entity has
failed and will recover when possible.
- oper-status-failed-perm(6): the PCEP entity
has failed and will not recover without
operator intervention.";
}
leaf num-upd-sent{ leaf role {
type yang:counter32; type pcep-role;
description description
"The number of LSP updates sent. A LSP update "The role that this entity can play.
corresponds 1:1 with an LSP object in a PCUpd Takes one of the following values.
message. This might be greater than - unknown(0): this PCEP entity role is
num-pcupd-sent because multiple updates can not known.
be batched into a single PCUpd message."; - pcc(1): this PCEP entity is a PCC.
- pce(2): this PCEP entity is a PCE.
- pcc-and-pce(3): this PCEP entity is
both a PCC and a PCE.";
}
} leaf description {
type string;
description
"Description of the PCEP entity configured
by the user";
}
leaf num-upd-rcvd{ leaf speaker-entity-id{
type yang:counter32; if-feature stateful-sync-opt;
description type string;
"The number of LSP Updates received. A LSP update description
corresponds 1:1 with an LSP object in a PCUpd "The Speaker Entity Identifier";
message. }
This might be greater than num-pcupd-rcvd because
multiple updates can be batched into a single
PCUpd message.";
}
leaf num-upd-rcvd-unknown{ uses info {
type yang:counter32; description
description "Local PCEP entity information";
"The number of updates to unknown LSPs }
received. An update to an unknown LSP is a
update whose LSP object does not contain the
PLSP-ID of any LSP that is currently
present.";
}
leaf num-upd-rcvd-undelegated{ container pce-info {
type yang:counter32; when "../role = 'pce'" +
description "or " +
"The number of updates to not delegated LSPs "../role = 'pcc-and-pce'"
received. An update to an undelegated LSP is a {
update whose LSP object does not contain the description
PLSP-ID of any LSP that is currently "Valid at PCE";
delegated to current PCEP session."; }
} uses pce-info {
description
"Local PCE information";
}
leaf num-upd-rcvd-error-sent{ container path-key {
type yang:counter32; if-feature path-key;
description uses path-key {
"The number of updates to LSPs received that were description
responded by the local PCEP entity by sending a "Path-Key Configuration";
PCErr message."; }
} description
container initiation { "Path-Key Configuration";
if-feature pce-initiated; }
description
"PCE-Initiated related statistics";
leaf num-pcinitiate-sent{
type yang:counter32;
description
"The number of PCInitiate messages sent.";
} description
"The Local PCE Entity PCE information";
}
leaf num-pcinitiate-rcvd{ uses authentication {
type yang:counter32; description
description "Local PCEP Entity authentication information";
"The number of PCInitiate messages received."; }
}
leaf num-initiate-sent{ uses pcep-entity-info{
type yang:counter32; description
description "The operational information related to the
"The number of LSP Initiation sent via PCE. PCEP entity.";
A LSP initiation corresponds 1:1 with an LSP }
object in a PCInitiate message. This might be
greater than num-pcinitiate-sent because
multiple initiations can be batched into a
single PCInitiate message.";
}
leaf num-initiate-rcvd{ container stateful-parameter{
type yang:counter32; if-feature stateful;
description must "(/pcep/entity/capability/stateful/enabled" +
"The number of LSP Initiation received from " = true())"
PCE. A LSP initiation corresponds 1:1 with {
an LSP object in a PCInitiate message. This error-message
might be greater than num-pcinitiate-rcvd "The Stateful PCE must be enabled";
because multiple initiations can be batched description
into a single PCInitiate message."; "When PCEP entity is stateful
} enabled";
}
uses stateful-pce-parameter;
leaf num-initiate-rcvd-error-sent{ description
type yang:counter32; "The operational stateful parameters";
description }
"The number of initiations of LSPs received
that were responded by the local PCEP entity
by sending a PCErr message.";
}
}
}
container path-key {
if-feature path-key;
description
"If Path-Key is supported";
leaf num-unknown-path-key{
type yang:counter32;
description
"The number of attempts to expand an unknown
path-key.";
} container lsp-db{
leaf num-exp-path-key{ if-feature stateful;
type yang:counter32; description
description "The LSP-DB";
"The number of attempts to expand an expired leaf db-ver{
path-key."; when "../../role = 'pcc'" +
} "or " +
leaf num-dup-path-key{ "../../role = 'pcc-and-pce'"
type yang:counter32; {
description description
"The number of duplicate attempts to expand same "Valid at PCC";
path-key."; }
} if-feature stateful-sync-opt;
leaf num-path-key-no-attempt{ type uint64;
type yang:counter32; description
description "The LSP State Database Version Number";
"The number of expired path-keys with no attempt to }
expand it."; list association-list {
} key "id source global-source extended-id";
} description
}//pcep-stats "List of all PCEP associations";
uses association {
description
"The Association attributes";
grouping lsp-state{ }
description list lsp {
"This grouping defines the attributes for LSP in LSP-DB. key "plsp-id pcc-id";
These are the attributes specifically from the PCEP description
perspective"; "List of all LSP in this association";
leaf plsp-id{ leaf plsp-id {
type uint32{ type leafref {
range "1..1048575"; path "/pcep-state/entity/lsp-db/"
} + "lsp/plsp-id";
description }
"A PCEP-specific identifier for the LSP. A PCC description
creates a unique PLSP-ID for each LSP that is "Reference to PLSP-ID in LSP-DB";
constant for the lifetime of a PCEP session. }
PLSP-ID is 20 bits with 0 and 0xFFFFF are leaf pcc-id {
reserved"; type leafref {
} path "/pcep-state/entity/lsp-db/"
leaf pcc-id{ + "lsp/pcc-id";
type inet:ip-address; }
description description
"The local internet address of the PCC, that "Reference to PCC-ID in LSP-DB";
generated the PLSP-ID."; }
} }
}
list lsp{
key "plsp-id pcc-id";
description
"List of all LSPs in LSP-DB";
uses lsp-state{
description
"The PCEP specific attributes for
LSP-DB.";
}
list association-list {
key "id source global-source extended-id";
description
"List of all PCEP associations";
uses association-ref {
description
"Reference to the Association
attributes";
}
}
container lsp-ref{ }
description }
"reference to ietf-te lsp state"; container path-keys {
when "../role = 'pce'" +
"or " +
"../role = 'pcc-and-pce'"
{
description
"Valid at PCE";
}
if-feature path-key;
uses path-key-state;
description
"The path-keys generated by the PCE";
}
container of-list{
when "../role = 'pce'" +
"or " +
"../role = 'pcc-and-pce'"
{
description
"Valid at PCE";
}
if-feature objective-function;
leaf source { uses of-list;
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:source";
}
description
"Tunnel sender address extracted from
SENDER_TEMPLATE object";
reference "RFC3209";
}
leaf destination {
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:"
+ "destination";
}
description
"Tunnel endpoint address extracted from
SESSION object";
reference "RFC3209";
}
leaf tunnel-id {
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:tunnel-id";
}
description
"Tunnel identifier used in the SESSION
that remains constant over the life
of the tunnel.";
reference "RFC3209";
}
leaf lsp-id {
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:lsp-id";
}
description
"Identifier used in the SENDER_TEMPLATE
and the FILTER_SPEC that can be changed
to allow a sender to share resources with
itself.";
reference "RFC3209";
}
leaf extended-tunnel-id {
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:"
+ "extended-tunnel-id";
}
description
"Extended Tunnel ID of the LSP.";
reference "RFC3209";
} description
leaf type { "The authorized OF-List at PCE for all peers";
type leafref { }
path "/te:te/te:lsps-state/te:lsp/te:type"; container peers{
} description
description "LSP type P2P or P2MP"; "The list of peers for the entity";
}
}
leaf admin-state{ list peer{
type boolean; key "addr";
description
"The desired operational state";
}
leaf operational-state{
type operational-state;
description
"The operational status of the LSP";
}
container delegated{
description
"The delegation related parameters";
leaf enabled{
type boolean;
description
"LSP is delegated or not";
}
leaf pce{
type leafref {
path "/pcep-state/entity/peers/peer/addr";
}
must "(../enabled = true())"
{
error-message
"The LSP must be delegated";
description
"When LSP is a delegated LSP";
}
description
"The reference to the PCE peer to
which LSP is delegated";
}
leaf srp-id{
type uint32;
description
"The last SRP-ID-number associated with this
LSP.";
}
} description
container initiation { "The peer for the entity.";
if-feature pce-initiated;
description
"The PCE initiation related parameters";
leaf enabled{
type boolean;
description
"LSP is PCE-initiated or not";
}
leaf pce{
type leafref {
path "/pcep-state/entity/peers/peer/addr";
}
must "(../enabled = true())"
{
error-message
"The LSP must be PCE-Initiated";
description
"When the LSP must be PCE-Initiated";
}
description
"The reference to the PCE
that initiated this LSP";
}
}
leaf symbolic-path-name{
type string;
description
"The symbolic path name associated with the LSP.";
}
leaf last-error{
type lsp-error;
description
"The last error for the LSP.";
}
leaf pst{
type pst;
default "rsvp-te";
description
"The Path Setup Type";
} leaf addr {
type inet:ip-address;
description
"The local Internet address of this PCEP
peer.";
}
}//lsp-state leaf role {
type pcep-role;
description
"The role of the PCEP Peer.
Takes one of the following values.
- unknown(0): this PCEP peer role
is not known.
- pcc(1): this PCEP peer is a PCC.
- pce(2): this PCEP peer is a PCE.
- pcc-and-pce(3): this PCEP peer
is both a PCC and a PCE.";
}
grouping notification-instance-hdr { uses info {
description description
"This group describes common instance specific data "PCEP peer information";
for notifications."; }
leaf peer-addr { container pce-info {
type leafref { when "../role = 'pce'" +
path "/pcep-state/entity/peers/peer/addr"; "or " +
} "../role = 'pcc-and-pce'"
description {
"Reference to peer address"; description
} "When the peer is PCE";
}
}// notification-instance-hdr uses pce-info {
description
"PCE Peer information";
}
description
"The PCE Peer information";
}
grouping notification-session-hdr { leaf delegation-pref{
description when "../role = 'pce'" +
"This group describes common session instance specific "or " +
data for notifications."; "../role = 'pcc-and-pce'"
{
description
"When the peer is PCE";
}
if-feature stateful;
type uint8{
range "0..7";
}
must "(/pcep/entity/capability/stateful" +
"/active = true())"
{
error-message
"The Active Stateful PCE must be
enabled";
description
"When PCEP entity is active stateful
enabled";
}
description
"The PCE peer delegation preference.";
}
leaf session-initiator { uses authentication {
type leafref { description
path "/pcep-state/entity/peers/peer/sessions/" + "PCE Peer authentication";
"session/initiator"; }
}
description
"Reference to pcep session initiator leaf";
}
}// notification-session-hdr
grouping stateful-pce-parameter { leaf discontinuity-time {
description type yang:timestamp;
"This group describes stateful PCE specific description
parameters."; "The timestamp of the time when the
leaf state-timeout{ information and statistics were
type uint32; last reset.";
units "seconds"; }
description
"When a PCEP session is terminated, a PCC
waits for this time period before flushing
LSP state associated with that PCEP session
and reverting to operator-defined default
parameters or behaviours.";
}
leaf redelegation-timeout{
type uint32;
units "seconds";
must "((/pcep-state/entity/role = 'pcc')" +
" or " +
"(/pcep-state/entity/role = 'pcc-and-pce'))" +
" and " +
"(/pcep/entity/capability/stateful/active"
+ "= true())"
{
error-message "The PCEP entity must be PCC";
description
"When PCEP entity is PCC";
}
description
"When a PCEP session is terminated, a PCC
waits for this time period before revoking
LSP delegation to a PCE and attempting to
redelegate LSPs associated with the
terminated PCEP session to an alternate
PCE.";
}
leaf rpt-non-pcep-lsp{
type boolean;
must "((/pcep-state/entity/role = 'pcc')" +
" or " +
"(/pcep-state/entity/role = 'pcc-and-pce'))"
{
error-message "The PCEP entity must be PCC";
description
"When PCEP entity is PCC";
}
description
"If set, a PCC reports LSPs that are not
controlled by any PCE (for example, LSPs
that are statically configured at the
PCC). ";
}
} leaf initiate-session {
type boolean;
description
"Indicates whether the local PCEP
entity initiates sessions to this peer,
or waits for the peer to initiate a
session.";
}
grouping authentication { leaf session-exists{
description "Authentication Information"; type boolean;
choice auth-type-selection { description
description "Indicates whether a session with
"Options for expressing authentication setting."; this peer currently exists.";
case auth-key-chain { }
leaf key-chain {
type key-chain:key-chain-ref;
description
"key-chain name.";
}
}
case auth-key {
leaf key {
type string;
description
"Key string in ASCII format.";
}
container crypto-algorithm {
uses key-chain:crypto-algorithm-types;
description
"Cryptographic algorithm associated
with key.";
}
}
case auth-tls {
if-feature tls;
container tls {
description
"TLS related information - TBD";
}
}
}
}
grouping path-key { leaf session-up-time{
description "Path-key related information"; type yang:timestamp;
leaf enabled{ description
type boolean; "The timestamp value of the last time a
description session with this peer was successfully
"Enabled or Disabled"; established.";
} }
leaf discard-timer {
type uint32;
units "minutes";
default 10;
description
"A timer to discard unwanted path-keys";
}
leaf reuse-time {
type uint32;
units "minutes";
default 30;
description
"A time after which the path-keys could be reused";
}
leaf pce-id {
type inet:ip-address;
description
"PCE Address to be used in each Path-Key Subobject
(PKS)";
} leaf session-fail-time{
} type yang:timestamp;
description
"The timestamp value of the last time a
session with this peer failed to be
established.";
}
grouping path-key-state { leaf session-fail-up-time{
description "Table to allow inspection of path-keys"; type yang:timestamp;
list path-keys{ description
key "path-key"; "The timestamp value of the last time a
session with this peer failed from
active.";
}
description container sessions {
"The list of path-keys generated by the PCE"; description
"This entry represents a single PCEP
session in which the local PCEP entity
participates.
This entry exists only if the
corresponding PCEP session has been
initialized by some event, such as
manual user configuration, auto-
discovery of a peer, or an incoming
TCP connection.";
leaf path-key { list session {
type uint16; key "initiator";
description
"The identifier, or token used to represent
the Confidential Path Segment (CPS) within
the context of the PCE";
}
container cps {
description
"The Confidential Path Segment (CPS)";
list explicit-route-objects {
key "index";
description
"List of explicit route objects";
leaf index {
type uint8 {
range "0..255";
}
description
"Index of this explicit route object";
}
leaf explicit-route-usage {
type identityref {
base te-types:route-usage-type;
}
description
"An explicit-route hop action.";
}
uses te-types:explicit-route-subobject;
}
}
leaf pcc-original {
type leafref {
path "/pcep-state/entity/peers/peer/addr";
}
description
"Reference to PCC peer address of
the original request";
}
leaf req-id {
type uint32;
description
"The request ID of the original PCReq.";
}
leaf retrieved {
type boolean;
description
"If path-key has been retrieved yet";
}
leaf pcc-retrieved {
type leafref {
path "/pcep-state/entity/peers/peer/addr";
}
must "(../retrieved = true())"
{
error-message
"The Path-key should be retreived";
description
"When Path-Key has been retreived";
}
description
"Reference to PCC peer address which
retreived the path-key";
}
leaf creation-time {
type yang:timestamp;
description
"The timestamp value at the time this Path-Key was
created.";
}
leaf discard-time {
type uint32;
units "minutes";
description
"A time after which this path-keys will be
discarded";
}
leaf reuse-time {
type uint32;
units "minutes";
description
"A time after which this path-keys could be
reused";
}
}
} description
"The list of sessions, note that
for a time being two sessions
may exist for a peer";
grouping of-list { leaf initiator {
description "List of OF"; type pcep-initiator;
list objective-function{ description
key "of"; "The initiator of the session,
that is, whether the TCP
connection was initiated by
the local PCEP entity or the
peer.
There is a window during
session initialization where
two sessions can exist between
a pair of PCEP speakers, each
initiated by one of the
speakers. One of these
sessions is always discarded
before it leaves OpenWait
state. However, before it is
discarded, two sessions to the
given peer appear transiently
in this MIB module. The
sessions are distinguished by
who initiated them, and so this
field is the key.";
}
leaf role {
type leafref {
path "../../../role";
}
description
"The reference to peer role .";
}
description leaf state-last-change {
"The list of authorized OF"; type yang:timestamp;
description
"The timestamp value at the
time this session entered its
current state as denoted by
the state leaf.";
}
leaf of { leaf state {
type objective-function; type pcep-sess-state;
description description
"The OF authorized"; "The current state of the
} session.
} The set of possible states
} excludes the idle state since
grouping association { entries do not exist in the
description idle state.";
"Generic Association parameters"; }
leaf type {
type "assoc-type";
description
"The PCEP association type";
}
leaf id {
type uint16;
description
"PCEP Association ID";
}
leaf source {
type inet:ip-address;
description
"PCEP Association Source.";
}
leaf global-source {
type uint32;
description
"PCEP Association Global
Source.";
}
leaf extended-id{
type string;
description
"Additional information to
support unique identification.";
}
}
grouping association-ref {
description
"Generic Association parameters";
leaf id {
type leafref {
path "/pcep-state/entity/lsp-db/"
+ "association-list/id";
}
description
"PCEP Association ID";
}
leaf source {
type leafref {
path "/pcep-state/entity/lsp-db/"
+ "association-list/source";
}
description
"PCEP Association Source.";
}
leaf global-source {
type leafref {
path "/pcep-state/entity/lsp-db/"
+ "association-list/global-source";
}
description
"PCEP Association Global
Source.";
}
leaf extended-id{
type leafref {
path "/pcep-state/entity/lsp-db/"
+ "association-list/extended-id";
}
description
"Additional information to
support unique identification.";
}
}
/*
* Configuration data nodes
*/
container pcep{
presence leaf session-creation {
"The PCEP is enabled"; type yang:timestamp;
description
"The timestamp value at the
time this session was
created.";
description }
"Parameters for list of configured PCEP entities
on the device.";
container entity { leaf connect-retry {
type yang:counter32;
description
"The number of times that the
local PCEP entity has
attempted to establish a TCP
connection for this session
without success. The PCEP
entity gives up when this
reaches connect-max-retry.";
}
description leaf local-id {
"The configured PCEP entity on the device."; type uint32 {
range "0..255";
}
description
"The value of the PCEP session
ID used by the local PCEP
entity in the Open message
for this session.
If state is tcp-pending then
this is the session ID that
will be used in the Open
message. Otherwise, this is
the session ID that was sent
in the Open message.";
}
leaf addr { leaf remote-id {
type inet:ip-address; type uint32 {
mandatory true; range "0..255";
description }
"The local Internet address of this PCEP must "((../state != 'tcp-pending'" +
entity. "and " +
If operating as a PCE server, the PCEP "../state != 'open-wait' )" +
entity listens on this address. "or " +
If operating as a PCC, the PCEP entity "((../state = 'tcp-pending'" +
binds outgoing TCP connections to this " or " +
address. "../state = 'open-wait' )" +
It is possible for the PCEP entity to "and (. = 0)))" {
operate both as a PCC and a PCE Server, in error-message
which case it uses this address both to "Invalid remote-id";
listen for incoming TCP connections and to description
bind outgoing TCP connections."; "If state is tcp-
} pending or open-wait
then this leaf is not
used and MUST be set
to zero.";
}
description
"The value of the PCEP session
ID used by the peer in its
Open message for this
session.";
}
leaf enabled { leaf keepalive-timer {
type boolean; type uint32 {
default true; range "0..255";
description }
"The administrative status of this PCEP units "seconds";
Entity."; must "(../state = 'session-up'" +
} "or " +
"(../state != 'session-up'" +
"and (. = 0)))" {
error-message
"Invalid keepalive
timer";
description
"This field is used if
and only if state is
session-up. Otherwise,
it is not used and
MUST be set to
zero.";
}
description
"The agreed maximum interval at
which the local PCEP entity
transmits PCEP messages on
this PCEP session. Zero means
that the local PCEP entity
never sends Keepalives on this
session.";
}
leaf role { leaf peer-keepalive-timer {
type pcep-role; type uint32 {
mandatory true; range "0..255";
description }
"The role that this entity can play. units "seconds";
Takes one of the following values. must "(../state = 'session-up'" +
- unknown(0): this PCEP Entity role is not "or " +
known. "(../state != 'session-up'" +
- pcc(1): this PCEP Entity is a PCC. "and " +
- pce(2): this PCEP Entity is a PCE. "(. = 0)))" {
- pcc-and-pce(3): this PCEP Entity is both error-message
a PCC and a PCE."; "Invalid Peer keepalive
} timer";
description
"This field is used if
and only if state is
session-up. Otherwise,
it is not used and MUST
be set to zero.";
}
description
"The agreed maximum interval at
which the peer transmits PCEP
messages on this PCEP session.
Zero means that the peer never
sends Keepalives on this
session.";
}
leaf description { leaf dead-timer {
type string; type uint32 {
description range "0..255";
"Description of the PCEP entity configured }
by the user"; units "seconds";
} description
"The dead timer interval for
this PCEP session.";
}
leaf speaker-entity-id{ leaf peer-dead-timer {
if-feature stateful-sync-opt; type uint32 {
type string; range "0..255";
description }
"The Speaker Entity Identifier"; units "seconds";
} must "((../state != 'tcp-pending'" +
"and " +
"../state != 'open-wait' )" +
"or " +
"((../state = 'tcp-pending'" +
" or " +
"../state = 'open-wait' )" +
"and " +
"(. = 0)))" {
error-message
"Invalid Peer Dead
timer";
description
"If state is tcp-
pending or open-wait
then this leaf is not
used and MUST be set to
zero.";
}
description
"The peer's dead-timer interval
for this PCEP session.";
}
uses info { leaf ka-hold-time-rem {
description type uint32 {
"Local PCEP entity information"; range "0..255";
} }
units "seconds";
must "((../state != 'tcp-pending'" +
"and " +
"../state != 'open-wait' ) " +
"or " +
"((../state = 'tcp-pending'" +
"or " +
"../state = 'open-wait' )" +
"and " +
"(. = 0)))" {
error-message
"Invalid Keepalive hold
time remaining";
description
"If state is tcp-pending
or open-wait then this
field is not used and
MUST be set to zero.";
}
description
"The keep alive hold time
remaining for this session.";
}
container pce-info { leaf overloaded {
must "((/pcep-state/entity/role = 'pce')" + type boolean;
" or " + description
"(/pcep-state/entity/role = 'pcc-and-pce'))" "If the local PCEP entity has
{ informed the peer that it is
error-message "The PCEP entity must be PCE"; currently overloaded, then
description this is set to true.
"When PCEP entity is PCE";
}
uses pce-info {
description
"Local PCE information";
}
container path-key {
if-feature path-key;
uses path-key {
description
"Path-Key Configuration";
}
description
"Path-Key Configuration";
}
description Otherwise, it is set to
"The Local PCE Entity PCE information"; false.";
} }
uses authentication { leaf overload-time {
description type uint32;
"Local PCEP entity authentication information"; units "seconds";
} must "((../overloaded = true()) " +
"or ((../overloaded != true()) " +
"and (. = 0)))" {
error-message
"Invalid overload-time";
description
"This field is only used
if overloaded is set to
true. Otherwise, it is
not used and MUST be
set to zero.";
}
description
"The interval of time that is
remaining until the local PCEP
entity will cease to be
overloaded on this session.";
}
uses pcep-entity-info { leaf peer-overloaded {
description type boolean;
"The configuration related to the PCEP description
entity."; "If the peer has informed the
} local PCEP entity that it is
currently overloaded, then
this is set to true.
Otherwise, it is set to
false.";
}
leaf pcep-notification-max-rate { leaf peer-overload-time {
type uint32; type uint32;
mandatory true; units "seconds";
description must "((../peer-overloaded = " +
"This variable indicates the maximum number of "true()) or " +
notifications issued per second. If events occur "((../peer-overloaded !=" +
more rapidly, the implementation may simply fail "true())" +
to emit these notifications during that period, " and " +
or may queue them until an appropriate time. A "(. = 0)))" {
value of 0 means no notifications are emitted error-message
and all should be discarded (that is, not "Invalid peer overload
queued)."; time";
} description
"This field is only used
if peer-overloaded is
set to true. Otherwise,
it is not used and MUST
be set to zero.";
}
description
"The interval of time that is
remaining until the peer will
cease to be overloaded. If it
is not known how long the peer
will stay in overloaded state,
this leaf is set to zero.";
}
leaf lspdb-sync {
if-feature stateful;
type sync-state;
description
"The LSP-DB state
synchronization status.";
}
leaf recv-db-ver{
when "../role = 'pcc'" +
"or " +
"../role = 'pcc-and-pce'"
{
description
"Valid for PCEP Peer as
PCC";
}
container stateful-parameter{ if-feature stateful;
if-feature stateful; if-feature stateful-sync-opt;
must "(/pcep/entity/capability/stateful/enabled" +
" = true())"
{
error-message
"The Stateful PCE must be enabled";
description
"When PCEP entity is stateful
enabled";
}
uses stateful-pce-parameter;
description type uint64;
"The configured stateful parameters";
}
container of-list{ description
if-feature objective-function; "The last received LSP State
must "((/pcep/entity/role = 'pce')" + Database Version Number";
" or " + }
"(/pcep/entity/role = 'pcc-and-pce'))"
{ container of-list{
error-message when "../role = 'pce'" +
"The PCEP entity must be PCE"; "or " +
description "../role = 'pcc-and-pce'"
"The authorized OF-List at PCE"; {
} description
uses of-list; "Valid for PCEP Peer as
PCE";
}
if-feature objective-function;
description uses of-list;
"The authorized OF-List at PCE for all peers";
}
container peers{ description
must "((/pcep/entity/role = 'pcc')" + "Indicate the list of supported
" or " + OF on this session";
"(/pcep/entity/role = 'pcc-and-pce'))" }
{
error-message
"The PCEP entity must be PCC";
description
"When PCEP entity is PCC, as remote
PCE peers are configured.";
}
description
"The list of configured peers for the
entity (remote PCE)";
list peer{
key "addr";
description leaf speaker-entity-id{
"The peer configured for the entity. if-feature stateful-sync-opt;
(remote PCE)"; type string;
description
"The Speaker Entity Identifier";
}
leaf addr { leaf discontinuity-time {
type inet:ip-address; type yang:timestamp;
description description
"The local Internet address of this "The timestamp value of the
PCEP peer."; time when the statistics were
} last reset.";
}
} // session
} // sessions
}//peer
}//peers
}//entity
}//pcep-state
leaf description { /*
type string; * Notifications
description */
"Description of the PCEP peer notification pcep-session-up {
configured by the user"; description
} "This notification is sent when the value of
uses info { '/pcep/pcep-state/peers/peer/sessions/session/state'
description enters the 'session-up' state.";
"PCE Peer information";
}
uses pce-info {
description
"PCE Peer information";
}
leaf delegation-pref{ uses notification-instance-hdr;
if-feature stateful;
type uint8{
range "0..7";
}
must "(/pcep/entity/capability/stateful/active"
+ "= true())"
{
error-message
"The Active Stateful PCE must be
enabled";
description
"When PCEP entity is active stateful
enabled";
}
description
"The PCE peer delegation preference.";
}
uses authentication {
description
"PCE Peer authentication";
}
container of-list{
if-feature objective-function;
must "((/pcep/entity/role = 'pce')" +
" or " +
"(/pcep/entity/role = 'pcc-and-pce'))"
{
error-message
"The PCEP entity must be PCE";
description
"The authorized OF-List at PCE";
}
uses of-list;
description uses notification-session-hdr;
"The authorized OF-List a specific peer";
}
}//peer
}//peers
}//entity leaf state-last-change {
}//pcep type yang:timestamp;
description
"The timestamp value at the time this session
entered its current state as denoted by the state
leaf.";
}
/* leaf state {
* Operational data nodes type pcep-sess-state;
*/ description
"The current state of the session.
The set of possible states excludes the idle state
since entries do not exist in the idle state.";
}
} //notification
container pcep-state{ notification pcep-session-down {
config false; description
description "This notification is sent when the value of
"The list of operational PCEP entities on the '/pcep/pcep-state/peers/peer/sessions/session/state'
device."; leaves the 'session-up' state.";
container entity{ uses notification-instance-hdr;
description
"The operational PCEP entity on the device.";
leaf addr { leaf session-initiator {
type inet:ip-address; type pcep-initiator;
description description
"The local Internet address of this PCEP "The initiator of the session.";
entity. }
If operating as a PCE server, the PCEP
entity listens on this address.
If operating as a PCC, the PCEP entity
binds outgoing TCP connections to this
address.
It is possible for the PCEP entity to
operate both as a PCC and a PCE Server, in
which case it uses this address both to
listen for incoming TCP connections and to
bind outgoing TCP connections.";
}
leaf index{ leaf state-last-change {
type uint32; type yang:timestamp;
description description
"The index of the operational PECP "The timestamp value at the time this session
entity"; entered its current state as denoted by the state
} leaf.";
}
leaf admin-status { leaf state {
type pcep-admin-status; type pcep-sess-state;
description description
"The administrative status of this PCEP Entity. "The current state of the session.
This is the desired operational status as The set of possible states excludes the idle state
currently set by an operator or by default in since entries do not exist in the idle state.";
the implementation. The value of enabled }
represents the current status of an attempt } //notification
to reach this desired status.";
}
leaf oper-status { notification pcep-session-local-overload {
type pcep-admin-status; description
description "This notification is sent when the local PCEP entity
"The operational status of the PCEP entity. enters overload state for a peer.";
Takes one of the following values.
- oper-status-up(1): the PCEP entity is
active.
- oper-status-down(2): the PCEP entity is
inactive.
- oper-status-going-up(3): the PCEP entity is
activating.
- oper-status-going-down(4): the PCEP entity is
deactivating.
- oper-status-failed(5): the PCEP entity has
failed and will recover when possible.
- oper-status-failed-perm(6): the PCEP entity
has failed and will not recover without
operator intervention.";
}
leaf role { uses notification-instance-hdr;
type pcep-role;
description
"The role that this entity can play.
Takes one of the following values.
- unknown(0): this PCEP entity role is
not known.
- pcc(1): this PCEP entity is a PCC.
- pce(2): this PCEP entity is a PCE.
- pcc-and-pce(3): this PCEP entity is
both a PCC and a PCE.";
}
leaf description { uses notification-session-hdr;
type string;
description
"Description of the PCEP entity configured
by the user";
}
leaf speaker-entity-id{ leaf overloaded {
if-feature stateful-sync-opt; type boolean;
type string; description
description "If the local PCEP entity has informed the peer
"The Speaker Entity Identifier"; that it is currently overloaded, then this is set
} to true. Otherwise, it is set to false.";
}
uses info { leaf overload-time {
description type uint32;
"Local PCEP entity information"; units "seconds";
} description
"The interval of time that is remaining until the
local PCEP entity will cease to be overloaded on
this session.";
}
} //notification
container pce-info { notification pcep-session-local-overload-clear {
when "((/pcep-state/entity/role = 'pce')" + description
" or " + "This notification is sent when the local PCEP entity
"(/pcep-state/entity/role = 'pcc-and-pce'))" leaves overload state for a peer.";
{
description
"When PCEP entity is PCE";
}
uses pce-info {
description
"Local PCE information";
}
container path-key { uses notification-instance-hdr;
if-feature path-key;
uses path-key {
description
"Path-Key Configuration";
}
description
"Path-Key Configuration";
}
description leaf overloaded {
"The Local PCE Entity PCE information"; type boolean;
} description
"If the local PCEP entity has informed the peer
that it is currently overloaded, then this is set
to true. Otherwise, it is set to false.";
}
} //notification
uses authentication { notification pcep-session-peer-overload {
description description
"Local PCEP Entity authentication information"; "This notification is sent when a peer enters overload
} state.";
uses pcep-entity-info{ uses notification-instance-hdr;
description uses notification-session-hdr;
"The operational information related to the
PCEP entity.";
}
container stateful-parameter{ leaf peer-overloaded {
if-feature stateful; type boolean;
must "(/pcep/entity/capability/stateful/enabled" + description
" = true())" "If the peer has informed the local PCEP entity that
{ it is currently overloaded, then this is set to
error-message true. Otherwise, it is set to false.";
"The Stateful PCE must be enabled"; }
description
"When PCEP entity is stateful
enabled";
}
uses stateful-pce-parameter;
description leaf peer-overload-time {
"The operational stateful parameters"; type uint32;
} units "seconds";
description
"The interval of time that is remaining until the
peer will cease to be overloaded. If it is not
known how long the peer will stay in overloaded
state, this leaf is set to zero.";
}
} //notification
container lsp-db{ notification pcep-session-peer-overload-clear {
if-feature stateful; description
description "This notification is sent when a peer leaves overload
"The LSP-DB"; state.";
leaf db-ver{
if-feature stateful-sync-opt;
type uint64;
must "((/pcep/entity/role = 'pcc')" +
" or " +
"(/pcep/entity/role = 'pcc-and-pce'))"
{
error-message
"The PCEP entity must be PCC";
description
"When PCEP entity is PCC, as remote
PCE peers are configured.";
}
description uses notification-instance-hdr;
"The LSP State Database Version Number";
}
list association-list {
key "id source global-source extended-id";
description
"List of all PCEP associations";
uses association {
description
"The Associa