<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902" category="std" docName="draft-ietf-pce-pcep-yang-30" number="9826" consensus="true" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" prepTime="2025-09-12T11:09:02" indexInclude="true" scripts="Common,Latin">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-pce-pcep-yang-30" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9826" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="YANG Data Model for PCEP">A YANG Data Model for the Path Computation Element Communication Protocol (PCEP)</title>
    <seriesInfo name="RFC" value="9826" stream="IETF"/>
    <author initials="D" surname="Dhody" fullname="Dhruv Dhody" role="editor">
      <organization showOnFrontPage="true">Huawei</organization>
      <address>
        <postal>
          <country>India</country>
        </postal>
        <email>dhruv.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Vishnu Pavan Beeram" initials="V." surname="Beeram">
      <organization showOnFrontPage="true">Juniper Networks</organization>
      <address>
        <postal>
          <country>India</country>
        </postal>
        <email>vbeeram@juniper.net</email>
      </address>
    </author>
    <author fullname="Jonathan Hardwick" initials="J." surname="Hardwick">
      <organization showOnFrontPage="true"/>
      <address>
        <postal>
          <country>United Kingdom</country>
        </postal>
        <email>jonathan.e.hardwick@gmail.com</email>
      </address>
    </author>
    <author fullname="Jeff Tantsura" initials="J." surname="Tantsura">
      <organization showOnFrontPage="true">Nvidia</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>jefftant.ietf@gmail.com</email>
      </address>
    </author>
    <date month="08" year="2025"/>
    <area>RTG</area>
    <workgroup>pce</workgroup>
    <keyword>example</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document defines a YANG data model for the management of the
      Path Computation Element Communication Protocol (PCEP) for
      communications between a Path Computation Client (PCC) and a Path
      Computation Element (PCE), or between two PCEs.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9826" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2025 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology-and-notation">Terminology and Notation</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tree-diagrams">Tree Diagrams</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-prefixes-in-data-node-names">Prefixes in Data Node Names</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.3">
                <t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent="3.3" format="counter" sectionFormat="of" target="section-3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references-in-the-yang-data">References in the YANG Data Model</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-design-of-pcep-data-mod">The Design of PCEP Data Model</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-entity">The Entity</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2.1.2">
                  <li pn="section-toc.1-1.4.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.4.2.1.2.1.1"><xref derivedContent="4.1.1" format="counter" sectionFormat="of" target="section-4.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-peer-list">The Peer List</xref></t>
                    <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2.1.2.1.2">
                      <li pn="section-toc.1-1.4.2.1.2.1.2.1">
                        <t indent="0" pn="section-toc.1-1.4.2.1.2.1.2.1.1"><xref derivedContent="4.1.1.1" format="counter" sectionFormat="of" target="section-4.1.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-session-list">The Session List</xref></t>
                      </li>
                    </ul>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-notifications">Notifications</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-rpc">RPC</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-design-of-pcep-statisti">The Design of PCEP Statistics Data Model</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-advanced-pce-features">Advanced PCE Features</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-stateful-pces-lsp-db">Stateful PCE's LSP-DB</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-other-considerations">Other Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-pcep-over-tls-pceps">PCEP over TLS (PCEPS)</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-pcep-yang-modules">PCEP YANG Modules</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ietf-pcep-module">ietf-pcep Module</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ietf-pcep-stats-module">ietf-pcep-stats Module</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.11.2">
              <li pn="section-toc.1-1.11.2.1">
                <t indent="0" pn="section-toc.1-1.11.2.1.1"><xref derivedContent="11.1" format="counter" sectionFormat="of" target="section-11.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.11.2.2">
                <t indent="0" pn="section-toc.1-1.11.2.2.1"><xref derivedContent="11.2" format="counter" sectionFormat="of" target="section-11.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-full-pcep-data-model">The Full PCEP Data Model</xref></t>
          </li>
          <li pn="section-toc.1-1.13">
            <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="Appendix B" format="default" sectionFormat="of" target="section-appendix.b"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-example">Example</xref></t>
          </li>
          <li pn="section-toc.1-1.14">
            <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="Appendix C" format="default" sectionFormat="of" target="section-appendix.c"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-design-objectives">Design Objectives</xref></t>
          </li>
          <li pn="section-toc.1-1.15">
            <t indent="0" pn="section-toc.1-1.15.1"><xref derivedContent="Appendix D" format="default" sectionFormat="of" target="section-appendix.d"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-relationship-with-pcep-mib">Relationship with PCEP MIB</xref></t>
          </li>
          <li pn="section-toc.1-1.16">
            <t indent="0" pn="section-toc.1-1.16.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.e"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.17">
            <t indent="0" pn="section-toc.1-1.17.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.f"/><xref derivedContent="" format="title" sectionFormat="of" target="name-contributors">Contributors</xref></t>
          </li>
          <li pn="section-toc.1-1.18">
            <t indent="0" pn="section-toc.1-1.18.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.g"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section toc="include" numbered="true" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">The Path Computation Element (PCE) defined in <xref target="RFC4655" format="default" sectionFormat="of" derivedContent="RFC4655"/> is an entity that is capable of computing a network
      path or route based on a network graph and applying computational
      constraints.  A Path Computation Client (PCC) may make requests to a PCE
      for paths to be computed.</t>
      <t indent="0" pn="section-1-2">PCEP is the communication protocol between a PCC and PCE; it is
      defined in <xref target="RFC5440" format="default" sectionFormat="of" derivedContent="RFC5440"/>. 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" format="default" sectionFormat="of" derivedContent="RFC8231"/> specifies extensions to PCEP to enable stateful
      control of MPLS-TE Label Switched Paths (LSPs).  <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/> and
      <xref target="RFC9603" format="default" sectionFormat="of" derivedContent="RFC9603"/> extend PCEP to support Segment
      Routing in MPLS and IPv6, respectively.</t>
      <t indent="0" pn="section-1-3">This document defines a YANG 1.1 <xref target="RFC7950" format="default" sectionFormat="of" derivedContent="RFC7950"/> 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 indent="0" pn="section-1-4">This document contains a specification of the PCEP YANG module
      "ietf-pcep", which provides the PCEP <xref target="RFC5440" format="default" sectionFormat="of" derivedContent="RFC5440"/> data model. Further, this document also includes the
      PCEP statistics YANG module "ietf-pcep-stats", which provides statistics,
      counters, and telemetry data.</t>
      <t indent="0" pn="section-1-5">The YANG modules in this document conform to the Network Management
      Datastore Architecture (NMDA) <xref target="RFC8342" format="default" sectionFormat="of" derivedContent="RFC8342"/>.
      The origin of the data is indicated as per the origin metadata
      annotation.</t>
    </section>
    <section toc="include" numbered="true" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-requirements-language">Requirements Language</name>
      <t indent="0" pn="section-2-1">
    The key words "<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 "<bcp14>OPTIONAL</bcp14>" in this document are to be
    interpreted as described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
      </t>
    </section>
    <section toc="include" numbered="true" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-terminology-and-notation">Terminology and Notation</name>
      <t indent="0" pn="section-3-1">This document uses the terminology defined in <xref target="RFC4655" format="default" sectionFormat="of" derivedContent="RFC4655"/> and <xref target="RFC5440" format="default" sectionFormat="of" derivedContent="RFC5440"/>.  In
      particular, it uses the following:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-2">
        <li pn="section-3-2.1">
          <t indent="0" pn="section-3-2.1.1">Path Computation Request (PCReq) message</t>
        </li>
        <li pn="section-3-2.2">
          <t indent="0" pn="section-3-2.2.1">Path Computation Reply (PCRep) message</t>
        </li>
        <li pn="section-3-2.3">
          <t indent="0" pn="section-3-2.3.1">Path Computation Notification (PCNtf) message</t>
        </li>
        <li pn="section-3-2.4">
          <t indent="0" pn="section-3-2.4.1">Path Computation Error (PCErr) message</t>
        </li>
        <li pn="section-3-2.5">
          <t indent="0" pn="section-3-2.5.1">Request Parameters (RP) object</t>
        </li>
        <li pn="section-3-2.6">
          <t indent="0" pn="section-3-2.6.1">Synchronization Vector (SVEC) object</t>
        </li>
        <li pn="section-3-2.7">
          <t indent="0" pn="section-3-2.7.1">Explicit Route Object (ERO)</t>
        </li>
      </ul>
      <t indent="0" pn="section-3-3">This document uses the following terms defined in <xref target="RFC7420" format="default" sectionFormat="of" derivedContent="RFC7420"/>:</t>
      <dl spacing="normal" indent="3" newline="false" pn="section-3-4">
        <dt pn="section-3-4.1">PCEP entity:</dt>
        <dd pn="section-3-4.2">a local PCEP speaker</dd>
        <dt pn="section-3-4.3">PCEP peer:</dt>
        <dd pn="section-3-4.4">a remote PCEP speaker</dd>
        <dt pn="section-3-4.5">PCEP speaker:</dt>
        <dd pn="section-3-4.6">term used when it is not necessary to distinguish
        between local and remote.</dd>
      </dl>
      <t indent="0" pn="section-3-5">Further, this document uses the following terms defined in <xref target="RFC8051" format="default" sectionFormat="of" derivedContent="RFC8051"/>:</t>
      <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-3-6">
        <li pn="section-3-6.1">Stateful PCE</li>
        <li pn="section-3-6.2">Passive Stateful PCE</li>
        <li pn="section-3-6.3">Active Stateful PCE</li>
        <li pn="section-3-6.4">Delegation</li>
      </ul>
      <t indent="0" pn="section-3-7">In addition, this document uses the following terms defined in <xref target="RFC8231" format="default" sectionFormat="of" derivedContent="RFC8231"/>:</t>
      <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-3-8">
        <li pn="section-3-8.1">Revocation</li>
        <li pn="section-3-8.2">Redelegation</li>
        <li pn="section-3-8.3">Path Computation LSP State Report (PCRpt) message</li>
        <li pn="section-3-8.4">Path Computation LSP Update Request (PCUpd) message</li>
        <li pn="section-3-8.5">PLSP-ID (a PCEP-specific identifier for the LSP)</li>
        <li pn="section-3-8.6">Stateful PCE Request Parameter (SRP)</li>
      </ul>
      <t indent="0" pn="section-3-9">This document also uses the following terms defined in <xref target="RFC8281" format="default" sectionFormat="of" derivedContent="RFC8281"/>:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-10">
        <li pn="section-3-10.1">
          <t indent="0" pn="section-3-10.1.1">PCE-initiated LSP</t>
        </li>
        <li pn="section-3-10.2">
          <t indent="0" pn="section-3-10.2.1">Path Computation LSP Initiate (PCInitiate) message</t>
        </li>
      </ul>
      <t indent="0" pn="section-3-11">Last, this document uses the following terms, which are defined in the RFCs indicated below:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-12">
        <li pn="section-3-12.1">
          <t indent="0" pn="section-3-12.1.1">Path Setup Type (PST) <xref target="RFC8408" format="default" sectionFormat="of" derivedContent="RFC8408"/></t>
        </li>
        <li pn="section-3-12.2">
          <t indent="0" pn="section-3-12.2.1">Segment Routing (SR) <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/></t>
        </li>
        <li pn="section-3-12.3">
          <t indent="0" pn="section-3-12.3.1">Objective Function (OF) <xref target="RFC5541" format="default" sectionFormat="of" derivedContent="RFC5541"/></t>
        </li>
        <li pn="section-3-12.4">
          <t indent="0" pn="section-3-12.4.1">Association <xref target="RFC8697" format="default" sectionFormat="of" derivedContent="RFC8697"/></t>
        </li>
        <li pn="section-3-12.5">
          <t indent="0" pn="section-3-12.5.1">Configuration data <xref target="RFC6241" format="default" sectionFormat="of" derivedContent="RFC6241"/></t>
        </li>
        <li pn="section-3-12.6">
          <t indent="0" pn="section-3-12.6.1">State data <xref target="RFC6241" format="default" sectionFormat="of" derivedContent="RFC6241"/></t>
        </li>
      </ul>
      <section anchor="sec.tree-symbols" toc="include" numbered="true" removeInRFC="false" pn="section-3.1">
        <name slugifiedName="name-tree-diagrams">Tree Diagrams</name>
        <t indent="0" pn="section-3.1-1">Simplified graphical representations of the data model are used in
        this document.  The meaning of the symbols in these diagrams is
        defined in <xref target="RFC8340" format="default" sectionFormat="of" derivedContent="RFC8340"/>.
        </t>
      </section>
      <section toc="include" numbered="true" removeInRFC="false" pn="section-3.2">
        <name slugifiedName="name-prefixes-in-data-node-names">Prefixes in Data Node Names</name>
        <t indent="0" pn="section-3.2-1">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" format="default" sectionFormat="of" derivedContent="Table 1"/>.</t>
        <table anchor="tab.prefixes" align="center" pn="table-1">
          <name slugifiedName="name-prefixes-and-corresponding-">Prefixes and Corresponding YANG Modules</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Prefix</th>
              <th align="left" colspan="1" rowspan="1">YANG module</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">yang</td>
              <td align="left" colspan="1" rowspan="1">ietf-yang-types</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC6991" format="default" sectionFormat="of" derivedContent="RFC6991"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">inet</td>
              <td align="left" colspan="1" rowspan="1">ietf-inet-types</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC6991" format="default" sectionFormat="of" derivedContent="RFC6991"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">te-types</td>
              <td align="left" colspan="1" rowspan="1">ietf-te-types</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8776" format="default" sectionFormat="of" derivedContent="RFC8776"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">key-chain</td>
              <td align="left" colspan="1" rowspan="1">ietf-key-chain</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8177" format="default" sectionFormat="of" derivedContent="RFC8177"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">nacm</td>
              <td align="left" colspan="1" rowspan="1">ietf-netconf-acm</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8341" format="default" sectionFormat="of" derivedContent="RFC8341"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">tlss</td>
              <td align="left" colspan="1" rowspan="1">ietf-tls-server</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9645" format="default" sectionFormat="of" derivedContent="RFC9645"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">tlsc</td>
              <td align="left" colspan="1" rowspan="1">ietf-tls-client</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9645" format="default" sectionFormat="of" derivedContent="RFC9645"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">ospf</td>
              <td align="left" colspan="1" rowspan="1">ietf-ospf</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9129" format="default" sectionFormat="of" derivedContent="RFC9129"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">isis</td>
              <td align="left" colspan="1" rowspan="1">ietf-isis</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9130" format="default" sectionFormat="of" derivedContent="RFC9130"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section toc="include" numbered="true" removeInRFC="false" pn="section-3.3">
        <name slugifiedName="name-references-in-the-yang-data">References in the YANG Data Model</name>
        <t indent="0" pn="section-3.3-1">The following table lists the documents that are referenced in the
	YANG data model defined in this document.</t>
        <table anchor="tab.ref" align="center" pn="table-2">
          <name slugifiedName="name-references-in-the-yang-data-">References in the YANG Data Model</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Documents</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">OSPF Protocol Extensions for Path Computation Element (PCE) Discovery</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC5088" format="default" sectionFormat="of" derivedContent="RFC5088"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">IS-IS Protocol Extensions for Path Computation Element (PCE) Discovery</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC5089" format="default" sectionFormat="of" derivedContent="RFC5089"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Path Computation Element (PCE) Communication Protocol (PCEP)</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC5440" format="default" sectionFormat="of" derivedContent="RFC5440"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Preserving Topology Confidentiality in Inter-Domain Path Computation Using a Path-Key-Based Mechanism</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC5520" format="default" sectionFormat="of" derivedContent="RFC5520"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Encoding of Objective Functions in the Path Computation Element Communication Protocol (PCEP)</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC5541" format="default" sectionFormat="of" derivedContent="RFC5541"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Path Computation Element Communication Protocol (PCEP) Requirements and Protocol Extensions in Support of Global Concurrent Optimization</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC5557" format="default" sectionFormat="of" derivedContent="RFC5557"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Common YANG Data Types</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC6991" format="default" sectionFormat="of" derivedContent="RFC6991"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">YANG Data Model for Key Chains</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8177" format="default" sectionFormat="of" derivedContent="RFC8177"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8231" format="default" sectionFormat="of" derivedContent="RFC8231"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8232" format="default" sectionFormat="of" derivedContent="RFC8232"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">PCEPS: Usage of TLS to Provide a Secure Transport for the Path Computation Element Communication Protocol (PCEP)</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8253" format="default" sectionFormat="of" derivedContent="RFC8253"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Path Computation Element Communication Protocol (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful PCE Model</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8281" format="default" sectionFormat="of" derivedContent="RFC8281"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Extensions to the Path Computation Element Communication Protocol (PCEP) for Point-to-Multipoint Traffic Engineering Label Switched Paths</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8306" format="default" sectionFormat="of" derivedContent="RFC8306"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Network Configuration Access Control Model</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8341" format="default" sectionFormat="of" derivedContent="RFC8341"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Conveying Path Setup Type in PCE Communication Protocol (PCEP) Messages</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8408" format="default" sectionFormat="of" derivedContent="RFC8408"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Common YANG Data Types for Traffic Engineering</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8776" format="default" sectionFormat="of" derivedContent="RFC8776"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">YANG Groupings for TLS Clients and TLS Servers</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9645" format="default" sectionFormat="of" derivedContent="RFC9645"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Path Computation Element Communication Protocol (PCEP) Extensions for Segment Routing</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Path Computation Element Communication Protocol (PCEP) Extensions for Establishing Relationships between Sets of Label Switched Paths (LSPs)</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8697" format="default" sectionFormat="of" derivedContent="RFC8697"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">YANG Data Model for the OSPF Protocol</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9129" format="default" sectionFormat="of" derivedContent="RFC9129"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">YANG Data Model for the IS-IS Protocol</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9130" format="default" sectionFormat="of" derivedContent="RFC9130"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Path Computation Element Communication
              Protocol (PCEP) Extensions for GMPLS</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8779" format="default" sectionFormat="of" derivedContent="RFC8779"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">"ASSOCIATION Type Field" registry (in the "Path Computation Element Protocol (PCEP) Numbers" registry group)</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="IANA-PCEP" format="default" sectionFormat="of" derivedContent="IANA-PCEP"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">"Path Computation Element (PCE) Capability Flags" registry (in the "Interior Gateway Protocol (IGP) Parameters" registry group)</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="IANA-IGP" format="default" sectionFormat="of" derivedContent="IANA-IGP"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Path Computation Element Communication Protocol (PCEP) Extension for Flow Specification</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9168" format="default" sectionFormat="of" derivedContent="RFC9168"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Path Computation Element Communication Protocol (PCEP) Extensions for the Hierarchical Path Computation Element (H-PCE) Architecture</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8685" format="default" sectionFormat="of" derivedContent="RFC8685"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Hierarchical Stateful Path Computation Element (PCE)</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8751" format="default" sectionFormat="of" derivedContent="RFC8751"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">IGP Extension for Path Computation Element Communication Protocol (PCEP) Security Capability Support in PCE Discovery (PCED)</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9353" format="default" sectionFormat="of" derivedContent="RFC9353"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Stateful Path Computation Element (PCE) Protocol Extensions for Usage with Point-to-Multipoint TE Label Switched Paths (LSPs)</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8623" format="default" sectionFormat="of" derivedContent="RFC8623"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">The TCP Authentication Option</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC5925" format="default" sectionFormat="of" derivedContent="RFC5925"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Path Computation Element Communication Protocol (PCEP) Extensions for Associating Working and Protection Label Switched Paths (LSPs) with Stateful PCE</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8745" format="default" sectionFormat="of" derivedContent="RFC8745"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Path Computation Element Communication Protocol (PCEP) Extension for Label Switched Path (LSP) Diversity Constraint Signaling</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8800" format="default" sectionFormat="of" derivedContent="RFC8800"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Path Computation Element Communication Protocol (PCEP) Extensions for Establishing Relationships between Sets of Label Switched Paths and Virtual Networks</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9358" format="default" sectionFormat="of" derivedContent="RFC9358"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Extensions to the Path Computation Element Communication Protocol (PCEP) for Inter-Layer MPLS and GMPLS Traffic Engineering</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8282" format="default" sectionFormat="of" derivedContent="RFC8282"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Path Computation Element Communication Protocol (PCEP) Extension for Associating Policies and Label Switched Paths (LSPs)</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9005" format="default" sectionFormat="of" derivedContent="RFC9005"/></td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section toc="include" anchor="sec.data-tree" numbered="true" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-the-design-of-pcep-data-mod">The Design of PCEP Data Model</name>
      <t indent="0" pn="section-4-1">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.
      </t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4-2">
        <li pn="section-4-2.1">
          <t indent="0" pn="section-4-2.1.1">The local PCEP entity</t>
        </li>
        <li pn="section-4-2.2">
          <t indent="0" pn="section-4-2.2.1">The PCEP peer</t>
        </li>
        <li pn="section-4-2.3">
          <t indent="0" pn="section-4-2.3.1">The PCEP session</t>
        </li>
        <li pn="section-4-2.4">
          <t indent="0" pn="section-4-2.4.1">Notifications</t>
        </li>
        <li pn="section-4-2.5">
          <t indent="0" pn="section-4-2.5.1">RPC</t>
        </li>
      </ul>
      <sourcecode name="" type="yangtree" markers="false" pn="section-4-3">
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 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    -&gt; /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
       +--...
