<?xml version="1.0"encoding="us-ascii"?>encoding="utf-8"?> <!DOCTYPE rfcSYSTEM "rfc2629.dtd"[]> <?rfc toc="yes" ?> <?rfc tocompact="yes"?> <?rfc tocdepth="4"?> <?rfc tocindent="yes"?> <?rfc symrefs="yes" ?> <?rfc sortrefs="yes"?> <?rfc rfcedstyle="yes"?> <?rfc subcompact="no"?> <?rfc compact="yes" ?> <?rfc iprnotified="Yes" ?> <?rfc strict="no" ?>[ <!ENTITY nbsp " "> <!ENTITY zwsp "​"> <!ENTITY nbhy "‑"> <!ENTITY wj "⁠"> ]> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" category="std" docName="draft-ietf-pce-pcep-yang-30" number="9826" consensus="true" obsoletes="" updates="" submissionType="IETF"xml:lang="en">xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" version="3"> <!-- [rfced] FYI - We updated the abbreviated title (appears in the header of this document's PDF output) as follows. Original: PCE-YANG Updated: YANG Data Model for PCEP --> <front> <title abbrev="PCE-YANG">A YANG Data Model for the Path Computation ElementCommunicationsCommunication Protocol (PCEP)</title> <seriesInfo name="RFC" value="9826"/> <author initials="D" surname="Dhody" fullname="Dhruv Dhody" role="editor"> <organization>Huawei</organization> <address> <postal><street></street> <city></city> <region></region> <code></code><country>India</country> </postal> <email>dhruv.ietf@gmail.com</email> </address> </author> <author fullname="Vishnu Pavan Beeram" initials="V." surname="Beeram"> <organization>Juniper Networks</organization> <address> <postal><street></street> <city></city> <code></code><country>India</country> </postal> <email> vbeeram@juniper.net </email> </address> </author> <author fullname="Jonathan Hardwick" initials="J." surname="Hardwick"><organization></organization><organization/> <address> <postal><street></street> <city></city> <code></code> <country>UK</country><country>United Kingdom</country> </postal> <email>jonathan.e.hardwick@gmail.com</email> </address> </author> <author fullname="Jeff Tantsura" initials="J." surname="Tantsura"> <organization>Nvidia</organization> <address> <postal><street></street> <city></city> <region></region> <code></code> <country>USA</country><country>United States of America</country> </postal> <email>jefftant.ietf@gmail.com</email> </address> </author> <date/> <area>Routing</area> <workgroup>PCE Working Group</workgroup>month="July" year="2025"/> <area>RTG</area> <workgroup>pce</workgroup> <!-- [rfced] Please insert any keywords (beyond those that appear in the title) for use on https://www.rfc-editor.org/search. --> <keyword>example</keyword> <abstract> <t>This document defines a YANG data model for the management of the Path Computation ElementcommunicationsCommunication Protocol (PCEP) for communications between a Path Computation Client (PCC) and a Path Computation Element (PCE), or between two PCEs.</t> </abstract> </front> <middle> <sectiontitle="Introduction" toc="default">toc="default" numbered="true"> <name>Introduction</name> <t>The Path Computation Element (PCE) defined in <xreftarget="RFC4655"/>target="RFC4655" format="default"/> is an entity that is capable of computing a network path or route based on a networkgraph,graph and applying computational constraints. A Path Computation Client (PCC) may make requests to a PCE for paths to be computed.</t> <t>PCEP is the communication protocol between a PCC andPCE andPCE; it is defined in <xreftarget="RFC5440"/>.target="RFC5440" format="default"/>. PCEP interactions include path computation requests and path computation replies as well as notifications of specific states related to the use of a PCE in the context of Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) Traffic Engineering (TE). <xreftarget='RFC8231'/>target="RFC8231" format="default"/> specifies extensions to PCEP to enable stateful control ofMPLS TE LSPs.MPLS-TE Label Switched Paths (LSPs). <xreftarget='RFC8664'/>target="RFC8664" format="default"/> and <xreftarget='RFC9603'/>target="RFC9603" format="default"/> extend PCEP to support Segment Routing in MPLS andIPv6IPv6, respectively.</t> <t>This document defines a YANG 1.1 <xreftarget="RFC7950"/>target="RFC7950" format="default"/> data model for the management of PCEP speakers. It is important to establish a common data model for how PCEP speakers are identified, configured, and monitored. The data model includes configuration data and state data.</t> <t>This document contains a specification of the PCEP YANGmodule, "ietf-pcep"module "ietf-pcep", which provides the PCEP <xreftarget="RFC5440"/>target="RFC5440" format="default"/> data model. Further, this document also includes the PCEP statistics YANG module"ietf-pcep-stats""ietf-pcep-stats", which provides statistics,counterscounters, and telemetry data.</t> <t>The YANG modules in this document conform to the Network Management Datastore Architecture (NMDA) <xreftarget="RFC8342"/>.target="RFC8342" format="default"/>. The origin of the data is indicated as per the origin metadata annotation.</t> </section> <sectiontitle="Requirements Language" toc="default"> <t>Thetoc="default" numbered="true"> <name>Requirements Language</name> <t> The key words"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY","<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and"OPTIONAL""<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described inBCP 14BCP 14 <xreftarget="RFC2119" />target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shownhere.</t>here. </t> </section> <sectiontitle="Terminologytoc="default" numbered="true"> <name>Terminology andNotation" toc="default"> <t> ThisNotation</name> <t>This document uses the terminology defined in <xreftarget="RFC4655"/>target="RFC4655" format="default"/> and <xreftarget="RFC5440"/>.target="RFC5440" format="default"/>. In particular, it uses thefollowing acronyms. <list style='symbols'>following:</t> <ul spacing="normal"> <li> <t> Path Computation Request (PCReq) message(PCReq).</t> </li> <li> <t> Path Computation Reply (PCRep) message(PCRep).</t> </li> <li> <t> Path Computation Notification (PCNtf) message(PCNtf).</t><t></li> <li> <t>Path Computation Error (PCErr) message(PCErr).</t> </li> <li> <t> Request Parameters (RP) object(RP).</t> </li> <li> <t> Synchronization Vector (SVEC) object(SVEC).</t> </li> <li> <t> Explicit Routeobject (ERO). </t> </list>Object (ERO) </t> </li> </ul> <t> This documentalsouses the following terms defined in <xreftarget="RFC7420"/>: <list style='symbols'> <t> PCEP entity: a local PCEP speaker.target="RFC7420" format="default"/>: </t><t><dl spacing="normal"> <dt>PCEP entity:</dt><dd>a local PCEPpeer: to refer to aspeaker</dd> <dt>PCEP peer:</dt><dd>a remote PCEPspeaker. </t> <t>PCEP speaker: wherespeaker</dd> <dt>PCEP speaker:</dt><dd>term used when it is not necessary to distinguish between local andremote. </t> </list> </t> <t>remote.</dd> </dl> <!-- [rfced] We have a few questions about the text below in Section 3. a) It seems that some of the terms in the list below are defined in RFC 8051 rather than in RFC 8231 (specifically, Stateful PCE, Passive Stateful PCE, Active Stateful PCE, and Delegation). If you agree, we will create a separate list for these as shown below and add a normative reference to RFC 8051. b) In the first two bullets, more than one term appears in a single bullet item. If no objections, we will separate these into separate bullets as shown below. c) Note that we updated the third and fourth bullets (regarding PCRpt and PCUpd) as shown below per Sections 6.1 and 6.2 of RFC 8231. Let us know any concerns. Original: Further, this document also uses the following terms defined in<xref target='RFC8231'/>[RFC8231] :<list style='symbols'> <t>* Stateful PCE, Passive Stateful PCE, Active Stateful PCE</t> <t>* Delegation, Revocation, Redelegation</t> <t>LSP* LSP State Report, Path Computation Report message(PCRpt).</t> <t>LSP(PCRpt). * LSP State Update, Path Computation Update message(PCUpd).</t> <t>PLSP-ID:(PCUpd). * PLSP-ID: a PCEP-specific identifier for theLSP.</t> <t>SRP:LSP. * SRP: Stateful PCE Request Parameters Perhaps: Further, this document uses the following terms defined in [RFC8051]: * Stateful PCE * Passive Stateful PCE * Active Stateful PCE * Delegation In addition, this document uses the following terms defined in [RFC8231]: * Revocation * Redelegation * Path Computation LSP State Report (PCRpt) message * Path Computation LSP Update RequestParameters</t> </list>(PCUpd) message * PLSP-ID (a PCEP-specific identifier for the LSP) * Stateful PCE Request Parameter (SRP) --> <!-- [rfced] We have condensed this text in Section 3 as follows. Please let us know any concerns. Original: [RFC8408] : * Path Setup Type (PST). [RFC8664] : * Segment Routing (SR). [RFC5541] : * Objective Function (OF). [RFC8697] : * Association. [RFC6241] : * Configuration data. * State data. Updated: Last, this document uses the following terms, which are defined in the RFCs indicated below: * Path Setup Type (PST) [RFC8408] * Segment Routing (SR) [RFC8664] * Objective Function (OF) [RFC5541] * Association [RFC8697] * Configuration data [RFC6241] * State data [RFC6241] --> <!-- [rfced] In Section 3, may we order the items in each list alphabetically? Or do you prefer the current order? --> <t> Further, this document uses the following terms defined in <xref target="RFC8231" format="default"/>: </t> <ul spacing="normal"> <li> <t> Stateful PCE, Passive Stateful PCE, Active Stateful PCE </t> </li> <li> <t> Delegation, Revocation, Redelegation </t> </li> <li> <t>Path Computation LSP State Report (PCRpt) message</t> </li> <li> <t>Path Computation LSP Update Request (PCUpd) message</t> </li> <li> <t>PLSP-ID (a PCEP-specific identifier for the LSP)</t> </li> <li> <t>Stateful PCE Request Parameter (SRP)</t> </li> </ul> <t>This document also uses the following terms defined in <xreftarget='RFC8281'/> : <list style='symbols'>target="RFC8281" format="default"/>: </t> <ul spacing="normal"> <li> <t>PCE-initiatedLSP, PathLSP</t></li> <li> <t>Path Computation LSP InitiateMessage (PCInitiate).</t> </list> </t> <t> <xref target='RFC8408'/> : <list style='symbols'>(PCInitiate) message</t> </li> </ul> <t>Last, this document uses the following terms, which are defined in the RFCs indicated below:</t> <ul spacing="normal"> <li> <t>Path Setup Type(PST).</t> </list> </t> <t>(PST) <xreftarget='RFC8664'/> : <list style='symbols'>target="RFC8408" format="default"/></t> </li> <li> <t>Segment Routing(SR).</t> </list> </t> <t>(SR) <xreftarget='RFC5541'/> : <list style='symbols'>target="RFC8664" format="default"/></t> </li> <li> <t>Objective Function(OF).</t> </list> </t> <t>(OF) <xreftarget='RFC8697'/> : <list style='symbols'> <t>Association.</t> </list> </t> <t>target="RFC5541" format="default"/></t> </li> <li> <t>Association <xreftarget='RFC6241'/> : <list style='symbols'>target="RFC8697" format="default"/></t> </li> <li> <t>Configurationdata.</t>data <xref target="RFC6241" format="default"/></t> </li> <li> <t>Statedata.</t> </list> </t>data <xref target="RFC6241" format="default"/></t> </li> </ul> <section anchor="sec.tree-symbols"title="Tree Diagrams" toc="default">toc="default" numbered="true"> <name>Tree Diagrams</name> <!-- [rfced] Because there are multiple tree diagrams used in this document, should plural "representations...are" rather than singular "representation...is" be used in this sentence? Original: A simplified graphical representation of the data model is used in this document. The meaning of the symbols in these diagrams is defined in [RFC8340]. Perhaps: Simplified graphical representations of the data model are used in this document. The meaning of the symbols in these diagrams is defined in [RFC8340]. --> <t>A simplified graphical representation of the data model is used in this document. The meaning of the symbols in these diagrams is defined in <xreftarget="RFC8340"/>.target="RFC8340" format="default"/>. </t> <!-- <list style="symbols"> <t>Brackets "[" and "]" enclose list keys.</t> <t>Abbreviations before data node names: "rw" means configuration (read-write) and "ro" state data (read-only).</t> <t>Symbols after data node names: "?" means an optional node, "!" means a presence container, and "*" denotes a list and leaf-list.</t> <t>Parentheses enclose choice and case nodes, and case nodes are also marked with a colon (":").</t> <t>Ellipsis ("...") stands for contents of subtrees that are not shown.</t> </list></t>--> </section> <sectiontitle="Prefixestoc="default" numbered="true"> <name>Prefixes in Data NodeNames" toc="default">Names</name> <t>In this document, the names of data nodes and other data model objects are often used without a prefix, as long as it is clear from the context in which YANG module each name is defined. Otherwise, names are prefixed using the standard prefix associated with the corresponding YANG module, as shown in <xref target="tab.prefixes"pageno="false"format="default"/>.</t><texttable<table anchor="tab.prefixes"title="Prefixesalign="center"> <name>Prefixes andcorrespondingCorresponding YANGmodules" suppress-title="false" align="center" style="full"> <ttcol align="left">Prefix</ttcol> <ttcolModules</name> <thead> <tr> <th align="left">Prefix</th> <th align="left">YANGmodule</ttcol> <ttcol align="left">Reference</ttcol> <c>yang</c><c>ietf-yang-types</c><c><xrefmodule</th> <th align="left">Reference</th> </tr> </thead> <tbody> <tr> <td align="left">yang</td> <td align="left">ietf-yang-types</td> <td align="left"> <xref target="RFC6991"pageno="false" format="default"/></c> <c>inet</c><c>ietf-inet-types</c><c><xrefformat="default"/></td> </tr> <tr> <td align="left">inet</td> <td align="left">ietf-inet-types</td> <td align="left"> <xref target="RFC6991"pageno="false" format="default"/></c> <!--<c>te</c><c>ietf-te</c><c><xref target="I-D.ietf-teas-yang-te" pageno="false" format="default"/></c>--> <c>te-types</c><c>ietf-te-types</c><c><xrefformat="default"/></td> </tr> <tr> <td align="left">te-types</td> <td align="left">ietf-te-types</td> <td align="left"> <xref target="RFC8776"pageno="false" format="default"/></c> <c>key-chain</c><c>ietf-key-chain</c><c><xrefformat="default"/></td> </tr> <tr> <td align="left">key-chain</td> <td align="left">ietf-key-chain</td> <td align="left"> <xref target="RFC8177"pageno="false" format="default"/></c> <c>nacm</c><c>ietf-netconf-acm</c><c><xrefformat="default"/></td> </tr> <tr> <td align="left">nacm</td> <td align="left">ietf-netconf-acm</td> <td align="left"> <xref target="RFC8341"pageno="false" format="default"/></c> <c>tlss</c><c>ietf-tls-server</c><c><xrefformat="default"/></td> </tr> <tr> <td align="left">tlss</td> <td align="left">ietf-tls-server</td> <td align="left"> <xref target="RFC9645"pageno="false" format="default"/></c> <c>tlsc</c><c>ietf-tls-client</c><c><xrefformat="default"/></td> </tr> <tr> <td align="left">tlsc</td> <td align="left">ietf-tls-client</td> <td align="left"> <xref target="RFC9645"pageno="false" format="default"/></c> <c>ospf</c><c>ietf-ospf</c><c><xrefformat="default"/></td> </tr> <tr> <td align="left">ospf</td> <td align="left">ietf-ospf</td> <td align="left"> <xref target="RFC9129"pageno="false" format="default"/></c> <c>isis</c><c>ietf-isis</c><c><xrefformat="default"/></td> </tr> <tr> <td align="left">isis</td> <td align="left">ietf-isis</td> <td align="left"> <xref target="RFC9130"pageno="false" format="default"/></c> </texttable>format="default"/></td> </tr> </tbody> </table> </section> <sectiontitle="Referencestoc="default" numbered="true"> <name>References in theModel" toc="default"> <t>FollowingModel</name> <!-- [rfced] The title and first sentence in Section 3.3 use "model", but the title of Table 2 uses "YANG modules". Should all three read "YANG modules"? Let us know if any updates would be helpful. Original: 3.3. References in the Model Following documents are referenced in the model defined in this document - ... Table 2: References in the YANG modules Perhaps: 3.3. References in the YANG Modules The following table lists the documents that are referenced in the YANG modules defined this document. ... Table 2: References in the YANG Modules --> <t>The following documents are referenced in the model defined in this document. </t><texttable<table anchor="tab.ref"title="Referencesalign="center"> <name>References in the YANGmodules" suppress-title="false" align="center" style="full"> <ttcol align="left">Documents</ttcol> <ttcol align="left">Reference</ttcol> <!--<c>RSVP-TE: Extensions to RSVP for LSP Tunnels</c><c><xref target="RFC3209" pageno="false" format="default"/></c>--> <c>OSPFModules</name> <thead> <tr> <th align="left">Documents</th> <th align="left">Reference</th> </tr> </thead> <tbody> <tr> <td align="left">OSPF Protocol Extensions for Path Computation Element (PCE)Discovery</c><c><xrefDiscovery</td> <td align="left"> <xref target="RFC5088"pageno="false" format="default"/></c> <c>IS-ISformat="default"/></td> </tr> <tr> <td align="left">IS-IS Protocol Extensions for Path Computation Element (PCE)Discovery</c><c><xrefDiscovery</td> <td align="left"> <xref target="RFC5089"pageno="false" format="default"/></c> <c>Pathformat="default"/></td> </tr> <tr> <td align="left">Path Computation Element (PCE) Communication Protocol(PCEP)</c><c><xref(PCEP)</td> <td align="left"> <xref target="RFC5440"pageno="false" format="default"/></c> <c>Preservingformat="default"/></td> </tr> <tr> <td align="left">Preserving Topology Confidentiality in Inter-Domain Path Computation Using a Path-Key-BasedMechanism</c><c><xrefMechanism</td> <td align="left"> <xref target="RFC5520"pageno="false" format="default"/></c> <c>Encodingformat="default"/></td> </tr> <tr> <td align="left">Encoding of Objective Functions in the Path Computation Element Communication Protocol(PCEP)</c><c><xref(PCEP)</td> <td align="left"> <xref target="RFC5541"pageno="false" format="default"/></c> <c>Pathformat="default"/></td> </tr> <tr> <td align="left">Path Computation Element Communication Protocol (PCEP) Requirements and Protocol Extensions in Support of Global ConcurrentOptimization</c><c><xrefOptimization</td> <td align="left"> <xref target="RFC5557"pageno="false" format="default"/></c> <c>Commonformat="default"/></td> </tr> <tr> <td align="left">Common YANG DataTypes</c><c><xrefTypes</td> <td align="left"> <xref target="RFC6991"pageno="false" format="default"/></c> <c>YANGformat="default"/></td> </tr> <tr> <td align="left">YANG Data Model for KeyChains</c><c><xrefChains</td> <td align="left"> <xref target="RFC8177"pageno="false" format="default"/></c> <c>Pathformat="default"/></td> </tr> <tr> <td align="left">Path Computation Element Communication Protocol (PCEP) Extensions for StatefulPCE</c><c><xrefPCE</td> <td align="left"> <xref target="RFC8231"pageno="false" format="default"/></c> <c>Optimizationsformat="default"/></td> </tr> <tr> <td align="left">Optimizations of Label Switched Path State Synchronization Procedures for a StatefulPCE</c><c><xrefPCE</td> <td align="left"> <xref target="RFC8232"pageno="false" format="default"/></c> <c>PCEPS:format="default"/></td> </tr> <tr> <td align="left">PCEPS: Usage of TLS to Provide a Secure Transport for the Path Computation Element Communication Protocol(PCEP)</c><c><xref(PCEP)</td> <td align="left"> <xref target="RFC8253"pageno="false" format="default"/></c> <c>Pathformat="default"/></td> </tr> <tr> <td align="left">Path Computation Element Communication Protocol (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful PCEModel</c><c><xrefModel</td> <td align="left"> <xref target="RFC8281"pageno="false" format="default"/></c> <c>Extensionsformat="default"/></td> </tr> <tr> <td align="left">Extensions to the Path Computation Element Communication Protocol (PCEP) for Point-to-Multipoint Traffic Engineering Label SwitchedPaths</c><c><xrefPaths</td> <td align="left"> <xref target="RFC8306"pageno="false" format="default"/></c> <c>Networkformat="default"/></td> </tr> <tr> <td align="left">Network Configuration Access ControlModel</c><c><xrefModel</td> <td align="left"> <xref target="RFC8341"pageno="false" format="default"/></c> <c>Conveyingformat="default"/></td> </tr> <tr> <td align="left">Conveying Path Setup Type in PCE Communication Protocol (PCEP)Messages</c><c><xrefMessages</td> <td align="left"> <xref target="RFC8408"pageno="false" format="default"/></c> <c>Traffic Engineering Commonformat="default"/></td> </tr> <tr> <td align="left">Common YANGTypes</c><c><xrefData Types for Traffic Engineering</td> <td align="left"> <xref target="RFC8776"pageno="false" format="default"/></c> <c>YANGformat="default"/></td> </tr> <tr> <td align="left">YANG Groupings for TLS Clients and TLSServers</c><c><xrefServers</td> <td align="left"> <xref target="RFC9645"pageno="false" format="default"/></c> <c>PCEPformat="default"/></td> </tr> <tr> <td align="left">Path Computation Element Communication Protocol (PCEP) Extensions for SegmentRouting</c><c><xrefRouting</td> <td align="left"> <xref target="RFC8664"pageno="false" format="default"/></c> <c>PCEPformat="default"/></td> </tr> <tr> <td align="left">Path Computation Element Communication Protocol (PCEP) Extensions for Establishing RelationshipsBetweenbetween Sets ofLSPs</c><c><xrefLabel Switched Paths (LSPs)</td> <td align="left"> <xref target="RFC8697"pageno="false" format="default"/></c> <c>YANGformat="default"/></td> </tr> <tr> <td align="left">YANG Data Model for the OSPFProtocol</c><c><xrefProtocol</td> <td align="left"> <xref target="RFC9129"pageno="false" format="default"/></c> <c>YANGformat="default"/></td> </tr> <tr> <td align="left">YANG Data Model for the IS-ISProtocol</c><c><xrefProtocol</td> <td align="left"> <xref target="RFC9130"pageno="false" format="default"/></c> <c>PCEP extensionsformat="default"/></td> </tr> <tr> <td align="left">Path Computation Element Communication Protocol (PCEP) Extensions forGMPLS</c><c><xrefGMPLS</td> <td align="left"> <xref target="RFC8779"pageno="false" format="default"/></c> <c>ASSOCIATIONformat="default"/></td> </tr> <tr> <td align="left">"ASSOCIATION TypeField in PathField" registry (in the "Path Computation Element Protocol (PCEP)Numbers</c><c><xref target="IANA-PCEP"/></c> <c>PathNumbers" registry group)</td> <td align="left"> <xref target="IANA-PCEP" format="default"/></td> </tr> <tr> <td align="left">"Path Computation Element (PCE) CapabilityFlags in InteriorFlags" registry (in the "Interior Gateway Protocol (IGP)Parameters</c><c><xref target="IANA-IGP"/></c> <c>PathParameters" registry group)</td> <td align="left"> <xref target="IANA-IGP" format="default"/></td> </tr> <tr> <td align="left">Path Computation Element Communication Protocol (PCEP) Extension for FlowSpecification</c><c><xrefSpecification</td> <td align="left"> <xref target="RFC9168"pageno="false" format="default"/></c> <c>Pathformat="default"/></td> </tr> <tr> <td align="left">Path Computation Element Communication Protocol (PCEP) Extensions for the Hierarchical Path Computation Element (H-PCE)Architecture</c><c><xrefArchitecture</td> <td align="left"> <xref target="RFC8685"pageno="false" format="default"/></c> <c>Hierarchicalformat="default"/></td> </tr> <tr> <td align="left">Hierarchical Stateful Path Computation Element(PCE)</c><c><xref(PCE)</td> <td align="left"> <xref target="RFC8751"pageno="false" format="default"/></c> <c>IGPformat="default"/></td> </tr> <tr> <td align="left">IGP Extension for Path Computation Element Communication Protocol (PCEP) Security Capability Support in PCE Discovery(PCED)</c><c><xref(PCED)</td> <td align="left"> <xref target="RFC9353"pageno="false" format="default"/></c> <c>Statefulformat="default"/></td> </tr> <tr> <td align="left">Stateful Path Computation Element (PCE) Protocol Extensions for Usage with Point-to-Multipoint TE Label Switched Paths(LSPs)</c><c><xref(LSPs)</td> <td align="left"> <xref target="RFC8623"pageno="false" format="default"/></c> <c>Theformat="default"/></td> </tr> <tr> <td align="left">The TCP AuthenticationOption</c><c><xrefOption</td> <td align="left"> <xref target="RFC5925"pageno="false" format="default"/></c> <c>Pathformat="default"/></td> </tr> <tr> <td align="left">Path Computation Element Communication Protocol (PCEP) Extensions for Associating Working and Protection Label Switched Paths (LSPs) with StatefulPCE</c><c><xrefPCE</td> <td align="left"> <xref target="RFC8745"pageno="false" format="default"/></c> <c>Pathformat="default"/></td> </tr> <tr> <td align="left">Path Computation Element Communication Protocol (PCEP) Extension for Label Switched Path (LSP) Diversity ConstraintSignaling</c><c><xrefSignaling</td> <td align="left"> <xref target="RFC8800"pageno="false" format="default"/></c> <c>Pathformat="default"/></td> </tr> <tr> <td align="left">Path Computation Element Communication Protocol (PCEP) Extensions for Establishing Relationships between Sets of Label Switched Paths and VirtualNetworks</c><c><xrefNetworks</td> <td align="left"> <xref target="RFC9358"pageno="false" format="default"/></c> <c>Extensionsformat="default"/></td> </tr> <tr> <td align="left">Extensions to the Path Computation Element Communication Protocol (PCEP) for Inter-Layer MPLS and GMPLS TrafficEngineering</c><c><xrefEngineering</td> <td align="left"> <xref target="RFC8282"pageno="false" format="default"/></c> <c>Pathformat="default"/></td> </tr> <tr> <td align="left">Path Computation Element Communication Protocol (PCEP) Extension for Associating Policies and Label Switched Paths(LSPs)</c><c><xref(LSPs)</td> <td align="left"> <xref target="RFC9005"pageno="false" format="default"/></c> </texttable>format="default"/></td> </tr> </tbody> </table> </section> </section> <sectiontitle="Thetoc="default" anchor="sec.data-tree" numbered="true"> <name>The Design of PCEP DataModel" toc="default" anchor="sec.data-tree">Model</name> <t>The PCEP YANG module defined in this document has all the common building blocks for PCEP, which are listed below and further detailed in the subsequent subsections.<list style='symbols'></t> <ul spacing="normal"> <li> <t>The local PCEP entity</t> </li> <li> <t>The PCEP peer</t> </li> <li> <t>The PCEP session</t> </li> <li> <t>Notifications</t> </li> <li> <t>RPC</t></list> <figure title="" suppress-title="true" align="left" alt="" width="" height=""> <artwork xml:space="preserve"</li> </ul> <sourcecode name=""type="" align="left" alt="" width="" height=""><![CDATA[type="yangtree"><![CDATA[ module: ietf-pcep +--rw pcep! +--rw entity +--rw addr* inet:ip-address-no-zone +--rw enabled? boolean +--rw role role +--rw description? string +--rw speaker-entity-id? string {sync-opt}? +--rw admin-status? boolean +--ro index? uint32 +--ro oper-status? oper-status +--rw domains | +--rw domain* [type domain] | +--... +--rw capabilities | +--... +--rw auth | +--... +--rw pce-info | +--rw scope | | +--... | +--rwneighbour-domainsneighbor-domains | | +--... | +--rw path-key {path-key}? | +--... +--... +--ro lsp-db {stateful}? | +--ro db-ver? uint64 {sync-opt}? | +--ro association-list* | | [type id source global-source extended-id] | | {association}? | | +--... | +--ro lsp* [plsp-id pcc-id lsp-id] | +--... +--ro path-keys {path-key}? | +--ro path-key* [key] | +--... +--rw peers +--rw peer* [addr] +--... +--ro sessions +--ro session* [initiator] +--... rpcs: +---x trigger-resync {stateful,sync-opt}? +---w input +---w pcc -> /pcep/entity/peers/peer/addr notifications: +---n pcep-session-up | +--... +---n pcep-session-down | +--... +---n pcep-session-local-overload | +--... +---n pcep-session-local-overload-clear | +--... +---n pcep-session-peer-overload | +--... +---n pcep-session-peer-overload-clear +--...]]></artwork> </figure> </t>]]></sourcecode> <sectiontitle="The Entity" toc="default">toc="default" numbered="true"> <name>The Entity</name> <t>The PCEP YANG module may contain status information for the local PCEP entity.</t> <t>The entity has an IP address (using ietf-inet-types <xreftarget="RFC6991"/>)target="RFC6991" format="default"/>) and a "role" leaf (the local entity PCEP role) as mandatory. </t> <t>Notethat,that the PCEP MIB module <xreftarget="RFC7420"/>target="RFC7420" format="default"/> uses an entity list and a system-generated entity index as a primary index to the read-only entity table.</t> <t>The local PCEP entity contains various information related to this entity such as its domain, capabilities, securityparametersparameters, etc. When the local entity is PCE, it could also have path-key and theLSP-DBLSP Database (LSP-DB) information.</t> <t>Note that the timer names intheYANG use hyphens as compared to <xreftarget="RFC5440"/>target="RFC5440" format="default"/> (for example, DeadTimer in the protocol specification is called dead-timer in YANG).</t><figure title="" suppress-title="true" align="left" alt="" width="" height=""> <artwork xml:space="preserve"<sourcecode name=""type="" align="left" alt="" width="" height=""><![CDATA[type="yangtree"><![CDATA[ module: ietf-pcep +--rw pcep! +--rw entity +--rw addr* inet:ip-address-no-zone +--rw enabled? boolean +--rw role role +--rw description? string +--rw speaker-entity-id? string {sync-opt}? +--rw admin-status? boolean +--ro index? uint32 +--ro oper-status? oper-status +--rw domains | +--rw domain* [type domain] | +--rw type identityref | +--rw domain domain +--rw capabilities | +--rw capability? bits | +--rw pce-initiated? boolean {pce-initiated}? | +--rw include-db-ver? boolean {stateful,sync-opt}? | +--rw trigger-resync? boolean {stateful,sync-opt}? | +--rw trigger-initial-sync? boolean {stateful,sync-opt}? | +--rw incremental-sync? boolean {stateful,sync-opt}? | +--rw sr-mpls {sr-mpls}? | | +--rw enabled? boolean | | +--rw no-msd-limit? boolean | | +--rw nai? boolean | +--rw stateful-gmpls {stateful,gmpls}? | | +--rw enabled? boolean | +--rw inter-layer? boolean {inter-layer}? | +--rw h-pce {h-pce}? | +--rw enabled? boolean | +--rw stateful? boolean {stateful}? | +--rw role? hpce-role +--ro msd? uint8 {sr-mpls}? +--rw auth | +--rw (auth-type-selection)? | +--:(auth-key-chain) | | +--rw key-chain? | | key-chain:key-chain-ref | +--:(auth-key) | | +--rw crypto-algorithm identityref | | +--rw (key-string-style)? | | +--:(keystring) | | | +--rw keystring? string | | +--:(hexadecimal) {key-chain:hex-key-string}? | | +--rw hexadecimal-string? yang:hex-string | +--:(auth-tls) {tls}? | +--rw (role)? | +--:(server) | | +--rw tls-server | | +--rw server-identity | | | +--rw (auth-type) | | | ... | | +--rw client-authentication! | | | {client-auth-supported}? | | | +--rw ca-certs! {client-auth-x509-cert}? | | | | ... | | | +--rw ee-certs! {client-auth-x509-cert}? | | | | ... | | | +--rw raw-public-keys! | | | | {client-auth-raw-public-key}? | | | | ... | | | +--rw tls12-psks? empty | | | | {client-auth-tls12-psk}? | | | +--rw tls13-epsks? empty | | | {client-auth-tls13-epsk}? | | +--rw hello-params {tlscmn:hello-params}? | | | +--rw tls-versions | | | | ... | | | +--rw cipher-suites | | | ... | | +--rw keepalives {tls-server-keepalives}? | | +--rw peer-allowed-to-send? empty | | +--rw test-peer-aliveness! | | ... | +--:(client) | +--rw tls-client | +--rw client-identity! | | +--rw (auth-type) | | ... | +--rw server-authentication | | +--rw ca-certs! {server-auth-x509-cert}? | | | ... | | +--rw ee-certs! {server-auth-x509-cert}? | | | ... | | +--rw raw-public-keys! | | | {server-auth-raw-public-key}? | | | ... | | +--rw tls12-psks? empty | | | {server-auth-tls12-psk}? | | +--rw tls13-epsks? empty | | {server-auth-tls13-epsk}? | +--rw hello-params {tlscmn:hello-params}? | | +--rw tls-versions | | | ... | | +--rw cipher-suites | | ... | +--rw keepalives {tls-client-keepalives}? | +--rw peer-allowed-to-send? empty | +--rw test-peer-aliveness! | ... +--rw pce-info | +--rw scope | | +--rw path-scope? bits | | +--rw intra-area-pref? uint8 | | +--rw inter-area-pref? uint8 | | +--rw inter-as-pref? uint8 | | +--rw inter-layer-pref? uint8 | +--rwneighbour-domainsneighbor-domains | | +--rw domain* [type domain] | | +--rw type identityref | | +--rw domain domain | +--rw path-key {path-key}? | +--rw enabled? boolean | +--rw discard-timer? uint32 | +--rw reuse-time? uint32 | +--rw pce-id? inet:ip-address-no-zone +--rw connect-timer? uint16 +--rw connect-max-retry? uint32 +--rw init-back-off-timer uint16 +--rw max-back-off-timer uint32 +--ro open-wait-timer? uint16 +--ro keep-wait-timer? uint16 +--rw keepalive-timer? uint8 +--rw dead-timer? uint8 +--rw allow-negotiation? boolean +--rw max-keepalive-timer uint8 +--rw max-dead-timer uint8 +--rw min-keepalive-timer uint8 +--rw min-dead-timer uint8 +--rw sync-timer? uint16 {svec}? +--rw request-timer uint16 +--rw max-sessions uint32 +--rw max-unknown-reqs? uint32 +--rw max-unknown-msgs? uint32 +--rw pcep-notification-max-rate uint32 +--rw stateful-parameter {stateful}? | +--rw state-timeout uint32 | +--rw redelegation-timeout uint32 | +--rw rpt-non-pcep-lsp? boolean +--rw of-list {objective-function}? | +--rw objective-function* [of] | +--rw of identityref +--ro lsp-db {stateful}? | +--ro db-ver? uint64 {sync-opt}? | +--ro association-list* | | [type id source global-source extended-id] | | {association}? | | +--ro type identityref | | +--ro id uint16 | | +--ro source inet:ip-address-no-zone | | +--ro global-source uint32 | | +--ro extended-id string | | +--ro lsp* [plsp-id pcc-id lsp-id] | | +--ro plsp-id -> /pcep/entity/lsp-db/lsp/plsp-id | | +--ro pcc-id leafref | | +--ro lsp-id leafref | +--ro lsp* [plsp-id pcc-id lsp-id] | +--ro plsp-id uint32 | +--ro pcc-id inet:ip-address-no-zone | +--ro source? inet:ip-address-no-zone | +--ro destination? inet:ip-address-no-zone | +--ro tunnel-id? uint16 | +--ro lsp-id uint16 | +--ro extended-tunnel-id? inet:ip-address-no-zone | +--ro admin-state? boolean | +--ro operational-state? operational-state | +--ro delegated | | +--ro enabled? boolean | | +--ro peer? -> /pcep/entity/peers/peer/addr | | +--ro srp-id? uint32 | +--ro initiation {pce-initiated}? | | +--ro enabled? boolean | | +--ro peer? -> /pcep/entity/peers/peer/addr | +--ro symbolic-path-name? string | +--ro last-error? identityref | +--ro pst? identityref | +--ro association-list* | [type id source global-source extended-id] | {association}? | +--ro type | | -> /pcep/entity/lsp-db/association-list/type | +--ro id leafref | +--ro source leafref | +--ro global-source leafref | +--ro extended-id leafref +--ro path-keys {path-key}? | +--ro path-key* [key] | +--ro key uint16 | +--ro cps | | +--ro explicit-route-objects* [index] | | +--ro index uint32 | +--ro pcc-requester? -> /pcep/entity/peers/peer/addr | +--ro req-id? uint32 | +--ro retrieved? boolean | +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr | +--ro creation-time? yang:timestamp | +--ro discard-time? uint32 | +--ro reuse-time? uint32 +--rw peers +--rw peer* [addr] +--...]]></artwork> </figure>]]></sourcecode> <sectiontitle="Thetoc="default" numbered="true"> <name>The PeerList" toc="default">List</name> <t> 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 a PCEP speaker in the network that uses multiple IPaddressesaddresses, then it looks like multiple distinct peers to the other PCEP speakers in the network. </t> <t> Since PCEP sessions can be ephemeral, the peer list tracks a peer even when no PCEP session currently exists for that peer. The statistics contained are an aggregate of the statistics for all successive sessions with that peer. </t> <t> To limit the quantity of information that is stored, an implementationMAY<bcp14>MAY</bcp14> choose to discard this information if and only if no PCEP session exists for the corresponding peer. </t> <t>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 address.</t> <!--<t> There is a list for static peer configuration and operational state of all peers (i.e.static as well as discovered)("/pcep/entity/peers"). The list is used to enable remote PCE configuration at PCC (or PCE) and has the operational state of these peers as well as the remote PCE peer which were discovered and PCC peers that have initiated session.</t>--> <t>This peer list includes peers that are explicitly configured at the 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 configured. A PCC could also learn a PCE address in the network via the IGPdiscoverydiscovery, and it will show up in this list. When a session is initiated at a PCE, the remote PCC peer information is also added by the system to the peer list.</t><figure title="" suppress-title="false" align="left" alt="" width="" height=""> <artwork xml:space="preserve"<sourcecode name=""type="" align="left" alt="" width="" height=""><![CDATA[type="yangtree"><![CDATA[ module: ietf-pcep +--rw pcep! +--rw entity +--... +--rw peers +--rw peer* [addr] +--rw addr inet:ip-address-no-zone +--rw role role +--rw description? string +--rw domains | +--rw domain* [type domain] | +--rw type identityref | +--rw domain domain +--rw capabilities | +--rw capability? bits | +--rw pce-initiated? boolean {pce-initiated}? | +--rw include-db-ver? boolean | | {stateful,sync-opt}? | +--rw trigger-resync? boolean | | {stateful,sync-opt}? | +--rw trigger-initial-sync? boolean | | {stateful,sync-opt}? | +--rw incremental-sync? boolean | | {stateful,sync-opt}? | +--rw sr-mpls {sr-mpls}? | | +--rw enabled? boolean | | +--rw no-msd-limit? boolean | | +--rw nai? boolean | +--rw stateful-gmpls {stateful,gmpls}? | | +--rw enabled? boolean | +--rw inter-layer? boolean {inter-layer}? | +--rw h-pce {h-pce}? | +--rw enabled? boolean | +--rw stateful? boolean {stateful}? | +--rw role? hpce-role +--ro msd? uint8 {sr-mpls}? +--rw pce-info | +--rw scope | | +--rw path-scope? bits | | +--rw intra-area-pref? uint8 | | +--rw inter-area-pref? uint8 | | +--rw inter-as-pref? uint8 | | +--rw inter-layer-pref? uint8 | +--rwneighbour-domainsneighbor-domains | +--rw domain* [type domain] | +--rw type identityref | +--rw domain domain +--rw delegation-pref uint8 {stateful}? +--rw auth | +--rw (auth-type-selection)? | +--:(auth-key-chain) | | +--rw key-chain? | | key-chain:key-chain-ref | +--:(auth-key) | | +--rw crypto-algorithm identityref | | +--rw (key-string-style)? | | +--:(keystring) | | | +--rw keystring? string | | +--:(hexadecimal) {key-chain:hex-key-string}? | | +--rw hexadecimal-string? yang:hex-string | +--:(auth-tls) {tls}? | +--rw (role)? | +--:(server) | | +--rw tls-server | | ... | +--:(client) | +--rw tls-client | ... +--ro discontinuity-time? yang:timestamp +--ro initiate-session? boolean +--ro session-exists? boolean +--ro session-up-time? yang:timestamp +--ro session-fail-time? yang:timestamp +--ro session-fail-up-time? yang:timestamp +--ro sessions +--ro session* [initiator] +--...]]></artwork> </figure>]]></sourcecode> <sectiontitle="Thetoc="default" numbered="true"> <name>The SessionList" toc="default">List</name> <t> The session list contains PCEP sessions that the PCEP entity (PCE or PCC) is currently participating in. The statistics in session are semantically different from those in peer since the former applies to the current session only, whereas the latter is the aggregate for all sessions that have existed to that peer. </t> <t> Although <xreftarget="RFC5440"/>target="RFC5440" format="default"/> forbids more than one active PCEP session between a given pair of PCEP entities at any given time, there is a window during the session establishment where two sessions may exist for a given pair, one representing a session initiated by the local PCEP entity and the other representing a session initiated by the peer. When one of these sessions reaches the active state, then the other is discarded. </t> <t>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 initiator. This index allows two sessions to exist transiently for a given peer, as discussed above.</t><figure title="" suppress-title="true" align="left" alt="" width="" height=""> <artwork xml:space="preserve"<sourcecode name=""type="" align="left" alt="" width="" height=""><![CDATA[type="yangtree"><![CDATA[ module: ietf-pcep +--rw pcep! +--rw entity +--... +--rw peers +--rw peer* [addr] +--... +--ro sessions +--ro session* [initiator] +--ro initiator initiator +--ro role? -> ../../../role +--ro state-last-change? yang:timestamp +--ro state? sess-state +--ro session-creation? yang:timestamp +--ro connect-retry? yang:counter32 +--ro local-id? uint8 +--ro remote-id? uint8 +--ro keepalive-timer? uint8 +--ro peer-keepalive-timer? uint8 +--ro dead-timer? uint8 +--ro peer-dead-timer? uint8 +--ro ka-hold-time-rem? uint8 +--ro overloaded? boolean +--ro overloaded-timestamp? yang:timestamp +--ro overload-time? uint32 +--ro peer-overloaded? boolean +--ro peer-overloaded-timestamp? yang:timestamp +--ro peer-overload-time? uint32 +--ro lspdb-sync? sync-state | {stateful}? +--ro recv-db-ver? uint64 | {stateful,sync-opt}? +--ro of-list {objective-function}? | +--ro objective-function* [of] | +--ro of identityref +--ro pst-list | +--ro path-setup-type* [pst] | +--ro pst identityref +--ro assoc-type-list {association}? | +--ro assoc-type* [at] | +--ro at identityref +--ro speaker-entity-id? string {sync-opt}?]]></artwork> </figure>]]></sourcecode> </section> </section> </section> <sectiontitle="Notifications" toc="default">toc="default" numbered="true"> <name>Notifications</name> <t>This YANG data model defines a list of notifications to inform clients of important events detected during the protocol operation. The notifications defined cover the PCEP MIB <xreftarget="RFC7420"/>target="RFC7420" format="default"/> notifications.</t><figure title="" suppress-title="true" align="left" alt="" width="" height=""> <artwork xml:space="preserve"<sourcecode name=""type="" align="left" alt="" width="" height=""><![CDATA[type="yangtree"><![CDATA[ notifications: +---n pcep-session-up | +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro session-initiator? leafref | +--ro state-last-change? yang:timestamp | +--ro state? sess-state +---n pcep-session-down | +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro session-initiator? initiator | +--ro state-last-change? yang:timestamp | +--ro state? sess-state +---n pcep-session-local-overload | +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro session-initiator? leafref | +--ro overloaded? boolean | +--ro overloaded-timestamp? yang:timestamp | +--ro overload-time? uint32 +---n pcep-session-local-overload-clear | +--ro peer-addr? | | -> /pcep/entity/peers/peer/addr | +--ro overloaded? boolean | +--ro overloaded-clear-timestamp? yang:timestamp +---n pcep-session-peer-overload | +--ro peer-addr? | | -> /pcep/entity/peers/peer/addr | +--ro session-initiator? leafref | +--ro peer-overloaded? boolean | +--ro peer-overloaded-timestamp? yang:timestamp | +--ro peer-overload-time? uint32 +---n pcep-session-peer-overload-clear +--ro peer-addr? | -> /pcep/entity/peers/peer/addr +--ro peer-overloaded? boolean +--ro peer-overloaded-clear-timestamp? yang:timestamp]]></artwork> </figure>]]></sourcecode> </section> <sectiontitle="RPC" toc="default">toc="default" numbered="true"> <name>RPC</name> <t>This YANG data model definesaan RPC to trigger stateresynchronizeresynchronization at the PCE for a sanity check with a particular PCC.</t><figure title="" suppress-title="true" align="left" alt="" width="" height=""> <artwork xml:space="preserve"<sourcecode name=""type="" align="left" alt="" width="" height=""><![CDATA[type="yangtree"><![CDATA[ rpcs: +---x trigger-resync {stateful,sync-opt}? +---w input +---w pcc -> /pcep/entity/peers/peer/addr]]></artwork> </figure>]]></sourcecode> </section> </section> <sectiontitle="Thetoc="default" anchor="sec.data-tree-stat" numbered="true"> <name>The Design of PCEP Statistics DataModel" toc="default" anchor="sec.data-tree-stat">Model</name> <t>The "ietf-pcep-stats" module"ietf-pcep-stats",augments theietf-pcep"ietf-pcep" module to include statistics at the PCEP peer and session level. It also includes an RPC to reset all PCEP statistics across all peers and sessions through mechanisms such as walking a list of pointers to those peer and sessionstats.</t>statistics.</t> <t>If this mechanism is not supported, implementations must reset PCEP statistics by invoking the action 'reset-statistics' for each peer and session.<figure title="" suppress-title="true" align="left" alt="" width="" height=""> <artwork xml:space="preserve"</t> <sourcecode name=""type="" align="left" alt="" width="" height=""><![CDATA[type="yangtree"><![CDATA[ module: ietf-pcep-stats augment /pcep:pcep/pcep:entity/pcep:peers/pcep:peer: +--ro stats +--ro discontinuity-time? yang:timestamp +--ro pce | +--ro rsp-time-avg? uint32 | +--ro rsp-time-lwm? uint32 | +--ro rsp-time-hwm? uint32 | +--ro pcreq-sent? yang:counter32 | +--ro pcreq-rcvd? yang:counter32 | +--ro pcrep-sent? yang:counter32 | +--ro pcrep-rcvd? yang:counter32 | +--ro req-sent? yang:counter32 | +--ro req-sent-pend-rep? yang:counter32 | +--ro req-sent-ero-rcvd? yang:counter32 | +--ro req-sent-nopath-rcvd? yang:counter32 | +--ro req-sent-cancel-rcvd? yang:counter32 | +--ro req-sent-error-rcvd? yang:counter32 | +--ro req-sent-timeout? yang:counter32 | +--ro req-sent-cancel-sent? yang:counter32 | +--ro rep-rcvd-unknown? yang:counter32 +--ro pcerr-sent? yang:counter32 +--ro pcerr-rcvd? yang:counter32 +--ro pcntf-sent? yang:counter32 +--ro pcntf-rcvd? yang:counter32 +--ro keepalive-sent? yang:counter32 +--ro keepalive-rcvd? yang:counter32 +--ro unknown-rcvd? yang:counter32 +--ro corrupt-rcvd? yang:counter32 +--ro pcc | +--ro req-rcvd? yang:counter32 | +--ro req-rcvd-pend-rep? yang:counter32 | +--ro req-rcvd-ero-sent? yang:counter32 | +--ro req-rcvd-nopath-sent? yang:counter32 | +--ro req-rcvd-cancel-sent? yang:counter32 | +--ro req-rcvd-error-sent? yang:counter32 | +--ro req-rcvd-cancel-rcvd? yang:counter32 | +--ro req-rcvd-unknown? yang:counter32 +--ro svec {pcep:svec}? | +--ro pce | | +--ro svec-sent? yang:counter32 | | +--ro svec-req-sent? yang:counter32 | +--ro pcc | +--ro svec-rcvd? yang:counter32 | +--ro svec-req-rcvd? yang:counter32 +--ro stateful {pcep:stateful}? | +--ro pce | | +--ro pcrpt-sent? yang:counter32 | | +--ro pcupd-rcvd? yang:counter32 | | +--ro rpt-sent? yang:counter32 | | +--ro upd-rcvd? yang:counter32 | | +--ro upd-rcvd-unknown? yang:counter32 | | +--ro upd-rcvd-undelegated? yang:counter32 | | +--ro upd-rcvd-error-sent? yang:counter32 | +--ro pcc | | +--ro pcrpt-rcvd? yang:counter32 | | +--ro pcupd-sent? yang:counter32 | | +--ro rpt-rcvd? yang:counter32 | | +--ro rpt-rcvd-error-sent? yang:counter32 | | +--ro upd-sent? yang:counter32 | +--ro initiation {pcep:pce-initiated}? | +--ro pcc | | +--ro pcinitiate-sent? yang:counter32 | | +--ro initiate-sent? yang:counter32 | +--ro pce | +--ro pcinitiate-rcvd? yang:counter32 | +--ro initiate-rcvd? yang:counter32 | +--ro initiate-rcvd-error-sent? yang:counter32 +--ro path-key {pcep:path-key}? | +--ro unknown-path-key? yang:counter32 | +--ro exp-path-key? yang:counter32 | +--ro dup-path-key? yang:counter32 | +--ro path-key-no-attempt? yang:counter32 +---x reset-statistics | +---w input | | +---w reset-at? yang:date-and-time | +--ro output | +--ro reset-finished-at? yang:date-and-time +--ro sess-setup-ok? yang:counter32 +--ro sess-setup-fail? yang:counter32 +--ro req-sent-closed? yang:counter32 +--ro req-rcvd-closed? yang:counter32 augment /pcep:pcep/pcep:entity/pcep:peers/pcep:peer/pcep:sessions /pcep:session: +--ro stats +--ro discontinuity-time? yang:timestamp +--ro pce | +--ro rsp-time-avg? uint32 | +--ro rsp-time-lwm? uint32 | +--ro rsp-time-hwm? uint32 | +--ro pcreq-sent? yang:counter32 | +--ro pcreq-rcvd? yang:counter32 | +--ro pcrep-sent? yang:counter32 | +--ro pcrep-rcvd? yang:counter32 | +--ro req-sent? yang:counter32 | +--ro req-sent-pend-rep? yang:counter32 | +--ro req-sent-ero-rcvd? yang:counter32 | +--ro req-sent-nopath-rcvd? yang:counter32 | +--ro req-sent-cancel-rcvd? yang:counter32 | +--ro req-sent-error-rcvd? yang:counter32 | +--ro req-sent-timeout? yang:counter32 | +--ro req-sent-cancel-sent? yang:counter32 | +--ro rep-rcvd-unknown? yang:counter32 +--ro pcerr-sent? yang:counter32 +--ro pcerr-rcvd? yang:counter32 +--ro pcntf-sent? yang:counter32 +--ro pcntf-rcvd? yang:counter32 +--ro keepalive-sent? yang:counter32 +--ro keepalive-rcvd? yang:counter32 +--ro unknown-rcvd? yang:counter32 +--ro corrupt-rcvd? yang:counter32 +--ro pcc | +--ro req-rcvd? yang:counter32 | +--ro req-rcvd-pend-rep? yang:counter32 | +--ro req-rcvd-ero-sent? yang:counter32 | +--ro req-rcvd-nopath-sent? yang:counter32 | +--ro req-rcvd-cancel-sent? yang:counter32 | +--ro req-rcvd-error-sent? yang:counter32 | +--ro req-rcvd-cancel-rcvd? yang:counter32 | +--ro req-rcvd-unknown? yang:counter32 +--ro svec {pcep:svec}? | +--ro pce | | +--ro svec-sent? yang:counter32 | | +--ro svec-req-sent? yang:counter32 | +--ro pcc | +--ro svec-rcvd? yang:counter32 | +--ro svec-req-rcvd? yang:counter32 +--ro stateful {pcep:stateful}? | +--ro pce | | +--ro pcrpt-sent? yang:counter32 | | +--ro pcupd-rcvd? yang:counter32 | | +--ro rpt-sent? yang:counter32 | | +--ro upd-rcvd? yang:counter32 | | +--ro upd-rcvd-unknown? yang:counter32 | | +--ro upd-rcvd-undelegated? yang:counter32 | | +--ro upd-rcvd-error-sent? yang:counter32 | +--ro pcc | | +--ro pcrpt-rcvd? yang:counter32 | | +--ro pcupd-sent? yang:counter32 | | +--ro rpt-rcvd? yang:counter32 | | +--ro rpt-rcvd-error-sent? yang:counter32 | | +--ro upd-sent? yang:counter32 | +--ro initiation {pcep:pce-initiated}? | +--ro pcc | | +--ro pcinitiate-sent? yang:counter32 | | +--ro initiate-sent? yang:counter32 | +--ro pce | +--ro pcinitiate-rcvd? yang:counter32 | +--ro initiate-rcvd? yang:counter32 | +--ro initiate-rcvd-error-sent? yang:counter32 +--ro path-key {pcep:path-key}? | +--ro unknown-path-key? yang:counter32 | +--ro exp-path-key? yang:counter32 | +--ro dup-path-key? yang:counter32 | +--ro path-key-no-attempt? yang:counter32 +---x reset-statistics +---w input | +---w reset-at? yang:date-and-time +--ro output +--ro reset-finished-at? yang:date-and-time rpcs: +---x reset-pcep-statistics-all {reset-all}?]]></artwork></figure></t>]]></sourcecode> </section> <sectiontitle="Advancedtoc="default" numbered="true"> <name>Advanced PCEFeatures" toc="default">Features</name> <t>This document contains a specification of the base PCEP YANG module,"ietf-pcep""ietf-pcep", which provides the basic PCEP <xreftarget="RFC5440"/>target="RFC5440" format="default"/> data model.</t> <t>This document further handles advanced PCE featureslike - <list style="symbols">such as:</t> <ul spacing="normal"> <li> <t>Capability andScope</t>scope</t> </li> <li> <t>Domain information (local/neighbor) </t><t>Path-Key</t></li> <li> <t>Path-key</t> </li> <li> <t>Objective Function (OF)</t> </li> <li> <t>Global Concurrent Optimization (GCO)</t><t>P2MP</t></li> <li> <t>Point-to-Multipoint (P2MP)</t> </li> <li> <t>GMPLS</t><t>Inter-Layer</t></li> <li> <t>Inter-layer</t> </li> <li> <t>Stateful PCE</t> </li> <li> <t>Segment Routing (SR) for the MPLS data plane</t> </li> <li> <t>Authentication including PCEPS (TLS)</t> </li> <li> <t>Hierarchical PCE (H-PCE)</t></list> </t></li> </ul> <t>Segment Routing in the IPv6 data plane is out of the scope of this document. Refer to <xreftarget="I-D.ietf-pce-pcep-srv6-yang"/>target="I-D.ietf-pce-pcep-srv6-yang" format="default"/> for the PCEP-SRv6 YANG module.</t> <sectiontitle="Statefultoc="default" numbered="true"> <name>Stateful PCE'sLSP-DB" toc="default">LSP-DB</name> <t>In the operational datastore of stateful PCE, the list of LSP stateareis maintained in the LSP-DB. The key is the PLSP-ID, the PCC's IP address, and the LSP-ID.</t> <t>The PCEP data model contains the operational state of LSPs (/pcep/entity/lsp-db/lsp/) with PCEP-specific attributes. The generic TE attributes of the LSP are defined in <xreftarget="I-D.ietf-teas-yang-te"/>.target="I-D.ietf-teas-yang-te" format="default"/>. A reference to the LSP state in the TE model is maintained.</t></section></section></section> </section> <!--<section title="Open Issues and Next Step" toc="default"> <t>This section is added so that open issues can be tracked. This section would be removed when the document is ready for publication.</t> <section title="The PCE-Initiated LSP" toc="default"> <t>The TE Model at <xref target="I-D.ietf-teas-yang-te"/> should support creating of tunnels at the controller (PCE) and marking them as PCE-Initiated. The LSP-DB in the PCEP Yang (/pcep/entity/lsp-db/lsp/initiation) also marks the LSPs which are PCE-initiated.</t> </section> <section title="LSP-ID" toc="default"> <t>Use of lsp-id as a key in the LSPDB could be an issue for a non-RSVP-TE path setup type. The lsp-id filed is currently a leafref to the TE model <xref target="I-D.ietf-teas-yang-te"/>. Need to a confirm if this is problematic. </t> </section> </section>--> <sectiontitle="Other Considerations" toc="default">toc="default" numbered="true"> <name>Other Considerations</name> <sectiontitle="PCEPtoc="default" anchor="tls" numbered="true"> <name>PCEP over TLS(PCEPS)" toc="default" anchor="tls">(PCEPS)</name> <t><xreftarget="RFC8253"/>target="RFC8253" format="default"/> describes the use ofTLSv1.2TLS 1.2 <xreftarget="RFC5246"/>target="RFC5246" format="default"/> or later in PCEP. Further, <xreftarget="I-D.ietf-pce-pceps-tls13"/> specifytarget="I-D.ietf-pce-pceps-tls13" format="default"/> specifies how to protect PCEP messages with TLS 1.3 <xreftarget="RFC8446"/>target="RFC8446" format="default"/> by disallowing the use of early data (0-RTT) and listing the cipher suites that need to be supported with TLS 1.3.</t> <!--<t>The peer acting as the PCEP client must act as the TLS client. The TLS client actively opens the TLS connection and the TLS server passively listens for the incoming TLS connections. The well-known TCP port number 4189 is used by PCEP servers to listen for TCP connections established by PCEP over TLS clients. The TLS client sends the TLS ClientHello message to begin the TLS handshake. The TLS server sends a CertificateRequest in order to request a certificate from the TLS client. Once the TLS handshake has finished, the client and the server begin to exchange PCEP messages. Client and server identity verification is done before the PCEP open message is sent. This means that the identity verification is completed before the PCEP session is started.</t>--> <t>The PCC acting as the TLS client opens the TLSconnectionconnection, and the PCE acting as the TLS server listens for incoming connections as per the TLS specifications (<xreftarget="RFC8446"/>target="RFC8446" format="default"/> and <xreftarget="RFC5246"/>).target="RFC5246" format="default"/>). <xreftarget="RFC8253"/>target="RFC8253" format="default"/> specifies the StartTLS procedure in PCEP that initiates the TLS connection before exchanging PCEPmessages thusmessages; thus, the identity verification is completed before the PCEP session is established.</t> <t>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 determined by the relationship it has with its peer (the sameholds goodis true for TLS as well).</t> <t>The YANG module uses the TLS grouping in <xreftarget="RFC9645"/>.target="RFC9645" format="default"/>. Note that any TLS version can beconfiguredconfigured, but <xreftarget="RFC9645"/>target="RFC9645" format="default"/> recommends the use of TLS 1.3 only. At the time of publication of this document, TLS 1.2 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".</t> </section> </section> <sectiontitle="PCEPtoc="default" numbered="true"> <name>PCEP YANGModules" toc="default">Modules</name> <sectiontitle="ietf-pcep module" toc="default"> <t>RFC Ed.:toc="default" numbered="true"> <name>ietf-pcep Module</name> <!-- [rfced] Inthis section, replace all occurrencesthe third list item below, is "Path Computation Server (PCE)" meant to read as "Path Computation Element (PCE)"? Original: description "The role of a PCEP speaker. Takes one of'XXXX' withtheactual RFC numberfollowing values - unknown(0): the role is not known, - pcc(1): the role is of a Path Computation Client (PCC), - pce(2): the role is of a Path Computation Server (PCE), - pcc-and-pce(3): the role is of both a PCC andall occurrencesa PCE."; Perhaps: description "The role of a PCEP speaker. Takes one of therevision date below withfollowing values values: - unknown(0): thedaterole is not known, - pcc(1): the role is ofRFC publication (and removea Path Computation Client (PCC), - pce(2): the role is of a Path Computation Element (PCE), - pcc-and-pce(3): the role is of both a PCC and a PCE."; --> <!-- [rfced] Is "this path-keys" correct in these description clauses? Or should "this path-keys" be updated to "this path-key" (singular)? Original: } leaf discard-time { type uint32; units "minutes"; description "A time after which thisnote).</t> <figure title="" suppress-title="false" align="left" alt="" width="" height=""> <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""> <![CDATA[ <CODE BEGINS> file "ietf-pcep@2025-01-27.yang"path-keys will be discarded"; } leaf reuse-time { type uint32; units "minutes"; description "A time after which this path-keys could be reused"; --> <sourcecode name="ietf-pcep@2025-07-24.yang" type="yang" markers="true"><![CDATA[ module ietf-pcep { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-pcep"; prefix pcep; import ietf-inet-types { prefix inet; reference "RFC 6991: Common YANG Data Types"; } import ietf-yang-types { prefix yang; reference "RFC 6991: Common YANG Data Types"; } import ietf-te-types { prefix te-types; reference "RFC 8776: Common YANG Data Types for Traffic Engineering"; } import ietf-key-chain { prefix key-chain; reference "RFC 8177: YANG Data Model for Key Chains"; } import ietf-netconf-acm { prefix nacm; reference "RFC 8341: Network ConfigurationProtocol (NETCONF)Access Control Model"; } import ietf-tls-server { prefix tlss; reference"RFC9645:"RFC 9645: YANG Groupings for TLS Clients and TLS Servers"; } import ietf-tls-client { prefix tlsc; reference"RFC9645:"RFC 9645: YANG Groupings for TLS Clients and TLS Servers"; } import ietf-ospf { prefix ospf; reference "RFC 9129: YANG Data Model for the OSPF Protocol"; } import ietf-isis { prefix isis; reference "RFC 9130: YANG Data Model for the IS-IS Protocol"; } organization "IETF PCE (Path Computation Element) Working Group"; contact "WG Web: <https://datatracker.ietf.org/wg/pce/> WG List: <mailto:pce@ietf.org> Editor: Dhruv Dhody <mailto:dhruv.ietf@gmail.com>"; description "The YANG module defines a generic configuration and operational model for the Path Computation Element 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 authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Revised BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). This version of this YANG module is part of RFCXXXX;9826; see the RFC itself for full legalnotices. 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.";notices."; revision2025-01-272025-07-24 { description "Initial revision."; reference "RFCXXXX:9826: A YANG Data Model for the Path Computation ElementCommunicationsCommunication Protocol (PCEP)"; } /* * Typedefs */ typedef role { type enumeration { enum unknown { value 0; description "An unknownrole";role."; } enum pcc { value 1; description "The role of a Path ComputationClient";Client (PCC)."; } enum pce { value 2; description "The role of a Path ComputationElement";Element (PCE)."; } enum pcc-and-pce { value 3; description "The role of both Path Computation Client (PCC) and Path ComputationElement";Element (PCE)."; } } description "The role of a PCEP speaker. Takes one of the followingvaluesvalues: - unknown(0): the role is not known, - pcc(1): the role is of a Path Computation Client (PCC), - pce(2): the role is of a Path Computation Server (PCE), - pcc-and-pce(3): the role is of both a PCC and a PCE."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } typedef oper-status { type enumeration { enum oper-status-up { value 1; description "The PCEP entity isactive";active."; } enum oper-status-down { value 2; description "The PCEP entity isinactive";inactive."; } enum oper-status-going-up { value 3; description "The PCEP entity isactivating";activating."; } enum oper-status-going-down { value 4; description "The PCEP entity isdeactivating";deactivating."; } enum oper-status-failed { value 5; description "The PCEP entity has failed and will recover when possible."; } enum oper-status-failed-perm { value 6; description "The PCEP entity has failed and will not recover without operatorintervention";intervention."; } } description "The operational status of the PCEP entity. Takes one of the following values: - oper-status-up(1): Active, - oper-status-down(2): Inactive, - oper-status-going-up(3): Activating, - oper-status-going-down(4): Deactivating, - oper-status-failed(5): Failed, - oper-status-failed-perm(6): Failed Permanently."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } typedef initiator { type enumeration { enum local { value 1; description "The local PCEP entity initiated thesession";session."; } enum remote { value 2; description "The remote PCEP peer initiated thesession";session."; } } description "The initiator of the session, that is, whether the TCP connection was initiated by the local PCEP entity or the remote peer. Takes one of the following values: - local(1): Initiated locally, - remote(2): Initiated remotely."; } typedef sess-state { type enumeration { enum tcp-pending { value 1; description "The TCPPending state of PCEP session."; } enum open-wait { value 2; description "The OpenWait state of PCEP session."; } enum keep-wait { value 3; description "The KeepWait state of PCEP session."; } enum session-up { value 4; description "The SessionUP state of PCEP session."; } } description "The current state of the session. The set of possible states excludes the idle state since entries do not exist in the idle state. Takes one of the following values: - tcp-pending(1): PCEP TCPPending state, - open-wait(2): PCEP OpenWait state, - keep-wait(3): PCEP KeepWait state, - session-up(4): PCEP SessionUP state."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } typedef domain { type union { type ospf:area-id-type; type isis:area-address; type inet:as-number; } description "TheDomain Information";domain information."; } typedef operational-state { type enumeration { enum down { value 0; description"not"Not active."; } enum up { value 1; description"signalled.";"Signaled."; } enum active { value 2; description"up"Up and carrying traffic."; } enum going-down { value 3; description "LSP is being torndown,down; resources are being released."; } enum going-up { value 4; description "LSP is beingsignalled.";signaled."; } } description "The operational status of theLSP";LSP."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } typedef sync-state { type enumeration { enum pending { value 0; description "The state synchronization has not started."; } enum ongoing { value 1; description "The state synchronization is ongoing."; } enum finished { value 2; description "The state synchronization is finished."; } } description "The LSP-DB state synchronization operational status."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } typedef hpce-role { type enumeration { enum unknown { value 0; description "An unknownrole";role."; } enum child { value 1; description "The PCE is acting as child PCE."; } enum parent { value 2; description "The PCE is acting as parent PCE."; } } description "The H-PCE role of the PCE."; reference "RFC 8685: Path Computation Element Communication Protocol (PCEP) Extensions for the Hierarchical Path Computation Element (H-PCE) Architecture"; } /* * Features */ feature svec { description "Support synchronized path computation."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } feature gmpls { description "Support GMPLS."; reference "RFC 8779:PCEP extensionsPath Computation Element Communication Protocol (PCEP) Extensions for GMPLS"; } feature objective-function { description "Support OF as per RFC 5541."; reference "RFC 5541: Encoding of Objective Functions in the Path Computation Element Communication Protocol (PCEP)"; } feature global-concurrent { description "Support Global Concurrent Optimization (GCO) as per RFC 5557."; reference "RFC 5557: Path Computation Element Communication Protocol (PCEP) Requirements and Protocol Extensions in Support of Global Concurrent Optimization"; } feature path-key { description "Support path-key as per RFC 5520."; reference "RFC 5520: Preserving Topology Confidentiality in Inter- Domain Path Computation Using a Path-Key-Based Mechanism"; } feature p2mp { description "Support Point-to-Multipoint (P2MP) as per RFC 8306."; reference "RFC 8306: Extensions to the Path Computation Element Communication Protocol (PCEP) for Point-to-Multipoint Traffic Engineering Label Switched Paths"; } feature stateful { description "SupportStatefulstateful PCE as per RFC 8231."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } feature sync-opt { description "SupportStatefulstateful state synchronization optimization as per RFC8232";8232."; reference "RFC 8232: Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE"; } feature pce-initiated { description "SupportPCE-InitiatedPCE-initiated LSP as per RFC 8281."; reference "RFC 8281: Path Computation Element Communication Protocol (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful PCE Model"; } feature tls { description "Support PCEP over TLS as per RFC 8253."; reference "RFC 8253: PCEPS: Usage of TLS to Provide a Secure Transport for the Path Computation Element Communication Protocol (PCEP)"; } feature sr-mpls { description "Support Segment Routing (SR) for MPLS in PCEP."; reference "RFC 8664: Path Computation Element Communication Protocol (PCEP) Extensions for Segment Routing"; } feature association { description "Support Association in PCEP."; reference "RFC 8697: Path Computation Element Communication Protocol (PCEP) Extensions for Establishing Relationships between Sets of Label Switched Paths (LSPs)"; } feature flowspec { description "Support Flow Specification in PCEP."; reference "RFC 9168: Path Computation Element Communication Protocol (PCEP) Extension for Flow Specification"; } feature h-pce { description "SupportHierarchical-PCEHierarchical PCE (H-PCE)."; reference "RFC 8685: Path Computation Element Communication Protocol (PCEP) Extensions for the Hierarchical Path Computation Element (H-PCE) Architecture"; } feature inter-layer { description "SupportInter-layerinter-layer path computation."; reference "RFC 8282: Extensions to the Path Computation Element Communication Protocol (PCEP) for Inter- Layer MPLS and GMPLS Traffic Engineering"; } /* * Identities */ identity domain-type { description "BaseDomain Typedomain type forPCE";PCE."; } identity ospf-area { base domain-type; description "The OSPF area."; } identity isis-area { base domain-type; description "The IS-IS area."; } identity autonomous-system { base domain-type; description "The Autonomous System (AS)."; } identity lsp-error { if-feature "stateful"; description "Base LSPerror";error."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } identity no-error-lsp-error { if-feature "stateful"; base lsp-error; description "Noerror,error; LSP is fine."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } identity unknown-lsp-error { if-feature "stateful"; base lsp-error; description "Unknown reason. LSP Error Code value = 1."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } identity limit-lsp-error { if-feature "stateful"; base lsp-error; description "Limit reached for PCE-controlled LSPs. LSP Error Code value = 2."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } identity pending-lsp-error { if-feature "stateful"; base lsp-error; description "Too many pending LSP update requests. LSP Error Code value = 3."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } identity unacceptable-lsp-error { if-feature "stateful"; base lsp-error; description "Unacceptable parameters. LSP Error Code value = 4."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } identity internal-lsp-error { if-feature "stateful"; base lsp-error; description "Internal error. LSP Error Code value = 5."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } identity admin-lsp-error { if-feature "stateful"; base lsp-error; description "LSP administratively brought down. LSP Error Code value = 6."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } identity preempted-lsp-error { if-feature "stateful"; base lsp-error; description "LSP preempted. LSP Error Code value = 7."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } identity rsvp-lsp-error { if-feature "stateful"; base lsp-error; description "RSVP signaling error. LSP Error Code value = 8."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } identity path-protection { base te-types:association-type; description "Path ProtectionAssociation";Association."; reference "RFC 8745: Path Computation Element Communication Protocol (PCEP) Extensions for Associating Working and Protection Label Switched Paths (LSPs) with Stateful PCE"; } identity disjoint { base te-types:association-type; description "DisjointAssociation";Association."; reference "RFC 8800: Path Computation Element Communication Protocol (PCEP) Extension for Label Switched Path (LSP) Diversity Constraint Signaling"; } identity policy { base te-types:association-type; description "PolicyAssociation";Association."; reference "RFC 9005: Path Computation Element Communication Protocol (PCEP) Extension for Associating Policies and Label Switched Paths (LSPs)"; } identity virtual-network { base te-types:association-type; description "Virtual Network (VN)Association";Association."; reference "RFC 9358: Path Computation Element Communication Protocol (PCEP) Extensions for Establishing Relationships between Sets of Label Switched Paths and Virtual Networks"; } /* * Groupings */ grouping domain { description "This grouping specifies aDomaindomain where the PCEP speaker has topology visibility."; leaf type { type identityref { base domain-type; } description "The domain type."; } leaf domain { type domain; description "The domainInformation.";information."; } } grouping domain-info { description "This grouping specifies all informationwhichthat may be relevant to both PCC and PCE. This information corresponds to PCE auto-discovery information. The scope relates to either a local entity or a peer."; container domains { description "The domain for the local PCEP entity or a peer."; list domain { key "type domain"; description "The domain information."; uses domain { description "The domain for the local PCEP entity or a peer."; } } } container capabilities { description "The PCEP entity or peer capability information. This may be relevant to PCE selection as well. This information corresponds to PCE auto- discovery information."; reference "IANA IGP: Path Computation Element (PCE) Capability Flags in Interior Gateway Protocol (IGP) Parameters RFC 5088: OSPF Protocol Extensions for Path Computation Element (PCE) Discovery RFC 5089: IS-IS Protocol Extensions for Path Computation Element (PCE) Discovery RFC 9353: IGP Extension for Path Computation Element Communication Protocol (PCEP) Security Capability Support in PCE Discovery (PCED)"; leaf capability { type bits { bit gmpls { if-feature "gmpls"; description "Path computation with GMPLS link constraints."; } bit bi-dir { description "Bidirectional path computation."; } bit diverse { description "Diverse path computation."; } bit load-balance { description "Load-balanced path computation."; } bit synchronize { if-feature "svec"; description "Synchronized paths computation."; } bit objective-function { if-feature "objective-function"; description "Support for multiple objective functions."; } bit add-path-constraint { description "Support for additive path constraints (max hop count, etc.)."; } bit prioritization { description "Support for request prioritization."; } bit multi-request { description "Support for multiple requests per message."; } bit global-concurrent { if-feature "global-concurrent"; description "Support for Global Concurrent Optimization (GCO)."; reference "RFC 5557: Path Computation Element Communication Protocol (PCEP) Requirements and Protocol Extensions in Support of Global Concurrent Optimization"; } bit p2mp { if-feature "p2mp"; description "Support for P2MP path computation."; reference "RFC 8306: Extensions to the Path Computation Element Communication Protocol (PCEP) for Point-to-Multipoint Traffic Engineering Label Switched Paths"; } bit active { if-feature "stateful"; description "Support for active stateful PCE."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } bit passive { if-feature "stateful"; description "Support for passive stateful PCE."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } bit p2mp-active { if-feature "stateful"; if-feature "p2mp"; description "Support for active stateful PCE for P2MP."; reference "RFC 8623: Stateful Path Computation Element (PCE) Protocol Extensions for Usage with Point-to-Multipoint TE Label Switched Paths (LSPs)"; } bit p2mp-passive { if-feature "stateful"; if-feature "p2mp"; description "Support for passive stateful PCE for P2MP."; reference "RFC 8623: Stateful Path Computation Element (PCE) Protocol Extensions for Usage with Point-to-Multipoint TE Label Switched Paths (LSPs)"; } bit p2mp-pce-initiated { if-feature "stateful"; if-feature "pce-initiated"; if-feature "p2mp"; description "Support for PCE-initiated LSP for P2MP."; reference "RFC 8623: Stateful Path Computation Element (PCE) Protocol Extensions for Usage with Point-to-Multipoint TE Label Switched Paths (LSPs)"; } bit flowspec { if-feature "flowspec"; description "Support for Flowspecification.";Specification."; reference "RFC 9168: Path Computation Element Communication Protocol (PCEP) Extension for Flow Specification"; } bit tcp-ao { description "Support forThethe TCP Authentication Option(TCP-AO)";(TCP-AO)."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP) RFC 5925: The TCP Authentication Option"; } bit tls { if-feature "tls"; description "Support forTLS";TLS."; reference "RFC 8253: PCEPS: Usage of TLS to Provide a Secure Transport for the Path Computation Element Communication Protocol (PCEP)"; } } description "The bits string indicating thecapabilities";capabilities."; reference "IANA IGP: Path Computation Element (PCE) Capability Flags in Interior Gateway Protocol (IGP) Parameters RFC 5088: OSPF Protocol Extensions for Path Computation Element (PCE) Discovery RFC 5089: IS-IS Protocol Extensions for Path Computation Element (PCE) Discovery RFC 9353: IGP Extension for Path Computation Element Communication Protocol (PCEP) Security Capability Support in PCE Discovery (PCED)"; } leaf pce-initiated { if-feature "pce-initiated"; type boolean; default "false"; description "Set to true if PCE-initiated LSP capability is enabled."; reference "RFC 8281: Path Computation Element Communication Protocol (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful PCE Model"; } leaf include-db-ver { if-feature "stateful"; if-feature "sync-opt"; type boolean; default "true"; description "Support inclusion of LSP-DB-VERSION in LSPobject";object."; reference "RFC 8232: Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE"; } leaf trigger-resync { if-feature "stateful"; if-feature "sync-opt"; type boolean; default "true"; description "Support PCE-triggeredre-synchronization";resynchronization."; reference "RFC 8232: Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE"; } leaf trigger-initial-sync { if-feature "stateful"; if-feature "sync-opt"; type boolean; default "true"; description "PCE-triggered initialsynchronization";synchronization."; reference "RFC 8232: Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE"; } leaf incremental-sync { if-feature "stateful"; if-feature "sync-opt"; type boolean; default "true"; description "Support incremental (delta)sync";synchronization."; reference "RFC 8232: Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE"; } container sr-mpls { if-feature "sr-mpls"; description "If segment routing for MPLS is supported at the local entity or a peer."; reference "RFC 8664: Path Computation Element Communication Protocol (PCEP) Extensions for Segment Routing"; leaf enabled { type boolean; default "false"; description "Set to true if SR-MPLS isenabled";enabled."; } leaf no-msd-limit { type boolean; default "false"; description "True indicates no limit onMSD,Maximum SID Depth (MSD); the leaf msd isignored";ignored."; } leaf nai { type boolean; default "false"; description "True indicates the capability to resolve Node or Adjacency Identifier (NAI) to Segment Identifier(SID)";(SID)."; } } container stateful-gmpls { if-feature "stateful"; if-feature "gmpls"; description "IfStatefulstateful GMPLS is supported for a local entity or apeer";peer."; reference "RFC 8779: Path Computation Element Communication Protocol (PCEP) Extensions forStateful PCE Usage in GMPLS-controlled Networks";GMPLS"; leaf enabled { type boolean; default "false"; description "Set to true ifStatefulstateful GMPLS isenabled";enabled."; } } leaf inter-layer { if-feature "inter-layer"; type boolean; default "false"; description "If inter-layer path computation is supported for local entity or apeer";peer."; reference "RFC 8282: Extensions to the Path Computation Element Communication Protocol (PCEP) for Inter- Layer MPLS and GMPLS Traffic Engineering"; } container h-pce { if-feature "h-pce"; description "If Hierarchical PCE (H-PCE) is supported for local entity or apeer";peer."; reference "RFC 8685: Path Computation Element Communication Protocol (PCEP) Extensions for the Hierarchical Path Computation Element (H-PCE) Architecture"; leaf enabled { type boolean; default "false"; description "Set to true if H-PCE isenabled";enabled."; } leaf stateful { if-feature "stateful"; type boolean; default "false"; description "Set to true ifStatefulstateful H-PCE isenabled";enabled."; reference "RFC 8751: Hierarchical Stateful Path Computation Element (PCE)"; } leaf role { when "../../../role = 'pce'" + "or " + "../../../role = 'pcc-and-pce'" { description "These fields are applicable when the role is PCE."; } type hpce-role; description "The H-PCE role of the PCE."; } } } leaf msd { if-feature "sr-mpls"; type uint8; config false; description "Maximum SID Depth (MSD) for SR-MPLSi.e.(i.e., the label stack depth that a PCC is capable of imposing on apacket.";packet)."; reference "RFC 8664: Path Computation Element Communication Protocol (PCEP) Extensions for Segment Routing"; } } grouping pce-info { description "This grouping specifies all PCE informationwhichthat may be relevant to the PCE selection. This information corresponds to PCE auto-discovery information."; container scope { description "This container defines PCE path computation scope informationwhichthat may be relevant to PCE selection. This information corresponds to PCE auto-discovery information."; leaf path-scope { type bits { bit intra-area-scope { description "PCE can compute intra-area paths (L bit)."; } bit inter-area-scope { description "PCE can compute inter-area paths (R bit)."; } bit inter-area-scope-default { description "PCE can act as a default PCE for inter-area pathcomputation.computation (Rdbit)";bit)."; } bit inter-as-scope { description "PCE can compute inter-AS paths (S bit)."; } bit inter-as-scope-default { description "PCE can act as a default PCE for inter-AS path computation (Sd bit)."; } bit inter-layer-scope { description "PCE can compute inter-layer paths (Y bit)."; } } description "The field corresponding to the path scopebits";bits."; } leaf intra-area-pref { type uint8 { range "0..7"; } description "The PCE's preference for intra-area TE LSP computation (PrefLfield). Wherefield), where 7 reflects the highest preference."; } leaf inter-area-pref { type uint8 { range "0..7"; } description "The PCE's preference for inter-area TE LSP computation (PrefRfield). Wherefield), where 7 reflects the highest preference."; } leaf inter-as-pref { type uint8 { range "0..7"; } description "The PCE's preference for inter-AS TE LSP computation (PrefSfield). Wherefield), where 7 reflects the highest preference."; } leaf inter-layer-pref { type uint8 { range "0..7"; } description "The PCE's preference for inter-layer TE LSP computation (PrefYfield). Wherefield), where 7 reflects the highest preference."; } reference "RFC 5088: OSPF Protocol Extensions for Path Computation Element (PCE) Discovery RFC 5089: IS-IS Protocol Extensions for Path Computation Element (PCE) Discovery"; } containerneighbour-domainsneighbor-domains { description "The list ofneighbour PCE-Domainneighbor PCE domains toward which a PCE can computepaths";paths."; list domain { key "type domain"; description "Theneighbourneighbor domain."; uses domain { description "The PCEneighbourneighbor domain."; } } } } grouping notification-instance-hdr { description "This group describes common instance-specific data for notifications."; leaf peer-addr { type leafref { path "/pcep/entity/peers/peer/addr"; } description "Reference to peeraddress";address."; } } grouping notification-session-hdr { description "This group describes common session instance-specific data for notifications."; uses notification-instance-hdr; leaf session-initiator { type leafref { path "/pcep/entity/peers/peer[addr=current()/../peer-addr]/" + "sessions/session/initiator"; } description "Reference to pcep session initiatorleaf";leaf."; } } grouping of-list { description "List of Objective Functions(OF)";(OF)."; reference "RFC 5541: Encoding of Objective Functions in the Path Computation Element Communication Protocol (PCEP)"; list objective-function { key "of"; description "The list of authorizedOF";OF."; leaf of { type identityref { base te-types:objective-function-type; } description "The OFauthorized";authorized."; } } } grouping auth { description "TheAuthentication options";authentication options."; container auth { description "TheAuthentication options";authentication options."; choice auth-type-selection { description "Options for expressing authentication setting."; case auth-key-chain { leaf key-chain { type key-chain:key-chain-ref; description"key-chain"Key-chain name."; } } case auth-key { leaf crypto-algorithm { type identityref { base key-chain:crypto-algorithm; } mandatory true; description "Cryptographic algorithm associated with key."; } choice key-string-style { description "Key stringstyles";styles."; case keystring { leaf keystring { nacm:default-deny-all; type string; description "Key string in ASCII format."; } } case hexadecimal { if-feature "key-chain:hex-key-string"; leaf hexadecimal-string { nacm:default-deny-all; type yang:hex-string; description "Key in hexadecimal string format. When compared to ASCII, specification in hexadecimal affords greater key entropy with the same number of internal key-string octets. Additionally, it discourages usage of well-known words or numbers."; } } } } case auth-tls { if-feature "tls"; choice role { description "The role of the localentity";entity."; case server { container tls-server { uses tlss:tls-server-grouping { description "Server TLS information."; } description"TLS related information";"TLS-related information."; } } case client { container tls-client { uses tlsc:tls-client-grouping { description "Client TLS information."; } description"TLS related information";"TLS-related information."; } } } } } } } /* * Configuration data nodes */ container pcep { presence "The PCEP is enabled"; description "Parameters for list of configured PCEP entities on the device."; container entity { description "The configured PCEP entity on the device."; leaf-list addr { type inet:ip-address-no-zone; min-elements 1; ordered-by user; description "The local Internet address of this PCEP entity. If operating as a PCE server, the PCEP entity listens on this address. If operating as a PCC, the PCEP entity binds outgoing TCP connections to this address based on the address family. It is possible for the PCEP entity to operatebothas both a PCC and a PCEServer,server, in which case it uses this address both to listen for incoming TCP connections and to bind outgoing TCP connections."; } leaf enabled { type boolean; default "true"; description "The administrative status of this PCEPEntity;entity; set to true when UP."; } leaf role { type role; must '(. != "unknown")' { error-message "The PCEP entity role cannot be unknown"; } mandatory true; description "The role that this entity can play. Takes one of the following values: - pcc(1): this PCEPEntityentity is a PCC, - pce(2): this PCEPEntityentity is a PCE, - pcc-and-pce(3): this PCEPEntityentity is both a PCC and a PCE."; } leaf description { type string; description "Description of the PCEP entity configured by theuser";user."; } leaf speaker-entity-id { if-feature "sync-opt"; type string; description "The Speaker EntityIdentifier";Identifier."; reference "RFC 8232: Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE"; } leaf admin-status { type boolean; default "true"; description "The administrative status of this PCEPEntity.entity. The value true represents admin status as up. This is the desired operational status as currently set by an operator or by default in the implementation. The value of oper-status represents the current status of an attempt to reach this desired status."; } leaf index { type uint32; config false; description "The index of the operational PECPentity";entity."; } leaf oper-status { type oper-status; config false; description "The operational status of the PCEP entity. Takes one of the following values: - oper-status-up(1): the PCEP entity is active, - oper-status-down(2): the PCEP entity is inactive, - oper-status-going-up(3): the PCEP entity is activating, - oper-status-going-down(4): the PCEP entity is deactivating, - oper-status-failed(5): the PCEP entity has failed and will recover when possible, - oper-status-failed-perm(6): the PCEP entity has failed and will not recover without operator intervention."; } uses domain-info { description "Local PCEP entityinformation";information."; } uses auth { description "Local authorization and securityparameters";parameters."; } container pce-info { when "../role = 'pce'" + "or " + "../role = 'pcc-and-pce'" { description "These fields are applicable when the role is PCE."; } description "TheLocallocal PCEEntityentity PCEinformation";information."; uses pce-info { description "Local PCEinformation";information."; } container path-key { if-feature "path-key"; description"Path-Key Configuration";"Path-key configuration."; reference "RFC 5520: Preserving Topology Confidentiality in Inter-Domain Path Computation Using aPath-Key -BasedPath-Key- Based Mechanism"; leaf enabled { type boolean; default "false"; description "Enabled orDisabled;disabled; set to true whenEnabled";enabled."; } leaf discard-timer { type uint32; units "minutes"; default "10"; description "A timer to discard unwantedpath-keys";path-keys."; } leaf reuse-time { type uint32 { range "30..max"; } units "minutes"; default "30"; description "A time after which the path-keys could bereused";reused."; } leaf pce-id { type inet:ip-address-no-zone; description "PCEAddressaddress to be used in each Path-Key Subobject (PKS), same as local PCE entity IPaddress";address."; } } } leaf connect-timer { type uint16 { range "1..max"; } units "seconds"; default "60"; description "The time in seconds that the PCEP entity will wait to establish a TCP connection with a peer. If a TCP connection is not established within thistimetime, then PCEP aborts the session setup attempt."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf connect-max-retry { type uint32; default "5"; description "The maximum number of times the system tries to establish a TCP connection to a peer before the session with the peer transitions to the idle state."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf init-back-off-timer { type uint16 { range "1..max"; } units "seconds"; mandatory true; description "The initial back-off time in seconds for retrying a failed session setup attempt to a peer. The back-off time increases for each failed session setup attempt, until a maximum back-off time is reached. The maximum back-off time is the max-back-off-timer leaf."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf max-back-off-timer { type uint32; units "seconds"; mandatory true; description "The maximum back-off time in seconds for retrying a failed session setup attempt to a peer. The back-off time increases for each failed session setup attempt, until this maximum value is reached. Session setup attempts then repeat periodically without any further increase in back-off time."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf open-wait-timer { type uint16; units "seconds"; config false; description "The time in seconds that the PCEP entity will wait to receive an Open message from a peer after the TCP connection has come up. If no Open message is received within thistimetime, then PCEP terminates the TCP connection and deletes the associated sessions."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf keep-wait-timer { type uint16; units "seconds"; config false; description "The time in seconds that the PCEP entity will wait to receive a Keepalive or PCErr message from a peer during session initialization after receiving an Open message. If no Keepalive or PCErr message is received within thistimetime, then PCEP terminates the TCP connection and deletes the associated sessions."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf keepalive-timer { type uint8; units "seconds"; default "30"; description "The Keepalive timer that this PCEP entity will propose in the initial Open message of each session it is involved in. This is the maximum time between two consecutive messages sent to a peer. Zero means that the PCEP entity prefers not to send Keepalives at all. Note that the actual Keepalive transmission intervals, in either direction of an active PCEP session, are determined by negotiation between the peers as specified by RFC5440,5440 andsothus may differ from this configured value."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf dead-timer { type uint8; units "seconds"; must '(. > ../keepalive-timer)' { error-message "The DeadTimer must be " + "larger than the Keepalive timer"; } default "120"; description "The DeadTimer that this PCEP entity will propose in the initial Open message of each session it is involved in. This is the time after which a peer should declare a session down if it does not receive any PCEP messages. Zero suggests that the peer does not run a DeadTimer at all."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf allow-negotiation { type boolean; default "true"; description "Whether the PCEP entity will permit the negotiation of session parameters."; } leaf max-keepalive-timer { type uint8; units "seconds"; mandatory true; description "The maximum value that this PCEP entity will accept from a peer for the interval between Keepalive transmissions. Zero means that the PCEP entity will allow no Keepalive transmission at all."; } leaf max-dead-timer { type uint8; units "seconds"; mandatory true; description "The maximum value inseconds,seconds that this PCEP entity will accept from a peer for the DeadTimer. Zero means that the PCEP entity will allow not running a DeadTimer."; } leaf min-keepalive-timer { type uint8; units "seconds"; mandatory true; description "The minimum value inseconds,seconds that this PCEP entity will accept for the interval between Keepalive transmissions. Zero means that the PCEP entity insists on no Keepalive transmission at all."; } leaf min-dead-timer { type uint8; units "seconds"; mandatory true; description "The minimum value inseconds,seconds that this PCEP entity will accept for the DeadTimer. Zero means that the PCEP entity insists on not running a DeadTimer."; } leaf sync-timer { if-feature "svec"; type uint16; units "seconds"; default "60"; description "The value of SyncTimer in seconds is used in the case of synchronized path computation request using the SVEC object. If after the expiration of the SyncTimer all the path computation requests have not been received, a protocol error istriggeredtriggered, and the PCE must cancel the whole set of path computation requests. Zero means that the PCEP entity does not use the SyncTimer."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf request-timer { type uint16 { range "1..max"; } units "seconds"; mandatory true; description "The maximum time that the PCEP entity will wait for a response to a PCReq message."; } leaf max-sessions { type uint32; mandatory true; description "Maximum number of sessions involving this PCEP entity that can exist at any time."; } leaf max-unknown-reqs { type uint32; default "5"; description "The maximum number of unrecognized requests and replies that any session on this PCEP entity is willing to accept per minute before terminating the session. A PCRep message contains an unrecognized reply if it contains an RP object whose request ID does not correspond to any in-progress request sent by this PCEP entity. A PCReq message contains an unrecognized request if it contains an RP object whose request ID is zero."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf max-unknown-msgs { type uint32; default "5"; description "The maximum number of unknown messages that any session on this PCEP entity is willing to accept per minute before terminating the session."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf pcep-notification-max-rate { type uint32; mandatory true; description "This variable indicates the maximum number of notifications issued per second. If events occur more rapidly, the implementation may simply fail to emit these notifications during thatperiod,period or may queue them until an appropriate time. A value of 0 means no notifications are emitted and all should be discarded (that is, not queued)."; } container stateful-parameter { if-feature "stateful"; description "The configured stateful PCEparameters";parameters."; leaf state-timeout { type uint32; units "seconds"; mandatory true; description "When a PCEP session is terminated, a PCC waits for this time period before flushing LSP state associated with that PCEP session and reverting to operator-defined default parameters orbehaviours.behaviors. The max value represents infinity."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } leaf redelegation-timeout { when "../../role = 'pcc'" + "or " + "../../role = 'pcc-and-pce'" { description "This field is applicable when the role isPCC";PCC."; } type uint32; units "seconds"; must '(. < ../state-timeout)' { error-message "The Redelegation Timeout must be " + "less than the State Timeout"; } mandatory true; description "When a PCEP session is terminated, a PCC waits for this time period before revoking LSP delegation to a PCE and attempting to redelegate LSPs associated with the terminated PCEP session to an alternate PCE."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } leaf rpt-non-pcep-lsp { when "../../role = 'pcc'" + "or " + "../../role = 'pcc-and-pce'" { description "This field is applicable when the role isPCC";PCC."; } type boolean; default "true"; description "If set, a PCC reports LSPs that are not controlled by any PCE (for example, LSPs that are statically configured at thePCC). ";PCC)."; } reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } container of-list { when "../role = 'pce'" + "or " + "../role = 'pcc-and-pce'" { description "These fields are applicable when the role isPCE";PCE."; } if-feature "objective-function"; uses of-list; description "The authorized OF-List at PCE for allpeers";peers."; } container lsp-db { if-feature "stateful"; config false; description "TheLSP-DB";LSP-DB."; leaf db-ver { when "../../role = 'pcc'" + "or " + "../../role = 'pcc-and-pce'" { description "This field is applicable when the role isPCC";PCC."; } if-feature "sync-opt"; type uint64; description "The LSP State Database VersionNumber";Number."; } list association-list { if-feature "association"; key "type id source global-source extended-id"; description "List of all PCEPassociations";associations."; reference "RFC 8697: Path Computation Element Communication Protocol (PCEP) Extensions for Establishing Relationships between Sets of Label Switched Paths (LSPs)"; leaf type { type identityref { base te-types:association-type; } description "The PCEP AssociationType";Type."; reference "IANA PCEP: ASSOCIATION Type Field in Path Computation Element Protocol (PCEP) Numbers RFC 8697: Path Computation Element Communication Protocol (PCEP) Extensions for Establishing Relationships between Sets of Label Switched Paths (LSPs)"; } leaf id { type uint16; description "PCEP AssociationID";ID."; } leaf source { type inet:ip-address-no-zone; description "PCEP Association Source."; } leaf global-source { type uint32; description "PCEP Global Association Source."; } leaf extended-id { type string; description "Additional information to support unique identification (Extended Association ID)."; } list lsp { key "plsp-id pcc-id lsp-id"; description "List of all LSP in thisassociation";association."; leaf plsp-id { type leafref { path "/pcep/entity/lsp-db/" + "lsp/plsp-id"; } description "Reference to PLSP-ID inLSP-DB";LSP-DB."; } leaf pcc-id { type leafref { path "/pcep/entity/lsp-db/" + "lsp[plsp-id=current()/" + "../plsp-id]/pcc-id"; } description "Reference to PCC-ID inLSP-DB";LSP-DB."; } leaf lsp-id { type leafref { path "/pcep/entity/lsp-db/" + "lsp[plsp-id=current()/../plsp-id]" + "[pcc-id=current()/../pcc-id]/lsp-id"; } description "Reference toLSP IDLSP-ID inLSP-DB";LSP-DB."; } } } list lsp { key "plsp-id pcc-id lsp-id"; description "List of all LSPs inLSP-DB";LSP-DB."; leaf plsp-id { type uint32 { range "1..1048575"; } description "A PCEP-specific identifier for the LSP. A PCC creates a unique PLSP-ID for each LSP that is constant for the lifetime of a PCEP session. PLSP-ID is 20 bits with 0 and 0xFFFFFare reserved";reserved."; } leaf pcc-id { type inet:ip-address-no-zone; description "The local IP address of thePCC,PCC that generated the PLSP-ID."; } leaf source { type inet:ip-address-no-zone; description "Tunnel sender address extracted from LSP-IDENTIFIERSTLV";TLV."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } leaf destination { type inet:ip-address-no-zone; description "Tunnel endpoint address extracted from LSP-IDENTIFIERSTLV";TLV."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } leaf tunnel-id { type uint16; description "Tunnel identifier used in the LSP-IDENTIFIERS TLV that remains constant over the life of the tunnel."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } leaf lsp-id { type uint16; description "Identifier used in the LSP-IDENTIFIERS TLV that can be changed to allow a sender to share resources with itself."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } leaf extended-tunnel-id { type inet:ip-address-no-zone; description "ExtendedTunneltunnel ID of the LSP in LSP-IDENTIFIERS TLV. The all-zeros format is represented as 0.0.0.0 and ::."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } leaf admin-state { type boolean; default "true"; description "The desired operationalstate";state."; } leaf operational-state { type operational-state; description "The operational status of theLSP";LSP."; } container delegated { description "Thedelegation related parameters";delegation-related parameters."; leaf enabled { type boolean; default "false"; description "LSP is delegated or not; set to true whendelegated";delegated."; } leaf peer { when '../enabled' { description "The LSP must bedelegated";delegated."; } type leafref { path "/pcep/entity/peers/peer/addr"; } description "At the PCC, the reference to the PCEP peer to which LSP is delegated;Atat the PCE, the reference to the PCEP peerwhichthat delegated thisLSP";LSP."; } leaf srp-id { type uint32 { range "1..4294967294"; } description "The last SRP-ID-number associated with this LSP. Thevaluevalues 0x00000000 and 0xFFFFFFFF are reserved."; } } container initiation { if-feature "pce-initiated"; description "ThePCE initiationparameters relatedparameters";to PCE initiation."; reference "RFC 8281: Path Computation Element Communication Protocol (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful PCE Model"; leaf enabled { type boolean; default "false"; description "Set to true if this LSP is initiated by aPCE";PCE."; } leaf peer { when '../enabled' { description "The LSP must bePCE-Initiated";PCE-initiated."; } type leafref { path "/pcep/entity/peers/peer/addr"; } description "If the role is PCC, this leaf refers to the PCEP peer (PCE) that initiated this LSP. If the role is PCE, this leaf refers to the PCEP peer (PCC) where the LSP isinitiated";initiated."; } } leaf symbolic-path-name { type string; description "The symbolic path name associated with the LSP."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } leaf last-error { type identityref { base lsp-error; } description "The last error for the LSP."; } leaf pst { type identityref { base te-types:path-signaling-type; } default "te-types:path-setup-rsvp"; description "The Path Setup Type (PST). Note that the te-types model uses the term Path SignalingType";Type."; reference "RFC 8408: Conveying Path Setup Type in PCE Communication Protocol (PCEP) Messages"; } list association-list { if-feature "association"; key "type id source global-source extended-id"; description "List of all PCEPassociations";associations."; leaf type { type leafref { path "/pcep/entity/lsp-db/" + "association-list/type"; } description "PCEP AssociationType";Type."; } leaf id { type leafref { path "/pcep/entity/lsp-db/" + "association-list[type=current()/" + "../type]/id"; } description "PCEP AssociationID";ID."; } leaf source { type leafref { path "/pcep/entity/lsp-db/" + "association-list[type=current()/../type]" + "[id=current()/../id]/source"; } description "PCEP Association Source."; } leaf global-source { type leafref { path "/pcep/entity/lsp-db/" + "association-list[type=current()/../type]" + "[id=current()/../id]" + "[source=current()/../source]" + "/global-source"; } description "PCEP Global Association Source."; } leaf extended-id { type leafref { path "/pcep/entity/lsp-db/" + "association-list[type=current()/../type]" + "[id=current()/../id]" + "[source=current()/../source]" + "[global-source=current()/../global-source]" + "/extended-id"; } description "Additional information to support unique identification."; } reference "RFC 8697: Path Computation Element Communication Protocol (PCEP) Extensions for Establishing Relationships between Sets of Label Switched Paths (LSPs)"; } } } container path-keys { when "../role = 'pce' or ../role = 'pcc-and-pce'" { description "These fields are applicable when the role isPCE";PCE."; } if-feature "path-key"; config false; description "The path-keys generated by thePCE";PCE."; reference "RFC 5520: Preserving Topology Confidentiality in Inter-Domain Path Computation Using a Path- Key-Based Mechanism"; list path-key { key "key"; description "The list of path-keys generated by thePCE";PCE."; leaf key { type uint16; description "Theidentifier,identifier or token used to represent the Confidential Path Segment (CPS) within the context of thePCE";PCE."; } container cps { description "The Confidential Path Segment(CPS)";(CPS)."; list explicit-route-objects { key "index"; description "List ofexplicit route objects";Explicit Route Objects (EROs)."; leaf index { type uint32; description "ERO subobjectindex";index."; } uses te-types:explicit-route-hop; } } leaf pcc-requester { type leafref { path "/pcep/entity/peers/peer/addr"; } description "Reference to PCC peer address that issued the original request that led to the creation of the path-key."; } leaf req-id { type uint32; description "The request ID of the original PCReq."; } leaf retrieved { type boolean; description "If path-key has been retrievedyet";yet."; } leaf pcc-retrieved { when '../retrieved' { description "ThePath-keypath-key should beretrieved";retrieved."; } type leafref { path "/pcep/entity/peers/peer/addr"; } description "Reference to PCC peer addresswhichthat retrieved thepath-key";path-key."; } leaf creation-time { type yang:timestamp; description "The timestamp value at the time thisPath-Keypath-key was created."; } leaf discard-time { type uint32; units "minutes"; description "A time after which this path-keys will bediscarded";discarded."; } leaf reuse-time { type uint32; units "minutes"; description "A time after which this path-keys could bereused";reused."; } } } container peers { description "The list of configured peers for the entity (remotePCE)";PCE)."; list peer { key "addr"; description "The peer configured for the entity. (remotePCE)";PCE)."; leaf addr { type inet:ip-address-no-zone; description "The local Internet address of this PCEP peer."; } leaf role { type role; must '(. != "pcc-and-pce")' { error-message "The PCEP peer cannot be both PCE and PCC at the same time"; } mandatory true; description "The role of the PCEPPeer.peer. Takes one of the following values: - unknown(0): this PCEP peer role is not known, - pcc(1): this PCEP peer is a PCC, - pce(2): this PCEP peer is a PCE, - pcc-and-pce(3): is not allowed as PCEP peer cannot be acting as both a PCC and a PCE at thesametime.";same time."; } leaf description { type string; description "Description of the PCEP peer configured by theuser";user."; } uses domain-info { description "PCEPeer information";peer information."; } container pce-info { uses pce-info { description "Using the PCEPeerpeer informationgrouping";grouping."; } description "The PCEPeer information";peer information."; } leaf delegation-pref { if-feature "stateful"; type uint8 { range "0..7"; } mandatory true; description "The PCE peer delegationpreferencepreference, where 7 reflects the highestpreference";preference."; } uses auth { description "The PCE peer authorization and securityparameters";parameters."; } leaf discontinuity-time { type yang:timestamp; config false; description "The timestamp of the time when the information and statistics were last reset."; } leaf initiate-session { type boolean; config false; description "Indicates whether the local PCEP entity initiates sessions to thispeer,peer orwaitwaits for the peer to initiate a session."; } leaf session-exists { type boolean; config false; description "Indicates whether a session with this peer currently exists."; } leaf session-up-time { type yang:timestamp; config false; description "The timestamp value of the last time a session with this peer was successfully established."; } leaf session-fail-time { type yang:timestamp; config false; description "The timestamp value of the last time a session with this peer failed to be established."; } leaf session-fail-up-time { type yang:timestamp; config false; description "The timestamp value of the last time a session with this peer failed from active."; } container sessions { config false; description "This entry represents a single PCEP session in which the local PCEP entity participates. This entry exists only if the corresponding PCEP session has been initialized by some event, such as manual user configuration, auto-discovery of a peer, or an incoming TCP connection."; list session { key "initiator"; description "The list ofsessions,sessions; note that for a time being two sessions may exist for apeer";peer."; leaf initiator { type initiator; description "The initiator of the session, that is, whether the TCP connection was initiated by the local PCEP entity or the peer. There is a window during session initialization where two sessions can exist between a pair of PCEP speakers, each initiated by one of the speakers. One of these sessions is always discarded before it leaves OpenWait state. However, before it is discarded, two sessions to the given peer appear transiently in this YANG module. The sessions are distinguished by who initiated them, and so this field is the key."; } leaf role { type leafref { path "../../../role"; } description "The peer role."; } leaf state-last-change { type yang:timestamp; description "The timestamp value at the time this session entered its current state as denoted by the state leaf."; } leaf state { type sess-state; description "The current state of the session. The set of possible states excludes the idle state since entries do not exist in the idle state."; } leaf session-creation { type yang:timestamp; description "The timestamp value at the time this session was created."; } leaf connect-retry { type yang:counter32; description "The number of times that the local PCEP entity has attempted to establish a TCP connection for this session without success. The PCEP entity gives up when this reaches connect-max-retry."; } leaf local-id { type uint8; description "The value of the PCEP session ID used by the local PCEP entity in the Open message for this session. If the state istcp-pendingtcp-pending, then this is the session ID that will be used in the Open message. Otherwise, this is the session ID that was sent in the Open message."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf remote-id { type uint8; description "The value of the PCEP session ID used by the peer in its Open message for this session. If the state is TCPPending orOpenWaitOpenWait, then this leaf is not used and MUST be set to zero."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf keepalive-timer { type uint8; units "seconds"; description "The agreed maximum interval at which the local PCEP entity transmits PCEP messages on this PCEP session. Zero means that the local PCEP entity never sends Keepalives on this session. This field is used if and only if the state is session-up. Otherwise, it is not used and MUST be set to zero."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf peer-keepalive-timer { type uint8; units "seconds"; description "The agreed maximum interval at which the peer transmits PCEP messages on this PCEP session. Zero means that the peer never sends Keepalives on this session. This field is used if and only if state is session-up. Otherwise, it is not used and MUST be set to zero."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf dead-timer { type uint8; units "seconds"; description "The DeadTimer interval for this PCEP session."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf peer-dead-timer { type uint8; units "seconds"; description "The peer's DeadTimer interval for this PCEP session. If the state is TCPPending orOpenWaitOpenWait, then this leaf is not used and MUST be set to zero."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf ka-hold-time-rem { type uint8; units "seconds"; description "The Keepalive hold time remaining for this session. If the state is TCPPending orOpenWaitOpenWait, then this field is not used and MUST be set to zero."; } leaf overloaded { type boolean; description "If the local PCEP entity has informed the peer that it is currently overloaded, then this is set to true. Otherwise, it is set to false."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf overloaded-timestamp { when '../overloaded' { description "Valid whenoverloaded";overloaded."; } type yang:timestamp; description "The timestamp value of the time when the overloaded field was set to true."; } leaf overload-time { type uint32; units "seconds"; description "The interval of time that is remaining until the local PCEP entity will cease to be overloaded on this session. This field is only used if overloaded is set to true. Otherwise, it is not used and MUST be set to zero."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf peer-overloaded { type boolean; description "If the peer has informed the local PCEP entity that it is currently overloaded, then this is set to true. Otherwise, it is set to false."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf peer-overloaded-timestamp { when '../peer-overloaded' { description "Valid whenPeerpeer isoverloaded";overloaded."; } type yang:timestamp; description "The timestamp value of the time when the peer-overloaded field was set to true."; } leaf peer-overload-time { type uint32; units "seconds"; description "The interval of time that is remaining until the peer will cease to be overloaded. If it is not known how long the peer will stay in overloaded state, this leaf is set to zero. This field is only used if peer-overloaded is set to true. Otherwise, it is not used and MUST be set to zero."; reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } leaf lspdb-sync { if-feature "stateful"; type sync-state; description "The LSP-DB state synchronization status."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } leaf recv-db-ver { when "../role = 'pcc'" + "or " + "../role = 'pcc-and-pce'" { description "This field is applicable when the role isPCC";PCC."; } if-feature "stateful"; if-feature "sync-opt"; type uint64; description "The last received LSP State Database VersionNumber";Number."; reference "RFC 8231: Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE"; } container of-list { when "../role = 'pce'" + "or " + "../role = 'pcc-and-pce'" { description "These fields are applicable when the role isPCE";PCE."; } if-feature "objective-function"; uses of-list; description "Indicate the list of supported OF on thissession";session."; reference "RFC 5541: Encoding of Objective Functions in the Path Computation Element Communication Protocol (PCEP)"; } container pst-list { when "../role = 'pce'" + "or " + "../role = 'pcc-and-pce'" { description "These fields are applicable when the role isPCE";PCE."; } description "Indicate the list of supported PST on thissession";session."; reference "RFC 8408: Conveying Path Setup Type in PCE Communication Protocol (PCEP) Messages"; list path-setup-type { key "pst"; description "The list ofPST";PST."; leaf pst { type identityref { base te-types:path-signaling-type; } description "The PSTsupported";supported."; } } } container assoc-type-list { if-feature "association"; description "Indicate the list of supported association types on thissession";session."; reference "RFC 8697: Path Computation Element Communication Protocol (PCEP) Extensions for Establishing Relationships between Sets of Label Switched Paths (LSPs)"; list assoc-type { key "at"; description "The list of authorized associationtypes";types."; leaf at { type identityref { base te-types:association-type; } description "The association typeauthorized";authorized."; } } } leaf speaker-entity-id { if-feature "sync-opt"; type string; description "The Speaker EntityIdentifier";Identifier."; reference "RFC 8232: Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE"; } } } } } } } /* * Notifications */ notification pcep-session-up { description "This notification is sent when the value of '/pcep/peers/peer/sessions/session/state' enters the 'session-up' state."; uses notification-session-hdr; leaf state-last-change { type yang:timestamp; description "The timestamp value at the time this session entered its current state as denoted by the state leaf."; } leaf state { type sess-state; description "The current state of the session. The set of possible states excludes the idle state since entries do not exist in the idle state."; } reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } notification pcep-session-down { description "This notification is sent when the value of '/pcep/peers/peer/sessions/session/state' leaves the 'session-up' state."; uses notification-instance-hdr; leaf session-initiator { type initiator; description "The initiator of the session."; } leaf state-last-change { type yang:timestamp; description "The timestamp value at the time this session entered its current state as denoted by the state leaf."; } leaf state { type sess-state; description "The current state of the session. The set of possible states excludes the idle state since entries do not exist in the idle state."; } reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } notification pcep-session-local-overload { description "This notification is sent when the local PCEP entity enters overload state for a peer."; uses notification-session-hdr; leaf overloaded { type boolean; description "If the local PCEP entity has informed the peer that it is currently overloaded, then this is set to true. Otherwise, it is set to false."; } leaf overloaded-timestamp { type yang:timestamp; description "The timestamp value of the time when the overloaded field was set to true."; } leaf overload-time { type uint32; units "seconds"; description "The interval of time that is remaining until the local PCEP entity will cease to be overloaded on this session."; } reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } notification pcep-session-local-overload-clear { description "This notification is sent when the local PCEP entity leaves overload state for a peer."; uses notification-instance-hdr; leaf overloaded { type boolean; description "If the local PCEP entity has informed the peer that it is currently overloaded, then this is set to true. Otherwise, it is set to false."; } leaf overloaded-clear-timestamp { type yang:timestamp; description "The timestamp value of the time when the overloaded field was set to false."; } reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } notification pcep-session-peer-overload { description "This notification is sent when a peer enters overload state."; uses notification-session-hdr; leaf peer-overloaded { type boolean; description "If the peer has informed the local PCEP entity that it is currently overloaded, then this is set to true. Otherwise, it is set to false."; } leaf peer-overloaded-timestamp { type yang:timestamp; description "The timestamp value of the time when the peer-overloaded field was set to true."; } leaf peer-overload-time { type uint32; units "seconds"; description "The interval of time that is remaining until the peer will cease to be overloaded. If it is not known how long the peer will stay in overloaded state, this leaf is set to zero."; } reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } notification pcep-session-peer-overload-clear { description "This notification is sent when a peer leaves overload state."; uses notification-instance-hdr; leaf peer-overloaded { type boolean; description "If the peer has informed the local PCEP entity that it is currently overloaded, then this is set to true. Otherwise, it is set to false."; } leaf peer-overloaded-clear-timestamp { type yang:timestamp; description "The timestamp value of the time when the peer-overloaded field was set to false."; } reference "RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)"; } /* * RPC */ rpc trigger-resync { if-feature "stateful"; if-feature "sync-opt"; nacm:default-deny-all; description "Trigger the resynchronization at thePCE";PCE."; reference "RFC 8232: Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE"; input { leaf pcc { type leafref { path "/pcep/entity/peers/peer/addr"; } mandatory true; description "The IP address to identify the PCC. The statesyncronizationsynchronization is re-triggered for all LSPs from the PCC. The rpc on the PCC will be ignored."; } } } }<CODE ENDS> ]]></artwork> </figure>]]></sourcecode> </section> <sectiontitle="ietf-pcep-stats module" toc="default"> <figure title="" suppress-title="false" align="left" alt="" width="" height=""> <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""> <![CDATA[ <CODE BEGINS> file "ietf-pcep-stats@2025-01-27.yang"toc="default" numbered="true"> <name>ietf-pcep-stats Module</name> <sourcecode name="ietf-pcep-stats@2025-07-24.yang" type="yang" markers="true"><![CDATA[ module ietf-pcep-stats { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-pcep-stats"; prefix pcep-stats; import ietf-pcep { prefix pcep; reference "RFCXXXX:9826: A YANG Data Model for the Path Computation ElementCommunicationsCommunication Protocol (PCEP)"; } import ietf-yang-types { prefix yang; reference "RFC 6991: Common YANG Data Types"; } organization "IETF PCE (Path Computation Element) Working Group"; contact "WG Web: <https://datatracker.ietf.org/wg/pce/> WG List: <mailto:pce@ietf.org> Editor: Dhruv Dhody <mailto:dhruv.ietf@gmail.com>"; description "The YANG module augments the Path Computation Element Communication Protocol (PCEP) YANG operational model with statistics, counters and telemetry data. Copyright (c) 2025 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Revised BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). This version of this YANG module is part of RFCXXXX;9826; see the RFC itself for full legal notices."; revision2025-01-272025-07-24 { description "Initial revision."; reference "RFCXXXX:9826: A YANG Data Model for the Path Computation ElementCommunicationsCommunication Protocol (PCEP)"; } /* * Features */ feature reset-all { description "Support resetting of all PCEP statistics."; } /* * Groupings */ grouping stats { description "This grouping defines statistics for PCEP. It is used for both peer and current sessions. Since thisgroupings includegrouping includes a relative path, care needs to be taken while usingit";it."; leaf discontinuity-time { type yang:timestamp; description "The timestamp value of the time when the statistics were last reset."; } container pce { when "../../pcep:role = 'pce'" + "or " + "../../pcep:role = 'pcc-and-pce'" { description "Valid for PCEPPeerpeer asPCE";PCE."; } leaf rsp-time-avg { type uint32; units "milliseconds"; description "The average response time. If an average response time has not beencalculatedcalculated, then this leaf has the value zero."; } leaf rsp-time-lwm { type uint32; units "milliseconds"; description "The smallest (low-water mark) response time seen. If no responses have beenreceivedreceived, then this leaf has the value zero."; } leaf rsp-time-hwm { type uint32; units "milliseconds"; description "The greatest (high-water mark) response time seen. If no responses have beenreceivedreceived, then this object has the value zero."; } leaf pcreq-sent { type yang:counter32; description "The number of PCReq messages sent."; } leaf pcreq-rcvd { type yang:counter32; description "The number of PCReq messages received."; } leaf pcrep-sent { type yang:counter32; description "The number of PCRep messages sent."; } leaf pcrep-rcvd { type yang:counter32; description "The number of PCRep messages received."; } leaf req-sent { type yang:counter32; description "The number of requests sent. A request corresponds 1:1 with an RP object in a PCReq message. This might be greater than pcreq-sent because multiple requests can be batched into a single PCReq message."; } leaf req-sent-pend-rep { type yang:counter32; description "The number of requests that have been sent for which a response is still pending."; } leaf req-sent-ero-rcvd { type yang:counter32; description "The number of requests that have been sent for which a response with an ERO object was received. Such responses indicate that a path was successfully computed by the peer."; } leaf req-sent-nopath-rcvd { type yang:counter32; description "The number of requests that have been sent for which a response with a NO-PATH object was received. Such responses indicate that the peer could not find a path to satisfy the request."; } leaf req-sent-cancel-rcvd { type yang:counter32; description "The number of requests that were cancelled with a PCNtf message. This might be different than pcntf-rcvd because not all PCNtf messages are used to cancel requests, and a single PCNtf message can cancel multiple requests."; } leaf req-sent-error-rcvd { type yang:counter32; description "The number of requests that were rejected with a PCErr message. This might be different than pcerr-rcvd because not all PCErr messages are used to reject requests, and a single PCErr message can reject multiple requests."; } leaf req-sent-timeout { type yang:counter32; description "The number of requests that have been sent to a peer and have been abandoned because the peer has taken too long to respond to them."; } leaf req-sent-cancel-sent { type yang:counter32; description "The number of requests that were sent to the peer and explicitly cancelled by the local PCEP entity sending a PCNtf."; } leaf rep-rcvd-unknown { type yang:counter32; description "The number of responses to unknown requests received. A response to an unknown request is a response whose RP object does not contain the request ID of any request that is currently outstanding on the session."; } description "The stats related to PCE aspeer";peer."; } leaf pcerr-sent { type yang:counter32; description "The number of PCErr messages sent."; } leaf pcerr-rcvd { type yang:counter32; description "The number of PCErr messages received."; } leaf pcntf-sent { type yang:counter32; description "The number of PCNtf messages sent."; } leaf pcntf-rcvd { type yang:counter32; description "The number of PCNtf messages received."; } leaf keepalive-sent { type yang:counter32; description "The number of Keepalive messages sent."; } leaf keepalive-rcvd { type yang:counter32; description "The number of Keepalive messages received."; } leaf unknown-rcvd { type yang:counter32; description "The number of unknown messages received."; } leaf corrupt-rcvd { type yang:counter32; description "The number of corrupted PCEP messages received."; } container pcc { when "../../pcep:role = 'pcc'" + "or " + "../../pcep:role = 'pcc-and-pce'" { description "Valid for PCEPPeerpeer asPCC";PCC."; } leaf req-rcvd { type yang:counter32; description "The number of requests received. A request corresponds 1:1 with an RP object in a PCReq message. This might be greater than pcreq-rcvd because multiple requests can be batched into a single PCReq message."; } leaf req-rcvd-pend-rep { type yang:counter32; description "The number of requests that have been received for which a response is still pending."; } leaf req-rcvd-ero-sent { type yang:counter32; description "The number of requests that have been received for which a response with an ERO object was sent. Such responses indicate that a path was successfully computed by the local PCEP entity."; } leaf req-rcvd-nopath-sent { type yang:counter32; description "The number of requests that have been received for which a response with a NO-PATH object was sent. Such responses indicate that the local PCEP entity could not find a path to satisfy the request."; } leaf req-rcvd-cancel-sent { type yang:counter32; description "The number of requests received that were cancelled by the local PCEP entity sending a PCNtf message. This might be different than pcntf-sent because not all PCNtf messages are used to cancel requests, and a single PCNtf message can cancel multiple requests."; } leaf req-rcvd-error-sent { type yang:counter32; description "The number of requests received that were cancelled by the local PCEP entity sending a PCErr message. This might be different than pcerr-sent because not all PCErr messages are used to cancel requests, and a single PCErr message can cancel multiple requests."; } leaf req-rcvd-cancel-rcvd { type yang:counter32; description "The number of requests that were received from the peer and explicitly cancelled by the peer sending a PCNtf."; } leaf req-rcvd-unknown { type yang:counter32; description "The number of unknown requests that have been received. An unknown request is a request whose RP object contains a request ID of zero."; } description "The stats related to PCC aspeer";peer."; } container svec { if-feature "pcep:svec"; description "If synchronized path computation issupported";supported."; container pce { when "../../../pcep:role = 'pce'" + "or " + "../../../pcep:role = 'pcc-and-pce'" { description "Valid for PCEPPeerpeer asPCE";PCE."; } leaf svec-sent { type yang:counter32; description "The number of SVEC objects sent in PCReq messages. An SVEC object represents a set of synchronized requests."; } leaf svec-req-sent { type yang:counter32; description "The number of requests sent that appeared in one or more SVEC objects."; } description "The SVEC stats related toPCE";PCE."; } container pcc { when "../../../pcep:role = 'pcc'" + "or " + "../../../pcep:role = 'pcc-and-pce'" { description "Valid for PCEPPeerpeer asPCC";PCC."; } leaf svec-rcvd { type yang:counter32; description "The number of SVEC objects received in PCReq messages. An SVEC object represents a set of synchronized requests."; } leaf svec-req-rcvd { type yang:counter32; description "The number of requests received that appeared in one or more SVEC objects."; } description "The SVEC stats related to PCC aspeer";peer."; } } container stateful { if-feature "pcep:stateful"; description "StatefulPCE related statistics";PCE-related statistics."; container pce { when "../../../pcep:role = 'pce'" + "or " + "../../../pcep:role = 'pcc-and-pce'" { description "Valid for PCEPPeerpeer asPCE";PCE."; } leaf pcrpt-sent { type yang:counter32; description "The number of PCRpt messages sent."; } leaf pcupd-rcvd { type yang:counter32; description "The number of PCUpd messages received."; } leaf rpt-sent { type yang:counter32; description "The number of LSPReportsreports sent. An LSP report corresponds 1:1 with an LSP object in a PCRpt message. This might be greater than pcrpt-sent because multiple reports can be batched into a single PCRpt message."; } leaf upd-rcvd { type yang:counter32; description "The number of LSPUpdatesupdates received. An LSP update corresponds 1:1 with an LSP object in a PCUpd message. This might be greater than pcupd-rcvd because multiple updates can be batched into a single PCUpd message."; } leaf upd-rcvd-unknown { type yang:counter32; description "The number of updates to unknown LSPs received. An update to an unknown LSP is a update whose LSP object does not contain the PLSP-ID of any LSP that is currently present."; } leaf upd-rcvd-undelegated { type yang:counter32; description "The number of updates to not delegated LSPs received. An update to an undelegated LSP is a update whose LSP object does not contain the PLSP-ID of any LSP that is currently delegated to the current PCEP session."; } leaf upd-rcvd-error-sent { type yang:counter32; description "The number of updates to LSPs received that were responded by the local PCEP entity by sending a PCErr message."; } description "The stateful stats related to PCE as peer"; } container pcc { when "../../../pcep:role = 'pcc'" + "or " + "../../../pcep:role = 'pcc-and-pce'" { description "Valid for PCEPPeerpeer asPCC";PCC."; } leaf pcrpt-rcvd { type yang:counter32; description "The number of PCRpt messages received."; } leaf pcupd-sent { type yang:counter32; description "The number of PCUpd messages sent."; } leaf rpt-rcvd { type yang:counter32; description "The number of LSPReportsreports received. An LSP report corresponds 1:1 with an LSP object in a PCRpt message. This might be greater than pcrpt-rcvd because multiple reports can be batched into a single PCRpt message."; } leaf rpt-rcvd-error-sent { type yang:counter32; description "The number of reports of LSPs received that were responded by the local PCEP entity by sending a PCErr message."; } leaf upd-sent { type yang:counter32; description "The number of LSP updates sent. An LSP update corresponds 1:1 with an LSP object in a PCUpd message. This might be greater than pcupd-sent because multiple updates can be batched into a single PCUpd message."; } description "The stateful stats related to PCC aspeer";peer."; } container initiation { if-feature "pcep:pce-initiated"; description"PCE-Initiated"PCE-initiated relatedstatistics";statistics."; container pcc { when "../../../../pcep:role = 'pcc'" + "or " + "../../../../pcep:role = 'pcc-and-pce'" { description "Valid for PCEPPeerpeer asPCC";PCC."; } leaf pcinitiate-sent { type yang:counter32; description "The number of PCInitiate messages sent."; } leaf initiate-sent { type yang:counter32; description "The number of LSPInitiationinitiations sent via PCE. An LSP initiation corresponds 1:1 with an LSP object in a PCInitiate message. This might be greater than pcinitiate-sent because multiple initiations can be batched into a single PCInitiate message."; } description "The initiation stats related to PCC aspeer";peer."; } container pce { when "../../../../pcep:role = 'pce'" + "or " + "../../../../pcep:role = 'pcc-and-pce'" { description "Valid for PCEPPeerpeer asPCE";PCE."; } leaf pcinitiate-rcvd { type yang:counter32; description "The number of PCInitiate messages received."; } leaf initiate-rcvd { type yang:counter32; description "The number of LSPInitiationinitiations received from PCE. An LSP initiation corresponds 1:1 with an LSP object in a PCInitiate message. This might be greater than pcinitiate-rcvd because multiple initiations can be batched into a single PCInitiate message."; } leaf initiate-rcvd-error-sent { type yang:counter32; description "The number of initiations of LSPs received that were responded to by the local PCEP entity by sending a PCErr message."; } description "The initiation stats related to PCE aspeer";peer."; } } } container path-key { when "../../pcep:role = 'pcc'" + "or " + "../../pcep:role = 'pcc-and-pce'" { description "Valid for PCEPPeerpeer asPCC";PCC."; } if-feature "pcep:path-key"; description "IfPath-Keypath-key issupported";supported."; leaf unknown-path-key { type yang:counter32; description "The number of attempts to expand an unknown path-key."; } leaf exp-path-key { type yang:counter32; description "The number of attempts to expand an expired path-key."; } leaf dup-path-key { type yang:counter32; description "The number of duplicate attempts to expand the same path-key."; } leaf path-key-no-attempt { type yang:counter32; description "The number of expired path-keys with no attempt to expand it."; } } action reset-statistics { description "The reset action will clear the statistics at the associatedcontainer";container."; input { leaf reset-at { type yang:date-and-time; description "The time when the reset was issued."; } } output { leaf reset-finished-at { type yang:date-and-time; description "The time when the reset finished."; } } } } /* * Augment modules to add statistics */ augment "/pcep:pcep/pcep:entity/pcep:peers/pcep:peer" { description "Augmenting thestatistics";statistics."; container stats { config false; description "The container for all statistics at peer level."; uses stats { description "Since PCEP sessions can be ephemeral, the peer statistics tracks a peer even when no PCEP session currently exists to that peer. The statistics contained are an aggregate of the statistics for all successive sessions to that peer."; } leaf sess-setup-ok { type yang:counter32; config false; description "The number of PCEP sessions successfully established with the peer, including any current session. This counter is incremented each time a session with this peer is successfully established."; } leaf sess-setup-fail { type yang:counter32; config false; description "The number of PCEP sessions with the peer that have been attempted but failed before being fully established. This counter is incremented each time a session retry to this peer fails."; } leaf req-sent-closed { when "../../pcep:role = 'pce'" + "or " + "../../pcep:role = 'pcc-and-pce'" { description "Valid for PCEPPeerpeer asPCE";PCE."; } type yang:counter32; description "The number of requests that were sent to the peer and implicitly cancelled when the session they were sent over was closed."; } leaf req-rcvd-closed { when "../../pcep:role = 'pcc'" + "or " + "../../pcep:role = 'pcc-and-pce'" { description "Valid for PCEPPeerpeer asPCC";PCC."; } type yang:counter32; description "The number of requests that were received from the peer and implicitly cancelled when the session they were received over was closed."; } } } augment "/pcep:pcep/pcep:entity/pcep:peers/pcep:peer/" + "pcep:sessions/pcep:session" { description "Augmenting thestatistics";statistics."; container stats { description "The container for all statistics at session level."; uses stats { description "The statistics contained are for the current sessions to that peer. These are lost when the session goes down."; } } } rpc reset-pcep-statistics-all { if-feature "reset-all"; description "Reset all the PCEP statistics collected across all peers and sessions. This RPC is used if the implementation supports a mechanism to reset all PCEP statistics across all peers and sessions through mechanisms such as by walking a list of pointers to those peers and sessions. If this mechanism is not supported, implementations must reset PCEP statistics individually by invoking the action for each peer and session."; } }<CODE ENDS> ]]></artwork> </figure>]]></sourcecode> </section> </section> <sectiontitle="Security Considerations" toc="default">toc="default" numbered="true"> <name>Security Considerations</name> <!-- [rfced] Security Considerations a.) We made some updates to this section to align with the template at <https://wiki.ietf.org/group/ops/yang-security-guidelines>. Please review. b.) FYI - We added headers to separate the information for each module. c.) The document includes "respective RFCs" in this sentence, but the template indicates that the RFCs should be listed. Are any updates needed here? Document: Refer to the Security Considerations of respective RFCs for information as to which nodes may be considered sensitive or vulnerable in network environments. Template (https://wiki.ietf.org/group/ops/yang-security-guidelines): Refer to the Security Considerations of [RFC-insert-numbers] for information as to which nodes may be considered sensitive or vulnerable in network environments. d.) For the "ietf-pcep-stats" YANG module, the first and last sentence in the the "Readable nodes section" vary from the template. Are any updates needed? Document: The readable data nodes in this YANG module may be considered sensitive or vulnerable in some network environments. It is thus important to control read access (e.g., via get, get-config, or notification) to these data nodes. The statistics could provide information related to the current usage patterns of the network. Template (https://wiki.ietf.org/group/ops/yang-security-guidelines): Some of the readable data nodes in this YANG module may be considered sensitive or vulnerable in some network environments. It is thus important to control read access (e.g., via get, get-config, or notification) to these data nodes. Specifically, the following subtrees and data nodes have particular sensitivities/vulnerabilities: e.) For the "ietf-pcep-stats" YANG module, we do not see the "Reusable groupings from other modules section" or "No data nodes section" from the template. Please confirm that these sections do not apply to this YANG module. f.) The following paragraphs (pertaining to the "ietf-pcep" YANG module) do not appear in the template. Do these paragraphs pertain to any parts of the template (i.e., need to be bulleted lists under a part of the template)? Or are these okay as is? Original: The actual authentication key data (whether locally specified or part of a key-chain) is sensitive and needs to be kept secret from unauthorized parties; compromise of the key data would allow an attacker to forge PCEP traffic that would be accepted as authentic, potentially compromising the TE domain. The model describes several notifications, implementations must rate- limit the generation of these notifications to avoid creating a significant notification load. Otherwise, this notification load may have some side effects on the system stability and may be exploited as an attack vector. The "auth" container includes various authentication and security options for PCEP. Further, Section 7.1 describes how to configure TLS1.2 and TLS1.3 for a PCEP session via this YANG module. g.) Note that we will ask the AD to approve the changes to the Security Considerations after the questions above have been addressed. --> <!-- DNE: Boilerplate begins --> <t>This section is modeled after the template described in <xref target="I-D.ietf-netmod-rfc8407bis" sectionFormat="of" section="3.7"/>.</t> <t>Theietf-pcep"ietf-pcep" andietf-pcep-stats"ietf-pcep-stats" YANG modules define data models that are designed to be accessed via YANG-based management protocols, such as NETCONF <xreftarget="RFC6241"/>target="RFC6241" format="default"/> and RESTCONF <xreftarget="RFC8040"/>.target="RFC8040" format="default"/>. These protocols have to use a secure transport layer (e.g., SSH <xreftarget="RFC6242"/>,target="RFC4252" format="default"/>, TLS <xreftarget="RFC8446"/>,target="RFC8446" format="default"/>, and QUIC <xreftarget="RFC9000"/>)target="RFC9000" format="default"/>) and have to use mutual authentication.</t> <t>TheNETCONF access control modelNetwork Configuration Access Control Model (NACM) <xref target="RFC8341"/> provides the means to restrict access for particular NETCONF or RESTCONF users to apre-configuredpreconfigured subset of all available NETCONF or RESTCONF protocol operations and content.</t> <t><strong>The "ietf-pcep" YANG module:</strong></t> <t>There are a number of data nodes defined in theietf-pcep"ietf-pcep" YANG modulewhichthat are writable/creatable/deletable (i.e.,config true,"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 particularsensitivities/vulnerabilities: <list> <t>/pcep/entity/ - configuresensitivities/vulnerabilities:</t> <!-- DNE: Boilerplate ends --> <ul spacing="normal"> <li>/pcep/entity/: Configures local parameters,capabilities etc.</t> <t>/pcep/entity/peers - configurecapabilities, etc.</li> <li>/pcep/entity/peers: Configures remote peers tosetupset up a PCEPsession.</t> </list></t>session.</li> </ul> <t>Unauthorized access to the above list can adversely affect the PCEP session between the local entity and the peers. This may lead to the inability to compute new paths, and stateful operations on the delegated as well as PCE-initiated LSPs.</t> <!-- DNE: Boilerplate begins --> <t>Some of the readable data nodes in this YANG module may be considered sensitive or vulnerable in some network environments. It is thus important to control read access (e.g., via get, get-config, or notification) to these data nodes. Specifically, the following subtrees and data nodes have particular sensitivities/ vulnerabilities:<list> <t>/pcep/lsp-db -</t> <!-- DNE: Boilerplate ends --> <ul spacing="normal"> <li>/pcep/lsp-db: All the LSPs in the network. Unauthorized access to this could provide all path and network usageinformation.</t> <t>/pcep/path-keys/ -information.</li> <li>/pcep/path-keys/: The Confidential Path Segments (CPS) are hidden using path-keys. Unauthorized access to this could leak confidential pathinformation. </t> </list></t>information.</li> </ul> <!-- DNE: Boilerplate begins --> <t>Some of the RPC or action operations in this YANG module may be considered sensitive or vulnerable in some network environments. It is thus important to control access to these operations. Specifically, the followingoperations haveoperation has particularsensitivities/vulnerabilities: <list> <t>trigger-resync - triggersensitivities/ vulnerabilities: </t> <!-- DNE: Boilerplate ends --> <ul spacing="normal"> <li>trigger-resync: Triggers resynchronization with the PCE. Unauthorized access to this could force a PCEP session into continuous statesynchronization. </t> </list></t>synchronization.</li> </ul> <t>This YANG module uses groupings from other YANG modules that define nodes that may be considered sensitive or vulnerable in network environments. Refer to the Security Considerations of respective RFCs for information as to which nodes may be considered sensitive or vulnerable in network environments.</t> <t>The YANG module defines a set of identities, types, and groupings. These nodes are intended to be reused by other YANG modules. The module by itself does not expose any data nodes that are writable, data nodes that contain read-only state, or RPCs. As such, there are no additional security issues related to the YANG module that need to be considered.</t> <t>Modules that use the groupings that are defined in this document should identify the corresponding security considerations.</t> <t>The actual authentication key data (whether locally specified or part of a key-chain) is sensitive and needs to be kept secret from unauthorized parties; compromise of the key data would allow an attacker to forge PCEP traffic that would be accepted as authentic, potentially compromising the TE domain.</t> <t>The model describes severalnotifications,notifications; implementations must rate-limit the generation of these notifications to avoid creating a significant notification load. Otherwise, this notification load may have some side effects on the system stability and may be exploited as an attack vector.</t> <t>The "auth" container includes various authentication and security options for PCEP. Further, <xreftarget="tls"/>target="tls" format="default"/> describes how to configureTLS1.2TLS 1.2 andTLS1.3TLS 1.3 for a PCEP session via this YANG module.</t><t>Further, this<t><strong>The "ietf-pcep-stats" YANG module:</strong></t> <t>This document also includes another YANG module (calledietf-pcep-stats)"ietf-pcep-stats") for maintaining the statistics by augmenting theietf-pcep"ietf-pcep" YANGmodule. Theremodule.</t> <t>There are no particularly sensitive writable datanodes defined in this module which are writable/creatable/deletable (i.e., config true). Thenodes. </t> <t>The readable data nodes in this YANG module may be considered sensitive or vulnerable in some network environments. It is thus important to control read access (e.g., via get, get-config, or notification) to these data nodes. The statistics could provide information related to the current usage patterns of the network.</t> <t>Some of the RPC or action operations in this YANG module may be considered sensitive or vulnerable in some network environments. It is thus important to control access to these operations. Specifically, the followingoperations haveoperation has particular sensitivities/vulnerabilities:<list> <t>reset-pcep-statistics-all -</t> <ul spacing="normal"> <li>reset-pcep-statistics-all: The RPC is used to reset all PCEP statistics across all peers and sessions. An unauthorized reset could impactmonitoring.</t> </list> </t>monitoring.</li> </ul> </section> <sectiontitle="IANA Considerations" toc="default"> <t>This document requeststoc="default" numbered="true"> <name>IANA Considerations</name> <t>IANA has registered theIANA to register twofollowing URIs in the "IETF XML Registry" <xreftarget="RFC3688"/>. Following the format in RFC 3688, the following registrations are requested - <figure title="" suppress-title="false" align="left" alt="" width="" height=""> <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[ URI: urn:ietf:params:xml:ns:yang:ietf-pcep Registrant Contact: The IESG XML: N/A;target="RFC3688" format="default"/>: </t> <dl spacing="compact" newline="false"> <dt>URI:</dt> <dd>urn:ietf:params:xml:ns:yang:ietf-pcep</dd> <dt>Registrant Contact:</dt> <dd>The IESG</dd> <dt>XML:</dt> <dd>N/A; the requested URI is an XMLnamespace. URI: urn:ietf:params:xml:ns:yang:ietf-pcep-stats Registrant Contact: The IESG XML: N/A;namespace.</dd> </dl> <dl spacing="compact" newline="false"> <dt>URI:</dt> <dd>urn:ietf:params:xml:ns:yang:ietf-pcep-stats</dd> <dt>Registrant Contact:</dt> <dd>The IESG</dd> <dt>XML:</dt> <dd>N/A; the requested URI is an XMLnamespace. ]]></artwork> </figure> </t> <t>This document requestsnamespace.</dd> </dl> <t>IANA has registered theIANA to register twofollowing YANG modules in the "YANG Module Names" registry <xreftarget="RFC6020"/>, as follows - <figure title="" suppress-title="false" align="left" alt="" width="" height=""> <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[ 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] ]]></artwork> </figure>target="RFC6020" format="default"/>: </t> <dl spacing="compact" newline="false"> <dt>Name:</dt> <dd>ietf-pcep</dd> <dt>Namespace:</dt> <dd>urn:ietf:params:xml:ns:yang:ietf-pcep</dd> <dt>Prefix:</dt> <dd>pcep</dd> <dt>Reference:</dt> <dd>RFC 9826</dd> </dl> <dl spacing="compact" newline="false"> <dt>Name:</dt> <dd>ietf-pcep-stats</dd> <dt>Namespace:</dt> <dd>urn:ietf:params:xml:ns:yang:ietf-pcep-stats</dd> <dt>Prefix:</dt> <dd>pcep-stats</dd> <dt>Reference:</dt> <dd>RFC 9826</dd> </dl> </section><section anchor="Imp" title="Implementation Status"> <t>[Note to the RFC Editor - remove this section before publication, as well</middle> <back> <displayreference target="I-D.ietf-netmod-rfc8407bis" to="YANG-GUIDELINES"/> <displayreference target="I-D.ietf-pce-pcep-srv6-yang" to="YANG-PCEP-SR"/> <displayreference target="I-D.ietf-pce-pceps-tls13" to="PCEPS-UPDATE"/> <displayreference target="I-D.ietf-teas-yang-te" to="YANG-TE"/> <references> <name>References</name> <references> <name>Normative References</name> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5088.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5089.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5440.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5520.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5541.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5557.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4252.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6991.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6020.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8177.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8231.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8232.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8253.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8281.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8306.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8340.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8341.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8408.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8776.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9645.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8697.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8664.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9130.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9129.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8779.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9168.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8685.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8282.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9353.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5925.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8623.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8745.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8800.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9000.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9005.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9358.xml"/> </references> <references> <name>Informative References</name> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4655.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5246.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7420.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8342.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8751.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9603.xml"/> <!-- draft-ietf-netmod-rfc8407bis EDIT asremove the reference to RFC 7942.]</t> <t>This section records the status of known implementationsofthe protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="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.</t> <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve7/21/25 --> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-netmod-rfc8407bis.xml"/> <!-- [I-D.ietf-pce-pceps-tls13] draft-ietf-pce-pceps-tls13-04 IESG State: RFC Ed Queue asevidenceofvaluable experimentation and feedback that have made the implemented protocols more mature. It is up to the individual working groups to use this information02/24/25. --> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-pce-pceps-tls13.xml"/> <!-- [I-D.ietf-pce-pcep-srv6-yang] draft-ietf-pce-pcep-srv6-yang-06 IESG State: I-D Exists asthey see fit".</t> <t>Currently, there are no known implementationsofthe YANG Module02/24/25. --> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-pce-pcep-srv6-yang.xml"/> <!-- [I-D.ietf-teas-yang-te] draft-ietf-teas-yang-te-37 IESG State: I-D Exists asspecified.</t> </section> <section title="Acknowledgements" toc="default"> <t>The initial document is based on the PCEP MIB <xref target="RFC7420"/>. The authorsofthis document would like to thank the authors of the above document.</t> <t>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.</t> </section> </middle> <back> <references title="Normative References"> <?rfc include="reference.RFC.2119.xml" ?> <!--<?rfc include="reference.RFC.3209.xml" ?>--> <?rfc include="reference.RFC.3688.xml" ?> <?rfc include="reference.RFC.5088.xml" ?> <?rfc include="reference.RFC.5089.xml" ?> <?rfc include="reference.RFC.5440.xml" ?> <?rfc include="reference.RFC.5520.xml" ?> <?rfc include="reference.RFC.5541.xml" ?> <?rfc include="reference.RFC.5557.xml" ?> <?rfc include="reference.RFC.6020.xml" ?> <?rfc include="reference.RFC.6241.xml" ?> <?rfc include="reference.RFC.6242.xml" ?> <?rfc include="reference.RFC.6991.xml" ?> <?rfc include="reference.RFC.7950.xml" ?> <?rfc include="reference.RFC.8177.xml" ?> <?rfc include="reference.RFC.8040.xml" ?> <?rfc include="reference.RFC.8174.xml"?> <?rfc include="reference.RFC.8231.xml"?> <?rfc include="reference.RFC.8232.xml"?> <?rfc include="reference.RFC.8253.xml"?> <?rfc include="reference.RFC.8281.xml"?> <?rfc include="reference.RFC.8306.xml"?> <?rfc include="reference.RFC.8340.xml"?> <?rfc include="reference.RFC.8341.xml" ?> <?rfc include="reference.RFC.8408.xml" ?> <?rfc include="reference.RFC.8446.xml" ?> <?rfc include="reference.RFC.8776.xml"?> <?rfc include="reference.RFC.9645.xml"?> <?rfc include="reference.RFC.8697.xml"?> <?rfc include="reference.RFC.8664.xml"?> <?rfc include="reference.RFC.9130.xml"?> <?rfc include="reference.RFC.9129.xml"?> <?rfc include="reference.RFC.8779.xml"?> <?rfc include="reference.RFC.9168.xml"?> <?rfc include="reference.RFC.8685.xml"?> <?rfc include="reference.RFC.8282.xml"?> <?rfc include="reference.RFC.9353.xml"?> <?rfc include="reference.RFC.5925.xml"?> <?rfc include="reference.RFC.8623.xml"?> <?rfc include="reference.RFC.8745.xml"?> <?rfc include="reference.RFC.8800.xml"?> <?rfc include="reference.RFC.9000.xml"?> <?rfc include="reference.RFC.9005.xml"?> <?rfc include="reference.RFC.9358.xml"?> </references> <references title="Informative References"> <?rfc include="reference.RFC.4655.xml" ?> <?rfc include="reference.RFC.5246.xml" ?> <?rfc include="reference.RFC.7420.xml" ?> <?rfc include="reference.RFC.7942.xml" ?> <?rfc include="reference.RFC.8342.xml"?> <?rfc include="reference.RFC.8751.xml"?> <?rfc include="reference.RFC.9603.xml"?> <?rfc include="reference.I-D.ietf-pce-pceps-tls13"?> <?rfc include="reference.I-D.ietf-pce-pcep-srv6-yang"?> <?rfc include="reference.I-D.ietf-teas-yang-te"?>02/24/25. --> <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-teas-yang-te.xml"/> <reference anchor="IANA-PCEP"target="https://www.iana.org/assignments/pcep/pcep.xhtml#association-type-field">target="https://www.iana.org/assignments/pcep"> <front> <title>ASSOCIATION TypeField in Path Computation Element Protocol (PCEP) Numbers</title> <author/> <date/>Field</title> <author> <organization>IANA</organization> </author> </front> </reference> <reference anchor="IANA-IGP"target="https://www.iana.org/assignments/igp-parameters/igp-parameters.xhtml#pce-capability-flags">target="https://www.iana.org/assignments/igp-parameters"> <front> <title>Path Computation Element (PCE) CapabilityFlags in Interior Gateway Protocol (IGP) Parameters</title> <author/> <date/>Flags</title> <author> <organization>IANA</organization> </author> </front> </reference> </references> </references> <sectiontitle="Thetoc="default" anchor="sec.full.data-tree" numbered="true"> <name>The Full PCEP DataModel" toc="default" anchor="sec.full.data-tree">Model</name> <t>Themodule, "ietf-pcep",module "ietf-pcep" defines the basic components of a PCE speaker. The tree depth in the tree is set to10. <figure title="" suppress-title="true" align="left" alt="" width="" height=""> <artwork xml:space="preserve"10.</t> <sourcecode name=""type="" align="left" alt="" width="" height=""><![CDATA[type="yangtree"><![CDATA[ module: ietf-pcep +--rw pcep! +--rw entity +--rw addr* inet:ip-address-no-zone +--rw enabled? boolean +--rw role role +--rw description? string +--rw speaker-entity-id? string {sync-opt}? +--rw admin-status? boolean +--ro index? uint32 +--ro oper-status? oper-status +--rw domains | +--rw domain* [type domain] | +--rw type identityref | +--rw domain domain +--rw capabilities | +--rw capability? bits | +--rw pce-initiated? boolean {pce-initiated}? | +--rw include-db-ver? boolean {stateful,sync-opt}? | +--rw trigger-resync? boolean {stateful,sync-opt}? | +--rw trigger-initial-sync? boolean {stateful,sync-opt}? | +--rw incremental-sync? boolean {stateful,sync-opt}? | +--rw sr-mpls {sr-mpls}? | | +--rw enabled? boolean | | +--rw no-msd-limit? boolean | | +--rw nai? boolean | +--rw stateful-gmpls {stateful,gmpls}? | | +--rw enabled? boolean | +--rw inter-layer? boolean {inter-layer}? | +--rw h-pce {h-pce}? | +--rw enabled? boolean | +--rw stateful? boolean {stateful}? | +--rw role? hpce-role +--ro msd? uint8 {sr-mpls}? +--rw auth | +--rw (auth-type-selection)? | +--:(auth-key-chain) | | +--rw key-chain? | | key-chain:key-chain-ref | +--:(auth-key) | | +--rw crypto-algorithm identityref | | +--rw (key-string-style)? | | +--:(keystring) | | | +--rw keystring? string | | +--:(hexadecimal) {key-chain:hex-key-string}? | | +--rw hexadecimal-string? yang:hex-string | +--:(auth-tls) {tls}? | +--rw (role)? | +--:(server) | | +--rw tls-server | | +--rw server-identity | | | +--rw (auth-type) | | | ... | | +--rw client-authentication! | | | {client-auth-supported}? | | | +--rw ca-certs! {client-auth-x509-cert}? | | | | ... | | | +--rw ee-certs! {client-auth-x509-cert}? | | | | ... | | | +--rw raw-public-keys! | | | | {client-auth-raw-public-key}? | | | | ... | | | +--rw tls12-psks? empty | | | | {client-auth-tls12-psk}? | | | +--rw tls13-epsks? empty | | | {client-auth-tls13-epsk}? | | +--rw hello-params {tlscmn:hello-params}? | | | +--rw tls-versions | | | | ... | | | +--rw cipher-suites | | | ... | | +--rw keepalives {tls-server-keepalives}? | | +--rw peer-allowed-to-send? empty | | +--rw test-peer-aliveness! | | ... | +--:(client) | +--rw tls-client | +--rw client-identity! | | +--rw (auth-type) | | ... | +--rw server-authentication | | +--rw ca-certs! {server-auth-x509-cert}? | | | ... | | +--rw ee-certs! {server-auth-x509-cert}? | | | ... | | +--rw raw-public-keys! | | | {server-auth-raw-public-key}? | | | ... | | +--rw tls12-psks? empty | | | {server-auth-tls12-psk}? | | +--rw tls13-epsks? empty | | {server-auth-tls13-epsk}? | +--rw hello-params {tlscmn:hello-params}? | | +--rw tls-versions | | | ... | | +--rw cipher-suites | | ... | +--rw keepalives {tls-client-keepalives}? | +--rw peer-allowed-to-send? empty | +--rw test-peer-aliveness! | ... +--rw pce-info | +--rw scope | | +--rw path-scope? bits | | +--rw intra-area-pref? uint8 | | +--rw inter-area-pref? uint8 | | +--rw inter-as-pref? uint8 | | +--rw inter-layer-pref? uint8 | +--rwneighbour-domainsneighbor-domains | | +--rw domain* [type domain] | | +--rw type identityref | | +--rw domain domain | +--rw path-key {path-key}? | +--rw enabled? boolean | +--rw discard-timer? uint32 | +--rw reuse-time? uint32 | +--rw pce-id? inet:ip-address-no-zone +--rw connect-timer? uint16 +--rw connect-max-retry? uint32 +--rw init-back-off-timer uint16 +--rw max-back-off-timer uint32 +--ro open-wait-timer? uint16 +--ro keep-wait-timer? uint16 +--rw keepalive-timer? uint8 +--rw dead-timer? uint8 +--rw allow-negotiation? boolean +--rw max-keepalive-timer uint8 +--rw max-dead-timer uint8 +--rw min-keepalive-timer uint8 +--rw min-dead-timer uint8 +--rw sync-timer? uint16 {svec}? +--rw request-timer uint16 +--rw max-sessions uint32 +--rw max-unknown-reqs? uint32 +--rw max-unknown-msgs? uint32 +--rw pcep-notification-max-rate uint32 +--rw stateful-parameter {stateful}? | +--rw state-timeout uint32 | +--rw redelegation-timeout uint32 | +--rw rpt-non-pcep-lsp? boolean +--rw of-list {objective-function}? | +--rw objective-function* [of] | +--rw of identityref +--ro lsp-db {stateful}? | +--ro db-ver? uint64 {sync-opt}? | +--ro association-list* | | [type id source global-source extended-id] | | {association}? | | +--ro type identityref | | +--ro id uint16 | | +--ro source inet:ip-address-no-zone | | +--ro global-source uint32 | | +--ro extended-id string | | +--ro lsp* [plsp-id pcc-id lsp-id] | | +--ro plsp-id -> /pcep/entity/lsp-db/lsp/plsp-id | | +--ro pcc-id leafref | | +--ro lsp-id leafref | +--ro lsp* [plsp-id pcc-id lsp-id] | +--ro plsp-id uint32 | +--ro pcc-id inet:ip-address-no-zone | +--ro source? inet:ip-address-no-zone | +--ro destination? inet:ip-address-no-zone | +--ro tunnel-id? uint16 | +--ro lsp-id uint16 | +--ro extended-tunnel-id? inet:ip-address-no-zone | +--ro admin-state? boolean | +--ro operational-state? operational-state | +--ro delegated | | +--ro enabled? boolean | | +--ro peer? -> /pcep/entity/peers/peer/addr | | +--ro srp-id? uint32 | +--ro initiation {pce-initiated}? | | +--ro enabled? boolean | | +--ro peer? -> /pcep/entity/peers/peer/addr | +--ro symbolic-path-name? string | +--ro last-error? identityref | +--ro pst? identityref | +--ro association-list* | [type id source global-source extended-id] | {association}? | +--ro type | | -> /pcep/entity/lsp-db/association-list/type | +--ro id leafref | +--ro source leafref | +--ro global-source leafref | +--ro extended-id leafref +--ro path-keys {path-key}? | +--ro path-key* [key] | +--ro key uint16 | +--ro cps | | +--ro explicit-route-objects* [index] | | +--ro index uint32 | +--ro pcc-requester? -> /pcep/entity/peers/peer/addr | +--ro req-id? uint32 | +--ro retrieved? boolean | +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr | +--ro creation-time? yang:timestamp | +--ro discard-time? uint32 | +--ro reuse-time? uint32 +--rw peers +--rw peer* [addr] +--rw addr inet:ip-address-no-zone +--rw role role +--rw description? string +--rw domains | +--rw domain* [type domain] | +--rw type identityref | +--rw domain domain +--rw capabilities | +--rw capability? bits | +--rw pce-initiated? boolean {pce-initiated}? | +--rw include-db-ver? boolean | | {stateful,sync-opt}? | +--rw trigger-resync? boolean | | {stateful,sync-opt}? | +--rw trigger-initial-sync? boolean | | {stateful,sync-opt}? | +--rw incremental-sync? boolean | | {stateful,sync-opt}? | +--rw sr-mpls {sr-mpls}? | | +--rw enabled? boolean | | +--rw no-msd-limit? boolean | | +--rw nai? boolean | +--rw stateful-gmpls {stateful,gmpls}? | | +--rw enabled? boolean | +--rw inter-layer? boolean {inter-layer}? | +--rw h-pce {h-pce}? | +--rw enabled? boolean | +--rw stateful? boolean {stateful}? | +--rw role? hpce-role +--ro msd? uint8 {sr-mpls}? +--rw pce-info | +--rw scope | | +--rw path-scope? bits | | +--rw intra-area-pref? uint8 | | +--rw inter-area-pref? uint8 | | +--rw inter-as-pref? uint8 | | +--rw inter-layer-pref? uint8 | +--rwneighbour-domainsneighbor-domains | +--rw domain* [type domain] | +--rw type identityref | +--rw domain domain +--rw delegation-pref uint8 {stateful}? +--rw auth | +--rw (auth-type-selection)? | +--:(auth-key-chain) | | +--rw key-chain? | | key-chain:key-chain-ref | +--:(auth-key) | | +--rw crypto-algorithm identityref | | +--rw (key-string-style)? | | +--:(keystring) | | | +--rw keystring? string | | +--:(hexadecimal) {key-chain:hex-key-string}? | | +--rw hexadecimal-string? yang:hex-string | +--:(auth-tls) {tls}? | +--rw (role)? | +--:(server) | | +--rw tls-server | | ... | +--:(client) | +--rw tls-client | ... +--ro discontinuity-time? yang:timestamp +--ro initiate-session? boolean +--ro session-exists? boolean +--ro session-up-time? yang:timestamp +--ro session-fail-time? yang:timestamp +--ro session-fail-up-time? yang:timestamp +--ro sessions +--ro session* [initiator] +--ro initiator initiator +--ro role? -> ../../../role +--ro state-last-change? yang:timestamp +--ro state? sess-state +--ro session-creation? yang:timestamp +--ro connect-retry? yang:counter32 +--ro local-id? uint8 +--ro remote-id? uint8 +--ro keepalive-timer? uint8 +--ro peer-keepalive-timer? uint8 +--ro dead-timer? uint8 +--ro peer-dead-timer? uint8 +--ro ka-hold-time-rem? uint8 +--ro overloaded? boolean +--ro overloaded-timestamp? yang:timestamp +--ro overload-time? uint32 +--ro peer-overloaded? boolean +--ro peer-overloaded-timestamp? yang:timestamp +--ro peer-overload-time? uint32 +--ro lspdb-sync? sync-state | {stateful}? +--ro recv-db-ver? uint64 | {stateful,sync-opt}? +--ro of-list {objective-function}? | +--ro objective-function* [of] | +--ro of identityref +--ro pst-list | +--ro path-setup-type* [pst] | +--ro pst identityref +--ro assoc-type-list {association}? | +--ro assoc-type* [at] | +--ro at identityref +--ro speaker-entity-id? string {sync-opt}? rpcs: +---x trigger-resync {stateful,sync-opt}? +---w input +---w pcc -> /pcep/entity/peers/peer/addr notifications: +---n pcep-session-up | +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro session-initiator? leafref | +--ro state-last-change? yang:timestamp | +--ro state? sess-state +---n pcep-session-down | +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro session-initiator? initiator | +--ro state-last-change? yang:timestamp | +--ro state? sess-state +---n pcep-session-local-overload | +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro session-initiator? leafref | +--ro overloaded? boolean | +--ro overloaded-timestamp? yang:timestamp | +--ro overload-time? uint32 +---n pcep-session-local-overload-clear | +--ro peer-addr? | | -> /pcep/entity/peers/peer/addr | +--ro overloaded? boolean | +--ro overloaded-clear-timestamp? yang:timestamp +---n pcep-session-peer-overload | +--ro peer-addr? | | -> /pcep/entity/peers/peer/addr | +--ro session-initiator? leafref | +--ro peer-overloaded? boolean | +--ro peer-overloaded-timestamp? yang:timestamp | +--ro peer-overload-time? uint32 +---n pcep-session-peer-overload-clear +--ro peer-addr? | -> /pcep/entity/peers/peer/addr +--ro peer-overloaded? boolean +--ro peer-overloaded-clear-timestamp? yang:timestamp]]></artwork> </figure> </t>]]></sourcecode> </section> <sectiontitle="Example" toc="default"> <t>Thetoc="default" numbered="true"> <name>Example</name> <!-- [rfced] Would it be helpful to specify which module is being referred to in the phrase "in the YANG Module"? Original: The example below provides an overview of PCEP peer session information and LSP-DB in the YANG Module. Perhaps: The example below provides an overview of PCEP peer session information and LSP-DB in the "ietf-pcep" module. --> <t>The example below provides an overview of PCEP peer session information and LSP-DB in the YANG module.</t> <figure anchor="example"> <name>Example</name> <artset> <artwork type="svg"align="left">align="left" name="" alt=""> <svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="416" width="320" viewBox="0 0 320 416" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <path d="M 16,16 L 16,80" fill="none" stroke="black"/> <path d="M 16,144 L 16,208" fill="none" stroke="black"/> <path d="M 16,272 L 16,336" fill="none" stroke="black"/> <path d="M 80,16 L 80,80" fill="none" stroke="black"/> <path d="M 80,144 L 80,208" fill="none" stroke="black"/> <path d="M 80,272 L 80,336" fill="none" stroke="black"/> <path d="M 232,16 L 232,368" fill="none" stroke="black"/> <path d="M 296,16 L 296,368" fill="none" stroke="black"/> <path d="M 16,16 L 80,16" fill="none" stroke="black"/> <path d="M 232,16 L 296,16" fill="none" stroke="black"/> <path d="M 88,48 L 224,48" fill="none" stroke="black"/> <path d="M 16,80 L 80,80" fill="none" stroke="black"/> <path d="M 16,144 L 80,144" fill="none" stroke="black"/> <path d="M 88,176 L 224,176" fill="none" stroke="black"/> <path d="M 16,208 L 80,208" fill="none" stroke="black"/> <path d="M 16,272 L 80,272" fill="none" stroke="black"/> <path d="M 88,304 L 224,304" fill="none" stroke="black"/> <path d="M 16,336 L 80,336" fill="none" stroke="black"/> <path d="M 232,368 L 296,368" fill="none" stroke="black"/> <polygon class="arrowhead" points="232,304 220,298.4 220,309.6" fill="black" transform="rotate(0,224,304)"/> <polygon class="arrowhead" points="232,176 220,170.4 220,181.6" fill="black" transform="rotate(0,224,176)"/> <polygon class="arrowhead" points="232,48 220,42.4 220,53.6" fill="black" transform="rotate(0,224,48)"/> <polygon class="arrowhead" points="96,304 84,298.4 84,309.6" fill="black" transform="rotate(180,88,304)"/> <polygon class="arrowhead" points="96,176 84,170.4 84,181.6" fill="black" transform="rotate(180,88,176)"/> <polygon class="arrowhead" points="96,48 84,42.4 84,53.6" fill="black" transform="rotate(180,88,48)"/> <g class="text"> <text x="44" y="52">PCC1</text> <text x="52" y="100">IP:192.0.2.1</text> <text x="264" y="116">PCE</text> <text x="44" y="180">PCC2</text> <text x="52" y="228">IP:192.0.2.2</text> <text x="44" y="308">PCC4</text> <text x="60" y="356">IP:2001:db8::4</text> <text x="264" y="388">192.0.2.3</text> <text x="272" y="404">2001:db8::3</text> </g> </svg> </artwork> <artwork type="ascii-art"align="left"><![CDATA[align="left" name="" alt=""><![CDATA[ +-------+ +-------+ | | | | | PCC1 |<---------------->| | | | | | +-------+ | | IP:192.0.2.1 | | | PCE | | | +-------+ | | | | | | | PCC2 |<---------------->| | | | | | +-------+ | | IP:192.0.2.2 | | | | | | +-------+ | | | | | | | PCC4 |<---------------->| | | | | | +-------+ | | IP:2001:db8::4 | | +-------+ 192.0.2.3 2001:db8::3]]></artwork></artset>]]></artwork> </artset> </figure><figure title="" suppress-title="true" align="left" alt="" width="" height=""> <artwork xml:space="preserve"<sourcecode name=""type="" align="left" alt="" width="" height=""><![CDATA[type="yang"><![CDATA[ at PCE: { "ietf-pcep:pcep": { "entity": { "addr": [ "192.0.2.3", "2001:db8::3" ], "role": "pce", "oper-status": "oper-status-up", "capabilities": { "capability": "active passive" }, "init-back-off-timer": 5, "max-back-off-timer": 3600, "max-keepalive-timer": 255, "max-dead-timer": 255, "min-keepalive-timer": 1, "min-dead-timer": 30, "request-timer": 300, "max-sessions": 2400, "pcep-notification-max-rate": 5, "stateful-parameter": { "state-timeout": 300 }, "lsp-db": { "lsp": [ { "plsp-id": 3, "pcc-id": "192.0.2.1", "source": "192.0.2.1", "destination": "192.0.2.4", "tunnel-id": 16, "lsp-id": 3, "extended-tunnel-id": "0.0.0.0", "operational-state": "up", "delegated": { "enabled": true }, "symbolic-path-name": "iewauh" }, { "plsp-id": 4, "pcc-id": "192.0.2.2", "source": "192.0.2.2", "destination": "192.0.2.5", "tunnel-id": 17, "lsp-id": 4, "extended-tunnel-id": "0.0.0.0", "operational-state": "up", "delegated": { "enabled": true }, "symbolic-path-name": "iewauhiewauh" } ] }, "peers": { "peer": [ { "addr": "192.0.2.1", "role": "pcc", "capabilities": { "capability": "active passive" }, "sessions": { "session": [ { "initiator": "remote", "role": "pcc" } ] } }, { "addr": "192.0.2.2", "role": "pcc", "capabilities": { "capability": "active passive" }, "sessions": { "session": [ { "initiator": "remote", "role": "pcc" } ] } }, { "addr": "2001:db8::4", "role": "pcc", "capabilities": { "capability": "active passive" }, "sessions": { "session": [ { "initiator": "remote", "role": "pcc" } ] } } ] } } } }]]></artwork> </figure> </t> <t>Similarly]]></sourcecode> <t>Similarly, a PCEP session with an IPv6 address between a PCE (2001:db8::3) and a PCC (2001:db8::4) could also besetup.</t>set up.</t> </section> <sectiontitle="Design Objectives" toc="default">toc="default" numbered="true"> <name>Design Objectives</name> <t>This section describes some of the design objectives for themodel: <list style="symbols"> <t>In the case of existing implementations, it needsmodel:</t> <ul spacing="normal"> <li> <t>Existing implementations need to map the data model defined in this document to their proprietary data model. To facilitate such mappings, the data model should be simple.</t> </li> <li> <t>The data model should be suitable for new implementations to use as is.</t> </li> <li> <t>Mapping to the PCEP MIBModulemodule <xreftarget="RFC7420"/>target="RFC7420" format="default"/> should be clear.</t> </li> <li> <t>The data model should allow for static configurations of peers.</t> </li> <li> <t>The data model should include read-only counters in order to gather statistics for sent and received PCEP messages, received messages with errors, and messages that could not be sent due to errors. This could be in a separate modelwhichthat augments the base data model.</t> </li> <li> <t>It should be fairly straightforward to augment the base data model for advanced PCE features.</t></list> </t></li> </ul> </section> <sectiontitle="Relationshiptoc="default" numbered="true"> <name>Relationship with PCEPMIB" toc="default">MIB</name> <t>If a node implements thePCEP-MIBPCEP MIB <xreftarget="RFC7420"/>,target="RFC7420" format="default"/>, data nodes from the YANG module can be mapped to table entries in thePCEP-MIB.</t> <texttablePCEP MIB.</t> <table anchor="tab.mib"title="High Levelalign="center"> <name>High-Level Relationship with PCEPMIB" suppress-title="false" align="center" style="full"> <ttcolMIB</name> <thead> <tr> <th align="left">YANG DataNodes</ttcol> <ttcolNodes</th> <th align="left">PCEP MIBObjects</ttcol> <c>/pcep/entity</c><c>PcePcepEntityEntry</c> <c>/pcep/entity/peers/peer</c><c>pcePcepPeerEntry</c> <c>/pcep/entity/peers/peer/sessions/session</c><c>pcePcepSessEntry</c> </texttable> <texttableObjects</th> </tr> </thead> <tbody> <tr> <td align="left">/pcep/entity</td> <td align="left">PcePcepEntityEntry</td> </tr> <tr> <td align="left">/pcep/entity/peers/peer</td> <td align="left">pcePcepPeerEntry</td> </tr> <tr> <td align="left">/pcep/entity/peers/peer/sessions/session</td> <td align="left">pcePcepSessEntry</td> </tr> </tbody> </table> <table anchor="tab.mib.entity"title="Relationshipalign="center"> <name>Relationship with PCEP MIB forEntity" suppress-title="false" align="center" style="full"> <ttcolEntity</name> <thead> <tr> <th align="left">YANG DataNodes</ttcol> <ttcolNodes</th> <th align="left">PCEP MIBObjects</ttcol> <c>-</c><c>pcePcepEntityIndex</c> <c>admin-status</c><c>pcePcepEntityAdminStatus</c> <c>oper-status</c><c>pcePcepEntityOperStatus</c> <c>addr</c><c>pcePcepEntityAddrType, pcePcepEntityAddr</c> <c>connect-timer</c><c>pcePcepEntityConnectTimer</c> <c>connect-max-retry</c><c>pcePcepEntityConnectMaxRetry</c> <c>init-back-off-timer</c><c>pcePcepEntityInitBackoffTimer</c> <c>max-back-off-timer</c><c>pcePcepEntityMaxBackoffTimer</c> <c>open-wait-timer</c><c>pcePcepEntityOpenWaitTimer</c> <c>keep-wait-timer</c><c>pcePcepEntityKeepWaitTimer</c> <c>keepalive-timer</c><c>pcePcepEntityKeepAliveTimer</c> <c>dead-timer</c><c>pcePcepEntityDeadTimer</c> <c>allow-negotiation</c><c>pcePcepEntityAllowNegotiation</c> <c>max-keepalive-timer</c><c>pcePcepEntityMaxKeepAliveTimer</c> <c>max-dead-timer</c><c>pcePcepEntityMaxDeadTimer</c> <c>min-keepalive-timer</c><c>pcePcepEntityMinKeepAliveTimer</c> <c>min-dead-timer</c><c>pcePcepEntityMinDeadTimer</c> <c>sync-timer</c><c>pcePcepEntitySyncTimer</c> <c>request-timer</c><c>pcePcepEntityRequestTimer</c> <c>max-sessions</c><c>pcePcepEntityMaxSessions</c> <c>max-unknown-reqs</c><c>pcePcepEntityMaxUnknownReqs</c> <c>max-unknown-msgs</c><c>pcePcepEntityMaxUnknownMsgs</c> </texttable> <texttableObjects</th> </tr> </thead> <tbody> <tr> <td align="left">-</td> <td align="left">pcePcepEntityIndex</td> </tr> <tr> <td align="left">admin-status</td> <td align="left">pcePcepEntityAdminStatus</td> </tr> <tr> <td align="left">oper-status</td> <td align="left">pcePcepEntityOperStatus</td> </tr> <tr> <td align="left">addr</td> <td align="left">pcePcepEntityAddrType, pcePcepEntityAddr</td> </tr> <tr> <td align="left">connect-timer</td> <td align="left">pcePcepEntityConnectTimer</td> </tr> <tr> <td align="left">connect-max-retry</td> <td align="left">pcePcepEntityConnectMaxRetry</td> </tr> <tr> <td align="left">init-back-off-timer</td> <td align="left">pcePcepEntityInitBackoffTimer</td> </tr> <tr> <td align="left">max-back-off-timer</td> <td align="left">pcePcepEntityMaxBackoffTimer</td> </tr> <tr> <td align="left">open-wait-timer</td> <td align="left">pcePcepEntityOpenWaitTimer</td> </tr> <tr> <td align="left">keep-wait-timer</td> <td align="left">pcePcepEntityKeepWaitTimer</td> </tr> <tr> <td align="left">keepalive-timer</td> <td align="left">pcePcepEntityKeepAliveTimer</td> </tr> <tr> <td align="left">dead-timer</td> <td align="left">pcePcepEntityDeadTimer</td> </tr> <tr> <td align="left">allow-negotiation</td> <td align="left">pcePcepEntityAllowNegotiation</td> </tr> <tr> <td align="left">max-keepalive-timer</td> <td align="left">pcePcepEntityMaxKeepAliveTimer</td> </tr> <tr> <td align="left">max-dead-timer</td> <td align="left">pcePcepEntityMaxDeadTimer</td> </tr> <tr> <td align="left">min-keepalive-timer</td> <td align="left">pcePcepEntityMinKeepAliveTimer</td> </tr> <tr> <td align="left">min-dead-timer</td> <td align="left">pcePcepEntityMinDeadTimer</td> </tr> <tr> <td align="left">sync-timer</td> <td align="left">pcePcepEntitySyncTimer</td> </tr> <tr> <td align="left">request-timer</td> <td align="left">pcePcepEntityRequestTimer</td> </tr> <tr> <td align="left">max-sessions</td> <td align="left">pcePcepEntityMaxSessions</td> </tr> <tr> <td align="left">max-unknown-reqs</td> <td align="left">pcePcepEntityMaxUnknownReqs</td> </tr> <tr> <td align="left">max-unknown-msgs</td> <td align="left">pcePcepEntityMaxUnknownMsgs</td> </tr> </tbody> </table> <table anchor="tab.mib.peer"title="Relationshipalign="center"> <name>Relationship with PCEP MIB forPeer" suppress-title="false" align="center" style="full"> <ttcolPeer</name> <thead> <tr> <th align="left">YANG Data Nodes in/pcep/entity/peers/peer</ttcol> <ttcol/pcep/entity/peers/peer</th> <th align="left">PCEP MIBObjects</ttcol> <c>addr</c><c>pcePcepPeerAddrType,pcePcepPeerAddr</c> <c>role</c><c>pcePcepPeerRole</c> <c>discontinuity-time</c><c>pcePcepPeerDiscontinuityTime</c> <c>initiate-session</c><c>pcePcepPeerInitiateSession</c> <c>session-exists</c><c>pcePcepPeerSessionExists</c> <c>sess-setup-ok</c><c>pcePcepPeerNumSessSetupOK</c> <c>sess-setup-fail</c><c>pcePcepPeerNumSessSetupFail</c> <c>session-up-time</c><c>pcePcepPeerSessionUpTime</c> <c>session-fail-time</c><c>pcePcepPeerSessionFailTime</c> <c>session-fail-up-time</c><c>pcePcepPeerSessionFailUpTime</c> <c>/stats/rsp-time-avg</c><c>pcePcepPeerAvgRspTime</c> <c>/stats/rsp-time-lwm</c><c>pcePcepPeerLWMRspTime</c> <c>/stats/rsp-time-hwm</c><c>pcePcepPeerHWMRspTime</c> <c>/stats/pcreq-sent</c><c>pcePcepPeerNumPCReqSent</c> <c>/stats/pcreq-rcvd</c><c>pcePcepPeerNumPCReqRcvd</c> <c>/stats/pcrep-sent</c><c>pcePcepPeerNumPCRepSent</c> <c>/stats/pcrep-rcvd</c><c>pcePcepPeerNumPCRepRcvd</c> <c>/stats/pcerr-sent</c><c>pcePcepPeerNumPCErrSent</c> <c>/stats/pcerr-rcvd</c><c>pcePcepPeerNumPCErrRcvd</c> <c>/stats/pcntf-sent</c><c>pcePcepPeerNumPCNtfSent</c> <c>/stats/pcntf-rcvd</c><c>pcePcepPeerNumPCNtfRcvd</c> <c>/stats/keepalive-sent</c><c>pcePcepPeerNumKeepaliveSent</c> <c>/stats/keepalive-rcvd</c><c>pcePcepPeerNumKeepaliveRcvd</c> <c>/stats/unknown-rcvd</c><c>pcePcepPeerNumUnknownRcvd</c> <c>/stats/corrupt-rcvd</c><c>pcePcepPeerNumCorruptRcvd</c> <c>/stats/req-sent</c><c>pcePcepPeerNumReqSent</c> <c>/stats/svec/svec-sent</c><c>pcePcepPeerNumSvecSent</c> <c>/stats/svec/svec-req-sent</c><c>pcePcepPeerNumSvecReqSent</c> <c>/stats/req-sent-pend-rep</c><c>pcePcepPeerNumReqSentPendRep</c> <c>/stats/req-sent-ero-rcvd</c><c>pcePcepPeerNumReqSentEroRcvd</c> <c>/stats/req-sent-nopath-rcvd</c><c>pcePcepPeerNumReqSentNoPathRcvd</c> <c>/stats/req-sent-cancel-rcvd</c><c>pcePcepPeerNumReqSentCancelRcvd</c> <c>/stats/req-sent-error-rcvd</c><c>pcePcepPeerNumReqSentErrorRcvd</c> <c>/stats/req-sent-timeout</c><c>pcePcepPeerNumReqSentTimeout</c> <c>/stats/req-sent-cancel-sent</c><c>pcePcepPeerNumReqSentCancelSent</c> <c>/stats/req-sent-closed</c><c>pcePcepPeerNumReqSentClosed</c> <c>/stats/req-rcvd</c><c>pcePcepPeerNumReqRcvd</c> <c>/stats/svec/svec-rcvd</c><c>pcePcepPeerNumSvecRcvd</c> <c>/stats/svec/svec-req-rcvd</c><c>pcePcepPeerNumSvecReqRcvd</c> <c>/stats/req-rcvd-pend-rep</c><c>pcePcepPeerNumReqRcvdPendRep</c> <c>/stats/req-rcvd-ero-sent</c><c>pcePcepPeerNumReqRcvdEroSent</c> <c>/stats/req-rcvd-nopath-sent</c><c>pcePcepPeerNumReqRcvdNoPathSent</c> <c>/stats/req-rcvd-cancel-sent</c><c>pcePcepPeerNumReqRcvdCancelSent</c> <c>/stats/req-rcvd-error-sent</c><c>pcePcepPeerNumReqRcvdErrorSent</c> <c>/stats/req-rcvd-cancel-rcvd</c><c>pcePcepPeerNumReqRcvdCancelRcvd</c> <c>/stats/req-rcvd-closed</c><c>pcePcepPeerNumReqRcvdClosed</c> <c>/stats/rep-rcvd-unknown</c><c>pcePcepPeerNumRepRcvdUnknown</c> <c>/stats/req-rcvd-unknown</c><c>pcePcepPeerNumReqRcvdUnknown</c> </texttable> <texttableObjects</th> </tr> </thead> <tbody> <tr> <td align="left">addr</td> <td align="left">pcePcepPeerAddrType,pcePcepPeerAddr</td> </tr> <tr> <td align="left">role</td> <td align="left">pcePcepPeerRole</td> </tr> <tr> <td align="left">discontinuity-time</td> <td align="left">pcePcepPeerDiscontinuityTime</td> </tr> <tr> <td align="left">initiate-session</td> <td align="left">pcePcepPeerInitiateSession</td> </tr> <tr> <td align="left">session-exists</td> <td align="left">pcePcepPeerSessionExists</td> </tr> <tr> <td align="left">sess-setup-ok</td> <td align="left">pcePcepPeerNumSessSetupOK</td> </tr> <tr> <td align="left">sess-setup-fail</td> <td align="left">pcePcepPeerNumSessSetupFail</td> </tr> <tr> <td align="left">session-up-time</td> <td align="left">pcePcepPeerSessionUpTime</td> </tr> <tr> <td align="left">session-fail-time</td> <td align="left">pcePcepPeerSessionFailTime</td> </tr> <tr> <td align="left">session-fail-up-time</td> <td align="left">pcePcepPeerSessionFailUpTime</td> </tr> <tr> <td align="left">/stats/rsp-time-avg</td> <td align="left">pcePcepPeerAvgRspTime</td> </tr> <tr> <td align="left">/stats/rsp-time-lwm</td> <td align="left">pcePcepPeerLWMRspTime</td> </tr> <tr> <td align="left">/stats/rsp-time-hwm</td> <td align="left">pcePcepPeerHWMRspTime</td> </tr> <tr> <td align="left">/stats/pcreq-sent</td> <td align="left">pcePcepPeerNumPCReqSent</td> </tr> <tr> <td align="left">/stats/pcreq-rcvd</td> <td align="left">pcePcepPeerNumPCReqRcvd</td> </tr> <tr> <td align="left">/stats/pcrep-sent</td> <td align="left">pcePcepPeerNumPCRepSent</td> </tr> <tr> <td align="left">/stats/pcrep-rcvd</td> <td align="left">pcePcepPeerNumPCRepRcvd</td> </tr> <tr> <td align="left">/stats/pcerr-sent</td> <td align="left">pcePcepPeerNumPCErrSent</td> </tr> <tr> <td align="left">/stats/pcerr-rcvd</td> <td align="left">pcePcepPeerNumPCErrRcvd</td> </tr> <tr> <td align="left">/stats/pcntf-sent</td> <td align="left">pcePcepPeerNumPCNtfSent</td> </tr> <tr> <td align="left">/stats/pcntf-rcvd</td> <td align="left">pcePcepPeerNumPCNtfRcvd</td> </tr> <tr> <td align="left">/stats/keepalive-sent</td> <td align="left">pcePcepPeerNumKeepaliveSent</td> </tr> <tr> <td align="left">/stats/keepalive-rcvd</td> <td align="left">pcePcepPeerNumKeepaliveRcvd</td> </tr> <tr> <td align="left">/stats/unknown-rcvd</td> <td align="left">pcePcepPeerNumUnknownRcvd</td> </tr> <tr> <td align="left">/stats/corrupt-rcvd</td> <td align="left">pcePcepPeerNumCorruptRcvd</td> </tr> <tr> <td align="left">/stats/req-sent</td> <td align="left">pcePcepPeerNumReqSent</td> </tr> <tr> <td align="left">/stats/svec/svec-sent</td> <td align="left">pcePcepPeerNumSvecSent</td> </tr> <tr> <td align="left">/stats/svec/svec-req-sent</td> <td align="left">pcePcepPeerNumSvecReqSent</td> </tr> <tr> <td align="left">/stats/req-sent-pend-rep</td> <td align="left">pcePcepPeerNumReqSentPendRep</td> </tr> <tr> <td align="left">/stats/req-sent-ero-rcvd</td> <td align="left">pcePcepPeerNumReqSentEroRcvd</td> </tr> <tr> <td align="left">/stats/req-sent-nopath-rcvd</td> <td align="left">pcePcepPeerNumReqSentNoPathRcvd</td> </tr> <tr> <td align="left">/stats/req-sent-cancel-rcvd</td> <td align="left">pcePcepPeerNumReqSentCancelRcvd</td> </tr> <tr> <td align="left">/stats/req-sent-error-rcvd</td> <td align="left">pcePcepPeerNumReqSentErrorRcvd</td> </tr> <tr> <td align="left">/stats/req-sent-timeout</td> <td align="left">pcePcepPeerNumReqSentTimeout</td> </tr> <tr> <td align="left">/stats/req-sent-cancel-sent</td> <td align="left">pcePcepPeerNumReqSentCancelSent</td> </tr> <tr> <td align="left">/stats/req-sent-closed</td> <td align="left">pcePcepPeerNumReqSentClosed</td> </tr> <tr> <td align="left">/stats/req-rcvd</td> <td align="left">pcePcepPeerNumReqRcvd</td> </tr> <tr> <td align="left">/stats/svec/svec-rcvd</td> <td align="left">pcePcepPeerNumSvecRcvd</td> </tr> <tr> <td align="left">/stats/svec/svec-req-rcvd</td> <td align="left">pcePcepPeerNumSvecReqRcvd</td> </tr> <tr> <td align="left">/stats/req-rcvd-pend-rep</td> <td align="left">pcePcepPeerNumReqRcvdPendRep</td> </tr> <tr> <td align="left">/stats/req-rcvd-ero-sent</td> <td align="left">pcePcepPeerNumReqRcvdEroSent</td> </tr> <tr> <td align="left">/stats/req-rcvd-nopath-sent</td> <td align="left">pcePcepPeerNumReqRcvdNoPathSent</td> </tr> <tr> <td align="left">/stats/req-rcvd-cancel-sent</td> <td align="left">pcePcepPeerNumReqRcvdCancelSent</td> </tr> <tr> <td align="left">/stats/req-rcvd-error-sent</td> <td align="left">pcePcepPeerNumReqRcvdErrorSent</td> </tr> <tr> <td align="left">/stats/req-rcvd-cancel-rcvd</td> <td align="left">pcePcepPeerNumReqRcvdCancelRcvd</td> </tr> <tr> <td align="left">/stats/req-rcvd-closed</td> <td align="left">pcePcepPeerNumReqRcvdClosed</td> </tr> <tr> <td align="left">/stats/rep-rcvd-unknown</td> <td align="left">pcePcepPeerNumRepRcvdUnknown</td> </tr> <tr> <td align="left">/stats/req-rcvd-unknown</td> <td align="left">pcePcepPeerNumReqRcvdUnknown</td> </tr> </tbody> </table> <table anchor="tab.mib.session"title="Relationshipalign="center"> <name>Relationship with PCEP MIB forSession" suppress-title="false" align="center" style="full"> <ttcolSession</name> <thead> <tr> <th align="left">YANG Data Nodes in/pcep/entity/peers/peer/sessions/session</ttcol> <ttcol/pcep/entity/peers/peer/sessions/session</th> <th align="left">PCEP MIBObjects</ttcol> <c>initiator</c><c>pcePcepSessInitiator</c> <c>state-last-change</c><c>pcePcepSessStateLastChange</c> <c>state</c><c>pcePcepSessState</c> <c>connect-retry</c><c>pcePcepSessConnectRetry</c> <c>local-id</c><c>pcePcepSessLocalID</c> <c>remote-id</c><c>pcePcepSessRemoteID</c> <c>keepalive-timer</c><c>pcePcepSessKeepaliveTimer</c> <c>peer-keepalive-timer</c><c>pcePcepSessPeerKeepaliveTimer</c> <c>dead-timer</c><c>pcePcepSessDeadTimer</c> <c>peer-dead-timer</c><c>pcePcepSessPeerDeadTimer</c> <c>ka-hold-time-rem</c><c>pcePcepSessKAHoldTimeRem</c> <c>overloaded</c><c>pcePcepSessOverloaded</c> <c>overloaded-timestamp</c><c>pcePcepSessOverloadTime</c> <c>peer-overloaded</c><c>pcePcepSessPeerOverloaded</c> <c>peer-overloaded-timestamp</c><c>pcePcepSessPeerOverloadTime</c> <c>/stats/discontinuity-time</c><c>pcePcepSessDiscontinuityTime</c> <c>/stats/rsp-time-avg</c><c>pcePcepSessAvgRspTime</c> <c>/stats/rsp-time-lwm</c><c>pcePcepSessLWMRspTime</c> <c>/stats/rsp-time-hwm</c><c>pcePcepSessHWMRspTime</c> <c>/stats/pcreq-sent</c><c>pcePcepSessNumPCReqSent</c> <c>/stats/pcreq-rcvd</c><c>pcePcepSessNumPCReqRcvd</c> <c>/stats/pcrep-sent</c><c>pcePcepSessNumPCRepSent</c> <c>/stats/pcrep-rcvd</c><c>pcePcepSessNumPCRepRcvd</c> <c>/stats/pcerr-sent</c><c>pcePcepSessNumPCErrSent</c> <c>/stats/pcerr-rcvd</c><c>pcePcepSessNumPCErrRcvd</c> <c>/stats/pcntf-sent</c><c>pcePcepSessNumPCNtfSent</c> <c>/stats/pcntf-rcvd</c><c>pcePcepSessNumPCNtfRcvd</c> <c>/stats/keepalive-sent</c><c>pcePcepSessNumKeepaliveSent</c> <c>/stats/keepalive-rcvd</c><c>pcePcepSessNumKeepaliveRcvd</c> <c>/stats/unknown-rcvd</c><c>pcePcepSessNumUnknownRcvd</c> <c>/stats/corrupt-rcvd</c><c>pcePcepSessNumCorruptRcvd</c> <c>/stats/req-sent</c><c>pcePcepSessNumReqSent</c> <c>/stats/svec/svec-sent</c><c>pcePcepSessNumSvecSent</c> <c>/stats/svec/svec-req-sent</c><c>pcePcepSessNumSvecReqSent</c> <c>/stats/req-sent-pend-rep</c><c>pcePcepSessNumReqSentPendRep</c> <c>/stats/req-sent-ero-rcvd</c><c>pcePcepSessNumReqSentEroRcvd</c> <c>/stats/req-sent-nopath-rcvd</c><c>pcePcepSessNumReqSentNoPathRcvd</c> <c>/stats/req-sent-cancel-rcvd</c><c>pcePcepSessNumReqSentCancelRcvd</c> <c>/stats/req-sent-error-rcvd</c><c>pcePcepSessNumReqSentErrorRcvd</c> <c>/stats/req-sent-timeout</c><c>pcePcepSessNumReqSentTimeout</c> <c>/stats/req-sent-cancel-sent</c><c>pcePcepSessNumReqSentCancelSent</c> <c>/stats/req-rcvd</c><c>pcePcepSessNumReqRcvd</c> <c>/stats/svec/svec-rcvd</c><c>pcePcepSessNumSvecRcvd</c> <c>/stats/svec/svec-req-rcvd</c><c>pcePcepSessNumSvecReqRcvd</c> <c>/stats/req-rcvd-pend-rep</c><c>pcePcepSessNumReqRcvdPendRep</c> <c>/stats/req-rcvd-ero-sent</c><c>pcePcepSessNumReqRcvdEroSent</c> <c>/stats/req-rcvd-nopath-sent</c><c>pcePcepSessNumReqRcvdNoPathSent</c> <c>/stats/req-rcvd-cancel-sent</c><c>pcePcepSessNumReqRcvdCancelSent</c> <c>/stats/req-rcvd-error-sent</c><c>pcePcepSessNumReqRcvdErrorSent</c> <c>/stats/req-rcvd-cancel-rcvd</c><c>pcePcepSessNumReqRcvdCancelRcvd</c> <c>/stats/rep-rcvd-unknown</c><c>pcePcepSessNumRepRcvdUnknown</c> <c>/stats/req-rcvd-unknown</c><c>pcePcepSessNumReqRcvdUnknown</c> </texttable> <texttableObjects</th> </tr> </thead> <tbody> <tr> <td align="left">initiator</td> <td align="left">pcePcepSessInitiator</td> </tr> <tr> <td align="left">state-last-change</td> <td align="left">pcePcepSessStateLastChange</td> </tr> <tr> <td align="left">state</td> <td align="left">pcePcepSessState</td> </tr> <tr> <td align="left">connect-retry</td> <td align="left">pcePcepSessConnectRetry</td> </tr> <tr> <td align="left">local-id</td> <td align="left">pcePcepSessLocalID</td> </tr> <tr> <td align="left">remote-id</td> <td align="left">pcePcepSessRemoteID</td> </tr> <tr> <td align="left">keepalive-timer</td> <td align="left">pcePcepSessKeepaliveTimer</td> </tr> <tr> <td align="left">peer-keepalive-timer</td> <td align="left">pcePcepSessPeerKeepaliveTimer</td> </tr> <tr> <td align="left">dead-timer</td> <td align="left">pcePcepSessDeadTimer</td> </tr> <tr> <td align="left">peer-dead-timer</td> <td align="left">pcePcepSessPeerDeadTimer</td> </tr> <tr> <td align="left">ka-hold-time-rem</td> <td align="left">pcePcepSessKAHoldTimeRem</td> </tr> <tr> <td align="left">overloaded</td> <td align="left">pcePcepSessOverloaded</td> </tr> <tr> <td align="left">overloaded-timestamp</td> <td align="left">pcePcepSessOverloadTime</td> </tr> <tr> <td align="left">peer-overloaded</td> <td align="left">pcePcepSessPeerOverloaded</td> </tr> <tr> <td align="left">peer-overloaded-timestamp</td> <td align="left">pcePcepSessPeerOverloadTime</td> </tr> <tr> <td align="left">/stats/discontinuity-time</td> <td align="left">pcePcepSessDiscontinuityTime</td> </tr> <tr> <td align="left">/stats/rsp-time-avg</td> <td align="left">pcePcepSessAvgRspTime</td> </tr> <tr> <td align="left">/stats/rsp-time-lwm</td> <td align="left">pcePcepSessLWMRspTime</td> </tr> <tr> <td align="left">/stats/rsp-time-hwm</td> <td align="left">pcePcepSessHWMRspTime</td> </tr> <tr> <td align="left">/stats/pcreq-sent</td> <td align="left">pcePcepSessNumPCReqSent</td> </tr> <tr> <td align="left">/stats/pcreq-rcvd</td> <td align="left">pcePcepSessNumPCReqRcvd</td> </tr> <tr> <td align="left">/stats/pcrep-sent</td> <td align="left">pcePcepSessNumPCRepSent</td> </tr> <tr> <td align="left">/stats/pcrep-rcvd</td> <td align="left">pcePcepSessNumPCRepRcvd</td> </tr> <tr> <td align="left">/stats/pcerr-sent</td> <td align="left">pcePcepSessNumPCErrSent</td> </tr> <tr> <td align="left">/stats/pcerr-rcvd</td> <td align="left">pcePcepSessNumPCErrRcvd</td> </tr> <tr> <td align="left">/stats/pcntf-sent</td> <td align="left">pcePcepSessNumPCNtfSent</td> </tr> <tr> <td align="left">/stats/pcntf-rcvd</td> <td align="left">pcePcepSessNumPCNtfRcvd</td> </tr> <tr> <td align="left">/stats/keepalive-sent</td> <td align="left">pcePcepSessNumKeepaliveSent</td> </tr> <tr> <td align="left">/stats/keepalive-rcvd</td> <td align="left">pcePcepSessNumKeepaliveRcvd</td> </tr> <tr> <td align="left">/stats/unknown-rcvd</td> <td align="left">pcePcepSessNumUnknownRcvd</td> </tr> <tr> <td align="left">/stats/corrupt-rcvd</td> <td align="left">pcePcepSessNumCorruptRcvd</td> </tr> <tr> <td align="left">/stats/req-sent</td> <td align="left">pcePcepSessNumReqSent</td> </tr> <tr> <td align="left">/stats/svec/svec-sent</td> <td align="left">pcePcepSessNumSvecSent</td> </tr> <tr> <td align="left">/stats/svec/svec-req-sent</td> <td align="left">pcePcepSessNumSvecReqSent</td> </tr> <tr> <td align="left">/stats/req-sent-pend-rep</td> <td align="left">pcePcepSessNumReqSentPendRep</td> </tr> <tr> <td align="left">/stats/req-sent-ero-rcvd</td> <td align="left">pcePcepSessNumReqSentEroRcvd</td> </tr> <tr> <td align="left">/stats/req-sent-nopath-rcvd</td> <td align="left">pcePcepSessNumReqSentNoPathRcvd</td> </tr> <tr> <td align="left">/stats/req-sent-cancel-rcvd</td> <td align="left">pcePcepSessNumReqSentCancelRcvd</td> </tr> <tr> <td align="left">/stats/req-sent-error-rcvd</td> <td align="left">pcePcepSessNumReqSentErrorRcvd</td> </tr> <tr> <td align="left">/stats/req-sent-timeout</td> <td align="left">pcePcepSessNumReqSentTimeout</td> </tr> <tr> <td align="left">/stats/req-sent-cancel-sent</td> <td align="left">pcePcepSessNumReqSentCancelSent</td> </tr> <tr> <td align="left">/stats/req-rcvd</td> <td align="left">pcePcepSessNumReqRcvd</td> </tr> <tr> <td align="left">/stats/svec/svec-rcvd</td> <td align="left">pcePcepSessNumSvecRcvd</td> </tr> <tr> <td align="left">/stats/svec/svec-req-rcvd</td> <td align="left">pcePcepSessNumSvecReqRcvd</td> </tr> <tr> <td align="left">/stats/req-rcvd-pend-rep</td> <td align="left">pcePcepSessNumReqRcvdPendRep</td> </tr> <tr> <td align="left">/stats/req-rcvd-ero-sent</td> <td align="left">pcePcepSessNumReqRcvdEroSent</td> </tr> <tr> <td align="left">/stats/req-rcvd-nopath-sent</td> <td align="left">pcePcepSessNumReqRcvdNoPathSent</td> </tr> <tr> <td align="left">/stats/req-rcvd-cancel-sent</td> <td align="left">pcePcepSessNumReqRcvdCancelSent</td> </tr> <tr> <td align="left">/stats/req-rcvd-error-sent</td> <td align="left">pcePcepSessNumReqRcvdErrorSent</td> </tr> <tr> <td align="left">/stats/req-rcvd-cancel-rcvd</td> <td align="left">pcePcepSessNumReqRcvdCancelRcvd</td> </tr> <tr> <td align="left">/stats/rep-rcvd-unknown</td> <td align="left">pcePcepSessNumRepRcvdUnknown</td> </tr> <tr> <td align="left">/stats/req-rcvd-unknown</td> <td align="left">pcePcepSessNumReqRcvdUnknown</td> </tr> </tbody> </table> <table anchor="tab.mib.not"title="Relationshipalign="center"> <name>Relationship with PCEP MIBNotification" suppress-title="false" align="center" style="full"> <ttcolNotification</name> <thead> <tr> <th align="left">YANGnotifications</ttcol> <ttcolnotifications</th> <th align="left">PCEP MIBNOTIFICATIONS</ttcol> <c>pcep-session-up</c><c>pcePcepSessUp</c> <c>pcep-session-down</c><c>pcePcepSessDown</c> <c>pcep-session-local-overload</c><c>pcePcepSessLocalOverload</c> <c>pcep-session-local-overload-clear</c><c>pcePcepSessLocalOverloadClear</c> <c>pcep-session-peer-overload</c><c>pcePcepSessPeerOverload</c> <c>pcep-session-peer-overload-clear</c><c>pcePcepSessPeerOverloadClear</c> </texttable>NOTIFICATIONS</th> </tr> </thead> <tbody> <tr> <td align="left">pcep-session-up</td> <td align="left">pcePcepSessUp</td> </tr> <tr> <td align="left">pcep-session-down</td> <td align="left">pcePcepSessDown</td> </tr> <tr> <td align="left">pcep-session-local-overload</td> <td align="left">pcePcepSessLocalOverload</td> </tr> <tr> <td align="left">pcep-session-local-overload-clear</td> <td align="left">pcePcepSessLocalOverloadClear</td> </tr> <tr> <td align="left">pcep-session-peer-overload</td> <td align="left">pcePcepSessPeerOverload</td> </tr> <tr> <td align="left">pcep-session-peer-overload-clear</td> <td align="left">pcePcepSessPeerOverloadClear</td> </tr> </tbody> </table> </section> <sectiontitle="Contributor Addresses" toc="default"> <t> <figure title="" suppress-title="false" align="left" alt="" width="" height=""> <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[ Rohit Pobbathi Nokia Networks India EMail: rohit.pobbathi_ashok@nokia.com Vinod KumarS India EMail: vinods.kumar@gmail.com Zafar Ali Cisco Systems Canada EMail: zali@cisco.com Xufeng Liu EMail: xufeng.liu.ietf@gmail.com Young Lee Samsung EMail: younglee.tx@gmail.com Udayasree Palle EMail: udayasreereddy@gmail.com Xian Zhang Huawei Technologies Bantian,toc="default" numbered="false"> <name>Acknowledgements</name> <!-- [rfced] What is meant by "The initial document" and "above document" here? Original: 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. Perhaps: This document is based on the PCEP MIB [RFC7420]. The authors of this document would like to thank the authors of [RFC7420]. --> <t>The initial document is based on the PCEP MIB <xref target="RFC7420" format="default"/>. The authors of this document would like to thank the authors of the above document.</t> <t>Thanks to <contact fullname="Martin Bjorklund"/> and <contact fullname="Tom Petch"/> for the detailed review. Thanks to <contact fullname="Mahesh Jethanandani"/> and <contact fullname="Jan Lindblad"/> for the YANGDOCTOR review. Thanks to <contact fullname="Scott Kelly"/> for the SECDIR review. Thanks to <contact fullname="Gyan Mishra"/> and <contact fullname="Matthew Bocci"/> for the RTGDIR review.</t> </section> <section toc="default" numbered="false"> <name>Contributors</name> <contact fullname="Rohit Pobbathi"> <organization>Nokia Networks</organization> <address> <postal><country>India</country></postal> <email>rohit.pobbathi_ashok@nokia.com</email> </address> </contact> <contact fullname="Vinod KumarS"> <organization></organization> <address> <postal><country>India</country></postal> <email>vinods.kumar@gmail.com</email> </address> </contact> <contact fullname="Zafar Ali"> <organization>Cisco Systems</organization> <address> <postal><country>Canada</country></postal> <email>zali@cisco.com</email> </address> </contact> <contact fullname="Xufeng Liu"> <organization></organization> <address> <email>xufeng.liu.ietf@gmail.com</email> </address> </contact> <contact fullname="Young Lee"> <organization>Samsung</organization> <address> <email>younglee.tx@gmail.com</email> </address> </contact> <contact fullname="Udayasree Palle"> <organization></organization> <address> <email>udayasreereddy@gmail.com</email> </address> </contact> <contact fullname="Xian Zhang"> <organization>Huawei Technologies</organization> <address> <postal> <street>Bantian, LonggangDistrict Shenzhen 518129 P.R.China EMail: zhang.xian@huawei.comDistrict</street> <city>Shenzhen</city><code>518129</code> <country>China</country> </postal> <email>zhang.xian@huawei.com</email> </address> </contact> <!-- [rfced] Only one name is listed for the following individuals in the Contributors section. Is either a surname or first name needed? Or are these okay as is? Current: Avantika ECI Telecom IndiaEMail:Email: avantika.srm@gmail.com Shashikanth IndiaEMail:Email: shashivh@gmail.com]]></artwork> </figure> </t>--> <contact fullname="Avantika"> <organization>ECI Telecom</organization> <address> <postal><country>India</country></postal> <email>avantika.srm@gmail.com</email> </address> </contact> <contact fullname="Shashikanth"> <organization></organization> <address> <postal><country>India</country></postal> <email>shashivh@gmail.com</email> </address> </contact> </section> </back> <!-- [rfced] Some author comments are present in the XML. Please confirm that no updates related to these comments are outstanding. Note that the comments will be deleted prior to publication. --> <!-- [rfced] Sourcecode a) Note that, except for Figure 1, we updated all instances of <artwork> to either <sourcecode>, <dl> (in IANA Considerations section), or <contact> (in Contributors section). For the instances now tagged as <sourcecode>, we used either type="yangtree" or type="yang". Please review to confirm correctness. b) Some lines in the tree diagrams in Section 4.1.1 and Appendix A extend beyond the margin in the txt output. How may we break these lines so they fit within the 69-character limit for sourcecode? We can use the line wrapping described in Section 7 of RFC 8792, but we first want to confirm that this the best solution here. Perhaps removing some space between items (especially for the last two lines below) would be another option. Same four lines in both Section 4.1.1 and Appendix A: rw pce-initiated? boolean {pce-initiated}? :(hexadecimal) {key-chain:hex-key-string}? rw hexadecimal-string? yang:hex-string ro role? -> ../../../role Note: We only included the portion of the line after the double dash in order to include the lines in this xml comment. --> <!-- [rfced] We have received guidance from Benoit Claise and the YANG Doctors that "YANG data model" is preferred (instead of "YANG model"). We have updated the text to use this form. Please review. --> <!-- [rfced] FYI - We see both American and British spellings in this document; for consistency, we updated to use American spelling. Please note that our updates include changing "neighbour-domains" to "neighbor-domains" in the YANG modules and tree diagrams. Let us know any concerns about these changes in the sourcecode. --> <!-- [rfced] We have added expansions for abbreviations upon first use per Section 3.6 of RFC 7322 ("RFC Style Guide"). Please review each expansion in the document carefully to ensure correctness. Label Switched Paths (LSPs) Point-to-Multipoint (P2MP) Maximum SID Depth (MSD) LSP Database (LSP-DB) --> <!-- [rfced] Please review the "Inclusive Language" portion of the online Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> and let us know if any changes are needed. Updates of this nature typically result in more precise language, which is helpful for readers. For example, please consider whether "sanity" should be updated in the text below: This YANG model defines a RPC to trigger state resynchronize at the PCE for sanity check with a particular PCC. --> </rfc>