< draft-ietf-pce-pcep-yang-16.txt   draft-ietf-pce-pcep-yang-17.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: August 26, 2021 Metaswitch Expires: 26 April 2022 Metaswitch
V. Beeram V. Beeram
Juniper Networks Juniper Networks
J. Tantsura J. Tantsura
Apstra, Inc. Apstra, Inc.
February 22, 2021 23 October 2021
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-16 draft-ietf-pce-pcep-yang-17
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 and state data. configuration and state data.
Status of This Memo Status of This Memo
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 https://datatracker.ietf.org/drafts/current/. Drafts is at https://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 August 26, 2021. This Internet-Draft will expire on 26 April 2022.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 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 (https://trustee.ietf.org/
(https://trustee.ietf.org/license-info) in effect on the date of license-info) in effect on the date of publication of this document.
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect Please review these documents carefully, as they describe your rights
to this document. Code Components extracted from this document must and restrictions with respect to this document. Code Components
include Simplified BSD License text as described in Section 4.e of extracted from this document must include Simplified BSD License text
the Trust Legal Provisions and are provided without warranty as as described in Section 4.e of the Trust Legal Provisions and are
described in the Simplified BSD License. provided without warranty as described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
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 . . . . . . . . . . . . . . . . . . . . . . 5
3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5 3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5
3.3. Refrences in the Model . . . . . . . . . . . . . . . . . 5 3.3. Refrences in the Model . . . . . . . . . . . . . . . . . 6
4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 7 4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 8
5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 7 5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 9
5.1. The Overview of PCEP Data Model . . . . . . . . . . . . . 8 5.1. The Overview of PCEP Data Model . . . . . . . . . . . . . 9
5.2. The Entity . . . . . . . . . . . . . . . . . . . . . . . 9 5.2. The Entity . . . . . . . . . . . . . . . . . . . . . . . 10
5.3. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 13 5.3. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 14
5.4. The Session Lists . . . . . . . . . . . . . . . . . . . . 15 5.4. The Session Lists . . . . . . . . . . . . . . . . . . . . 16
5.5. Notifications . . . . . . . . . . . . . . . . . . . . . . 16 5.5. Notifications . . . . . . . . . . . . . . . . . . . . . . 18
5.6. RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.6. RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6. The Design of PCEP Statistics Data Model . . . . . . . . . . 17 6. The Design of PCEP Statistics Data Model . . . . . . . . . . 19
7. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 20 7. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 22
7.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 21 7.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 22
8. Other Considerations . . . . . . . . . . . . . . . . . . . . 21 8. Other Considerations . . . . . . . . . . . . . . . . . . . . 22
8.1. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 21 8.1. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 23
9. PCEP YANG Modules . . . . . . . . . . . . . . . . . . . . . . 22 9. PCEP YANG Modules . . . . . . . . . . . . . . . . . . . . . . 23
9.1. ietf-pcep module . . . . . . . . . . . . . . . . . . . . 22 9.1. ietf-pcep module . . . . . . . . . . . . . . . . . . . . 23
9.2. ietf-pcep-stats module . . . . . . . . . . . . . . . . . 76 9.2. ietf-pcep-stats module . . . . . . . . . . . . . . . . . 78
10. Security Considerations . . . . . . . . . . . . . . . . . . . 94 10. Security Considerations . . . . . . . . . . . . . . . . . . . 96
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 95 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 98
12. Implementation Status . . . . . . . . . . . . . . . . . . . . 96 12. Implementation Status . . . . . . . . . . . . . . . . . . . . 99
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 97 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 99
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 97 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 99
14.1. Normative References . . . . . . . . . . . . . . . . . . 97 14.1. Normative References . . . . . . . . . . . . . . . . . . 99
14.2. Informative References . . . . . . . . . . . . . . . . . 101 14.2. Informative References . . . . . . . . . . . . . . . . . 103
Appendix A. The Full PCEP Data Model . . . . . . . . . . . . . . 102 Appendix A. The Full PCEP Data Model . . . . . . . . . . . . . . 104
Appendix B. Example . . . . . . . . . . . . . . . . . . . . . . 108 Appendix B. Example . . . . . . . . . . . . . . . . . . . . . . 110
Appendix C. Contributor Addresses . . . . . . . . . . . . . . . 111 Appendix C. Contributor Addresses . . . . . . . . . . . . . . . 113
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 112 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 114
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 3, line 41 skipping to change at page 3, line 47
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
3. Terminology and Notation 3. Terminology and Notation
This document uses the terminology defined in [RFC4655] and This document uses the terminology defined in [RFC4655] and
[RFC5440]. In particular, it uses the following acronyms. [RFC5440]. In particular, it uses the following acronyms.
o Path Computation Request message (PCReq). * Path Computation Request message (PCReq).
o Path Computation Reply message (PCRep). * Path Computation Reply message (PCRep).
o Notification message (PCNtf). * Notification message (PCNtf).
o Error message (PCErr). * Error message (PCErr).
o Request Parameters object (RP). * Request Parameters object (RP).
o Synchronization Vector object (SVEC). * Synchronization Vector object (SVEC).
o Explicit Route object (ERO). * Explicit Route object (ERO).
This document also uses the following terms defined in [RFC7420]: This document also uses the following terms defined in [RFC7420]:
o PCEP entity: a local PCEP speaker. * PCEP entity: a local PCEP speaker.
o PCEP peer: to refer to a remote PCEP speaker. * PCEP peer: to refer to a remote PCEP speaker.
o PCEP speaker: where it is not necessary to distinguish between * PCEP speaker: where it is not necessary to distinguish between
local and remote. local and remote.
Further, this document also uses the following terms defined in Further, this document also uses the following terms defined in
[RFC8231] : [RFC8231] :
o Stateful PCE, Passive Stateful PCE, Active Stateful PCE * Stateful PCE, Passive Stateful PCE, Active Stateful PCE
o Delegation, Revocation, Redelegation * Delegation, Revocation, Redelegation
o LSP State Report, Path Computation Report message (PCRpt). * LSP State Report, Path Computation Report message (PCRpt).
o LSP State Update, Path Computation Update message (PCUpd). * LSP State Update, Path Computation Update message (PCUpd).
* PLSP-ID: a PCEP-specific identifier for the LSP.
* SRP: Stateful PCE Request Parameters
[RFC8281] : [RFC8281] :
o PCE-initiated LSP, Path Computation LSP Initiate Message * PCE-initiated LSP, Path Computation LSP Initiate Message
(PCInitiate). (PCInitiate).
[RFC8408] : [RFC8408] :
o Path Setup Type (PST). * Path Setup Type (PST).
[RFC8664] : [RFC8664] :
o Segment Routing (SR). * Segment Routing (SR).
[RFC5541] :
* Objective Function (OF).
[RFC8697] :
* Association.
[RFC6241] : [RFC6241] :
o Configuration data. * Configuration data.
o State data. * State data.
3.1. Tree Diagrams 3.1. Tree Diagrams
A simplified graphical representation of the data model is used in A simplified graphical representation of the data model is used in
this document. The meaning of the symbols in these diagrams is this document. The meaning of the symbols in these diagrams is
defined in [RFC8340]. defined in [RFC8340].
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] | +---------+------------------+--------------------------------------+
| te-types | ietf-te-types | [RFC8776] | |inet | ietf-inet-types | [RFC6991] |
| key- | ietf-key-chain | [RFC8177] | +---------+------------------+--------------------------------------+
| chain | | | |te-types | ietf-te-types | [RFC8776] |
| nacm | ietf-netconf-acm | [RFC8341] | +---------+------------------+--------------------------------------+
| tlss | ietf-tls-server | [I-D.ietf-netconf-tls-client-server | |key-chain| ietf-key-chain | [RFC8177] |
| | | ] | +---------+------------------+--------------------------------------+
| tlsc | ietf-tls-client | [I-D.ietf-netconf-tls-client-server | |nacm | ietf-netconf-acm | [RFC8341] |
| | | ] | +---------+------------------+--------------------------------------+
| ospf | ietf-ospf | [I-D.ietf-ospf-yang] | |tlss | ietf-tls-server | [I-D.ietf-netconf-tls-client-server] |
| isis | ietf-isis | [I-D.ietf-isis-yang-isis-cfg] | +---------+------------------+--------------------------------------+
+----------+------------------+-------------------------------------+ |tlsc | ietf-tls-client | [I-D.ietf-netconf-tls-client-server] |
+---------+------------------+--------------------------------------+
|ospf | ietf-ospf | [I-D.ietf-ospf-yang] |
+---------+------------------+--------------------------------------+
|isis | ietf-isis | [I-D.ietf-isis-yang-isis-cfg] |
+---------+------------------+--------------------------------------+
Table 1: Prefixes and corresponding YANG modules Table 1: Prefixes and corresponding YANG modules
3.3. Refrences in the Model 3.3. Refrences in the Model
Following documents are refrenced in the model defined in this Following documents are refrenced in the model defined in this
document - document -
+----------------------------+--------------------------------------+ +==========================+======================================+
| Documents | Reference | | Documents | Reference |
+----------------------------+--------------------------------------+ +==========================+======================================+
| OSPF Protocol Extensions | [RFC5088] | | OSPF Protocol Extensions | [RFC5088] |
| for Path Computation | | | for Path Computation | |
| Element (PCE) Discovery | | | Element (PCE) Discovery | |
| IS-IS Protocol Extensions | [RFC5089] | +--------------------------+--------------------------------------+
| for Path Computation | | | IS-IS Protocol | [RFC5089] |
| Element (PCE) Discovery | | | Extensions for Path | |
| Path Computation Element | [RFC5440] | | Computation Element | |
| (PCE) Communication | | | (PCE) Discovery | |
| Protocol (PCEP) | | +--------------------------+--------------------------------------+
| Preserving Topology | [RFC5520] | | Path Computation Element | [RFC5440] |
| Confidentiality in Inter- | | | (PCE) Communication | |
| Domain Path Computation | | | Protocol (PCEP) | |
| Using a Path-Key-Based | | +--------------------------+--------------------------------------+
| Mechanism | | | Preserving Topology | [RFC5520] |
| Encoding of Objective | [RFC5541] | | Confidentiality in | |
| Functions in the Path | | | Inter-Domain Path | |
| Computation Element | | | Computation Using a | |
| Communication Protocol | | | Path-Key-Based Mechanism | |
| (PCEP) | | +--------------------------+--------------------------------------+
| Path Computation Element | [RFC5557] | | Encoding of Objective | [RFC5541] |
| Communication Protocol | | | Functions in the Path | |
| (PCEP) Requirements and | | | Computation Element | |
| Protocol Extensions in | | | Communication Protocol | |
| Support of Global | | | (PCEP) | |
| Concurrent Optimization | | +--------------------------+--------------------------------------+
| Common YANG Data Types | [RFC6991] | | Path Computation Element | [RFC5557] |
| YANG Data Model for Key | [RFC8177] | | Communication Protocol | |
| Chains | | | (PCEP) Requirements and | |
| Path Computation Element | [RFC8231] | | Protocol Extensions in | |
| Communication Protocol | | | Support of Global | |
| (PCEP) Extensions for | | | Concurrent Optimization | |
| Stateful PCE | | +--------------------------+--------------------------------------+
| Optimizations of Label | [RFC8232] | | Common YANG Data Types | [RFC6991] |
| Switched Path State | | +--------------------------+--------------------------------------+
| Synchronization Procedures | | | YANG Data Model for Key | [RFC8177] |
| for a Stateful PCE | | | Chains | |
| PCEPS: Usage of TLS to | [RFC8253] | +--------------------------+--------------------------------------+
| Provide a Secure Transport | | | Path Computation Element | [RFC8231] |
| for the Path Computation | | | Communication Protocol | |
| Element Communication | | | (PCEP) Extensions for | |
| Protocol (PCEP) | | | Stateful PCE | |
| Path Computation Element | [RFC8281] | +--------------------------+--------------------------------------+
| Communication Protocol | | | Optimizations of Label | [RFC8232] |
| (PCEP) Extensions for PCE- | | | Switched Path State | |
| Initiated LSP Setup in a | | | Synchronization | |
| Stateful PCE Model | | | Procedures for a | |
| Extensions to the Path | [RFC8306] | | Stateful PCE | |
| Computation Element | | +--------------------------+--------------------------------------+
| Communication Protocol | | | PCEPS: Usage of TLS to | [RFC8253] |
| (PCEP) for Point-to- | | | Provide a Secure | |
| Multipoint Traffic | | | Transport for the Path | |
| Engineering Label Switched | | | Computation Element | |
| Paths | | | Communication Protocol | |
| Network Configuration | [RFC8341] | | (PCEP) | |
| Access Control Model | | +--------------------------+--------------------------------------+
| Conveying Path Setup Type | [RFC8408] | | Path Computation Element | [RFC8281] |
| in PCE Communication | | | Communication Protocol | |
| Protocol (PCEP) Messages | | | (PCEP) Extensions for | |
| Traffic Engineering Common | [RFC8776] | | PCE-Initiated LSP Setup | |
| YANG Types | | | in a Stateful PCE Model | |
| A YANG Data Model for | [I-D.ietf-teas-yang-te] | +--------------------------+--------------------------------------+
| Traffic Engineering | | | Extensions to the Path | [RFC8306] |
| Tunnels and Interfaces | | | Computation Element | |
| YANG Groupings for TLS | [I-D.ietf-netconf-tls-client-server] | | Communication Protocol | |
| Clients and TLS Servers | | | (PCEP) for Point-to- | |
| PCEP Extensions for | [RFC8664] | | Multipoint Traffic | |
| Segment Routing | | | Engineering Label | |
| PCEP Extensions for | [RFC8697] | | Switched Paths | |
| Establishing Relationships | | +--------------------------+--------------------------------------+
| Between Sets of LSPs | | | Network Configuration | [RFC8341] |
| YANG Data Model for OSPF | [I-D.ietf-ospf-yang] | | Access Control Model | |
| Protocol | | +--------------------------+--------------------------------------+
| YANG Data Model for IS-IS | [I-D.ietf-isis-yang-isis-cfg] | | Conveying Path Setup | [RFC8408] |
| Protocol | | | Type in PCE | |
| PCEP extensions for GMPLS | [RFC8779] | | Communication Protocol | |
+----------------------------+--------------------------------------+ | (PCEP) Messages | |
+--------------------------+--------------------------------------+
| Traffic Engineering | [RFC8776] |
| Common YANG Types | |
+--------------------------+--------------------------------------+
| A YANG Data Model for | [I-D.ietf-teas-yang-te] |
| Traffic Engineering | |
| Tunnels and Interfaces | |
+--------------------------+--------------------------------------+
| YANG Groupings for TLS | [I-D.ietf-netconf-tls-client-server] |
| Clients and TLS Servers | |
+--------------------------+--------------------------------------+
| PCEP Extensions for | [RFC8664] |
| Segment Routing | |
+--------------------------+--------------------------------------+
| PCEP Extensions for | [RFC8697] |
| Establishing | |
| Relationships Between | |
| Sets of LSPs | |
+--------------------------+--------------------------------------+
| YANG Data Model for OSPF | [I-D.ietf-ospf-yang] |
| Protocol | |
+--------------------------+--------------------------------------+
| YANG Data Model for IS- | [I-D.ietf-isis-yang-isis-cfg] |
| IS Protocol | |
+--------------------------+--------------------------------------+
| PCEP extensions for | [RFC8779] |
| GMPLS | |
+--------------------------+--------------------------------------+
| ASSOCIATION Type Field | [IANA-PCEP] |
| in Path Computation | |
| Element Protocol (PCEP) | |
| Numbers | |
+--------------------------+--------------------------------------+
| Path Computation Element | [IANA-OSPF] |
| (PCE) Capability Flags | |
| in Open Shortest Path | |
| First v2 (OSPFv2) | |
| Parameters | |
+--------------------------+--------------------------------------+
Table 2: Refrences in the YANG modules Table 2: Refrences in the 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 * 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
simple. simple.
o The data model should be suitable for new implementations to use * 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. * Mapping to the PCEP MIB Module should be clear.
o The data model should allow for static configurations of peers. * The data model should allow for static configurations of peers.
o The data model should include read-only counters in order to * 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. This could be in a separate model which augments the base errors. This could be in a separate model which augments the base
data model. data model.
o It should be fairly straightforward to augment the base data model * 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
5.1. The Overview of PCEP Data Model 5.1. The Overview of PCEP Data Model
The PCEP YANG module defined in this document has all the common The PCEP YANG module defined in this document has all the common
building blocks for the PCEP protocol. building blocks for the PCEP protocol.
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 {sync-opt}? +--rw speaker-entity-id? string {sync-opt}?
+--rw admin-status? boolean +--rw admin-status? boolean
+--ro index? uint32 +--ro index? uint32
+--ro oper-status? pcep-oper-status +--ro oper-status? pcep-oper-status
+--rw domain +--rw domains
| +--rw domain* [domain-type domain] | +--rw domains* [domain-type domain-info]
| ... | +--...
+--rw capability +--rw capability
| ... | +--...
+--rw pce-info +--rw pce-info
| +--rw scope | +--rw scope
| | ... | | +--...
| +--rw neigh-domains | +--rw neighbour-domains
| | ... | | +--...
| +--rw path-key {path-key}? | +--rw path-key {path-key}?
| | ... | | +--...
| ... | +--...
+--...
+--ro lsp-db {stateful}? +--ro lsp-db {stateful}?
| +--ro db-ver? uint64 {sync-opt}? | +--ro db-ver? uint64 {sync-opt}?
| +--ro association-list* | +--ro association-list*
| | [type id source global-source extended-id] | | [type id source global-source extended-id]
| | {association}? | | {association}?
| | ... | | +--...
| | +--ro lsp* [plsp-id pcc-id lsp-id]
| | ...
| +--ro lsp* [plsp-id pcc-id lsp-id] | +--ro lsp* [plsp-id pcc-id lsp-id]
| ... | +--...
+--ro path-keys {path-key}? +--ro path-keys {path-key}?
| +--ro path-keys* [path-key] | +--ro path-keys* [path-key]
| +--... | +--...
| ...
+--rw peers +--rw peers
+--rw peer* [addr] +--rw peer* [addr]
... +--...
+--ro sessions +--ro sessions
+--ro session* [initiator] +--ro session* [initiator]
... +--...
rpcs: rpcs:
+---x trigger-resync {stateful,sync-opt}? +---x trigger-resync {stateful,sync-opt}?
+---w input +---w input
+---w pcc? -> /pcep/entity/peers/peer/addr +---w pcc? -> /pcep/entity/peers/peer/addr
notifications: notifications:
+---n pcep-session-up +---n pcep-session-up
| ... | +--...
+---n pcep-session-down +---n pcep-session-down
| ... | +--...
+---n pcep-session-local-overload +---n pcep-session-local-overload
| ... | +--...
+---n pcep-session-local-overload-clear +---n pcep-session-local-overload-clear
| ... | +--...
+---n pcep-session-peer-overload +---n pcep-session-peer-overload
| ... | +--...
+---n pcep-session-peer-overload-clear +---n pcep-session-peer-overload-clear
| ... +--...
5.2. The Entity 5.2. 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
system generated entity index as a primary index to the read only system generated entity index as a primary index to the read only
entity table. If the device implements the PCEP MIB, the "index" entity table. If the device implements the PCEP MIB, the "index"
leaf MUST contain the value of the corresponding pcePcepEntityIndex leaf MUST contain the value of the corresponding pcePcepEntityIndex
and only one entity is assumed. and only one entity is assumed.
The various information related to this entity such as its domain, The various information related to this entity such as its domain,
capcabilities etc. Further incase when the entity is PCE it could capabilities etc. Further incase when the entity is PCE it could
also have path-key and the LSP-DB information. also have path-key and the LSP-DB information.
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 {sync-opt}? +--rw speaker-entity-id? string {sync-opt}?
+--rw admin-status? boolean +--rw admin-status? boolean
+--ro index? uint32 +--ro index? uint32
+--ro oper-status? pcep-oper-status +--ro oper-status? pcep-oper-status
+--rw domain +--rw domains
| +--rw domain* [domain-type domain] | +--rw domains* [domain-type domain-info]
| +--rw domain-type identityref | +--rw domain-type identityref
| +--rw domain domain | +--rw domain-info domain
+--rw capability +--rw capability
| +--rw capability? bits | +--rw capability? bits
| +--rw pce-initiated? boolean {pce-initiated}? | +--rw pce-initiated? boolean {pce-initiated}?
| +--rw include-db-ver? boolean {stateful,sync-opt}? | +--rw include-db-ver? boolean {stateful,sync-opt}?
| +--rw trigger-resync? boolean {stateful,sync-opt}? | +--rw trigger-resync? boolean {stateful,sync-opt}?
| +--rw trigger-initial-sync? boolean {stateful,sync-opt}? | +--rw trigger-initial-sync? boolean {stateful,sync-opt}?
| +--rw incremental-sync? boolean {stateful,sync-opt}? | +--rw incremental-sync? boolean {stateful,sync-opt}?
| +--rw sr {sr}? | +--rw sr {sr}?
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw msd-limit? boolean | +--rw msd-limit? boolean
| +--rw nai? boolean | +--rw nai? boolean
+--rw msd? uint8 {sr}? +--rw msd? uint8 {sr}?
+--rw pce-info +--rw pce-info
| +--rw scope | +--rw scope
| | +--rw path-scope? bits | | +--rw path-scope? bits
| | +--rw intra-area-pref? uint8 | | +--rw intra-area-pref? uint8
| | +--rw inter-area-pref? uint8 | | +--rw inter-area-pref? uint8
| | +--rw inter-as-pref? uint8 | | +--rw inter-as-pref? uint8
| | +--rw inter-layer-pref? uint8 | | +--rw inter-layer-pref? uint8
| +--rw neigh-domains | +--rw neighbour-domains
| | +--rw domain* [domain-type domain] | | +--rw domains* [domain-type domain-info]
| | +--rw domain-type identityref | | +--rw domain-type identityref
| | +--rw domain domain | | +--rw domain-info domain
| +--rw path-key {path-key}? | +--rw path-key {path-key}?
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw discard-timer? uint32 | +--rw discard-timer? uint32
| +--rw reuse-time? uint32 | +--rw reuse-time? uint32
| +--rw pce-id? inet:ip-address | +--rw pce-id? inet:ip-address
+--rw connect-timer? uint16 +--rw connect-timer? uint16
+--rw connect-max-retry? uint32 +--rw connect-max-retry? uint32
+--rw init-backoff-timer? uint16 +--rw init-back-off-timer? uint16
+--rw max-backoff-timer? uint32 +--rw max-back-off-timer? uint32
+--ro open-wait-timer? uint16 +--ro open-wait-timer? uint16
+--ro keep-wait-timer? uint16 +--ro keep-wait-timer? uint16
+--rw keep-alive-timer? uint8 +--rw keepalive-timer? uint8
+--rw dead-timer? uint8 +--rw dead-timer? uint8
+--rw allow-negotiation? boolean +--rw allow-negotiation? boolean
+--rw max-keep-alive-timer? uint8 +--rw max-keepalive-timer? uint8
+--rw max-dead-timer? uint8 +--rw max-dead-timer? uint8
+--rw min-keep-alive-timer? uint8 +--rw min-keepalive-timer? uint8
+--rw min-dead-timer? uint8 +--rw min-dead-timer? uint8
+--rw sync-timer? uint16 {svec}? +--rw sync-timer? uint16 {svec}?
+--rw request-timer? uint16 +--rw request-timer? uint16
+--rw max-sessions? uint32 +--rw max-sessions? uint32
+--rw max-unknown-reqs? uint32 +--rw max-unknown-reqs? uint32
+--rw max-unknown-msgs? uint32 +--rw max-unknown-msgs? uint32
+--rw pcep-notification-max-rate uint32 +--rw pcep-notification-max-rate uint32
+--rw stateful-parameter {stateful}? +--rw stateful-parameter {stateful}?
| +--rw state-timeout? uint32 | +--rw state-timeout? uint32
| +--rw redelegation-timeout? uint32 | +--rw redelegation-timeout? uint32
skipping to change at page 12, line 51 skipping to change at page 14, line 12
| | ... | | ...
| +--ro pcc-original? -> /pcep/entity/peers/peer/addr | +--ro pcc-original? -> /pcep/entity/peers/peer/addr
| +--ro req-id? uint32 | +--ro req-id? uint32
| +--ro retrieved? boolean | +--ro retrieved? boolean
| +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr | +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr
| +--ro creation-time? yang:timestamp | +--ro creation-time? yang:timestamp
| +--ro discard-time? uint32 | +--ro discard-time? uint32
| +--ro reuse-time? uint32 | +--ro reuse-time? uint32
+--rw peers +--rw peers
+--rw peer* [addr] +--rw peer* [addr]
... +--...
5.3. The Peer Lists 5.3. The Peer Lists
The peer list contains peer(s) that the local PCEP entity knows The peer list contains peer(s) that the local PCEP entity knows
about. A PCEP speaker is identified by its IP address. If there is about. A PCEP speaker is identified by its IP address. If there is
a PCEP speaker in the network that uses multiple IP addresses then it a PCEP speaker in the network that uses multiple IP addresses then it
looks like multiple distinct peers to the other PCEP speakers in the looks like multiple distinct peers to the other PCEP speakers in the
network. network.
Since PCEP sessions can be ephemeral, the peer list tracks a peer Since PCEP sessions can be ephemeral, the peer list tracks a peer
skipping to change at page 13, line 36 skipping to change at page 14, line 45
There is a list for static peer configuration and operational state There is a list for static peer configuration and operational state
of all peers (i.e.static as well as discovered)("/pcep/entity/ of all peers (i.e.static as well as discovered)("/pcep/entity/
peers"). The list is used to enable remote PCE configuration at PCC peers"). The list is used to enable remote PCE configuration at PCC
(or PCE) and has the operational state of these peers as well as the (or PCE) and has the operational state of these peers as well as the
remote PCE peer which were discovered and PCC peers that have remote PCE peer which were discovered and PCC peers that have
initiated session. initiated session.
module: ietf-pcep module: ietf-pcep
+--rw pcep! +--rw pcep!
+--rw entity +--rw entity
... +--...
+--rw peers +--rw peers
+--rw peer* [addr] +--rw peer* [addr]
+--rw addr inet:ip-address +--rw addr inet:ip-address
+--rw role pcep-role +--rw role pcep-role
+--rw description? string +--rw description? string
+--rw domain +--rw domains
| +--rw domain* [domain-type domain] | +--rw domains* [domain-type domain-info]
| +--rw domain-type identityref | +--rw domain-type identityref
| +--rw domain domain | +--rw domain-info domain
+--rw capability +--rw capability
| +--rw capability? bits | +--rw capability? bits
| +--rw pce-initiated? boolean | +--rw pce-initiated? boolean
| | {pce-initiated}? | | {pce-initiated}?
| +--rw include-db-ver? boolean | +--rw include-db-ver? boolean
| | {stateful,sync-opt}? | | {stateful,sync-opt}?
| +--rw trigger-resync? boolean | +--rw trigger-resync? boolean
| | {stateful,sync-opt}? | | {stateful,sync-opt}?
| +--rw trigger-initial-sync? boolean | +--rw trigger-initial-sync? boolean
| | {stateful,sync-opt}? | | {stateful,sync-opt}?
skipping to change at page 14, line 21 skipping to change at page 15, line 32
| +--rw msd-limit? boolean | +--rw msd-limit? boolean
| +--rw nai? boolean | +--rw nai? boolean
+--rw msd? uint8 {sr}? +--rw msd? uint8 {sr}?
+--rw pce-info +--rw pce-info
| +--rw scope | +--rw scope
| | +--rw path-scope? bits | | +--rw path-scope? bits
| | +--rw intra-area-pref? uint8 | | +--rw intra-area-pref? uint8
| | +--rw inter-area-pref? uint8 | | +--rw inter-area-pref? uint8
| | +--rw inter-as-pref? uint8 | | +--rw inter-as-pref? uint8
| | +--rw inter-layer-pref? uint8 | | +--rw inter-layer-pref? uint8
| +--rw neigh-domains | +--rw neighbour-domains
| +--rw domain* [domain-type domain] | +--rw domains* [domain-type domain-info]
| +--rw domain-type identityref | +--rw domain-type identityref
| +--rw domain domain | +--rw domain-info domain
+--rw delegation-pref? uint8 {stateful}? +--rw delegation-pref? uint8 {stateful}?
+--rw auth +--rw auth
| +--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 crypto-algorithm identityref | | +--rw crypto-algorithm identityref
| | +--rw (key-string-style)? | | +--rw (key-string-style)?
| | +--:(keystring) | | +--:(keystring)
skipping to change at page 15, line 8 skipping to change at page 16, line 19
| +--rw tls-client | +--rw tls-client
| ... | ...
+--ro discontinuity-time? yang:timestamp +--ro discontinuity-time? yang:timestamp
+--ro initiate-session? boolean +--ro initiate-session? boolean
+--ro session-exists? boolean +--ro session-exists? boolean
+--ro session-up-time? yang:timestamp +--ro session-up-time? yang:timestamp
+--ro session-fail-time? yang:timestamp +--ro session-fail-time? yang:timestamp
+--ro session-fail-up-time? yang:timestamp +--ro session-fail-up-time? yang:timestamp
+--ro sessions +--ro sessions
+--ro session* [initiator] +--ro session* [initiator]
... +--...
5.4. The Session Lists 5.4. The Session Lists
The session list contains PCEP session that the PCEP entity (PCE or The session list contains PCEP session that the PCEP entity (PCE or
PCC) is currently participating in. The statistics in session are PCC) is currently participating in. The statistics in session are
semantically different from those in peer since the former applies to semantically different from those in peer since the former applies to
the current session only, whereas the latter is the aggregate for all the current session only, whereas the latter is the aggregate for all
sessions that have existed to that peer. sessions that have existed to that peer.
Although [RFC5440] forbids more than one active PCEP session between Although [RFC5440] forbids more than one active PCEP session between
skipping to change at page 16, line 8 skipping to change at page 17, line 8
is discarded. is discarded.
The data model for PCEP session presented in this document uses a The data model for PCEP session presented in this document uses a
flat list of sessions. Each session in the list is identified by its flat list of sessions. Each session in the list is identified by its
initiator. This index allows two sessions to exist transiently for a initiator. This index allows two sessions to exist transiently for a
given peer, as discussed above. given peer, as discussed above.
module: ietf-pcep module: ietf-pcep
+--rw pcep! +--rw pcep!
+--rw entity +--rw entity
... +--...
+--rw peers +--rw peers
+--rw peer* [addr] +--rw peer* [addr]
... +--...
+--ro sessions +--ro sessions
+--ro session* [initiator] +--ro session* [initiator]
+--ro initiator pcep-initiator +--ro initiator pcep-initiator
+--ro role? +--ro role?
| -> /pcep/entity/role | -> /pcep/entity/role
+--ro state-last-change? yang:timestamp +--ro state-last-change? yang:timestamp
+--ro state? pcep-sess-state +--ro state?
+--ro session-creation? yang:timestamp | pcep-sess-state
+--ro connect-retry? yang:counter32 +--ro session-creation? yang:timestamp
+--ro local-id? uint8 +--ro connect-retry? yang:counter32
+--ro remote-id? uint8 +--ro local-id? uint8
+--ro keepalive-timer? uint8 +--ro remote-id? uint8
+--ro peer-keepalive-timer? uint8 +--ro keepalive-timer? uint8
+--ro dead-timer? uint8 +--ro peer-keepalive-timer? uint8
+--ro peer-dead-timer? uint8 +--ro dead-timer? uint8
+--ro ka-hold-time-rem? uint8 +--ro peer-dead-timer? uint8
+--ro overloaded? boolean +--ro ka-hold-time-rem? uint8
+--ro overload-time? uint32 +--ro overloaded? boolean
+--ro peer-overloaded? boolean +--ro overloaded-timestamp? yang:timestamp
+--ro peer-overload-time? uint32 +--ro overload-time? uint32
+--ro lspdb-sync? sync-state +--ro peer-overloaded? boolean
+--ro peer-overloaded-timestamp? yang:timestamp
+--ro peer-overload-time? uint32
+--ro lspdb-sync? sync-state
| {stateful}? | {stateful}?
+--ro recv-db-ver? uint64 +--ro recv-db-ver? uint64
| {stateful,sync-opt}? | {stateful,sync-opt}?
+--ro of-list {objective-function}? +--ro of-list {objective-function}?
| +--ro objective-function* [of] | +--ro objective-function* [of]
| +--ro of identityref | +--ro of identityref
+--ro pst-list +--ro pst-list
| +--ro path-setup-type* [pst] | +--ro path-setup-type* [pst]
| +--ro pst identityref | +--ro pst identityref
+--ro assoc-type-list {association}? +--ro assoc-type-list {association}?
| +--ro assoc-type* [at] | +--ro assoc-type* [at]
| +--ro at identityref | +--ro at identityref
+--ro speaker-entity-id? string {sync-opt}? +--ro speaker-entity-id? string
+--ro discontinuity-time? yang:timestamp {sync-opt}?
5.5. Notifications 5.5. 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.
notifications: notifications:
+---n pcep-session-up +---n pcep-session-up
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro peer-addr? -> /pcep/entity/peers/peer/addr
| +--ro session-initiator? | +--ro session-initiator?
| | -> /pcep/entity/peers/peer/sessions/session/initiator | | -> /pcep/entity/peers/peer/sessions/session/initiator
| +--ro state-last-change? yang:timestamp | +--ro state-last-change? yang:timestamp
| +--ro state? pcep-sess-state | +--ro state? pcep-sess-state
+---n pcep-session-down +---n pcep-session-down
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro peer-addr? -> /pcep/entity/peers/peer/addr
| +--ro session-initiator? pcep-initiator | +--ro session-initiator? pcep-initiator
| +--ro state-last-change? yang:timestamp | +--ro state-last-change? yang:timestamp
| +--ro state? pcep-sess-state | +--ro state? pcep-sess-state
+---n pcep-session-local-overload +---n pcep-session-local-overload
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro peer-addr? -> /pcep/entity/peers/peer/addr
| +--ro session-initiator? | +--ro session-initiator?
| | -> /pcep/entity/peers/peer/sessions/session/initiator | | -> /pcep/entity/peers/peer/sessions/session/initiator
| +--ro overloaded? boolean | +--ro overloaded? boolean
| +--ro overload-time? uint32 | +--ro overloaded-timestamp? yang:timestamp
| +--ro overload-time? uint32
+---n pcep-session-local-overload-clear +---n pcep-session-local-overload-clear
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro peer-addr?
| +--ro overloaded? boolean | | -> /pcep/entity/peers/peer/addr
| +--ro overloaded? boolean
| +--ro overloaded-clear-timestamp? yang:timestamp
+---n pcep-session-peer-overload +---n pcep-session-peer-overload
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro peer-addr?
| | -> /pcep/entity/peers/peer/addr
| +--ro session-initiator? | +--ro session-initiator?
| | -> /pcep/entity/peers/peer/sessions/session/initiator | | -> /pcep/entity/peers/peer/sessions/session/initiator
| +--ro peer-overloaded? boolean | +--ro peer-overloaded? boolean
| +--ro peer-overload-time? uint32 | +--ro peer-overloaded-timestamp? yang:timestamp
| +--ro peer-overload-time? uint32
+---n pcep-session-peer-overload-clear +---n pcep-session-peer-overload-clear
+--ro peer-addr? -> /pcep/entity/peers/peer/addr +--ro peer-addr?
+--ro peer-overloaded? boolean | -> /pcep/entity/peers/peer/addr
+--ro peer-overloaded? boolean
+--ro peer-overloaded-clear-timestamp? yang:timestamp
5.6. RPC 5.6. RPC
This YANG model defines a RPC to trigger state resynchronization to a This YANG model defines a RPC to trigger state resynchronization to a
particular PCEP peer. particular PCEP peer.
rpcs: rpcs:
+---x trigger-resync {stateful,sync-opt}? +---x trigger-resync {stateful,sync-opt}?
+---w input +---w input
+---w pcc? -> /pcep/entity/peers/peer/addr +---w pcc? -> /pcep/entity/peers/peer/addr
6. The Design of PCEP Statistics Data Model 6. The Design of PCEP Statistics Data Model
The module, "ietf-pcep-stats", augments the ietf-pcep module to The module, "ietf-pcep-stats", augments the ietf-pcep module to
include statistics at the PCEP peer and session level. include statistics at the PCEP peer and session level.
module: ietf-pcep-stats module: ietf-pcep-stats
augment /pcep:pcep/pcep:entity/pcep:peers/pcep:peer:
augment /pcep:pcep/pcep:entity/pcep:peers/pcep:peer:
+--ro num-sess-setup-ok? yang:counter32 +--ro num-sess-setup-ok? yang:counter32
+--ro num-sess-setup-fail? yang:counter32 +--ro num-sess-setup-fail? yang:counter32
+--ro pcep-stats +--ro pcep-stats
+--ro avg-rsp-time? uint32 +--ro discontinuity-time? yang:timestamp
+--ro lwm-rsp-time? uint32 +--ro rsp-time-avg? uint32
+--ro hwm-rsp-time? uint32 +--ro rsp-time-lwm? uint32
+--ro rsp-time-hwm? uint32
+--ro num-pcreq-sent? yang:counter32 +--ro num-pcreq-sent? yang:counter32
+--ro num-pcreq-rcvd? yang:counter32 +--ro num-pcreq-rcvd? yang:counter32
+--ro num-pcrep-sent? yang:counter32 +--ro num-pcrep-sent? yang:counter32
+--ro num-pcrep-rcvd? yang:counter32 +--ro num-pcrep-rcvd? yang:counter32
+--ro num-pcerr-sent? yang:counter32 +--ro num-pcerr-sent? yang:counter32
+--ro num-pcerr-rcvd? yang:counter32 +--ro num-pcerr-rcvd? yang:counter32
+--ro num-pcntf-sent? yang:counter32 +--ro num-pcntf-sent? yang:counter32
+--ro num-pcntf-rcvd? yang:counter32 +--ro num-pcntf-rcvd? yang:counter32
+--ro num-keepalive-sent? yang:counter32 +--ro num-keepalive-sent? yang:counter32
+--ro num-keepalive-rcvd? yang:counter32 +--ro num-keepalive-rcvd? yang:counter32
skipping to change at page 19, line 25 skipping to change at page 20, line 39
+--ro path-key {pcep:path-key}? +--ro path-key {pcep:path-key}?
| +--ro num-unknown-path-key? yang:counter32 | +--ro num-unknown-path-key? yang:counter32
| +--ro num-exp-path-key? yang:counter32 | +--ro num-exp-path-key? yang:counter32
| +--ro num-dup-path-key? yang:counter32 | +--ro num-dup-path-key? yang:counter32
| +--ro num-path-key-no-attempt? yang:counter32 | +--ro num-path-key-no-attempt? yang:counter32
+--ro num-req-sent-closed? yang:counter32 +--ro num-req-sent-closed? yang:counter32
+--ro num-req-rcvd-closed? yang:counter32 +--ro num-req-rcvd-closed? yang:counter32
augment /pcep:pcep/pcep:entity/pcep:peers/pcep:peer/pcep:sessions augment /pcep:pcep/pcep:entity/pcep:peers/pcep:peer/pcep:sessions
/pcep:session: /pcep:session:
+--ro pcep-stats +--ro pcep-stats
+--ro avg-rsp-time? uint32 +--ro discontinuity-time? yang:timestamp
+--ro lwm-rsp-time? uint32 +--ro rsp-time-avg? uint32
+--ro hwm-rsp-time? uint32 +--ro rsp-time-lwm? uint32
+--ro rsp-time-hwm? uint32
+--ro num-pcreq-sent? yang:counter32 +--ro num-pcreq-sent? yang:counter32
+--ro num-pcreq-rcvd? yang:counter32 +--ro num-pcreq-rcvd? yang:counter32
+--ro num-pcrep-sent? yang:counter32 +--ro num-pcrep-sent? yang:counter32
+--ro num-pcrep-rcvd? yang:counter32 +--ro num-pcrep-rcvd? yang:counter32
+--ro num-pcerr-sent? yang:counter32 +--ro num-pcerr-sent? yang:counter32
+--ro num-pcerr-rcvd? yang:counter32 +--ro num-pcerr-rcvd? yang:counter32
+--ro num-pcntf-sent? yang:counter32 +--ro num-pcntf-sent? yang:counter32
+--ro num-pcntf-rcvd? yang:counter32 +--ro num-pcntf-rcvd? yang:counter32
+--ro num-keepalive-sent? yang:counter32 +--ro num-keepalive-sent? yang:counter32
+--ro num-keepalive-rcvd? yang:counter32 +--ro num-keepalive-rcvd? yang:counter32
skipping to change at page 20, line 46 skipping to change at page 22, line 13
+--ro num-dup-path-key? yang:counter32 +--ro num-dup-path-key? yang:counter32
+--ro num-path-key-no-attempt? yang:counter32 +--ro num-path-key-no-attempt? yang:counter32
7. Advanced PCE Features 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 * Capability and Scope
o Domain information (local/neighbour) * Domain information (local/neighbour)
o Path-Key * Path-Key
o Objective Function (OF)
o Global Concurrent Optimization (GCO) * Objective Function (OF)
o P2MP * Global Concurrent Optimization (GCO)
o GMPLS * P2MP
o Inter-Layer * GMPLS
o Stateful PCE * Inter-Layer
o Segment Routing (SR) * Stateful PCE
o Authentication including PCEPS (TLS) * Segment Routing (SR)
* Authentication including PCEPS (TLS)
7.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 The PCEP data model contains the operational state of LSPs
(/pcep/entity/lsp-db/lsp/) with PCEP specific attributes. The (/pcep/entity/lsp-db/lsp/) with PCEP specific attributes. The
generic TE attributes of the LSP are defined in generic TE attributes of the LSP are defined in
skipping to change at page 22, line 13 skipping to change at page 23, line 28
session is started. session is started.
9. PCEP YANG Modules 9. PCEP YANG Modules
9.1. ietf-pcep module 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@2021-02-22.yang" <CODE BEGINS> file "ietf-pcep@2021-10-23.yang"
module ietf-pcep { module ietf-pcep {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-pcep"; namespace "urn:ietf:params:xml:ns:yang:ietf-pcep";
prefix pcep; prefix pcep;
import ietf-inet-types {
prefix inet;
reference
"RFC 6991: Common YANG Data Types";
}
import ietf-yang-types {
prefix yang;
reference
"RFC 6991: Common YANG Data Types";
}
import ietf-te-types {
prefix te-types;
reference
"RFC 8776: Common YANG Data Types for Traffic Engineering";
}
import ietf-key-chain {
prefix key-chain;
reference
"RFC 8177: YANG Data Model for Key Chains";
}
import ietf-netconf-acm {
prefix nacm;
reference
"RFC 8341: Network Configuration Protocol (NETCONF) Access
Control Model";
}
import ietf-tls-server {
prefix tlss;
reference
"I-D.ietf-netconf-tls-client-server: YANG Groupings for TLS
Clients and TLS Servers";
}
import ietf-tls-client {
prefix tlsc;
reference
"I-D.ietf-netconf-tls-client-server: YANG Groupings for TLS
Clients and TLS Servers";
}
import ietf-ospf {
prefix ospf;
reference
"I-D.ietf-ospf-yang: YANG Data Model for OSPF Protocol";
}
import ietf-isis {
prefix isis;
reference
"I-D.ietf-isis-yang-isis-cfg: YANG Data Model for IS-IS
Protocol";
}
organization
"IETF PCE (Path Computation Element) Working Group";
contact
"WG Web: <https://tools.ietf.org/wg/pce/>
WG List: <mailto:pce@ietf.org>
Editor: Dhruv Dhody
<mailto:dhruv.ietf@gmail.com>";
description
"The YANG module defines a generic configuration and
operational model for PCEP.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here.
Copyright (c) 2021 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see the
RFC itself for full legal notices.";
revision 2021-02-22 { import ietf-inet-types {
description prefix inet;
"Initial revision."; reference
reference "RFC 6991: Common YANG Data Types";
"RFC XXXX: A YANG Data Model for Path Computation }
Element Communications Protocol (PCEP)"; import ietf-yang-types {
} prefix yang;
reference
"RFC 6991: Common YANG Data Types";
}
import ietf-te-types {
prefix te-types;
reference
"RFC 8776: Common YANG Data Types for Traffic Engineering";
}
import ietf-key-chain {
prefix key-chain;
reference
"RFC 8177: YANG Data Model for Key Chains";
}
import ietf-netconf-acm {
prefix nacm;
reference
"RFC 8341: Network Configuration Protocol (NETCONF) Access
Control Model";
}
import ietf-tls-server {
prefix tlss;
reference
"I-D.ietf-netconf-tls-client-server: YANG Groupings for TLS
Clients and TLS Servers";
}
import ietf-tls-client {
prefix tlsc;
reference
"I-D.ietf-netconf-tls-client-server: YANG Groupings for TLS
Clients and TLS Servers";
}
import ietf-ospf {
prefix ospf;
reference
"I-D.ietf-ospf-yang: YANG Data Model for OSPF Protocol";
}
import ietf-isis {
prefix isis;
reference
"I-D.ietf-isis-yang-isis-cfg: YANG Data Model for IS-IS
Protocol";
}
/* organization
* Typedefs "IETF PCE (Path Computation Element) Working Group";
*/ contact
"WG Web: <https://tools.ietf.org/wg/pce/>
WG List: <mailto:pce@ietf.org>
Editor: Dhruv Dhody
<mailto:dhruv.ietf@gmail.com>";
description
"The YANG module defines a generic configuration and
operational model for PCEP.
typedef pcep-role { The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
type enumeration { NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
enum unknown { 'MAY', and 'OPTIONAL' in this document are to be interpreted as
value 0; described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
description they appear in all capitals, as shown here.
"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";
}
}
description
"The role of a PCEP speaker.
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.";
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
} Copyright (c) 2021 IETF Trust and the persons identified as
authors of the code. All rights reserved.
typedef pcep-oper-status { Redistribution and use in source and binary forms, with or
type enumeration { without modification, is permitted pursuant to, and subject
enum oper-status-up { to the license terms contained in, the Simplified BSD License
value 1; set forth in Section 4.c of the IETF Trust's Legal Provisions
description Relating to IETF Documents
"The PCEP entity is active"; (https://trustee.ietf.org/license-info).
}
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";
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
typedef pcep-initiator { This version of this YANG module is part of RFC XXXX; see the
type enumeration { RFC itself for full legal notices.";
enum local {
value 1;
description
"The local PCEP entity initiated the session";
}
enum remote {
value 2;
description
"The remote PCEP peer initiated the session";
}
}
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 { revision 2021-10-23 {
type enumeration { description
enum tcp-pending { "Initial revision.";
value 1; reference
description "RFC XXXX: A YANG Data Model for Path Computation
"The tcp-pending state of PCEP session."; Element Communications Protocol (PCEP)";
} }
enum open-wait {
value 2;
description
"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";
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
typedef domain-ospf-area { /*
type ospf:area-id-type; * Typedefs
description */
"OSPF Area ID.";
reference
"I-D.ietf-ospf-yang: YANG Data Model for OSPF Protocol";
}
typedef domain-isis-area { typedef pcep-role {
type isis:area-address; type enumeration {
description enum unknown {
"IS-IS Area ID."; value 0;
reference description
"I-D.ietf-isis-yang-isis-cfg: YANG Data Model for IS-IS "An unknown role";
Protocol"; }
} 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";
}
typedef domain-as { }
type inet:as-number; description
description "The role of a PCEP speaker.
"Autonomous System number."; 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.";
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
typedef domain { typedef pcep-oper-status {
type union { type enumeration {
type domain-ospf-area; enum oper-status-up {
type domain-isis-area; value 1;
type domain-as; description
} "The PCEP entity is active";
description }
"The Domain Information"; 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";
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
typedef operational-state { typedef pcep-initiator {
type enumeration { type enumeration {
enum down { enum local {
value 0; value 1;
description description
"not active."; "The local PCEP entity initiated the session";
} }
enum up { enum remote {
value 1; value 2;
description description
"signalled."; "The remote PCEP peer initiated the session";
} }
enum active { }
value 2; description
description "The initiator of the session, that is, whether the TCP
"up and carrying traffic."; connection was initiated by the local PCEP entity or
} the remote peer.
enum going-down { Takes one of the following values
value 3; - local(1): Initiated locally
description - remote(2): Initiated remotely";
"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";
reference
"RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE";
}
typedef sync-state { typedef pcep-sess-state {
type enumeration { type enumeration {
enum pending { enum tcp-pending {
value 0; value 1;
description description
"The state synchronization "The TCPPending state of PCEP session.";
has not started."; }
} enum open-wait {
enum ongoing { value 2;
value 1; description
description "The OpenWait state of PCEP session.";
"The state synchronization }
is ongoing."; enum keep-wait {
value 3;
description
"The KeepWait state of PCEP session.";
}
enum session-up {
value 4;
description
"The SessionUP 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 TCPPending state
- open-wait(2): PCEP OpenWait state
- keep-wait(3): PCEP KeepWait state
- session-up(4): PCEP SessionUP state";
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
} typedef domain-ospf-area {
enum finished { type ospf:area-id-type;
value 2; description
description "OSPF Area ID.";
"The state synchronization reference
is finished."; "I-D.ietf-ospf-yang: YANG Data Model for OSPF Protocol";
} }
}
description
"The LSP-DB state synchronization operational
status.";
reference
"RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE";
}
/* typedef domain-isis-area {
* Features type isis:area-address;
*/ description
"IS-IS Area ID.";
reference
"I-D.ietf-isis-yang-isis-cfg: YANG Data Model for IS-IS
Protocol";
}
feature svec { typedef domain-as {
description type inet:as-number;
"Support synchronized path computation."; description
reference "Autonomous System number.";
"RFC 5440: Path Computation Element (PCE) Communication }
Protocol (PCEP)";
}
feature gmpls { typedef domain {
description type union {
"Support GMPLS."; type domain-ospf-area;
reference type domain-isis-area;
"RFC 8779: PCEP extensions for GMPLS"; type domain-as;
} }
description
"The Domain Information";
}
feature objective-function { typedef operational-state {
description type enumeration {
"Support OF as per RFC 5541."; enum down {
reference value 0;
"RFC 5541: Encoding of Objective Functions in the Path description
Computation Element Communication Protocol (PCEP)"; "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";
reference
"RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE";
}
typedef sync-state {
type enumeration {
enum pending {
value 0;
description
"The state synchronization
has not started.";
}
enum ongoing {
value 1;
description
"The state synchronization
is ongoing.";
}
enum finished {
value 2;
description
"The state synchronization
is finished.";
}
}
description
"The LSP-DB state synchronization operational
status.";
reference
"RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE";
}
feature global-concurrent { /*
description * Features
"Support GCO as per RFC 5557."; */
reference
"RFC 5557: Path Computation Element Communication Protocol
(PCEP) Requirements and Protocol Extensions in Support of
Global Concurrent Optimization";
}
feature path-key { feature svec {
description description
"Support path-key as per RFC 5520."; "Support synchronized path computation.";
reference reference
"RFC 5520: Preserving Topology Confidentiality in Inter- "RFC 5440: Path Computation Element (PCE) Communication
Domain Path Computation Using a Path-Key-Based Mechanism"; Protocol (PCEP)";
} }
feature p2mp { feature gmpls {
description description
"Support P2MP as per RFC 8306."; "Support GMPLS.";
reference reference
"RFC 8306: Extensions to the Path Computation Element "RFC 8779: PCEP extensions for GMPLS";
Communication Protocol (PCEP) for Point-to-Multipoint }
Traffic Engineering Label Switched Paths"; feature objective-function {
} description
"Support OF as per RFC 5541.";
reference
"RFC 5541: Encoding of Objective Functions in the Path
Computation Element Communication Protocol (PCEP)";
}
feature stateful { feature global-concurrent {
description description
"Support stateful PCE as per RFC 8231."; "Support Global Concurrent Optimization (GCO) as per RFC
reference 5557.";
"RFC 8231: Path Computation Element Communication Protocol reference
(PCEP) Extensions for Stateful PCE"; "RFC 5557: Path Computation Element Communication Protocol
} (PCEP) Requirements and Protocol Extensions in Support of
Global Concurrent Optimization";
}
feature sync-opt { feature path-key {
description description
"Support stateful sync optimization "Support path-key as per RFC 5520.";
as per RFC 8232"; reference
reference "RFC 5520: Preserving Topology Confidentiality in Inter-
"RFC 8232: Optimizations of Label Switched Path State Domain Path Computation Using a Path-Key-Based Mechanism";
Synchronization Procedures for a Stateful PCE"; }
}
feature pce-initiated { feature p2mp {
description description
"Support PCE-Initiated LSP as per "Support Point-to-Multipoint (P2MP) as per RFC 8306.";
RFC 8281."; reference
reference "RFC 8306: Extensions to the Path Computation Element
"RFC 8281: Path Computation Element Communication Protocol Communication Protocol (PCEP) for Point-to-Multipoint
(PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful Traffic Engineering Label Switched Paths";
PCE Model"; }
}
feature tls {
description
"Support PCEP over TLS as per
RFC 8253.";
reference
"RFC 8253: PCEPS: Usage of TLS to Provide a Secure Transport
for the Path Computation Element Communication Protocol
(PCEP)";
}
feature sr { feature stateful {
description description
"Support Segment Routing for PCE."; "Support Stateful PCE as per RFC 8231.";
reference reference
"RFC 8664: Path Computation Element Communication Protocol "RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Segment Routing"; (PCEP) Extensions for Stateful PCE";
} }
feature association { feature sync-opt {
description description
"Support Association in PCEP."; "Support Stateful state synchronization optimization
reference as per RFC 8232";
"RFC 8697: Path Computation Element Communication Protocol reference
(PCEP) Extensions for Establishing Relationships between "RFC 8232: Optimizations of Label Switched Path State
Sets of Label Switched Paths (LSPs)"; Synchronization Procedures for a Stateful PCE";
} }
/* feature pce-initiated {
* Identities description
*/ "Support PCE-Initiated LSP as per
RFC 8281.";
reference
"RFC 8281: Path Computation Element Communication Protocol
(PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful
PCE Model";
}
identity domain-type { feature tls {
description description
"Base Domain Type for PCE"; "Support PCEP over TLS as per RFC 8253.";
} reference
"RFC 8253: PCEPS: Usage of TLS to Provide a Secure Transport
for the Path Computation Element Communication Protocol
(PCEP)";
}
identity ospf-area { feature sr {
base domain-type; description
description "Support Segment Routing (SR) for PCE.";
"The OSPF area."; reference
} "RFC 8664: Path Computation Element Communication Protocol
(PCEP) Extensions for Segment Routing";
}
identity isis-area { feature association {
base domain-type; description
description "Support Association in PCEP.";
"The IS-IS area."; reference
} "RFC 8697: Path Computation Element Communication Protocol
identity autonomous-system { (PCEP) Extensions for Establishing Relationships between
base domain-type; Sets of Label Switched Paths (LSPs)";
description }
"The Autonomous System (AS).";
}
identity lsp-error { /*
if-feature "stateful"; * Identities
description */
"Base LSP error";
reference
"RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE";
}
identity no-error-lsp-error { identity domain-type {
if-feature "stateful"; description
base lsp-error; "Base Domain Type for PCE";
description }
"No error, LSP is fine."; identity ospf-area {
reference base domain-type;
"RFC 8231: Path Computation Element Communication Protocol description
(PCEP) Extensions for Stateful PCE"; "The OSPF area.";
} }
identity unknown-lsp-error { identity isis-area {
if-feature "stateful"; base domain-type;
base lsp-error; description
description "The IS-IS area.";
"Unknown reason."; }
reference
"RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE";
}
identity limit-lsp-error { identity autonomous-system {
if-feature "stateful"; base domain-type;
base lsp-error; description
description "The Autonomous System (AS).";
"Limit reached for PCE-controlled LSPs."; }
reference
"RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE";
}
identity pending-lsp-error { identity lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; description
description "Base LSP error";
"Too many pending LSP update requests."; reference
reference "RFC 8231: Path Computation Element Communication Protocol
"RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE";
(PCEP) Extensions for Stateful PCE"; }
}
identity unacceptable-lsp-error { identity no-error-lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; base lsp-error;
description description
"Unacceptable parameters."; "No error, LSP is fine.";
reference reference
"RFC 8231: Path Computation Element Communication Protocol "RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE"; (PCEP) Extensions for Stateful PCE";
} }
identity internal-lsp-error { identity unknown-lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; base lsp-error;
description description
"Internal error."; "Unknown reason.";
reference reference
"RFC 8231: Path Computation Element Communication Protocol "RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE"; (PCEP) Extensions for Stateful PCE";
} }
identity admin-lsp-error { identity limit-lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; base lsp-error;
description description
"LSP administratively brought down."; "Limit reached for PCE-controlled LSPs.";
reference reference
"RFC 8231: Path Computation Element Communication Protocol "RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE"; (PCEP) Extensions for Stateful PCE";
} }
identity preempted-lsp-error { identity pending-lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; base lsp-error;
description description
"LSP preempted."; "Too many pending LSP update requests.";
reference reference
"RFC 8231: Path Computation Element Communication Protocol "RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE"; (PCEP) Extensions for Stateful PCE";
} }
identity rsvp-lsp-error { identity unacceptable-lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; base lsp-error;
description description
"RSVP signaling error."; "Unacceptable parameters.";
reference reference
"RFC 8231: Path Computation Element Communication Protocol "RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE"; (PCEP) Extensions for Stateful PCE";
} }
/* identity internal-lsp-error {
* Groupings if-feature "stateful";
*/ base lsp-error;
description
"Internal error.";
reference
"RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE";
}
grouping pce-scope { identity admin-lsp-error {
description if-feature "stateful";
"This grouping defines PCE path computation scope base lsp-error;
information which maybe relevant to PCE selection. description
This information corresponds to PCE auto-discovery "LSP administratively brought down.";
information."; reference
reference "RFC 8231: Path Computation Element Communication Protocol
"RFC 5088: OSPF Protocol Extensions for Path (PCEP) Extensions for Stateful PCE";
Computation Element (PCE) Discovery }
RFC 5089: IS-IS Protocol Extensions for Path identity preempted-lsp-error {
Computation Element (PCE) Discovery"; if-feature "stateful";
leaf path-scope { base lsp-error;
type bits { description
bit intra-area-scope { "LSP preempted.";
description reference
"PCE can compute intra-area paths."; "RFC 8231: Path Computation Element Communication Protocol
} (PCEP) Extensions for Stateful PCE";
bit inter-area-scope { }
description
"PCE can compute inter-area paths.";
}
bit inter-area-scope-default {
description
"PCE can act as a default PCE for inter-area
path computation.";
}
bit inter-as-scope {
description
"PCE can compute inter-AS paths.";
}
bit inter-as-scope-default {
description
"PCE can act as a default PCE for inter-AS
path computation.";
}
bit inter-layer-scope {
description
"PCE can compute inter-layer paths.";
}
}
description
"The field corresponding to the path scope bits";
}
leaf intra-area-pref {
type uint8 {
range "0..7";
}
description
"The PCE's preference for intra-area TE LSP
computation.";
}
leaf inter-area-pref {
type uint8 {
range "0..7";
}
description
"The PCE's preference for inter-area TE LSP
computation.";
}
leaf inter-as-pref {
type uint8 {
range "0..7";
}
description
"The PCE's preference for inter-AS TE LSP
computation.";
}
leaf inter-layer-pref {
type uint8 {
range "0..7";
}
description
"The PCE's preference for inter-layer TE LSP
computation.";
}
}
//pce-scope identity rsvp-lsp-error {
if-feature "stateful";
base lsp-error;
description
"RSVP signaling error.";
reference
"RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE";
}
grouping domain { /*
description * Groupings
"This grouping specifies a Domain where the */
PCEP speaker has topology visibility.";
leaf domain-type { grouping pce-scope {
type identityref { description
base domain-type; "This grouping defines PCE path computation scope
} information which maybe relevant to PCE selection.
description This information corresponds to PCE auto-discovery
"The domain type."; information.";
} reference
leaf domain { "RFC 5088: OSPF Protocol Extensions for Path
type domain; Computation Element (PCE) Discovery
description RFC 5089: IS-IS Protocol Extensions for Path
"The domain Information."; Computation Element (PCE) Discovery";
} leaf path-scope {
} type bits {
bit intra-area-scope {
description
"PCE can compute intra-area paths (L bit).";
}
bit inter-area-scope {
description
"PCE can compute inter-area paths (R bit).";
}
bit inter-area-scope-default {
description
"PCE can act as a default PCE for inter-area
path computation. (Rd bit)";
}
bit inter-as-scope {
description
"PCE can compute inter-AS paths (S bit).";
}
bit inter-as-scope-default {
description
"PCE can act as a default PCE for inter-AS
path computation (Sd bit).";
}
bit inter-layer-scope {
description
"PCE can compute inter-layer paths (Y bit).";
}
}
description
"The field corresponding to the path scope bits";
}
leaf intra-area-pref {
type uint8 {
range "0..7";
}
description
"The PCE's preference for intra-area TE LSP
computation (PrefL field). Where 7 reflects
the highest preference.";
}
leaf inter-area-pref {
type uint8 {
range "0..7";
}
description
"The PCE's preference for inter-area TE LSP
computation (PrefR field). Where 7 reflects
the highest preference.";
}
leaf inter-as-pref {
type uint8 {
range "0..7";
}
description
"The PCE's preference for inter-AS TE LSP
computation (PrefS field). Where 7 reflects
the highest preference.";
}
leaf inter-layer-pref {
type uint8 {
range "0..7";
}
description
"The PCE's preference for inter-layer TE LSP
computation (PrefY field). Where 7 reflects
the highest preference.";
}
}
//domain //pce-scope
grouping info { grouping domain {
description description
"This grouping specifies all information which "This grouping specifies a Domain where the
maybe relevant to both PCC and PCE. PCEP speaker has topology visibility.";
This information corresponds to PCE auto-discovery leaf domain-type {
information."; type identityref {
container domain { base domain-type;
description }
"The local domain for the PCEP entity"; description
list domain { "The domain type.";
key "domain-type domain"; }
description leaf domain-info {
"The local domain."; type domain;
uses domain { description
description "The domain Information.";
"The local domain for the PCEP entity."; }
} }
}
}
container capability {
description
"The PCEP entity capability information of local
PCEP entity. This maybe relevant to PCE selection
as well. This information corresponds to PCE auto-
discovery information.";
reference
"RFC 5088: OSPF Protocol Extensions for Path
Computation Element (PCE) Discovery
RFC 5089: IS-IS Protocol Extensions for Path
Computation Element (PCE) Discovery";
leaf capability {
type bits {
bit gmpls {
if-feature "gmpls";
description
"Path computation with GMPLS link
constraints.";
}
bit bi-dir {
description
"Bidirectional path computation.";
}
bit diverse {
description
"Diverse path computation.";
}
bit load-balance {
description
"Load-balanced path computation.";
}
bit synchronize {
if-feature "svec";
description
"Synchronized paths computation.";
}
bit objective-function {
if-feature "objective-function";
description
"Support for multiple objective functions.";
}
bit add-path-constraint {
description
"Support for additive path constraints (max
hop count, etc.).";
}
bit prioritization {
description
"Support for request prioritization.";
}
bit multi-request {
description
"Support for multiple requests per message.";
}
bit global-concurrent {
if-feature "global-concurrent";
description
"Support for Global Concurrent Optimization
(GCO).";
}
bit p2mp {
if-feature "p2mp";
description
"Support for P2MP path computation.";
}
bit active {
if-feature "stateful";
description
"Support for active stateful PCE.";
}
bit passive {
if-feature "stateful";
description
"Support for passive stateful PCE.";
}
bit p2mp-active {
if-feature "stateful";
if-feature "p2mp";
description
"Support for active stateful PCE for P2MP.";
}
bit p2mp-passive {
if-feature "stateful";
if-feature "p2mp";
description
"Support for passive stateful PCE for P2MP.";
}
bit p2mp-pce-initiated {
if-feature "stateful";
if-feature "pce-initiated";
if-feature "p2mp";
description
"Support for PCE-initiated LSP for P2MP.";
}
}
description
"The bits string indicating the capabiliies";
reference
"RFC 5088: OSPF Protocol Extensions for Path
Computation Element (PCE) Discovery
RFC 5089: IS-IS Protocol Extensions for Path
Computation Element (PCE) Discovery";
}
leaf pce-initiated {
if-feature "pce-initiated";
type boolean;
description
"Set to true if PCE-initiated LSP capability is
enabled.";
reference //domain
"RFC 8281: Path Computation Element Communication
Protocol (PCEP) Extensions for PCE-Initiated LSP
Setup in a Stateful PCE Model";
}
leaf include-db-ver {
if-feature "stateful";
if-feature "sync-opt";
type boolean;
description
"Support inclusion of LSP-DB-VERSION
in LSP object";
reference
"RFC 8232: Optimizations of Label Switched Path State
Synchronization Procedures for a Stateful PCE";
}
leaf trigger-resync {
if-feature "stateful";
if-feature "sync-opt";
type boolean;
description
"Support PCE triggered re-synchronization";
reference
"RFC 8232: Optimizations of Label Switched Path State
Synchronization Procedures for a Stateful PCE";
}
leaf trigger-initial-sync {
if-feature "stateful";
if-feature "sync-opt";
type boolean;
description
"PCE triggered initial synchronization";
reference
"RFC 8232: Optimizations of Label Switched Path State
Synchronization Procedures for a Stateful PCE";
}
leaf incremental-sync {
if-feature "stateful";
if-feature "sync-opt";
type boolean;
description
"Support incremental (delta) sync";
reference
"RFC 8232: Optimizations of Label Switched Path State
Synchronization Procedures for a Stateful PCE";
}
container sr {
if-feature "sr";
description
"If segment routing is supported";
reference
"RFC 8664: Path Computation Element Communication Protocol
(PCEP) Extensions for Segment Routing";
leaf enabled {
type boolean;
description
"Set to true if SR is enabled";
}
leaf msd-limit {
type boolean;
default "false";
description
"True indicates no limit on MSD, the
leaf msd is ignored";
}
leaf nai {
type boolean;
default "false";
description
"True indicates capability to resolve NAI
to SID";
}
}
//sr
}
//capability
leaf msd {
if-feature "sr";
type uint8;
description
"Maximum SID Depth for SR";
reference
"RFC 8664: Path Computation Element Communication Protocol
(PCEP) Extensions for Segment Routing";
}
}
//info grouping info {
description
"This grouping specifies all information which
maybe relevant to both PCC and PCE.
This information corresponds to PCE auto-discovery
information.";
container domains {
description
"The local domain for the PCEP entity";
list domains {
key "domain-type domain-info";
description
"The local domain.";
uses domain {
description
"The local domain for the PCEP entity.";
}
grouping pce-info { }
description }
"This grouping specifies all PCE information container capability {
which maybe relevant to the PCE selection. description
This information corresponds to PCE auto-discovery "The PCEP entity capability information of local
information."; PCEP entity. This maybe relevant to PCE selection
container scope { as well. This information corresponds to PCE auto-
description discovery information.";
"The path computation scope"; reference
uses pce-scope; "IANA OSPF: Path Computation Element (PCE) Capability
} Flags in Open Shortest Path First v2 (OSPFv2)
container neigh-domains { Parameters
description RFC 5088: OSPF Protocol Extensions for Path
"The list of neighbour PCE-Domain Computation Element (PCE) Discovery
toward which a PCE can compute RFC 5089: IS-IS Protocol Extensions for Path
paths"; Computation Element (PCE) Discovery";
list domain { leaf capability {
key "domain-type domain"; type bits {
description bit gmpls {
"The neighbour domain."; if-feature "gmpls";
uses domain { description
description "Path computation with GMPLS link
"The PCE neighbour domain."; constraints.";
} }
} bit bi-dir {
} description
} "Bidirectional path computation.";
}
bit diverse {
description
"Diverse path computation.";
}
bit load-balance {
description
"Load-balanced path computation.";
}
bit synchronize {
if-feature "svec";
description
"Synchronized paths computation.";
}
bit objective-function {
if-feature "objective-function";
description
"Support for multiple objective functions.";
}
bit add-path-constraint {
description
"Support for additive path constraints (max
hop count, etc.).";
}
bit prioritization {
description
"Support for request prioritization.";
}
bit multi-request {
description
"Support for multiple requests per message.";
}
bit global-concurrent {
if-feature "global-concurrent";
description
"Support for Global Concurrent Optimization
(GCO).";
}
bit p2mp {
if-feature "p2mp";
description
"Support for P2MP path computation.";
}
bit active {
if-feature "stateful";
description
"Support for active stateful PCE.";
}
bit passive {
if-feature "stateful";
description
"Support for passive stateful PCE.";
}
bit p2mp-active {
if-feature "stateful";
if-feature "p2mp";
description
"Support for active stateful PCE for P2MP.";
}
bit p2mp-passive {
if-feature "stateful";
if-feature "p2mp";
description
"Support for passive stateful PCE for P2MP.";
}
bit p2mp-pce-initiated {
if-feature "stateful";
if-feature "pce-initiated";
if-feature "p2mp";
description
"Support for PCE-initiated LSP for P2MP.";
}
}
description
"The bits string indicating the capabiliies";
reference
"RFC 5088: OSPF Protocol Extensions for Path
Computation Element (PCE) Discovery
RFC 5089: IS-IS Protocol Extensions for Path
Computation Element (PCE) Discovery";
}
leaf pce-initiated {
if-feature "pce-initiated";
type boolean;
description
"Set to true if PCE-initiated LSP capability is
enabled.";
reference
"RFC 8281: Path Computation Element Communication
Protocol (PCEP) Extensions for PCE-Initiated LSP
Setup in a Stateful PCE Model";
}
leaf include-db-ver {
if-feature "stateful";
if-feature "sync-opt";
type boolean;
description
"Support inclusion of LSP-DB-VERSION
in LSP object";
reference
"RFC 8232: Optimizations of Label Switched Path State
Synchronization Procedures for a Stateful PCE";
}
leaf trigger-resync {
if-feature "stateful";
if-feature "sync-opt";
type boolean;
description
"Support PCE triggered re-synchronization";
reference
"RFC 8232: Optimizations of Label Switched Path State
Synchronization Procedures for a Stateful PCE";
}
leaf trigger-initial-sync {
if-feature "stateful";
if-feature "sync-opt";
type boolean;
description
"PCE triggered initial synchronization";
reference
"RFC 8232: Optimizations of Label Switched Path State
Synchronization Procedures for a Stateful PCE";
}
leaf incremental-sync {
if-feature "stateful";
if-feature "sync-opt";
type boolean;
description
"Support incremental (delta) sync";
reference
"RFC 8232: Optimizations of Label Switched Path State
Synchronization Procedures for a Stateful PCE";
}
container sr {
if-feature "sr";
description
"If segment routing is supported";
reference
"RFC 8664: Path Computation Element Communication Protocol
(PCEP) Extensions for Segment Routing";
leaf enabled {
type boolean;
description
"Set to true if SR is enabled";
}
leaf msd-limit {
type boolean;
default "false";
description
"True indicates no limit on MSD, the
leaf msd is ignored";
}
leaf nai {
type boolean;
default "false";
description
"True indicates capability to resolve Node or
Adjacency Identifier (NAI) to Segment
Identifier (SID)";
}
}
//sr
}
//capability
leaf msd {
if-feature "sr";
type uint8;
description
"Maximum SID Depth for SR";
reference
"RFC 8664: Path Computation Element Communication Protocol
(PCEP) Extensions for Segment Routing";
}
}
//pce-info //info
grouping notification-instance-hdr { grouping pce-info {
description description
"This group describes common instance specific data "This grouping specifies all PCE information
for notifications."; which maybe relevant to the PCE selection.
leaf peer-addr { This information corresponds to PCE auto-discovery
type leafref { information.";
path "/pcep/entity/peers/peer/addr"; container scope {
} description
description "The path computation scope";
"Reference to peer address"; uses pce-scope;
} }
} container neighbour-domains {
description
"The list of neighbour PCE-Domain
toward which a PCE can compute
paths";
list domains {
key "domain-type domain-info";
description
"The neighbour domain.";
uses domain {
description
"The PCE neighbour domain.";
}
}
}
}
// notification-instance-hdr //pce-info
grouping notification-session-hdr { grouping notification-instance-hdr {
description description
"This group describes common session instance specific "This group describes common instance specific data
data for notifications."; for notifications.";
leaf session-initiator { leaf peer-addr {
type leafref { type leafref {
path "/pcep/entity/peers/peer/sessions/" path "/pcep/entity/peers/peer/addr";
+ "session/initiator"; }
} description
description "Reference to peer address";
"Reference to pcep session initiator leaf"; }
} }
}
// notification-session-hdr // notification-instance-hdr
grouping of-list { grouping notification-session-hdr {
description description
"List of OF"; "This group describes common session instance specific
reference data for notifications.";
"RFC 5541: Encoding of Objective Functions in the Path leaf session-initiator {
Computation Element Communication Protocol (PCEP)"; type leafref {
list objective-function { path "/pcep/entity/peers/peer/sessions/"
key "of"; + "session/initiator";
description }
"The list of authorized OF"; description
leaf of { "Reference to pcep session initiator leaf";
type identityref { }
base te-types:objective-function-type; }
}
description
"The OF authorized";
}
}
}
/* // notification-session-hdr
* Configuration data nodes
*/
container pcep { grouping of-list {
presence "The PCEP is enabled"; description
description "List of Objective Functions (OF)";
"Parameters for list of configured PCEP entities reference
on the device."; "RFC 5541: Encoding of Objective Functions in the Path
container entity { Computation Element Communication Protocol (PCEP)";
description list objective-function {
"The configured PCEP entity on the device."; key "of";
leaf addr { description
type inet:ip-address; "The list of authorized OF";
mandatory true; leaf of {
description type identityref {
"The local Internet address of this PCEP entity. base te-types:objective-function-type;
If operating as a PCE server, the PCEP entity }
listens on this address. If operating as a PCC, description
the PCEP entity binds outgoing TCP connections "The OF authorized";
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 enabled {
type boolean;
default "true";
description
"The administrative status of this PCEP
Entity.";
}
leaf role {
type pcep-role;
mandatory true;
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 {
type string;
description
"Description of the PCEP entity configured
by the user";
}
leaf speaker-entity-id {
if-feature "sync-opt";
type string;
description
"The Speaker Entity Identifier";
reference
"RFC 8232: Optimizations of Label Switched
Path State Synchronization Procedures for
a Stateful PCE";
}
leaf admin-status {
type boolean;
default "true";
description
"The administrative status of this PCEP Entity.
The value true represents admin status as up.
This is the desired operational status as
currently set by an operator or by default in
the implementation. The value of oper-status
represents the current status of an attempt to
reach this desired status.";
}
leaf index {
type uint32;
config false;
description
"The index of the operational PECP entity";
}
leaf oper-status {
type pcep-oper-status;
config false;
description
"The operational status of the PCEP entity.
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.";
}
uses info {
description
"Local PCEP entity information";
}
container pce-info {
when "../role = 'pce'"
+ "or "
+ "../role = 'pcc-and-pce'" {
description
"These fields are applicable when the role is PCE.";
}
description
"The Local PCE Entity PCE information";
uses pce-info {
description
"Local PCE information";
}
container path-key {
if-feature "path-key";
description
"Path-Key Configuration";
reference /*
"RFC 5520: Preserving Topology Confidentiality in Inter- * Configuration data nodes
Domain Path Computation Using a Path-Key-Based Mechanism"; */
leaf enabled {
type boolean;
description
"Enabled or Disabled";
}
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 connect-timer {
type uint16 {
range "1..65535";
}
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)";
}
leaf connect-max-retry {
type uint32;
default "5";
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 uint16 {
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.";
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
leaf max-backoff-timer {
type uint32;
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.";
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
leaf open-wait-timer {
type uint16;
units "seconds";
default "60";
config false;
description
"The time in seconds that the PCEP entity will wait
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 container pcep {
PCEP terminates the TCP connection and deletes the presence "The PCEP is enabled";
associated sessions."; description
reference "Parameters for list of configured PCEP entities
"RFC 5440: Path Computation Element (PCE) Communication on the device.";
Protocol (PCEP)"; container entity {
} description
leaf keep-wait-timer { "The configured PCEP entity on the device.";
type uint16; leaf addr {
units "seconds"; type inet:ip-address;
default "60"; mandatory true;
config false; description
description "The local Internet address of this PCEP entity.
"The time in seconds that the PCEP entity will wait If operating as a PCE server, the PCEP entity
to receive a Keepalive or PCErr message from a peer listens on this address. If operating as a PCC,
during session initialization after receiving an the PCEP entity binds outgoing TCP connections
Open message. If no Keepalive or PCErr message is to this address. It is possible for the PCEP entity
received within this time then PCEP terminates the to operate both as a PCC and a PCE Server, in which
TCP connection and deletes the associated case it uses this address both to listen for incoming
sessions."; TCP connections and to bind outgoing TCP connections.";
reference }
"RFC 5440: Path Computation Element (PCE) Communication leaf enabled {
Protocol (PCEP)"; type boolean;
} default "true";
leaf keep-alive-timer { description
type uint8; "The administrative status of this PCEP
units "seconds"; Entity; set to true when UP.";
default "30"; }
description leaf role {
"The keep alive transmission timer that this PCEP type pcep-role;
entity will propose in the initial OPEN message of mandatory true;
each session it is involved in. This is the description
maximum time between two consecutive messages sent "The role that this entity can play.
to a peer. Zero means that the PCEP entity prefers Takes one of the following values.
not to send Keepalives at all. - unknown(0): this PCEP Entity role is not
Note that the actual Keepalive transmission known.
intervals, in either direction of an active PCEP - pcc(1): this PCEP Entity is a PCC.
session, are determined by negotiation between the - pce(2): this PCEP Entity is a PCE.
peers as specified by RFC 5440, and so may differ - pcc-and-pce(3): this PCEP Entity is both
from this configured value."; a PCC and a PCE.";
reference }
"RFC 5440: Path Computation Element (PCE) Communication leaf description {
Protocol (PCEP)"; type string;
} description
leaf dead-timer { "Description of the PCEP entity configured
type uint8; by the user";
units "seconds"; }
must '(. > ../keep-alive-timer)' { leaf speaker-entity-id {
error-message "The dead timer must be " if-feature "sync-opt";
+ "larger than the keep alive timer"; type string;
} description
default "120"; "The Speaker Entity Identifier";
description reference
"The dead timer that this PCEP entity will propose "RFC 8232: Optimizations of Label Switched
in the initial OPEN message of each session it is Path State Synchronization Procedures for
involved in. This is the time after which a peer a Stateful PCE";
should declare a session down if it does not }
receive any PCEP messages. Zero suggests that the leaf admin-status {
peer does not run a dead timer at all."; type boolean;
reference default "true";
"RFC 5440: Path Computation Element (PCE) Communication description
Protocol (PCEP)"; "The administrative status of this PCEP Entity.
} The value true represents admin status as up.
leaf allow-negotiation { This is the desired operational status as
type boolean; currently set by an operator or by default in
description the implementation. The value of oper-status
"Whether the PCEP entity will permit negotiation of represents the current status of an attempt to
session parameters."; reach this desired status.";
} }
leaf max-keep-alive-timer { leaf index {
type uint8; type uint32;
units "seconds"; config false;
description description
"In PCEP session parameter negotiation in seconds, "The index of the operational PECP entity";
the maximum value that this PCEP entity will }
accept from a peer for the interval between leaf oper-status {
Keepalive transmissions. Zero means that the PCEP type pcep-oper-status;
entity will allow no Keepalive transmission at config false;
all."; description
} "The operational status of the PCEP entity.
leaf max-dead-timer { Takes one of the following values.
type uint8; - oper-status-up(1): the PCEP entity is active.
units "seconds"; - oper-status-down(2): the PCEP entity is inactive.
description - oper-status-going-up(3): the PCEP entity is
"In PCEP session parameter negotiation in seconds, activating.
the maximum value that this PCEP entity will accept - oper-status-going-down(4): the PCEP entity is
from a peer for the Dead timer. Zero means that deactivating.
the PCEP entity will allow not running a Dead - oper-status-failed(5): the PCEP entity has
timer."; failed and will recover when possible.
} - oper-status-failed-perm(6): the PCEP entity
leaf min-keep-alive-timer { has failed and will not recover without
type uint8; operator intervention.";
units "seconds"; }
description uses info {
"In PCEP session parameter negotiation in seconds, description
the minimum value that this PCEP entity will "Local PCEP entity information";
accept for the interval between Keepalive
transmissions. Zero means that the PCEP entity
insists on no Keepalive transmission at all.";
}
leaf min-dead-timer {
type uint8;
units "seconds";
description
"In PCEP session parameter negotiation in
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 sync-timer {
if-feature "svec";
type uint16;
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 request-timer {
type uint16 {
range "1..65535";
}
units "seconds";
description
"The maximum time that the PCEP entity will wait
for a response to a PCReq message.";
} }
leaf max-sessions { container pce-info {
type uint32; when "../role = 'pce'"
description + "or "
"Maximum number of sessions involving this PCEP + "../role = 'pcc-and-pce'" {
entity that can exist at any time."; description
} "These fields are applicable when the role is PCE.";
leaf max-unknown-reqs { }
type uint32; description
default "5"; "The Local PCE Entity PCE information";
description uses pce-info {
"The maximum number of unrecognized requests and description
replies that any session on this PCEP entity is "Local PCE information";
willing to accept per minute before terminating }
the session. container path-key {
A PCRep message contains an unrecognized reply if-feature "path-key";
if it contains an RP object whose request ID description
does not correspond to any in-progress request "Path-Key Configuration";
sent by this PCEP entity. reference
A PCReq message contains an unrecognized request "RFC 5520: Preserving Topology Confidentiality in Inter-
if it contains an RP object whose request ID is Domain Path Computation Using a Path-Key-Based Mechanism";
zero."; leaf enabled {
reference type boolean;
"RFC 5440: Path Computation Element (PCE) description
Communication Protocol (PCEP)"; "Enabled or Disabled; set to true when Enabled";
} }
leaf max-unknown-msgs { leaf discard-timer {
type uint32; type uint32;
default "5"; units "minutes";
description default "10";
"The maximum number of unknown messages that any description
session on this PCEP entity is willing to accept "A timer to discard unwanted path-keys";
per minute before terminating the session."; }
reference leaf reuse-time {
"RFC 5440: Path Computation Element (PCE) type uint32;
Communication Protocol (PCEP)"; units "minutes";
} default "30";
leaf pcep-notification-max-rate { description
type uint32; "A time after which the path-keys could be reused";
mandatory true; }
description leaf pce-id {
"This variable indicates the maximum number of type inet:ip-address;
notifications issued per second. If events description
occur more rapidly, the implementation may "PCE Address to be used in each Path-Key Subobject
simply fail to emit these notifications during (PKS)";
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 connect-timer {
} type uint16 {
container stateful-parameter { range "1..65535";
if-feature "stateful"; }
description units "seconds";
"The configured stateful PCE parameters"; default "60";
leaf state-timeout { description
type uint32; "The time in seconds that the PCEP entity will wait
units "seconds"; to establish a TCP connection with a peer. If a
description TCP connection is not established within this time
"When a PCEP session is terminated, a PCC then PCEP aborts the session setup attempt.";
waits for this time period before flushing reference
LSP state associated with that PCEP session "RFC 5440: Path Computation Element (PCE) Communication
and reverting to operator-defined default Protocol (PCEP)";
parameters or behaviours."; }
} leaf connect-max-retry {
leaf redelegation-timeout { type uint32;
when "../../role = 'pcc'" default "5";
+ "or " description
+ "../../role = 'pcc-and-pce'" { "The maximum number of times the system tries to
description establish a TCP connection to a peer before the
"This field is applicable when the role is session with the peer transitions to the idle
PCC"; state.";
} reference
type uint32; "RFC 5440: Path Computation Element (PCE) Communication
units "seconds"; Protocol (PCEP)";
description }
"When a PCEP session is terminated, a PCC leaf init-back-off-timer {
waits for this time period before revoking type uint16 {
LSP delegation to a PCE and attempting to range "1..65535";
redelegate LSPs associated with the }
terminated PCEP session to an alternate units "seconds";
PCE."; description
} "The initial back-off time in seconds for retrying
leaf rpt-non-pcep-lsp { a failed session setup attempt to a peer.
when "../../role = 'pcc'" The back-off time increases for each failed
+ "or " session setup attempt, until a maximum back-off
+ "../../role = 'pcc-and-pce'" { time is reached. The maximum back-off time is the
description max-back-off-timer leaf.";
"This field is applicable when the role is reference
PCC"; "RFC 5440: Path Computation Element (PCE) Communication
} Protocol (PCEP)";
type boolean; }
default "true"; leaf max-back-off-timer {
description type uint32;
"If set, a PCC reports LSPs that are not units "seconds";
controlled by any PCE (for example, LSPs description
that are statically configured at the "The maximum back-off time in seconds for retrying
PCC). "; a failed session setup attempt to a peer.
} The back-off time increases for each failed session
reference setup attempt, until this maximum value is reached.
"RFC 8231: Path Computation Element Communication Protocol Session setup attempts then repeat periodically
(PCEP) Extensions for Stateful PCE"; without any further increase in back-off time.";
} reference
container of-list { "RFC 5440: Path Computation Element (PCE) Communication
when "../role = 'pce'" Protocol (PCEP)";
+ "or " }
+ "../role = 'pcc-and-pce'" { leaf open-wait-timer {
description type uint16;
"These field are applicable when the role is units "seconds";
PCE"; default "60";
} config false;
if-feature "objective-function"; description
uses of-list; "The time in seconds that the PCEP entity will wait
description to receive an Open message from a peer after the
"The authorized OF-List at PCE for all peers"; TCP connection has come up.
} If no Open message is received within this time then
container lsp-db { PCEP terminates the TCP connection and deletes the
if-feature "stateful"; associated sessions.";
config false; reference
description "RFC 5440: Path Computation Element (PCE) Communication
"The LSP-DB"; Protocol (PCEP)";
leaf db-ver { }
when "../../role = 'pcc'" leaf keep-wait-timer {
+ "or " type uint16;
+ "../../role = 'pcc-and-pce'" { units "seconds";
description default "60";
"This field is applicable when the role is config false;
PCC"; description
} "The time in seconds that the PCEP entity will wait
if-feature "sync-opt"; to receive a Keepalive or PCErr message from a peer
type uint64; during session initialization after receiving an
description Open message. If no Keepalive or PCErr message is
"The LSP State Database Version Number"; received within this time then PCEP terminates the
} TCP connection and deletes the associated
list association-list { sessions.";
if-feature "association"; reference
key "type id source global-source extended-id"; "RFC 5440: Path Computation Element (PCE) Communication
description Protocol (PCEP)";
"List of all PCEP associations"; }
reference leaf keepalive-timer {
"RFC 8697: Path Computation Element Communication type uint8;
Protocol (PCEP) Extensions for Establishing units "seconds";
Relationships between Sets of Label Switched default "30";
Paths (LSPs)"; description
leaf type { "The Keepalive timer that this PCEP
type identityref { entity will propose in the initial Open message of
base te-types:association-type; each session it is involved in. This is the
} maximum time between two consecutive messages sent
description to a peer. Zero means that the PCEP entity prefers
"The PCEP association type"; not to send Keepalives at all.
} Note that the actual Keepalive transmission
leaf id { intervals, in either direction of an active PCEP
type uint16; session, are determined by negotiation between the
description peers as specified by RFC 5440, and so may differ
"PCEP Association ID"; from this configured value.";
} reference
leaf source { "RFC 5440: Path Computation Element (PCE) Communication
type inet:ip-address; Protocol (PCEP)";
description }
"PCEP Association Source."; leaf dead-timer {
} type uint8;
leaf global-source { units "seconds";
type uint32; must '(. > ../keepalive-timer)' {
description error-message "The DeadTimer must be "
"PCEP Association Global Source."; + "larger than the Keepalive timer";
} }
leaf extended-id { default "120";
type string; description
description "The DeadTimer that this PCEP entity will propose
"Additional information to support unique in the initial Open message of each session it is
identification."; involved in. This is the time after which a peer
} should declare a session down if it does not
list lsp { receive any PCEP messages. Zero suggests that the
key "plsp-id pcc-id lsp-id"; peer does not run a DeadTimer at all.";
description reference
"List of all LSP in this association"; "RFC 5440: Path Computation Element (PCE) Communication
leaf plsp-id { Protocol (PCEP)";
type leafref { }
path "/pcep/entity/lsp-db/" leaf allow-negotiation {
+ "lsp/plsp-id"; type boolean;
} default "true";
description description
"Reference to PLSP-ID in LSP-DB"; "Whether the PCEP entity will permit negotiation of
} session parameters.";
leaf pcc-id { }
type leafref { leaf max-keepalive-timer {
path "/pcep/entity/lsp-db/" type uint8;
+ "lsp/pcc-id"; units "seconds";
} description
description "In PCEP session parameter negotiation in seconds,
"Reference to PCC-ID in LSP-DB"; the maximum value that this PCEP entity will
} accept from a peer for the interval between
leaf lsp-id { Keepalive transmissions. Zero means that the PCEP
type leafref { entity will allow no Keepalive transmission at
path "/pcep/entity/lsp-db/" all.";
+ "lsp/lsp-id"; }
} leaf max-dead-timer {
description type uint8;
"Reference to LSP ID in LSP-DB"; units "seconds";
} description
} "In PCEP session parameter negotiation in seconds,
} the maximum value that this PCEP entity will accept
list lsp { from a peer for the DeadTimer. Zero means that
key "plsp-id pcc-id lsp-id"; the PCEP entity will allow not running a
description DeadTimer.";
"List of all LSPs in LSP-DB"; }
leaf plsp-id { leaf min-keepalive-timer {
type uint32 { type uint8;
range "1..1048575"; units "seconds";
} description
description "In PCEP session parameter negotiation in seconds,
"A PCEP-specific identifier for the LSP. A PCC the minimum value that this PCEP entity will
creates a unique PLSP-ID for each LSP that is accept for the interval between Keepalive
constant for the lifetime of a PCEP session. transmissions. Zero means that the PCEP entity
PLSP-ID is 20 bits with 0 and 0xFFFFF are insists on no Keepalive transmission at all.";
reserved"; }
} leaf min-dead-timer {
leaf pcc-id { type uint8;
type inet:ip-address; units "seconds";
description description
"The local internet address of the PCC, that "In PCEP session parameter negotiation in
generated the PLSP-ID."; seconds, the minimum value that this PCEP entity
} will accept for the DeadTimer. Zero means that
leaf source { the PCEP entity insists on not running a
type inet:ip-address; DeadTimer.";
description }
"Tunnel sender address extracted from leaf sync-timer {
LSP-IDENTIFIERS TLV"; if-feature "svec";
reference type uint16;
"RFC 8231: Path Computation Element units "seconds";
Communication Protocol (PCEP) Extensions default "60";
for Stateful PCE"; description
} "The value of SyncTimer in seconds is used in the
leaf destination { case of synchronized path computation request
type inet:ip-address; using the SVEC object. Consider the case where a
description PCReq message is received by a PCE that contains
"Tunnel endpoint address extracted from the SVEC object referring to M synchronized path
LSP-IDENTIFIERS TLV"; computation requests. If after the expiration of
reference the SyncTimer all the M path computation requests
"RFC 8231: Path Computation Element have not been, received a protocol error is
Communication Protocol (PCEP) Extensions triggered and the PCE must cancel the whole set
for Stateful PCE"; of path computation requests.
} The aim of the SyncTimer is to avoid the storage
leaf tunnel-id { of unused synchronized requests should one of
type uint16; them get lost for some reasons (for example, a
description misbehaving PCC).
"Tunnel identifier used in the LSP-IDENTIFIERS Zero means that the PCEP entity does not use the
TLV that remains constant over the life SyncTimer.";
of the tunnel."; reference
reference "RFC 5440: Path Computation Element (PCE)
"RFC 8231: Path Computation Element Communication Protocol (PCEP)";
Communication Protocol (PCEP) Extensions }
for Stateful PCE"; leaf request-timer {
} type uint16 {
leaf lsp-id { range "1..65535";
type uint16; }
description units "seconds";
"Identifier used in the LSP-IDENTIFIERS TLV description
that can be changed to allow a sender to share "The maximum time that the PCEP entity will wait
resources with itself."; for a response to a PCReq message.";
reference }
"RFC 8231: Path Computation Element leaf max-sessions {
Communication Protocol (PCEP) Extensions type uint32;
for Stateful PCE"; description
} "Maximum number of sessions involving this PCEP
leaf extended-tunnel-id { entity that can exist at any time.";
type inet:ip-address; }
description leaf max-unknown-reqs {
"Extended Tunnel ID of the LSP in LSP-IDENTIFIERS type uint32;
TLV."; default "5";
reference description
"RFC 8231: Path Computation Element "The maximum number of unrecognized requests and
Communication Protocol (PCEP) Extensions replies that any session on this PCEP entity is
for Stateful PCE"; willing to accept per minute before terminating
} the session.
leaf admin-state { A PCRep message contains an unrecognized reply
type boolean; if it contains an RP object whose request ID
default "true"; does not correspond to any in-progress request
description sent by this PCEP entity.
"The desired operational state"; A PCReq message contains an unrecognized request
} if it contains an RP object whose request ID is
leaf operational-state { zero.";
type operational-state; reference
description "RFC 5440: Path Computation Element (PCE)
"The operational status of the LSP"; Communication Protocol (PCEP)";
} }
container delegated { leaf max-unknown-msgs {
description type uint32;
"The delegation related parameters"; default "5";
description
"The maximum number of unknown messages that any
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)";
}
leaf pcep-notification-max-rate {
type uint32;
mandatory true;
description
"This variable indicates the maximum number of
notifications issued per second. If events
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).";
}
container stateful-parameter {
if-feature "stateful";
description
"The configured stateful PCE 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
"This field is applicable when the role is
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
"This field is applicable when the role is
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). ";
}
reference
"RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE";
}
container of-list {
when "../role = 'pce'"
+ "or "
+ "../role = 'pcc-and-pce'" {
description
"These field are applicable when the role is
PCE";
}
if-feature "objective-function";
uses of-list;
description
"The authorized OF-List at PCE for all peers";
}
container lsp-db {
if-feature "stateful";
config false;
description
"The LSP-DB";
leaf db-ver {
when "../../role = 'pcc'"
+ "or "
+ "../../role = 'pcc-and-pce'" {
description
"This field is applicable when the role is
PCC";
}
if-feature "sync-opt";
type uint64;
description
"The LSP State Database Version Number";
}
list association-list {
if-feature "association";
key "type id source global-source extended-id";
description
"List of all PCEP associations";
reference
"RFC 8697: Path Computation Element Communication
Protocol (PCEP) Extensions for Establishing
Relationships between Sets of Label Switched
Paths (LSPs)";
leaf type {
type identityref {
base te-types:association-type;
}
description
"The PCEP Association Type";
reference
"IANA PCEP: ASSOCIATION Type Field in Path
Computation Element Protocol (PCEP) Numbers";
}
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 Global Association Source.";
}
leaf extended-id {
type string;
description
"Additional information to support unique
identification (Extended Association ID).";
leaf enabled { }
type boolean; list lsp {
default "false"; key "plsp-id pcc-id lsp-id";
description description
"LSP is delegated or not"; "List of all LSP in this association";
} leaf plsp-id {
leaf peer { type leafref {
type leafref { path "/pcep/entity/lsp-db/"
path "/pcep/entity/peers/peer/addr"; + "lsp/plsp-id";
} }
must '(../enabled = true())' { description
error-message "The LSP must be delegated"; "Reference to PLSP-ID in LSP-DB";
} }
description leaf pcc-id {
"At the PCC, the reference to the PCEP peer to type leafref {
which LSP is delegated; At the PCE, the path "/pcep/entity/lsp-db/"
reference to the PCEP peer which delegated this + "lsp/pcc-id";
LSP"; }
} description
leaf srp-id { "Reference to PCC-ID in LSP-DB";
type uint32; }
description leaf lsp-id {
"The last SRP-ID-number associated with this type leafref {
LSP."; path "/pcep/entity/lsp-db/"
} + "lsp/lsp-id";
} }
container initiation { description
if-feature "pce-initiated"; "Reference to LSP ID in LSP-DB";
description }
"The PCE initiation related parameters"; }
reference }
"RFC 8281: Path Computation Element Communication list lsp {
Protocol (PCEP) Extensions for PCE-Initiated LSP key "plsp-id pcc-id lsp-id";
Setup in a Stateful PCE Model"; description
leaf enabled { "List of all LSPs in LSP-DB";
type boolean; leaf plsp-id {
default "false"; type uint32 {
description range "1..1048575";
"Set to true if this LSP is initiated by a PCE"; }
} description
leaf peer { "A PCEP-specific identifier for the LSP. A PCC
type leafref { creates a unique PLSP-ID for each LSP that is
path "/pcep/entity/peers/peer/addr"; constant for the lifetime of a PCEP session.
} PLSP-ID is 20 bits with 0 and 0xFFFFF are
must '(../enabled = true())' { reserved";
error-message "The LSP must be PCE-Initiated"; }
} leaf pcc-id {
description type inet:ip-address;
"At the PCC, the reference to the PCEP peer description
that initiated this LSP; At the PCE, the "The local internet address of the PCC, that
reference to the PCEP peer where the LSP generated the PLSP-ID.";
is initiated"; }
} leaf source {
} type inet:ip-address;
leaf symbolic-path-name { description
type string; "Tunnel sender address extracted from
description LSP-IDENTIFIERS TLV";
"The symbolic path name associated with the LSP."; reference
reference "RFC 8231: Path Computation Element
"RFC 8231: Path Computation Element Communication Communication Protocol (PCEP) Extensions
Protocol (PCEP) Extensions for Stateful PCE"; for Stateful PCE";
} }
leaf last-error { leaf destination {
type identityref { type inet:ip-address;
base lsp-error; description
} "Tunnel endpoint address extracted from
description LSP-IDENTIFIERS TLV";
"The last error for the LSP."; reference
} "RFC 8231: Path Computation Element
leaf pst { Communication Protocol (PCEP) Extensions
type identityref { for Stateful PCE";
base te-types:path-signaling-type; }
} leaf tunnel-id {
default "te-types:path-setup-rsvp"; type uint16;
description description
"The Path Setup Type"; "Tunnel identifier used in the LSP-IDENTIFIERS
reference TLV that remains constant over the life
"RFC 8408: Conveying Path Setup Type in PCE of the tunnel.";
Communication Protocol (PCEP) Messages"; reference
} "RFC 8231: Path Computation Element
list association-list { Communication Protocol (PCEP) Extensions
if-feature "association"; for Stateful PCE";
key "type id source global-source extended-id"; }
description leaf lsp-id {
"List of all PCEP associations"; type uint16;
leaf type { description
type leafref { "Identifier used in the LSP-IDENTIFIERS TLV
path "/pcep/entity/lsp-db/" that can be changed to allow a sender to share
+ "association-list/type"; resources with itself.";
} reference
description "RFC 8231: Path Computation Element
"PCEP Association Type"; Communication Protocol (PCEP) Extensions
} for Stateful PCE";
leaf id { }
type leafref { leaf extended-tunnel-id {
path "/pcep/entity/lsp-db/" type inet:ip-address;
+ "association-list/id"; description
} "Extended Tunnel ID of the LSP in LSP-IDENTIFIERS
description TLV.";
"PCEP Association ID"; reference
} "RFC 8231: Path Computation Element
leaf source { Communication Protocol (PCEP) Extensions
type leafref { for Stateful PCE";
path "/pcep/entity/lsp-db/" }
+ "association-list/source"; leaf admin-state {
} type boolean;
description default "true";
"PCEP Association Source."; description
} "The desired operational state";
leaf global-source { }
type leafref { leaf operational-state {
path "/pcep/entity/lsp-db/" type operational-state;
+ "association-list/global-source"; description
} "The operational status of the LSP";
description }
"PCEP Association Global Source."; container delegated {
} description
leaf extended-id { "The delegation related parameters";
type leafref { leaf enabled {
path "/pcep/entity/lsp-db/" type boolean;
+ "association-list/extended-id"; default "false";
} description
description "LSP is delegated or not; set to true when
"Additional information to delegated";
support unique identification."; }
} leaf peer {
reference type leafref {
"RFC 8697: Path Computation Element Communication path "/pcep/entity/peers/peer/addr";
Protocol (PCEP) Extensions for Establishing }
Relationships between Sets of Label Switched must '(../enabled = true())' {
Paths (LSPs)"; error-message "The LSP must be delegated";
} }
} description
} "At the PCC, the reference to the PCEP peer to
container path-keys { which LSP is delegated; At the PCE, the
when "../role = 'pce' or ../role = 'pcc-and-pce'" { reference to the PCEP peer which delegated this
description LSP";
"These fields are applicable when the role is }
PCE"; leaf srp-id {
} type uint32 {
if-feature "path-key"; range "1..4294967294";
config false; }
description description
"The path-keys generated by the PCE"; "The last SRP-ID-number associated with this
LSP.";
}
}
container initiation {
if-feature "pce-initiated";
description
"The PCE initiation related parameters";
reference
"RFC 8281: Path Computation Element Communication
Protocol (PCEP) Extensions for PCE-Initiated LSP
Setup in a Stateful PCE Model";
leaf enabled {
type boolean;
default "false";
description
"Set to true if this LSP is initiated by a PCE";
}
leaf peer {
type leafref {
path "/pcep/entity/peers/peer/addr";
}
must '(../enabled = true())' {
error-message "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.";
reference
"RFC 8231: Path Computation Element Communication
Protocol (PCEP) Extensions for Stateful PCE";
}
leaf last-error {
type identityref {
base lsp-error;
}
description
"The last error for the LSP.";
}
leaf pst {
type identityref {
base te-types:path-signaling-type;
}
default "te-types:path-setup-rsvp";
description
"The Path Setup Type (PST)";
reference
"RFC 8408: Conveying Path Setup Type in PCE
Communication Protocol (PCEP) Messages";
}
list association-list {
if-feature "association";
key "type id source global-source extended-id";
description
"List of all PCEP associations";
leaf type {
type leafref {
path "/pcep/entity/lsp-db/"
+ "association-list/type";
}
description
"PCEP Association Type";
}
leaf id {
type leafref {
path "/pcep/entity/lsp-db/"
+ "association-list/id";
}
description
"PCEP Association ID";
}
leaf source {
type leafref {
path "/pcep/entity/lsp-db/"
+ "association-list/source";
}
description
"PCEP Association Source.";
}
leaf global-source {
type leafref {
path "/pcep/entity/lsp-db/"
+ "association-list/global-source";
}
description
"PCEP Association Global Source.";
}
leaf extended-id {
type leafref {
path "/pcep/entity/lsp-db/"
+ "association-list/extended-id";
}
description
"Additional information to
support unique identification.";
}
reference
"RFC 8697: Path Computation Element Communication
Protocol (PCEP) Extensions for Establishing
Relationships between Sets of Label Switched
Paths (LSPs)";
}
}
}
container path-keys {
when "../role = 'pce' or ../role = 'pcc-and-pce'" {
description
"These fields are applicable when the role is
PCE";
}
if-feature "path-key";
config false;
description
"The path-keys generated by the PCE";
reference
"RFC 5520: Preserving Topology Confidentiality
in Inter-Domain Path Computation Using a Path-
Key-Based Mechanism";
list path-keys {
key "path-key";
description
"The list of path-keys generated by the PCE";
leaf path-key {
type uint16;
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 uint32;
description
"ERO subobject index";
}
uses te-types:explicit-route-hop;
}
}
leaf pcc-original {
type leafref {
path "/pcep/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/entity/peers/peer/addr";
}
must '(../retrieved = true())' {
error-message "The Path-key should be retrieved";
}
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";
reference }
"RFC 5520: Preserving Topology Confidentiality leaf reuse-time {
in Inter-Domain Path Computation Using a Path- type uint32;
Key-Based Mechanism"; units "minutes";
list path-keys { description
key "path-key"; "A time after which this path-keys could be
description reused";
"The list of path-keys generated by the PCE"; }
leaf path-key { }
type uint16; }
description container peers {
"The identifier, or token used to represent description
the Confidential Path Segment (CPS) within "The list of configured peers for the
the context of the PCE"; entity (remote PCE)";
} list peer {
container cps { key "addr";
description description
"The Confidential Path Segment (CPS)"; "The peer configured for the entity.
list explicit-route-objects { (remote PCE)";
key "index"; leaf addr {
description type inet:ip-address;
"List of explicit route objects"; description
leaf index { "The local Internet address of this
type uint32; PCEP peer.";
description }
"ERO subobject index"; leaf role {
} type pcep-role;
uses te-types:explicit-route-hop; mandatory true;
} description
} "The role of the PCEP Peer.
leaf pcc-original { Takes one of the following values.
type leafref { - unknown(0): this PCEP peer role is not
path "/pcep/entity/peers/peer/addr"; known.
} - pcc(1): this PCEP peer is a PCC.
description - pce(2): this PCEP peer is a PCE.
"Reference to PCC peer address of - pcc-and-pce(3): this PCEP peer
the original request"; is both a PCC and a PCE.";
} }
leaf req-id { leaf description {
type uint32; type string;
description description
"The request ID of the original PCReq."; "Description of the PCEP peer
} configured by the user";
leaf retrieved { }
type boolean; uses info {
description description
"If path-key has been retrieved yet"; "PCE Peer information";
} }
leaf pcc-retrieved { container pce-info {
type leafref { uses pce-info {
path "/pcep/entity/peers/peer/addr"; description
} "PCE Peer information";
must '(../retrieved = true())' { }
error-message "The Path-key should be retreived"; description
} "The PCE Peer information";
description }
"Reference to PCC peer address which leaf delegation-pref {
retreived the path-key"; if-feature "stateful";
} type uint8 {
leaf creation-time { range "0..7";
type yang:timestamp; }
description description
"The timestamp value at the time this Path-Key "The PCE peer delegation preference.";
was created."; }
} container auth {
leaf discard-time { description
type uint32; "The Authentication options";
units "minutes"; choice auth-type-selection {
description description
"A time after which this path-keys will be "Options for expressing authentication
discarded"; setting.";
} case auth-key-chain {
leaf reuse-time { leaf key-chain {
type uint32; type key-chain:key-chain-ref;
units "minutes"; description
description "key-chain name.";
"A time after which this path-keys could be }
reused"; }
} case auth-key {
} leaf crypto-algorithm {
} type identityref {
container peers { base key-chain:crypto-algorithm;
description }
"The list of configured peers for the mandatory true;
entity (remote PCE)"; description
list peer { "Cryptographic algorithm associated
key "addr"; with key.";
description }
"The peer configured for the entity. choice key-string-style {
(remote PCE)"; description
leaf addr { "Key string styles";
type inet:ip-address; case keystring {
description leaf keystring {
"The local Internet address of this nacm:default-deny-all;
PCEP peer."; type string;
} description
leaf role { "Key string in ASCII format.";
type pcep-role; }
mandatory true; }
description case hexadecimal {
"The role of the PCEP Peer. if-feature "key-chain:hex-key-string";
Takes one of the following values. leaf hexadecimal-string {
- unknown(0): this PCEP peer role is not nacm:default-deny-all;
known. type yang:hex-string;
- pcc(1): this PCEP peer is a PCC. description
- pce(2): this PCEP peer is a PCE. "Key in hexadecimal string format. When
- pcc-and-pce(3): this PCEP peer compared to ASCII, specification in
is both a PCC and a PCE."; hexadecimal affords greater key entropy
} with the same number of internal
leaf description { key-string octets. Additionally, it
type string; discourages usage of well-known words or
description numbers.";
"Description of the PCEP peer }
configured by the user"; }
} }
uses info { }
description case auth-tls {
"PCE Peer information"; if-feature "tls";
} choice role {
container pce-info { description
uses pce-info { "The role of the local entity";
description case server {
"PCE Peer information"; container tls-server {
} uses tlss:tls-server-grouping {
description description
"The PCE Peer information"; "Server TLS information.";
} }
leaf delegation-pref { description
if-feature "stateful"; "TLS related information";
type uint8 { }
range "0..7"; }
} case client {
description container tls-client {
"The PCE peer delegation preference."; uses tlsc:tls-client-grouping {
} description
container auth { "Client TLS information.";
description }
"The Authentication options"; description
choice auth-type-selection { "TLS related information";
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
"Cryptographic algorithm associated
with key.";
}
choice key-string-style {
description
"Key string styles";
case keystring {
leaf keystring {
nacm:default-deny-all;
type string;
description
"Key string in ASCII format.";
}
}
case hexadecimal {
if-feature "key-chain:hex-key-string";
leaf hexadecimal-string {
nacm:default-deny-all;
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 internal
key-string octets. Additionally, it
discourages usage of well-known words or
numbers.";
}
}
}
}
case auth-tls {
if-feature "tls";
choice role {
description
"The role of the local entity";
case server { }
container tls-server { leaf discontinuity-time {
uses tlss:tls-server-grouping { type yang:timestamp;
description config false;
"Server TLS information."; description
} "The timestamp of the time when the information and
description statistics were last reset.";
"TLS related information"; }
} leaf initiate-session {
} type boolean;
case client { config false;
container tls-client { description
uses tlsc:tls-client-grouping { "Indicates whether the local PCEP entity initiates
description sessions to this peer, or waits for the peer to
"Client TLS information."; initiate a session.";
} }
description leaf session-exists {
"TLS related information"; type boolean;
} config false;
} description
} "Indicates whether a session with
} this peer currently exists.";
} }
} leaf session-up-time {
leaf discontinuity-time { type yang:timestamp;
type yang:timestamp; config false;
config false; description
description "The timestamp value of the last time a
"The timestamp of the time when the information and session with this peer was successfully
statistics were last reset."; established.";
} }
leaf initiate-session { leaf session-fail-time {
type boolean; type yang:timestamp;
config false; config false;
description description
"Indicates whether the local PCEP entity initiates "The timestamp value of the last time a
sessions to this peer, or waits for the peer to session with this peer failed to be
initiate a session."; established.";
} }
leaf session-exists { leaf session-fail-up-time {
type boolean; type yang:timestamp;
config false; config false;
description description
"Indicates whether a session with "The timestamp value of the last time a
this peer currently exists."; session with this peer failed from
} active.";
leaf session-up-time { }
type yang:timestamp; container sessions {
config false; config false;
description description
"The timestamp value of the last time a "This entry represents a single PCEP
session with this peer was successfully session in which the local PCEP entity participates.
established."; This entry exists only if the corresponding PCEP
} session has been initialized by some event, such as
leaf session-fail-time { manual user configuration, auto-discovery of a peer,
type yang:timestamp; or an incoming TCP connection.";
config false; list session {
description key "initiator";
"The timestamp value of the last time a description
session with this peer failed to be "The list of sessions, note that for a time being
established."; two sessions may exist for a peer";
} leaf initiator {
leaf session-fail-up-time { type pcep-initiator;
type yang:timestamp; description
config false; "The initiator of the session,that is, whether
description the TCP connection was initiated by the local
"The timestamp value of the last time a PCEP entity or the peer.
session with this peer failed from There is a window during session
active."; initialization where two sessions can exist
} between a pair of PCEP speakers, each
container sessions { initiated by one of the speakers. One of
config false; these sessions is always discarded before it
description leaves OpenWait state. However, before it is
"This entry represents a single PCEP discarded, two sessions to the given peer
session in which the local PCEP entity participates. appear transiently in this YANG module. The
This entry exists only if the corresponding PCEP sessions are distinguished by who initiated
session has been initialized by some event, such as them, and so this field is the key.";
manual user configuration, auto-discovery of a peer, }
or an incoming TCP connection."; leaf role {
list session { type leafref {
key "initiator"; path "/pcep/entity/role";
description }
"The list of sessions, note that for a time being description
two sessions may exist for a peer"; "The reference to peer role .";
leaf initiator { }
type pcep-initiator; leaf state-last-change {
description type yang:timestamp;
"The initiator of the session,that is, whether description
the TCP connection was initiated by the local "The timestamp value at the time this
PCEP entity or the peer. session entered its current state as
There is a window during session denoted by the state leaf.";
initialization where two sessions can exist }
between a pair of PCEP speakers, each leaf state {
initiated by one of the speakers. One of type pcep-sess-state;
these sessions is always discarded before it description
leaves OpenWait state. However, before it is "The current state of the session.
discarded, two sessions to the given peer
appear transiently in this yang module. The
sessions are distinguished by who initiated
them, and so this field is the key.";
}
leaf role {
type leafref {
path "/pcep/entity/role";
}
description
"The reference to peer role .";
}
leaf state-last-change {
type yang:timestamp;
description
"The timestamp value at the time this
session entered its current state as
denoted by the state leaf.";
}
leaf state {
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.";
}
leaf session-creation {
type yang:timestamp;
description
"The timestamp value at the time this
session was created.";
}
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.";
}
leaf local-id {
type uint8;
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.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf remote-id {
type uint8;
must "((../state != 'tcp-pending'"
+ "and "
+ "../state != 'open-wait' )"
+ "or "
+ "((../state = 'tcp-pending'"
+ " or "
+ "../state = 'open-wait' )"
+ "and (. = 0)))" {
error-message "Invalid remote-id";
description
"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.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf keepalive-timer {
type uint8;
units "seconds";
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.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf peer-keepalive-timer {
type uint8;
units "seconds";
must "(../state = 'session-up'"
+ "or "
+ "(../state != 'session-up'"
+ "and "
+ "(. = 0)))" {
error-message "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.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf dead-timer {
type uint8;
units "seconds";
description
"The dead timer interval for this PCEP session.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf peer-dead-timer {
type uint8;
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.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf ka-hold-time-rem {
type uint8;
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.";
}
leaf overloaded {
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.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf overload-time {
type uint32;
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.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf peer-overloaded {
type boolean;
description
"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.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf peer-overload-time {
type uint32;
units "seconds";
must '((../peer-overloaded = '
+ 'true()) or '
+ '((../peer-overloaded !='
+ 'true())'
+ ' and '
+ '(. = 0)))' {
error-message "Invalid peer overload 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.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf lspdb-sync {
if-feature "stateful";
type sync-state;
description
"The LSP-DB state synchronization status.";
reference
"RFC 8231: Path Computation Element Communication
Protocol (PCEP) Extensions for Stateful PCE";
}
leaf recv-db-ver {
when "../role = 'pcc'"
+ "or "
+ "../role = 'pcc-and-pce'" {
description
"This field is applicable when the role is
PCC";
}
if-feature "stateful";
if-feature "sync-opt";
type uint64;
description
"The last received LSP State Database Version
Number";
reference
"RFC 8231: Path Computation Element Communication
Protocol (PCEP) Extensions for Stateful PCE";
}
container of-list {
when "../role = 'pce'"
+ "or "
+ "../role = 'pcc-and-pce'" {
description
"These fields are applicable when the role is
PCE";
}
if-feature "objective-function";
uses of-list;
description
"Indicate the list of supported OF on this
session";
reference
"RFC 5541: Encoding of Objective Functions in
the Path Computation Element Communication
Protocol (PCEP)";
}
container pst-list {
when "../role = 'pce'"
+ "or "
+ "../role = 'pcc-and-pce'" {
description
"These fields are applicable when the role is
PCE";
}
description
"Indicate the list of supported
PST on this session";
reference
"RFC 8408: Conveying Path Setup Type in PCE
Communication Protocol (PCEP) Messages";
list path-setup-type {
key "pst";
description
"The list of authorized PST";
leaf pst {
type identityref {
base te-types:path-signaling-type;
}
description
"The PST authorized";
}
}
}
container assoc-type-list {
if-feature "association";
description
"Indicate the list of supported association types
on this session";
reference
"RFC 8697: Path Computation Element Communication
Protocol (PCEP) Extensions for Establishing
Relationships between Sets of Label Switched
Paths (LSPs)";
list assoc-type {
key "at";
description
"The list of authorized association types";
leaf at {
type identityref {
base te-types:association-type;
}
description
"The association type authorized";
}
} The set of possible states excludes the
} idle state since entries do not exist
leaf speaker-entity-id { in the idle state.";
if-feature "sync-opt"; }
type string; leaf session-creation {
description type yang:timestamp;
"The Speaker Entity Identifier"; description
reference "The timestamp value at the time this
"RFC 8232: Optimizations of Label Switched session was created.";
Path State Synchronization Procedures for }
a Stateful PCE"; leaf connect-retry {
} type yang:counter32;
leaf discontinuity-time { description
type yang:timestamp; "The number of times that the local PCEP
description entity has attempted to establish a TCP
"The timestamp value of the time when the connection for this session without
statistics were last reset."; success. The PCEP entity gives up when
} this reaches connect-max-retry.";
} }
// session leaf local-id {
} type uint8;
// sessions description
} "The value of the PCEP session ID used by
//peer the local PCEP entity in the Open message
} for this session. If state is tcp-pending
//peers then this is the session ID that will be
} used in the Open message. Otherwise, this
//entity is the session ID that was sent in the
} Open message.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf remote-id {
type uint8;
must "((../state != 'tcp-pending'"
+ "and "
+ "../state != 'open-wait' )"
+ "or "
+ "((../state = 'tcp-pending'"
+ " or "
+ "../state = 'open-wait' )"
+ "and (. = 0)))" {
error-message "Invalid remote-id";
description
"If state is TCPPending or OpenWait then
this leaf is not used and MUST be set to
zero.";
//pcep }
/* description
* Notifications "The value of the PCEP session ID used by the
*/ peer in its Open message for this session.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf keepalive-timer {
type uint8;
units "seconds";
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.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf peer-keepalive-timer {
type uint8;
units "seconds";
must "(../state = 'session-up'"
+ "or "
+ "(../state != 'session-up'"
+ "and "
+ "(. = 0)))" {
error-message "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.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf dead-timer {
type uint8;
units "seconds";
description
"The DeadTimer interval for this PCEP session.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf peer-dead-timer {
type uint8;
units "seconds";
must "((../state != 'tcp-pending'"
+ "and "
+ "../state != 'open-wait' )"
+ "or "
+ "((../state = 'tcp-pending'"
+ " or "
+ "../state = 'open-wait' )"
+ "and "
+ "(. = 0)))" {
error-message "Invalid Peer DeadTimer";
description
"If state is TCPPending or OpenWait then this
leaf is not used and MUST be set to zero.";
}
description
"The peer's DeadTimer interval
for this PCEP session.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf ka-hold-time-rem {
type uint8;
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 TCPPending or OpenWait then this
field is not used and MUST be set to zero.";
}
description
"The Keepalive hold time remaining for this
session.";
}
leaf overloaded {
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.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf overloaded-timestamp {
when '(../overloaded = true())' {
description
"Valid when overloaded";
}
type yang:timestamp;
description
"The timestamp value of the time when the
overloaded field was set to true.";
}
leaf overload-time {
type uint32;
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.";
notification pcep-session-up { reference
description "RFC 5440: Path Computation Element (PCE)
"This notification is sent when the value of Communication Protocol (PCEP)";
'/pcep/peers/peer/sessions/session/state' }
enters the 'session-up' state."; leaf peer-overloaded {
uses notification-instance-hdr; type boolean;
uses notification-session-hdr; description
leaf state-last-change { "If the peer has informed the local PCEP entity
type yang:timestamp; that it is currently overloaded, then this is
description set to true. Otherwise, it is set to false.";
"The timestamp value at the time this session reference
entered its current state as denoted by the state "RFC 5440: Path Computation Element (PCE)
leaf."; Communication Protocol (PCEP)";
}
leaf peer-overloaded-timestamp {
when '(../peer-overloaded = true())' {
description
"Valid when Peer is overloaded";
}
type yang:timestamp;
description
"The timestamp value of the time when the
peer-overloaded field was set to true.";
}
leaf peer-overload-time {
type uint32;
units "seconds";
must '((../peer-overloaded = '
+ 'true()) or '
+ '((../peer-overloaded !='
+ 'true())'
+ ' and '
+ '(. = 0)))' {
error-message "Invalid peer overload 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.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf lspdb-sync {
if-feature "stateful";
type sync-state;
description
"The LSP-DB state synchronization status.";
reference
"RFC 8231: Path Computation Element Communication
Protocol (PCEP) Extensions for Stateful PCE";
}
leaf recv-db-ver {
when "../role = 'pcc'"
+ "or "
+ "../role = 'pcc-and-pce'" {
description
"This field is applicable when the role is
PCC";
}
if-feature "stateful";
if-feature "sync-opt";
type uint64;
description
"The last received LSP State Database Version
Number";
reference
"RFC 8231: Path Computation Element Communication
Protocol (PCEP) Extensions for Stateful PCE";
}
container of-list {
when "../role = 'pce'"
+ "or "
+ "../role = 'pcc-and-pce'" {
description
"These fields are applicable when the role is
PCE";
}
if-feature "objective-function";
uses of-list;
description
"Indicate the list of supported OF on this
session";
reference
"RFC 5541: Encoding of Objective Functions in
the Path Computation Element Communication
Protocol (PCEP)";
}
container pst-list {
when "../role = 'pce'"
+ "or "
+ "../role = 'pcc-and-pce'" {
description
"These fields are applicable when the role is
PCE";
}
description
"Indicate the list of supported
PST on this session";
reference
"RFC 8408: Conveying Path Setup Type in PCE
Communication Protocol (PCEP) Messages";
list path-setup-type {
key "pst";
description
"The list of PST";
leaf pst {
type identityref {
base te-types:path-signaling-type;
}
description
"The PST supported";
}
}
}
container assoc-type-list {
if-feature "association";
description
"Indicate the list of supported association types
on this session";
reference
"RFC 8697: Path Computation Element Communication
Protocol (PCEP) Extensions for Establishing
Relationships between Sets of Label Switched
Paths (LSPs)";
list assoc-type {
key "at";
description
"The list of authorized association types";
leaf at {
type identityref {
base te-types:association-type;
}
description
"The association type authorized";
}
}
}
leaf speaker-entity-id {
if-feature "sync-opt";
type string;
description
"The Speaker Entity Identifier";
reference
"RFC 8232: Optimizations of Label Switched
Path State Synchronization Procedures for
a Stateful PCE";
}
}
// session
}
// sessions
}
//peer
}
//peers
}
//entity
}
} //pcep
leaf state { /*
type pcep-sess-state; * Notifications
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.";
}
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
//notification notification pcep-session-up {
description
"This notification is sent when the value of
'/pcep/peers/peer/sessions/session/state'
enters the 'session-up' state.";
uses notification-instance-hdr;
uses notification-session-hdr;
leaf state-last-change {
type yang:timestamp;
description
"The timestamp value at the time this session
entered its current state as denoted by the state
leaf.";
}
leaf state {
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.";
}
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
notification pcep-session-down { //notification
description
"This notification is sent when the value of
'/pcep/peers/peer/sessions/session/state'
leaves the 'session-up' state.";
uses notification-instance-hdr;
leaf session-initiator {
type pcep-initiator;
description
"The initiator of the session.";
}
leaf state-last-change {
type yang:timestamp;
description
"The timestamp value at the time this session
entered its current state as denoted by the state
leaf.";
}
leaf state {
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.";
}
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
//notification notification pcep-session-down {
description
"This notification is sent when the value of
'/pcep/peers/peer/sessions/session/state'
leaves the 'session-up' state.";
uses notification-instance-hdr;
leaf session-initiator {
type pcep-initiator;
description
"The initiator of the session.";
}
leaf state-last-change {
type yang:timestamp;
description
"The timestamp value at the time this session
entered its current state as denoted by the state
leaf.";
}
leaf state {
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.";
}
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
notification pcep-session-local-overload { //notification
description
"This notification is sent when the local PCEP entity
enters overload state for a peer.";
uses notification-instance-hdr;
uses notification-session-hdr;
leaf overloaded {
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.";
}
leaf overload-time {
type uint32;
units "seconds";
description
"The interval of time that is remaining until the
local PCEP entity will cease to be overloaded on
this session.";
}
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
//notification notification pcep-session-local-overload {
description
"This notification is sent when the local PCEP entity
enters overload state for a peer.";
uses notification-instance-hdr;
uses notification-session-hdr;
leaf overloaded {
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.";
}
leaf overloaded-timestamp {
type yang:timestamp;
description
"The timestamp value of the time when the
overloaded field was set to true.";
}
leaf overload-time {
type uint32;
units "seconds";
description
"The interval of time that is remaining until the
local PCEP entity will cease to be overloaded on
this session.";
}
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
notification pcep-session-local-overload-clear { //notification
description
"This notification is sent when the local PCEP entity
leaves overload state for a peer.";
uses notification-instance-hdr;
leaf overloaded {
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.";
}
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
//notification notification pcep-session-local-overload-clear {
description
"This notification is sent when the local PCEP entity
leaves overload state for a peer.";
uses notification-instance-hdr;
leaf overloaded {
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.";
}
leaf overloaded-clear-timestamp {
type yang:timestamp;
description
"The timestamp value of the time when the
overloaded field was set to false.";
}
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
notification pcep-session-peer-overload { //notification
description notification pcep-session-peer-overload {
"This notification is sent when a peer enters overload description
state."; "This notification is sent when a peer enters overload
uses notification-instance-hdr; state.";
uses notification-session-hdr; uses notification-instance-hdr;
leaf peer-overloaded { uses notification-session-hdr;
type boolean; leaf peer-overloaded {
description type boolean;
"If the peer has informed the local PCEP entity that description
it is currently overloaded, then this is set to "If the peer has informed the local PCEP entity that
true. Otherwise, it is set to false."; it is currently overloaded, then this is set to
} true. Otherwise, it is set to false.";
leaf peer-overload-time { }
type uint32; leaf peer-overloaded-timestamp {
units "seconds"; type yang:timestamp;
description description
"The interval of time that is remaining until the "The timestamp value of the time when the
peer will cease to be overloaded. If it is not peer-overloaded field was set to true.";
known how long the peer will stay in overloaded }
state, this leaf is set to zero."; leaf peer-overload-time {
} type uint32;
reference units "seconds";
"RFC 5440: Path Computation Element (PCE) Communication description
Protocol (PCEP)"; "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.";
}
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
//notification //notification
notification pcep-session-peer-overload-clear { notification pcep-session-peer-overload-clear {
description description
"This notification is sent when a peer leaves overload "This notification is sent when a peer leaves overload
state."; state.";
uses notification-instance-hdr; uses notification-instance-hdr;
leaf peer-overloaded { leaf peer-overloaded {
type boolean; type boolean;
description description
"If the peer has informed the local PCEP entity that "If the peer has informed the local PCEP entity that
it is currently overloaded, then this is set to it is currently overloaded, then this is set to
true. Otherwise, it is set to false."; true. Otherwise, it is set to false.";
} }
reference leaf peer-overloaded-clear-timestamp {
"RFC 5440: Path Computation Element (PCE) Communication type yang:timestamp;
Protocol (PCEP)"; description
} "The timestamp value of the time when the
peer-overloaded field was set to false.";
}
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
}
//notification //notification
/* /*
* RPC * RPC
*/ */
rpc trigger-resync { rpc trigger-resync {
if-feature "stateful"; if-feature "stateful";
if-feature "sync-opt"; if-feature "sync-opt";
description description
"Trigger the resyncrinization at the PCE"; "Trigger the resynchronization at the PCE";
reference reference
"RFC 8232: Optimizations of Label Switched Path State "RFC 8232: Optimizations of Label Switched Path State
Synchronization Procedures for a Stateful PCE"; Synchronization Procedures for a Stateful PCE";
input { input {
leaf pcc { leaf pcc {
type leafref { type leafref {
path "/pcep/entity/peers/peer/addr"; path "/pcep/entity/peers/peer/addr";
} }
description description
"The IP address to identify the PCC. The state "The IP address to identify the PCC. The state
syncronization is re-triggered for all LSPs from syncronization is re-triggered for all LSPs from
the PCC. The rpc on the PCC will be ignored."; the PCC. The rpc on the PCC will be ignored.";
} }
} }
//input //input
} }
//rpc //rpc
} }
<CODE ENDS> <CODE ENDS>
9.2. ietf-pcep-stats module 9.2. ietf-pcep-stats module
<CODE BEGINS> file "ietf-pcep-stats@2021-10-23.yang"
<CODE BEGINS> file "ietf-pcep-stats@2021-02-22.yang"
module ietf-pcep-stats { module ietf-pcep-stats {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-pcep-stats"; namespace "urn:ietf:params:xml:ns:yang:ietf-pcep-stats";
prefix pcep-stats; prefix pcep-stats;
import ietf-pcep { import ietf-pcep {
prefix pcep; prefix pcep;
reference reference
"RFC XXXX: A YANG Data Model for Path Computation "RFC XXXX: A YANG Data Model for Path Computation
Element Communications Protocol (PCEP)"; Element Communications Protocol (PCEP)";
skipping to change at page 77, line 27 skipping to change at page 79, line 46
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see the This version of this YANG module is part of RFC XXXX; see the
RFC itself for full legal notices."; RFC itself for full legal notices.";
revision 2021-02-22 { revision 2021-10-23 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: A YANG Data Model for Path Computation "RFC XXXX: A YANG Data Model for Path Computation
Element Communications Protocol (PCEP)"; Element Communications Protocol (PCEP)";
} }
/* /*
* Groupings * Groupings
*/ */
grouping pcep-stats { grouping pcep-stats {
description description
"This grouping defines statistics for PCEP. It is used "This grouping defines statistics for PCEP. It is used
for both peer and current session."; for both peer and current session.";
leaf avg-rsp-time { leaf discontinuity-time {
type yang:timestamp;
description
"The timestamp value of the time when the
statistics were last reset.";
}
leaf rsp-time-avg {
when "../../pcep:role = 'pce'" when "../../pcep:role = 'pce'"
+ "or " + "or "
+ "../../pcep:role = 'pcc-and-pce'" { + "../../pcep:role = 'pcc-and-pce'" {
description description
"Valid for PCEP Peer as PCE"; "Valid for PCEP Peer as PCE";
} }
type uint32; type uint32;
units "milliseconds"; units "milliseconds";
description description
"The average response time. If an average response time "The average response time. If an average response time
has not been calculated then this leaf has the value has not been calculated then this leaf has the value
zero."; zero.";
} }
leaf lwm-rsp-time { leaf rsp-time-lwm {
when "../../pcep:role = 'pce'" when "../../pcep:role = 'pce'"
+ "or " + "or "
+ "../../pcep:role = 'pcc-and-pce'" { + "../../pcep:role = 'pcc-and-pce'" {
description description
"Valid for PCEP Peer as PCE"; "Valid for PCEP Peer as PCE";
} }
type uint32; type uint32;
units "milliseconds"; units "milliseconds";
description description
"The smallest (low-water mark) response time seen. "The smallest (low-water mark) response time seen.
If no responses have been received then this leaf has If no responses have been received then this leaf has
the value zero."; the value zero.";
} }
leaf hwm-rsp-time { leaf rsp-time-hwm {
when "../../pcep:role = 'pce'" when "../../pcep:role = 'pce'"
+ "or " + "or "
+ "../../pcep:role = 'pcc-and-pce'" { + "../../pcep:role = 'pcc-and-pce'" {
description description
"Valid for PCEP Peer as PCE"; "Valid for PCEP Peer as PCE";
} }
type uint32; type uint32;
units "milliseconds"; units "milliseconds";
description description
"The greatest (high-water mark) response time seen. "The greatest (high-water mark) response time seen.
If no responses have been received then this object If no responses have been received then this object
has the value zero."; has the value zero.";
} }
skipping to change at page 97, line 23 skipping to change at page 99, line 48
Thanks to Mahesh Jethmalani for the Yang Doctor review. Thanks to Mahesh Jethmalani for the Yang Doctor review.
Thanks to Martin Bjorklund and Tom Petch for providing guidance Thanks to Martin Bjorklund and Tom Petch for providing guidance
regarding the Yang guidelines. regarding the Yang guidelines.
14. References 14. References
14.1. Normative References 14.1. Normative References
[I-D.ietf-isis-yang-isis-cfg] [I-D.ietf-isis-yang-isis-cfg]
Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. Litkowski, S., Yeung, D., Lindem, A., Zhang, J., and L.
Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- Lhotka, "YANG Data Model for IS-IS Protocol", Work in
isis-yang-isis-cfg-42 (work in progress), October 2019. Progress, Internet-Draft, draft-ietf-isis-yang-isis-cfg-
42, 15 October 2019, <https://www.ietf.org/archive/id/
draft-ietf-isis-yang-isis-cfg-42.txt>.
[I-D.ietf-netconf-tls-client-server] [I-D.ietf-netconf-tls-client-server]
Watsen, K., "YANG Groupings for TLS Clients and TLS Watsen, K., "YANG Groupings for TLS Clients and TLS
Servers", draft-ietf-netconf-tls-client-server-22 (work in Servers", Work in Progress, Internet-Draft, draft-ietf-
progress), August 2020. netconf-tls-client-server-25, 18 June 2021,
<https://www.ietf.org/archive/id/draft-ietf-netconf-tls-
client-server-25.txt>.
[I-D.ietf-ospf-yang] [I-D.ietf-ospf-yang]
Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, Yeung, D., Qu, Y., Zhang, J., Chen, I., and A. Lindem,
"YANG Data Model for OSPF Protocol", draft-ietf-ospf- "YANG Data Model for OSPF Protocol", Work in Progress,
yang-29 (work in progress), October 2019. Internet-Draft, draft-ietf-ospf-yang-29, 17 October 2019,
<https://www.ietf.org/archive/id/draft-ietf-ospf-yang-
29.txt>.
[I-D.ietf-teas-yang-te] [I-D.ietf-teas-yang-te]
Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, Saad, T., Gandhi, R., Liu, X., Beeram, V. P., Bryskin, I.,
"A YANG Data Model for Traffic Engineering Tunnels, Label and O. G. D. Dios, "A YANG Data Model for Traffic
Switched Paths and Interfaces", draft-ietf-teas-yang-te-25 Engineering Tunnels, Label Switched Paths and Interfaces",
(work in progress), July 2020. Work in Progress, Internet-Draft, draft-ietf-teas-yang-te-
27, 8 July 2021, <https://www.ietf.org/archive/id/draft-
ietf-teas-yang-te-27.txt>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>. <https://www.rfc-editor.org/info/rfc3688>.
skipping to change at page 101, line 7 skipping to change at page 103, line 40
<https://www.rfc-editor.org/info/rfc8776>. <https://www.rfc-editor.org/info/rfc8776>.
[RFC8779] Margaria, C., Ed., Gonzalez de Dios, O., Ed., and F. [RFC8779] Margaria, C., Ed., Gonzalez de Dios, O., Ed., and F.
Zhang, Ed., "Path Computation Element Communication Zhang, Ed., "Path Computation Element Communication
Protocol (PCEP) Extensions for GMPLS", RFC 8779, Protocol (PCEP) Extensions for GMPLS", RFC 8779,
DOI 10.17487/RFC8779, July 2020, DOI 10.17487/RFC8779, July 2020,
<https://www.rfc-editor.org/info/rfc8779>. <https://www.rfc-editor.org/info/rfc8779>.
14.2. Informative References 14.2. Informative References
[RFC4655] Farrel, A., Vasseur, J., and J. Ash, "A Path Computation [IANA-OSPF]
Element (PCE)-Based Architecture", RFC 4655, "Path Computation Element (PCE) Capability Flags in Open
Shortest Path First v2 (OSPFv2) Parameters",
<https://www.iana.org/assignments/ospfv2-parameters/
ospfv2-parameters.xhtml#ospfv2-parameters-14>.
[IANA-PCEP]
"ASSOCIATION Type Field in Path Computation Element
Protocol (PCEP) Numbers",
<https://www.iana.org/assignments/pcep/
pcep.xhtml#association-type-field>.
[RFC4655] Farrel, A., Vasseur, J.-P., and J. Ash, "A Path
Computation Element (PCE)-Based Architecture", RFC 4655,
DOI 10.17487/RFC4655, August 2006, DOI 10.17487/RFC4655, August 2006,
<https://www.rfc-editor.org/info/rfc4655>. <https://www.rfc-editor.org/info/rfc4655>.
[RFC7420] Koushik, A., Stephan, E., Zhao, Q., King, D., and J. [RFC7420] Koushik, A., Stephan, E., Zhao, Q., King, D., and J.
Hardwick, "Path Computation Element Communication Protocol Hardwick, "Path Computation Element Communication Protocol
(PCEP) Management Information Base (MIB) Module", (PCEP) Management Information Base (MIB) Module",
RFC 7420, DOI 10.17487/RFC7420, December 2014, RFC 7420, DOI 10.17487/RFC7420, December 2014,
<https://www.rfc-editor.org/info/rfc7420>. <https://www.rfc-editor.org/info/rfc7420>.
[RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running [RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running
skipping to change at page 102, line 21 skipping to change at page 104, line 42
+--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 {sync-opt}? +--rw speaker-entity-id? string {sync-opt}?
+--rw admin-status? boolean +--rw admin-status? boolean
+--ro index? uint32 +--ro index? uint32
+--ro oper-status? pcep-oper-status +--ro oper-status? pcep-oper-status
+--rw domain +--rw domains
| +--rw domain* [domain-type domain] | +--rw domains* [domain-type domain-info]
| +--rw domain-type identityref | +--rw domain-type identityref
| +--rw domain domain | +--rw domain-info domain
+--rw capability +--rw capability
| +--rw capability? bits | +--rw capability? bits
| +--rw pce-initiated? boolean {pce-initiated}? | +--rw pce-initiated? boolean {pce-initiated}?
| +--rw include-db-ver? boolean {stateful,sync-opt}? | +--rw include-db-ver? boolean {stateful,sync-opt}?
| +--rw trigger-resync? boolean {stateful,sync-opt}? | +--rw trigger-resync? boolean {stateful,sync-opt}?
| +--rw trigger-initial-sync? boolean {stateful,sync-opt}? | +--rw trigger-initial-sync? boolean {stateful,sync-opt}?
| +--rw incremental-sync? boolean {stateful,sync-opt}? | +--rw incremental-sync? boolean {stateful,sync-opt}?
| +--rw sr {sr}? | +--rw sr {sr}?
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw msd-limit? boolean | +--rw msd-limit? boolean
| +--rw nai? boolean | +--rw nai? boolean
+--rw msd? uint8 {sr}? +--rw msd? uint8 {sr}?
+--rw pce-info +--rw pce-info
| +--rw scope | +--rw scope
| | +--rw path-scope? bits | | +--rw path-scope? bits
| | +--rw intra-area-pref? uint8 | | +--rw intra-area-pref? uint8
| | +--rw inter-area-pref? uint8 | | +--rw inter-area-pref? uint8
| | +--rw inter-as-pref? uint8 | | +--rw inter-as-pref? uint8
| | +--rw inter-layer-pref? uint8 | | +--rw inter-layer-pref? uint8
| +--rw neigh-domains | +--rw neighbour-domains
| | +--rw domain* [domain-type domain] | | +--rw domains* [domain-type domain-info]
| | +--rw domain-type identityref | | +--rw domain-type identityref
| | +--rw domain domain | | +--rw domain-info domain
| +--rw path-key {path-key}? | +--rw path-key {path-key}?
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw discard-timer? uint32 | +--rw discard-timer? uint32
| +--rw reuse-time? uint32 | +--rw reuse-time? uint32
| +--rw pce-id? inet:ip-address | +--rw pce-id? inet:ip-address
+--rw connect-timer? uint16 +--rw connect-timer? uint16
+--rw connect-max-retry? uint32 +--rw connect-max-retry? uint32
+--rw init-backoff-timer? uint16 +--rw init-back-off-timer? uint16
+--rw max-backoff-timer? uint32 +--rw max-back-off-timer? uint32
+--ro open-wait-timer? uint16 +--ro open-wait-timer? uint16
+--ro keep-wait-timer? uint16 +--ro keep-wait-timer? uint16
+--rw keep-alive-timer? uint8 +--rw keepalive-timer? uint8
+--rw dead-timer? uint8 +--rw dead-timer? uint8
+--rw allow-negotiation? boolean +--rw allow-negotiation? boolean
+--rw max-keep-alive-timer? uint8 +--rw max-keepalive-timer? uint8
+--rw max-dead-timer? uint8 +--rw max-dead-timer? uint8
+--rw min-keep-alive-timer? uint8 +--rw min-keepalive-timer? uint8
+--rw min-dead-timer? uint8 +--rw min-dead-timer? uint8
+--rw sync-timer? uint16 {svec}? +--rw sync-timer? uint16 {svec}?
+--rw request-timer? uint16 +--rw request-timer? uint16
+--rw max-sessions? uint32 +--rw max-sessions? uint32
+--rw max-unknown-reqs? uint32 +--rw max-unknown-reqs? uint32
+--rw max-unknown-msgs? uint32 +--rw max-unknown-msgs? uint32
+--rw pcep-notification-max-rate uint32 +--rw pcep-notification-max-rate uint32
+--rw stateful-parameter {stateful}? +--rw stateful-parameter {stateful}?
| +--rw state-timeout? uint32 | +--rw state-timeout? uint32
| +--rw redelegation-timeout? uint32 | +--rw redelegation-timeout? uint32
skipping to change at page 105, line 20 skipping to change at page 107, line 41
| +--ro retrieved? boolean | +--ro retrieved? boolean
| +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr | +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr
| +--ro creation-time? yang:timestamp | +--ro creation-time? yang:timestamp
| +--ro discard-time? uint32 | +--ro discard-time? uint32
| +--ro reuse-time? uint32 | +--ro reuse-time? uint32
+--rw peers +--rw peers
+--rw peer* [addr] +--rw peer* [addr]
+--rw addr inet:ip-address +--rw addr inet:ip-address
+--rw role pcep-role +--rw role pcep-role
+--rw description? string +--rw description? string
+--rw domain +--rw domains
| +--rw domain* [domain-type domain] | +--rw domains* [domain-type domain-info]
| +--rw domain-type identityref | +--rw domain-type identityref
| +--rw domain domain | +--rw domain-info domain
+--rw capability +--rw capability
| +--rw capability? bits | +--rw capability? bits
| +--rw pce-initiated? boolean | +--rw pce-initiated? boolean
| | {pce-initiated}? | | {pce-initiated}?
| +--rw include-db-ver? boolean | +--rw include-db-ver? boolean
| | {stateful,sync-opt}? | | {stateful,sync-opt}?
| +--rw trigger-resync? boolean | +--rw trigger-resync? boolean
| | {stateful,sync-opt}? | | {stateful,sync-opt}?
| +--rw trigger-initial-sync? boolean | +--rw trigger-initial-sync? boolean
| | {stateful,sync-opt}? | | {stateful,sync-opt}?
skipping to change at page 105, line 48 skipping to change at page 108, line 21
| +--rw msd-limit? boolean | +--rw msd-limit? boolean
| +--rw nai? boolean | +--rw nai? boolean
+--rw msd? uint8 {sr}? +--rw msd? uint8 {sr}?
+--rw pce-info +--rw pce-info
| +--rw scope | +--rw scope
| | +--rw path-scope? bits | | +--rw path-scope? bits
| | +--rw intra-area-pref? uint8 | | +--rw intra-area-pref? uint8
| | +--rw inter-area-pref? uint8 | | +--rw inter-area-pref? uint8
| | +--rw inter-as-pref? uint8 | | +--rw inter-as-pref? uint8
| | +--rw inter-layer-pref? uint8 | | +--rw inter-layer-pref? uint8
| +--rw neigh-domains | +--rw neighbour-domains
| +--rw domain* [domain-type domain] | +--rw domains* [domain-type domain-info]
| +--rw domain-type identityref | +--rw domain-type identityref
| +--rw domain domain | +--rw domain-info domain
+--rw delegation-pref? uint8 {stateful}? +--rw delegation-pref? uint8 {stateful}?
+--rw auth +--rw auth
| +--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 crypto-algorithm identityref | | +--rw crypto-algorithm identityref
| | +--rw (key-string-style)? | | +--rw (key-string-style)?
| | +--:(keystring) | | +--:(keystring)
skipping to change at page 106, line 35 skipping to change at page 109, line 8
| +--rw tls-client | +--rw tls-client
| ... | ...
+--ro discontinuity-time? yang:timestamp +--ro discontinuity-time? yang:timestamp
+--ro initiate-session? boolean +--ro initiate-session? boolean
+--ro session-exists? boolean +--ro session-exists? boolean
+--ro session-up-time? yang:timestamp +--ro session-up-time? yang:timestamp
+--ro session-fail-time? yang:timestamp +--ro session-fail-time? yang:timestamp
+--ro session-fail-up-time? yang:timestamp +--ro session-fail-up-time? yang:timestamp
+--ro sessions +--ro sessions
+--ro session* [initiator] +--ro session* [initiator]
+--ro initiator pcep-initiator +--ro initiator pcep-initiator
+--ro role? +--ro role?
| -> /pcep/entity/role | -> /pcep/entity/role
+--ro state-last-change? yang:timestamp +--ro state-last-change? yang:timestamp
+--ro state? pcep-sess-state +--ro state?
+--ro session-creation? yang:timestamp | pcep-sess-state
+--ro connect-retry? yang:counter32 +--ro session-creation? yang:timestamp
+--ro local-id? uint8 +--ro connect-retry? yang:counter32
+--ro remote-id? uint8 +--ro local-id? uint8
+--ro keepalive-timer? uint8 +--ro remote-id? uint8
+--ro peer-keepalive-timer? uint8 +--ro keepalive-timer? uint8
+--ro dead-timer? uint8 +--ro peer-keepalive-timer? uint8
+--ro peer-dead-timer? uint8 +--ro dead-timer? uint8
+--ro ka-hold-time-rem? uint8 +--ro peer-dead-timer? uint8
+--ro overloaded? boolean +--ro ka-hold-time-rem? uint8
+--ro overload-time? uint32 +--ro overloaded? boolean
+--ro peer-overloaded? boolean +--ro overloaded-timestamp? yang:timestamp
+--ro peer-overload-time? uint32 +--ro overload-time? uint32
+--ro lspdb-sync? sync-state +--ro peer-overloaded? boolean
+--ro peer-overloaded-timestamp? yang:timestamp
+--ro peer-overload-time? uint32
+--ro lspdb-sync? sync-state
| {stateful}? | {stateful}?
+--ro recv-db-ver? uint64 +--ro recv-db-ver? uint64
| {stateful,sync-opt}? | {stateful,sync-opt}?
+--ro of-list {objective-function}? +--ro of-list {objective-function}?
| +--ro objective-function* [of] | +--ro objective-function* [of]
| +--ro of identityref | +--ro of identityref
+--ro pst-list +--ro pst-list
| +--ro path-setup-type* [pst] | +--ro path-setup-type* [pst]
| +--ro pst identityref | +--ro pst identityref
+--ro assoc-type-list {association}? +--ro assoc-type-list {association}?
| +--ro assoc-type* [at] | +--ro assoc-type* [at]
| +--ro at identityref | +--ro at identityref
+--ro speaker-entity-id? string {sync-opt}? +--ro speaker-entity-id? string
+--ro discontinuity-time? yang:timestamp {sync-opt}?
rpcs: rpcs:
+---x trigger-resync {stateful,sync-opt}? +---x trigger-resync {stateful,sync-opt}?
+---w input +---w input
+---w pcc? -> /pcep/entity/peers/peer/addr +---w pcc? -> /pcep/entity/peers/peer/addr
notifications: notifications:
+---n pcep-session-up +---n pcep-session-up
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro peer-addr? -> /pcep/entity/peers/peer/addr
| +--ro session-initiator? | +--ro session-initiator?
| | -> /pcep/entity/peers/peer/sessions/session/initiator | | -> /pcep/entity/peers/peer/sessions/session/initiator
| +--ro state-last-change? yang:timestamp | +--ro state-last-change? yang:timestamp
| +--ro state? pcep-sess-state | +--ro state? pcep-sess-state
+---n pcep-session-down +---n pcep-session-down
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro peer-addr? -> /pcep/entity/peers/peer/addr
| +--ro session-initiator? pcep-initiator | +--ro session-initiator? pcep-initiator
| +--ro state-last-change? yang:timestamp | +--ro state-last-change? yang:timestamp
| +--ro state? pcep-sess-state | +--ro state? pcep-sess-state
+---n pcep-session-local-overload +---n pcep-session-local-overload
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro peer-addr? -> /pcep/entity/peers/peer/addr
| +--ro session-initiator? | +--ro session-initiator?
| | -> /pcep/entity/peers/peer/sessions/session/initiator | | -> /pcep/entity/peers/peer/sessions/session/initiator
| +--ro overloaded? boolean | +--ro overloaded? boolean
| +--ro overload-time? uint32 | +--ro overloaded-timestamp? yang:timestamp
| +--ro overload-time? uint32
+---n pcep-session-local-overload-clear +---n pcep-session-local-overload-clear
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro peer-addr?
| +--ro overloaded? boolean | | -> /pcep/entity/peers/peer/addr
| +--ro overloaded? boolean
| +--ro overloaded-clear-timestamp? yang:timestamp
+---n pcep-session-peer-overload +---n pcep-session-peer-overload
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro peer-addr?
| | -> /pcep/entity/peers/peer/addr
| +--ro session-initiator? | +--ro session-initiator?
| | -> /pcep/entity/peers/peer/sessions/session/initiator | | -> /pcep/entity/peers/peer/sessions/session/initiator
| +--ro peer-overloaded? boolean | +--ro peer-overloaded? boolean
| +--ro peer-overload-time? uint32 | +--ro peer-overloaded-timestamp? yang:timestamp
| +--ro peer-overload-time? uint32
+---n pcep-session-peer-overload-clear +---n pcep-session-peer-overload-clear
+--ro peer-addr? -> /pcep/entity/peers/peer/addr +--ro peer-addr?
+--ro peer-overloaded? boolean | -> /pcep/entity/peers/peer/addr
+--ro peer-overloaded? boolean
+--ro peer-overloaded-clear-timestamp? yang:timestamp
Appendix B. Example Appendix B. Example
The example below provide an overview of PCEP peer session The example below provide an overview of PCEP peer session
informations and LSP-DB in the Yang Module. informations and LSP-DB in the Yang Module.
+-------+ +-------+ +-------+ +-------+
| | | | | | | |
| PCC1 |<---------------->| | | PCC1 |<---------------->| |
| | | | | | | |
skipping to change at page 111, line 4 skipping to change at page 113, line 35
"session": { "session": {
"initiator": "remote", "initiator": "remote",
"role": "pcc", "role": "pcc",
} }
} }
] ]
} }
} }
] ]
} }
} }
Appendix C. Contributor Addresses Appendix C. Contributor Addresses
Rohit Pobbathi Rohit Pobbathi
Huawei Technologies Nokia Networks
Divyashree Techno Park, Whitefield
Bangalore, Karnataka 560066
India India
EMail: rohit.pobbathi@huawei.com EMail: rohit.pobbathi_ashok@nokia.com
Vinod KumarS Vinod KumarS
Huawei Technologies Huawei Technologies
Divyashree Techno Park, Whitefield Divyashree Techno Park, Whitefield
Bangalore, Karnataka 560066 Bangalore, Karnataka 560066
India India
EMail: vinods.kumar@huawei.com EMail: vinods.kumar@huawei.com
Zafar Ali Zafar Ali
Cisco Systems Cisco Systems
Canada Canada
EMail: zali@cisco.com EMail: zali@cisco.com
Xufeng Liu Xufeng Liu
Volta Networks Volta Networks
skipping to change at page 112, line 19 skipping to change at page 115, line 4
Shashikanth Shashikanth
Huawei Technologies Huawei Technologies
Divyashree Techno Park, Whitefield Divyashree Techno Park, Whitefield
Bangalore, Karnataka 560066 Bangalore, Karnataka 560066
India India
EMail: shashikanth.vh@huawei.com EMail: shashikanth.vh@huawei.com
Authors' Addresses Authors' Addresses
Dhruv Dhody (editor) Dhruv Dhody (editor)
Huawei Technologies Huawei Technologies
Divyashree Techno Park, Whitefield Divyashree Techno Park, Whitefield
Bangalore, Karnataka 560066 Bangalore 560066
Karnataka
India India
EMail: dhruv.ietf@gmail.com Email: dhruv.ietf@gmail.com
Jonathan Hardwick Jonathan Hardwick
Metaswitch Metaswitch
100 Church Street 100 Church Street
Enfield EN2 6BQ Enfield
UK EN2 6BQ
United Kingdom
EMail: jonathan.hardwick@metaswitch.com Email: jonathan.hardwick@metaswitch.com
Vishnu Pavan Beeram Vishnu Pavan Beeram
Juniper Networks Juniper Networks
USA India
EMail: vbeeram@juniper.net Email: vbeeram@juniper.net
Jeff Tantsura Jeff Tantsura
Apstra, Inc. Apstra, Inc.
USA United States of America
EMail: jefftant.ietf@gmail.com Email: jefftant.ietf@gmail.com
 End of changes. 224 change blocks. 
2877 lines changed or deleted 3026 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/