<?xml version="1.0" encoding="us-ascii"?> encoding="utf-8"?>

<!DOCTYPE rfc SYSTEM "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    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>

<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 Element Communications Communication 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 Element communications Communication Protocol (PCEP) for
      communications between a Path Computation Client (PCC) and a Path
      Computation Element (PCE), or between two PCEs.</t>
    </abstract>
  </front>
  <middle>
    <section title="Introduction" toc="default"> toc="default" numbered="true">
      <name>Introduction</name>
      <t>The Path Computation Element (PCE) defined in <xref target="RFC4655"/> target="RFC4655"
      format="default"/> is an entity that is capable of computing a network
      path or route based on a network graph, 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 and PCE and PCE; it is
      defined in <xref target="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). <xref target='RFC8231'/> target="RFC8231"
      format="default"/> specifies extensions to PCEP to enable stateful
      control of MPLS TE LSPs. MPLS-TE Label Switched Paths (LSPs).  <xref target='RFC8664'/> target="RFC8664" format="default"/> and
      <xref target='RFC9603'/> target="RFC9603" format="default"/> extend PCEP to support Segment
      Routing in MPLS and IPv6 IPv6, respectively.</t>
      <t>This document defines a YANG 1.1 <xref target="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 YANG module,
   "ietf-pcep" module
      "ietf-pcep", which provides the PCEP <xref target="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, counters
      counters, and telemetry data.</t>
      <t>The YANG modules in this document conform to the Network Management
      Datastore Architecture (NMDA) <xref target="RFC8342"/>. target="RFC8342" format="default"/>.
      The origin of the data is indicated as per the origin metadata
      annotation.</t>
    </section>
    <section title="Requirements Language" toc="default">
        <t>The toc="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 in BCP 14 BCP&nbsp;14 <xref target="RFC2119" /> target="RFC2119"/> <xref
    target="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.</t> here.
        </t>
    </section>
    <section title="Terminology toc="default" numbered="true">
      <name>Terminology and Notation" toc="default">