</sourcecode>
      <section toc="include" numbered="true" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-the-entity">The Entity</name>
        <t indent="0" pn="section-4.1-1">The PCEP YANG module may contain status information for the local
        PCEP entity.</t>
        <t indent="0" pn="section-4.1-2">The entity has an IP address (using ietf-inet-types <xref target="RFC6991" format="default" sectionFormat="of" derivedContent="RFC6991"/>) and a "role" leaf (the local
        entity PCEP role) as mandatory. </t>
        <t indent="0" pn="section-4.1-3">Note that the PCEP MIB module <xref target="RFC7420" format="default" sectionFormat="of" derivedContent="RFC7420"/> uses an entity list and a system-generated entity
        index as a primary index to the read-only entity table.</t>
        <t indent="0" pn="section-4.1-4">The local PCEP entity contains various information related to this
        entity such as its domain, capabilities, security parameters, etc. When
        the local entity is PCE, it could also have path-key and the LSP Database (LSP-DB)
        information.</t>
        <t indent="0" pn="section-4.1-5">Note that the timer names in YANG use hyphens as compared to
        <xref target="RFC5440" format="default" sectionFormat="of" derivedContent="RFC5440"/> (for example, DeadTimer in
        the protocol specification is called dead-timer in YANG).</t>
        <sourcecode name="" type="yangtree" markers="false" pn="section-4.1-6">
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 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    -&gt; /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?      -&gt; /pcep/entity/peers/peer/addr
        |     |  +--ro srp-id?    uint32
        |     +--ro initiation {pce-initiated}?
        |     |  +--ro enabled?   boolean
        |     |  +--ro peer?      -&gt; /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
        |        |       -&gt; /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 (type)?
        |     |        +--:(numbered-node-hop)
        |     |        |  +--ro numbered-node-hop
        |     |        |     +--ro node-id     te-node-id
        |     |        |     +--ro hop-type?   te-hop-type
        |     |        +--:(numbered-link-hop)
        |     |        |  +--ro numbered-link-hop
        |     |        |     +--ro link-tp-id    te-tp-id
        |     |        |     +--ro hop-type?     te-hop-type
        |     |        |     +--ro direction?    te-link-direction
        |     |        +--:(unnumbered-link-hop)
        |     |        |  +--ro unnumbered-link-hop
        |     |        |     +--ro link-tp-id    te-tp-id
        |     |        |     +--ro node-id       te-node-id
        |     |        |     +--ro hop-type?     te-hop-type
        |     |        |     +--ro direction?    te-link-direction
        |     |        +--:(as-number)
        |     |        |  +--ro as-number-hop
        |     |        |     +--ro as-number    inet:as-number
        |     |        |     +--ro hop-type?    te-hop-type
        |     |        +--:(label)
        |     |           +--ro label-hop
        |     |              +--ro te-label
        |     |                    ...
        |     +--ro pcc-requester?   -&gt; /pcep/entity/peers/peer/addr
        |     +--ro req-id?          uint32
        |     +--ro retrieved?       boolean
        |     +--ro pcc-retrieved?   -&gt; /pcep/entity/peers/peer/addr
        |     +--ro creation-time?   yang:timestamp
        |     +--ro discard-time?    uint32
        |     +--ro reuse-time?      uint32
        +--rw peers
           +--rw peer* [addr]
              +--...
</sourcecode>
        <section toc="include" numbered="true" removeInRFC="false" pn="section-4.1.1">
          <name slugifiedName="name-the-peer-list">The Peer List</name>
          <t indent="0" pn="section-4.1.1-1">
          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, then
          it looks like multiple distinct peers to the other PCEP speakers in
          the network.
          </t>
          <t indent="0" pn="section-4.1.1-2">
          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 indent="0" pn="section-4.1.1-3">
          To limit the quantity of information that is stored, an
          implementation <bcp14>MAY</bcp14> choose to discard this information
          if and only if no PCEP session exists for the corresponding peer.
          </t>
          <t indent="0" pn="section-4.1.1-4">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 indent="0" pn="section-4.1.1-5">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, 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>
          <sourcecode name="" type="yangtree" markers="false" pn="section-4.1.1-6">
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 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]
                    +--...
</sourcecode>
          <section toc="include" numbered="true" removeInRFC="false" pn="section-4.1.1.1">
            <name slugifiedName="name-the-session-list">The Session List</name>
            <t indent="0" pn="section-4.1.1.1-1">
          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 indent="0" pn="section-4.1.1.1-2">
          Although <xref target="RFC5440" format="default" sectionFormat="of" derivedContent="RFC5440"/> 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 indent="0" pn="section-4.1.1.1-3">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>
            <sourcecode name="" type="yangtree" markers="false" pn="section-4.1.1.1-4">
module: ietf-pcep
  +--rw pcep!
     +--rw entity
        +--...
        +--rw peers
           +--rw peer* [addr]
              +--...
              +--ro sessions
                 +--ro session* [initiator]
                    +--ro initiator                    initiator
                    +--ro role?
                    |       -&gt; ../../../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}?
</sourcecode>
          </section>
        </section>
      </section>
      <section toc="include" numbered="true" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-notifications">Notifications</name>
        <t indent="0" pn="section-4.2-1">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" format="default" sectionFormat="of" derivedContent="RFC7420"/> notifications.</t>
        <sourcecode name="" type="yangtree" markers="false" pn="section-4.2-2">
  notifications:
    +---n pcep-session-up
    |  +--ro peer-addr?           -&gt; /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?           -&gt; /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?              -&gt; /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?
    |  |       -&gt; /pcep/entity/peers/peer/addr
    |  +--ro overloaded?                   boolean
    |  +--ro overloaded-clear-timestamp?   yang:timestamp
    +---n pcep-session-peer-overload
    |  +--ro peer-addr?
    |  |       -&gt; /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?
       |       -&gt; /pcep/entity/peers/peer/addr
       +--ro peer-overloaded?                   boolean
       +--ro peer-overloaded-clear-timestamp?   yang:timestamp
</sourcecode>
      </section>
      <section toc="include" numbered="true" removeInRFC="false" pn="section-4.3">
        <name slugifiedName="name-rpc">RPC</name>
        <t indent="0" pn="section-4.3-1">This YANG data model defines an RPC to trigger state resynchronization at the
        PCE for a sanity check with a particular PCC.</t>
        <sourcecode name="" type="yangtree" markers="false" pn="section-4.3-2">
  rpcs:
    +---x trigger-resync {stateful,sync-opt}?
       +---w input
          +---w pcc    -&gt; /pcep/entity/peers/peer/addr
