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. |