<t>
          This Notation</name>
      <t>This document uses the terminology defined in <xref target="RFC4655"/> target="RFC4655"
      format="default"/> and <xref target="RFC5440"/>. target="RFC5440" format="default"/>.  In
      particular, it uses the following
          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 Route object (ERO).
            </t>
          </list> Object (ERO)
          </t>
        </li>
      </ul>
      <t>
          This document also uses the following terms defined in
          <xref target="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 PCEP peer: to refer to a speaker</dd>
        <dt>PCEP peer:</dt><dd>a remote PCEP speaker.
            </t>
            <t>PCEP speaker: where speaker</dd>
        <dt>PCEP speaker:</dt><dd>term used when it is not necessary to distinguish
        between local and remote.
        </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 the LSP.</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 Request Parameters</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
	<xref target='RFC8281'/> :
          <list style='symbols'> target="RFC8281" format="default"/>:
      </t>
      <ul spacing="normal">
        <li>
          <t>PCE-initiated LSP, Path LSP</t></li>
	  <li>
          <t>Path Computation LSP Initiate Message (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) <xref target='RFC8664'/> :
          <list style='symbols'> target="RFC8408" format="default"/></t>
        </li>

        <li>
          <t>Segment Routing (SR).</t>

        </list>
        </t>
      <t> (SR) <xref target='RFC5541'/> :
          <list style='symbols'> target="RFC8664" format="default"/></t>
        </li>

        <li>
          <t>Objective Function (OF).</t>

        </list>
        </t>
      <t> (OF) <xref target='RFC8697'/> :
          <list style='symbols'>
            <t>Association.</t>

        </list>
        </t>
        <t> target="RFC5541" format="default"/></t>
        </li>

        <li>
          <t>Association <xref target='RFC6241'/> :
          <list style='symbols'> target="RFC8697" format="default"/></t>
        </li>

        <li>
          <t>Configuration data.</t> data <xref target="RFC6241" format="default"/></t>
        </li>
        <li>
          <t>State data.</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 <xref target="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>
      <section title="Prefixes toc="default" numbered="true">
        <name>Prefixes in Data Node Names" 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="Prefixes align="center">
          <name>Prefixes and corresponding Corresponding YANG modules" suppress-title="false" align="center" style="full">
        <ttcol align="left">Prefix</ttcol>
        <ttcol Modules</name>
          <thead>
            <tr>
              <th align="left">Prefix</th>
              <th align="left">YANG module</ttcol>
        <ttcol align="left">Reference</ttcol>
        <c>yang</c><c>ietf-yang-types</c><c><xref module</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><xref format="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><xref format="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><xref format="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><xref format="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><xref format="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><xref format="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><xref format="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><xref format="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>
      <section title="References toc="default" numbered="true">
        <name>References in the Model" toc="default">
      <t>Following Model</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="References align="center">
          <name>References in the YANG modules" 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>OSPF Modules</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><xref Discovery</td>
              <td align="left">
                <xref target="RFC5088" pageno="false" format="default"/></c>
        <c>IS-IS format="default"/></td>
            </tr>
            <tr>
              <td align="left">IS-IS Protocol Extensions for Path Computation Element (PCE) Discovery</c><c><xref Discovery</td>
              <td align="left">
                <xref target="RFC5089" pageno="false" format="default"/></c>
        <c>Path format="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>Preserving format="default"/></td>
            </tr>
            <tr>
              <td align="left">Preserving Topology Confidentiality in Inter-Domain Path Computation Using a Path-Key-Based Mechanism</c><c><xref Mechanism</td>
              <td align="left">
                <xref target="RFC5520" pageno="false" format="default"/></c>
        <c>Encoding format="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>Path format="default"/></td>
            </tr>
            <tr>
              <td align="left">Path Computation Element Communication Protocol (PCEP) Requirements and Protocol Extensions in Support of Global Concurrent Optimization</c><c><xref Optimization</td>
              <td align="left">
                <xref target="RFC5557" pageno="false" format="default"/></c>
        <c>Common format="default"/></td>
            </tr>
            <tr>
              <td align="left">Common YANG Data Types</c><c><xref Types</td>
              <td align="left">
                <xref target="RFC6991" pageno="false" format="default"/></c>
        <c>YANG format="default"/></td>
            </tr>
            <tr>
              <td align="left">YANG Data Model for Key Chains</c><c><xref Chains</td>
              <td align="left">
                <xref target="RFC8177" pageno="false" format="default"/></c>
        <c>Path format="default"/></td>
            </tr>
            <tr>
              <td align="left">Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE</c><c><xref PCE</td>
              <td align="left">
                <xref target="RFC8231" pageno="false" format="default"/></c>
        <c>Optimizations format="default"/></td>
            </tr>
            <tr>
              <td align="left">Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE</c><c><xref PCE</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>Path format="default"/></td>
            </tr>
            <tr>
              <td align="left">Path Computation Element Communication Protocol (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful PCE Model</c><c><xref Model</td>
              <td align="left">
                <xref target="RFC8281" pageno="false" format="default"/></c>
        <c>Extensions format="default"/></td>
            </tr>
            <tr>
              <td align="left">Extensions to the Path Computation Element Communication Protocol (PCEP) for Point-to-Multipoint Traffic Engineering Label Switched Paths</c><c><xref Paths</td>
              <td align="left">
                <xref target="RFC8306" pageno="false" format="default"/></c>
        <c>Network format="default"/></td>
            </tr>
            <tr>
              <td align="left">Network Configuration Access Control Model</c><c><xref Model</td>
              <td align="left">
                <xref target="RFC8341" pageno="false" format="default"/></c>
        <c>Conveying format="default"/></td>
            </tr>
            <tr>
              <td align="left">Conveying Path Setup Type in PCE Communication Protocol (PCEP) Messages</c><c><xref Messages</td>
              <td align="left">
                <xref target="RFC8408" pageno="false" format="default"/></c>

        <c>Traffic Engineering Common format="default"/></td>
            </tr>
            <tr>
              <td align="left">Common YANG Types</c><c><xref Data Types for Traffic Engineering</td>
              <td align="left">
                <xref target="RFC8776" pageno="false" format="default"/></c>
        <c>YANG format="default"/></td>
            </tr>
            <tr>
              <td align="left">YANG Groupings for TLS Clients and TLS Servers</c><c><xref Servers</td>
              <td align="left">
                <xref target="RFC9645" pageno="false" format="default"/></c>
        <c>PCEP format="default"/></td>
            </tr>
            <tr>
              <td align="left">Path Computation Element Communication Protocol (PCEP) Extensions for Segment Routing</c><c><xref Routing</td>
              <td align="left">
                <xref target="RFC8664" pageno="false" format="default"/></c>
        <c>PCEP format="default"/></td>
            </tr>
            <tr>
              <td align="left">Path Computation Element Communication Protocol (PCEP) Extensions for Establishing Relationships Between between Sets of LSPs</c><c><xref Label Switched Paths (LSPs)</td>
              <td align="left">
                <xref target="RFC8697" pageno="false" format="default"/></c>
        <c>YANG format="default"/></td>
            </tr>
            <tr>
              <td align="left">YANG Data Model for the OSPF Protocol</c><c><xref Protocol</td>
              <td align="left">
                <xref target="RFC9129" pageno="false" format="default"/></c>
        <c>YANG format="default"/></td>
            </tr>
            <tr>
              <td align="left">YANG Data Model for the IS-IS Protocol</c><c><xref Protocol</td>
              <td align="left">
                <xref target="RFC9130" pageno="false" format="default"/></c>
        <c>PCEP extensions format="default"/></td>
            </tr>
            <tr>
              <td align="left">Path Computation Element Communication
              Protocol (PCEP) Extensions for GMPLS</c><c><xref GMPLS</td>
              <td align="left">
                <xref target="RFC8779" pageno="false" format="default"/></c>
        <c>ASSOCIATION format="default"/></td>
            </tr>
            <tr>
              <td align="left">"ASSOCIATION Type Field in Path Field" registry (in the "Path Computation Element Protocol (PCEP) Numbers</c><c><xref target="IANA-PCEP"/></c>
        <c>Path Numbers" registry group)</td>
              <td align="left">
                <xref target="IANA-PCEP" format="default"/></td>
            </tr>
            <tr>
              <td align="left">"Path Computation Element (PCE) Capability Flags in Interior Flags" registry (in the "Interior Gateway Protocol (IGP) Parameters</c><c><xref target="IANA-IGP"/></c>
        <c>Path Parameters" 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 Flow Specification</c><c><xref Specification</td>
              <td align="left">
                <xref target="RFC9168" pageno="false" format="default"/></c>
                <c>Path format="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><xref Architecture</td>
              <td align="left">
                <xref target="RFC8685" pageno="false" format="default"/></c>
        <c>Hierarchical format="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>IGP format="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>Stateful format="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>The format="default"/></td>
            </tr>
            <tr>
              <td align="left">The TCP Authentication Option</c><c><xref Option</td>
              <td align="left">
                <xref target="RFC5925" pageno="false" format="default"/></c>
                <c>Path format="default"/></td>
            </tr>
            <tr>
              <td align="left">Path Computation Element Communication Protocol (PCEP) Extensions for Associating Working and Protection Label Switched Paths (LSPs) with Stateful PCE</c><c><xref PCE</td>
              <td align="left">
                <xref target="RFC8745" pageno="false" format="default"/></c>
                <c>Path format="default"/></td>
            </tr>
            <tr>
              <td align="left">Path Computation Element Communication Protocol (PCEP) Extension for Label Switched Path (LSP) Diversity Constraint Signaling</c><c><xref Signaling</td>
              <td align="left">
                <xref target="RFC8800" pageno="false" format="default"/></c>
                <c>Path format="default"/></td>
            </tr>
            <tr>
              <td align="left">Path Computation Element Communication Protocol (PCEP) Extensions for Establishing Relationships between Sets of Label Switched Paths and Virtual Networks</c><c><xref Networks</td>
              <td align="left">
                <xref target="RFC9358" pageno="false" format="default"/></c>
                <c>Extensions format="default"/></td>
            </tr>
            <tr>
              <td align="left">Extensions to the Path Computation Element Communication Protocol (PCEP) for Inter-Layer MPLS and GMPLS Traffic Engineering</c><c><xref Engineering</td>
              <td align="left">
                <xref target="RFC8282" pageno="false" format="default"/></c>
                <c>Path format="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>
    <section title="The toc="default" anchor="sec.data-tree" numbered="true">
      <name>The Design of PCEP Data Model" 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
        |  |  +--...
        |  +--rw neighbour-domains neighbor-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>

      <section title="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 <xref target="RFC6991"/>)
        target="RFC6991" format="default"/>) and a "role" leaf (the local
        entity PCEP role) as mandatory. </t>
        <t>Note that, that the PCEP MIB module <xref target="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, security parameters parameters, etc. When
        the local entity is PCE, it could also have path-key and the LSP-DB LSP Database (LSP-DB)
        information.</t>
        <t>Note that the timer names in the YANG use hyphens as compared to
        <xref target="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
        |  +--rw neighbour-domains neighbor-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>

        <section title="The toc="default" numbered="true">
          <name>The Peer List" 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 IP addresses addresses, 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
          implementation MAY <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 IGP discovery
   discovery, and it will show up in this list. When a session is initiated at
   a PCE, the remote PCC peer information is also added 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
              |  +--rw neighbour-domains neighbor-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>

          <section title="The toc="default" numbered="true">
            <name>The Session List" 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 <xref target="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>
      <section title="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 <xref target="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>
      <section title="RPC" toc="default"> toc="default" numbered="true">
        <name>RPC</name>
        <t>This YANG data model defines a an RPC to trigger state resynchronize resynchronization 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>

    <section title="The toc="default" anchor="sec.data-tree-stat" numbered="true">
      <name>The Design of PCEP Statistics Data Model" toc="default" anchor="sec.data-tree-stat"> Model</name>
      <t>The "ietf-pcep-stats" module "ietf-pcep-stats", augments the ietf-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
      session stats.</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>
    <section title="Advanced toc="default" numbered="true">
      <name>Advanced PCE Features" 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 <xref target="RFC5440"/> target="RFC5440"
      format="default"/> data model.</t>
      <t>This document further handles advanced PCE features like -
   <list style="symbols"> such as:</t>
      <ul spacing="normal">
        <li>
          <t>Capability and Scope</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 <xref target="I-D.ietf-pce-pcep-srv6-yang"/> target="I-D.ietf-pce-pcep-srv6-yang"
      format="default"/> for the PCEP-SRv6 YANG module.</t>

      <section title="Stateful toc="default" numbered="true">
        <name>Stateful PCE's LSP-DB" toc="default"> LSP-DB</name>
        <t>In the operational datastore of stateful PCE, the list of LSP state are
        is 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 <xref target="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>-->

    <section title="Other Considerations" toc="default"> toc="default" numbered="true">
      <name>Other Considerations</name>

      <section title="PCEP toc="default" anchor="tls" numbered="true">
        <name>PCEP over TLS (PCEPS)" toc="default" anchor="tls"> (PCEPS)</name>

        <t><xref target="RFC8253"/> target="RFC8253" format="default"/> describes the use of TLSv1.2
        TLS 1.2 <xref target="RFC5246"/> target="RFC5246" format="default"/> or later in
        PCEP. Further, <xref target="I-D.ietf-pce-pceps-tls13"/> specify target="I-D.ietf-pce-pceps-tls13"
        format="default"/> specifies how to protect PCEP messages with TLS 1.3
        <xref target="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 TLS connection connection, and the
        PCE acting as the TLS server listens for incoming connections as per the
        TLS specifications (<xref target="RFC8446"/> target="RFC8446" format="default"/> and
        <xref target="RFC5246"/>). target="RFC5246" format="default"/>). <xref target="RFC8253"/> target="RFC8253"
        format="default"/> specifies the StartTLS procedure in PCEP that
        initiates the TLS connection before exchanging PCEP messages thus messages; 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 same holds good is true
        for TLS as well).</t>
        <t>The YANG module uses the TLS grouping in <xref target="RFC9645"/>. target="RFC9645"
        format="default"/>.  Note that any TLS version can be configured configured, but
        <xref target="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>
    <section title="PCEP toc="default" numbered="true">
      <name>PCEP YANG Modules" toc="default"> Modules</name>
      <section title="ietf-pcep module" toc="default">
    <t>RFC Ed.: toc="default" numbered="true">
        <name>ietf-pcep Module</name>