</sourcecode>
      </section>
    </section>
    <section toc="include" anchor="sec.data-tree-stat" numbered="true" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-the-design-of-pcep-statisti">The Design of PCEP Statistics Data Model</name>
      <t indent="0" pn="section-5-1">The "ietf-pcep-stats" module augments the "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 statistics.</t>
      <t indent="0" pn="section-5-2">If this mechanism is not supported, implementations must reset PCEP statistics by invoking the action 'reset-statistics' for each peer and session.
      </t>
      <sourcecode name="" type="yangtree" markers="false" pn="section-5-3">
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}?
</sourcecode>
    </section>
    <section toc="include" numbered="true" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-advanced-pce-features">Advanced PCE Features</name>
      <t indent="0" pn="section-6-1">This document contains a specification of the base PCEP YANG module,
      "ietf-pcep", which provides the basic PCEP <xref target="RFC5440" format="default" sectionFormat="of" derivedContent="RFC5440"/> data model.</t>
      <t indent="0" pn="section-6-2">This document further handles advanced PCE features such as:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6-3">
        <li pn="section-6-3.1">
          <t indent="0" pn="section-6-3.1.1">Capability and scope</t>
        </li>
        <li pn="section-6-3.2">
          <t indent="0" pn="section-6-3.2.1">Domain information (local/neighbor) </t>
        </li>
        <li pn="section-6-3.3">
          <t indent="0" pn="section-6-3.3.1">Path-key</t>
        </li>
        <li pn="section-6-3.4">
          <t indent="0" pn="section-6-3.4.1">Objective Function (OF)</t>
        </li>
        <li pn="section-6-3.5">
          <t indent="0" pn="section-6-3.5.1">Global Concurrent Optimization (GCO)</t>
        </li>
        <li pn="section-6-3.6">
          <t indent="0" pn="section-6-3.6.1">Point-to-Multipoint (P2MP)</t>
        </li>
        <li pn="section-6-3.7">
          <t indent="0" pn="section-6-3.7.1">GMPLS</t>
        </li>
        <li pn="section-6-3.8">
          <t indent="0" pn="section-6-3.8.1">Inter-layer</t>
        </li>
        <li pn="section-6-3.9">
          <t indent="0" pn="section-6-3.9.1">Stateful PCE</t>
        </li>
        <li pn="section-6-3.10">
          <t indent="0" pn="section-6-3.10.1">Segment Routing (SR) for the MPLS data plane</t>
        </li>
        <li pn="section-6-3.11">
          <t indent="0" pn="section-6-3.11.1">Authentication including PCEPS (TLS)</t>
        </li>
        <li pn="section-6-3.12">
          <t indent="0" pn="section-6-3.12.1">Hierarchical PCE (H-PCE)</t>
        </li>
      </ul>
      <t indent="0" pn="section-6-4">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" format="default" sectionFormat="of" derivedContent="YANG-PCEP-SRV6"/> for the PCEP-SRv6 YANG module.</t>
      <section toc="include" numbered="true" removeInRFC="false" pn="section-6.1">
        <name slugifiedName="name-stateful-pces-lsp-db">Stateful PCE's LSP-DB</name>
        <t indent="0" pn="section-6.1-1">In the operational datastore of stateful PCE, the list of LSP state
        is maintained in the LSP-DB. The key is the PLSP-ID, the PCC's IP
        address, and the LSP-ID.</t>
        <t indent="0" pn="section-6.1-2">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" format="default" sectionFormat="of" derivedContent="YANG-TE"/>. A reference to the
        LSP state in the TE model is maintained.</t>
      </section>
    </section>
    <section toc="include" numbered="true" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-other-considerations">Other Considerations</name>
      <section toc="include" anchor="tls" numbered="true" removeInRFC="false" pn="section-7.1">
        <name slugifiedName="name-pcep-over-tls-pceps">PCEP over TLS (PCEPS)</name>
        <t indent="0" pn="section-7.1-1"><xref target="RFC8253" format="default" sectionFormat="of" derivedContent="RFC8253"/> describes the use of
        TLS 1.2 <xref target="RFC5246" format="default" sectionFormat="of" derivedContent="RFC5246"/> or later in
        PCEP. Further, <xref target="I-D.ietf-pce-pceps-tls13" format="default" sectionFormat="of" derivedContent="PCEPS-UPDATE"/> specifies how to protect PCEP messages with TLS 1.3
        <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/> 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 indent="0" pn="section-7.1-2">The PCC acting as the TLS client opens the TLS connection, and the
        PCE acting as the TLS server listens for incoming connections as per the
        TLS specifications (<xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/> and
        <xref target="RFC5246" format="default" sectionFormat="of" derivedContent="RFC5246"/>). <xref target="RFC8253" format="default" sectionFormat="of" derivedContent="RFC8253"/> specifies the StartTLS procedure in PCEP that
        initiates the TLS connection before exchanging PCEP messages; thus, the
        identity verification is completed before the PCEP session is
        established.</t>
        <t indent="0" pn="section-7.1-3">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 is true
        for TLS as well).</t>
        <t indent="0" pn="section-7.1-4">The YANG module uses the TLS grouping in <xref target="RFC9645" format="default" sectionFormat="of" derivedContent="RFC9645"/>.  Note that any TLS version can be configured, but
        <xref target="RFC9645" format="default" sectionFormat="of" derivedContent="RFC9645"/> 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 toc="include" numbered="true" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-pcep-yang-modules">PCEP YANG Modules</name>
      <section toc="include" numbered="true" removeInRFC="false" pn="section-8.1">
        <name slugifiedName="name-ietf-pcep-module">ietf-pcep Module</name>
        <sourcecode name="ietf-pcep@2025-09-12.yang" type="yang" markers="true" pn="section-8.1-1">
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 Access Control Model";
  }
  import ietf-tls-server {
    prefix tlss;
    reference
      "RFC 9645: YANG Groupings for TLS Clients and TLS Servers";
  }
  import ietf-tls-client {
    prefix tlsc;
    reference
      "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:  &lt;https://datatracker.ietf.org/wg/pce/&gt;
     WG List:  &lt;mailto:pce@ietf.org&gt;
     Editor:   Dhruv Dhody
              &lt;mailto:dhruv.ietf@gmail.com&gt;";
  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 9826; see the
     RFC itself for full legal notices.";

  revision 2025-09-12 {
    description
      "Initial revision.";
    reference
      "RFC 9826: A YANG Data Model for the Path Computation
       Element Communication Protocol (PCEP)";
  }

  /*
   * Typedefs
   */

  typedef role {
    type enumeration {
      enum unknown {
        value 0;
        description
          "An unknown role.";
      }
      enum pcc {
        value 1;
        description
          "The role of a Path Computation Client (PCC).";
      }
      enum pce {
        value 2;
        description
          "The role of a Path Computation Element (PCE).";
      }
      enum pcc-and-pce {
        value 3;
        description
          "The role of both Path Computation Client (PCC) and
           Path Computation Element (PCE).";
      }
    }
    description
      "The role of a PCEP speaker.
       Takes one of the following values:
       - unknown(0): the role is not known,
       - pcc(1): the role is of a Path Computation
        Client (PCC),
       - pce(2): the role is of a Path Computation
        Element (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.";
      }
      enum oper-status-down {
        value 2;
        description
          "The PCEP entity is inactive.";
      }
      enum oper-status-going-up {
        value 3;
        description
          "The PCEP entity is activating.";
      }
      enum oper-status-going-down {
        value 4;
        description
          "The PCEP entity is deactivating.";
      }
      enum oper-status-failed {
        value 5;
        description
          "The PCEP entity has failed and will recover
           when possible.";
      }
      enum oper-status-failed-perm {
        value 6;
        description
          "The PCEP entity has failed and will not recover
           without operator intervention.";
      }
    }
    description
      "The operational status of the PCEP entity.
       Takes one of the following values:
       - oper-status-up(1): Active,
       - oper-status-down(2): Inactive,
       - oper-status-going-up(3): Activating,
       - oper-status-going-down(4): Deactivating,
       - oper-status-failed(5): Failed,
       - oper-status-failed-perm(6): Failed 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.";
      }
      enum remote {
        value 2;
        description
          "The remote PCEP peer initiated the session.";
      }
    }
    description
      "The initiator of the session, that is, whether the TCP
       connection was initiated by the local PCEP entity or
       the remote peer.
       Takes one of the following values:
       - local(1): Initiated locally,
       - remote(2): Initiated remotely.";
  }

  typedef 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.";
  }

  typedef operational-state {
    type enumeration {
      enum down {
        value 0;
        description
          "Not active.";
      }
      enum up {
        value 1;
        description
          "Signaled.";
      }
      enum active {
        value 2;
        description
          "Up and carrying traffic.";
      }
      enum going-down {
        value 3;
        description
          "LSP is being torn down; resources are
           being released.";
      }
      enum going-up {
        value 4;
        description
          "LSP is being signaled.";
      }
    }
    description
      "The operational status of the LSP.";
    reference
      "RFC 8231: Path Computation Element Communication Protocol
       (PCEP) Extensions for Stateful PCE";
  }

  typedef sync-state {
    type enumeration {
      enum pending {
        value 0;
        description
          "The state synchronization
           has not started.";
      }
      enum ongoing {
        value 1;
        description
          "The state synchronization
           is ongoing.";
      }
      enum finished {
        value 2;
        description
          "The state synchronization
           is finished.";
      }
    }
    description
      "The LSP-DB state synchronization operational
       status.";
    reference
      "RFC 8231: Path Computation Element Communication Protocol
       (PCEP) Extensions for Stateful PCE";
  }

  typedef hpce-role {
    type enumeration {
      enum unknown {
        value 0;
        description
          "An unknown 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: 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 PCE as per RFC 8231.";
    reference
      "RFC 8231: Path Computation Element Communication Protocol
       (PCEP) Extensions for Stateful PCE";
  }

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

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

  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 (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 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 for 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.";
    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; 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.";
    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.";
    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.";
    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.";
    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 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.";
    }
  }

  grouping domain-info {
    description
      "This grouping specifies all information 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.";
            reference
              "RFC 9168: Path Computation Element Communication
               Protocol (PCEP) Extension for Flow Specification";
          }
          bit tcp-ao {
            description
              "Support for the TCP Authentication Option
               (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.";
            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.";
        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.";
        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 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.";
        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) 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.";
        }
        leaf no-msd-limit {
          type boolean;
          default "false";
          description
            "True indicates no limit on Maximum SID Depth (MSD); the
             leaf msd is ignored.";
        }
        leaf nai {
          type boolean;
          default "false";
          description
            "True indicates the capability to resolve Node or
             Adjacency Identifier (NAI) to Segment
             Identifier (SID).";
        }
      }
      container stateful-gmpls {
        if-feature "stateful";
        if-feature "gmpls";
        description
          "If stateful GMPLS is supported for a local entity
           or a peer.";
        reference
          "RFC 8779: Path Computation Element Communication Protocol
           (PCEP) Extensions for GMPLS";
        leaf enabled {
          type boolean;
          default "false";
          description
            "Set to true if stateful GMPLS is 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.";
        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.";
        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.";
        }
        leaf stateful {
          if-feature "stateful";
          type boolean;
          default "false";
          description
            "Set to true if stateful H-PCE is 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., the label stack
         depth that a PCC is capable of imposing on a packet).";
      reference
        "RFC 8664: Path Computation Element Communication Protocol
         (PCEP) Extensions for Segment Routing";
    }
  }

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

  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.";
    }
  }

  grouping of-list {
    description
      "List of Objective Functions (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.";
      leaf of {
        type identityref {
          base te-types:objective-function-type;
        }
        description
          "The OF authorized.";
      }
    }
  }

  grouping auth {
    description
      "The authentication options.";
    container auth {
      description
        "The 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 name.";
          }
        }
        case auth-key {
          leaf crypto-algorithm {
            type identityref {
              base key-chain:crypto-algorithm;
            }
            mandatory true;
            description
              "Cryptographic algorithm associated
               with key.";
          }
          choice key-string-style {
            description
              "Key string styles.";
            case keystring {
              leaf keystring {
                nacm:default-deny-all;
                type string;
                description
                  "Key string in ASCII format.";
              }
            }
            case hexadecimal {
              if-feature "key-chain:hex-key-string";
              leaf hexadecimal-string {
                nacm:default-deny-all;
                type yang:hex-string;
                description
                  "Key in hexadecimal string format.  When
                   compared to ASCII, specification in
                   hexadecimal affords greater key entropy
                   with the same number of internal
                   key-string octets.  Additionally, it
                   discourages usage of well-known words or
                   numbers.";
              }
            }
          }
        }
        case auth-tls {
          if-feature "tls";
          choice role {
            description
              "The role of the local entity.";
            case server {
              container tls-server {
                uses tlss:tls-server-grouping {
                  description
                    "Server TLS information.";
                }
                description
                  "TLS-related information.";
              }
            }
            case client {
              container tls-client {
                uses tlsc:tls-client-grouping {
                  description
                    "Client TLS information.";
                }
                description
                  "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 as both a
           PCC and a PCE server, in which case it uses this
           address both to listen for incoming TCP connections
           and to bind outgoing TCP connections.";
      }
      leaf enabled {
        type boolean;
        default "true";
        description
          "The administrative status of this PCEP
           entity; 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 is a PCC,
           - pce(2): this PCEP entity is a PCE,
           - pcc-and-pce(3): this PCEP entity is both
           a PCC and a PCE.";
      }
      leaf description {
        type string;
        description
          "Description of the PCEP entity configured
           by the user.";
      }
      leaf speaker-entity-id {
        if-feature "sync-opt";
        type string;
        description
          "The Speaker Entity Identifier.";
        reference
          "RFC 8232: Optimizations of Label Switched
           Path State  Synchronization Procedures for
           a Stateful PCE";
      }
      leaf admin-status {
        type boolean;
        default "true";
        description
          "The administrative status of this PCEP entity.
           The value true represents admin status as up.
           This is the desired operational status as
           currently set by an operator or by default in
           the implementation.  The value of oper-status
           represents the current status of an attempt to
           reach this desired status.";
      }
      leaf index {
        type uint32;
        config false;
        description
          "The index of the operational PECP entity.";
      }
      leaf oper-status {
        type 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.";
      }
      uses auth {
        description
          "Local authorization and security 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 PCE entity PCE information.";
        uses pce-info {
          description
            "Local PCE information.";
        }
        container path-key {
          if-feature "path-key";
          description
            "Path-key configuration.";
          reference
            "RFC 5520: Preserving Topology Confidentiality in
             Inter-Domain Path Computation Using a Path-Key-
             Based Mechanism";
          leaf enabled {
            type boolean;
            default "false";
            description
              "Enabled or disabled; set to true when enabled.";
          }
          leaf discard-timer {
            type uint32;
            units "minutes";
            default "10";
            description
              "A timer to discard unwanted 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.";
          }
          leaf pce-id {
            type inet:ip-address-no-zone;
            description
              "PCE address to be used in each Path-Key Subobject
               (PKS), same as local PCE entity IP 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,
           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, 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, 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 and 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 '(. &gt; ../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 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 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 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, 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 or may queue them until an
           appropriate time.  A value of 0 means no
           notifications are emitted and all should be
           discarded (that is, not queued).";
      }
      container stateful-parameter {
        if-feature "stateful";
        description
          "The configured stateful PCE parameters.";
        leaf state-timeout {
          type uint32;
          units "seconds";
          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 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.";
          }
          type uint32;
          units "seconds";
          must '(. &lt; ../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.";
          }
          type boolean;
          default "true";
          description
            "If set, a PCC reports LSPs that are not
             controlled by any PCE (for example, LSPs
             that are statically configured at the
             PCC).";
        }
        reference
          "RFC 8231: Path Computation Element Communication Protocol
           (PCEP) Extensions for Stateful PCE";
      }
      container of-list {
        when "../role = 'pce'"
           + "or "
           + "../role = 'pcc-and-pce'" {
          description
            "These fields are applicable when the role is
             PCE.";
        }
        if-feature "objective-function";
        uses of-list;
        description
          "The authorized OF-List at PCE for all peers.";
      }
      container lsp-db {
        if-feature "stateful";
        config false;
        description
          "The LSP-DB.";
        leaf db-ver {
          when "../../role = 'pcc'"
             + "or "
             + "../../role = 'pcc-and-pce'" {
            description
              "This field is applicable when the role is
               PCC.";
          }
          if-feature "sync-opt";
          type uint64;
          description
            "The LSP State Database Version Number.";
        }
        list association-list {
          if-feature "association";
          key "type id source global-source extended-id";
          description
            "List of all PCEP associations.";
          reference
            "RFC 8697: Path Computation Element Communication
             Protocol (PCEP) Extensions for Establishing
             Relationships between Sets of Label Switched
             Paths (LSPs)";
          leaf type {
            type identityref {
              base te-types:association-type;
            }
            description
              "The PCEP Association Type.";
            reference
              "IANA PCEP: ASSOCIATION Type Field in Path
               Computation Element Protocol (PCEP) Numbers
               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.";
          }
          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.";
            leaf plsp-id {
              type leafref {
                path "/pcep/entity/lsp-db/"
                   + "lsp/plsp-id";
              }
              description
                "Reference to PLSP-ID in 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.";
            }
            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 in LSP-DB.";
            }
          }
        }
        list lsp {
          key "plsp-id pcc-id lsp-id";
          description
            "List of all LSPs in 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
               reserved.";
          }
          leaf pcc-id {
            type inet:ip-address-no-zone;
            description
              "The local IP address of the PCC that
               generated the PLSP-ID.";
          }
          leaf source {
            type inet:ip-address-no-zone;
            description
              "Tunnel sender address extracted from
               LSP-IDENTIFIERS 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.";
            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 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.";
          }
          leaf operational-state {
            type operational-state;
            description
              "The operational status of the LSP.";
          }
          container delegated {
            description
              "The delegation-related parameters.";
            leaf enabled {
              type boolean;
              default "false";
              description
                "LSP is delegated or not; set to true when
                 delegated.";
            }
            leaf peer {
              when '../enabled' {
                description
                  "The LSP must be 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 the PCE, the
                 reference to the PCEP peer that delegated this
                 LSP.";
            }
            leaf srp-id {
              type uint32 {
                range "1..4294967294";
              }
              description
                "The last SRP-ID-number associated with this
                 LSP.  The values 0x00000000 and 0xFFFFFFFF
                 are reserved.";
            }
          }
          container initiation {
            if-feature "pce-initiated";
            description
              "The parameters related 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.";
            }
            leaf peer {
              when '../enabled' {
                description
                  "The LSP must be 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.";
            }
          }
          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.";
            reference
              "RFC 8408: Conveying Path Setup Type in PCE
               Communication Protocol (PCEP) Messages";
          }
          list association-list {
            if-feature "association";
            key "type id source global-source extended-id";
            description
              "List of all PCEP associations.";
            leaf type {
              type leafref {
                path "/pcep/entity/lsp-db/"
                   + "association-list/type";
              }
              description
                "PCEP Association Type.";
            }
            leaf id {
              type leafref {
                path "/pcep/entity/lsp-db/"
                   + "association-list[type=current()/"
                   + "../type]/id";
              }
              description
                "PCEP Association 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.";
        }
        if-feature "path-key";
        config false;
        description
          "The path-keys generated by the PCE.";
        reference
          "RFC 5520: Preserving Topology Confidentiality
           in Inter-Domain Path Computation Using a Path-
           Key-Based Mechanism";
        list path-key {
          key "key";
          description
            "The list of path-keys generated by the PCE.";
          leaf key {
            type uint16;
            description
              "The identifier or token used to represent
               the Confidential Path Segment (CPS) within
               the context of the PCE.";
          }
          container cps {
            description
              "The Confidential Path Segment (CPS).";
            list explicit-route-objects {
              key "index";
              description
                "List of Explicit Route Objects (EROs).";
              leaf index {
                type uint32;
                description
                  "ERO subobject 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.";
          }
          leaf pcc-retrieved {
            when '../retrieved' {
              description
                "The path-key should be retrieved.";
            }
            type leafref {
              path "/pcep/entity/peers/peer/addr";
            }
            description
              "Reference to PCC peer address that
               retrieved the path-key.";
          }
          leaf creation-time {
            type yang:timestamp;
            description
              "The timestamp value at the time this path-key
               was created.";
          }
          leaf discard-time {
            type uint32;
            units "minutes";
            description
              "A time after which this path-key will be
               discarded.";
          }
          leaf reuse-time {
            type uint32;
            units "minutes";
            description
              "A time after which this path-key could be
               reused.";
          }
        }
      }
      container peers {
        description
          "The list of configured peers for the
           entity (remote PCE).";
        list peer {
          key "addr";
          description
            "The peer configured for the entity.
             (remote 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.
               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 same time.";
          }
          leaf description {
            type string;
            description
              "Description of the PCEP peer
               configured by the user.";
          }
          uses domain-info {
            description
              "PCE peer information.";
          }
          container pce-info {
            uses pce-info {
              description
                "Using the PCE peer information grouping.";
            }
            description
              "The PCE peer information.";
          }
          leaf delegation-pref {
            if-feature "stateful";
            type uint8 {
              range "0..7";
            }
            mandatory true;
            description
              "The PCE peer delegation preference, where
               7 reflects the highest preference.";
          }
          uses auth {
            description
              "The PCE peer authorization and security
               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 or 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; note that for a time being
                 two sessions may exist for a 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,
                   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, 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, 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, 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.";
                }
                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 is overloaded.";
                }
                type yang:timestamp;
                description
                  "The timestamp value of the time when the
                   peer-overloaded field was set to true.";
              }
              leaf peer-overload-time {
                type uint32;
                units "seconds";
                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.";
                }
                if-feature "stateful";
                if-feature "sync-opt";
                type uint64;
                description
                  "The last received LSP State Database Version
                   Number.";
                reference
                  "RFC 8231: Path Computation Element Communication
                   Protocol (PCEP) Extensions for Stateful PCE";
              }
              container of-list {
                when "../role = 'pce'"
                   + "or "
                   + "../role = 'pcc-and-pce'" {
                  description
                    "These fields are applicable when the role is
                     PCE.";
                }
                if-feature "objective-function";
                uses of-list;
                description
                  "Indicate the list of supported OF on this
                   session.";
                reference
                  "RFC 5541: Encoding of Objective Functions in
                   the Path  Computation Element Communication
                   Protocol (PCEP)";
              }
              container pst-list {
                when "../role = 'pce'"
                   + "or "
                   + "../role = 'pcc-and-pce'" {
                  description
                    "These fields are applicable when the role is
                     PCE.";
                }
                description
                  "Indicate the list of supported
                   PST on this session.";
                reference
                  "RFC 8408: Conveying Path Setup Type in PCE
                   Communication Protocol (PCEP) Messages";
                list path-setup-type {
                  key "pst";
                  description
                    "The list of PST.";
                  leaf pst {
                    type identityref {
                      base te-types:path-signaling-type;
                    }
                    description
                      "The PST supported.";
                  }
                }
              }
              container assoc-type-list {
                if-feature "association";
                description
                  "Indicate the list of supported association types
                   on this session.";
                reference
                  "RFC 8697: Path Computation Element Communication
                   Protocol (PCEP) Extensions for Establishing
                   Relationships between Sets of Label Switched
                   Paths (LSPs)";
                list assoc-type {
                  key "at";
                  description
                    "The list of authorized association types.";
                  leaf at {
                    type identityref {
                      base te-types:association-type;
                    }
                    description
                      "The association type authorized.";
                  }
                }
              }
              leaf speaker-entity-id {
                if-feature "sync-opt";
                type string;
                description
                  "The Speaker Entity Identifier.";
                reference
                  "RFC 8232: Optimizations of Label Switched
                   Path State  Synchronization Procedures for
                   a Stateful PCE";
              }
            }
          }
        }
      }
    }
  }

  /*
   * 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.";
    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
           synchronization is re-triggered for all LSPs from
           the PCC.  The rpc on the PCC will be ignored.";
      }
    }
  }
}
</sourcecode>
      </section>
      <section toc="include" numbered="true" removeInRFC="false" pn="section-8.2">
        <name slugifiedName="name-ietf-pcep-stats-module">ietf-pcep-stats Module</name>
        <sourcecode name="ietf-pcep-stats@2025-09-12.yang" type="yang" markers="true" pn="section-8.2-1">
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 9826: A YANG Data Model for the Path Computation
       Element 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:  &lt;https://datatracker.ietf.org/wg/pce/&gt;
     WG List:  &lt;mailto:pce@ietf.org&gt;
     Editor:   Dhruv Dhody
              &lt;mailto:dhruv.ietf@gmail.com&gt;";
  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 9826; see the
     RFC itself for full legal notices.";

  revision 2025-09-12 {
    description
      "Initial revision.";
    reference
      "RFC 9826: A YANG Data Model for the Path Computation
       Element 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 grouping
       includes a relative path, care needs to be taken while
       using 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 as PCE.";
      }
      leaf rsp-time-avg {
        type uint32;
        units "milliseconds";
        description
          "The average response time.  If an average response time
           has not been 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, 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, 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.";
    }
    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 as 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.";
    }
    container svec {
      if-feature "pcep:svec";
      description
        "If synchronized path computation is supported.";
      container pce {
        when "../../../pcep:role = 'pce'"
           + "or "
           + "../../../pcep:role = 'pcc-and-pce'" {
          description
            "Valid for PCEP peer as 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.";
      }
      container pcc {
        when "../../../pcep:role = 'pcc'"
           + "or "
           + "../../../pcep:role = 'pcc-and-pce'" {
          description
            "Valid for PCEP peer as 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.";
      }
    }
    container stateful {
      if-feature "pcep:stateful";
      description
        "Stateful PCE-related statistics.";
      container pce {
        when "../../../pcep:role = 'pce'"
           + "or "
           + "../../../pcep:role = 'pcc-and-pce'" {
          description
            "Valid for PCEP peer as 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 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 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 as 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 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.";
      }
      container initiation {
        if-feature "pcep:pce-initiated";
        description
          "PCE-initiated related statistics.";
        container pcc {
          when "../../../../pcep:role = 'pcc'"
             + "or "
             + "../../../../pcep:role = 'pcc-and-pce'" {
            description
              "Valid for PCEP peer as 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 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.";
        }
        container pce {
          when "../../../../pcep:role = 'pce'"
             + "or "
             + "../../../../pcep:role = 'pcc-and-pce'" {
            description
              "Valid for PCEP peer as 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 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.";
        }
      }
    }
    container path-key {
      when "../../pcep:role = 'pcc'"
         + "or "
         + "../../pcep:role = 'pcc-and-pce'" {
        description
          "Valid for PCEP peer as PCC.";
      }
      if-feature "pcep:path-key";
      description
        "If path-key is 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.";
      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.";
    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 as 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 as 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.";
    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.";
  }
}
</sourcecode>
      </section>
    </section>
    <section toc="include" numbered="true" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-9-1">This section is modeled after the template described in <xref target="I-D.ietf-netmod-rfc8407bis" sectionFormat="of" section="3.7.1" format="default" derivedLink="https://datatracker.ietf.org/doc/html/draft-ietf-netmod-rfc8407bis-28#section-3.7.1" derivedContent="YANG-GUIDELINES"/>.</t>
      <t indent="0" pn="section-9-2">The "ietf-pcep" and "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" format="default" sectionFormat="of" derivedContent="RFC6241"/> and RESTCONF
      <xref target="RFC8040" format="default" sectionFormat="of" derivedContent="RFC8040"/>. These protocols have to use a
      secure transport layer (e.g., SSH <xref target="RFC4252" format="default" sectionFormat="of" derivedContent="RFC4252"/>, TLS <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/>, and
      QUIC <xref target="RFC9000" format="default" sectionFormat="of" derivedContent="RFC9000"/>) and have to use mutual
      authentication.</t>
      <t indent="0" pn="section-9-3">The Network Configuration Access Control Model (NACM) <xref target="RFC8341" format="default" sectionFormat="of" derivedContent="RFC8341"/> provides the means to restrict access for particular
      NETCONF or RESTCONF users to a preconfigured subset of all available
      NETCONF or RESTCONF protocol operations and content.</t>
      <t indent="0" pn="section-9-4"><strong>The "ietf-pcep" YANG module:</strong></t>
      <t indent="0" pn="section-9-5">There are a number of data nodes defined in the "ietf-pcep" YANG module
      that are writable/creatable/deletable (i.e., "config true", which is the
      default). All writable data nodes are likely to be reasonably sensitive
      or vulnerable in some network environments. Write operations (e.g.,
      edit-config) and delete operations to these data nodes without proper
      protection or authentication can have a negative effect on network
      operations. The following subtrees and data nodes have particular
      sensitivities/vulnerabilities:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-9-6">
        <li pn="section-9-6.1">/pcep/entity/: Configures local parameters, capabilities, etc.</li>
        <li pn="section-9-6.2">/pcep/entity/peers: Configures remote peers to set up a PCEP session.</li>
      </ul>
      <t indent="0" pn="section-9-7">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>
      <t indent="0" pn="section-9-8">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:
      </t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-9-9">
        <li pn="section-9-9.1">/pcep/lsp-db: All the LSPs in the network. Unauthorized access to
        this could provide all path and network usage information.</li>
        <li pn="section-9-9.2">/pcep/path-keys/: The Confidential Path Segments (CPS) are hidden
        using path-keys. Unauthorized access to this could leak confidential
        path information.</li>
      </ul>
      <t indent="0" pn="section-9-10">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 operation has particular sensitivities/ vulnerabilities:
      </t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-9-11">
        <li pn="section-9-11.1">trigger-resync: Triggers resynchronization with the
        PCE. Unauthorized access to this could force a PCEP session into
        continuous state synchronization.</li>
      </ul>
      <t indent="0" pn="section-9-12">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 <xref target="RFC9645" format="default" sectionFormat="of" derivedContent="RFC9645"/> and <xref target="RFC8776" format="default" sectionFormat="of" derivedContent="RFC8776"/> for information as to
      which nodes may be considered sensitive or vulnerable in network
      environments.</t>
      <t indent="0" pn="section-9-13">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 indent="0" pn="section-9-14">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.</t>
      <t indent="0" pn="section-9-15">The "auth" container includes various authentication and security
      options for PCEP.  Further, <xref target="tls" format="default" sectionFormat="of" derivedContent="Section 7.1"/>
      describes how to configure TLS 1.2 and TLS 1.3 for a PCEP session via this
      YANG module.</t>
      <t indent="0" pn="section-9-16"><strong>The "ietf-pcep-stats" YANG module:</strong></t>
      <t indent="0" pn="section-9-17">There are no particularly sensitive writable data nodes.</t>
      <t indent="0" pn="section-9-18">There are no particularly sensitive readable data nodes.</t>
      <t indent="0" pn="section-9-19">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 operation
has particular sensitivities/vulnerabilities:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-9-20">
        <li pn="section-9-20.1">reset-pcep-statistics-all: The RPC is used to reset all PCEP statistics
  across all peers and sessions. An unauthorized reset could impact
  monitoring.</li>
      </ul>
    </section>
    <section toc="include" numbered="true" removeInRFC="false" pn="section-10">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-10-1">IANA has registered the following URIs in the "IETF XML
      Registry" <xref target="RFC3688" format="default" sectionFormat="of" derivedContent="RFC3688"/>:
      </t>
      <dl spacing="compact" newline="false" indent="3" pn="section-10-2">
        <dt pn="section-10-2.1">URI:</dt>
        <dd pn="section-10-2.2">urn:ietf:params:xml:ns:yang:ietf-pcep</dd>
        <dt pn="section-10-2.3">Registrant Contact:</dt>
        <dd pn="section-10-2.4">The IESG</dd>
        <dt pn="section-10-2.5">XML:</dt>
        <dd pn="section-10-2.6">N/A; the requested URI is an XML namespace.</dd>
      </dl>
      <dl spacing="compact" newline="false" indent="3" pn="section-10-3">
        <dt pn="section-10-3.1">URI:</dt>
        <dd pn="section-10-3.2">urn:ietf:params:xml:ns:yang:ietf-pcep-stats</dd>
        <dt pn="section-10-3.3">Registrant Contact:</dt>
        <dd pn="section-10-3.4">The IESG</dd>
        <dt pn="section-10-3.5">XML:</dt>
        <dd pn="section-10-3.6">N/A; the requested URI is an XML namespace.</dd>
      </dl>
      <t indent="0" pn="section-10-4">IANA has registered the following YANG modules in the
      "YANG Module Names" registry <xref target="RFC6020" format="default" sectionFormat="of" derivedContent="RFC6020"/>:
      </t>
      <dl spacing="compact" newline="false" indent="3" pn="section-10-5">
        <dt pn="section-10-5.1">Name:</dt>
        <dd pn="section-10-5.2">ietf-pcep</dd>
        <dt pn="section-10-5.3">Namespace:</dt>
        <dd pn="section-10-5.4">urn:ietf:params:xml:ns:yang:ietf-pcep</dd>
        <dt pn="section-10-5.5">Prefix:</dt>
        <dd pn="section-10-5.6">pcep</dd>
        <dt pn="section-10-5.7">Reference:</dt>
        <dd pn="section-10-5.8">RFC 9826</dd>
      </dl>
      <dl spacing="compact" newline="false" indent="3" pn="section-10-6">
        <dt pn="section-10-6.1">Name:</dt>
        <dd pn="section-10-6.2">ietf-pcep-stats</dd>
        <dt pn="section-10-6.3">Namespace:</dt>
        <dd pn="section-10-6.4">urn:ietf:params:xml:ns:yang:ietf-pcep-stats</dd>
        <dt pn="section-10-6.5">Prefix:</dt>
        <dd pn="section-10-6.6">pcep-stats</dd>
        <dt pn="section-10-6.7">Reference:</dt>
        <dd pn="section-10-6.8">RFC 9826</dd>
      </dl>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-netmod-rfc8407bis" to="YANG-GUIDELINES"/>
    <displayreference target="I-D.ietf-pce-pcep-srv6-yang" to="YANG-PCEP-SRV6"/>
    <displayreference target="I-D.ietf-pce-pceps-tls13" to="PCEPS-UPDATE"/>
    <displayreference target="I-D.ietf-teas-yang-te" to="YANG-TE"/>
    <references pn="section-11">
      <name slugifiedName="name-references">References</name>
      <references pn="section-11.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3688" target="https://www.rfc-editor.org/info/rfc3688" quoteTitle="true" derivedAnchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t indent="0">This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC4252" target="https://www.rfc-editor.org/info/rfc4252" quoteTitle="true" derivedAnchor="RFC4252">
          <front>
            <title>The Secure Shell (SSH) Authentication Protocol</title>
            <author fullname="T. Ylonen" initials="T." surname="Ylonen"/>
            <author fullname="C. Lonvick" initials="C." role="editor" surname="Lonvick"/>
            <date month="January" year="2006"/>
            <abstract>
              <t indent="0">The Secure Shell Protocol (SSH) is a protocol for secure remote login and other secure network services over an insecure network. This document describes the SSH authentication protocol framework and public key, password, and host-based client authentication methods. Additional authentication methods are described in separate documents. The SSH authentication protocol runs on top of the SSH transport layer protocol and provides a single authenticated tunnel for the SSH connection protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4252"/>
          <seriesInfo name="DOI" value="10.17487/RFC4252"/>
        </reference>
        <reference anchor="RFC5088" target="https://www.rfc-editor.org/info/rfc5088" quoteTitle="true" derivedAnchor="RFC5088">
          <front>
            <title>OSPF Protocol Extensions for Path Computation Element (PCE) Discovery</title>
            <author fullname="JL. Le Roux" initials="JL." role="editor" surname="Le Roux"/>
            <author fullname="JP. Vasseur" initials="JP." role="editor" surname="Vasseur"/>
            <author fullname="Y. Ikejiri" initials="Y." surname="Ikejiri"/>
            <author fullname="R. Zhang" initials="R." surname="Zhang"/>
            <date month="January" year="2008"/>
            <abstract>
              <t indent="0">There are various circumstances where it is highly desirable for a Path Computation Client (PCC) to be able to dynamically and automatically discover a set of Path Computation Elements (PCEs), along with information that can be used by the PCC for PCE selection. When the PCE is a Label Switching Router (LSR) participating in the Interior Gateway Protocol (IGP), or even a server participating passively in the IGP, a simple and efficient way to announce PCEs consists of using IGP flooding. For that purpose, this document defines extensions to the Open Shortest Path First (OSPF) routing protocol for the advertisement of PCE Discovery information within an OSPF area or within the entire OSPF routing domain. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5088"/>
          <seriesInfo name="DOI" value="10.17487/RFC5088"/>
        </reference>
        <reference anchor="RFC5089" target="https://www.rfc-editor.org/info/rfc5089" quoteTitle="true" derivedAnchor="RFC5089">
          <front>
            <title>IS-IS Protocol Extensions for Path Computation Element (PCE) Discovery</title>
            <author fullname="JL. Le Roux" initials="JL." role="editor" surname="Le Roux"/>
            <author fullname="JP. Vasseur" initials="JP." role="editor" surname="Vasseur"/>
            <author fullname="Y. Ikejiri" initials="Y." surname="Ikejiri"/>
            <author fullname="R. Zhang" initials="R." surname="Zhang"/>
            <date month="January" year="2008"/>
            <abstract>
              <t indent="0">There are various circumstances where it is highly desirable for a Path Computation Client (PCC) to be able to dynamically and automatically discover a set of Path Computation Elements (PCEs), along with information that can be used by the PCC for PCE selection. When the PCE is a Label Switching Router (LSR) participating in the Interior Gateway Protocol (IGP), or even a server participating passively in the IGP, a simple and efficient way to announce PCEs consists of using IGP flooding. For that purpose, this document defines extensions to the Intermediate System to Intermediate System (IS-IS) routing protocol for the advertisement of PCE Discovery information within an IS-IS area or within the entire IS-IS routing domain. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5089"/>
          <seriesInfo name="DOI" value="10.17487/RFC5089"/>
        </reference>
        <reference anchor="RFC5440" target="https://www.rfc-editor.org/info/rfc5440" quoteTitle="true" derivedAnchor="RFC5440">
          <front>
            <title>Path Computation Element (PCE) Communication Protocol (PCEP)</title>
            <author fullname="JP. Vasseur" initials="JP." role="editor" surname="Vasseur"/>
            <author fullname="JL. Le Roux" initials="JL." role="editor" surname="Le Roux"/>
            <date month="March" year="2009"/>
            <abstract>
              <t indent="0">This document specifies the Path Computation Element (PCE) Communication Protocol (PCEP) for communications between a Path Computation Client (PCC) and a PCE, or between two PCEs. Such 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. PCEP is designed to be flexible and extensible so as to easily allow for the addition of further messages and objects, should further requirements be expressed in the future. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5440"/>
          <seriesInfo name="DOI" value="10.17487/RFC5440"/>
        </reference>
        <reference anchor="RFC5520" target="https://www.rfc-editor.org/info/rfc5520" quoteTitle="true" derivedAnchor="RFC5520">
          <front>
            <title>Preserving Topology Confidentiality in Inter-Domain Path Computation Using a Path-Key-Based Mechanism</title>
            <author fullname="R. Bradford" initials="R." role="editor" surname="Bradford"/>
            <author fullname="JP. Vasseur" initials="JP." surname="Vasseur"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="April" year="2009"/>
            <abstract>
              <t indent="0">Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) Traffic Engineering (TE) Label Switched Paths (LSPs) may be computed by Path Computation Elements (PCEs). Where the TE LSP crosses multiple domains, such as Autonomous Systems (ASes), the path may be computed by multiple PCEs that cooperate, with each responsible for computing a segment of the path. However, in some cases (e.g., when ASes are administered by separate Service Providers), it would break confidentiality rules for a PCE to supply a path segment to a PCE in another domain, thus disclosing AS-internal topology information. This issue may be circumvented by returning a loose hop and by invoking a new path computation from the domain boundary Label Switching Router (LSR) during TE LSP setup as the signaling message enters the second domain, but this technique has several issues including the problem of maintaining path diversity.</t>
              <t indent="0">This document defines a mechanism to hide the contents of a segment of a path, called the Confidential Path Segment (CPS). The CPS may be replaced by a path-key that can be conveyed in the PCE Communication Protocol (PCEP) and signaled within in a Resource Reservation Protocol TE (RSVP-TE) explicit route object. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5520"/>
          <seriesInfo name="DOI" value="10.17487/RFC5520"/>
        </reference>
        <reference anchor="RFC5541" target="https://www.rfc-editor.org/info/rfc5541" quoteTitle="true" derivedAnchor="RFC5541">
          <front>
            <title>Encoding of Objective Functions in the Path Computation Element Communication Protocol (PCEP)</title>
            <author fullname="JL. Le Roux" initials="JL." surname="Le Roux"/>
            <author fullname="JP. Vasseur" initials="JP." surname="Vasseur"/>
            <author fullname="Y. Lee" initials="Y." surname="Lee"/>
            <date month="June" year="2009"/>
            <abstract>
              <t indent="0">The computation of one or a set of Traffic Engineering Label Switched Paths (TE LSPs) in MultiProtocol Label Switching (MPLS) and Generalized MPLS (GMPLS) networks is subject to a set of one or more specific optimization criteria, referred to as objective functions (e.g., minimum cost path, widest path, etc.).</t>
              <t indent="0">In the Path Computation Element (PCE) architecture, a Path Computation Client (PCC) may want a path to be computed for one or more TE LSPs according to a specific objective function. Thus, the PCC needs to instruct the PCE to use the correct objective function. Furthermore, it is possible that not all PCEs support the same set of objective functions; therefore, it is useful for the PCC to be able to automatically discover the set of objective functions supported by each PCE.</t>
              <t indent="0">This document defines extensions to the PCE communication Protocol (PCEP) to allow a PCE to indicate the set of objective functions it supports. Extensions are also defined so that a PCC can indicate in a path computation request the required objective function, and a PCE can report in a path computation reply the objective function that was used for path computation.</t>
              <t indent="0">This document defines objective function code types for six objective functions previously listed in the PCE requirements work, and provides the definition of four new metric types that apply to a set of synchronized requests. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5541"/>
          <seriesInfo name="DOI" value="10.17487/RFC5541"/>
        </reference>
        <reference anchor="RFC5557" target="https://www.rfc-editor.org/info/rfc5557" quoteTitle="true" derivedAnchor="RFC5557">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Requirements and Protocol Extensions in Support of Global Concurrent Optimization</title>
            <author fullname="Y. Lee" initials="Y." surname="Lee"/>
            <author fullname="JL. Le Roux" initials="JL." surname="Le Roux"/>
            <author fullname="D. King" initials="D." surname="King"/>
            <author fullname="E. Oki" initials="E." surname="Oki"/>
            <date month="July" year="2009"/>
            <abstract>
              <t indent="0">The Path Computation Element Communication Protocol (PCEP) allows Path Computation Clients (PCCs) to request path computations from Path Computation Elements (PCEs), and lets the PCEs return responses. When computing or reoptimizing the routes of a set of Traffic Engineering Label Switched Paths (TE LSPs) through a network, it may be advantageous to perform bulk path computations in order to avoid blocking problems and to achieve more optimal network-wide solutions. Such bulk optimization is termed Global Concurrent Optimization (GCO). A GCO is able to simultaneously consider the entire topology of the network and the complete set of existing TE LSPs, and their respective constraints, and look to optimize or reoptimize the entire network to satisfy all constraints for all TE LSPs. A GCO may also be applied to some subset of the TE LSPs in a network. The GCO application is primarily a Network Management System (NMS) solution.</t>
              <t indent="0">This document provides application-specific requirements and the PCEP extensions in support of GCO applications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5557"/>
          <seriesInfo name="DOI" value="10.17487/RFC5557"/>
        </reference>
        <reference anchor="RFC5925" target="https://www.rfc-editor.org/info/rfc5925" quoteTitle="true" derivedAnchor="RFC5925">
          <front>
            <title>The TCP Authentication Option</title>
            <author fullname="J. Touch" initials="J." surname="Touch"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <author fullname="R. Bonica" initials="R." surname="Bonica"/>
            <date month="June" year="2010"/>
            <abstract>
              <t indent="0">This document specifies the TCP Authentication Option (TCP-AO), which obsoletes the TCP MD5 Signature option of RFC 2385 (TCP MD5). TCP-AO specifies the use of stronger Message Authentication Codes (MACs), protects against replays even for long-lived TCP connections, and provides more details on the association of security with TCP connections than TCP MD5. TCP-AO is compatible with either a static Master Key Tuple (MKT) configuration or an external, out-of-band MKT management mechanism; in either case, TCP-AO also protects connections when using the same MKT across repeated instances of a connection, using traffic keys derived from the MKT, and coordinates MKT changes between endpoints. The result is intended to support current infrastructure uses of TCP MD5, such as to protect long-lived connections (as used, e.g., in BGP and LDP), and to support a larger set of MACs with minimal other system and operational changes. TCP-AO uses a different option identifier than TCP MD5, even though TCP-AO and TCP MD5 are never permitted to be used simultaneously. TCP-AO supports IPv6, and is fully compatible with the proposed requirements for the replacement of TCP MD5. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5925"/>
          <seriesInfo name="DOI" value="10.17487/RFC5925"/>
        </reference>
        <reference anchor="RFC6020" target="https://www.rfc-editor.org/info/rfc6020" quoteTitle="true" derivedAnchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t indent="0">YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
        <reference anchor="RFC6241" target="https://www.rfc-editor.org/info/rfc6241" quoteTitle="true" derivedAnchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t indent="0">The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC6991" target="https://www.rfc-editor.org/info/rfc6991" quoteTitle="true" derivedAnchor="RFC6991">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <date month="July" year="2013"/>
            <abstract>
              <t indent="0">This document introduces a collection of common data types to be used with the YANG data modeling language. This document obsoletes RFC 6021.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6991"/>
          <seriesInfo name="DOI" value="10.17487/RFC6991"/>
        </reference>
        <reference anchor="RFC7950" target="https://www.rfc-editor.org/info/rfc7950" quoteTitle="true" derivedAnchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t indent="0">YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC8040" target="https://www.rfc-editor.org/info/rfc8040" quoteTitle="true" derivedAnchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t indent="0">This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8177" target="https://www.rfc-editor.org/info/rfc8177" quoteTitle="true" derivedAnchor="RFC8177">
          <front>
            <title>YANG Data Model for Key Chains</title>
            <author fullname="A. Lindem" initials="A." role="editor" surname="Lindem"/>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <author fullname="D. Yeung" initials="D." surname="Yeung"/>
            <author fullname="I. Chen" initials="I." surname="Chen"/>
            <author fullname="J. Zhang" initials="J." surname="Zhang"/>
            <date month="June" year="2017"/>
            <abstract>
              <t indent="0">This document describes the key chain YANG data model. Key chains are commonly used for routing protocol authentication and other applications requiring symmetric keys. A key chain is a list containing one or more elements containing a Key ID, key string, send/accept lifetimes, and the associated authentication or encryption algorithm. By properly overlapping the send and accept lifetimes of multiple key chain elements, key strings and algorithms may be gracefully updated. By representing them in a YANG data model, key distribution can be automated.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8177"/>
          <seriesInfo name="DOI" value="10.17487/RFC8177"/>
        </reference>
        <reference anchor="RFC8231" target="https://www.rfc-editor.org/info/rfc8231" quoteTitle="true" derivedAnchor="RFC8231">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE</title>
            <author fullname="E. Crabbe" initials="E." surname="Crabbe"/>
            <author fullname="I. Minei" initials="I." surname="Minei"/>
            <author fullname="J. Medved" initials="J." surname="Medved"/>
            <author fullname="R. Varga" initials="R." surname="Varga"/>
            <date month="September" year="2017"/>
            <abstract>
              <t indent="0">The Path Computation Element Communication Protocol (PCEP) provides mechanisms for Path Computation Elements (PCEs) to perform path computations in response to Path Computation Client (PCC) requests.</t>
              <t indent="0">Although PCEP explicitly makes no assumptions regarding the information available to the PCE, it also makes no provisions for PCE control of timing and sequence of path computations within and across PCEP sessions. This document describes a set of extensions to PCEP to enable stateful control of MPLS-TE and GMPLS Label Switched Paths (LSPs) via PCEP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8231"/>
          <seriesInfo name="DOI" value="10.17487/RFC8231"/>
        </reference>
        <reference anchor="RFC8232" target="https://www.rfc-editor.org/info/rfc8232" quoteTitle="true" derivedAnchor="RFC8232">
          <front>
            <title>Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE</title>
            <author fullname="E. Crabbe" initials="E." surname="Crabbe"/>
            <author fullname="I. Minei" initials="I." surname="Minei"/>
            <author fullname="J. Medved" initials="J." surname="Medved"/>
            <author fullname="R. Varga" initials="R." surname="Varga"/>
            <author fullname="X. Zhang" initials="X." surname="Zhang"/>
            <author fullname="D. Dhody" initials="D." surname="Dhody"/>
            <date month="September" year="2017"/>
            <abstract>
              <t indent="0">A stateful Path Computation Element (PCE) has access to not only the information disseminated by the network's Interior Gateway Protocol (IGP) but also the set of active paths and their reserved resources for its computation. The additional Label Switched Path (LSP) state information allows the PCE to compute constrained paths while considering individual LSPs and their interactions. This requires a State Synchronization mechanism between the PCE and the network, the PCE and Path Computation Clients (PCCs), and cooperating PCEs. The basic mechanism for State Synchronization is part of the stateful PCE specification. This document presents motivations for optimizations to the base State Synchronization procedure and specifies the required Path Computation Element Communication Protocol (PCEP) extensions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8232"/>
          <seriesInfo name="DOI" value="10.17487/RFC8232"/>
        </reference>
        <reference anchor="RFC8253" target="https://www.rfc-editor.org/info/rfc8253" quoteTitle="true" derivedAnchor="RFC8253">
          <front>
            <title>PCEPS: Usage of TLS to Provide a Secure Transport for the Path Computation Element Communication Protocol (PCEP)</title>
            <author fullname="D. Lopez" initials="D." surname="Lopez"/>
            <author fullname="O. Gonzalez de Dios" initials="O." surname="Gonzalez de Dios"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <author fullname="D. Dhody" initials="D." surname="Dhody"/>
            <date month="October" year="2017"/>
            <abstract>
              <t indent="0">The Path Computation Element Communication Protocol (PCEP) defines the mechanisms for the communication between a Path Computation Client (PCC) and a Path Computation Element (PCE), or among PCEs. This document describes PCEPS -- the usage of Transport Layer Security (TLS) to provide a secure transport for PCEP. The additional security mechanisms are provided by the transport protocol supporting PCEP; therefore, they do not affect the flexibility and extensibility of PCEP.</t>
              <t indent="0">This document updates RFC 5440 in regards to the PCEP initialization phase procedures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8253"/>
          <seriesInfo name="DOI" value="10.17487/RFC8253"/>
        </reference>
        <reference anchor="RFC8281" target="https://www.rfc-editor.org/info/rfc8281" quoteTitle="true" derivedAnchor="RFC8281">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful PCE Model</title>
            <author fullname="E. Crabbe" initials="E." surname="Crabbe"/>
            <author fullname="I. Minei" initials="I." surname="Minei"/>
            <author fullname="S. Sivabalan" initials="S." surname="Sivabalan"/>
            <author fullname="R. Varga" initials="R." surname="Varga"/>
            <date month="December" year="2017"/>
            <abstract>
              <t indent="0">The Path Computation Element Communication Protocol (PCEP) provides mechanisms for Path Computation Elements (PCEs) to perform path computations in response to Path Computation Client (PCC) requests.</t>
              <t indent="0">The extensions for stateful PCE provide active control of Multiprotocol Label Switching (MPLS) Traffic Engineering Label Switched Paths (TE LSPs) via PCEP, for a model where the PCC delegates control over one or more locally configured LSPs to the PCE. This document describes the creation and deletion of PCE-initiated LSPs under the stateful PCE model.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8281"/>
          <seriesInfo name="DOI" value="10.17487/RFC8281"/>
        </reference>
        <reference anchor="RFC8282" target="https://www.rfc-editor.org/info/rfc8282" quoteTitle="true" derivedAnchor="RFC8282">
          <front>
            <title>Extensions to the Path Computation Element Communication Protocol (PCEP) for Inter-Layer MPLS and GMPLS Traffic Engineering</title>
            <author fullname="E. Oki" initials="E." surname="Oki"/>
            <author fullname="T. Takeda" initials="T." surname="Takeda"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="F. Zhang" initials="F." surname="Zhang"/>
            <date month="December" year="2017"/>
            <abstract>
              <t indent="0">The Path Computation Element (PCE) provides path computation functions in support of traffic engineering in Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) networks.</t>
              <t indent="0">MPLS and GMPLS networks may be constructed from layered service networks. It is advantageous for overall network efficiency to provide end-to-end traffic engineering across multiple network layers through a process called inter-layer traffic engineering. PCE is a candidate solution for such requirements.</t>
              <t indent="0">The PCE Communication Protocol (PCEP) is designed as a communication protocol between Path Computation Clients (PCCs) and PCEs. This document presents PCEP extensions for inter-layer traffic engineering.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8282"/>
          <seriesInfo name="DOI" value="10.17487/RFC8282"/>
        </reference>
        <reference anchor="RFC8306" target="https://www.rfc-editor.org/info/rfc8306" quoteTitle="true" derivedAnchor="RFC8306">
          <front>
            <title>Extensions to the Path Computation Element Communication Protocol (PCEP) for Point-to-Multipoint Traffic Engineering Label Switched Paths</title>
            <author fullname="Q. Zhao" initials="Q." surname="Zhao"/>
            <author fullname="D. Dhody" initials="D." role="editor" surname="Dhody"/>
            <author fullname="R. Palleti" initials="R." surname="Palleti"/>
            <author fullname="D. King" initials="D." surname="King"/>
            <date month="November" year="2017"/>
            <abstract>
              <t indent="0">Point-to-point Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) Traffic Engineering Label Switched Paths (TE LSPs) may be established using signaling techniques, but their paths may first need to be determined. The Path Computation Element (PCE) has been identified as an appropriate technology for the determination of the paths of point-to-multipoint (P2MP) TE LSPs.</t>
              <t indent="0">This document describes extensions to the PCE Communication Protocol (PCEP) to handle requests and responses for the computation of paths for P2MP TE LSPs.</t>
              <t indent="0">This document obsoletes RFC 6006.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8306"/>
          <seriesInfo name="DOI" value="10.17487/RFC8306"/>
        </reference>
        <reference anchor="RFC8340" target="https://www.rfc-editor.org/info/rfc8340" quoteTitle="true" derivedAnchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t indent="0">This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="RFC8341" target="https://www.rfc-editor.org/info/rfc8341" quoteTitle="true" derivedAnchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t indent="0">The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t indent="0">This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC8408" target="https://www.rfc-editor.org/info/rfc8408" quoteTitle="true" derivedAnchor="RFC8408">
          <front>
            <title>Conveying Path Setup Type in PCE Communication Protocol (PCEP) Messages</title>
            <author fullname="S. Sivabalan" initials="S." surname="Sivabalan"/>
            <author fullname="J. Tantsura" initials="J." surname="Tantsura"/>
            <author fullname="I. Minei" initials="I." surname="Minei"/>
            <author fullname="R. Varga" initials="R." surname="Varga"/>
            <author fullname="J. Hardwick" initials="J." surname="Hardwick"/>
            <date month="July" year="2018"/>
            <abstract>
              <t indent="0">A Path Computation Element (PCE) can compute Traffic Engineering (TE) paths through a network; these paths are subject to various constraints. Currently, TE paths are Label Switched Paths (LSPs) that are set up using the RSVP-TE signaling protocol. However, other TE path setup methods are possible within the PCE architecture. This document proposes an extension to the PCE Communication Protocol (PCEP) to allow support for different path setup methods over a given PCEP session.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8408"/>
          <seriesInfo name="DOI" value="10.17487/RFC8408"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" quoteTitle="true" derivedAnchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t indent="0">This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t indent="0">This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8623" target="https://www.rfc-editor.org/info/rfc8623" quoteTitle="true" derivedAnchor="RFC8623">
          <front>
            <title>Stateful Path Computation Element (PCE) Protocol Extensions for Usage with Point-to-Multipoint TE Label Switched Paths (LSPs)</title>
            <author fullname="U. Palle" initials="U." surname="Palle"/>
            <author fullname="D. Dhody" initials="D." surname="Dhody"/>
            <author fullname="Y. Tanaka" initials="Y." surname="Tanaka"/>
            <author fullname="V. Beeram" initials="V." surname="Beeram"/>
            <date month="June" year="2019"/>
            <abstract>
              <t indent="0">The Path Computation Element (PCE) has been identified as an appropriate technology for the determination of the paths of point- to-multipoint (P2MP) TE Label Switched Paths (LSPs). This document provides extensions required for the Path Computation Element Communication Protocol (PCEP) so as to enable the usage of a stateful PCE capability in supporting P2MP TE LSPs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8623"/>
          <seriesInfo name="DOI" value="10.17487/RFC8623"/>
        </reference>
        <reference anchor="RFC8664" target="https://www.rfc-editor.org/info/rfc8664" quoteTitle="true" derivedAnchor="RFC8664">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for Segment Routing</title>
            <author fullname="S. Sivabalan" initials="S." surname="Sivabalan"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="J. Tantsura" initials="J." surname="Tantsura"/>
            <author fullname="W. Henderickx" initials="W." surname="Henderickx"/>
            <author fullname="J. Hardwick" initials="J." surname="Hardwick"/>
            <date month="December" year="2019"/>
            <abstract>
              <t indent="0">Segment Routing (SR) enables any head-end node to select any path without relying on a hop-by-hop signaling technique (e.g., LDP or RSVP-TE). It depends only on "segments" that are advertised by link-state Interior Gateway Protocols (IGPs). An SR path can be derived from a variety of mechanisms, including an IGP Shortest Path Tree (SPT), an explicit configuration, or a Path Computation Element (PCE). This document specifies extensions to the Path Computation Element Communication Protocol (PCEP) that allow a stateful PCE to compute and initiate Traffic-Engineering (TE) paths, as well as a Path Computation Client (PCC) to request a path subject to certain constraints and optimization criteria in SR networks.</t>
              <t indent="0">This document updates RFC 8408.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8664"/>
          <seriesInfo name="DOI" value="10.17487/RFC8664"/>
        </reference>
        <reference anchor="RFC8685" target="https://www.rfc-editor.org/info/rfc8685" quoteTitle="true" derivedAnchor="RFC8685">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for the Hierarchical Path Computation Element (H-PCE) Architecture</title>
            <author fullname="F. Zhang" initials="F." surname="Zhang"/>
            <author fullname="Q. Zhao" initials="Q." surname="Zhao"/>
            <author fullname="O. Gonzalez de Dios" initials="O." surname="Gonzalez de Dios"/>
            <author fullname="R. Casellas" initials="R." surname="Casellas"/>
            <author fullname="D. King" initials="D." surname="King"/>
            <date month="December" year="2019"/>
            <abstract>
              <t indent="0">The Hierarchical Path Computation Element (H-PCE) architecture is defined in RFC 6805. It provides a mechanism to derive an optimum end-to-end path in a multi-domain environment by using a hierarchical relationship between domains to select the optimum sequence of domains and optimum paths across those domains.</t>
              <t indent="0">This document defines extensions to the Path Computation Element Communication Protocol (PCEP) to support H-PCE procedures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8685"/>
          <seriesInfo name="DOI" value="10.17487/RFC8685"/>
        </reference>
        <reference anchor="RFC8697" target="https://www.rfc-editor.org/info/rfc8697" quoteTitle="true" derivedAnchor="RFC8697">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for Establishing Relationships between Sets of Label Switched Paths (LSPs)</title>
            <author fullname="I. Minei" initials="I." surname="Minei"/>
            <author fullname="E. Crabbe" initials="E." surname="Crabbe"/>
            <author fullname="S. Sivabalan" initials="S." surname="Sivabalan"/>
            <author fullname="H. Ananthakrishnan" initials="H." surname="Ananthakrishnan"/>
            <author fullname="D. Dhody" initials="D." surname="Dhody"/>
            <author fullname="Y. Tanaka" initials="Y." surname="Tanaka"/>
            <date month="January" year="2020"/>
            <abstract>
              <t indent="0">This document introduces a generic mechanism to create a grouping of Label Switched Paths (LSPs) in the context of a Path Computation Element (PCE). This grouping can then be used to define associations between sets of LSPs or between a set of LSPs and a set of attributes (such as configuration parameters or behaviors), and it is equally applicable to the stateful PCE (active and passive modes) and the stateless PCE.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8697"/>
          <seriesInfo name="DOI" value="10.17487/RFC8697"/>
        </reference>
        <reference anchor="RFC8745" target="https://www.rfc-editor.org/info/rfc8745" quoteTitle="true" derivedAnchor="RFC8745">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for Associating Working and Protection Label Switched Paths (LSPs) with Stateful PCE</title>
            <author fullname="H. Ananthakrishnan" initials="H." surname="Ananthakrishnan"/>
            <author fullname="S. Sivabalan" initials="S." surname="Sivabalan"/>
            <author fullname="C. Barth" initials="C." surname="Barth"/>
            <author fullname="I. Minei" initials="I." surname="Minei"/>
            <author fullname="M. Negi" initials="M." surname="Negi"/>
            <date month="March" year="2020"/>
            <abstract>
              <t indent="0">An active stateful Path Computation Element (PCE) is capable of computing as well as controlling via Path Computation Element Communication Protocol (PCEP) Multiprotocol Label Switching Traffic Engineering (MPLS-TE) Label Switched Paths (LSPs). Furthermore, it is also possible for an active stateful PCE to create, maintain, and delete LSPs. This document defines the PCEP extension to associate two or more LSPs to provide end-to-end path protection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8745"/>
          <seriesInfo name="DOI" value="10.17487/RFC8745"/>
        </reference>
        <reference anchor="RFC8776" target="https://www.rfc-editor.org/info/rfc8776" quoteTitle="true" derivedAnchor="RFC8776">
          <front>
            <title>Common YANG Data Types for Traffic Engineering</title>
            <author fullname="T. Saad" initials="T." surname="Saad"/>
            <author fullname="R. Gandhi" initials="R." surname="Gandhi"/>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <author fullname="V. Beeram" initials="V." surname="Beeram"/>
            <author fullname="I. Bryskin" initials="I." surname="Bryskin"/>
            <date month="June" year="2020"/>
            <abstract>
              <t indent="0">This document defines a collection of common data types and groupings in YANG data modeling language. These derived common types and groupings are intended to be imported by modules that model Traffic Engineering (TE) configuration and state capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8776"/>
          <seriesInfo name="DOI" value="10.17487/RFC8776"/>
        </reference>
        <reference anchor="RFC8779" target="https://www.rfc-editor.org/info/rfc8779" quoteTitle="true" derivedAnchor="RFC8779">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for GMPLS</title>
            <author fullname="C. Margaria" initials="C." role="editor" surname="Margaria"/>
            <author fullname="O. Gonzalez de Dios" initials="O." role="editor" surname="Gonzalez de Dios"/>
            <author fullname="F. Zhang" initials="F." role="editor" surname="Zhang"/>
            <date month="July" year="2020"/>
            <abstract>
              <t indent="0">A Path Computation Element (PCE) provides path computation functions for Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) networks. Additional requirements for GMPLS are identified in RFC 7025.</t>
              <t indent="0">This memo provides extensions to the Path Computation Element Communication Protocol (PCEP) for the support of the GMPLS control plane to address those requirements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8779"/>
          <seriesInfo name="DOI" value="10.17487/RFC8779"/>
        </reference>
        <reference anchor="RFC8800" target="https://www.rfc-editor.org/info/rfc8800" quoteTitle="true" derivedAnchor="RFC8800">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extension for Label Switched Path (LSP) Diversity Constraint Signaling</title>
            <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
            <author fullname="S. Sivabalan" initials="S." surname="Sivabalan"/>
            <author fullname="C. Barth" initials="C." surname="Barth"/>
            <author fullname="M. Negi" initials="M." surname="Negi"/>
            <date month="July" year="2020"/>
            <abstract>
              <t indent="0">This document introduces a simple mechanism to associate a group of Label Switched Paths (LSPs) via an extension to the Path Computation Element Communication Protocol (PCEP) with the purpose of computing diverse (disjointed) paths for those LSPs. The proposed extension allows a Path Computation Client (PCC) to advertise to a Path Computation Element (PCE) that a particular LSP belongs to a particular Disjoint Association Group; thus, the PCE knows that the LSPs in the same group need to be disjoint from each other.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8800"/>
          <seriesInfo name="DOI" value="10.17487/RFC8800"/>
        </reference>
        <reference anchor="RFC9000" target="https://www.rfc-editor.org/info/rfc9000" quoteTitle="true" derivedAnchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t indent="0">This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC9005" target="https://www.rfc-editor.org/info/rfc9005" quoteTitle="true" derivedAnchor="RFC9005">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extension for Associating Policies and Label Switched Paths (LSPs)</title>
            <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
            <author fullname="S. Sivabalan" initials="S." surname="Sivabalan"/>
            <author fullname="J. Tantsura" initials="J." surname="Tantsura"/>
            <author fullname="J. Hardwick" initials="J." surname="Hardwick"/>
            <author fullname="C. Li" initials="C." surname="Li"/>
            <date month="March" year="2021"/>
            <abstract>
              <t indent="0">This document introduces a simple mechanism to associate policies with a group of Label Switched Paths (LSPs) via an extension to the Path Computation Element Communication Protocol (PCEP). The extension allows a PCEP speaker to advertise to a PCEP peer that a particular LSP belongs to a particular Policy Association Group (PAG).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9005"/>
          <seriesInfo name="DOI" value="10.17487/RFC9005"/>
        </reference>
        <reference anchor="RFC9129" target="https://www.rfc-editor.org/info/rfc9129" quoteTitle="true" derivedAnchor="RFC9129">
          <front>
            <title>YANG Data Model for the OSPF Protocol</title>
            <author fullname="D. Yeung" initials="D." surname="Yeung"/>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <author fullname="Z. Zhang" initials="Z." surname="Zhang"/>
            <author fullname="I. Chen" initials="I." surname="Chen"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <date month="October" year="2022"/>
            <abstract>
              <t indent="0">This document defines a YANG data model that can be used to configure and manage OSPF. The model is based on YANG 1.1 as defined in RFC 7950 and conforms to the Network Management Datastore Architecture (NMDA) as described in RFC 8342.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9129"/>
          <seriesInfo name="DOI" value="10.17487/RFC9129"/>
        </reference>
        <reference anchor="RFC9130" target="https://www.rfc-editor.org/info/rfc9130" quoteTitle="true" derivedAnchor="RFC9130">
          <front>
            <title>YANG Data Model for the IS-IS Protocol</title>
            <author fullname="S. Litkowski" initials="S." role="editor" surname="Litkowski"/>
            <author fullname="D. Yeung" initials="D." surname="Yeung"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="J. Zhang" initials="J." surname="Zhang"/>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="October" year="2022"/>
            <abstract>
              <t indent="0">This document defines a YANG data model that can be used to configure and manage the IS-IS protocol on network elements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9130"/>
          <seriesInfo name="DOI" value="10.17487/RFC9130"/>
        </reference>
        <reference anchor="RFC9168" target="https://www.rfc-editor.org/info/rfc9168" quoteTitle="true" derivedAnchor="RFC9168">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extension for Flow Specification</title>
            <author fullname="D. Dhody" initials="D." surname="Dhody"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="Z. Li" initials="Z." surname="Li"/>
            <date month="January" year="2022"/>
            <abstract>
              <t indent="0">The Path Computation Element (PCE) is a functional component capable of selecting paths through a traffic engineering (TE) network. These paths may be supplied in response to requests for computation or may be unsolicited requests issued by the PCE to network elements. Both approaches use the PCE Communication Protocol (PCEP) to convey the details of the computed path.</t>
              <t indent="0">Traffic flows may be categorized and described using "Flow Specifications". RFC 8955 defines the Flow Specification and describes how Flow Specification components are used to describe traffic flows. RFC 8955 also defines how Flow Specifications may be distributed in BGP to allow specific traffic flows to be associated with routes.</t>
              <t indent="0">This document specifies a set of extensions to PCEP to support dissemination of Flow Specifications. This allows a PCE to indicate what traffic should be placed on each path that it is aware of.</t>
              <t indent="0">The extensions defined in this document include the creation, update, and withdrawal of Flow Specifications via PCEP and can be applied to tunnels initiated by the PCE or to tunnels where control is delegated to the PCE by the Path Computation Client (PCC). Furthermore, a PCC requesting a new path can include Flow Specifications in the request to indicate the purpose of the tunnel allowing the PCE to factor this into the path computation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9168"/>
          <seriesInfo name="DOI" value="10.17487/RFC9168"/>
        </reference>
        <reference anchor="RFC9353" target="https://www.rfc-editor.org/info/rfc9353" quoteTitle="true" derivedAnchor="RFC9353">
          <front>
            <title>IGP Extension for Path Computation Element Communication Protocol (PCEP) Security Capability Support in PCE Discovery (PCED)</title>
            <author fullname="D. Lopez" initials="D." surname="Lopez"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <author fullname="D. Dhody" initials="D." surname="Dhody"/>
            <author fullname="Q. Ma" initials="Q." surname="Ma"/>
            <author fullname="D. King" initials="D." surname="King"/>
            <date month="January" year="2023"/>
            <abstract>
              <t indent="0">When a Path Computation Element (PCE) is a Label Switching Router (LSR) or a server participating in the Interior Gateway Protocol (IGP), its presence and path computation capabilities can be advertised using IGP flooding. The IGP extensions for PCE Discovery (PCED) (RFCs 5088 and 5089) define a method to advertise path computation capabilities using IGP flooding for OSPF and IS-IS, respectively. However, these specifications lack a method to advertise Path Computation Element Communication Protocol (PCEP) security (e.g., Transport Layer Security (TLS) and TCP Authentication Option (TCP-AO)) support capability.</t>
              <t indent="0">This document defines capability flag bits for the PCE-CAP-FLAGS sub-TLV that can be announced as an attribute in the IGP advertisement to distribute PCEP security support information. In addition, this document updates RFCs 5088 and 5089 to allow advertisement of a Key ID or KEY-CHAIN-NAME sub-TLV to support TCP-AO security capability. This document also updates RFCs 8231 and 8306.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9353"/>
          <seriesInfo name="DOI" value="10.17487/RFC9353"/>
        </reference>
        <reference anchor="RFC9358" target="https://www.rfc-editor.org/info/rfc9358" quoteTitle="true" derivedAnchor="RFC9358">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for Establishing Relationships between Sets of Label Switched Paths and Virtual Networks</title>
            <author fullname="Y. Lee" initials="Y." surname="Lee"/>
            <author fullname="H. Zheng" initials="H." surname="Zheng"/>
            <author fullname="D. Ceccarelli" initials="D." surname="Ceccarelli"/>
            <date month="February" year="2023"/>
            <abstract>
              <t indent="0">This document describes how to extend the Path Computation Element Communication Protocol (PCEP) association mechanism introduced by RFC 8697 to further associate sets of Label Switched Paths (LSPs) with a higher-level structure such as a Virtual Network (VN) requested by a customer or application. This extended association mechanism can be used to facilitate control of a VN using the PCE architecture.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9358"/>
          <seriesInfo name="DOI" value="10.17487/RFC9358"/>
        </reference>
        <reference anchor="RFC9645" target="https://www.rfc-editor.org/info/rfc9645" quoteTitle="true" derivedAnchor="RFC9645">
          <front>
            <title>YANG Groupings for TLS Clients and TLS Servers</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="October" year="2024"/>
            <abstract>
              <t indent="0">This document presents four YANG 1.1 modules -- three IETF modules and one supporting IANA module.</t>
              <t indent="0">The three IETF modules are "ietf-tls-common", "ietf-tls-client", and "ietf-tls-server". The "ietf-tls-client" and "ietf-tls-server" modules are the primary productions of this work, supporting the configuration and monitoring of TLS clients and servers.</t>
              <t indent="0">The IANA module is "iana-tls-cipher-suite-algs". This module defines YANG enumerations that provide support for an IANA-maintained algorithm registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9645"/>
          <seriesInfo name="DOI" value="10.17487/RFC9645"/>
        </reference>
      </references>
      <references pn="section-11.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="IANA-IGP" target="https://www.iana.org/assignments/igp-parameters" quoteTitle="true" derivedAnchor="IANA-IGP">
          <front>
            <title>Path Computation Element (PCE) Capability Flags</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA-PCEP" target="https://www.iana.org/assignments/pcep" quoteTitle="true" derivedAnchor="IANA-PCEP">
          <front>
            <title>ASSOCIATION Type Field</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="I-D.ietf-pce-pceps-tls13" target="https://datatracker.ietf.org/doc/html/draft-ietf-pce-pceps-tls13-04" quoteTitle="true" derivedAnchor="PCEPS-UPDATE">
          <front>
            <title>Updates for PCEPS: TLS Connection Establishment Restrictions</title>
            <author fullname="Dhruv Dhody" initials="D." surname="Dhody">
              <organization showOnFrontPage="true">Huawei</organization>
            </author>
            <author fullname="Sean Turner" initials="S." surname="Turner">
              <organization showOnFrontPage="true">sn3rd</organization>
            </author>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization showOnFrontPage="true">Vigil Security, LLC</organization>
            </author>
            <date day="9" month="January" year="2024"/>
            <abstract>
              <t indent="0">Section 3.4 of RFC 8253 specifies TLS connection establishment restrictions for PCEPS; PCEPS refers to usage of TLS to provide a secure transport for PCEP (Path Computation Element Communication Protocol). This document adds restrictions to specify what PCEPS implementations do if they support more than one version of the TLS protocol and to restrict the use of TLS 1.3's early data.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-pce-pceps-tls13-04"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC4655" target="https://www.rfc-editor.org/info/rfc4655" quoteTitle="true" derivedAnchor="RFC4655">
          <front>
            <title>A Path Computation Element (PCE)-Based Architecture</title>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="J.-P. Vasseur" initials="J.-P." surname="Vasseur"/>
            <author fullname="J. Ash" initials="J." surname="Ash"/>
            <date month="August" year="2006"/>
            <abstract>
              <t indent="0">Constraint-based path computation is a fundamental building block for traffic engineering systems such as Multiprotocol Label Switching (MPLS) and Generalized Multiprotocol Label Switching (GMPLS) networks. Path computation in large, multi-domain, multi-region, or multi-layer networks is complex and may require special computational components and cooperation between the different network domains.</t>
              <t indent="0">This document specifies the architecture for a Path Computation Element (PCE)-based model to address this problem space. This document does not attempt to provide a detailed description of all the architectural components, but rather it describes a set of building blocks for the PCE architecture from which solutions may be constructed. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4655"/>
          <seriesInfo name="DOI" value="10.17487/RFC4655"/>
        </reference>
        <reference anchor="RFC5246" target="https://www.rfc-editor.org/info/rfc5246" quoteTitle="true" derivedAnchor="RFC5246">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2008"/>
            <abstract>
              <t indent="0">This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5246"/>
          <seriesInfo name="DOI" value="10.17487/RFC5246"/>
        </reference>
        <reference anchor="RFC7420" target="https://www.rfc-editor.org/info/rfc7420" quoteTitle="true" derivedAnchor="RFC7420">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Management Information Base (MIB) Module</title>
            <author fullname="A. Koushik" initials="A." surname="Koushik"/>
            <author fullname="E. Stephan" initials="E." surname="Stephan"/>
            <author fullname="Q. Zhao" initials="Q." surname="Zhao"/>
            <author fullname="D. King" initials="D." surname="King"/>
            <author fullname="J. Hardwick" initials="J." surname="Hardwick"/>
            <date month="December" year="2014"/>
            <abstract>
              <t indent="0">This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. In particular, it describes managed objects for modeling of the Path Computation Element Communication Protocol (PCEP) for communications between a Path Computation Client (PCC) and a Path Computation Element (PCE), or between two PCEs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7420"/>
          <seriesInfo name="DOI" value="10.17487/RFC7420"/>
        </reference>
        <reference anchor="RFC8051" target="https://www.rfc-editor.org/info/rfc8051" quoteTitle="true" derivedAnchor="RFC8051">
          <front>
            <title>Applicability of a Stateful Path Computation Element (PCE)</title>
            <author fullname="X. Zhang" initials="X." role="editor" surname="Zhang"/>
            <author fullname="I. Minei" initials="I." role="editor" surname="Minei"/>
            <date month="January" year="2017"/>
            <abstract>
              <t indent="0">A stateful Path Computation Element (PCE) maintains information about Label Switched Path (LSP) characteristics and resource usage within a network in order to provide traffic-engineering calculations for its associated Path Computation Clients (PCCs). This document describes general considerations for a stateful PCE deployment and examines its applicability and benefits, as well as its challenges and limitations, through a number of use cases. PCE Communication Protocol (PCEP) extensions required for stateful PCE usage are covered in separate documents.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8051"/>
          <seriesInfo name="DOI" value="10.17487/RFC8051"/>
        </reference>
        <reference anchor="RFC8342" target="https://www.rfc-editor.org/info/rfc8342" quoteTitle="true" derivedAnchor="RFC8342">
          <front>
            <title>Network Management Datastore Architecture (NMDA)</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <author fullname="P. Shafer" initials="P." surname="Shafer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="R. Wilton" initials="R." surname="Wilton"/>
            <date month="March" year="2018"/>
            <abstract>
              <t indent="0">Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model. This document updates RFC 7950.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8342"/>
          <seriesInfo name="DOI" value="10.17487/RFC8342"/>
        </reference>
        <reference anchor="RFC8751" target="https://www.rfc-editor.org/info/rfc8751" quoteTitle="true" derivedAnchor="RFC8751">
          <front>
            <title>Hierarchical Stateful Path Computation Element (PCE)</title>
            <author fullname="D. Dhody" initials="D." surname="Dhody"/>
            <author fullname="Y. Lee" initials="Y." surname="Lee"/>
            <author fullname="D. Ceccarelli" initials="D." surname="Ceccarelli"/>
            <author fullname="J. Shin" initials="J." surname="Shin"/>
            <author fullname="D. King" initials="D." surname="King"/>
            <date month="March" year="2020"/>
            <abstract>
              <t indent="0">A stateful Path Computation Element (PCE) maintains information on the current network state received from the Path Computation Clients (PCCs), including computed Label Switched Paths (LSPs), reserved resources within the network, and pending path computation requests. This information may then be considered when computing the path for a new traffic-engineered LSP or for any associated/dependent LSPs. The path-computation response from a PCE helps the PCC to gracefully establish the computed LSP.</t>
              <t indent="0">The Hierarchical Path Computation Element (H-PCE) architecture allows the optimum sequence of interconnected domains to be selected and network policy to be applied if applicable, via the use of a hierarchical relationship between PCEs.</t>
              <t indent="0">Combining the capabilities of stateful PCE and the hierarchical PCE would be advantageous. This document describes general considerations and use cases for the deployment of stateful, but not stateless, PCEs using the hierarchical PCE architecture.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8751"/>
          <seriesInfo name="DOI" value="10.17487/RFC8751"/>
        </reference>
        <reference anchor="RFC9603" target="https://www.rfc-editor.org/info/rfc9603" quoteTitle="true" derivedAnchor="RFC9603">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for IPv6 Segment Routing</title>
            <author fullname="C. Li" initials="C." role="editor" surname="Li"/>
            <author fullname="P. Kaladharan" initials="P." surname="Kaladharan"/>
            <author fullname="S. Sivabalan" initials="S." surname="Sivabalan"/>
            <author fullname="M. Koldychev" initials="M." surname="Koldychev"/>
            <author fullname="Y. Zhu" initials="Y." surname="Zhu"/>
            <date month="July" year="2024"/>
            <abstract>
              <t indent="0">Segment Routing (SR) can be used to steer packets through a network using the IPv6 or MPLS data plane, employing the source routing paradigm.</t>
              <t indent="0">An SR Path can be derived from a variety of mechanisms, including an IGP Shortest Path Tree (SPT), explicit configuration, or a Path Computation Element (PCE).</t>
              <t indent="0">Since SR can be applied to both MPLS and IPv6 data planes, a PCE should be able to compute an SR Path for both MPLS and IPv6 data planes. The Path Computation Element Communication Protocol (PCEP) extension and mechanisms to support SR-MPLS have been defined. This document outlines the necessary extensions to support SR for the IPv6 data plane within PCEP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9603"/>
          <seriesInfo name="DOI" value="10.17487/RFC9603"/>
        </reference>
        <reference anchor="I-D.ietf-netmod-rfc8407bis" target="https://datatracker.ietf.org/doc/html/draft-ietf-netmod-rfc8407bis-28" quoteTitle="true" derivedAnchor="YANG-GUIDELINES">
          <front>
            <title>Guidelines for Authors and Reviewers of Documents Containing YANG Data Models</title>
            <author fullname="Andy Bierman" initials="A." surname="Bierman">
              <organization showOnFrontPage="true">YumaWorks</organization>
            </author>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization showOnFrontPage="true">Orange</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization showOnFrontPage="true">Huawei</organization>
            </author>
            <date day="5" month="June" year="2025"/>
            <abstract>
              <t indent="0">This document provides guidelines for authors and reviewers of specifications containing YANG data models, including IANA-maintained modules. Recommendations and procedures are defined, which are intended to increase interoperability and usability of Network Configuration Protocol (NETCONF) and RESTCONF Protocol implementations that utilize YANG modules. This document obsoletes RFC 8407. Also, this document updates RFC 8126 by providing additional guidelines for writing the IANA considerations for RFCs that specify IANA-maintained modules.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-rfc8407bis-28"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.ietf-pce-pcep-srv6-yang" target="https://datatracker.ietf.org/doc/html/draft-ietf-pce-pcep-srv6-yang-07" quoteTitle="true" derivedAnchor="YANG-PCEP-SRV6">
          <front>
            <title>A YANG Data Model for Segment Routing (SR) Policy and SR in IPv6 (SRv6) support in Path Computation Element Communications Protocol (PCEP)</title>
            <author fullname="Cheng Li" initials="C." surname="Li">
              <organization showOnFrontPage="true">Huawei Technologies</organization>
            </author>
            <author fullname="Siva Sivabalan" initials="S." surname="Sivabalan">
              <organization showOnFrontPage="true">Ciena Corporation</organization>
            </author>
            <author fullname="Shuping Peng" initials="S." surname="Peng">
              <organization showOnFrontPage="true">Huawei Technologies</organization>
            </author>
            <author fullname="Mike Koldychev" initials="M." surname="Koldychev">
              <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Luc-Fabrice Ndifor" initials="L." surname="Ndifor">
              <organization showOnFrontPage="true">MTN Cameroon</organization>
            </author>
            <date day="21" month="April" year="2025"/>
            <abstract>
              <t indent="0">This document augments a YANG data model for the management of Path Computation Element Communications Protocol (PCEP) for communications between a Path Computation Client (PCC) and a Path Computation Element (PCE), or between two PCEs in support for Segment Routing in IPv6 (SRv6) and SR Policy. The data model includes configuration data and state data (status information and counters for the collection of statistics).</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-pce-pcep-srv6-yang-07"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.ietf-teas-yang-te" target="https://datatracker.ietf.org/doc/html/draft-ietf-teas-yang-te-38" quoteTitle="true" derivedAnchor="YANG-TE">
          <front>
            <title>A YANG Data Model for Traffic Engineering Tunnels, Label Switched Paths and Interfaces</title>
            <author fullname="Tarek Saad" initials="T." surname="Saad">
              <organization showOnFrontPage="true">Cisco Systems Inc</organization>
            </author>
            <author fullname="Rakesh Gandhi" initials="R." surname="Gandhi">
              <organization showOnFrontPage="true">Cisco Systems Inc</organization>
            </author>
            <author fullname="Xufeng Liu" initials="X." surname="Liu">
              <organization showOnFrontPage="true">Alef Edge</organization>
            </author>
            <author fullname="Vishnu Pavan Beeram" initials="V. P." surname="Beeram">
              <organization showOnFrontPage="true">Juniper Networks</organization>
            </author>
            <author fullname="Igor Bryskin" initials="I." surname="Bryskin">
              <organization showOnFrontPage="true">Individual</organization>
            </author>
            <date day="29" month="May" year="2025"/>
            <abstract>
              <t indent="0">This document defines a YANG data model for the provisioning and management of Traffic Engineering (TE) tunnels, Label Switched Paths (LSPs), and interfaces. The model covers data that is independent of any technology or dataplane encapsulation and is divided into two YANG modules that cover device-specific, and device independent data. This model covers data for configuration, operational state, remote procedural calls, and event notifications.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-teas-yang-te-38"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
      </references>
    </references>
    <section toc="include" anchor="sec.full.data-tree" numbered="true" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-the-full-pcep-data-model">The Full PCEP Data Model</name>
      <t indent="0" pn="section-appendix.a-1">The module "ietf-pcep" defines the basic components of a PCE
      speaker. The tree depth in the tree is set to 10.</t>
      <sourcecode name="" type="yangtree" markers="false" pn="section-appendix.a-2">
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 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    -&gt; /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?      -&gt; /pcep/entity/peers/peer/addr
        |     |  +--ro srp-id?    uint32
        |     +--ro initiation {pce-initiated}?
        |     |  +--ro enabled?   boolean
        |     |  +--ro peer?      -&gt; /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
        |        |       -&gt; /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 (type)?
        |     |        +--:(numbered-node-hop)
        |     |        |  +--ro numbered-node-hop
        |     |        |     +--ro node-id     te-node-id
        |     |        |     +--ro hop-type?   te-hop-type
        |     |        +--:(numbered-link-hop)
        |     |        |  +--ro numbered-link-hop
        |     |        |     +--ro link-tp-id    te-tp-id
        |     |        |     +--ro hop-type?     te-hop-type
        |     |        |     +--ro direction?    te-link-direction
        |     |        +--:(unnumbered-link-hop)
        |     |        |  +--ro unnumbered-link-hop
        |     |        |     +--ro link-tp-id    te-tp-id
        |     |        |     +--ro node-id       te-node-id
        |     |        |     +--ro hop-type?     te-hop-type
        |     |        |     +--ro direction?    te-link-direction
        |     |        +--:(as-number)
        |     |        |  +--ro as-number-hop
        |     |        |     +--ro as-number    inet:as-number
        |     |        |     +--ro hop-type?    te-hop-type
        |     |        +--:(label)
        |     |           +--ro label-hop
        |     |              +--ro te-label
        |     |                    ...
        |     +--ro pcc-requester?   -&gt; /pcep/entity/peers/peer/addr
        |     +--ro req-id?          uint32
        |     +--ro retrieved?       boolean
        |     +--ro pcc-retrieved?   -&gt; /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 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?
                    |       -&gt; ../../../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    -&gt; /pcep/entity/peers/peer/addr

  notifications:
    +---n pcep-session-up
    |  +--ro peer-addr?           -&gt; /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?           -&gt; /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?              -&gt; /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?
    |  |       -&gt; /pcep/entity/peers/peer/addr
    |  +--ro overloaded?                   boolean
    |  +--ro overloaded-clear-timestamp?   yang:timestamp
    +---n pcep-session-peer-overload
    |  +--ro peer-addr?
    |  |       -&gt; /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?
       |       -&gt; /pcep/entity/peers/peer/addr
       +--ro peer-overloaded?                   boolean
       +--ro peer-overloaded-clear-timestamp?   yang:timestamp
</sourcecode>
    </section>
    <section toc="include" numbered="true" removeInRFC="false" pn="section-appendix.b">
      <name slugifiedName="name-example">Example</name>
      <t indent="0" pn="section-appendix.b-1">The example below provides an overview of PCEP peer session
      information and LSP-DB in the "ietf-pcep" module.</t>
      <figure anchor="example" align="left" suppress-title="false" pn="figure-1">
        <name slugifiedName="name-example-2">Example</name>
        <artset pn="section-appendix.b-2.1">
          <artwork type="svg" align="left" name="" alt="" pn="section-appendix.b-2.1.1">
<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" name="" alt="" pn="section-appendix.b-2.1.2">
       +-------+                  +-------+
       |       |                  |       |
       | PCC1  |&lt;----------------&gt;|       |
       |       |                  |       |
       +-------+                  |       |
      IP:192.0.2.1                |       |
                                  |  PCE  |
                                  |       |
       +-------+                  |       |
       |       |                  |       |
       | PCC2  |&lt;----------------&gt;|       |
       |       |                  |       |
       +-------+                  |       |
      IP:192.0.2.2                |       |
                                  |       |
                                  |       |
       +-------+                  |       |
       |       |                  |       |
       | PCC4  |&lt;----------------&gt;|       |
       |       |                  |       |
       +-------+                  |       |
      IP:2001:db8::4              |       |
                                  +-------+
                                  192.0.2.3
                                  2001:db8::3
</artwork>
        </artset>
      </figure>
      <sourcecode name="" type="yang" markers="false" pn="section-appendix.b-3">
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"
                }
              ]
            }
          }
        ]
      }
    }
  }
}
</sourcecode>
      <t indent="0" pn="section-appendix.b-4">Similarly, a PCEP session with an IPv6 address between a PCE (2001:db8::3)
      and a PCC (2001:db8::4) could also be set up.</t>
    </section>
    <section toc="include" numbered="true" removeInRFC="false" pn="section-appendix.c">
      <name slugifiedName="name-design-objectives">Design Objectives</name>
      <t indent="0" pn="section-appendix.c-1">This section describes some of the design objectives for the model:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-appendix.c-2">
        <li pn="section-appendix.c-2.1">
          <t indent="0" pn="section-appendix.c-2.1.1">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 pn="section-appendix.c-2.2">
          <t indent="0" pn="section-appendix.c-2.2.1">The data model should be suitable for new implementations to use
          as is.</t>
        </li>
        <li pn="section-appendix.c-2.3">
          <t indent="0" pn="section-appendix.c-2.3.1">Mapping to the PCEP MIB module <xref target="RFC7420" format="default" sectionFormat="of" derivedContent="RFC7420"/> should be clear.</t>
        </li>
        <li pn="section-appendix.c-2.4">
          <t indent="0" pn="section-appendix.c-2.4.1">The data model should allow for static configurations of peers.</t>
        </li>
        <li pn="section-appendix.c-2.5">
          <t indent="0" pn="section-appendix.c-2.5.1">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 that augments the base
          data model.</t>
        </li>
        <li pn="section-appendix.c-2.6">
          <t indent="0" pn="section-appendix.c-2.6.1">It should be fairly straightforward to augment the base data model
    for advanced PCE features.</t>
        </li>
      </ul>
    </section>
    <section toc="include" numbered="true" removeInRFC="false" pn="section-appendix.d">
      <name slugifiedName="name-relationship-with-pcep-mib">Relationship with PCEP MIB</name>
      <t indent="0" pn="section-appendix.d-1">If a node implements the PCEP MIB <xref target="RFC7420" format="default" sectionFormat="of" derivedContent="RFC7420"/>, data nodes from the
   YANG module can be mapped to table entries in the PCEP MIB.</t>
      <table anchor="tab.mib" align="center" pn="table-3">
        <name slugifiedName="name-high-level-relationship-wit">High-Level Relationship with PCEP MIB</name>
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">YANG Data Nodes</th>
            <th align="left" colspan="1" rowspan="1">PCEP MIB Objects</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">/pcep/entity</td>
            <td align="left" colspan="1" rowspan="1">PcePcepEntityEntry</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/pcep/entity/peers/peer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerEntry</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/pcep/entity/peers/peer/sessions/session</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessEntry</td>
          </tr>
        </tbody>
      </table>
      <table anchor="tab.mib.entity" align="center" pn="table-4">
        <name slugifiedName="name-relationship-with-pcep-mib-">Relationship with PCEP MIB for Entity</name>
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">YANG Data Nodes</th>
            <th align="left" colspan="1" rowspan="1">PCEP MIB Objects</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">-</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityIndex</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">admin-status</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityAdminStatus</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">oper-status</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityOperStatus</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">addr</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityAddrType, pcePcepEntityAddr</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">connect-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityConnectTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">connect-max-retry</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityConnectMaxRetry</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">init-back-off-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityInitBackoffTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">max-back-off-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityMaxBackoffTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">open-wait-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityOpenWaitTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">keep-wait-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityKeepWaitTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">keepalive-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityKeepAliveTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">dead-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityDeadTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">allow-negotiation</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityAllowNegotiation</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">max-keepalive-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityMaxKeepAliveTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">max-dead-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityMaxDeadTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">min-keepalive-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityMinKeepAliveTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">min-dead-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityMinDeadTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">sync-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntitySyncTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">request-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityRequestTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">max-sessions</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityMaxSessions</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">max-unknown-reqs</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityMaxUnknownReqs</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">max-unknown-msgs</td>
            <td align="left" colspan="1" rowspan="1">pcePcepEntityMaxUnknownMsgs</td>
          </tr>
        </tbody>
      </table>
      <table anchor="tab.mib.peer" align="center" pn="table-5">
        <name slugifiedName="name-relationship-with-pcep-mib-f">Relationship with PCEP MIB for Peer</name>
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">YANG Data Nodes in /pcep/entity/peers/peer</th>
            <th align="left" colspan="1" rowspan="1">PCEP MIB Objects</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">addr</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerAddrType,pcePcepPeerAddr</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">role</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerRole</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">discontinuity-time</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerDiscontinuityTime</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">initiate-session</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerInitiateSession</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">session-exists</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerSessionExists</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">sess-setup-ok</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumSessSetupOK</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">sess-setup-fail</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumSessSetupFail</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">session-up-time</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerSessionUpTime</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">session-fail-time</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerSessionFailTime</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">session-fail-up-time</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerSessionFailUpTime</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/rsp-time-avg</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerAvgRspTime</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/rsp-time-lwm</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerLWMRspTime</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/rsp-time-hwm</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerHWMRspTime</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcreq-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumPCReqSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcreq-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumPCReqRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcrep-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumPCRepSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcrep-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumPCRepRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcerr-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumPCErrSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcerr-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumPCErrRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcntf-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumPCNtfSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcntf-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumPCNtfRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/keepalive-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumKeepaliveSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/keepalive-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumKeepaliveRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/unknown-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumUnknownRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/corrupt-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumCorruptRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/svec/svec-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumSvecSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/svec/svec-req-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumSvecReqSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent-pend-rep</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqSentPendRep</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent-ero-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqSentEroRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent-nopath-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqSentNoPathRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent-cancel-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqSentCancelRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent-error-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqSentErrorRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent-timeout</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqSentTimeout</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent-cancel-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqSentCancelSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent-closed</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqSentClosed</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/svec/svec-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumSvecRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/svec/svec-req-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumSvecReqRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd-pend-rep</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqRcvdPendRep</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd-ero-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqRcvdEroSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd-nopath-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqRcvdNoPathSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd-cancel-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqRcvdCancelSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd-error-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqRcvdErrorSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd-cancel-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqRcvdCancelRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd-closed</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqRcvdClosed</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/rep-rcvd-unknown</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumRepRcvdUnknown</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd-unknown</td>
            <td align="left" colspan="1" rowspan="1">pcePcepPeerNumReqRcvdUnknown</td>
          </tr>
        </tbody>
      </table>
      <table anchor="tab.mib.session" align="center" pn="table-6">
        <name slugifiedName="name-relationship-with-pcep-mib-fo">Relationship with PCEP MIB for Session</name>
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">YANG Data Nodes in /pcep/entity/peers/peer/sessions/session</th>
            <th align="left" colspan="1" rowspan="1">PCEP MIB Objects</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">initiator</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessInitiator</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">state-last-change</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessStateLastChange</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">state</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessState</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">connect-retry</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessConnectRetry</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">local-id</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessLocalID</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">remote-id</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessRemoteID</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">keepalive-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessKeepaliveTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">peer-keepalive-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessPeerKeepaliveTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">dead-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessDeadTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">peer-dead-timer</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessPeerDeadTimer</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">ka-hold-time-rem</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessKAHoldTimeRem</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">overloaded</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessOverloaded</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">overloaded-timestamp</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessOverloadTime</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">peer-overloaded</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessPeerOverloaded</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">peer-overloaded-timestamp</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessPeerOverloadTime</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/discontinuity-time</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessDiscontinuityTime</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/rsp-time-avg</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessAvgRspTime</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/rsp-time-lwm</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessLWMRspTime</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/rsp-time-hwm</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessHWMRspTime</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcreq-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumPCReqSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcreq-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumPCReqRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcrep-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumPCRepSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcrep-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumPCRepRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcerr-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumPCErrSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcerr-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumPCErrRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcntf-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumPCNtfSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/pcntf-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumPCNtfRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/keepalive-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumKeepaliveSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/keepalive-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumKeepaliveRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/unknown-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumUnknownRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/corrupt-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumCorruptRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/svec/svec-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumSvecSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/svec/svec-req-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumSvecReqSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent-pend-rep</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqSentPendRep</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent-ero-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqSentEroRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent-nopath-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqSentNoPathRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent-cancel-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqSentCancelRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent-error-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqSentErrorRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent-timeout</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqSentTimeout</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-sent-cancel-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqSentCancelSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/svec/svec-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumSvecRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/svec/svec-req-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumSvecReqRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd-pend-rep</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqRcvdPendRep</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd-ero-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqRcvdEroSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd-nopath-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqRcvdNoPathSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd-cancel-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqRcvdCancelSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd-error-sent</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqRcvdErrorSent</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd-cancel-rcvd</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqRcvdCancelRcvd</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/rep-rcvd-unknown</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumRepRcvdUnknown</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">/stats/req-rcvd-unknown</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessNumReqRcvdUnknown</td>
          </tr>
        </tbody>
      </table>
      <table anchor="tab.mib.not" align="center" pn="table-7">
        <name slugifiedName="name-relationship-with-pcep-mib-n">Relationship with PCEP MIB Notification</name>
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">YANG notifications</th>
            <th align="left" colspan="1" rowspan="1">PCEP MIB NOTIFICATIONS</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">pcep-session-up</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessUp</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">pcep-session-down</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessDown</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">pcep-session-local-overload</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessLocalOverload</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">pcep-session-local-overload-clear</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessLocalOverloadClear</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">pcep-session-peer-overload</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessPeerOverload</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">pcep-session-peer-overload-clear</td>
            <td align="left" colspan="1" rowspan="1">pcePcepSessPeerOverloadClear</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section toc="include" numbered="false" removeInRFC="false" pn="section-appendix.e">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.e-1">The initial draft version of this document was based on the PCEP MIB
     <xref target="RFC7420" format="default" sectionFormat="of" derivedContent="RFC7420"/>.  The authors of this document would like to
     thank the authors of <xref target="RFC7420" format="default" sectionFormat="of" derivedContent="RFC7420"/>.</t>
      <t indent="0" pn="section-appendix.e-2">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="include" numbered="false" removeInRFC="false" pn="section-appendix.f">
      <name slugifiedName="name-contributors">Contributors</name>
      <contact fullname="Rohit Pobbathi">
        <organization showOnFrontPage="true">Nokia Networks</organization>
        <address>
          <postal>
            <country>India</country>
          </postal>
          <email>rohit.pobbathi_ashok@nokia.com</email>
        </address>
      </contact>
      <contact fullname="Vinod KumarS">
        <organization showOnFrontPage="true"/>
        <address>
          <postal>
            <country>India</country>
          </postal>
          <email>vinods.kumar@gmail.com</email>
        </address>
      </contact>
      <contact fullname="Zafar Ali">
        <organization showOnFrontPage="true">Cisco Systems</organization>
        <address>
          <postal>
            <country>Canada</country>
          </postal>
          <email>zali@cisco.com</email>
        </address>
      </contact>
      <contact fullname="Xufeng Liu">
        <organization showOnFrontPage="true"/>
        <address>
          <email>xufeng.liu.ietf@gmail.com</email>
        </address>
      </contact>
      <contact fullname="Young Lee">
        <organization showOnFrontPage="true">Samsung</organization>
        <address>
          <email>younglee.tx@gmail.com</email>
        </address>
      </contact>
      <contact fullname="Udayasree Palle">
        <organization showOnFrontPage="true"/>
        <address>
          <email>udayasreereddy@gmail.com</email>
        </address>
      </contact>
      <contact fullname="Xian Zhang">
        <organization showOnFrontPage="true">Huawei Technologies</organization>
        <address>
          <postal>
            <street>Bantian, Longgang District</street>
            <city>Shenzhen</city>
            <code>518129</code>
            <country>China</country>
          </postal>
          <email>zhang.xian@huawei.com</email>
        </address>
      </contact>
      <contact fullname="Avantika">
        <organization showOnFrontPage="true">Ciena</organization>
        <address>
          <postal>
            <country>India</country>
          </postal>
          <email>avantika.srm@gmail.com</email>
        </address>
      </contact>
      <contact fullname="Shashikanth">
        <organization showOnFrontPage="true"/>
        <address>
          <postal>
            <country>India</country>
          </postal>
          <email>shashivh@gmail.com</email>
        </address>
      </contact>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.g">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="D" surname="Dhody" fullname="Dhruv Dhody" role="editor">
        <organization showOnFrontPage="true">Huawei</organization>
        <address>
          <postal>
            <country>India</country>
          </postal>
          <email>dhruv.ietf@gmail.com</email>
        </address>
      </author>
      <author fullname="Vishnu Pavan Beeram" initials="V." surname="Beeram">
        <organization showOnFrontPage="true">Juniper Networks</organization>
        <address>
          <postal>
            <country>India</country>
          </postal>
          <email>vbeeram@juniper.net</email>
        </address>
      </author>
      <author fullname="Jonathan Hardwick" initials="J." surname="Hardwick">
        <organization showOnFrontPage="true"/>
        <address>
          <postal>
            <country>United Kingdom</country>
          </postal>
          <email>jonathan.e.hardwick@gmail.com</email>
        </address>
      </author>
      <author fullname="Jeff Tantsura" initials="J." surname="Tantsura">
        <organization showOnFrontPage="true">Nvidia</organization>
        <address>
          <postal>
            <country>United States of America</country>
          </postal>
          <email>jefftant.ietf@gmail.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
