rfc9826.original   rfc9826.txt 
PCE Working Group D. Dhody, Ed. Internet Engineering Task Force (IETF) D. Dhody, Ed.
Internet-Draft Huawei Request for Comments: 9826 Huawei
Intended status: Standards Track V. Beeram Category: Standards Track V. Beeram
Expires: 30 July 2025 Juniper Networks ISSN: 2070-1721 Juniper Networks
J. Hardwick J. Hardwick
J. Tantsura J. Tantsura
Nvidia Nvidia
26 January 2025 July 2025
A YANG Data Model for Path Computation Element Communications Protocol A YANG Data Model for the Path Computation Element Communication
(PCEP) Protocol (PCEP)
draft-ietf-pce-pcep-yang-30
Abstract Abstract
This document defines a YANG data model for the management of the This document defines a YANG data model for the management of the
Path Computation Element communications Protocol (PCEP) for Path Computation Element Communication Protocol (PCEP) for
communications between a Path Computation Client (PCC) and a Path communications between a Path Computation Client (PCC) and a Path
Computation Element (PCE), or between two PCEs. Computation Element (PCE), or between two PCEs.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This is an Internet Standards Track document.
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
This Internet-Draft will expire on 30 July 2025. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9826.
Copyright Notice Copyright Notice
Copyright (c) 2025 IETF Trust and the persons identified as the Copyright (c) 2025 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 (https://trustee.ietf.org/ Provisions Relating to IETF Documents
license-info) in effect on the date of publication of this document. (https://trustee.ietf.org/license-info) in effect on the date of
Please review these documents carefully, as they describe your rights publication of this document. Please review these documents
and restrictions with respect to this document. Code Components carefully, as they describe your rights and restrictions with respect
extracted from this document must include Revised BSD License text as to this document. Code Components extracted from this document must
described in Section 4.e of the Trust Legal Provisions and are include Revised BSD License text as described in Section 4.e of the
provided without warranty as described in the Revised BSD License. Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction
2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 2. Requirements Language
3. Terminology and Notation . . . . . . . . . . . . . . . . . . 3 3. Terminology and Notation
3.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 5 3.1. Tree Diagrams
3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5 3.2. Prefixes in Data Node Names
3.3. References in the Model . . . . . . . . . . . . . . . . . 5 3.3. References in the Model
4. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 8 4. The Design of PCEP Data Model
4.1. The Entity . . . . . . . . . . . . . . . . . . . . . . . 10 4.1. The Entity
4.1.1. The Peer List . . . . . . . . . . . . . . . . . . . . 14 4.1.1. The Peer List
4.1.1.1. The Session List . . . . . . . . . . . . . . . . 17 4.1.1.1. The Session List
4.2. Notifications . . . . . . . . . . . . . . . . . . . . . . 19 4.2. Notifications
4.3. RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.3. RPC
5. The Design of PCEP Statistics Data Model . . . . . . . . . . 20 5. The Design of PCEP Statistics Data Model
6. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 23 6. Advanced PCE Features
6.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 24 6.1. Stateful PCE's LSP-DB
7. Other Considerations . . . . . . . . . . . . . . . . . . . . 24 7. Other Considerations
7.1. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 24 7.1. PCEP over TLS (PCEPS)
8. PCEP YANG Modules . . . . . . . . . . . . . . . . . . . . . . 25 8. PCEP YANG Modules
8.1. ietf-pcep module . . . . . . . . . . . . . . . . . . . . 25 8.1. ietf-pcep Module
8.2. ietf-pcep-stats module . . . . . . . . . . . . . . . . . 84 8.2. ietf-pcep-stats Module
9. Security Considerations . . . . . . . . . . . . . . . . . . . 99 9. Security Considerations
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 101 10. IANA Considerations
11. Implementation Status . . . . . . . . . . . . . . . . . . . . 102 11. References
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 102 11.1. Normative References
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 103 11.2. Informative References
13.1. Normative References . . . . . . . . . . . . . . . . . . 103 Appendix A. The Full PCEP Data Model
13.2. Informative References . . . . . . . . . . . . . . . . . 108 Appendix B. Example
Appendix A. The Full PCEP Data Model . . . . . . . . . . . . . . 109 Appendix C. Design Objectives
Appendix B. Example . . . . . . . . . . . . . . . . . . . . . . 117 Appendix D. Relationship with PCEP MIB
Appendix C. Design Objectives . . . . . . . . . . . . . . . . . 120 Acknowledgements
Appendix D. Relationship with PCEP MIB . . . . . . . . . . . . . 120 Contributors
Appendix E. Contributor Addresses . . . . . . . . . . . . . . . 127 Authors' Addresses
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 128
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; it is
defined in [RFC5440]. PCEP interactions include path computation defined in [RFC5440]. PCEP interactions include path computation
requests and path computation replies as well as notifications of requests and path computation replies as well as notifications of
specific states related to the use of a PCE in the context of specific states related to the use of a PCE in the context of
Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS)
Traffic Engineering (TE). [RFC8231] specifies extensions to PCEP to Traffic Engineering (TE). [RFC8231] specifies extensions to PCEP to
enable stateful control of MPLS TE LSPs. [RFC8664] and [RFC9603] enable stateful control of MPLS-TE Label Switched Paths (LSPs).
extend PCEP to support Segment Routing in MPLS and IPv6 respectively. [RFC8664] and [RFC9603] extend PCEP to support Segment Routing in
MPLS and IPv6, respectively.
This document defines a YANG 1.1 [RFC7950] data model for the This document defines a YANG 1.1 [RFC7950] data model for the
management of PCEP speakers. It is important to establish a common management of PCEP speakers. It is important to establish a common
data model for how PCEP speakers are identified, configured, and data model for how PCEP speakers are identified, configured, and
monitored. The data model includes configuration data and state monitored. The data model includes configuration data and state
data. data.
This document contains a specification of the PCEP YANG module, This document contains a specification of the PCEP YANG module "ietf-
"ietf-pcep" which provides the PCEP [RFC5440] data model. Further, pcep", which provides the PCEP [RFC5440] data model. Further, this
this document also includes the PCEP statistics YANG module "ietf- document also includes the PCEP statistics YANG module "ietf-pcep-
pcep-stats" which provides statistics, counters and telemetry data. stats", which provides statistics, counters, and telemetry data.
The YANG modules in this document conform to the Network Management The YANG modules in this document conform to the Network Management
Datastore Architecture (NMDA) [RFC8342]. The origin of the data is Datastore Architecture (NMDA) [RFC8342]. The origin of the data is
indicated as per the origin metadata annotation. indicated as per the origin metadata annotation.
2. Requirements Language 2. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"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
14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 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:
* Path Computation Request message (PCReq). * Path Computation Request (PCReq) message
* Path Computation Reply message (PCRep). * Path Computation Reply (PCRep) message
* Notification message (PCNtf). * Path Computation Notification (PCNtf) message
* Error message (PCErr). * Path Computation Error (PCErr) message
* Request Parameters object (RP). * Request Parameters (RP) object
* Synchronization Vector object (SVEC). * Synchronization Vector (SVEC) object
* Explicit Route object (ERO). * Explicit Route Object (ERO)
This document also uses the following terms defined in [RFC7420]: This document uses the following terms defined in [RFC7420]:
* PCEP entity: a local PCEP speaker. PCEP entity: a local PCEP speaker
* PCEP peer: to refer to a remote PCEP speaker. PCEP peer: a remote PCEP speaker
* PCEP speaker: where it is not necessary to distinguish between PCEP speaker: term used when it is not necessary to distinguish
local and remote. between local and remote.
Further, this document also uses the following terms defined in Further, this document uses the following terms defined in [RFC8231]:
[RFC8231] :
* Stateful PCE, Passive Stateful PCE, Active Stateful PCE * Stateful PCE, Passive Stateful PCE, Active Stateful PCE
* Delegation, Revocation, Redelegation * Delegation, Revocation, Redelegation
* LSP State Report, Path Computation Report message (PCRpt). * Path Computation LSP State Report (PCRpt) message
* LSP State Update, Path Computation Update message (PCUpd).
* PLSP-ID: a PCEP-specific identifier for the LSP.
* SRP: Stateful PCE Request Parameters
[RFC8281] : * Path Computation LSP Update Request (PCUpd) message
* PCE-initiated LSP, Path Computation LSP Initiate Message * PLSP-ID (a PCEP-specific identifier for the LSP)
(PCInitiate).
[RFC8408] : * Stateful PCE Request Parameter (SRP)
* Path Setup Type (PST). This document also uses the following terms defined in [RFC8281]:
[RFC8664] : * PCE-initiated LSP
* Segment Routing (SR). * Path Computation LSP Initiate (PCInitiate) message
[RFC5541] : Last, this document uses the following terms, which are defined in
the RFCs indicated below:
* Objective Function (OF). * Path Setup Type (PST) [RFC8408]
[RFC8697] : * Segment Routing (SR) [RFC8664]
* Association. * Objective Function (OF) [RFC5541]
[RFC6241] : * Association [RFC8697]
* Configuration data. * Configuration data [RFC6241]
* State data. * State data [RFC6241]
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, the names of data nodes and other data model In this document, the names of data nodes and other data model
skipping to change at page 5, line 45 skipping to change at line 226
+-----------+------------------+-----------+ +-----------+------------------+-----------+
| tlss | ietf-tls-server | [RFC9645] | | tlss | ietf-tls-server | [RFC9645] |
+-----------+------------------+-----------+ +-----------+------------------+-----------+
| tlsc | ietf-tls-client | [RFC9645] | | tlsc | ietf-tls-client | [RFC9645] |
+-----------+------------------+-----------+ +-----------+------------------+-----------+
| ospf | ietf-ospf | [RFC9129] | | ospf | ietf-ospf | [RFC9129] |
+-----------+------------------+-----------+ +-----------+------------------+-----------+
| isis | ietf-isis | [RFC9130] | | isis | ietf-isis | [RFC9130] |
+-----------+------------------+-----------+ +-----------+------------------+-----------+
Table 1: Prefixes and corresponding YANG Table 1: Prefixes and Corresponding YANG
modules Modules
3.3. References in the Model 3.3. References in the Model
Following documents are referenced in the model defined in this The following documents are referenced in the model defined in this
document - document.
+=====================================================+=============+ +=====================================================+=============+
| Documents | Reference | | Documents | Reference |
+=====================================================+=============+ +=====================================================+=============+
| OSPF Protocol Extensions for Path Computation | [RFC5088] | | OSPF Protocol Extensions for Path Computation | [RFC5088] |
| Element (PCE) Discovery | | | Element (PCE) Discovery | |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| IS-IS Protocol Extensions for Path Computation | [RFC5089] | | IS-IS Protocol Extensions for Path Computation | [RFC5089] |
| Element (PCE) Discovery | | | Element (PCE) Discovery | |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| Path Computation Element (PCE) Communication | [RFC5440] | | Path Computation Element (PCE) Communication | [RFC5440] |
skipping to change at page 7, line 8 skipping to change at line 286
| Extensions to the Path Computation Element | [RFC8306] | | Extensions to the Path Computation Element | [RFC8306] |
| Communication Protocol (PCEP) for Point-to- | | | Communication Protocol (PCEP) for Point-to- | |
| Multipoint Traffic Engineering Label Switched | | | Multipoint Traffic Engineering Label Switched | |
| Paths | | | Paths | |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| Network Configuration Access Control Model | [RFC8341] | | Network Configuration Access Control Model | [RFC8341] |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| Conveying Path Setup Type in PCE Communication | [RFC8408] | | Conveying Path Setup Type in PCE Communication | [RFC8408] |
| Protocol (PCEP) Messages | | | Protocol (PCEP) Messages | |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| Traffic Engineering Common YANG Types | [RFC8776] | | Common YANG Data Types for Traffic Engineering | [RFC8776] |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| YANG Groupings for TLS Clients and TLS Servers | [RFC9645] | | YANG Groupings for TLS Clients and TLS Servers | [RFC9645] |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| PCEP Extensions for Segment Routing | [RFC8664] | | Path Computation Element Communication Protocol | [RFC8664] |
| (PCEP) Extensions for Segment Routing | |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| PCEP Extensions for Establishing Relationships | [RFC8697] | | Path Computation Element Communication Protocol | [RFC8697] |
| Between Sets of LSPs | | | (PCEP) Extensions for Establishing | |
| Relationships between Sets of Label Switched | |
| Paths (LSPs) | |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| YANG Data Model for OSPF Protocol | [RFC9129] | | YANG Data Model for the OSPF Protocol | [RFC9129] |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| YANG Data Model for IS-IS Protocol | [RFC9130] | | YANG Data Model for the IS-IS Protocol | [RFC9130] |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| PCEP extensions for GMPLS | [RFC8779] | | Path Computation Element Communication Protocol | [RFC8779] |
| (PCEP) Extensions for GMPLS | |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| ASSOCIATION Type Field in Path Computation | [IANA-PCEP] | | "ASSOCIATION Type Field" registry (in the "Path | [IANA-PCEP] |
| Element Protocol (PCEP) Numbers | | | Computation Element Protocol (PCEP) Numbers" | |
| registry group) | |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| Path Computation Element (PCE) Capability Flags | [IANA-IGP] | | "Path Computation Element (PCE) Capability | [IANA-IGP] |
| in Interior Gateway Protocol (IGP) Parameters | | | Flags" registry (in the "Interior Gateway | |
| Protocol (IGP) Parameters" registry group) | |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| Path Computation Element Communication Protocol | [RFC9168] | | Path Computation Element Communication Protocol | [RFC9168] |
| (PCEP) Extension for Flow Specification | | | (PCEP) Extension for Flow Specification | |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| Path Computation Element Communication Protocol | [RFC8685] | | Path Computation Element Communication Protocol | [RFC8685] |
| (PCEP) Extensions for the Hierarchical Path | | | (PCEP) Extensions for the Hierarchical Path | |
| Computation Element (H-PCE) Architecture | | | Computation Element (H-PCE) Architecture | |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| Hierarchical Stateful Path Computation Element | [RFC8751] | | Hierarchical Stateful Path Computation Element | [RFC8751] |
| (PCE) | | | (PCE) | |
skipping to change at page 8, line 24 skipping to change at line 356
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| Extensions to the Path Computation Element | [RFC8282] | | Extensions to the Path Computation Element | [RFC8282] |
| Communication Protocol (PCEP) for Inter-Layer | | | Communication Protocol (PCEP) for Inter-Layer | |
| MPLS and GMPLS Traffic Engineering | | | MPLS and GMPLS Traffic Engineering | |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
| Path Computation Element Communication Protocol | [RFC9005] | | Path Computation Element Communication Protocol | [RFC9005] |
| (PCEP) Extension for Associating Policies and | | | (PCEP) Extension for Associating Policies and | |
| Label Switched Paths (LSPs) | | | Label Switched Paths (LSPs) | |
+-----------------------------------------------------+-------------+ +-----------------------------------------------------+-------------+
Table 2: References in the YANG modules Table 2: References in the YANG Modules
4. The Design of PCEP Data Model 4. The Design 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 PCEP, which are listed below and further detailed building blocks for PCEP, which are listed below and further detailed
in the subsequent subsections. in the subsequent subsections.
* The local PCEP entity * The local PCEP entity
* The PCEP peer * The PCEP peer
skipping to change at page 9, line 15 skipping to change at line 395
+--rw domains +--rw domains
| +--rw domain* [type domain] | +--rw domain* [type domain]
| +--... | +--...
+--rw capabilities +--rw capabilities
| +--... | +--...
+--rw auth +--rw auth
| +--... | +--...
+--rw pce-info +--rw pce-info
| +--rw scope | +--rw scope
| | +--... | | +--...
| +--rw neighbour-domains | +--rw neighbor-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}?
| | +--... | | +--...
skipping to change at page 10, line 4 skipping to change at line 432
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
+--... +--...
4.1. The Entity 4.1. The Entity
The PCEP YANG module may contain status information for the local The PCEP YANG module may contain status information for the local
PCEP entity. PCEP entity.
The entity has an IP address (using ietf-inet-types [RFC6991]) and a The entity has an IP address (using ietf-inet-types [RFC6991]) and a
"role" leaf (the local entity PCEP role) as mandatory. "role" leaf (the local entity PCEP role) as mandatory.
Note that, the PCEP MIB module [RFC7420] uses an entity list and a Note that the PCEP MIB module [RFC7420] uses an entity list and a
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. entity table.
The local PCEP entity contains various information related to this The local PCEP entity contains various information related to this
entity such as its domain, capabilities, security parameters etc. entity such as its domain, capabilities, security parameters, etc.
When the local entity is PCE, it could also have path-key and the When the local entity is PCE, it could also have path-key and the LSP
LSP-DB information. Database (LSP-DB) information.
Note that the timer names in the YANG use hyphens as compared to Note that the timer names in YANG use hyphens as compared to
[RFC5440] (for example, DeadTimer in the protocol specification is [RFC5440] (for example, DeadTimer in the protocol specification is
called dead-timer in YANG). called dead-timer in YANG).
module: ietf-pcep module: ietf-pcep
+--rw pcep! +--rw pcep!
+--rw entity +--rw entity
+--rw addr* inet:ip-address-no-zone +--rw addr* inet:ip-address-no-zone
+--rw enabled? boolean +--rw enabled? boolean
+--rw role role +--rw role role
+--rw description? string +--rw description? string
skipping to change at page 12, line 42 skipping to change at line 566
| +--rw peer-allowed-to-send? empty | +--rw peer-allowed-to-send? empty
| +--rw test-peer-aliveness! | +--rw test-peer-aliveness!
| ... | ...
+--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 neighbour-domains | +--rw neighbor-domains
| | +--rw domain* [type domain] | | +--rw domain* [type domain]
| | +--rw type identityref | | +--rw type identityref
| | +--rw domain domain | | +--rw domain 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-no-zone | +--rw pce-id? inet:ip-address-no-zone
+--rw connect-timer? uint16 +--rw connect-timer? uint16
+--rw connect-max-retry? uint32 +--rw connect-max-retry? uint32
skipping to change at page 14, line 45 skipping to change at line 665
| +--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]
+--... +--...
4.1.1. The Peer List 4.1.1. The Peer List
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
looks like multiple distinct peers to the other PCEP speakers in the it looks like multiple distinct peers to the other PCEP speakers in
network. the 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
even when no PCEP session currently exists for that peer. The even when no PCEP session currently exists for that peer. The
statistics contained are an aggregate of the statistics for all statistics contained are an aggregate of the statistics for all
successive sessions with that peer. successive sessions with that peer.
To limit the quantity of information that is stored, an To limit the quantity of information that is stored, an
implementation MAY choose to discard this information if and only if implementation MAY choose to discard this information if and only if
no PCEP session exists for the corresponding peer. no PCEP session exists for the corresponding peer.
The data model for PCEP peers presented in this document uses a flat The data model for PCEP peers presented in this document uses a flat
list of peers. Each peer in the list is identified by its IP list of peers. Each peer in the list is identified by its IP
address. address.
This peer list includes peers that are explicitly configured at the This peer list includes peers that are explicitly configured at the
local PCEP entity as well as peers that are learned dynamically. For local PCEP entity as well as peers that are learned dynamically. For
example, at a PCC, the remote PCE peer to use could be explicitly example, at a PCC, the remote PCE peer to use could be explicitly
configured. A PCC could also learn a PCE address in the network via configured. A PCC could also learn a PCE address in the network via
the IGP discovery and it will show up in this list. When a session the IGP discovery, and it will show up in this list. When a session
is initiated at a PCE, the remote PCC peer information is also added is initiated at a PCE, the remote PCC peer information is also added
by the system to the peer list. by the system to the peer list.
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-no-zone +--rw addr inet:ip-address-no-zone
+--rw role role +--rw role role
+--rw description? string +--rw description? string
+--rw domains +--rw domains
| +--rw domain* [type domain] | +--rw domain* [type domain]
| +--rw type identityref | +--rw type identityref
| +--rw domain domain | +--rw domain domain
+--rw capabilities +--rw capabilities
| +--rw capability? bits | +--rw capability? bits
| +--rw pce-initiated? boolean {pce-initiated}? | +--rw pce-initiated? boolean {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}?
| +--rw incremental-sync? boolean | +--rw incremental-sync? boolean
| | {stateful,sync-opt}? | | {stateful,sync-opt}?
| +--rw sr-mpls {sr-mpls}? | +--rw sr-mpls {sr-mpls}?
| | +--rw enabled? boolean | | +--rw enabled? boolean
| | +--rw no-msd-limit? boolean | | +--rw no-msd-limit? boolean
| | +--rw nai? boolean | | +--rw nai? boolean
| +--rw stateful-gmpls {stateful,gmpls}? | +--rw stateful-gmpls {stateful,gmpls}?
| | +--rw enabled? boolean | | +--rw enabled? boolean
| +--rw inter-layer? boolean {inter-layer}? | +--rw inter-layer? boolean {inter-layer}?
| +--rw h-pce {h-pce}? | +--rw h-pce {h-pce}?
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw stateful? boolean {stateful}? | +--rw stateful? boolean {stateful}?
| +--rw role? hpce-role | +--rw role? hpce-role
+--ro msd? uint8 {sr-mpls}? +--ro msd? uint8 {sr-mpls}?
+--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 neighbour-domains | +--rw neighbor-domains
| +--rw domain* [type domain] | +--rw domain* [type domain]
| +--rw type identityref | +--rw type identityref
| +--rw domain domain | +--rw domain 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)
| | | +--rw keystring? string | | | +--rw keystring? string
| | +--:(hexadecimal) {key-chain:hex-key-string}? | | +--:(hexadecimal) {key-chain:hex-key-string}?
| | +--rw hexadecimal-string? yang:hex-string | | +--rw hexadecimal-string? yang:hex-string
| +--:(auth-tls) {tls}? | +--:(auth-tls) {tls}?
| +--rw (role)? | +--rw (role)?
| +--:(server) | +--:(server)
| | +--rw tls-server | | +--rw tls-server
| | ... | | ...
| +--:(client) | +--:(client)
| +--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]
+--... +--...
4.1.1.1. The Session List 4.1.1.1. The Session List
The session list contains PCEP sessions that the PCEP entity (PCE or The session list contains PCEP sessions 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 18, line 5 skipping to change at line 789
given pair, one representing a session initiated by the local PCEP given pair, one representing a session initiated by the local PCEP
entity and the other representing a session initiated by the peer. entity and the other representing a session initiated by the peer.
When one of these sessions reaches the active state, then the other When one of these sessions reaches the active state, then the other
is discarded. is discarded.
The data model for the PCEP session presented in this document uses a The data model for the 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 initiator +--ro initiator initiator
+--ro role? -> ../../../role +--ro role? -> ../../../role
+--ro state-last-change? yang:timestamp +--ro state-last-change? yang:timestamp
+--ro state? sess-state +--ro state? sess-state
+--ro session-creation? yang:timestamp +--ro session-creation? yang:timestamp
+--ro connect-retry? yang:counter32 +--ro connect-retry? yang:counter32
+--ro local-id? uint8 +--ro local-id? uint8
+--ro remote-id? uint8 +--ro remote-id? uint8
+--ro keepalive-timer? uint8 +--ro keepalive-timer? uint8
+--ro peer-keepalive-timer? uint8 +--ro peer-keepalive-timer? uint8
+--ro dead-timer? uint8 +--ro dead-timer? uint8
+--ro peer-dead-timer? uint8 +--ro peer-dead-timer? uint8
+--ro ka-hold-time-rem? uint8 +--ro ka-hold-time-rem? uint8
+--ro overloaded? boolean +--ro overloaded? boolean
+--ro overloaded-timestamp? yang:timestamp +--ro overloaded-timestamp? yang:timestamp
+--ro overload-time? uint32 +--ro overload-time? uint32
+--ro peer-overloaded? boolean +--ro peer-overloaded? boolean
+--ro peer-overloaded-timestamp? yang:timestamp +--ro peer-overloaded-timestamp? yang:timestamp
+--ro peer-overload-time? uint32 +--ro peer-overload-time? uint32
+--ro lspdb-sync? sync-state +--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 +--ro speaker-entity-id? string
{sync-opt}? {sync-opt}?
4.2. Notifications 4.2. Notifications
This YANG model defines a list of notifications to inform clients of This YANG data model defines a list of notifications to inform
important events detected during the protocol operation. The clients of important events detected during the protocol operation.
notifications defined cover the PCEP MIB [RFC7420] notifications. The notifications defined cover the PCEP MIB [RFC7420] 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? leafref | +--ro session-initiator? leafref
| +--ro state-last-change? yang:timestamp | +--ro state-last-change? yang:timestamp
| +--ro state? sess-state | +--ro state? 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? initiator | +--ro session-initiator? initiator
skipping to change at page 19, line 48 skipping to change at line 876
| +--ro peer-overloaded-timestamp? yang:timestamp | +--ro peer-overloaded-timestamp? yang:timestamp
| +--ro peer-overload-time? uint32 | +--ro peer-overload-time? uint32
+---n pcep-session-peer-overload-clear +---n pcep-session-peer-overload-clear
+--ro peer-addr? +--ro peer-addr?
| -> /pcep/entity/peers/peer/addr | -> /pcep/entity/peers/peer/addr
+--ro peer-overloaded? boolean +--ro peer-overloaded? boolean
+--ro peer-overloaded-clear-timestamp? yang:timestamp +--ro peer-overloaded-clear-timestamp? yang:timestamp
4.3. RPC 4.3. RPC
This YANG model defines a RPC to trigger state resynchronize at the This YANG data model defines an RPC to trigger state
PCE for sanity check with a particular PCC. resynchronization at the PCE for a sanity check with a particular
PCC.
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
5. The Design of PCEP Statistics Data Model 5. The Design of PCEP Statistics Data Model
The module "ietf-pcep-stats", augments the ietf-pcep module to The "ietf-pcep-stats" module augments the "ietf-pcep" module to
include statistics at the PCEP peer and session level. It also include statistics at the PCEP peer and session level. It also
includes an RPC to reset all PCEP statistics across all peers and includes an RPC to reset all PCEP statistics across all peers and
sessions through mechanisms such as walking a list of pointers to sessions through mechanisms such as walking a list of pointers to
those peer and session stats. those peer and session statistics.
If this mechanism is not supported, implementations must reset PCEP If this mechanism is not supported, implementations must reset PCEP
statistics by invoking the action 'reset-statistics' for each peer statistics by invoking the action 'reset-statistics' for each peer
and session. and session.
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 stats +--ro stats
+--ro discontinuity-time? yang:timestamp +--ro discontinuity-time? yang:timestamp
skipping to change at page 23, line 45 skipping to change at line 1065
| +---w reset-at? yang:date-and-time | +---w reset-at? yang:date-and-time
+--ro output +--ro output
+--ro reset-finished-at? yang:date-and-time +--ro reset-finished-at? yang:date-and-time
rpcs: rpcs:
+---x reset-pcep-statistics-all {reset-all}? +---x reset-pcep-statistics-all {reset-all}?
6. Advanced PCE Features 6. 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 such as:
* Capability and Scope * Capability and scope
* Domain information (local/neighbor) * Domain information (local/neighbor)
* Path-Key
* Path-key
* Objective Function (OF) * Objective Function (OF)
* Global Concurrent Optimization (GCO) * Global Concurrent Optimization (GCO)
* P2MP * Point-to-Multipoint (P2MP)
* GMPLS * GMPLS
* Inter-Layer * Inter-layer
* Stateful PCE * Stateful PCE
* Segment Routing (SR) for MPLS data plane * Segment Routing (SR) for the MPLS data plane
* Authentication including PCEPS (TLS) * Authentication including PCEPS (TLS)
* Hierarchical PCE (H-PCE) * Hierarchical PCE (H-PCE)
Segment Routing in the IPv6 data plane is out of the scope of this Segment Routing in the IPv6 data plane is out of the scope of this
document. Refer [I-D.ietf-pce-pcep-srv6-yang] for the PCEP-SRv6 YANG document. Refer to [YANG-PCEP-SR] for the PCEP-SRv6 YANG module.
module.
6.1. Stateful PCE's LSP-DB 6.1. Stateful PCE's LSP-DB
In the operational datastore of stateful PCE, the list of LSP state In the operational datastore of stateful PCE, the list of LSP state
are maintained in the LSP-DB. The key is the PLSP-ID, the PCC's IP is maintained in the LSP-DB. The key is the PLSP-ID, the PCC's IP
address, and the LSP-ID. address, and the LSP-ID.
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 [YANG-TE]. A
[I-D.ietf-teas-yang-te]. A reference to the LSP state in the TE reference to the LSP state in the TE model is maintained.
model is maintained.
7. Other Considerations 7. Other Considerations
7.1. PCEP over TLS (PCEPS) 7.1. PCEP over TLS (PCEPS)
[RFC8253] describes the use of TLSv1.2 [RFC5246] or later in PCEP. [RFC8253] describes the use of TLS 1.2 [RFC5246] or later in PCEP.
Further, [I-D.ietf-pce-pceps-tls13] specify how to protect PCEP Further, [PCEPS-UPDATE] specifies how to protect PCEP messages with
messages with TLS 1.3 [RFC8446] by disallowing the use of early data TLS 1.3 [RFC8446] by disallowing the use of early data (0-RTT) and
(0-RTT) and listing the cipher suites that need to be supported with listing the cipher suites that need to be supported with TLS 1.3.
TLS 1.3.
The PCC acting as the TLS client opens the TLS connection and the PCE The PCC acting as the TLS client opens the TLS connection, and the
acting as the TLS server listens for incoming connections as per TLS PCE acting as the TLS server listens for incoming connections as per
specifications ([RFC8446] and [RFC5246]). [RFC8253] specifies the the TLS specifications ([RFC8446] and [RFC5246]). [RFC8253]
StartTLS procedure in PCEP that initiates the TLS connection before specifies the StartTLS procedure in PCEP that initiates the TLS
exchanging PCEP messages thus the identity verification is completed connection before exchanging PCEP messages; thus, the identity
before the PCEP session is established. verification is completed before the PCEP session is established.
Note that a PCEP speaker could act as both a client (PCC) and a Note that a PCEP speaker could act as both a client (PCC) and a
server (PCE). The role within the context of a PCEP session is server (PCE). The role within the context of a PCEP session is
determined by the relationship it has with its peer (the same holds determined by the relationship it has with its peer (the same is true
good for TLS as well). for TLS as well).
The YANG module uses the TLS grouping in [RFC9645]. Note that any The YANG module uses the TLS grouping in [RFC9645]. Note that any
TLS version can be configured but [RFC9645] recommends the use of TLS TLS version can be configured, but [RFC9645] recommends the use of
1.3 only. At the time of publication of this document, TLS 1.2 is TLS 1.3 only. At the time of publication of this document, TLS 1.2
still in common use for PCEP and can still be enabled with the is still in common use for PCEP and can still be enabled with the
feature "tls12" even though it is marked with status as "deprecated". feature "tls12" even though it is marked with status as "deprecated".
8. PCEP YANG Modules 8. PCEP YANG Modules
8.1. ietf-pcep module 8.1. ietf-pcep Module
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the
actual RFC number and all occurrences of the revision date below with
the date of RFC publication (and remove this note).
<CODE BEGINS> file "ietf-pcep@2025-01-27.yang" <CODE BEGINS> file "ietf-pcep@2025-07-24.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 { import ietf-inet-types {
prefix inet; prefix inet;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
skipping to change at page 26, line 11 skipping to change at line 1167
"RFC 8776: Common YANG Data Types for Traffic Engineering"; "RFC 8776: Common YANG Data Types for Traffic Engineering";
} }
import ietf-key-chain { import ietf-key-chain {
prefix key-chain; prefix key-chain;
reference reference
"RFC 8177: YANG Data Model for Key Chains"; "RFC 8177: YANG Data Model for Key Chains";
} }
import ietf-netconf-acm { import ietf-netconf-acm {
prefix nacm; prefix nacm;
reference reference
"RFC 8341: Network Configuration Protocol (NETCONF) Access "RFC 8341: Network Configuration Access Control Model";
Control Model";
} }
import ietf-tls-server { import ietf-tls-server {
prefix tlss; prefix tlss;
reference reference
"RFC9645: YANG Groupings for TLS Clients and TLS Servers"; "RFC 9645: YANG Groupings for TLS Clients and TLS Servers";
} }
import ietf-tls-client { import ietf-tls-client {
prefix tlsc; prefix tlsc;
reference reference
"RFC9645: YANG Groupings for TLS Clients and TLS Servers"; "RFC 9645: YANG Groupings for TLS Clients and TLS Servers";
} }
import ietf-ospf { import ietf-ospf {
prefix ospf; prefix ospf;
reference reference
"RFC 9129: YANG Data Model for OSPF Protocol"; "RFC 9129: YANG Data Model for the OSPF Protocol";
} }
import ietf-isis { import ietf-isis {
prefix isis; prefix isis;
reference reference
"RFC 9130: YANG Data Model for IS-IS Protocol"; "RFC 9130: YANG Data Model for the IS-IS Protocol";
} }
organization organization
"IETF PCE (Path Computation Element) Working Group"; "IETF PCE (Path Computation Element) Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/pce/> "WG Web: <https://datatracker.ietf.org/wg/pce/>
WG List: <mailto:pce@ietf.org> WG List: <mailto:pce@ietf.org>
Editor: Dhruv Dhody Editor: Dhruv Dhody
<mailto:dhruv.ietf@gmail.com>"; <mailto:dhruv.ietf@gmail.com>";
description description
"The YANG module defines a generic configuration and "The YANG module defines a generic configuration and
operational model for Path Computation Element operational model for the Path Computation Element
Communication Protocol (PCEP). Communication Protocol (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) 2025 IETF Trust and the persons identified as Copyright (c) 2025 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
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
to the license terms contained in, the Revised BSD License the license terms contained in, the Revised BSD License set
set forth in Section 4.c of the IETF Trust's Legal Provisions 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 9826; see the
RFC itself for full legal notices. RFC itself for full legal notices.";
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.";
revision 2025-01-27 { revision 2025-07-24 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: A YANG Data Model for Path Computation "RFC 9826: A YANG Data Model for the Path Computation
Element Communications Protocol (PCEP)"; Element Communication Protocol (PCEP)";
} }
/* /*
* Typedefs * Typedefs
*/ */
typedef role { typedef role {
type enumeration { type enumeration {
enum unknown { enum unknown {
value 0; value 0;
description description
"An unknown role"; "An unknown role.";
} }
enum pcc { enum pcc {
value 1; value 1;
description description
"The role of a Path Computation Client"; "The role of a Path Computation Client (PCC).";
} }
enum pce { enum pce {
value 2; value 2;
description description
"The role of Path Computation Element"; "The role of a Path Computation Element (PCE).";
} }
enum pcc-and-pce { enum pcc-and-pce {
value 3; value 3;
description description
"The role of both Path Computation Client and "The role of both Path Computation Client (PCC) and
Path Computation Element"; Path Computation Element (PCE).";
} }
} }
description description
"The role of a PCEP speaker. "The role of a PCEP speaker.
Takes one of the following values Takes one of the following values:
- unknown(0): the role is not known, - unknown(0): the role is not known,
- pcc(1): the role is of a Path Computation - pcc(1): the role is of a Path Computation
Client (PCC), Client (PCC),
- pce(2): the role is of a Path Computation - pce(2): the role is of a Path Computation
Server (PCE), Server (PCE),
- pcc-and-pce(3): the role is of both a PCC and - pcc-and-pce(3): the role is of both a PCC and
a PCE."; a PCE.";
reference reference
"RFC 5440: Path Computation Element (PCE) Communication "RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)"; Protocol (PCEP)";
} }
typedef oper-status { typedef oper-status {
type enumeration { type enumeration {
enum oper-status-up { enum oper-status-up {
value 1; value 1;
description description
"The PCEP entity is active"; "The PCEP entity is active.";
} }
enum oper-status-down { enum oper-status-down {
value 2; value 2;
description description
"The PCEP entity is inactive"; "The PCEP entity is inactive.";
} }
enum oper-status-going-up { enum oper-status-going-up {
value 3; value 3;
description description
"The PCEP entity is activating"; "The PCEP entity is activating.";
} }
enum oper-status-going-down { enum oper-status-going-down {
value 4; value 4;
description description
"The PCEP entity is deactivating"; "The PCEP entity is deactivating.";
} }
enum oper-status-failed { enum oper-status-failed {
value 5; value 5;
description description
"The PCEP entity has failed and will recover "The PCEP entity has failed and will recover
when possible."; when possible.";
} }
enum oper-status-failed-perm { enum oper-status-failed-perm {
value 6; value 6;
description description
"The PCEP entity has failed and will not recover "The PCEP entity has failed and will not recover
without operator intervention"; without operator intervention.";
} }
} }
description description
"The operational status of the PCEP entity. "The operational status of the PCEP entity.
Takes one of the following values: Takes one of the following values:
- oper-status-up(1): Active, - oper-status-up(1): Active,
- oper-status-down(2): Inactive, - oper-status-down(2): Inactive,
- oper-status-going-up(3): Activating, - oper-status-going-up(3): Activating,
- oper-status-going-down(4): Deactivating, - oper-status-going-down(4): Deactivating,
- oper-status-failed(5): Failed, - oper-status-failed(5): Failed,
skipping to change at page 29, line 27 skipping to change at line 1326
reference reference
"RFC 5440: Path Computation Element (PCE) Communication "RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)"; Protocol (PCEP)";
} }
typedef initiator { typedef initiator {
type enumeration { type enumeration {
enum local { enum local {
value 1; value 1;
description description
"The local PCEP entity initiated the session"; "The local PCEP entity initiated the session.";
} }
enum remote { enum remote {
value 2; value 2;
description description
"The remote PCEP peer initiated the session"; "The remote PCEP peer initiated the session.";
} }
} }
description description
"The initiator of the session, that is, whether the TCP "The initiator of the session, that is, whether the TCP
connection was initiated by the local PCEP entity or connection was initiated by the local PCEP entity or
the remote peer. the remote peer.
Takes one of the following values: Takes one of the following values:
- local(1): Initiated locally, - local(1): Initiated locally,
- remote(2): Initiated remotely."; - remote(2): Initiated remotely.";
} }
skipping to change at page 30, line 40 skipping to change at line 1387
Protocol (PCEP)"; Protocol (PCEP)";
} }
typedef domain { typedef domain {
type union { type union {
type ospf:area-id-type; type ospf:area-id-type;
type isis:area-address; type isis:area-address;
type inet:as-number; type inet:as-number;
} }
description description
"The Domain Information"; "The domain information.";
} }
typedef operational-state { typedef operational-state {
type enumeration { type enumeration {
enum down { enum down {
value 0; value 0;
description description
"not active."; "Not active.";
} }
enum up { enum up {
value 1; value 1;
description description
"signalled."; "Signaled.";
} }
enum active { enum active {
value 2; value 2;
description description
"up and carrying traffic."; "Up and carrying traffic.";
} }
enum going-down { enum going-down {
value 3; value 3;
description description
"LSP is being torn down, resources are "LSP is being torn down; resources are
being released."; being released.";
} }
enum going-up { enum going-up {
value 4; value 4;
description description
"LSP is being signalled."; "LSP is being signaled.";
} }
} }
description description
"The operational status of the LSP"; "The operational status of the LSP.";
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";
} }
typedef sync-state { typedef sync-state {
type enumeration { type enumeration {
enum pending { enum pending {
value 0; value 0;
description description
skipping to change at page 32, line 17 skipping to change at line 1460
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";
} }
typedef hpce-role { typedef hpce-role {
type enumeration { type enumeration {
enum unknown { enum unknown {
value 0; value 0;
description description
"An unknown role"; "An unknown role.";
} }
enum child { enum child {
value 1; value 1;
description description
"The PCE is acting as child PCE."; "The PCE is acting as child PCE.";
} }
enum parent { enum parent {
value 2; value 2;
description description
"The PCE is acting as parent PCE."; "The PCE is acting as parent PCE.";
skipping to change at page 33, line 6 skipping to change at line 1497
"Support synchronized path computation."; "Support synchronized path computation.";
reference reference
"RFC 5440: Path Computation Element (PCE) Communication "RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)"; Protocol (PCEP)";
} }
feature gmpls { feature gmpls {
description description
"Support GMPLS."; "Support GMPLS.";
reference reference
"RFC 8779: PCEP extensions for GMPLS"; "RFC 8779: Path Computation Element Communication Protocol
(PCEP) Extensions for GMPLS";
} }
feature objective-function { feature objective-function {
description description
"Support OF as per RFC 5541."; "Support OF as per RFC 5541.";
reference reference
"RFC 5541: Encoding of Objective Functions in the Path "RFC 5541: Encoding of Objective Functions in the Path
Computation Element Communication Protocol (PCEP)"; Computation Element Communication Protocol (PCEP)";
} }
skipping to change at page 33, line 46 skipping to change at line 1538
description description
"Support Point-to-Multipoint (P2MP) as per RFC 8306."; "Support Point-to-Multipoint (P2MP) as per RFC 8306.";
reference reference
"RFC 8306: Extensions to the Path Computation Element "RFC 8306: Extensions to the Path Computation Element
Communication Protocol (PCEP) for Point-to-Multipoint Communication Protocol (PCEP) for Point-to-Multipoint
Traffic Engineering Label Switched Paths"; Traffic Engineering Label Switched Paths";
} }
feature stateful { feature stateful {
description description
"Support Stateful PCE as per RFC 8231."; "Support stateful PCE as per RFC 8231.";
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";
} }
feature sync-opt { feature sync-opt {
description description
"Support Stateful state synchronization optimization "Support stateful state synchronization optimization
as per RFC 8232"; as per RFC 8232.";
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";
} }
feature pce-initiated { feature pce-initiated {
description description
"Support PCE-Initiated LSP as per "Support PCE-initiated LSP as per
RFC 8281."; RFC 8281.";
reference reference
"RFC 8281: Path Computation Element Communication Protocol "RFC 8281: Path Computation Element Communication Protocol
(PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful
PCE Model"; PCE Model";
} }
feature tls { feature tls {
description description
"Support PCEP over TLS as per RFC 8253."; "Support PCEP over TLS as per RFC 8253.";
skipping to change at page 35, line 4 skipping to change at line 1592
"Support Association in PCEP."; "Support Association in PCEP.";
reference reference
"RFC 8697: Path Computation Element Communication Protocol "RFC 8697: Path Computation Element Communication Protocol
(PCEP) Extensions for Establishing Relationships between (PCEP) Extensions for Establishing Relationships between
Sets of Label Switched Paths (LSPs)"; Sets of Label Switched Paths (LSPs)";
} }
feature flowspec { feature flowspec {
description description
"Support Flow Specification in PCEP."; "Support Flow Specification in PCEP.";
reference reference
"RFC 9168: Path Computation Element Communication Protocol "RFC 9168: Path Computation Element Communication Protocol
(PCEP) Extension for Flow Specification"; (PCEP) Extension for Flow Specification";
} }
feature h-pce { feature h-pce {
description description
"Support Hierarchical-PCE (H-PCE)."; "Support Hierarchical PCE (H-PCE).";
reference reference
"RFC 8685: Path Computation Element Communication "RFC 8685: Path Computation Element Communication
Protocol (PCEP) Extensions for the Hierarchical Path Protocol (PCEP) Extensions for the Hierarchical Path
Computation Element (H-PCE) Architecture"; Computation Element (H-PCE) Architecture";
} }
feature inter-layer { feature inter-layer {
description description
"Support Inter-layer path computation."; "Support inter-layer path computation.";
reference reference
"RFC 8282: Extensions to the Path Computation "RFC 8282: Extensions to the Path Computation
Element Communication Protocol (PCEP) for Inter- Element Communication Protocol (PCEP) for Inter-
Layer MPLS and GMPLS Traffic Engineering"; Layer MPLS and GMPLS Traffic Engineering";
} }
/* /*
* Identities * Identities
*/ */
identity domain-type { identity domain-type {
description description
"Base Domain Type for PCE"; "Base domain type for PCE.";
} }
identity ospf-area { identity ospf-area {
base domain-type; base domain-type;
description description
"The OSPF area."; "The OSPF area.";
} }
identity isis-area { identity isis-area {
base domain-type; base domain-type;
skipping to change at page 36, line 4 skipping to change at line 1640
identity isis-area { identity isis-area {
base domain-type; base domain-type;
description description
"The IS-IS area."; "The IS-IS area.";
} }
identity autonomous-system { identity autonomous-system {
base domain-type; base domain-type;
description description
"The Autonomous System (AS)."; "The Autonomous System (AS).";
} }
identity lsp-error { identity lsp-error {
if-feature "stateful"; if-feature "stateful";
description description
"Base LSP error"; "Base LSP error.";
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 no-error-lsp-error { identity no-error-lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; base lsp-error;
description description
"No error, LSP is fine."; "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 unknown-lsp-error { identity unknown-lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; base lsp-error;
description description
"Unknown reason. LSP Error Code value = 1."; "Unknown reason. LSP Error Code value = 1.";
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 limit-lsp-error { identity limit-lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; base lsp-error;
description description
"Limit reached for PCE-controlled LSPs. LSP Error Code "Limit reached for PCE-controlled LSPs. LSP Error Code
value = 2."; value = 2.";
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 pending-lsp-error { identity pending-lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; base lsp-error;
description description
"Too many pending LSP update requests. LSP Error Code "Too many pending LSP update requests. LSP Error Code
value = 3."; value = 3.";
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 unacceptable-lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; base lsp-error;
description description
"Unacceptable parameters. LSP Error Code value = 4."; "Unacceptable parameters. LSP Error Code value = 4.";
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 internal-lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; base lsp-error;
description description
"Internal error. LSP Error Code value = 5."; "Internal error. LSP Error Code value = 5.";
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 admin-lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; base lsp-error;
description description
"LSP administratively brought down. LSP Error Code value "LSP administratively brought down. LSP Error Code value
= 6."; = 6.";
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 preempted-lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; base lsp-error;
description description
"LSP preempted. LSP Error Code value = 7."; "LSP preempted. LSP Error Code value = 7.";
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 rsvp-lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; base lsp-error;
description description
"RSVP signaling error. LSP Error Code value = 8."; "RSVP signaling error. LSP Error Code value = 8.";
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 path-protection { identity path-protection {
base te-types:association-type; base te-types:association-type;
description description
"Path Protection Association"; "Path Protection Association.";
reference reference
"RFC 8745: Path Computation Element Communication Protocol "RFC 8745: Path Computation Element Communication Protocol
(PCEP) Extensions for Associating Working and Protection (PCEP) Extensions for Associating Working and Protection
Label Switched Paths (LSPs) with Stateful PCE"; Label Switched Paths (LSPs) with Stateful PCE";
} }
identity disjoint { identity disjoint {
base te-types:association-type; base te-types:association-type;
description description
"Disjoint Association"; "Disjoint Association.";
reference reference
"RFC 8800: Path Computation Element Communication Protocol "RFC 8800: Path Computation Element Communication Protocol
(PCEP) Extension for Label Switched Path (LSP) Diversity (PCEP) Extension for Label Switched Path (LSP) Diversity
Constraint Signaling"; Constraint Signaling";
} }
identity policy { identity policy {
base te-types:association-type; base te-types:association-type;
description description
"Policy Association"; "Policy Association.";
reference reference
"RFC 9005: Path Computation Element Communication Protocol "RFC 9005: Path Computation Element Communication Protocol
(PCEP) Extension for Associating Policies and Label Switched (PCEP) Extension for Associating Policies and Label Switched
Paths (LSPs)"; Paths (LSPs)";
} }
identity virtual-network { identity virtual-network {
base te-types:association-type; base te-types:association-type;
description description
"Virtual Network (VN) Association"; "Virtual Network (VN) Association.";
reference reference
"RFC 9358: Path Computation Element Communication Protocol "RFC 9358: Path Computation Element Communication Protocol
(PCEP) Extensions for Establishing Relationships between (PCEP) Extensions for Establishing Relationships between
Sets of Label Switched Paths and Virtual Networks"; Sets of Label Switched Paths and Virtual Networks";
} }
/* /*
* Groupings * Groupings
*/ */
grouping domain { grouping domain {
description description
"This grouping specifies a Domain where the "This grouping specifies a domain where the
PCEP speaker has topology visibility."; PCEP speaker has topology visibility.";
leaf type { leaf type {
type identityref { type identityref {
base domain-type; base domain-type;
} }
description description
"The domain type."; "The domain type.";
} }
leaf domain { leaf domain {
type domain; type domain;
description description
"The domain Information."; "The domain information.";
} }
} }
grouping domain-info { grouping domain-info {
description description
"This grouping specifies all information which "This grouping specifies all information that
may be relevant to both PCC and PCE. may be relevant to both PCC and PCE.
This information corresponds to PCE auto-discovery This information corresponds to PCE auto-discovery
information. information.
The scope relates to either a local entity or a peer."; The scope relates to either a local entity or a peer.";
container domains { container domains {
description description
"The domain for the local PCEP entity or a peer."; "The domain for the local PCEP entity or a peer.";
list domain { list domain {
key "type domain"; key "type domain";
description description
skipping to change at page 42, line 37 skipping to change at line 1961
"Support for PCE-initiated LSP for P2MP."; "Support for PCE-initiated LSP for P2MP.";
reference reference
"RFC 8623: Stateful Path Computation Element "RFC 8623: Stateful Path Computation Element
(PCE) Protocol Extensions for Usage with (PCE) Protocol Extensions for Usage with
Point-to-Multipoint TE Label Switched Paths Point-to-Multipoint TE Label Switched Paths
(LSPs)"; (LSPs)";
} }
bit flowspec { bit flowspec {
if-feature "flowspec"; if-feature "flowspec";
description description
"Support for Flow specification."; "Support for Flow Specification.";
reference reference
"RFC 9168: Path Computation Element Communication "RFC 9168: Path Computation Element Communication
Protocol (PCEP) Extension for Flow Specification"; Protocol (PCEP) Extension for Flow Specification";
} }
bit tcp-ao { bit tcp-ao {
description description
"Support for The TCP Authentication Option "Support for the TCP Authentication Option
(TCP-AO)"; (TCP-AO).";
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP) Communication Protocol (PCEP)
RFC 5925: The TCP Authentication Option"; RFC 5925: The TCP Authentication Option";
} }
bit tls { bit tls {
if-feature "tls"; if-feature "tls";
description description
"Support for TLS"; "Support for TLS.";
reference reference
"RFC 8253: PCEPS: Usage of TLS to Provide a "RFC 8253: PCEPS: Usage of TLS to Provide a
Secure Transport for the Path Computation Secure Transport for the Path Computation
Element Communication Protocol (PCEP)"; Element Communication Protocol (PCEP)";
} }
} }
description description
"The bits string indicating the capabilities"; "The bits string indicating the capabilities.";
reference reference
"IANA IGP: Path Computation Element (PCE) Capability "IANA IGP: Path Computation Element (PCE) Capability
Flags in Interior Gateway Protocol (IGP) Parameters Flags in Interior Gateway Protocol (IGP) Parameters
RFC 5088: OSPF Protocol Extensions for Path RFC 5088: OSPF Protocol Extensions for Path
Computation Element (PCE) Discovery Computation Element (PCE) Discovery
RFC 5089: IS-IS Protocol Extensions for Path RFC 5089: IS-IS Protocol Extensions for Path
Computation Element (PCE) Discovery Computation Element (PCE) Discovery
RFC 9353: IGP Extension for Path Computation Element RFC 9353: IGP Extension for Path Computation Element
Communication Protocol (PCEP) Security Capability Communication Protocol (PCEP) Security Capability
Support in PCE Discovery (PCED)"; Support in PCE Discovery (PCED)";
skipping to change at page 43, line 45 skipping to change at line 2017
Protocol (PCEP) Extensions for PCE-Initiated LSP Protocol (PCEP) Extensions for PCE-Initiated LSP
Setup in a Stateful PCE Model"; Setup in a Stateful PCE Model";
} }
leaf include-db-ver { leaf include-db-ver {
if-feature "stateful"; if-feature "stateful";
if-feature "sync-opt"; if-feature "sync-opt";
type boolean; type boolean;
default "true"; default "true";
description description
"Support inclusion of LSP-DB-VERSION "Support inclusion of LSP-DB-VERSION
in LSP object"; in LSP object.";
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";
} }
leaf trigger-resync { leaf trigger-resync {
if-feature "stateful"; if-feature "stateful";
if-feature "sync-opt"; if-feature "sync-opt";
type boolean; type boolean;
default "true"; default "true";
description description
"Support PCE-triggered re-synchronization"; "Support PCE-triggered resynchronization.";
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";
} }
leaf trigger-initial-sync { leaf trigger-initial-sync {
if-feature "stateful"; if-feature "stateful";
if-feature "sync-opt"; if-feature "sync-opt";
type boolean; type boolean;
default "true"; default "true";
description description
"PCE-triggered initial synchronization"; "PCE-triggered initial synchronization.";
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";
} }
leaf incremental-sync { leaf incremental-sync {
if-feature "stateful"; if-feature "stateful";
if-feature "sync-opt"; if-feature "sync-opt";
type boolean; type boolean;
default "true"; default "true";
description description
"Support incremental (delta) sync"; "Support incremental (delta) synchronization.";
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";
} }
container sr-mpls { container sr-mpls {
if-feature "sr-mpls"; if-feature "sr-mpls";
description description
"If segment routing for MPLS is supported at the local "If segment routing for MPLS is supported at the local
entity or a peer."; entity or a peer.";
reference reference
"RFC 8664: Path Computation Element Communication Protocol "RFC 8664: Path Computation Element Communication Protocol
(PCEP) Extensions for Segment Routing"; (PCEP) Extensions for Segment Routing";
leaf enabled { leaf enabled {
type boolean; type boolean;
default "false"; default "false";
description description
"Set to true if SR-MPLS is enabled"; "Set to true if SR-MPLS is enabled.";
} }
leaf no-msd-limit { leaf no-msd-limit {
type boolean; type boolean;
default "false"; default "false";
description description
"True indicates no limit on MSD, the "True indicates no limit on Maximum SID Depth (MSD); the
leaf msd is ignored"; leaf msd is ignored.";
} }
leaf nai { leaf nai {
type boolean; type boolean;
default "false"; default "false";
description description
"True indicates the capability to resolve Node or "True indicates the capability to resolve Node or
Adjacency Identifier (NAI) to Segment Adjacency Identifier (NAI) to Segment
Identifier (SID)"; Identifier (SID).";
} }
} }
container stateful-gmpls { container stateful-gmpls {
if-feature "stateful"; if-feature "stateful";
if-feature "gmpls"; if-feature "gmpls";
description description
"If Stateful GMPLS is supported for a local entity "If stateful GMPLS is supported for a local entity
or a peer"; or a peer.";
reference reference
"RFC 8779: Path Computation Element "RFC 8779: Path Computation Element Communication Protocol
Communication Protocol (PCEP) Extensions (PCEP) Extensions for GMPLS";
for Stateful PCE Usage in GMPLS-controlled
Networks";
leaf enabled { leaf enabled {
type boolean; type boolean;
default "false"; default "false";
description description
"Set to true if Stateful GMPLS is enabled"; "Set to true if stateful GMPLS is enabled.";
} }
} }
leaf inter-layer { leaf inter-layer {
if-feature "inter-layer"; if-feature "inter-layer";
type boolean; type boolean;
default "false"; default "false";
description description
"If inter-layer path computation is supported for "If inter-layer path computation is supported for
local entity or a peer"; local entity or a peer.";
reference reference
"RFC 8282: Extensions to the Path Computation "RFC 8282: Extensions to the Path Computation
Element Communication Protocol (PCEP) for Inter- Element Communication Protocol (PCEP) for Inter-
Layer MPLS and GMPLS Traffic Engineering"; Layer MPLS and GMPLS Traffic Engineering";
} }
container h-pce { container h-pce {
if-feature "h-pce"; if-feature "h-pce";
description description
"If Hierarchical PCE (H-PCE) is supported for local "If Hierarchical PCE (H-PCE) is supported for local
entity or a peer"; entity or a peer.";
reference reference
"RFC 8685: Path Computation Element Communication "RFC 8685: Path Computation Element Communication
Protocol (PCEP) Extensions for the Hierarchical Path Protocol (PCEP) Extensions for the Hierarchical Path
Computation Element (H-PCE) Architecture"; Computation Element (H-PCE) Architecture";
leaf enabled { leaf enabled {
type boolean; type boolean;
default "false"; default "false";
description description
"Set to true if H-PCE is enabled"; "Set to true if H-PCE is enabled.";
} }
leaf stateful { leaf stateful {
if-feature "stateful"; if-feature "stateful";
type boolean; type boolean;
default "false"; default "false";
description description
"Set to true if Stateful H-PCE is enabled"; "Set to true if stateful H-PCE is enabled.";
reference reference
"RFC 8751: Hierarchical Stateful Path Computation "RFC 8751: Hierarchical Stateful Path Computation
Element (PCE)"; Element (PCE)";
} }
leaf role { leaf role {
when "../../../role = 'pce'" when "../../../role = 'pce'"
+ "or " + "or "
+ "../../../role = 'pcc-and-pce'" { + "../../../role = 'pcc-and-pce'" {
description description
"These fields are applicable when the role is PCE."; "These fields are applicable when the role is PCE.";
skipping to change at page 46, line 43 skipping to change at line 2156
description description
"The H-PCE role of the PCE."; "The H-PCE role of the PCE.";
} }
} }
} }
leaf msd { leaf msd {
if-feature "sr-mpls"; if-feature "sr-mpls";
type uint8; type uint8;
config false; config false;
description description
"Maximum SID Depth for SR-MPLS i.e. the label stack depth "Maximum SID Depth (MSD) for SR-MPLS (i.e., the label stack
that a PCC is capable of imposing on a packet."; depth that a PCC is capable of imposing on a packet).";
reference reference
"RFC 8664: Path Computation Element Communication Protocol "RFC 8664: Path Computation Element Communication Protocol
(PCEP) Extensions for Segment Routing"; (PCEP) Extensions for Segment Routing";
} }
} }
grouping pce-info { grouping pce-info {
description description
"This grouping specifies all PCE information "This grouping specifies all PCE information
which may be relevant to the PCE selection. that may be relevant to the PCE selection.
This information corresponds to PCE auto-discovery This information corresponds to PCE auto-discovery
information."; information.";
container scope { container scope {
description description
"This container defines PCE path computation scope "This container defines PCE path computation scope
information which may be relevant to PCE selection. information that may be relevant to PCE selection.
This information corresponds to PCE auto-discovery This information corresponds to PCE auto-discovery
information."; information.";
leaf path-scope { leaf path-scope {
type bits { type bits {
bit intra-area-scope { bit intra-area-scope {
description description
"PCE can compute intra-area paths (L bit)."; "PCE can compute intra-area paths (L bit).";
} }
bit inter-area-scope { bit inter-area-scope {
description description
"PCE can compute inter-area paths (R bit)."; "PCE can compute inter-area paths (R bit).";
} }
bit inter-area-scope-default { bit inter-area-scope-default {
description description
"PCE can act as a default PCE for inter-area "PCE can act as a default PCE for inter-area
path computation. (Rd bit)"; path computation (Rd bit).";
} }
bit inter-as-scope { bit inter-as-scope {
description description
"PCE can compute inter-AS paths (S bit)."; "PCE can compute inter-AS paths (S bit).";
} }
bit inter-as-scope-default { bit inter-as-scope-default {
description description
"PCE can act as a default PCE for inter-AS "PCE can act as a default PCE for inter-AS
path computation (Sd bit)."; path computation (Sd bit).";
} }
bit inter-layer-scope { bit inter-layer-scope {
description description
"PCE can compute inter-layer paths (Y bit)."; "PCE can compute inter-layer paths (Y bit).";
} }
} }
description description
"The field corresponding to the path scope bits"; "The field corresponding to the path scope bits.";
} }
leaf intra-area-pref { leaf intra-area-pref {
type uint8 { type uint8 {
range "0..7"; range "0..7";
} }
description description
"The PCE's preference for intra-area TE LSP "The PCE's preference for intra-area TE LSP
computation (PrefL field). Where 7 reflects computation (PrefL field), where 7 reflects
the highest preference."; the highest preference.";
} }
leaf inter-area-pref { leaf inter-area-pref {
type uint8 { type uint8 {
range "0..7"; range "0..7";
} }
description description
"The PCE's preference for inter-area TE LSP "The PCE's preference for inter-area TE LSP
computation (PrefR field). Where 7 reflects computation (PrefR field), where 7 reflects
the highest preference."; the highest preference.";
} }
leaf inter-as-pref { leaf inter-as-pref {
type uint8 { type uint8 {
range "0..7"; range "0..7";
} }
description description
"The PCE's preference for inter-AS TE LSP "The PCE's preference for inter-AS TE LSP
computation (PrefS field). Where 7 reflects computation (PrefS field), where 7 reflects
the highest preference."; the highest preference.";
} }
leaf inter-layer-pref { leaf inter-layer-pref {
type uint8 { type uint8 {
range "0..7"; range "0..7";
} }
description description
"The PCE's preference for inter-layer TE LSP "The PCE's preference for inter-layer TE LSP
computation (PrefY field). Where 7 reflects computation (PrefY field), where 7 reflects
the highest preference."; the highest preference.";
} }
reference reference
"RFC 5088: OSPF Protocol Extensions for Path "RFC 5088: OSPF Protocol Extensions for Path
Computation Element (PCE) Discovery Computation Element (PCE) Discovery
RFC 5089: IS-IS Protocol Extensions for Path RFC 5089: IS-IS Protocol Extensions for Path
Computation Element (PCE) Discovery"; Computation Element (PCE) Discovery";
} }
container neighbour-domains { container neighbor-domains {
description description
"The list of neighbour PCE-Domain "The list of neighbor PCE domains
toward which a PCE can compute toward which a PCE can compute
paths"; paths.";
list domain { list domain {
key "type domain"; key "type domain";
description description
"The neighbour domain."; "The neighbor domain.";
uses domain { uses domain {
description description
"The PCE neighbour domain."; "The PCE neighbor domain.";
} }
} }
} }
} }
grouping notification-instance-hdr { grouping notification-instance-hdr {
description description
"This group describes common instance-specific data "This group describes common instance-specific data
for notifications."; for notifications.";
leaf peer-addr { leaf peer-addr {
type leafref { type leafref {
path "/pcep/entity/peers/peer/addr"; path "/pcep/entity/peers/peer/addr";
} }
description description
"Reference to peer address"; "Reference to peer address.";
} }
} }
grouping notification-session-hdr { grouping notification-session-hdr {
description description
"This group describes common session instance-specific "This group describes common session instance-specific
data for notifications."; data for notifications.";
uses notification-instance-hdr; uses notification-instance-hdr;
leaf session-initiator { leaf session-initiator {
type leafref { type leafref {
path "/pcep/entity/peers/peer[addr=current()/../peer-addr]/" path "/pcep/entity/peers/peer[addr=current()/../peer-addr]/"
+ "sessions/session/initiator"; + "sessions/session/initiator";
} }
description description
"Reference to pcep session initiator leaf"; "Reference to pcep session initiator leaf.";
} }
} }
grouping of-list { grouping of-list {
description description
"List of Objective Functions (OF)"; "List of Objective Functions (OF).";
reference reference
"RFC 5541: Encoding of Objective Functions in the Path "RFC 5541: Encoding of Objective Functions in the Path
Computation Element Communication Protocol (PCEP)"; Computation Element Communication Protocol (PCEP)";
list objective-function { list objective-function {
key "of"; key "of";
description description
"The list of authorized OF"; "The list of authorized OF.";
leaf of { leaf of {
type identityref { type identityref {
base te-types:objective-function-type; base te-types:objective-function-type;
} }
description description
"The OF authorized"; "The OF authorized.";
} }
} }
} }
grouping auth { grouping auth {
description description
"The Authentication options"; "The authentication options.";
container auth { container auth {
description description
"The Authentication options"; "The authentication options.";
choice auth-type-selection { choice auth-type-selection {
description description
"Options for expressing authentication "Options for expressing authentication
setting."; setting.";
case auth-key-chain { case auth-key-chain {
leaf key-chain { leaf key-chain {
type key-chain:key-chain-ref; type key-chain:key-chain-ref;
description description
"key-chain name."; "Key-chain name.";
} }
} }
case auth-key { case auth-key {
leaf crypto-algorithm { leaf crypto-algorithm {
type identityref { type identityref {
base key-chain:crypto-algorithm; base key-chain:crypto-algorithm;
} }
mandatory true; mandatory true;
description description
"Cryptographic algorithm associated "Cryptographic algorithm associated
with key."; with key.";
} }
choice key-string-style { choice key-string-style {
description description
"Key string styles"; "Key string styles.";
case keystring { case keystring {
leaf keystring { leaf keystring {
nacm:default-deny-all; nacm:default-deny-all;
type string; type string;
description description
"Key string in ASCII format."; "Key string in ASCII format.";
} }
} }
case hexadecimal { case hexadecimal {
if-feature "key-chain:hex-key-string"; if-feature "key-chain:hex-key-string";
leaf hexadecimal-string { leaf hexadecimal-string {
nacm:default-deny-all; nacm:default-deny-all;
type yang:hex-string; type yang:hex-string;
description description
"Key in hexadecimal string format. When "Key in hexadecimal string format. When
compared to ASCII, specification in compared to ASCII, specification in
hexadecimal affords greater key entropy hexadecimal affords greater key entropy
with the same number of internal with the same number of internal
key-string octets. Additionally, it key-string octets. Additionally, it
discourages usage of well-known words or discourages usage of well-known words or
numbers."; numbers.";
} }
} }
} }
} }
case auth-tls { case auth-tls {
if-feature "tls"; if-feature "tls";
choice role { choice role {
description description
"The role of the local entity"; "The role of the local entity.";
case server { case server {
container tls-server { container tls-server {
uses tlss:tls-server-grouping { uses tlss:tls-server-grouping {
description description
"Server TLS information."; "Server TLS information.";
} }
description description
"TLS related information"; "TLS-related information.";
} }
} }
case client { case client {
container tls-client { container tls-client {
uses tlsc:tls-client-grouping { uses tlsc:tls-client-grouping {
description description
"Client TLS information."; "Client TLS information.";
} }
description description
"TLS related information"; "TLS-related information.";
} }
} }
} }
} }
} }
} }
} }
/* /*
* Configuration data nodes * Configuration data nodes
skipping to change at page 52, line 18 skipping to change at line 2420
container entity { container entity {
description description
"The configured PCEP entity on the device."; "The configured PCEP entity on the device.";
leaf-list addr { leaf-list addr {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
min-elements 1; min-elements 1;
ordered-by user; ordered-by user;
description description
"The local Internet address of this PCEP entity. "The local Internet address of this PCEP entity.
If operating as a PCE server, the PCEP entity If operating as a PCE server, the PCEP entity
listens on this address. If operating as a PCC, listens on this address. If operating as a PCC,
the PCEP entity binds outgoing TCP connections the PCEP entity binds outgoing TCP connections
to this address based on the address family. It is to this address based on the address family. It is
possible for the PCEP entity to operate both as a possible for the PCEP entity to operate as both a
PCC and a PCE Server, in which case it uses this PCC and a PCE server, in which case it uses this
address both to listen for incoming TCP connections address both to listen for incoming TCP connections
and to bind outgoing TCP connections."; and to bind outgoing TCP connections.";
} }
leaf enabled { leaf enabled {
type boolean; type boolean;
default "true"; default "true";
description description
"The administrative status of this PCEP "The administrative status of this PCEP
Entity; set to true when UP."; entity; set to true when UP.";
} }
leaf role { leaf role {
type role; type role;
must '(. != "unknown")' { must '(. != "unknown")' {
error-message "The PCEP entity role cannot be unknown"; error-message "The PCEP entity role cannot be unknown";
} }
mandatory true; mandatory true;
description description
"The role that this entity can play. "The role that this entity can play.
Takes one of the following values: Takes one of the following values:
- pcc(1): this PCEP Entity is a PCC, - pcc(1): this PCEP entity is a PCC,
- pce(2): this PCEP Entity is a PCE, - pce(2): this PCEP entity is a PCE,
- pcc-and-pce(3): this PCEP Entity is both - pcc-and-pce(3): this PCEP entity is both
a PCC and a PCE."; a PCC and a PCE.";
} }
leaf description { leaf description {
type string; type string;
description description
"Description of the PCEP entity configured "Description of the PCEP entity configured
by the user"; by the user.";
} }
leaf speaker-entity-id { leaf speaker-entity-id {
if-feature "sync-opt"; if-feature "sync-opt";
type string; type string;
description description
"The Speaker Entity Identifier"; "The Speaker Entity Identifier.";
reference reference
"RFC 8232: Optimizations of Label Switched "RFC 8232: Optimizations of Label Switched
Path State Synchronization Procedures for Path State Synchronization Procedures for
a Stateful PCE"; a Stateful PCE";
} }
leaf admin-status { leaf admin-status {
type boolean; type boolean;
default "true"; default "true";
description description
"The administrative status of this PCEP Entity. "The administrative status of this PCEP entity.
The value true represents admin status as up. The value true represents admin status as up.
This is the desired operational status as This is the desired operational status as
currently set by an operator or by default in currently set by an operator or by default in
the implementation. The value of oper-status the implementation. The value of oper-status
represents the current status of an attempt to represents the current status of an attempt to
reach this desired status."; reach this desired status.";
} }
leaf index { leaf index {
type uint32; type uint32;
config false; config false;
description description
"The index of the operational PECP entity"; "The index of the operational PECP entity.";
} }
leaf oper-status { leaf oper-status {
type oper-status; type oper-status;
config false; config false;
description description
"The operational status of the PCEP entity. "The operational status of the PCEP entity.
Takes one of the following values: Takes one of the following values:
- oper-status-up(1): the PCEP entity is active, - oper-status-up(1): the PCEP entity is active,
- oper-status-down(2): the PCEP entity is inactive, - oper-status-down(2): the PCEP entity is inactive,
- oper-status-going-up(3): the PCEP entity is - oper-status-going-up(3): the PCEP entity is
skipping to change at page 54, line 5 skipping to change at line 2503
- oper-status-going-down(4): the PCEP entity is - oper-status-going-down(4): the PCEP entity is
deactivating, deactivating,
- oper-status-failed(5): the PCEP entity has - oper-status-failed(5): the PCEP entity has
failed and will recover when possible, failed and will recover when possible,
- oper-status-failed-perm(6): the PCEP entity - oper-status-failed-perm(6): the PCEP entity
has failed and will not recover without has failed and will not recover without
operator intervention."; operator intervention.";
} }
uses domain-info { uses domain-info {
description description
"Local PCEP entity information"; "Local PCEP entity information.";
} }
uses auth { uses auth {
description description
"Local authorization and security parameters"; "Local authorization and security parameters.";
} }
container pce-info { container pce-info {
when "../role = 'pce'" when "../role = 'pce'"
+ "or " + "or "
+ "../role = 'pcc-and-pce'" { + "../role = 'pcc-and-pce'" {
description description
"These fields are applicable when the role is PCE."; "These fields are applicable when the role is PCE.";
} }
description description
"The Local PCE Entity PCE information"; "The local PCE entity PCE information.";
uses pce-info { uses pce-info {
description description
"Local PCE information"; "Local PCE information.";
} }
container path-key { container path-key {
if-feature "path-key"; if-feature "path-key";
description description
"Path-Key Configuration"; "Path-key configuration.";
reference reference
"RFC 5520: Preserving Topology Confidentiality in "RFC 5520: Preserving Topology Confidentiality in
Inter-Domain Path Computation Using a Path-Key Inter-Domain Path Computation Using a Path-Key-
-Based Mechanism"; Based Mechanism";
leaf enabled { leaf enabled {
type boolean; type boolean;
default "false"; default "false";
description description
"Enabled or Disabled; set to true when Enabled"; "Enabled or disabled; set to true when enabled.";
} }
leaf discard-timer { leaf discard-timer {
type uint32; type uint32;
units "minutes"; units "minutes";
default "10"; default "10";
description description
"A timer to discard unwanted path-keys"; "A timer to discard unwanted path-keys.";
} }
leaf reuse-time { leaf reuse-time {
type uint32 { type uint32 {
range "30..max"; range "30..max";
} }
units "minutes"; units "minutes";
default "30"; default "30";
description description
"A time after which the path-keys could be reused"; "A time after which the path-keys could be reused.";
} }
leaf pce-id { leaf pce-id {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"PCE Address to be used in each Path-Key Subobject "PCE address to be used in each Path-Key Subobject
(PKS), same as local PCE entity IP address"; (PKS), same as local PCE entity IP address.";
} }
} }
} }
leaf connect-timer { leaf connect-timer {
type uint16 { type uint16 {
range "1..max"; range "1..max";
} }
units "seconds"; units "seconds";
default "60"; default "60";
description description
"The time in seconds that the PCEP entity will wait "The time in seconds that the PCEP entity will wait
to establish a TCP connection with a peer. If a to establish a TCP connection with a peer. If a
TCP connection is not established within this time TCP connection is not established within this time,
then PCEP aborts the session setup attempt."; then PCEP aborts the session setup attempt.";
reference reference
"RFC 5440: Path Computation Element (PCE) Communication "RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)"; Protocol (PCEP)";
} }
leaf connect-max-retry { leaf connect-max-retry {
type uint32; type uint32;
default "5"; default "5";
description description
"The maximum number of times the system tries to "The maximum number of times the system tries to
skipping to change at page 56, line 33 skipping to change at line 2627
Protocol (PCEP)"; Protocol (PCEP)";
} }
leaf open-wait-timer { leaf open-wait-timer {
type uint16; type uint16;
units "seconds"; units "seconds";
config false; config false;
description description
"The time in seconds that the PCEP entity will wait "The time in seconds that the PCEP entity will wait
to receive an Open message from a peer after the to receive an Open message from a peer after the
TCP connection has come up. TCP connection has come up.
If no Open message is received within this time then If no Open message is received within this time, then
PCEP terminates the TCP connection and deletes the PCEP terminates the TCP connection and deletes the
associated sessions."; associated sessions.";
reference reference
"RFC 5440: Path Computation Element (PCE) Communication "RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)"; Protocol (PCEP)";
} }
leaf keep-wait-timer { leaf keep-wait-timer {
type uint16; type uint16;
units "seconds"; units "seconds";
config false; config false;
description description
"The time in seconds that the PCEP entity will wait "The time in seconds that the PCEP entity will wait
to receive a Keepalive or PCErr message from a peer to receive a Keepalive or PCErr message from a peer
during session initialization after receiving an during session initialization after receiving an
Open message. If no Keepalive or PCErr message is Open message. If no Keepalive or PCErr message is
received within this time then PCEP terminates the received within this time, then PCEP terminates the
TCP connection and deletes the associated TCP connection and deletes the associated
sessions."; sessions.";
reference reference
"RFC 5440: Path Computation Element (PCE) Communication "RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)"; Protocol (PCEP)";
} }
leaf keepalive-timer { leaf keepalive-timer {
type uint8; type uint8;
units "seconds"; units "seconds";
default "30"; default "30";
description description
"The Keepalive timer that this PCEP "The Keepalive timer that this PCEP
entity will propose in the initial Open message of entity will propose in the initial Open message of
each session it is involved in. This is the each session it is involved in. This is the
maximum time between two consecutive messages sent maximum time between two consecutive messages sent
to a peer. Zero means that the PCEP entity prefers to a peer. Zero means that the PCEP entity prefers
not to send Keepalives at all. not to send Keepalives at all.
Note that the actual Keepalive transmission Note that the actual Keepalive transmission
intervals, in either direction of an active PCEP intervals, in either direction of an active PCEP
session, are determined by negotiation between the session, are determined by negotiation between the
peers as specified by RFC 5440, and so may differ peers as specified by RFC 5440 and thus may differ
from this configured value."; from this configured value.";
reference reference
"RFC 5440: Path Computation Element (PCE) Communication "RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)"; Protocol (PCEP)";
} }
leaf dead-timer { leaf dead-timer {
type uint8; type uint8;
units "seconds"; units "seconds";
must '(. > ../keepalive-timer)' { must '(. > ../keepalive-timer)' {
error-message "The DeadTimer must be " error-message "The DeadTimer must be "
+ "larger than the Keepalive timer"; + "larger than the Keepalive timer";
} }
default "120"; default "120";
description description
"The DeadTimer that this PCEP entity will propose "The DeadTimer that this PCEP entity will propose
in the initial Open message of each session it is in the initial Open message of each session it is
involved in. This is the time after which a peer involved in. This is the time after which a peer
should declare a session down if it does not should declare a session down if it does not
receive any PCEP messages. Zero suggests that the receive any PCEP messages. Zero suggests that the
peer does not run a DeadTimer at all."; peer does not run a DeadTimer at all.";
reference reference
"RFC 5440: Path Computation Element (PCE) Communication "RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)"; Protocol (PCEP)";
} }
leaf allow-negotiation { leaf allow-negotiation {
type boolean; type boolean;
default "true"; default "true";
description description
"Whether the PCEP entity will permit the negotiation "Whether the PCEP entity will permit the negotiation
of session parameters."; of session parameters.";
} }
leaf max-keepalive-timer { leaf max-keepalive-timer {
type uint8; type uint8;
units "seconds"; units "seconds";
mandatory true; mandatory true;
description description
"The maximum value that this PCEP entity will "The maximum value that this PCEP entity will
accept from a peer for the interval between accept from a peer for the interval between
Keepalive transmissions. Zero means that the PCEP Keepalive transmissions. Zero means that the PCEP
entity will allow no Keepalive transmission at entity will allow no Keepalive transmission at
all."; all.";
} }
leaf max-dead-timer { leaf max-dead-timer {
type uint8; type uint8;
units "seconds"; units "seconds";
mandatory true; mandatory true;
description description
"The maximum value in seconds, that this PCEP "The maximum value in seconds that this PCEP
entity will accept from a peer for the DeadTimer. entity will accept from a peer for the DeadTimer.
Zero means that the PCEP entity will allow not Zero means that the PCEP entity will allow not
running a DeadTimer."; running a DeadTimer.";
} }
leaf min-keepalive-timer { leaf min-keepalive-timer {
type uint8; type uint8;
units "seconds"; units "seconds";
mandatory true; mandatory true;
description description
"The minimum value in seconds, that this PCEP "The minimum value in seconds that this PCEP
entity will accept for the interval between entity will accept for the interval between
Keepalive transmissions. Zero means that the Keepalive transmissions. Zero means that the
PCEP entity insists on no Keepalive PCEP entity insists on no Keepalive
transmission at all."; transmission at all.";
} }
leaf min-dead-timer { leaf min-dead-timer {
type uint8; type uint8;
units "seconds"; units "seconds";
mandatory true; mandatory true;
description description
"The minimum value in seconds, that this PCEP "The minimum value in seconds that this PCEP
entity will accept for the DeadTimer. Zero entity will accept for the DeadTimer. Zero
means that the PCEP entity insists on not means that the PCEP entity insists on not
running a DeadTimer."; running a DeadTimer.";
} }
leaf sync-timer { leaf sync-timer {
if-feature "svec"; if-feature "svec";
type uint16; type uint16;
units "seconds"; units "seconds";
default "60"; default "60";
description description
"The value of SyncTimer in seconds is used in the "The value of SyncTimer in seconds is used in the
case of synchronized path computation request case of synchronized path computation request
using the SVEC object. If after the expiration of using the SVEC object. If after the expiration of
the SyncTimer all the path computation requests the SyncTimer all the path computation requests
have not been received, a protocol error is have not been received, a protocol error is
triggered and the PCE must cancel the whole set triggered, and the PCE must cancel the whole set
of path computation requests. of path computation requests.
Zero means that the PCEP entity does not use the Zero means that the PCEP entity does not use the
SyncTimer."; SyncTimer.";
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)"; Communication Protocol (PCEP)";
} }
leaf request-timer { leaf request-timer {
type uint16 { type uint16 {
range "1..max"; range "1..max";
skipping to change at page 60, line 23 skipping to change at line 2809
per minute before terminating the session."; per minute before terminating the session.";
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)"; Communication Protocol (PCEP)";
} }
leaf pcep-notification-max-rate { leaf pcep-notification-max-rate {
type uint32; type uint32;
mandatory true; mandatory true;
description description
"This variable indicates the maximum number of "This variable indicates the maximum number of
notifications issued per second. If events notifications issued per second. If events
occur more rapidly, the implementation may occur more rapidly, the implementation may
simply fail to emit these notifications during simply fail to emit these notifications during
that period, or may queue them until an that period or may queue them until an
appropriate time. A value of 0 means no appropriate time. A value of 0 means no
notifications are emitted and all should be notifications are emitted and all should be
discarded (that is, not queued)."; discarded (that is, not queued).";
} }
container stateful-parameter { container stateful-parameter {
if-feature "stateful"; if-feature "stateful";
description description
"The configured stateful PCE parameters"; "The configured stateful PCE parameters.";
leaf state-timeout { leaf state-timeout {
type uint32; type uint32;
units "seconds"; units "seconds";
mandatory true; mandatory true;
description description
"When a PCEP session is terminated, a PCC "When a PCEP session is terminated, a PCC
waits for this time period before flushing waits for this time period before flushing
LSP state associated with that PCEP session LSP state associated with that PCEP session
and reverting to operator-defined default and reverting to operator-defined default
parameters or behaviours. The max value parameters or behaviors. The max value
represents infinity."; represents infinity.";
reference reference
"RFC 8231: Path Computation Element Communication "RFC 8231: Path Computation Element Communication
Protocol (PCEP) Extensions for Stateful PCE"; Protocol (PCEP) Extensions for Stateful PCE";
} }
leaf redelegation-timeout { leaf redelegation-timeout {
when "../../role = 'pcc'" when "../../role = 'pcc'"
+ "or " + "or "
+ "../../role = 'pcc-and-pce'" { + "../../role = 'pcc-and-pce'" {
description description
"This field is applicable when the role is "This field is applicable when the role is
PCC"; PCC.";
} }
type uint32; type uint32;
units "seconds"; units "seconds";
must '(. < ../state-timeout)' { must '(. < ../state-timeout)' {
error-message "The Redelegation Timeout must be " error-message "The Redelegation Timeout must be "
+ "less than the State Timeout"; + "less than the State Timeout";
} }
mandatory true; mandatory true;
description description
"When a PCEP session is terminated, a PCC "When a PCEP session is terminated, a PCC
skipping to change at page 61, line 34 skipping to change at line 2868
reference reference
"RFC 8231: Path Computation Element Communication "RFC 8231: Path Computation Element Communication
Protocol (PCEP) Extensions for Stateful PCE"; Protocol (PCEP) Extensions for Stateful PCE";
} }
leaf rpt-non-pcep-lsp { leaf rpt-non-pcep-lsp {
when "../../role = 'pcc'" when "../../role = 'pcc'"
+ "or " + "or "
+ "../../role = 'pcc-and-pce'" { + "../../role = 'pcc-and-pce'" {
description description
"This field is applicable when the role is "This field is applicable when the role is
PCC"; PCC.";
} }
type boolean; type boolean;
default "true"; default "true";
description description
"If set, a PCC reports LSPs that are not "If set, a PCC reports LSPs that are not
controlled by any PCE (for example, LSPs controlled by any PCE (for example, LSPs
that are statically configured at the that are statically configured at the
PCC). "; PCC).";
} }
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";
} }
container of-list { container of-list {
when "../role = 'pce'" when "../role = 'pce'"
+ "or " + "or "
+ "../role = 'pcc-and-pce'" { + "../role = 'pcc-and-pce'" {
description description
"These fields are applicable when the role is "These fields are applicable when the role is
PCE"; PCE.";
} }
if-feature "objective-function"; if-feature "objective-function";
uses of-list; uses of-list;
description description
"The authorized OF-List at PCE for all peers"; "The authorized OF-List at PCE for all peers.";
} }
container lsp-db { container lsp-db {
if-feature "stateful"; if-feature "stateful";
config false; config false;
description description
"The LSP-DB"; "The LSP-DB.";
leaf db-ver { leaf db-ver {
when "../../role = 'pcc'" when "../../role = 'pcc'"
+ "or " + "or "
+ "../../role = 'pcc-and-pce'" { + "../../role = 'pcc-and-pce'" {
description description
"This field is applicable when the role is "This field is applicable when the role is
PCC"; PCC.";
} }
if-feature "sync-opt"; if-feature "sync-opt";
type uint64; type uint64;
description description
"The LSP State Database Version Number"; "The LSP State Database Version Number.";
} }
list association-list { list association-list {
if-feature "association"; if-feature "association";
key "type id source global-source extended-id"; key "type id source global-source extended-id";
description description
"List of all PCEP associations"; "List of all PCEP associations.";
reference reference
"RFC 8697: Path Computation Element Communication "RFC 8697: Path Computation Element Communication
Protocol (PCEP) Extensions for Establishing Protocol (PCEP) Extensions for Establishing
Relationships between Sets of Label Switched Relationships between Sets of Label Switched
Paths (LSPs)"; Paths (LSPs)";
leaf type { leaf type {
type identityref { type identityref {
base te-types:association-type; base te-types:association-type;
} }
description description
"The PCEP Association Type"; "The PCEP Association Type.";
reference reference
"IANA PCEP: ASSOCIATION Type Field in Path "IANA PCEP: ASSOCIATION Type Field in Path
Computation Element Protocol (PCEP) Numbers Computation Element Protocol (PCEP) Numbers
RFC 8697: Path Computation Element Communication RFC 8697: Path Computation Element Communication
Protocol (PCEP) Extensions for Establishing Protocol (PCEP) Extensions for Establishing
Relationships between Sets of Label Switched Relationships between Sets of Label Switched
Paths (LSPs)"; Paths (LSPs)";
} }
leaf id { leaf id {
type uint16; type uint16;
description description
"PCEP Association ID"; "PCEP Association ID.";
} }
leaf source { leaf source {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"PCEP Association Source."; "PCEP Association Source.";
} }
leaf global-source { leaf global-source {
type uint32; type uint32;
description description
"PCEP Global Association Source."; "PCEP Global Association Source.";
} }
leaf extended-id { leaf extended-id {
type string; type string;
description description
"Additional information to support unique "Additional information to support unique
identification (Extended Association ID)."; identification (Extended Association ID).";
} }
list lsp { list lsp {
key "plsp-id pcc-id lsp-id"; key "plsp-id pcc-id lsp-id";
description description
"List of all LSP in this association"; "List of all LSP in this association.";
leaf plsp-id { leaf plsp-id {
type leafref { type leafref {
path "/pcep/entity/lsp-db/" path "/pcep/entity/lsp-db/"
+ "lsp/plsp-id"; + "lsp/plsp-id";
} }
description description
"Reference to PLSP-ID in LSP-DB"; "Reference to PLSP-ID in LSP-DB.";
} }
leaf pcc-id { leaf pcc-id {
type leafref { type leafref {
path "/pcep/entity/lsp-db/" path "/pcep/entity/lsp-db/"
+ "lsp[plsp-id=current()/" + "lsp[plsp-id=current()/"
+ "../plsp-id]/pcc-id"; + "../plsp-id]/pcc-id";
} }
description description
"Reference to PCC-ID in LSP-DB"; "Reference to PCC-ID in LSP-DB.";
} }
leaf lsp-id { leaf lsp-id {
type leafref { type leafref {
path "/pcep/entity/lsp-db/" path "/pcep/entity/lsp-db/"
+ "lsp[plsp-id=current()/../plsp-id]" + "lsp[plsp-id=current()/../plsp-id]"
+ "[pcc-id=current()/../pcc-id]/lsp-id"; + "[pcc-id=current()/../pcc-id]/lsp-id";
} }
description description
"Reference to LSP ID in LSP-DB"; "Reference to LSP-ID in LSP-DB.";
} }
} }
} }
list lsp { list lsp {
key "plsp-id pcc-id lsp-id"; key "plsp-id pcc-id lsp-id";
description description
"List of all LSPs in LSP-DB"; "List of all LSPs in LSP-DB.";
leaf plsp-id { leaf plsp-id {
type uint32 { type uint32 {
range "1..1048575"; range "1..1048575";
} }
description description
"A PCEP-specific identifier for the LSP. A PCC "A PCEP-specific identifier for the LSP. A PCC
creates a unique PLSP-ID for each LSP that is creates a unique PLSP-ID for each LSP that is
constant for the lifetime of a PCEP session. constant for the lifetime of a PCEP session.
PLSP-ID is 20 bits with 0 and 0xFFFFF are PLSP-ID is 20 bits with 0 and 0xFFFFF
reserved"; reserved.";
} }
leaf pcc-id { leaf pcc-id {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"The local IP address of the PCC, that "The local IP address of the PCC that
generated the PLSP-ID."; generated the PLSP-ID.";
} }
leaf source { leaf source {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"Tunnel sender address extracted from "Tunnel sender address extracted from
LSP-IDENTIFIERS TLV"; LSP-IDENTIFIERS TLV.";
reference reference
"RFC 8231: Path Computation Element "RFC 8231: Path Computation Element
Communication Protocol (PCEP) Extensions Communication Protocol (PCEP) Extensions
for Stateful PCE"; for Stateful PCE";
} }
leaf destination { leaf destination {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"Tunnel endpoint address extracted from "Tunnel endpoint address extracted from
LSP-IDENTIFIERS TLV"; LSP-IDENTIFIERS TLV.";
reference reference
"RFC 8231: Path Computation Element "RFC 8231: Path Computation Element
Communication Protocol (PCEP) Extensions Communication Protocol (PCEP) Extensions
for Stateful PCE"; for Stateful PCE";
} }
leaf tunnel-id { leaf tunnel-id {
type uint16; type uint16;
description description
"Tunnel identifier used in the LSP-IDENTIFIERS "Tunnel identifier used in the LSP-IDENTIFIERS
TLV that remains constant over the life TLV that remains constant over the life
of the tunnel."; of the tunnel.";
reference reference
"RFC 8231: Path Computation Element "RFC 8231: Path Computation Element
Communication Protocol (PCEP) Extensions Communication Protocol (PCEP) Extensions
skipping to change at page 65, line 31 skipping to change at line 3056
that can be changed to allow a sender to share that can be changed to allow a sender to share
resources with itself."; resources with itself.";
reference reference
"RFC 8231: Path Computation Element "RFC 8231: Path Computation Element
Communication Protocol (PCEP) Extensions Communication Protocol (PCEP) Extensions
for Stateful PCE"; for Stateful PCE";
} }
leaf extended-tunnel-id { leaf extended-tunnel-id {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"Extended Tunnel ID of the LSP in LSP-IDENTIFIERS "Extended tunnel ID of the LSP in LSP-IDENTIFIERS
TLV. The all-zeros format is represented as TLV. The all-zeros format is represented as
0.0.0.0 and ::."; 0.0.0.0 and ::.";
reference reference
"RFC 8231: Path Computation Element "RFC 8231: Path Computation Element
Communication Protocol (PCEP) Extensions Communication Protocol (PCEP) Extensions
for Stateful PCE"; for Stateful PCE";
} }
leaf admin-state { leaf admin-state {
type boolean; type boolean;
default "true"; default "true";
description description
"The desired operational state"; "The desired operational state.";
} }
leaf operational-state { leaf operational-state {
type operational-state; type operational-state;
description description
"The operational status of the LSP"; "The operational status of the LSP.";
} }
container delegated { container delegated {
description description
"The delegation related parameters"; "The delegation-related parameters.";
leaf enabled { leaf enabled {
type boolean; type boolean;
default "false"; default "false";
description description
"LSP is delegated or not; set to true when "LSP is delegated or not; set to true when
delegated"; delegated.";
} }
leaf peer { leaf peer {
when '../enabled' { when '../enabled' {
description description
"The LSP must be delegated"; "The LSP must be delegated.";
} }
type leafref { type leafref {
path "/pcep/entity/peers/peer/addr"; path "/pcep/entity/peers/peer/addr";
} }
description description
"At the PCC, the reference to the PCEP peer to "At the PCC, the reference to the PCEP peer to
which LSP is delegated; At the PCE, the which LSP is delegated; at the PCE, the
reference to the PCEP peer which delegated this reference to the PCEP peer that delegated this
LSP"; LSP.";
} }
leaf srp-id { leaf srp-id {
type uint32 { type uint32 {
range "1..4294967294"; range "1..4294967294";
} }
description description
"The last SRP-ID-number associated with this "The last SRP-ID-number associated with this
LSP. The value 0x00000000 and 0xFFFFFFFF LSP. The values 0x00000000 and 0xFFFFFFFF
are reserved."; are reserved.";
} }
} }
container initiation { container initiation {
if-feature "pce-initiated"; if-feature "pce-initiated";
description description
"The PCE initiation related parameters"; "The parameters related to PCE initiation.";
reference reference
"RFC 8281: Path Computation Element Communication "RFC 8281: Path Computation Element Communication
Protocol (PCEP) Extensions for PCE-Initiated LSP Protocol (PCEP) Extensions for PCE-Initiated LSP
Setup in a Stateful PCE Model"; Setup in a Stateful PCE Model";
leaf enabled { leaf enabled {
type boolean; type boolean;
default "false"; default "false";
description description
"Set to true if this LSP is initiated by a PCE"; "Set to true if this LSP is initiated by a PCE.";
} }
leaf peer { leaf peer {
when '../enabled' { when '../enabled' {
description description
"The LSP must be PCE-Initiated"; "The LSP must be PCE-initiated.";
} }
type leafref { type leafref {
path "/pcep/entity/peers/peer/addr"; path "/pcep/entity/peers/peer/addr";
} }
description description
"If the role is PCC, this leaf refers to the PCEP "If the role is PCC, this leaf refers to the PCEP
peer (PCE) that initiated this LSP. If the role peer (PCE) that initiated this LSP. If the role
is PCE, this leaf refers to the PCEP peer (PCC) is PCE, this leaf refers to the PCEP peer (PCC)
where the LSP is initiated"; where the LSP is initiated.";
} }
} }
leaf symbolic-path-name { leaf symbolic-path-name {
type string; type string;
description description
"The symbolic path name associated with the LSP."; "The symbolic path name associated with the LSP.";
reference reference
"RFC 8231: Path Computation Element Communication "RFC 8231: Path Computation Element Communication
Protocol (PCEP) Extensions for Stateful PCE"; Protocol (PCEP) Extensions for Stateful PCE";
} }
skipping to change at page 67, line 37 skipping to change at line 3159
} }
description description
"The last error for the LSP."; "The last error for the LSP.";
} }
leaf pst { leaf pst {
type identityref { type identityref {
base te-types:path-signaling-type; base te-types:path-signaling-type;
} }
default "te-types:path-setup-rsvp"; default "te-types:path-setup-rsvp";
description description
"The Path Setup Type (PST). Note that the "The Path Setup Type (PST). Note that the
te-types model uses the term Path Signaling te-types model uses the term Path Signaling
Type"; Type.";
reference reference
"RFC 8408: Conveying Path Setup Type in PCE "RFC 8408: Conveying Path Setup Type in PCE
Communication Protocol (PCEP) Messages"; Communication Protocol (PCEP) Messages";
} }
list association-list { list association-list {
if-feature "association"; if-feature "association";
key "type id source global-source extended-id"; key "type id source global-source extended-id";
description description
"List of all PCEP associations"; "List of all PCEP associations.";
leaf type { leaf type {
type leafref { type leafref {
path "/pcep/entity/lsp-db/" path "/pcep/entity/lsp-db/"
+ "association-list/type"; + "association-list/type";
} }
description description
"PCEP Association Type"; "PCEP Association Type.";
} }
leaf id { leaf id {
type leafref { type leafref {
path "/pcep/entity/lsp-db/" path "/pcep/entity/lsp-db/"
+ "association-list[type=current()/" + "association-list[type=current()/"
+ "../type]/id"; + "../type]/id";
} }
description description
"PCEP Association ID"; "PCEP Association ID.";
} }
leaf source { leaf source {
type leafref { type leafref {
path "/pcep/entity/lsp-db/" path "/pcep/entity/lsp-db/"
+ "association-list[type=current()/../type]" + "association-list[type=current()/../type]"
+ "[id=current()/../id]/source"; + "[id=current()/../id]/source";
} }
description description
"PCEP Association Source."; "PCEP Association Source.";
} }
skipping to change at page 69, line 15 skipping to change at line 3233
Protocol (PCEP) Extensions for Establishing Protocol (PCEP) Extensions for Establishing
Relationships between Sets of Label Switched Relationships between Sets of Label Switched
Paths (LSPs)"; Paths (LSPs)";
} }
} }
} }
container path-keys { container path-keys {
when "../role = 'pce' or ../role = 'pcc-and-pce'" { when "../role = 'pce' or ../role = 'pcc-and-pce'" {
description description
"These fields are applicable when the role is "These fields are applicable when the role is
PCE"; PCE.";
} }
if-feature "path-key"; if-feature "path-key";
config false; config false;
description description
"The path-keys generated by the PCE"; "The path-keys generated by the PCE.";
reference reference
"RFC 5520: Preserving Topology Confidentiality "RFC 5520: Preserving Topology Confidentiality
in Inter-Domain Path Computation Using a Path- in Inter-Domain Path Computation Using a Path-
Key-Based Mechanism"; Key-Based Mechanism";
list path-key { list path-key {
key "key"; key "key";
description description
"The list of path-keys generated by the PCE"; "The list of path-keys generated by the PCE.";
leaf key { leaf key {
type uint16; type uint16;
description description
"The identifier, or token used to represent "The identifier or token used to represent
the Confidential Path Segment (CPS) within the Confidential Path Segment (CPS) within
the context of the PCE"; the context of the PCE.";
} }
container cps { container cps {
description description
"The Confidential Path Segment (CPS)"; "The Confidential Path Segment (CPS).";
list explicit-route-objects { list explicit-route-objects {
key "index"; key "index";
description description
"List of explicit route objects"; "List of Explicit Route Objects (EROs).";
leaf index { leaf index {
type uint32; type uint32;
description description
"ERO subobject index"; "ERO subobject index.";
} }
uses te-types:explicit-route-hop; uses te-types:explicit-route-hop;
} }
} }
leaf pcc-requester { leaf pcc-requester {
type leafref { type leafref {
path "/pcep/entity/peers/peer/addr"; path "/pcep/entity/peers/peer/addr";
} }
description description
"Reference to PCC peer address that "Reference to PCC peer address that
skipping to change at page 70, line 20 skipping to change at line 3286
to the creation of the path-key."; to the creation of the path-key.";
} }
leaf req-id { leaf req-id {
type uint32; type uint32;
description description
"The request ID of the original PCReq."; "The request ID of the original PCReq.";
} }
leaf retrieved { leaf retrieved {
type boolean; type boolean;
description description
"If path-key has been retrieved yet"; "If path-key has been retrieved yet.";
} }
leaf pcc-retrieved { leaf pcc-retrieved {
when '../retrieved' { when '../retrieved' {
description description
"The Path-key should be retrieved"; "The path-key should be retrieved.";
} }
type leafref { type leafref {
path "/pcep/entity/peers/peer/addr"; path "/pcep/entity/peers/peer/addr";
} }
description description
"Reference to PCC peer address which "Reference to PCC peer address that
retrieved the path-key"; retrieved the path-key.";
} }
leaf creation-time { leaf creation-time {
type yang:timestamp; type yang:timestamp;
description description
"The timestamp value at the time this Path-Key "The timestamp value at the time this path-key
was created."; was created.";
} }
leaf discard-time { leaf discard-time {
type uint32; type uint32;
units "minutes"; units "minutes";
description description
"A time after which this path-keys will be "A time after which this path-keys will be
discarded"; discarded.";
} }
leaf reuse-time { leaf reuse-time {
type uint32; type uint32;
units "minutes"; units "minutes";
description description
"A time after which this path-keys could be "A time after which this path-keys could be
reused"; reused.";
} }
} }
} }
container peers { container peers {
description description
"The list of configured peers for the "The list of configured peers for the
entity (remote PCE)"; entity (remote PCE).";
list peer { list peer {
key "addr"; key "addr";
description description
"The peer configured for the entity. "The peer configured for the entity.
(remote PCE)"; (remote PCE).";
leaf addr { leaf addr {
type inet:ip-address-no-zone; type inet:ip-address-no-zone;
description description
"The local Internet address of this "The local Internet address of this
PCEP peer."; PCEP peer.";
} }
leaf role { leaf role {
type role; type role;
must '(. != "pcc-and-pce")' { must '(. != "pcc-and-pce")' {
error-message error-message
"The PCEP peer cannot be both "The PCEP peer cannot be both
PCE and PCC at the same time"; PCE and PCC at the same time";
} }
mandatory true; mandatory true;
description description
"The role of the PCEP Peer. "The role of the PCEP peer.
Takes one of the following values: Takes one of the following values:
- unknown(0): this PCEP peer role is not - unknown(0): this PCEP peer role is not
known, known,
- pcc(1): this PCEP peer is a PCC, - pcc(1): this PCEP peer is a PCC,
- pce(2): this PCEP peer is a PCE, - pce(2): this PCEP peer is a PCE,
- pcc-and-pce(3): is not allowed as PCEP - pcc-and-pce(3): is not allowed as PCEP
peer cannot be acting as both a PCC and a peer cannot be acting as both a PCC and a
PCE at the sametime."; PCE at the same time.";
} }
leaf description { leaf description {
type string; type string;
description description
"Description of the PCEP peer "Description of the PCEP peer
configured by the user"; configured by the user.";
} }
uses domain-info { uses domain-info {
description description
"PCE Peer information"; "PCE peer information.";
} }
container pce-info { container pce-info {
uses pce-info { uses pce-info {
description description
"Using the PCE Peer information grouping"; "Using the PCE peer information grouping.";
} }
description description
"The PCE Peer information"; "The PCE peer information.";
} }
leaf delegation-pref { leaf delegation-pref {
if-feature "stateful"; if-feature "stateful";
type uint8 { type uint8 {
range "0..7"; range "0..7";
} }
mandatory true; mandatory true;
description description
"The PCE peer delegation preference where "The PCE peer delegation preference, where
7 reflects the highest preference"; 7 reflects the highest preference.";
} }
uses auth { uses auth {
description description
"The PCE peer authorization and security "The PCE peer authorization and security
parameters"; parameters.";
} }
leaf discontinuity-time { leaf discontinuity-time {
type yang:timestamp; type yang:timestamp;
config false; config false;
description description
"The timestamp of the time when the information and "The timestamp of the time when the information and
statistics were last reset."; statistics were last reset.";
} }
leaf initiate-session { leaf initiate-session {
type boolean; type boolean;
config false; config false;
description description
"Indicates whether the local PCEP entity initiates "Indicates whether the local PCEP entity initiates
sessions to this peer, or wait for the peer to sessions to this peer or waits for the peer to
initiate a session."; initiate a session.";
} }
leaf session-exists { leaf session-exists {
type boolean; type boolean;
config false; config false;
description description
"Indicates whether a session with "Indicates whether a session with
this peer currently exists."; this peer currently exists.";
} }
leaf session-up-time { leaf session-up-time {
skipping to change at page 73, line 37 skipping to change at line 3447
description description
"This entry represents a single PCEP "This entry represents a single PCEP
session in which the local PCEP entity participates. session in which the local PCEP entity participates.
This entry exists only if the corresponding PCEP This entry exists only if the corresponding PCEP
session has been initialized by some event, such as session has been initialized by some event, such as
manual user configuration, auto-discovery of a peer, manual user configuration, auto-discovery of a peer,
or an incoming TCP connection."; or an incoming TCP connection.";
list session { list session {
key "initiator"; key "initiator";
description description
"The list of sessions, note that for a time being "The list of sessions; note that for a time being
two sessions may exist for a peer"; two sessions may exist for a peer.";
leaf initiator { leaf initiator {
type initiator; type initiator;
description description
"The initiator of the session, that is, whether "The initiator of the session, that is, whether
the TCP connection was initiated by the local the TCP connection was initiated by the local
PCEP entity or the peer. PCEP entity or the peer.
There is a window during session There is a window during session
initialization where two sessions can exist initialization where two sessions can exist
between a pair of PCEP speakers, each between a pair of PCEP speakers, each
initiated by one of the speakers. One of initiated by one of the speakers. One of
these sessions is always discarded before it these sessions is always discarded before it
leaves OpenWait state. However, before it is leaves OpenWait state. However, before it is
discarded, two sessions to the given peer discarded, two sessions to the given peer
appear transiently in this YANG module. The appear transiently in this YANG module. The
sessions are distinguished by who initiated sessions are distinguished by who initiated
them, and so this field is the key."; them, and so this field is the key.";
} }
leaf role { leaf role {
type leafref { type leafref {
path "../../../role"; path "../../../role";
} }
description description
"The peer role."; "The peer role.";
} }
skipping to change at page 74, line 42 skipping to change at line 3500
description description
"The timestamp value at the time this "The timestamp value at the time this
session was created."; session was created.";
} }
leaf connect-retry { leaf connect-retry {
type yang:counter32; type yang:counter32;
description description
"The number of times that the local PCEP "The number of times that the local PCEP
entity has attempted to establish a TCP entity has attempted to establish a TCP
connection for this session without connection for this session without
success. The PCEP entity gives up when success. The PCEP entity gives up when
this reaches connect-max-retry."; this reaches connect-max-retry.";
} }
leaf local-id { leaf local-id {
type uint8; type uint8;
description description
"The value of the PCEP session ID used by "The value of the PCEP session ID used by
the local PCEP entity in the Open message the local PCEP entity in the Open message
for this session. If the state is tcp-pending for this session. If the state is tcp-pending,
then this is the session ID that will be then this is the session ID that will be
used in the Open message. Otherwise, this used in the Open message. Otherwise, this
is the session ID that was sent in the is the session ID that was sent in the
Open message."; Open message.";
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)"; Communication Protocol (PCEP)";
} }
leaf remote-id { leaf remote-id {
type uint8; type uint8;
description description
"The value of the PCEP session ID used by the "The value of the PCEP session ID used by the
peer in its Open message for this session. peer in its Open message for this session.
If the state is TCPPending or OpenWait then If the state is TCPPending or OpenWait, then
this leaf is not used and MUST be set to this leaf is not used and MUST be set to
zero."; zero.";
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)"; Communication Protocol (PCEP)";
} }
leaf keepalive-timer { leaf keepalive-timer {
type uint8; type uint8;
units "seconds"; units "seconds";
description description
"The agreed maximum interval at which the local "The agreed maximum interval at which the local
PCEP entity transmits PCEP messages on this PCEP PCEP entity transmits PCEP messages on this PCEP
session. Zero means that the local PCEP entity session. Zero means that the local PCEP entity
never sends Keepalives on this session. never sends Keepalives on this session.
This field is used if and only if the state This field is used if and only if the state
is session-up. Otherwise, it is not used and is session-up. Otherwise, it is not used and
MUST be set to zero."; MUST be set to zero.";
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)"; Communication Protocol (PCEP)";
} }
leaf peer-keepalive-timer { leaf peer-keepalive-timer {
type uint8; type uint8;
units "seconds"; units "seconds";
description description
"The agreed maximum interval at which the peer "The agreed maximum interval at which the peer
transmits PCEP messages on this PCEP session. transmits PCEP messages on this PCEP session.
Zero means that the peer never sends Keepalives Zero means that the peer never sends Keepalives
on this session. on this session.
This field is used if and only if state is This field is used if and only if state is
session-up. Otherwise, it is not used and MUST session-up. Otherwise, it is not used and MUST
be set to zero."; be set to zero.";
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)"; Communication Protocol (PCEP)";
} }
leaf dead-timer { leaf dead-timer {
type uint8; type uint8;
units "seconds"; units "seconds";
description description
"The DeadTimer interval for this PCEP session."; "The DeadTimer interval for this PCEP session.";
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)"; Communication Protocol (PCEP)";
} }
leaf peer-dead-timer { leaf peer-dead-timer {
type uint8; type uint8;
units "seconds"; units "seconds";
description description
"The peer's DeadTimer interval for this PCEP "The peer's DeadTimer interval for this PCEP
session. session.
If the state is TCPPending or OpenWait then If the state is TCPPending or OpenWait, then
this leaf is not used and MUST be set to zero."; this leaf is not used and MUST be set to zero.";
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)"; Communication Protocol (PCEP)";
} }
leaf ka-hold-time-rem { leaf ka-hold-time-rem {
type uint8; type uint8;
units "seconds"; units "seconds";
description description
"The Keepalive hold time remaining for this "The Keepalive hold time remaining for this
session. session.
If the state is TCPPending or OpenWait then If the state is TCPPending or OpenWait, then
this field is not used and MUST be set to this field is not used and MUST be set to
zero."; zero.";
} }
leaf overloaded { leaf overloaded {
type boolean; type boolean;
description description
"If the local PCEP entity has informed the peer "If the local PCEP entity has informed the peer
that it is currently overloaded, then this is that it is currently overloaded, then this is
set to true. Otherwise, it is set to false."; set to true. Otherwise, it is set to false.";
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)"; Communication Protocol (PCEP)";
} }
leaf overloaded-timestamp { leaf overloaded-timestamp {
when '../overloaded' { when '../overloaded' {
description description
"Valid when overloaded"; "Valid when overloaded.";
} }
type yang:timestamp; type yang:timestamp;
description description
"The timestamp value of the time when the "The timestamp value of the time when the
overloaded field was set to true."; overloaded field was set to true.";
} }
leaf overload-time { leaf overload-time {
type uint32; type uint32;
units "seconds"; units "seconds";
description description
"The interval of time that is remaining until the "The interval of time that is remaining until the
local PCEP entity will cease to be overloaded on local PCEP entity will cease to be overloaded on
this session. this session.
This field is only used if overloaded is set to This field is only used if overloaded is set to
true. Otherwise, it is not used and MUST be set true. Otherwise, it is not used and MUST be set
to zero."; to zero.";
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)"; Communication Protocol (PCEP)";
} }
leaf peer-overloaded { leaf peer-overloaded {
type boolean; type boolean;
description description
"If the peer has informed the local PCEP entity "If the peer has informed the local PCEP entity
that it is currently overloaded, then this is that it is currently overloaded, then this is
set to true. Otherwise, it is set to false."; set to true. Otherwise, it is set to false.";
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)"; Communication Protocol (PCEP)";
} }
leaf peer-overloaded-timestamp { leaf peer-overloaded-timestamp {
when '../peer-overloaded' { when '../peer-overloaded' {
description description
"Valid when Peer is overloaded"; "Valid when peer is overloaded.";
} }
type yang:timestamp; type yang:timestamp;
description description
"The timestamp value of the time when the "The timestamp value of the time when the
peer-overloaded field was set to true."; peer-overloaded field was set to true.";
} }
leaf peer-overload-time { leaf peer-overload-time {
type uint32; type uint32;
units "seconds"; units "seconds";
description description
"The interval of time that is remaining until "The interval of time that is remaining until
the peer will cease to be overloaded. If it the peer will cease to be overloaded. If it
is not known how long the peer will stay in is not known how long the peer will stay in
overloaded state, this leaf is set to zero. overloaded state, this leaf is set to zero.
This field is only used if peer-overloaded This field is only used if peer-overloaded
is set to true. Otherwise, it is not used is set to true. Otherwise, it is not used
and MUST be set to zero."; and MUST be set to zero.";
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)"; Communication Protocol (PCEP)";
} }
leaf lspdb-sync { leaf lspdb-sync {
if-feature "stateful"; if-feature "stateful";
type sync-state; type sync-state;
description description
"The LSP-DB state synchronization status."; "The LSP-DB state synchronization status.";
reference reference
"RFC 8231: Path Computation Element Communication "RFC 8231: Path Computation Element Communication
Protocol (PCEP) Extensions for Stateful PCE"; Protocol (PCEP) Extensions for Stateful PCE";
} }
leaf recv-db-ver { leaf recv-db-ver {
when "../role = 'pcc'" when "../role = 'pcc'"
+ "or " + "or "
+ "../role = 'pcc-and-pce'" { + "../role = 'pcc-and-pce'" {
description description
"This field is applicable when the role is "This field is applicable when the role is
PCC"; PCC.";
} }
if-feature "stateful"; if-feature "stateful";
if-feature "sync-opt"; if-feature "sync-opt";
type uint64; type uint64;
description description
"The last received LSP State Database Version "The last received LSP State Database Version
Number"; Number.";
reference reference
"RFC 8231: Path Computation Element Communication "RFC 8231: Path Computation Element Communication
Protocol (PCEP) Extensions for Stateful PCE"; Protocol (PCEP) Extensions for Stateful PCE";
} }
container of-list { container of-list {
when "../role = 'pce'" when "../role = 'pce'"
+ "or " + "or "
+ "../role = 'pcc-and-pce'" { + "../role = 'pcc-and-pce'" {
description description
"These fields are applicable when the role is "These fields are applicable when the role is
PCE"; PCE.";
} }
if-feature "objective-function"; if-feature "objective-function";
uses of-list; uses of-list;
description description
"Indicate the list of supported OF on this "Indicate the list of supported OF on this
session"; session.";
reference reference
"RFC 5541: Encoding of Objective Functions in "RFC 5541: Encoding of Objective Functions in
the Path Computation Element Communication the Path Computation Element Communication
Protocol (PCEP)"; Protocol (PCEP)";
} }
container pst-list { container pst-list {
when "../role = 'pce'" when "../role = 'pce'"
+ "or " + "or "
+ "../role = 'pcc-and-pce'" { + "../role = 'pcc-and-pce'" {
description description
"These fields are applicable when the role is "These fields are applicable when the role is
PCE"; PCE.";
} }
description description
"Indicate the list of supported "Indicate the list of supported
PST on this session"; PST on this session.";
reference reference
"RFC 8408: Conveying Path Setup Type in PCE "RFC 8408: Conveying Path Setup Type in PCE
Communication Protocol (PCEP) Messages"; Communication Protocol (PCEP) Messages";
list path-setup-type { list path-setup-type {
key "pst"; key "pst";
description description
"The list of PST"; "The list of PST.";
leaf pst { leaf pst {
type identityref { type identityref {
base te-types:path-signaling-type; base te-types:path-signaling-type;
} }
description description
"The PST supported"; "The PST supported.";
} }
} }
} }
container assoc-type-list { container assoc-type-list {
if-feature "association"; if-feature "association";
description description
"Indicate the list of supported association types "Indicate the list of supported association types
on this session"; on this session.";
reference reference
"RFC 8697: Path Computation Element Communication "RFC 8697: Path Computation Element Communication
Protocol (PCEP) Extensions for Establishing Protocol (PCEP) Extensions for Establishing
Relationships between Sets of Label Switched Relationships between Sets of Label Switched
Paths (LSPs)"; Paths (LSPs)";
list assoc-type { list assoc-type {
key "at"; key "at";
description description
"The list of authorized association types"; "The list of authorized association types.";
leaf at { leaf at {
type identityref { type identityref {
base te-types:association-type; base te-types:association-type;
} }
description description
"The association type authorized"; "The association type authorized.";
} }
} }
} }
leaf speaker-entity-id { leaf speaker-entity-id {
if-feature "sync-opt"; if-feature "sync-opt";
type string; type string;
description description
"The Speaker Entity Identifier"; "The Speaker Entity Identifier.";
reference reference
"RFC 8232: Optimizations of Label Switched "RFC 8232: Optimizations of Label Switched
Path State Synchronization Procedures for Path State Synchronization Procedures for
a Stateful PCE"; a Stateful PCE";
} }
} }
} }
} }
} }
} }
skipping to change at page 82, line 5 skipping to change at line 3847
notification pcep-session-local-overload { notification pcep-session-local-overload {
description description
"This notification is sent when the local PCEP entity "This notification is sent when the local PCEP entity
enters overload state for a peer."; enters overload state for a peer.";
uses notification-session-hdr; uses notification-session-hdr;
leaf overloaded { leaf overloaded {
type boolean; type boolean;
description description
"If the local PCEP entity has informed the peer "If the local PCEP entity has informed the peer
that it is currently overloaded, then this is set that it is currently overloaded, then this is set
to true. Otherwise, it is set to false."; to true. Otherwise, it is set to false.";
} }
leaf overloaded-timestamp { leaf overloaded-timestamp {
type yang:timestamp; type yang:timestamp;
description description
"The timestamp value of the time when the "The timestamp value of the time when the
overloaded field was set to true."; overloaded field was set to true.";
} }
leaf overload-time { leaf overload-time {
type uint32; type uint32;
units "seconds"; units "seconds";
skipping to change at page 83, line 11 skipping to change at line 3901
notification pcep-session-peer-overload { notification pcep-session-peer-overload {
description description
"This notification is sent when a peer enters overload "This notification is sent when a peer enters overload
state."; state.";
uses notification-session-hdr; uses notification-session-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.";
} }
leaf peer-overloaded-timestamp { leaf peer-overloaded-timestamp {
type yang:timestamp; type yang:timestamp;
description description
"The timestamp value of the time when the "The timestamp value of the time when the
peer-overloaded field was set to true."; peer-overloaded field was set to true.";
} }
leaf peer-overload-time { leaf peer-overload-time {
type uint32; type uint32;
units "seconds"; units "seconds";
skipping to change at page 83, line 43 skipping to change at line 3933
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.";
} }
leaf peer-overloaded-clear-timestamp { leaf peer-overloaded-clear-timestamp {
type yang:timestamp; type yang:timestamp;
description description
"The timestamp value of the time when the "The timestamp value of the time when the
peer-overloaded field was set to false."; peer-overloaded field was set to false.";
} }
reference reference
"RFC 5440: Path Computation Element (PCE) Communication "RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)"; Protocol (PCEP)";
skipping to change at page 84, line 17 skipping to change at line 3955
/* /*
* RPC * RPC
*/ */
rpc trigger-resync { rpc trigger-resync {
if-feature "stateful"; if-feature "stateful";
if-feature "sync-opt"; if-feature "sync-opt";
nacm:default-deny-all; nacm:default-deny-all;
description description
"Trigger the resynchronization 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";
} }
mandatory true; mandatory true;
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 synchronization 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.";
} }
} }
} }
} }
<CODE ENDS> <CODE ENDS>
8.2. ietf-pcep-stats module 8.2. ietf-pcep-stats Module
<CODE BEGINS> file "ietf-pcep-stats@2025-01-27.yang" <CODE BEGINS> file "ietf-pcep-stats@2025-07-24.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 9826: A YANG Data Model for the Path Computation
Element Communications Protocol (PCEP)"; Element Communication Protocol (PCEP)";
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
organization organization
"IETF PCE (Path Computation Element) Working Group"; "IETF PCE (Path Computation Element) Working Group";
contact contact
skipping to change at page 85, line 25 skipping to change at line 4011
<mailto:dhruv.ietf@gmail.com>"; <mailto:dhruv.ietf@gmail.com>";
description description
"The YANG module augments the Path Computation Element "The YANG module augments the Path Computation Element
Communication Protocol (PCEP) YANG operational Communication Protocol (PCEP) YANG operational
model with statistics, counters and telemetry data. model with statistics, counters and telemetry data.
Copyright (c) 2025 IETF Trust and the persons identified as Copyright (c) 2025 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
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
to the license terms contained in, the Revised BSD License the license terms contained in, the Revised BSD License set
set forth in Section 4.c of the IETF Trust's Legal Provisions 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 9826; see the
RFC itself for full legal notices."; RFC itself for full legal notices.";
revision 2025-01-27 { revision 2025-07-24 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: A YANG Data Model for Path Computation "RFC 9826: A YANG Data Model for the Path Computation
Element Communications Protocol (PCEP)"; Element Communication Protocol (PCEP)";
} }
/* /*
* Features * Features
*/ */
feature reset-all { feature reset-all {
description description
"Support resetting of all PCEP statistics."; "Support resetting of all PCEP statistics.";
} }
/* /*
* Groupings * Groupings
*/ */
grouping stats { grouping 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 sessions. Since this groupings for both peer and current sessions. Since this grouping
include a relative path, care needs to be taken while includes a relative path, care needs to be taken while
using it"; using it.";
leaf discontinuity-time { leaf discontinuity-time {
type yang:timestamp; type yang:timestamp;
description description
"The timestamp value of the time when the "The timestamp value of the time when the
statistics were last reset."; statistics were last reset.";
} }
container pce { container pce {
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.";
} }
leaf rsp-time-avg { leaf rsp-time-avg {
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 rsp-time-lwm { leaf rsp-time-lwm {
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 rsp-time-hwm { leaf rsp-time-hwm {
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.";
} }
leaf pcreq-sent { leaf pcreq-sent {
type yang:counter32; type yang:counter32;
description description
"The number of PCReq messages sent."; "The number of PCReq messages sent.";
} }
leaf pcreq-rcvd { leaf pcreq-rcvd {
type yang:counter32; type yang:counter32;
description description
skipping to change at page 87, line 26 skipping to change at line 4108
} }
leaf pcrep-rcvd { leaf pcrep-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of PCRep messages received."; "The number of PCRep messages received.";
} }
leaf req-sent { leaf req-sent {
type yang:counter32; type yang:counter32;
description description
"The number of requests sent. A request corresponds "The number of requests sent. A request corresponds
1:1 with an RP object in a PCReq message. This might 1:1 with an RP object in a PCReq message. This might
be greater than pcreq-sent because multiple be greater than pcreq-sent because multiple
requests can be batched into a single PCReq requests can be batched into a single PCReq
message."; message.";
} }
leaf req-sent-pend-rep { leaf req-sent-pend-rep {
type yang:counter32; type yang:counter32;
description description
"The number of requests that have been sent for "The number of requests that have been sent for
which a response is still pending."; which a response is still pending.";
} }
skipping to change at page 87, line 50 skipping to change at line 4132
"The number of requests that have been sent for "The number of requests that have been sent for
which a response with an ERO object was received. which a response with an ERO object was received.
Such responses indicate that a path was Such responses indicate that a path was
successfully computed by the peer."; successfully computed by the peer.";
} }
leaf req-sent-nopath-rcvd { leaf req-sent-nopath-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of requests that have been sent for "The number of requests that have been sent for
which a response with a NO-PATH object was which a response with a NO-PATH object was
received. Such responses indicate that the peer received. Such responses indicate that the peer
could not find a path to satisfy the could not find a path to satisfy the
request."; request.";
} }
leaf req-sent-cancel-rcvd { leaf req-sent-cancel-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of requests that were cancelled with "The number of requests that were cancelled with
a PCNtf message. This might be different than a PCNtf message. This might be different than
pcntf-rcvd because not all PCNtf messages are pcntf-rcvd because not all PCNtf messages are
used to cancel requests, and a single PCNtf message used to cancel requests, and a single PCNtf message
can cancel multiple requests."; can cancel multiple requests.";
} }
leaf req-sent-error-rcvd { leaf req-sent-error-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of requests that were rejected with a "The number of requests that were rejected with a
PCErr message. This might be different than PCErr message. This might be different than
pcerr-rcvd because not all PCErr messages are pcerr-rcvd because not all PCErr messages are
used to reject requests, and a single PCErr message used to reject requests, and a single PCErr message
can reject multiple requests."; can reject multiple requests.";
} }
leaf req-sent-timeout { leaf req-sent-timeout {
type yang:counter32; type yang:counter32;
description description
"The number of requests that have been sent to a peer "The number of requests that have been sent to a peer
and have been abandoned because the peer has taken too and have been abandoned because the peer has taken too
long to respond to them."; long to respond to them.";
skipping to change at page 88, line 42 skipping to change at line 4172
type yang:counter32; type yang:counter32;
description description
"The number of requests that were sent to the peer and "The number of requests that were sent to the peer and
explicitly cancelled by the local PCEP entity sending explicitly cancelled by the local PCEP entity sending
a PCNtf."; a PCNtf.";
} }
leaf rep-rcvd-unknown { leaf rep-rcvd-unknown {
type yang:counter32; type yang:counter32;
description description
"The number of responses to unknown requests "The number of responses to unknown requests
received. A response to an unknown request is a received. A response to an unknown request is a
response whose RP object does not contain the response whose RP object does not contain the
request ID of any request that is currently request ID of any request that is currently
outstanding on the session."; outstanding on the session.";
} }
description description
"The stats related to PCE as peer"; "The stats related to PCE as peer.";
} }
leaf pcerr-sent { leaf pcerr-sent {
type yang:counter32; type yang:counter32;
description description
"The number of PCErr messages sent."; "The number of PCErr messages sent.";
} }
leaf pcerr-rcvd { leaf pcerr-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of PCErr messages received."; "The number of PCErr messages received.";
skipping to change at page 89, line 47 skipping to change at line 4225
leaf corrupt-rcvd { leaf corrupt-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of corrupted PCEP messages received."; "The number of corrupted PCEP messages received.";
} }
container pcc { container pcc {
when "../../pcep:role = 'pcc'" when "../../pcep:role = 'pcc'"
+ "or " + "or "
+ "../../pcep:role = 'pcc-and-pce'" { + "../../pcep:role = 'pcc-and-pce'" {
description description
"Valid for PCEP Peer as PCC"; "Valid for PCEP peer as PCC.";
} }
leaf req-rcvd { leaf req-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of requests received. A request "The number of requests received. A request
corresponds 1:1 with an RP object in a PCReq corresponds 1:1 with an RP object in a PCReq
message. message.
This might be greater than pcreq-rcvd because This might be greater than pcreq-rcvd because
multiple requests can be batched into a single multiple requests can be batched into a single
PCReq message."; PCReq message.";
skipping to change at page 90, line 29 skipping to change at line 4255
description description
"The number of requests that have been received for "The number of requests that have been received for
which a response with an ERO object was sent. Such which a response with an ERO object was sent. Such
responses indicate that a path was successfully responses indicate that a path was successfully
computed by the local PCEP entity."; computed by the local PCEP entity.";
} }
leaf req-rcvd-nopath-sent { leaf req-rcvd-nopath-sent {
type yang:counter32; type yang:counter32;
description description
"The number of requests that have been received for "The number of requests that have been received for
which a response with a NO-PATH object was sent. Such which a response with a NO-PATH object was sent. Such
responses indicate that the local PCEP entity could responses indicate that the local PCEP entity could
not find a path to satisfy the request."; not find a path to satisfy the request.";
} }
leaf req-rcvd-cancel-sent { leaf req-rcvd-cancel-sent {
type yang:counter32; type yang:counter32;
description description
"The number of requests received that were cancelled "The number of requests received that were cancelled
by the local PCEP entity sending a PCNtf message. by the local PCEP entity sending a PCNtf message.
This might be different than pcntf-sent because This might be different than pcntf-sent because
not all PCNtf messages are used to cancel requests, not all PCNtf messages are used to cancel requests,
skipping to change at page 91, line 4 skipping to change at line 4278
} }
leaf req-rcvd-error-sent { leaf req-rcvd-error-sent {
type yang:counter32; type yang:counter32;
description description
"The number of requests received that were cancelled "The number of requests received that were cancelled
by the local PCEP entity sending a PCErr message. by the local PCEP entity sending a PCErr message.
This might be different than pcerr-sent because This might be different than pcerr-sent because
not all PCErr messages are used to cancel requests, not all PCErr messages are used to cancel requests,
and a single PCErr message can cancel multiple and a single PCErr message can cancel multiple
requests."; requests.";
} }
leaf req-rcvd-cancel-rcvd { leaf req-rcvd-cancel-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of requests that were received from the "The number of requests that were received from the
peer and explicitly cancelled by the peer sending peer and explicitly cancelled by the peer sending
a PCNtf."; a PCNtf.";
} }
leaf req-rcvd-unknown { leaf req-rcvd-unknown {
type yang:counter32; type yang:counter32;
description description
"The number of unknown requests that have been "The number of unknown requests that have been
received. An unknown request is a request received. An unknown request is a request
whose RP object contains a request ID of zero."; whose RP object contains a request ID of zero.";
} }
description description
"The stats related to PCC as peer"; "The stats related to PCC as peer.";
} }
container svec { container svec {
if-feature "pcep:svec"; if-feature "pcep:svec";
description description
"If synchronized path computation is supported"; "If synchronized path computation is supported.";
container pce { container pce {
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.";
} }
leaf svec-sent { leaf svec-sent {
type yang:counter32; type yang:counter32;
description description
"The number of SVEC objects sent in PCReq messages. "The number of SVEC objects sent in PCReq messages.
An SVEC object represents a set of synchronized An SVEC object represents a set of synchronized
requests."; requests.";
} }
leaf svec-req-sent { leaf svec-req-sent {
type yang:counter32; type yang:counter32;
description description
"The number of requests sent that appeared in one "The number of requests sent that appeared in one
or more SVEC objects."; or more SVEC objects.";
} }
description description
"The SVEC stats related to PCE"; "The SVEC stats related to PCE.";
} }
container pcc { container pcc {
when "../../../pcep:role = 'pcc'" when "../../../pcep:role = 'pcc'"
+ "or " + "or "
+ "../../../pcep:role = 'pcc-and-pce'" { + "../../../pcep:role = 'pcc-and-pce'" {
description description
"Valid for PCEP Peer as PCC"; "Valid for PCEP peer as PCC.";
} }
leaf svec-rcvd { leaf svec-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of SVEC objects received in PCReq "The number of SVEC objects received in PCReq
messages. An SVEC object represents a set of messages. An SVEC object represents a set of
synchronized requests."; synchronized requests.";
} }
leaf svec-req-rcvd { leaf svec-req-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of requests received that appeared "The number of requests received that appeared
in one or more SVEC objects."; in one or more SVEC objects.";
} }
description description
"The SVEC stats related to PCC as peer"; "The SVEC stats related to PCC as peer.";
} }
} }
container stateful { container stateful {
if-feature "pcep:stateful"; if-feature "pcep:stateful";
description description
"Stateful PCE related statistics"; "Stateful PCE-related statistics.";
container pce { container pce {
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.";
} }
leaf pcrpt-sent { leaf pcrpt-sent {
type yang:counter32; type yang:counter32;
description description
"The number of PCRpt messages sent."; "The number of PCRpt messages sent.";
} }
leaf pcupd-rcvd { leaf pcupd-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of PCUpd messages received."; "The number of PCUpd messages received.";
} }
leaf rpt-sent { leaf rpt-sent {
type yang:counter32; type yang:counter32;
description description
"The number of LSP Reports sent. An LSP report "The number of LSP reports sent. An LSP report
corresponds 1:1 with an LSP object in a PCRpt corresponds 1:1 with an LSP object in a PCRpt
message. This might be greater than message. This might be greater than
pcrpt-sent because multiple reports can pcrpt-sent because multiple reports can
be batched into a single PCRpt message."; be batched into a single PCRpt message.";
} }
leaf upd-rcvd { leaf upd-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of LSP Updates received. An LSP update "The number of LSP updates received. An LSP update
corresponds 1:1 with an LSP object in a PCUpd corresponds 1:1 with an LSP object in a PCUpd
message. message.
This might be greater than pcupd-rcvd because This might be greater than pcupd-rcvd because
multiple updates can be batched into a single multiple updates can be batched into a single
PCUpd message."; PCUpd message.";
} }
leaf upd-rcvd-unknown { leaf upd-rcvd-unknown {
type yang:counter32; type yang:counter32;
description description
"The number of updates to unknown LSPs "The number of updates to unknown LSPs
received. An update to an unknown LSP is a received. An update to an unknown LSP is a
update whose LSP object does not contain the update whose LSP object does not contain the
PLSP-ID of any LSP that is currently PLSP-ID of any LSP that is currently
present."; present.";
} }
leaf upd-rcvd-undelegated { leaf upd-rcvd-undelegated {
type yang:counter32; type yang:counter32;
description description
"The number of updates to not delegated LSPs "The number of updates to not delegated LSPs
received. An update to an undelegated LSP is a received. An update to an undelegated LSP is a
update whose LSP object does not contain the update whose LSP object does not contain the
PLSP-ID of any LSP that is currently PLSP-ID of any LSP that is currently
delegated to the current PCEP session."; delegated to the current PCEP session.";
} }
leaf upd-rcvd-error-sent { leaf upd-rcvd-error-sent {
type yang:counter32; type yang:counter32;
description description
"The number of updates to LSPs received that were "The number of updates to LSPs received that were
responded by the local PCEP entity by sending a responded by the local PCEP entity by sending a
PCErr message."; PCErr message.";
} }
description description
"The stateful stats related to PCE as peer"; "The stateful stats related to PCE as peer";
} }
container pcc { container pcc {
when "../../../pcep:role = 'pcc'" when "../../../pcep:role = 'pcc'"
+ "or " + "or "
+ "../../../pcep:role = 'pcc-and-pce'" { + "../../../pcep:role = 'pcc-and-pce'" {
description description
"Valid for PCEP Peer as PCC"; "Valid for PCEP peer as PCC.";
} }
leaf pcrpt-rcvd { leaf pcrpt-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of PCRpt messages received."; "The number of PCRpt messages received.";
} }
leaf pcupd-sent { leaf pcupd-sent {
type yang:counter32; type yang:counter32;
description description
"The number of PCUpd messages sent."; "The number of PCUpd messages sent.";
} }
leaf rpt-rcvd { leaf rpt-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of LSP Reports received. An LSP report "The number of LSP reports received. An LSP report
corresponds 1:1 with an LSP object in a PCRpt corresponds 1:1 with an LSP object in a PCRpt
message. message.
This might be greater than pcrpt-rcvd because This might be greater than pcrpt-rcvd because
multiple reports can be batched into a single multiple reports can be batched into a single
PCRpt message."; PCRpt message.";
} }
leaf rpt-rcvd-error-sent { leaf rpt-rcvd-error-sent {
type yang:counter32; type yang:counter32;
description description
"The number of reports of LSPs received that were "The number of reports of LSPs received that were
responded by the local PCEP entity by sending a responded by the local PCEP entity by sending a
PCErr message."; PCErr message.";
} }
leaf upd-sent { leaf upd-sent {
type yang:counter32; type yang:counter32;
description description
"The number of LSP updates sent. An LSP update "The number of LSP updates sent. An LSP update
corresponds 1:1 with an LSP object in a PCUpd corresponds 1:1 with an LSP object in a PCUpd
message. This might be greater than message. This might be greater than
pcupd-sent because multiple updates can pcupd-sent because multiple updates can
be batched into a single PCUpd message."; be batched into a single PCUpd message.";
} }
description description
"The stateful stats related to PCC as peer"; "The stateful stats related to PCC as peer.";
} }
container initiation { container initiation {
if-feature "pcep:pce-initiated"; if-feature "pcep:pce-initiated";
description description
"PCE-Initiated related statistics"; "PCE-initiated related statistics.";
container pcc { container pcc {
when "../../../../pcep:role = 'pcc'" when "../../../../pcep:role = 'pcc'"
+ "or " + "or "
+ "../../../../pcep:role = 'pcc-and-pce'" { + "../../../../pcep:role = 'pcc-and-pce'" {
description description
"Valid for PCEP Peer as PCC"; "Valid for PCEP peer as PCC.";
} }
leaf pcinitiate-sent { leaf pcinitiate-sent {
type yang:counter32; type yang:counter32;
description description
"The number of PCInitiate messages sent."; "The number of PCInitiate messages sent.";
} }
leaf initiate-sent { leaf initiate-sent {
type yang:counter32; type yang:counter32;
description description
"The number of LSP Initiation sent via PCE. "The number of LSP initiations sent via PCE.
An LSP initiation corresponds 1:1 with an LSP An LSP initiation corresponds 1:1 with an LSP
object in a PCInitiate message. This might be object in a PCInitiate message. This might be
greater than pcinitiate-sent because greater than pcinitiate-sent because
multiple initiations can be batched into a multiple initiations can be batched into a
single PCInitiate message."; single PCInitiate message.";
} }
description description
"The initiation stats related to PCC as peer"; "The initiation stats related to PCC as peer.";
} }
container pce { container pce {
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.";
} }
leaf pcinitiate-rcvd { leaf pcinitiate-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of PCInitiate messages received."; "The number of PCInitiate messages received.";
} }
leaf initiate-rcvd { leaf initiate-rcvd {
type yang:counter32; type yang:counter32;
description description
"The number of LSP Initiation received from "The number of LSP initiations received from
PCE. An LSP initiation corresponds 1:1 with PCE. An LSP initiation corresponds 1:1 with
an LSP object in a PCInitiate message. This an LSP object in a PCInitiate message. This
might be greater than pcinitiate-rcvd might be greater than pcinitiate-rcvd
because multiple initiations can be batched because multiple initiations can be batched
into a single PCInitiate message."; into a single PCInitiate message.";
} }
leaf initiate-rcvd-error-sent { leaf initiate-rcvd-error-sent {
type yang:counter32; type yang:counter32;
description description
"The number of initiations of LSPs received "The number of initiations of LSPs received
that were responded to by the local PCEP entity that were responded to by the local PCEP entity
by sending a PCErr message."; by sending a PCErr message.";
skipping to change at page 96, line 4 skipping to change at line 4518
might be greater than pcinitiate-rcvd might be greater than pcinitiate-rcvd
because multiple initiations can be batched because multiple initiations can be batched
into a single PCInitiate message."; into a single PCInitiate message.";
} }
leaf initiate-rcvd-error-sent { leaf initiate-rcvd-error-sent {
type yang:counter32; type yang:counter32;
description description
"The number of initiations of LSPs received "The number of initiations of LSPs received
that were responded to by the local PCEP entity that were responded to by the local PCEP entity
by sending a PCErr message."; by sending a PCErr message.";
} }
description description
"The initiation stats related to PCE as peer"; "The initiation stats related to PCE as peer.";
} }
} }
} }
container path-key { container path-key {
when "../../pcep:role = 'pcc'" when "../../pcep:role = 'pcc'"
+ "or " + "or "
+ "../../pcep:role = 'pcc-and-pce'" { + "../../pcep:role = 'pcc-and-pce'" {
description description
"Valid for PCEP Peer as PCC"; "Valid for PCEP peer as PCC.";
} }
if-feature "pcep:path-key"; if-feature "pcep:path-key";
description description
"If Path-Key is supported"; "If path-key is supported.";
leaf unknown-path-key { leaf unknown-path-key {
type yang:counter32; type yang:counter32;
description description
"The number of attempts to expand an unknown "The number of attempts to expand an unknown
path-key."; path-key.";
} }
leaf exp-path-key { leaf exp-path-key {
type yang:counter32; type yang:counter32;
description description
"The number of attempts to expand an expired "The number of attempts to expand an expired
skipping to change at page 96, line 49 skipping to change at line 4562
leaf path-key-no-attempt { leaf path-key-no-attempt {
type yang:counter32; type yang:counter32;
description description
"The number of expired path-keys with no attempt to "The number of expired path-keys with no attempt to
expand it."; expand it.";
} }
} }
action reset-statistics { action reset-statistics {
description description
"The reset action will clear the statistics at the "The reset action will clear the statistics at the
associated container"; associated container.";
input { input {
leaf reset-at { leaf reset-at {
type yang:date-and-time; type yang:date-and-time;
description description
"The time when the reset was issued."; "The time when the reset was issued.";
} }
} }
output { output {
leaf reset-finished-at { leaf reset-finished-at {
type yang:date-and-time; type yang:date-and-time;
skipping to change at page 97, line 24 skipping to change at line 4586
} }
} }
} }
/* /*
* Augment modules to add statistics * Augment modules to add statistics
*/ */
augment "/pcep:pcep/pcep:entity/pcep:peers/pcep:peer" { augment "/pcep:pcep/pcep:entity/pcep:peers/pcep:peer" {
description description
"Augmenting the statistics"; "Augmenting the statistics.";
container stats { container stats {
config false; config false;
description description
"The container for all statistics at peer level."; "The container for all statistics at peer level.";
uses stats { uses stats {
description description
"Since PCEP sessions can be ephemeral, the peer statistics "Since PCEP sessions can be ephemeral, the peer statistics
tracks a peer even when no PCEP session currently exists tracks a peer even when no PCEP session currently exists
to that peer. The statistics contained are an aggregate of to that peer. The statistics contained are an aggregate
the statistics for all successive sessions to that peer."; of the statistics for all successive sessions to that
peer.";
} }
leaf sess-setup-ok { leaf sess-setup-ok {
type yang:counter32; type yang:counter32;
config false; config false;
description description
"The number of PCEP sessions successfully established with "The number of PCEP sessions successfully established with
the peer, including any current session. This counter is the peer, including any current session. This counter is
incremented each time a session with this peer is incremented each time a session with this peer is
successfully established."; successfully established.";
} }
leaf sess-setup-fail { leaf sess-setup-fail {
type yang:counter32; type yang:counter32;
config false; config false;
description description
"The number of PCEP sessions with the peer "The number of PCEP sessions with the peer
that have been attempted but failed that have been attempted but failed
before being fully established. This before being fully established. This
counter is incremented each time a counter is incremented each time a
session retry to this peer fails."; session retry to this peer fails.";
} }
leaf req-sent-closed { leaf req-sent-closed {
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 yang:counter32; type yang:counter32;
description description
"The number of requests that were sent to the peer and "The number of requests that were sent to the peer and
implicitly cancelled when the session they were sent implicitly cancelled when the session they were sent
over was closed."; over was closed.";
} }
leaf req-rcvd-closed { leaf req-rcvd-closed {
when "../../pcep:role = 'pcc'" when "../../pcep:role = 'pcc'"
+ "or " + "or "
+ "../../pcep:role = 'pcc-and-pce'" { + "../../pcep:role = 'pcc-and-pce'" {
description description
"Valid for PCEP Peer as PCC"; "Valid for PCEP peer as PCC.";
} }
type yang:counter32; type yang:counter32;
description description
"The number of requests that were received from the peer "The number of requests that were received from the peer
and implicitly cancelled when the session they were and implicitly cancelled when the session they were
received over was closed."; received over was closed.";
} }
} }
} }
augment "/pcep:pcep/pcep:entity/pcep:peers/pcep:peer/" augment "/pcep:pcep/pcep:entity/pcep:peers/pcep:peer/"
+ "pcep:sessions/pcep:session" { + "pcep:sessions/pcep:session" {
description description
"Augmenting the statistics"; "Augmenting the statistics.";
container stats { container stats {
description description
"The container for all statistics at session level."; "The container for all statistics at session level.";
uses stats { uses stats {
description description
"The statistics contained are for the current sessions to "The statistics contained are for the current sessions to
that peer. These are lost when the session goes down."; that peer. These are lost when the session goes down.";
} }
} }
} }
rpc reset-pcep-statistics-all { rpc reset-pcep-statistics-all {
if-feature "reset-all"; if-feature "reset-all";
description description
"Reset all the PCEP statistics collected across all peers "Reset all the PCEP statistics collected across all peers
and sessions. This RPC is used if the implementation and sessions. This RPC is used if the implementation
supports a mechanism to reset all PCEP statistics across supports a mechanism to reset all PCEP statistics across
all peers and sessions through mechanisms such as by all peers and sessions through mechanisms such as by
walking a list of pointers to those peers and sessions. walking a list of pointers to those peers and sessions.
If this mechanism is not supported, implementations must If this mechanism is not supported, implementations must
reset PCEP statistics individually by invoking the action reset PCEP statistics individually by invoking the action
for each peer and session."; for each peer and session.";
} }
} }
<CODE ENDS> <CODE ENDS>
9. Security Considerations 9. Security Considerations
The ietf-pcep and ietf-pcep-stats YANG modules define data models This section is modeled after the template described in Section 3.7
of [YANG-GUIDELINES].
The "ietf-pcep" and "ietf-pcep-stats" YANG modules define data models
that are designed to be accessed via YANG-based management protocols, that are designed to be accessed via YANG-based management protocols,
such as NETCONF [RFC6241] and RESTCONF [RFC8040]. These protocols such as NETCONF [RFC6241] and RESTCONF [RFC8040]. These protocols
have to use a secure transport layer (e.g., SSH [RFC6242], TLS have to use a secure transport layer (e.g., SSH [RFC4252], TLS
[RFC8446], and QUIC [RFC9000]) and have to use mutual authentication. [RFC8446], and QUIC [RFC9000]) and have to use mutual authentication.
The NETCONF access control model [RFC8341] provides the means to The Network Configuration Access Control Model (NACM) [RFC8341]
restrict access for particular NETCONF or RESTCONF users to a pre- provides the means to restrict access for particular NETCONF or
configured subset of all available NETCONF or RESTCONF protocol RESTCONF users to a preconfigured subset of all available NETCONF or
operations and content. RESTCONF protocol operations and content.
There are a number of data nodes defined in the ietf-pcep YANG module *The "ietf-pcep" YANG module:*
which are writable/creatable/deletable (i.e., config true, which is
the default). All writable data nodes are likely to be reasonably
sensitive or vulnerable in some network environments. Write
operations (e.g., edit-config) and delete operations to these data
nodes without proper protection or authentication can have a negative
effect on network operations. The following subtrees and data nodes
have particular sensitivities/vulnerabilities:
/pcep/entity/ - configure local parameters, capabilities etc. There are a number of data nodes defined in the "ietf-pcep" YANG
module that are writable/creatable/deletable (i.e., "config true",
which is the default). All writable data nodes are likely to be
reasonably sensitive or vulnerable in some network environments.
Write operations (e.g., edit-config) and delete operations to these
data nodes without proper protection or authentication can have a
negative effect on network operations. The following subtrees and
data nodes have particular sensitivities/vulnerabilities:
/pcep/entity/peers - configure remote peers to setup PCEP session. * /pcep/entity/: Configures local parameters, capabilities, etc.
* /pcep/entity/peers: Configures remote peers to set up a PCEP
session.
Unauthorized access to the above list can adversely affect the PCEP Unauthorized access to the above list can adversely affect the PCEP
session between the local entity and the peers. This may lead to the session between the local entity and the peers. This may lead to the
inability to compute new paths, and stateful operations on the inability to compute new paths, and stateful operations on the
delegated as well as PCE-initiated LSPs. delegated as well as PCE-initiated LSPs.
Some of the readable data nodes in this YANG module may be considered Some of the readable data nodes in this YANG module may be considered
sensitive or vulnerable in some network environments. It is thus sensitive or vulnerable in some network environments. It is thus
important to control read access (e.g., via get, get-config, or important to control read access (e.g., via get, get-config, or
notification) to these data nodes. Specifically, the following notification) to these data nodes. Specifically, the following
subtrees and data nodes have particular sensitivities/ subtrees and data nodes have particular sensitivities/
vulnerabilities: vulnerabilities:
/pcep/lsp-db - All the LSPs in the network. Unauthorized access * /pcep/lsp-db: All the LSPs in the network. Unauthorized access to
to this could provide all path and network usage information. this could provide all path and network usage information.
/pcep/path-keys/ - The Confidential Path Segments (CPS) are hidden * /pcep/path-keys/: The Confidential Path Segments (CPS) are hidden
using path-keys. Unauthorized access to this could leak using path-keys. Unauthorized access to this could leak
confidential path information. confidential path information.
Some of the RPC operations in this YANG module may be considered Some of the RPC or action operations in this YANG module may be
sensitive or vulnerable in some network environments. It is thus considered sensitive or vulnerable in some network environments. It
important to control access to these operations. Specifically, the is thus important to control access to these operations.
following operations have particular sensitivities/vulnerabilities: Specifically, the following operation has particular sensitivities/
vulnerabilities:
trigger-resync - trigger resynchronization with the PCE. * trigger-resync: Triggers resynchronization with the PCE.
Unauthorized access to this could force a PCEP session into Unauthorized access to this could force a PCEP session into
continuous state synchronization. continuous state synchronization.
This YANG module uses groupings from other YANG modules that define This YANG module uses groupings from other YANG modules that define
nodes that may be considered sensitive or vulnerable in network nodes that may be considered sensitive or vulnerable in network
environments. Refer to the Security Considerations of respective environments. Refer to the Security Considerations of respective
RFCs for information as to which nodes may be considered sensitive or RFCs for information as to which nodes may be considered sensitive or
vulnerable in network environments. vulnerable in network environments.
The YANG module defines a set of identities, types, and groupings. The YANG module defines a set of identities, types, and groupings.
skipping to change at page 101, line 5 skipping to change at line 4761
Modules that use the groupings that are defined in this document Modules that use the groupings that are defined in this document
should identify the corresponding security considerations. should identify the corresponding security considerations.
The actual authentication key data (whether locally specified or part The actual authentication key data (whether locally specified or part
of a key-chain) is sensitive and needs to be kept secret from of a key-chain) is sensitive and needs to be kept secret from
unauthorized parties; compromise of the key data would allow an unauthorized parties; compromise of the key data would allow an
attacker to forge PCEP traffic that would be accepted as authentic, attacker to forge PCEP traffic that would be accepted as authentic,
potentially compromising the TE domain. potentially compromising the TE domain.
The model describes several notifications, implementations must rate- The model describes several notifications; implementations must rate-
limit the generation of these notifications to avoid creating a limit the generation of these notifications to avoid creating a
significant notification load. Otherwise, this notification load may significant notification load. Otherwise, this notification load may
have some side effects on the system stability and may be exploited have some side effects on the system stability and may be exploited
as an attack vector. as an attack vector.
The "auth" container includes various authentication and security The "auth" container includes various authentication and security
options for PCEP. Further, Section 7.1 describes how to configure options for PCEP. Further, Section 7.1 describes how to configure
TLS1.2 and TLS1.3 for a PCEP session via this YANG module. TLS 1.2 and TLS 1.3 for a PCEP session via this YANG module.
*The "ietf-pcep-stats" YANG module:*
This document also includes another YANG module (called "ietf-pcep-
stats") for maintaining the statistics by augmenting the "ietf-pcep"
YANG module.
There are no particularly sensitive writable data nodes.
Further, this document also includes another YANG module (called
ietf-pcep-stats) for maintaining the statistics by augmenting the
ietf-pcep YANG module. There are no data nodes defined in this
module which are writable/creatable/deletable (i.e., config true).
The readable data nodes in this YANG module may be considered The readable data nodes in this YANG module may be considered
sensitive or vulnerable in some network environments. It is thus sensitive or vulnerable in some network environments. It is thus
important to control read access (e.g., via get, get-config, or important to control read access (e.g., via get, get-config, or
notification) to these data nodes. The statistics could provide notification) to these data nodes. The statistics could provide
information related to the current usage patterns of the network. information related to the current usage patterns of the network.
Some of the RPC operations in this YANG module may be considered Some of the RPC or action operations in this YANG module may be
sensitive or vulnerable in some network environments. It is thus considered sensitive or vulnerable in some network environments. It
important to control access to these operations. Specifically, the is thus important to control access to these operations.
following operations have particular sensitivities/vulnerabilities: Specifically, the following operation has particular sensitivities/
vulnerabilities:
reset-pcep-statistics-all - The RPC is used to reset all PCEP * reset-pcep-statistics-all: The RPC is used to reset all PCEP
statistics across all peers and sessions. An unauthorized reset statistics across all peers and sessions. An unauthorized reset
could impact monitoring. could impact monitoring.
10. IANA Considerations 10. IANA Considerations
This document requests the IANA to register two URIs in the "IETF XML IANA has registered the following URIs in the "IETF XML Registry"
Registry" [RFC3688]. Following the format in RFC 3688, the following [RFC3688]:
registrations are requested -
URI: urn:ietf:params:xml:ns:yang:ietf-pcep
Registrant Contact: The IESG
XML: N/A; the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-pcep-stats
Registrant Contact: The IESG
XML: N/A; the requested URI is an XML namespace.
This document requests the IANA to register two YANG modules in the
"YANG Module Names" registry [RFC6020], as follows -
Name: ietf-pcep
Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep
Prefix: pcep
Reference: [This.I-D]
Name: ietf-pcep-stats
Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep-stats
Prefix: pcep-stats
Reference: [This.I-D]
11. Implementation Status
[Note to the RFC Editor - remove this section before publication, as
well as remove the reference to RFC 7942.]
This section records the status of known implementations of the
protocol defined by this specification at the time of posting of this
Internet-Draft, and is based on a proposal described in [RFC7942].
The description of implementations in this section is intended to
assist the IETF in its decision processes in progressing drafts to
RFCs. Please note that the listing of any individual implementation
here does not imply endorsement by the IETF. Furthermore, no effort
has been spent to verify the information presented here that was
supplied by IETF contributors. This is not intended as, and must not
be construed to be, a catalog of available implementations or their
features. Readers are advised to note that other implementations may
exist.
According to [RFC7942], "this will allow reviewers and working groups URI: urn:ietf:params:xml:ns:yang:ietf-pcep
to assign due consideration to documents that have the benefit of Registrant Contact: The IESG
running code, which may serve as evidence of valuable experimentation XML: N/A; the requested URI is an XML namespace.
and feedback that have made the implemented protocols more mature.
It is up to the individual working groups to use this information as
they see fit".
Currently, there are no known implementations of the YANG Module as URI: urn:ietf:params:xml:ns:yang:ietf-pcep-stats
specified. Registrant Contact: The IESG
XML: N/A; the requested URI is an XML namespace.
12. Acknowledgements IANA has registered the following YANG modules in the "YANG Module
Names" registry [RFC6020]:
The initial document is based on the PCEP MIB [RFC7420]. The authors Name: ietf-pcep
of this document would like to thank the authors of the above Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep
document. Prefix: pcep
Reference: RFC 9826
Thanks to Martin Bjorklund and Tom Petch for the detailed review. Name: ietf-pcep-stats
Thanks to Mahesh Jethanandani and Jan Lindblad for the YANGDOCTOR Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep-stats
review. Thanks to Scott Kelly for the SECDIR review. Thanks to Gyan Prefix: pcep-stats
Mishra and Matthew Bocci for the RTGDIR review. Reference: RFC 9826
13. References 11. References
13.1. Normative References 11.1. Normative References
[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>.
[RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH)
Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252,
January 2006, <https://www.rfc-editor.org/info/rfc4252>.
[RFC5088] Le Roux, JL., Ed., Vasseur, JP., Ed., Ikejiri, Y., and R. [RFC5088] Le Roux, JL., Ed., Vasseur, JP., Ed., Ikejiri, Y., and R.
Zhang, "OSPF Protocol Extensions for Path Computation Zhang, "OSPF Protocol Extensions for Path Computation
Element (PCE) Discovery", RFC 5088, DOI 10.17487/RFC5088, Element (PCE) Discovery", RFC 5088, DOI 10.17487/RFC5088,
January 2008, <https://www.rfc-editor.org/info/rfc5088>. January 2008, <https://www.rfc-editor.org/info/rfc5088>.
[RFC5089] Le Roux, JL., Ed., Vasseur, JP., Ed., Ikejiri, Y., and R. [RFC5089] Le Roux, JL., Ed., Vasseur, JP., Ed., Ikejiri, Y., and R.
Zhang, "IS-IS Protocol Extensions for Path Computation Zhang, "IS-IS Protocol Extensions for Path Computation
Element (PCE) Discovery", RFC 5089, DOI 10.17487/RFC5089, Element (PCE) Discovery", RFC 5089, DOI 10.17487/RFC5089,
January 2008, <https://www.rfc-editor.org/info/rfc5089>. January 2008, <https://www.rfc-editor.org/info/rfc5089>.
skipping to change at page 104, line 25 skipping to change at line 4885
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010,
<https://www.rfc-editor.org/info/rfc6020>. <https://www.rfc-editor.org/info/rfc6020>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc6241>.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
<https://www.rfc-editor.org/info/rfc6242>.
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
RFC 6991, DOI 10.17487/RFC6991, July 2013, RFC 6991, DOI 10.17487/RFC6991, July 2013,
<https://www.rfc-editor.org/info/rfc6991>. <https://www.rfc-editor.org/info/rfc6991>.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016, RFC 7950, DOI 10.17487/RFC7950, August 2016,
<https://www.rfc-editor.org/info/rfc7950>. <https://www.rfc-editor.org/info/rfc7950>.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
skipping to change at page 108, line 12 skipping to change at line 5055
Element Communication Protocol (PCEP) Extensions for Element Communication Protocol (PCEP) Extensions for
Establishing Relationships between Sets of Label Switched Establishing Relationships between Sets of Label Switched
Paths and Virtual Networks", RFC 9358, Paths and Virtual Networks", RFC 9358,
DOI 10.17487/RFC9358, February 2023, DOI 10.17487/RFC9358, February 2023,
<https://www.rfc-editor.org/info/rfc9358>. <https://www.rfc-editor.org/info/rfc9358>.
[RFC9645] Watsen, K., "YANG Groupings for TLS Clients and TLS [RFC9645] Watsen, K., "YANG Groupings for TLS Clients and TLS
Servers", RFC 9645, DOI 10.17487/RFC9645, October 2024, Servers", RFC 9645, DOI 10.17487/RFC9645, October 2024,
<https://www.rfc-editor.org/info/rfc9645>. <https://www.rfc-editor.org/info/rfc9645>.
13.2. Informative References 11.2. Informative References
[I-D.ietf-pce-pcep-srv6-yang] [IANA-IGP] IANA, "Path Computation Element (PCE) Capability Flags",
Li, C., Sivabalan, S., Peng, S., Koldychev, M., and L. <https://www.iana.org/assignments/igp-parameters>.
Ndifor, "A YANG Data Model for Segment Routing (SR) Policy
and SR in IPv6 (SRv6) support in Path Computation Element
Communications Protocol (PCEP)", Work in Progress,
Internet-Draft, draft-ietf-pce-pcep-srv6-yang-06, 19
October 2024, <https://datatracker.ietf.org/doc/html/
draft-ietf-pce-pcep-srv6-yang-06>.
[I-D.ietf-pce-pceps-tls13] [IANA-PCEP]
IANA, "ASSOCIATION Type Field",
<https://www.iana.org/assignments/pcep>.
[PCEPS-UPDATE]
Dhody, D., Turner, S., and R. Housley, "Updates for PCEPS: Dhody, D., Turner, S., and R. Housley, "Updates for PCEPS:
TLS Connection Establishment Restrictions", Work in TLS Connection Establishment Restrictions", Work in
Progress, Internet-Draft, draft-ietf-pce-pceps-tls13-04, 9 Progress, Internet-Draft, draft-ietf-pce-pceps-tls13-04, 9
January 2024, <https://datatracker.ietf.org/doc/html/ January 2024, <https://datatracker.ietf.org/doc/html/
draft-ietf-pce-pceps-tls13-04>. draft-ietf-pce-pceps-tls13-04>.
[I-D.ietf-teas-yang-te]
Saad, T., Gandhi, R., Liu, X., Beeram, V. P., and I.
Bryskin, "A YANG Data Model for Traffic Engineering
Tunnels, Label Switched Paths and Interfaces", Work in
Progress, Internet-Draft, draft-ietf-teas-yang-te-37, 9
October 2024, <https://datatracker.ietf.org/doc/html/
draft-ietf-teas-yang-te-37>.
[IANA-IGP] "Path Computation Element (PCE) Capability Flags in
Interior Gateway Protocol (IGP) Parameters",
<https://www.iana.org/assignments/igp-parameters/igp-
parameters.xhtml#pce-capability-flags>.
[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 [RFC4655] Farrel, A., Vasseur, J.-P., and J. Ash, "A Path
Computation Element (PCE)-Based Architecture", RFC 4655, 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>.
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.2", RFC 5246, (TLS) Protocol Version 1.2", RFC 5246,
DOI 10.17487/RFC5246, August 2008, DOI 10.17487/RFC5246, August 2008,
<https://www.rfc-editor.org/info/rfc5246>. <https://www.rfc-editor.org/info/rfc5246>.
[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
Code: The Implementation Status Section", BCP 205,
RFC 7942, DOI 10.17487/RFC7942, July 2016,
<https://www.rfc-editor.org/info/rfc7942>.
[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
and R. Wilton, "Network Management Datastore Architecture and R. Wilton, "Network Management Datastore Architecture
(NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
<https://www.rfc-editor.org/info/rfc8342>. <https://www.rfc-editor.org/info/rfc8342>.
[RFC8751] Dhody, D., Lee, Y., Ceccarelli, D., Shin, J., and D. King, [RFC8751] Dhody, D., Lee, Y., Ceccarelli, D., Shin, J., and D. King,
"Hierarchical Stateful Path Computation Element (PCE)", "Hierarchical Stateful Path Computation Element (PCE)",
RFC 8751, DOI 10.17487/RFC8751, March 2020, RFC 8751, DOI 10.17487/RFC8751, March 2020,
<https://www.rfc-editor.org/info/rfc8751>. <https://www.rfc-editor.org/info/rfc8751>.
[RFC9603] Li, C., Ed., Kaladharan, P., Sivabalan, S., Koldychev, M., [RFC9603] Li, C., Ed., Kaladharan, P., Sivabalan, S., Koldychev, M.,
and Y. Zhu, "Path Computation Element Communication and Y. Zhu, "Path Computation Element Communication
Protocol (PCEP) Extensions for IPv6 Segment Routing", Protocol (PCEP) Extensions for IPv6 Segment Routing",
RFC 9603, DOI 10.17487/RFC9603, July 2024, RFC 9603, DOI 10.17487/RFC9603, July 2024,
<https://www.rfc-editor.org/info/rfc9603>. <https://www.rfc-editor.org/info/rfc9603>.
[YANG-GUIDELINES]
Bierman, A., Boucadair, M., and Q. Wu, "Guidelines for
Authors and Reviewers of Documents Containing YANG Data
Models", Work in Progress, Internet-Draft, draft-ietf-
netmod-rfc8407bis-28, 5 June 2025,
<https://datatracker.ietf.org/doc/html/draft-ietf-netmod-
rfc8407bis-28>.
[YANG-PCEP-SR]
Li, C., Sivabalan, S., Peng, S., Koldychev, M., and L.
Ndifor, "A YANG Data Model for Segment Routing (SR) Policy
and SR in IPv6 (SRv6) support in Path Computation Element
Communications Protocol (PCEP)", Work in Progress,
Internet-Draft, draft-ietf-pce-pcep-srv6-yang-07, 21 April
2025, <https://datatracker.ietf.org/doc/html/draft-ietf-
pce-pcep-srv6-yang-07>.
[YANG-TE] Saad, T., Gandhi, R., Liu, X., Beeram, V. P., and I.
Bryskin, "A YANG Data Model for Traffic Engineering
Tunnels, Label Switched Paths and Interfaces", Work in
Progress, Internet-Draft, draft-ietf-teas-yang-te-38, 29
May 2025, <https://datatracker.ietf.org/doc/html/draft-
ietf-teas-yang-te-38>.
Appendix A. The Full PCEP Data Model Appendix A. The Full PCEP Data Model
The module, "ietf-pcep", defines the basic components of a PCE The module "ietf-pcep" defines the basic components of a PCE speaker.
speaker. The tree depth in the tree is set to 10. The tree depth in the tree is set to 10.
module: ietf-pcep module: ietf-pcep
+--rw pcep! +--rw pcep!
+--rw entity +--rw entity
+--rw addr* inet:ip-address-no-zone +--rw addr* inet:ip-address-no-zone
+--rw enabled? boolean +--rw enabled? boolean
+--rw role role +--rw role 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? oper-status +--ro oper-status? oper-status
+--rw domains +--rw domains
| +--rw domain* [type domain] | +--rw domain* [type domain]
| +--rw type identityref | +--rw type identityref
| +--rw domain domain | +--rw domain domain
+--rw capabilities +--rw capabilities
| +--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-mpls {sr-mpls}? | +--rw sr-mpls {sr-mpls}?
| | +--rw enabled? boolean | | +--rw enabled? boolean
| | +--rw no-msd-limit? boolean | | +--rw no-msd-limit? boolean
| | +--rw nai? boolean | | +--rw nai? boolean
| +--rw stateful-gmpls {stateful,gmpls}? | +--rw stateful-gmpls {stateful,gmpls}?
| | +--rw enabled? boolean | | +--rw enabled? boolean
| +--rw inter-layer? boolean {inter-layer}? | +--rw inter-layer? boolean {inter-layer}?
| +--rw h-pce {h-pce}? | +--rw h-pce {h-pce}?
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw stateful? boolean {stateful}? | +--rw stateful? boolean {stateful}?
| +--rw role? hpce-role | +--rw role? hpce-role
+--ro msd? uint8 {sr-mpls}? +--ro msd? uint8 {sr-mpls}?
+--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)
| | | +--rw keystring? string | | | +--rw keystring? string
| | +--:(hexadecimal) {key-chain:hex-key-string}? | | +--:(hexadecimal) {key-chain:hex-key-string}?
| | +--rw hexadecimal-string? yang:hex-string | | +--rw hexadecimal-string? yang:hex-string
| +--:(auth-tls) {tls}? | +--:(auth-tls) {tls}?
| +--rw (role)? | +--rw (role)?
| +--:(server) | +--:(server)
| | +--rw tls-server | | +--rw tls-server
| | +--rw server-identity | | +--rw server-identity
| | | +--rw (auth-type) | | | +--rw (auth-type)
| | | ... | | | ...
| | +--rw client-authentication! | | +--rw client-authentication!
| | | {client-auth-supported}? | | | {client-auth-supported}?
| | | +--rw ca-certs! {client-auth-x509-cert}? | | | +--rw ca-certs! {client-auth-x509-cert}?
| | | | ... | | | | ...
| | | +--rw ee-certs! {client-auth-x509-cert}? | | | +--rw ee-certs! {client-auth-x509-cert}?
| | | | ... | | | | ...
| | | +--rw raw-public-keys! | | | +--rw raw-public-keys!
| | | | {client-auth-raw-public-key}? | | | | {client-auth-raw-public-key}?
| | | | ... | | | | ...
| | | +--rw tls12-psks? empty | | | +--rw tls12-psks? empty
| | | | {client-auth-tls12-psk}? | | | | {client-auth-tls12-psk}?
| | | +--rw tls13-epsks? empty | | | +--rw tls13-epsks? empty
| | | {client-auth-tls13-epsk}? | | | {client-auth-tls13-epsk}?
| | +--rw hello-params {tlscmn:hello-params}? | | +--rw hello-params {tlscmn:hello-params}?
| | | +--rw tls-versions | | | +--rw tls-versions
| | | | ... | | | | ...
| | | +--rw cipher-suites | | | +--rw cipher-suites
| | | ... | | | ...
| | +--rw keepalives {tls-server-keepalives}? | | +--rw keepalives {tls-server-keepalives}?
| | +--rw peer-allowed-to-send? empty | | +--rw peer-allowed-to-send? empty
| | +--rw test-peer-aliveness! | | +--rw test-peer-aliveness!
| | ... | | ...
| +--:(client) | +--:(client)
| +--rw tls-client | +--rw tls-client
| +--rw client-identity! | +--rw client-identity!
| | +--rw (auth-type) | | +--rw (auth-type)
| | ... | | ...
| +--rw server-authentication | +--rw server-authentication
| | +--rw ca-certs! {server-auth-x509-cert}? | | +--rw ca-certs! {server-auth-x509-cert}?
| | | ... | | | ...
| | +--rw ee-certs! {server-auth-x509-cert}? | | +--rw ee-certs! {server-auth-x509-cert}?
| | | ... | | | ...
| | +--rw raw-public-keys! | | +--rw raw-public-keys!
| | | {server-auth-raw-public-key}? | | | {server-auth-raw-public-key}?
| | | ... | | | ...
| | +--rw tls12-psks? empty | | +--rw tls12-psks? empty
| | | {server-auth-tls12-psk}? | | | {server-auth-tls12-psk}?
| | +--rw tls13-epsks? empty | | +--rw tls13-epsks? empty
| | {server-auth-tls13-epsk}? | | {server-auth-tls13-epsk}?
| +--rw hello-params {tlscmn:hello-params}? | +--rw hello-params {tlscmn:hello-params}?
| | +--rw tls-versions | | +--rw tls-versions
| | | ... | | | ...
| | +--rw cipher-suites | | +--rw cipher-suites
| | ... | | ...
| +--rw keepalives {tls-client-keepalives}? | +--rw keepalives {tls-client-keepalives}?
| +--rw peer-allowed-to-send? empty | +--rw peer-allowed-to-send? empty
| +--rw test-peer-aliveness! | +--rw test-peer-aliveness!
| ... | ...
+--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 neighbour-domains | +--rw neighbor-domains
| | +--rw domain* [type domain] | | +--rw domain* [type domain]
| | +--rw type identityref | | +--rw type identityref
| | +--rw domain domain | | +--rw domain 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-no-zone | +--rw pce-id? inet:ip-address-no-zone
+--rw connect-timer? uint16 +--rw connect-timer? uint16
+--rw connect-max-retry? uint32 +--rw connect-max-retry? uint32
+--rw init-back-off-timer uint16 +--rw init-back-off-timer uint16
+--rw max-back-off-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 keepalive-timer? uint8 +--rw keepalive-timer? uint8
+--rw dead-timer? uint8 +--rw dead-timer? uint8
+--rw allow-negotiation? boolean +--rw allow-negotiation? boolean
+--rw max-keepalive-timer uint8 +--rw max-keepalive-timer uint8
+--rw max-dead-timer uint8 +--rw max-dead-timer uint8
+--rw min-keepalive-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
| +--rw rpt-non-pcep-lsp? boolean | +--rw rpt-non-pcep-lsp? boolean
+--rw of-list {objective-function}? +--rw of-list {objective-function}?
| +--rw objective-function* [of] | +--rw objective-function* [of]
| +--rw of identityref | +--rw of identityref
+--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 type identityref | | +--ro type identityref
| | +--ro id uint16 | | +--ro id uint16
| | +--ro source inet:ip-address-no-zone | | +--ro source inet:ip-address-no-zone
| | +--ro global-source uint32 | | +--ro global-source uint32
| | +--ro extended-id string | | +--ro extended-id string
| | +--ro lsp* [plsp-id pcc-id lsp-id] | | +--ro lsp* [plsp-id pcc-id lsp-id]
| | +--ro plsp-id -> /pcep/entity/lsp-db/lsp/plsp-id | | +--ro plsp-id -> /pcep/entity/lsp-db/lsp/plsp-id
| | +--ro pcc-id leafref | | +--ro pcc-id leafref
| | +--ro lsp-id leafref | | +--ro lsp-id leafref
| +--ro lsp* [plsp-id pcc-id lsp-id] | +--ro lsp* [plsp-id pcc-id lsp-id]
| +--ro plsp-id uint32 | +--ro plsp-id uint32
| +--ro pcc-id inet:ip-address-no-zone | +--ro pcc-id inet:ip-address-no-zone
| +--ro source? inet:ip-address-no-zone | +--ro source? inet:ip-address-no-zone
| +--ro destination? inet:ip-address-no-zone | +--ro destination? inet:ip-address-no-zone
| +--ro tunnel-id? uint16 | +--ro tunnel-id? uint16
| +--ro lsp-id uint16 | +--ro lsp-id uint16
| +--ro extended-tunnel-id? inet:ip-address-no-zone | +--ro extended-tunnel-id? inet:ip-address-no-zone
| +--ro admin-state? boolean | +--ro admin-state? boolean
| +--ro operational-state? operational-state | +--ro operational-state? operational-state
| +--ro delegated | +--ro delegated
| | +--ro enabled? boolean | | +--ro enabled? boolean
| | +--ro peer? -> /pcep/entity/peers/peer/addr | | +--ro peer? -> /pcep/entity/peers/peer/addr
| | +--ro srp-id? uint32 | | +--ro srp-id? uint32
| +--ro initiation {pce-initiated}? | +--ro initiation {pce-initiated}?
| | +--ro enabled? boolean | | +--ro enabled? boolean
| | +--ro peer? -> /pcep/entity/peers/peer/addr | | +--ro peer? -> /pcep/entity/peers/peer/addr
| +--ro symbolic-path-name? string | +--ro symbolic-path-name? string
| +--ro last-error? identityref | +--ro last-error? identityref
| +--ro pst? identityref | +--ro pst? identityref
| +--ro association-list* | +--ro association-list*
| [type id source global-source extended-id] | [type id source global-source extended-id]
| {association}? | {association}?
| +--ro type | +--ro type
| | -> /pcep/entity/lsp-db/association-list/type | | -> /pcep/entity/lsp-db/association-list/type
| +--ro id leafref | +--ro id leafref
| +--ro source leafref | +--ro source leafref
| +--ro global-source leafref | +--ro global-source leafref
| +--ro extended-id leafref | +--ro extended-id leafref
+--ro path-keys {path-key}? +--ro path-keys {path-key}?
| +--ro path-key* [key] | +--ro path-key* [key]
| +--ro key uint16 | +--ro key uint16
| +--ro cps | +--ro cps
| | +--ro explicit-route-objects* [index] | | +--ro explicit-route-objects* [index]
| | +--ro index uint32 | | +--ro index uint32
| +--ro pcc-requester? -> /pcep/entity/peers/peer/addr | +--ro pcc-requester? -> /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]
+--rw addr inet:ip-address-no-zone +--rw addr inet:ip-address-no-zone
+--rw role role +--rw role role
+--rw description? string +--rw description? string
+--rw domains +--rw domains
| +--rw domain* [type domain] | +--rw domain* [type domain]
| +--rw type identityref | +--rw type identityref
| +--rw domain domain | +--rw domain domain
+--rw capabilities +--rw capabilities
| +--rw capability? bits | +--rw capability? bits
| +--rw pce-initiated? boolean {pce-initiated}? | +--rw pce-initiated? boolean {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}?
| +--rw incremental-sync? boolean | +--rw incremental-sync? boolean
| | {stateful,sync-opt}? | | {stateful,sync-opt}?
| +--rw sr-mpls {sr-mpls}? | +--rw sr-mpls {sr-mpls}?
| | +--rw enabled? boolean | | +--rw enabled? boolean
| | +--rw no-msd-limit? boolean | | +--rw no-msd-limit? boolean
| | +--rw nai? boolean | | +--rw nai? boolean
| +--rw stateful-gmpls {stateful,gmpls}? | +--rw stateful-gmpls {stateful,gmpls}?
| | +--rw enabled? boolean | | +--rw enabled? boolean
| +--rw inter-layer? boolean {inter-layer}? | +--rw inter-layer? boolean {inter-layer}?
| +--rw h-pce {h-pce}? | +--rw h-pce {h-pce}?
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw stateful? boolean {stateful}? | +--rw stateful? boolean {stateful}?
| +--rw role? hpce-role | +--rw role? hpce-role
+--ro msd? uint8 {sr-mpls}? +--ro msd? uint8 {sr-mpls}?
+--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 neighbour-domains | +--rw neighbor-domains
| +--rw domain* [type domain] | +--rw domain* [type domain]
| +--rw type identityref | +--rw type identityref
| +--rw domain domain | +--rw domain 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)
| | | +--rw keystring? string | | | +--rw keystring? string
| | +--:(hexadecimal) {key-chain:hex-key-string}? | | +--:(hexadecimal) {key-chain:hex-key-string}?
| | +--rw hexadecimal-string? yang:hex-string | | +--rw hexadecimal-string? yang:hex-string
| +--:(auth-tls) {tls}? | +--:(auth-tls) {tls}?
| +--rw (role)? | +--rw (role)?
| +--:(server) | +--:(server)
| | +--rw tls-server | | +--rw tls-server
| | ... | | ...
| +--:(client) | +--:(client)
| +--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 initiator +--ro initiator initiator
+--ro role? -> ../../../role +--ro role? -> ../../../role
+--ro state-last-change? yang:timestamp +--ro state-last-change? yang:timestamp
+--ro state? sess-state +--ro state? sess-state
+--ro session-creation? yang:timestamp +--ro session-creation? yang:timestamp
+--ro connect-retry? yang:counter32 +--ro connect-retry? yang:counter32
+--ro local-id? uint8 +--ro local-id? uint8
+--ro remote-id? uint8 +--ro remote-id? uint8
+--ro keepalive-timer? uint8 +--ro keepalive-timer? uint8
+--ro peer-keepalive-timer? uint8 +--ro peer-keepalive-timer? uint8
+--ro dead-timer? uint8 +--ro dead-timer? uint8
+--ro peer-dead-timer? uint8 +--ro peer-dead-timer? uint8
+--ro ka-hold-time-rem? uint8 +--ro ka-hold-time-rem? uint8
+--ro overloaded? boolean +--ro overloaded? boolean
+--ro overloaded-timestamp? yang:timestamp +--ro overloaded-timestamp? yang:timestamp
+--ro overload-time? uint32 +--ro overload-time? uint32
+--ro peer-overloaded? boolean +--ro peer-overloaded? boolean
+--ro peer-overloaded-timestamp? yang:timestamp +--ro peer-overloaded-timestamp? yang:timestamp
+--ro peer-overload-time? uint32 +--ro peer-overload-time? uint32
+--ro lspdb-sync? sync-state +--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 +--ro speaker-entity-id? string
{sync-opt}? {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? leafref | +--ro session-initiator? leafref
| +--ro state-last-change? yang:timestamp | +--ro state-last-change? yang:timestamp
| +--ro state? sess-state | +--ro state? 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? initiator | +--ro session-initiator? initiator
| +--ro state-last-change? yang:timestamp | +--ro state-last-change? yang:timestamp
| +--ro state? sess-state | +--ro state? 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? leafref | +--ro session-initiator? leafref
| +--ro overloaded? boolean | +--ro overloaded? boolean
| +--ro overloaded-timestamp? yang:timestamp | +--ro overloaded-timestamp? yang:timestamp
| +--ro overload-time? uint32 | +--ro overload-time? uint32
+---n pcep-session-local-overload-clear +---n pcep-session-local-overload-clear
| +--ro peer-addr? | +--ro peer-addr?
| | -> /pcep/entity/peers/peer/addr | | -> /pcep/entity/peers/peer/addr
| +--ro overloaded? boolean | +--ro overloaded? boolean
| +--ro overloaded-clear-timestamp? yang:timestamp | +--ro overloaded-clear-timestamp? yang:timestamp
+---n pcep-session-peer-overload +---n pcep-session-peer-overload
| +--ro peer-addr? | +--ro peer-addr?
| | -> /pcep/entity/peers/peer/addr | | -> /pcep/entity/peers/peer/addr
| +--ro session-initiator? leafref | +--ro session-initiator? leafref
| +--ro peer-overloaded? boolean | +--ro peer-overloaded? boolean
| +--ro peer-overloaded-timestamp? yang:timestamp | +--ro peer-overloaded-timestamp? yang:timestamp
| +--ro peer-overload-time? uint32 | +--ro peer-overload-time? uint32
+---n pcep-session-peer-overload-clear +---n pcep-session-peer-overload-clear
+--ro peer-addr? +--ro peer-addr?
| -> /pcep/entity/peers/peer/addr | -> /pcep/entity/peers/peer/addr
+--ro peer-overloaded? boolean +--ro peer-overloaded? boolean
+--ro peer-overloaded-clear-timestamp? yang:timestamp +--ro peer-overloaded-clear-timestamp? yang:timestamp
Appendix B. Example Appendix B. Example
The example below provides an overview of PCEP peer session The example below provides an overview of PCEP peer session
information and LSP-DB in the YANG Module. information and LSP-DB in the YANG module.
+-------+ +-------+ +-------+ +-------+
| | | | | | | |
| PCC1 |<---------------->| | | PCC1 |<---------------->| |
| | | | | | | |
+-------+ | | +-------+ | |
IP:192.0.2.1 | | IP:192.0.2.1 | |
| PCE | | PCE |
| | | |
+-------+ | | +-------+ | |
skipping to change at page 120, line 4 skipping to change at line 5618
{ {
"initiator": "remote", "initiator": "remote",
"role": "pcc" "role": "pcc"
} }
] ]
} }
} }
] ]
} }
} }
} }
} }
Similarly a PCEP session with IPv6 address between PCE (2001:db8::3) Similarly, a PCEP session with an IPv6 address between a PCE
and a PCC (2001:db8::4) could also be setup. (2001:db8::3) and a PCC (2001:db8::4) could also be set up.
Appendix C. Design Objectives Appendix C. Design Objectives
This section describes some of the design objectives for the model: This section describes some of the design objectives for the model:
* In the case of existing implementations, it needs to map the data * Existing implementations need to map the data model defined in
model defined in this document to their proprietary data model. this document to their proprietary data model. To facilitate such
To facilitate such mappings, the data model should be simple. mappings, the data model should be simple.
* 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.
* Mapping to the PCEP MIB Module [RFC7420] should be clear. * Mapping to the PCEP MIB module [RFC7420] should be clear.
* The data model should allow for static configurations of peers. * The data model should allow for static configurations of peers.
* 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 that augments the base
data model. data model.
* 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.
Appendix D. Relationship with PCEP MIB Appendix D. Relationship with PCEP MIB
If a node implements the PCEP-MIB [RFC7420], data nodes from the YANG If a node implements the PCEP MIB [RFC7420], data nodes from the YANG
module can be mapped to table entries in the PCEP-MIB. module can be mapped to table entries in the PCEP MIB.
+==========================================+====================+ +==========================================+====================+
| YANG Data Nodes | PCEP MIB Objects | | YANG Data Nodes | PCEP MIB Objects |
+==========================================+====================+ +==========================================+====================+
| /pcep/entity | PcePcepEntityEntry | | /pcep/entity | PcePcepEntityEntry |
+------------------------------------------+--------------------+ +------------------------------------------+--------------------+
| /pcep/entity/peers/peer | pcePcepPeerEntry | | /pcep/entity/peers/peer | pcePcepPeerEntry |
+------------------------------------------+--------------------+ +------------------------------------------+--------------------+
| /pcep/entity/peers/peer/sessions/session | pcePcepSessEntry | | /pcep/entity/peers/peer/sessions/session | pcePcepSessEntry |
+------------------------------------------+--------------------+ +------------------------------------------+--------------------+
Table 3: High Level Relationship with PCEP MIB Table 3: High-Level Relationship with PCEP MIB
+=====================+==========================================+ +=====================+==========================================+
| YANG Data Nodes | PCEP MIB Objects | | YANG Data Nodes | PCEP MIB Objects |
+=====================+==========================================+ +=====================+==========================================+
| - | pcePcepEntityIndex | | - | pcePcepEntityIndex |
+---------------------+------------------------------------------+ +---------------------+------------------------------------------+
| admin-status | pcePcepEntityAdminStatus | | admin-status | pcePcepEntityAdminStatus |
+---------------------+------------------------------------------+ +---------------------+------------------------------------------+
| oper-status | pcePcepEntityOperStatus | | oper-status | pcePcepEntityOperStatus |
+---------------------+------------------------------------------+ +---------------------+------------------------------------------+
skipping to change at page 127, line 23 skipping to change at line 5962
+-----------------------------------+-----------------------------+ +-----------------------------------+-----------------------------+
| pcep-session-local-overload-clear |pcePcepSessLocalOverloadClear| | pcep-session-local-overload-clear |pcePcepSessLocalOverloadClear|
+-----------------------------------+-----------------------------+ +-----------------------------------+-----------------------------+
| pcep-session-peer-overload |pcePcepSessPeerOverload | | pcep-session-peer-overload |pcePcepSessPeerOverload |
+-----------------------------------+-----------------------------+ +-----------------------------------+-----------------------------+
| pcep-session-peer-overload-clear |pcePcepSessPeerOverloadClear | | pcep-session-peer-overload-clear |pcePcepSessPeerOverloadClear |
+-----------------------------------+-----------------------------+ +-----------------------------------+-----------------------------+
Table 7: Relationship with PCEP MIB Notification Table 7: Relationship with PCEP MIB Notification
Appendix E. Contributor Addresses Acknowledgements
The initial document is based on the PCEP MIB [RFC7420]. The authors
of this document would like to thank the authors of the above
document.
Thanks to Martin Bjorklund and Tom Petch for the detailed review.
Thanks to Mahesh Jethanandani and Jan Lindblad for the YANGDOCTOR
review. Thanks to Scott Kelly for the SECDIR review. Thanks to Gyan
Mishra and Matthew Bocci for the RTGDIR review.
Contributors
Rohit Pobbathi Rohit Pobbathi
Nokia Networks Nokia Networks
India India
Email: rohit.pobbathi_ashok@nokia.com
EMail: rohit.pobbathi_ashok@nokia.com
Vinod KumarS Vinod KumarS
India India
Email: vinods.kumar@gmail.com
EMail: vinods.kumar@gmail.com
Zafar Ali Zafar Ali
Cisco Systems Cisco Systems
Canada Canada
Email: zali@cisco.com
EMail: zali@cisco.com
Xufeng Liu Xufeng Liu
Email: xufeng.liu.ietf@gmail.com
EMail: xufeng.liu.ietf@gmail.com
Young Lee Young Lee
Samsung Samsung
Email: younglee.tx@gmail.com
EMail: younglee.tx@gmail.com
Udayasree Palle Udayasree Palle
EMail: udayasreereddy@gmail.com Email: udayasreereddy@gmail.com
Xian Zhang Xian Zhang
Huawei Technologies Huawei Technologies
Bantian, Longgang District Bantian, Longgang District
Shenzhen 518129 Shenzhen
P.R.China 518129
China
EMail: zhang.xian@huawei.com Email: zhang.xian@huawei.com
Avantika Avantika
ECI Telecom ECI Telecom
India India
Email: avantika.srm@gmail.com
EMail: avantika.srm@gmail.com
Shashikanth Shashikanth
India India
Email: shashivh@gmail.com
EMail: shashivh@gmail.com
Authors' Addresses Authors' Addresses
Dhruv Dhody (editor) Dhruv Dhody (editor)
Huawei Huawei
India India
Email: dhruv.ietf@gmail.com Email: dhruv.ietf@gmail.com
Vishnu Pavan Beeram Vishnu Pavan Beeram
Juniper Networks Juniper Networks
 End of changes. 440 change blocks. 
1158 lines changed or deleted 1110 lines changed or added

This html diff was produced by rfcdiff 1.48.