<!-- [rfced] In this section, replace all occurrences the 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' with the
   actual RFC number following values
          - unknown(0): the role is not known,
          - pcc(1): the role is of a Path Computation
           Client (PCC),
          - pce(2): the role is of a Path Computation
           Server (PCE),
          - pcc-and-pce(3): the role is of both a PCC and all occurrences
           a PCE.";

Perhaps:

       description
         "The role of a PCEP speaker.
          Takes one of the revision date below with following values values:
          - unknown(0): the date role is not known,
          - pcc(1): the role is of RFC publication (and remove a 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 this note).</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 Configuration Protocol (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 RFC XXXX; 9826; see the
     RFC itself for full legal notices.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here."; notices.";

  revision 2025-01-27 2025-07-24 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: 9826:  A YANG Data Model for the Path Computation
       Element Communications Communication Protocol (PCEP)";
  }

  /*
   * Typedefs
   */

  typedef role {
    type enumeration {
      enum unknown {
        value 0;
        description
          "An unknown role"; role.";
      }
      enum pcc {
        value 1;
        description
          "The role of a Path Computation Client"; Client (PCC).";
      }
      enum pce {
        value 2;
        description
          "The role of a Path Computation Element"; Element (PCE).";
      }
      enum pcc-and-pce {
        value 3;
        description
          "The role of both Path Computation Client (PCC) and
           Path Computation Element"; Element (PCE).";
      }
    }
    description
      "The role of a PCEP speaker.
       Takes one of the following values 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 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 is active"; active.";
      }
      enum oper-status-down {
        value 2;
        description
          "The PCEP entity is inactive"; inactive.";
      }
      enum oper-status-going-up {
        value 3;
        description
          "The PCEP entity is activating"; activating.";
      }
      enum oper-status-going-down {
        value 4;
        description
          "The PCEP entity is deactivating"; deactivating.";
      }
      enum oper-status-failed {
        value 5;
        description
          "The PCEP entity has failed and will recover
           when possible.";
      }
      enum oper-status-failed-perm {
        value 6;
        description
          "The PCEP entity has failed and will not recover
           without operator intervention"; 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 the session"; session.";
      }
      enum remote {
        value 2;
        description
          "The remote PCEP peer initiated the session"; 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
      "The Domain 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 torn down, down; resources are
           being released.";
      }
      enum going-up {
        value 4;
        description
          "LSP is being signalled."; signaled.";
      }
    }
    description
      "The operational status of the LSP"; 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 unknown role"; 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 extensions Path 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
      "Support Stateful stateful PCE as per RFC 8231.";
    reference
      "RFC 8231: Path Computation Element Communication Protocol
       (PCEP) Extensions for Stateful PCE";
  }

  feature sync-opt {
    description
      "Support Stateful stateful state synchronization optimization
       as per RFC 8232"; 8232.";
    reference
      "RFC 8232: Optimizations of Label Switched Path State
       Synchronization Procedures for a Stateful PCE";
  }

  feature pce-initiated {
    description
      "Support PCE-Initiated PCE-initiated LSP as per
       RFC 8281.";
    reference
      "RFC 8281: Path Computation Element Communication Protocol
       (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful
       PCE Model";
  }

  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
      "Support Hierarchical-PCE Hierarchical 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
      "Support Inter-layer inter-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
      "Base Domain Type domain type for PCE"; 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 LSP error"; 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
      "No error, 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 Protection Association"; 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
      "Disjoint Association"; 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
      "Policy Association"; 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 a Domain domain where the
       PCEP speaker has topology visibility.";
    leaf type {
      type identityref {
        base domain-type;
      }
      description
        "The domain type.";
    }
    leaf domain {
      type domain;
      description
        "The domain Information."; information.";
    }
  }

  grouping domain-info {
    description
      "This grouping specifies all information which that
       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 Flow specification."; Specification.";
            reference
              "RFC 9168: Path Computation Element Communication
               Protocol (PCEP) Extension for Flow Specification";
          }
          bit tcp-ao {
            description
              "Support for The the 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 for TLS"; 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 the capabilities"; 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 LSP object"; 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-triggered re-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 initial synchronization"; 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 is enabled"; enabled.";
        }
        leaf no-msd-limit {
          type boolean;
          default "false";
          description
            "True indicates no limit on MSD, Maximum SID Depth (MSD); the
             leaf msd is ignored"; 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
          "If Stateful stateful GMPLS is supported for a local entity
           or a peer"; peer.";
        reference
          "RFC 8779: Path Computation Element Communication Protocol
           (PCEP) Extensions for Stateful PCE Usage in GMPLS-controlled
           Networks"; GMPLS";
        leaf enabled {
          type boolean;
          default "false";
          description
            "Set to true if Stateful stateful GMPLS is enabled"; enabled.";
        }
      }
      leaf inter-layer {
        if-feature "inter-layer";
        type boolean;
        default "false";
        description
          "If inter-layer path computation is supported for
           local entity or a peer"; 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 a peer"; 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 is enabled"; enabled.";
        }
        leaf stateful {
          if-feature "stateful";
          type boolean;
          default "false";
          description
            "Set to true if Stateful stateful H-PCE is enabled"; 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-MPLS i.e. (i.e., the label stack
         depth that a PCC is capable of imposing on a packet."; packet).";
      reference
        "RFC 8664: Path Computation Element Communication Protocol
         (PCEP) Extensions for Segment Routing";
    }
  }

  grouping pce-info {
    description
      "This grouping specifies all PCE information
       which
       that 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
         information which that 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
               path computation. computation (Rd bit)"; bit).";
          }
          bit inter-as-scope {
            description
              "PCE can compute inter-AS paths (S bit).";
          }
          bit inter-as-scope-default {
            description
              "PCE can act as a default PCE for inter-AS
               path computation (Sd bit).";
          }
          bit inter-layer-scope {
            description
              "PCE can compute inter-layer paths (Y bit).";
          }
        }
        description
          "The field corresponding to the path scope bits"; bits.";
      }
      leaf intra-area-pref {
        type uint8 {
          range "0..7";
        }
        description
          "The PCE's preference for intra-area TE LSP
           computation (PrefL field). Where field), where 7 reflects
           the highest preference.";
      }
      leaf inter-area-pref {
        type uint8 {
          range "0..7";
        }
        description
          "The PCE's preference for inter-area TE LSP
           computation (PrefR field). Where field), where 7 reflects
           the highest preference.";
      }
      leaf inter-as-pref {
        type uint8 {
          range "0..7";
        }
        description
          "The PCE's preference for inter-AS TE LSP
           computation (PrefS field). Where field), where 7 reflects
           the highest preference.";
      }
      leaf inter-layer-pref {
        type uint8 {
          range "0..7";
        }
        description
          "The PCE's preference for inter-layer TE LSP
           computation (PrefY field). Where field), 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";
    }
    container neighbour-domains neighbor-domains {
      description
        "The list of neighbour PCE-Domain neighbor PCE domains
         toward which a PCE can compute
         paths";
         paths.";
      list domain {
        key "type domain";
        description
          "The neighbour neighbor domain.";
        uses domain {
          description
            "The PCE neighbour neighbor 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 peer address"; 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 initiator leaf"; 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 authorized OF"; OF.";
      leaf of {
        type identityref {
          base te-types:objective-function-type;
        }
        description
          "The OF authorized"; authorized.";
      }
    }
  }

  grouping auth {
    description
      "The Authentication options"; authentication options.";
    container auth {
      description
        "The Authentication 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 string styles"; styles.";
            case keystring {
              leaf keystring {
                nacm:default-deny-all;
                type string;
                description
                  "Key string in ASCII format.";
              }
            }
            case hexadecimal {
              if-feature "key-chain:hex-key-string";
              leaf hexadecimal-string {
                nacm:default-deny-all;
                type yang:hex-string;
                description
                  "Key in hexadecimal string format.  When
                   compared to ASCII, specification in
                   hexadecimal affords greater key entropy
                   with the same number of internal
                   key-string octets.  Additionally, it
                   discourages usage of well-known words or
                   numbers.";
              }
            }
          }
        }
        case auth-tls {
          if-feature "tls";
          choice role {
            description
              "The role of the local entity"; 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 operate both as both a
           PCC and a PCE Server, server, in which case it uses this
           address both to listen for incoming TCP connections
           and to bind outgoing TCP connections.";
      }
      leaf enabled {
        type boolean;
        default "true";
        description
          "The administrative status of this PCEP
           Entity;
           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 PCEP Entity entity is a PCC,
           - pce(2): this PCEP Entity entity is a PCE,
           - pcc-and-pce(3): this PCEP Entity entity is both
           a PCC and a PCE.";
      }
      leaf description {
        type string;
        description
          "Description of the PCEP entity configured
           by the user"; user.";
      }
      leaf speaker-entity-id {
        if-feature "sync-opt";
        type string;
        description
          "The Speaker Entity Identifier"; Identifier.";
        reference
          "RFC 8232: Optimizations of Label Switched
           Path State  Synchronization Procedures for
           a Stateful PCE";
      }
      leaf admin-status {
        type boolean;
        default "true";
        description
          "The administrative status of this PCEP Entity. entity.
           The value true represents admin status as up.
           This is the desired operational status as
           currently set by an operator or by default in
           the implementation.  The value of oper-status
           represents the current status of an attempt to
           reach this desired status.";
      }
      leaf index {
        type uint32;
        config false;
        description
          "The index of the operational PECP entity"; 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 entity information"; information.";
      }
      uses auth {
        description
          "Local authorization and security parameters"; parameters.";
      }
      container pce-info {
        when "../role = 'pce'"
           + "or "
           + "../role = 'pcc-and-pce'" {
          description
            "These fields are applicable when the role is PCE.";
        }
        description
          "The Local local PCE Entity entity PCE information"; information.";
        uses pce-info {
          description
            "Local PCE information"; 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 a Path-Key
             -Based Path-Key-
             Based Mechanism";
          leaf enabled {
            type boolean;
            default "false";
            description
              "Enabled or Disabled; disabled; set to true when Enabled"; enabled.";
          }
          leaf discard-timer {
            type uint32;
            units "minutes";
            default "10";
            description
              "A timer to discard unwanted path-keys"; path-keys.";
          }
          leaf reuse-time {
            type uint32 {
              range "30..max";
            }
            units "minutes";
            default "30";
            description
              "A time after which the path-keys could be reused"; reused.";
          }
          leaf pce-id {
            type inet:ip-address-no-zone;
            description
              "PCE Address address to be used in each Path-Key Subobject
               (PKS), same as local PCE entity IP address"; 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 this time time,
           then PCEP aborts the session setup attempt.";
        reference
          "RFC 5440: Path Computation Element (PCE) Communication
           Protocol (PCEP)";
      }
      leaf connect-max-retry {
        type uint32;
        default "5";
        description
          "The maximum number of times the system tries to
           establish a TCP connection to a peer before the
           session with the peer transitions to the idle
           state.";
        reference
          "RFC 5440: Path Computation Element (PCE) Communication
           Protocol (PCEP)";
      }
      leaf init-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 this time time, then
           PCEP terminates the TCP connection and deletes the
           associated sessions.";
        reference
          "RFC 5440: Path Computation Element (PCE) Communication
           Protocol (PCEP)";
      }
      leaf keep-wait-timer {
        type 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 this time time, 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 RFC 5440, 5440 and so thus 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 in seconds, 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 in seconds, 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 in seconds, 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 is
           triggered
           triggered, 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
           that period, period or may queue them until an
           appropriate time.  A value of 0 means no
           notifications are emitted and all should be
           discarded (that is, not queued).";
      }
      container stateful-parameter {
        if-feature "stateful";
        description
          "The configured stateful PCE parameters"; 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 or behaviours. 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 is
               PCC";
               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 is
               PCC";
               PCC.";
          }
          type boolean;
          default "true";
          description
            "If set, a PCC reports LSPs that are not
             controlled by any PCE (for example, LSPs
             that are statically configured at the
             PCC). ";
             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 is
             PCE";
             PCE.";
        }
        if-feature "objective-function";
        uses of-list;
        description
          "The authorized OF-List at PCE for all peers"; peers.";
      }
      container lsp-db {
        if-feature "stateful";
        config false;
        description
          "The LSP-DB"; LSP-DB.";
        leaf db-ver {
          when "../../role = 'pcc'"
             + "or "
             + "../../role = 'pcc-and-pce'" {
            description
              "This field is applicable when the role is
               PCC";
               PCC.";
          }
          if-feature "sync-opt";
          type uint64;
          description
            "The LSP State Database Version Number"; Number.";
        }
        list association-list {
          if-feature "association";
          key "type id source global-source extended-id";
          description
            "List of all PCEP associations"; associations.";
          reference
            "RFC 8697: Path Computation Element Communication
             Protocol (PCEP) Extensions for Establishing
             Relationships between Sets of Label Switched
             Paths (LSPs)";
          leaf type {
            type identityref {
              base te-types:association-type;
            }
            description
              "The PCEP Association Type"; 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 Association ID"; 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 this association"; association.";
            leaf plsp-id {
              type leafref {
                path "/pcep/entity/lsp-db/"
                   + "lsp/plsp-id";
              }
              description
                "Reference to PLSP-ID in LSP-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 in LSP-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 to LSP ID LSP-ID in LSP-DB"; LSP-DB.";
            }
          }
        }
        list lsp {
          key "plsp-id pcc-id lsp-id";
          description
            "List of all LSPs in LSP-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 0xFFFFF are
               reserved";
               reserved.";
          }
          leaf pcc-id {
            type inet:ip-address-no-zone;
            description
              "The local IP address of the PCC, PCC that
               generated the PLSP-ID.";
          }
          leaf source {
            type inet:ip-address-no-zone;
            description
              "Tunnel sender address extracted from
               LSP-IDENTIFIERS TLV"; 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-IDENTIFIERS TLV"; 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
              "Extended Tunnel tunnel 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 operational state"; state.";
          }
          leaf operational-state {
            type operational-state;
            description
              "The operational status of the LSP"; LSP.";
          }
          container delegated {
            description
              "The delegation related parameters"; delegation-related parameters.";
            leaf enabled {
              type boolean;
              default "false";
              description
                "LSP is delegated or not; set to true when
                 delegated";
                 delegated.";
            }
            leaf peer {
              when '../enabled' {
                description
                  "The LSP must be delegated"; delegated.";
              }
              type leafref {
                path "/pcep/entity/peers/peer/addr";
              }
              description
                "At the PCC, the reference to the PCEP peer to
                 which LSP is delegated; At at the PCE, the
                 reference to the PCEP peer which that delegated this
                 LSP";
                 LSP.";
            }
            leaf srp-id {
              type uint32 {
                range "1..4294967294";
              }
              description
                "The last SRP-ID-number associated with this
                 LSP.  The value values 0x00000000 and 0xFFFFFFFF
                 are reserved.";
            }
          }
          container initiation {
            if-feature "pce-initiated";
            description
              "The PCE initiation parameters related parameters"; 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 a PCE"; PCE.";
            }
            leaf peer {
              when '../enabled' {
                description
                  "The LSP must be PCE-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 is initiated"; 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 Signaling
               Type";
               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 PCEP associations"; associations.";
            leaf type {
              type leafref {
                path "/pcep/entity/lsp-db/"
                   + "association-list/type";
              }
              description
                "PCEP Association Type"; Type.";
            }
            leaf id {
              type leafref {
                path "/pcep/entity/lsp-db/"
                   + "association-list[type=current()/"
                   + "../type]/id";
              }
              description
                "PCEP Association ID"; 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 is
             PCE";
             PCE.";
        }
        if-feature "path-key";
        config false;
        description
          "The path-keys generated by the PCE"; 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 the PCE"; PCE.";
          leaf key {
            type uint16;
            description
              "The identifier, identifier or token used to represent
               the Confidential Path Segment (CPS) within
               the context of the PCE"; PCE.";
          }
          container cps {
            description
              "The Confidential Path Segment (CPS)"; (CPS).";
            list explicit-route-objects {
              key "index";
              description
                "List of explicit route objects"; Explicit Route Objects (EROs).";
              leaf index {
                type uint32;
                description
                  "ERO subobject index"; 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 retrieved yet"; yet.";
          }
          leaf pcc-retrieved {
            when '../retrieved' {
              description
                "The Path-key path-key should be retrieved"; retrieved.";
            }
            type leafref {
              path "/pcep/entity/peers/peer/addr";
            }
            description
              "Reference to PCC peer address which that
               retrieved the path-key"; path-key.";
          }
          leaf creation-time {
            type yang:timestamp;
            description
              "The timestamp value at the time this Path-Key path-key
               was created.";
          }
          leaf discard-time {
            type uint32;
            units "minutes";
            description
              "A time after which this path-keys will be
               discarded";
               discarded.";
          }
          leaf reuse-time {
            type uint32;
            units "minutes";
            description
              "A time after which this path-keys could be
               reused";
               reused.";
          }
        }
      }
      container peers {
        description
          "The list of configured peers for the
           entity (remote PCE)"; PCE).";
        list peer {
          key "addr";
          description
            "The peer configured for the entity.
             (remote PCE)"; 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 PCEP Peer. 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 the sametime."; same time.";
          }
          leaf description {
            type string;
            description
              "Description of the PCEP peer
               configured by the user"; user.";
          }
          uses domain-info {
            description
              "PCE Peer information"; peer information.";
          }
          container pce-info {
            uses pce-info {
              description
                "Using the PCE Peer peer information grouping"; grouping.";
            }
            description
              "The PCE Peer information"; peer information.";
          }
          leaf delegation-pref {
            if-feature "stateful";
            type uint8 {
              range "0..7";
            }
            mandatory true;
            description
              "The PCE peer delegation preference preference, where
               7 reflects the highest preference"; preference.";
          }
          uses auth {
            description
              "The PCE peer authorization and security
               parameters";
               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 this peer, peer or wait waits 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 of sessions, sessions; note that for a time being
                 two sessions may exist for a peer"; 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 is tcp-pending tcp-pending,
                   then this is the session ID that will be
                   used in the Open message.  Otherwise, this
                   is the session ID that was sent in the
                   Open message.";
                reference
                  "RFC 5440: Path Computation Element (PCE)
                   Communication Protocol (PCEP)";
              }
              leaf remote-id {
                type uint8;
                description
                  "The value of the PCEP session ID used by the
                   peer in its Open message for this session.

                   If the state is TCPPending or OpenWait OpenWait, 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 or OpenWait OpenWait, 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 or OpenWait OpenWait, 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 when overloaded"; 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 when Peer peer is overloaded"; 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 is
                     PCC";
                     PCC.";
                }
                if-feature "stateful";
                if-feature "sync-opt";
                type uint64;
                description
                  "The last received LSP State Database Version
                   Number";
                   Number.";
                reference
                  "RFC 8231: Path Computation Element Communication
                   Protocol (PCEP) Extensions for Stateful PCE";
              }
              container of-list {
                when "../role = 'pce'"
                   + "or "
                   + "../role = 'pcc-and-pce'" {
                  description
                    "These fields are applicable when the role is
                     PCE";
                     PCE.";
                }
                if-feature "objective-function";
                uses of-list;
                description
                  "Indicate the list of supported OF on this
                   session";
                   session.";
                reference
                  "RFC 5541: Encoding of Objective Functions in
                   the Path  Computation Element Communication
                   Protocol (PCEP)";
              }
              container pst-list {
                when "../role = 'pce'"
                   + "or "
                   + "../role = 'pcc-and-pce'" {
                  description
                    "These fields are applicable when the role is
                     PCE";
                     PCE.";
                }
                description
                  "Indicate the list of supported
                   PST on this session"; session.";
                reference
                  "RFC 8408: Conveying Path Setup Type in PCE
                   Communication Protocol (PCEP) Messages";
                list path-setup-type {
                  key "pst";
                  description
                    "The list of PST"; PST.";
                  leaf pst {
                    type identityref {
                      base te-types:path-signaling-type;
                    }
                    description
                      "The PST supported"; supported.";
                  }
                }
              }
              container assoc-type-list {
                if-feature "association";
                description
                  "Indicate the list of supported association types
                   on this session"; session.";
                reference
                  "RFC 8697: Path Computation Element Communication
                   Protocol (PCEP) Extensions for Establishing
                   Relationships between Sets of Label Switched
                   Paths (LSPs)";
                list assoc-type {
                  key "at";
                  description
                    "The list of authorized association types"; types.";
                  leaf at {
                    type identityref {
                      base te-types:association-type;
                    }
                    description
                      "The association type authorized"; authorized.";
                  }
                }
              }
              leaf speaker-entity-id {
                if-feature "sync-opt";
                type string;
                description
                  "The Speaker Entity Identifier"; 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 the PCE"; 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 state
           syncronization
           synchronization is re-triggered for all LSPs from
           the PCC.  The rpc on the PCC will be ignored.";
      }
    }
  }
}

<CODE ENDS>
                     ]]></artwork>
        </figure>
]]></sourcecode>
      </section>
      <section title="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
      "RFC XXXX: 9826: A YANG Data Model for the Path Computation
       Element Communications Communication 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 RFC XXXX; 9826; see the
     RFC itself for full legal notices.";

  revision 2025-01-27 2025-07-24 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: 9826:  A YANG Data Model for the Path Computation
       Element Communications Communication 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 this groupings
       include grouping
       includes a relative path, care needs to be taken while
       using it"; 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 PCEP Peer peer as PCE"; PCE.";
      }
      leaf rsp-time-avg {
        type uint32;
        units "milliseconds";
        description
          "The average response time.  If an average response time
           has not been calculated calculated, 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 been received received, 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 been received received, 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 as peer"; 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 PCEP Peer peer as PCC"; 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 as peer"; peer.";
    }
    container svec {
      if-feature "pcep:svec";
      description
        "If synchronized path computation is supported"; supported.";
      container pce {
        when "../../../pcep:role = 'pce'"
           + "or "
           + "../../../pcep:role = 'pcc-and-pce'" {
          description
            "Valid for PCEP Peer peer as PCE"; 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 to PCE"; PCE.";
      }
      container pcc {
        when "../../../pcep:role = 'pcc'"
           + "or "
           + "../../../pcep:role = 'pcc-and-pce'" {
          description
            "Valid for PCEP Peer peer as PCC"; 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 as peer"; peer.";
      }
    }
    container stateful {
      if-feature "pcep:stateful";
      description
        "Stateful PCE related statistics"; PCE-related statistics.";
      container pce {
        when "../../../pcep:role = 'pce'"
           + "or "
           + "../../../pcep:role = 'pcc-and-pce'" {
          description
            "Valid for PCEP Peer peer as PCE"; 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 LSP Reports reports 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 LSP Updates updates 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 PCEP Peer peer as PCC"; 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 LSP Reports reports 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 as peer"; peer.";
      }
      container initiation {
        if-feature "pcep:pce-initiated";
        description
          "PCE-Initiated
          "PCE-initiated related statistics"; statistics.";
        container pcc {
          when "../../../../pcep:role = 'pcc'"
             + "or "
             + "../../../../pcep:role = 'pcc-and-pce'" {
            description
              "Valid for PCEP Peer peer as PCC"; PCC.";
          }
          leaf pcinitiate-sent {
            type yang:counter32;
            description
              "The number of PCInitiate messages sent.";
          }
          leaf initiate-sent {
            type yang:counter32;
            description
              "The number of LSP Initiation initiations 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 as peer"; peer.";
        }
        container pce {
          when "../../../../pcep:role = 'pce'"
             + "or "
             + "../../../../pcep:role = 'pcc-and-pce'" {
            description
              "Valid for PCEP Peer peer as PCE"; PCE.";
          }
          leaf pcinitiate-rcvd {
            type yang:counter32;
            description
              "The number of PCInitiate messages received.";
          }
          leaf initiate-rcvd {
            type yang:counter32;
            description
              "The number of LSP Initiation initiations 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 as peer"; peer.";
        }
      }
    }
    container path-key {
      when "../../pcep:role = 'pcc'"
         + "or "
         + "../../pcep:role = 'pcc-and-pce'" {
        description
          "Valid for PCEP Peer peer as PCC"; PCC.";
      }
      if-feature "pcep:path-key";
      description
        "If Path-Key path-key is supported"; 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
         associated container"; 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 the statistics"; 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 PCEP Peer peer as PCE"; 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 PCEP Peer peer as PCC"; 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 the statistics"; 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>
    <section title="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>The ietf-pcep "ietf-pcep" and ietf-pcep-stats "ietf-pcep-stats" YANG modules define data models
      that are designed to be accessed via YANG-based management protocols,
      such as NETCONF <xref target="RFC6241"/> target="RFC6241" format="default"/> and RESTCONF
      <xref target="RFC8040"/>. target="RFC8040" format="default"/>. These protocols have to use a
      secure transport layer (e.g., SSH <xref target="RFC6242"/>, target="RFC4252"
      format="default"/>, TLS <xref target="RFC8446"/>, target="RFC8446" format="default"/>, and
      QUIC <xref target="RFC9000"/>) target="RFC9000" format="default"/>) and have to use mutual
      authentication.</t>

      <t>The NETCONF access control model Network Configuration Access Control Model (NACM) <xref
      target="RFC8341"/> provides the means to restrict access for particular
      NETCONF or RESTCONF users to a
   pre-configured preconfigured 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 the ietf-pcep "ietf-pcep" YANG module which
      that 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 particular sensitivities/vulnerabilities:
   <list>
   <t>/pcep/entity/ - configure
      sensitivities/vulnerabilities:</t>
<!-- DNE: Boilerplate ends -->

      <ul spacing="normal">
        <li>/pcep/entity/: Configures local parameters, capabilities etc.</t>
   <t>/pcep/entity/peers - configure capabilities, etc.</li>
        <li>/pcep/entity/peers: Configures remote peers to setup set up a PCEP session.</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 usage information.</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
        path information.
    </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
      following operations have operation has particular sensitivities/vulnerabilities:
    <list>

  <t>trigger-resync - trigger sensitivities/ 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 state synchronization. </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 several notifications, 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, <xref target="tls"/> target="tls" format="default"/>
      describes how to configure TLS1.2 TLS 1.2 and TLS1.3 TLS 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 (called ietf-pcep-stats)
      "ietf-pcep-stats") for maintaining the statistics by augmenting the ietf-pcep
      "ietf-pcep" YANG module. There module.</t>
      <t>There are no particularly sensitive writable data nodes defined in this module which are writable/creatable/deletable (i.e., config true). The nodes.
      </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
      following operations have operation 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
        impact monitoring.</t>
  </list>
</t> monitoring.</li>
      </ul>

    </section>

    <section title="IANA Considerations" toc="default">
    <t>This document requests toc="default" numbered="true">
      <name>IANA Considerations</name>
      <t>IANA has registered the IANA to register two following URIs in the "IETF XML
      Registry" <xref target="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 XML namespace.

      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 XML namespace.
        ]]></artwork>
        </figure>
   </t>
   <t>This document requests namespace.</dd>
      </dl>

      <t>IANA has registered the IANA to register two following YANG modules in the
      "YANG Module Names" registry <xref target="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 as remove the reference to RFC 7942.]</t>
<t>This section records the status of known implementations of the
     protocol defined by this specification at the time of posting of
     this Internet-Draft, and is based on a proposal described in
     <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 serve 7/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 as evidence of valuable
     experimentation and feedback that have made the implemented
     protocols more mature.  It is up to the individual working groups
     to use this information 02/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 as they see fit".</t>

     <t>Currently, there are no known implementations of the YANG Module 02/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 as specified.</t>
</section>
    <section title="Acknowledgements" toc="default">
      <t>The initial document is based on the PCEP MIB <xref target="RFC7420"/>. The authors of this 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 Type Field 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) Capability
         Flags in Interior Gateway Protocol (IGP) Parameters</title>
    <author/>
    <date/> Flags</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>

      </references>
    </references>
    <section title="The toc="default" anchor="sec.full.data-tree" numbered="true">
      <name>The Full PCEP Data Model" toc="default" anchor="sec.full.data-tree"> Model</name>
      <t>The module, "ietf-pcep", module "ietf-pcep" defines the basic components of a PCE
      speaker. The tree depth in the tree is set to 10.
    <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
        |  +--rw neighbour-domains neighbor-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
              |  +--rw neighbour-domains neighbor-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>
    <section title="Example" toc="default">
    <t>The toc="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 be setup.</t> set up.</t>
    </section>

    <section title="Design Objectives" toc="default"> toc="default" numbered="true">
      <name>Design Objectives</name>
      <t>This section describes some of the design objectives for the model:
    <list style="symbols">
    <t>In the case of existing implementations, it needs model:</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 MIB Module module <xref target="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 model which that 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>
    <section title="Relationship toc="default" numbered="true">
      <name>Relationship with PCEP MIB" toc="default"> MIB</name>
      <t>If a node implements the PCEP-MIB PCEP MIB <xref target="RFC7420"/>, target="RFC7420" format="default"/>, data nodes from the
   YANG module can be mapped to table entries in the PCEP-MIB.</t>
         <texttable PCEP MIB.</t>
      <table anchor="tab.mib" title="High Level align="center">
        <name>High-Level Relationship with PCEP MIB" suppress-title="false" align="center" style="full">
        <ttcol MIB</name>
        <thead>
          <tr>
            <th align="left">YANG Data Nodes</ttcol>
        <ttcol Nodes</th>
            <th align="left">PCEP MIB Objects</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>

         <texttable Objects</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="Relationship align="center">
        <name>Relationship with PCEP MIB for Entity" suppress-title="false" align="center" style="full">
        <ttcol Entity</name>
        <thead>
          <tr>
            <th align="left">YANG Data Nodes</ttcol>
        <ttcol Nodes</th>
            <th align="left">PCEP MIB Objects</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>

        <texttable Objects</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="Relationship align="center">
        <name>Relationship with PCEP MIB for Peer" suppress-title="false" align="center" style="full">
        <ttcol Peer</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 MIB Objects</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>

        <texttable Objects</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="Relationship align="center">
        <name>Relationship with PCEP MIB for Session" suppress-title="false" align="center" style="full">
        <ttcol Session</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 MIB Objects</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>

               <texttable Objects</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="Relationship align="center">
        <name>Relationship with PCEP MIB Notification" suppress-title="false" align="center" style="full">
        <ttcol Notification</name>
        <thead>
          <tr>
            <th align="left">YANG notifications</ttcol>
        <ttcol notifications</th>
            <th align="left">PCEP MIB NOTIFICATIONS</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>

    <section title="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, Longgang District
Shenzhen  518129
P.R.China

EMail: zhang.xian@huawei.com District</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
   India

EMail:
   Email: avantika.srm@gmail.com

   Shashikanth
   India

EMail:
   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>