<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-pce-sid-algo-29" number="9933" ipr="trust200902" updates="8664, 9603" obsoletes="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" prepTime="2026-07-15T18:29:30" indexInclude="true" scripts="Common,Latin">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-pce-sid-algo-29" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9933" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="SR-Algorithm in PCEP">Carrying SR-Algorithm in Path Computation Element Communication Protocol (PCEP)</title>
    <seriesInfo name="RFC" value="9933" stream="IETF"/>
    <author fullname="Samuel Sidor" initials="S." surname="Sidor">
      <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Eurovea Central 3.</street>
          <street>Pribinova 10</street>
          <city>Bratislava</city>
          <code>811 09</code>
          <country>Slovakia</country>
        </postal>
        <email>ssidor@cisco.com</email>
      </address>
    </author>
    <author fullname="Zoey Rose" initials="Z." surname="Rose">
      <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>2300 East President George</street>
          <city>Richardson</city>
          <region>TX</region>
          <code>75082</code>
          <country>United States of America</country>
        </postal>
        <email>atokar@cisco.com</email>
      </address>
    </author>
    <author fullname="Shaofu Peng" initials="S." surname="Peng">
      <organization showOnFrontPage="true">ZTE Corporation</organization>
      <address>
        <postal>
          <street>No.50 Software Avenue</street>
          <city>Nanjing</city>
          <region>Jiangsu</region>
          <code>210012</code>
          <country>China</country>
        </postal>
        <email>peng.shaofu@zte.com.cn</email>
      </address>
    </author>
    <author fullname="Shuping Peng" initials="S." surname="Peng">
      <organization showOnFrontPage="true">Huawei Technologies</organization>
      <address>
        <postal>
          <street>Huawei Campus, No. 156 Beiqing Rd.</street>
          <city>Beijing</city>
          <code>100095</code>
          <country>China</country>
        </postal>
        <email>pengshuping@huawei.com</email>
      </address>
    </author>
    <author fullname="Andrew Stone" initials="A." surname="Stone">
      <organization showOnFrontPage="true">Nokia</organization>
      <address>
        <email>andrew.stone@nokia.com</email>
      </address>
    </author>
    <date month="07" year="2026"/>
    <area>RTG</area>
    <workgroup>pce</workgroup>
    <keyword>Prefix-SID Algorithm</keyword>
    <keyword>Flexible Algorithm</keyword>
    <keyword>IGP Algorithm Types</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document specifies extensions to the Path Computation Element Communication Protocol (PCEP) to enhance support for Segment Routing (SR) with a focus on the use of Segment Identifiers (SIDs) and SR-Algorithms in Traffic Engineering (TE). The SR-Algorithm associated with a SID defines the path computation algorithm used by Interior Gateway Protocols (IGPs). It introduces mechanisms for PCEP peers to signal the SR-Algorithm associated with SIDs by encoding this information in Explicit Route Object (ERO) and Record Route Object (RRO) subobjects, enables SR-Algorithm constraints for path computation, and defines new metric types for the METRIC object. This document updates RFC 8664 and RFC 9603 to allow such extensions.</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/rfc9933" 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) 2026 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>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
              </li>
            </ul>
          </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-terminology">Terminology</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-motivation">Motivation</xref></t>
          </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-object-formats">Object Formats</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-open-object">OPEN Object</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-sr-pce-capability-sub-tlv">SR PCE Capability Sub-TLV</xref></t>
                  </li>
                  <li pn="section-toc.1-1.4.2.1.2.2">
                    <t indent="0" pn="section-toc.1-1.4.2.1.2.2.1"><xref derivedContent="4.1.2" format="counter" sectionFormat="of" target="section-4.1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-srv6-pce-capability-sub-tlv">SRv6 PCE Capability Sub-TLV</xref></t>
                  </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-sr-ero-subobject">SR-ERO Subobject</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2.2.2">
                  <li pn="section-toc.1-1.4.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.4.2.2.2.1.1"><xref derivedContent="4.2.1" format="counter" sectionFormat="of" target="section-4.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-subobject-extension-block">Subobject Extension Block</xref></t>
                  </li>
                  <li pn="section-toc.1-1.4.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.4.2.2.2.2.1"><xref derivedContent="4.2.2" format="counter" sectionFormat="of" target="section-4.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-guidance-for-future-extensi">Guidance for Future Extensions</xref></t>
                  </li>
                </ul>
              </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-srv6-ero-subobject">SRv6-ERO Subobject</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.4">
                <t indent="0" pn="section-toc.1-1.4.2.4.1"><xref derivedContent="4.4" format="counter" sectionFormat="of" target="section-4.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sr-algorithm-tlv">SR-Algorithm TLV</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.5">
                <t indent="0" pn="section-toc.1-1.4.2.5.1"><xref derivedContent="4.5" format="counter" sectionFormat="of" target="section-4.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-extensions-to-metric-object">Extensions to METRIC Object</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2.5.2">
                  <li pn="section-toc.1-1.4.2.5.2.1">
                    <t indent="0" pn="section-toc.1-1.4.2.5.2.1.1"><xref derivedContent="4.5.1" format="counter" sectionFormat="of" target="section-4.5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-path-min-delay-metric">Path Min Delay Metric</xref></t>
                  </li>
                  <li pn="section-toc.1-1.4.2.5.2.2">
                    <t indent="0" pn="section-toc.1-1.4.2.5.2.2.1"><xref derivedContent="4.5.2" format="counter" sectionFormat="of" target="section-4.5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-path-bandwidth-metric">Path Bandwidth Metric</xref></t>
                  </li>
                  <li pn="section-toc.1-1.4.2.5.2.3">
                    <t indent="0" pn="section-toc.1-1.4.2.5.2.3.1"><xref derivedContent="4.5.3" format="counter" sectionFormat="of" target="section-4.5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-user-defined-metric">User-Defined Metric</xref></t>
                  </li>
                </ul>
              </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-operation">Operation</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ero-and-rro-subobjects">ERO and RRO Subobjects</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2.1.2">
                  <li pn="section-toc.1-1.5.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.5.2.1.2.1.1"><xref derivedContent="5.1.1" format="counter" sectionFormat="of" target="section-5.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sr-ero">SR-ERO</xref></t>
                  </li>
                  <li pn="section-toc.1-1.5.2.1.2.2">
                    <t indent="0" pn="section-toc.1-1.5.2.1.2.2.1"><xref derivedContent="5.1.2" format="counter" sectionFormat="of" target="section-5.1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-srv6-ero">SRv6-ERO</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sr-algorithm-constraint">SR-Algorithm Constraint</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2.2.2">
                  <li pn="section-toc.1-1.5.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.5.2.2.2.1.1"><xref derivedContent="5.2.1" format="counter" sectionFormat="of" target="section-5.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-path-computation-for-sr-alg">Path Computation for SR-Algorithms 0-127</xref></t>
                  </li>
                  <li pn="section-toc.1-1.5.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.5.2.2.2.2.1"><xref derivedContent="5.2.2" format="counter" sectionFormat="of" target="section-5.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-path-computation-for-flexib">Path Computation for Flexible Algorithms</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-metric-types">Metric Types</xref></t>
              </li>
            </ul>
          </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-manageability-consideration">Manageability Considerations</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-control-of-function-and-pol">Control of Function and Policy</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-information-and-data-models">Information and Data Models</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.3">
                <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-liveness-detection-and-moni">Liveness Detection and Monitoring</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.4">
                <t indent="0" pn="section-toc.1-1.6.2.4.1"><xref derivedContent="6.4" format="counter" sectionFormat="of" target="section-6.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-verify-correct-operations">Verify Correct Operations</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.5">
                <t indent="0" pn="section-toc.1-1.6.2.5.1"><xref derivedContent="6.5" format="counter" sectionFormat="of" target="section-6.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-on-other-proto">Requirements on Other Protocols and Functional Components</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.6">
                <t indent="0" pn="section-toc.1-1.6.2.6.1"><xref derivedContent="6.6" format="counter" sectionFormat="of" target="section-6.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-impact-on-network-operation">Impact on Network Operations</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-operational-considerations">Operational Considerations</xref></t>
          </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-security-considerations">Security Considerations</xref></t>
          </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-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sr-capability-flag">SR Capability Flag</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.2">
                <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-srv6-pce-capability-flag">SRv6 PCE Capability Flag</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.3">
                <t indent="0" pn="section-toc.1-1.9.2.3.1"><xref derivedContent="9.3" format="counter" sectionFormat="of" target="section-9.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sr-ero-flag">SR-ERO Flag</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.4">
                <t indent="0" pn="section-toc.1-1.9.2.4.1"><xref derivedContent="9.4" format="counter" sectionFormat="of" target="section-9.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-srv6-ero-flag">SRv6-ERO Flag</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.5">
                <t indent="0" pn="section-toc.1-1.9.2.5.1"><xref derivedContent="9.5" format="counter" sectionFormat="of" target="section-9.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-pcep-tlv-types">PCEP TLV Types</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.6">
                <t indent="0" pn="section-toc.1-1.9.2.6.1"><xref derivedContent="9.6" format="counter" sectionFormat="of" target="section-9.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-metric-types-2">Metric Types</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.7">
                <t indent="0" pn="section-toc.1-1.9.2.7.1"><xref derivedContent="9.7" format="counter" sectionFormat="of" target="section-9.7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-pcep-error-object">PCEP-Error Object</xref></t>
              </li>
            </ul>
          </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-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.10.2">
              <li pn="section-toc.1-1.10.2.1">
                <t indent="0" pn="section-toc.1-1.10.2.1.1"><xref derivedContent="10.1" format="counter" sectionFormat="of" target="section-10.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.2">
                <t indent="0" pn="section-toc.1-1.10.2.2.1"><xref derivedContent="10.2" format="counter" sectionFormat="of" target="section-10.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-contributors">Contributors</xref></t>
          </li>
          <li pn="section-toc.1-1.13">
            <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="Introduction" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1"><xref target="RFC5440" format="default" sectionFormat="of" derivedContent="RFC5440"/> describes the Path Computation Element Communication Protocol (PCEP) for communication between a Path Computation Client (PCC) and a Path Computation Element (PCE) or between a pair of PCEs. <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/> and <xref target="RFC9603" format="default" sectionFormat="of" derivedContent="RFC9603"/> specify PCEP extensions to support Segment Routing (SR) over MPLS and IPv6 data planes, respectively.</t>
      <t indent="0" pn="section-1-2">This document specifies extensions to PCEP to enhance support for  SR Traffic Engineering (TE). Specifically, it focuses on the use of Segment Identifiers (SIDs) and SR-Algorithms. An SR-Algorithm associated with a SID defines the path computation algorithm used by IGPs.</t>
      <t indent="0" pn="section-1-3">The PCEP extensions specified in this document are as follows:
      </t>
      <dl newline="false" spacing="normal" indent="3" pn="section-1-4">
        <dt pn="section-1-4.1">Signaling SR-Algorithm in ERO and RRO:</dt>
        <dd pn="section-1-4.2"> Mechanisms are introduced for PCEP peers
                        to exchange information about the SR-Algorithm associated with each SID. This includes
                        extending SR-ERO, SR-RRO, SRv6-ERO, and SRv6-RRO subobjects to carry an Algorithm field.
                        This document updates <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/> and <xref target="RFC9603" format="default" sectionFormat="of" derivedContent="RFC9603"/> to enable
                        such encoding.</dd>
        <dt pn="section-1-4.3">SR-Algorithm Constraint for Path Computation:</dt>
        <dd pn="section-1-4.4"> Mechanisms are defined for signaling
                        a specific SR-Algorithm as a constraint to the PCE for path computation. This includes
                        a new SR-Algorithm TLV carried in the Label Switched Path Attributes (LSPA) object.</dd>
        <dt pn="section-1-4.5">Extensions to METRIC object:</dt>
        <dd pn="section-1-4.6">Several new metric types are introduced for the METRIC
                        object to support optimization metrics derived from Flexible Algorithm Definitions (FADs) during Flexible Algorithm path
                        computation; their application is not restricted to Flexible Algorithms, and they may be
                        used with Label Switched Paths (LSPs) set up using different Path Setup Types (PSTs).</dd>
      </dl>
      <section anchor="Language" numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-1.1-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>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-terminology">Terminology</name>
      <t indent="0" pn="section-2-1">This document uses the following terms defined in <xref target="RFC5440" format="default" sectionFormat="of" derivedContent="RFC5440"/>: Explicit Route Object (ERO), Label Switched Path Attributes (LSPA), Path Computation Client (PCC), Path Computation Element (PCE), Path Computation Element Communication Protocol (PCEP), PCEP peer, PCEP speaker, Record Route Object (RRO), and Traffic Engineering Database (TED).</t>
      <t indent="0" pn="section-2-2">This document uses the following term defined in <xref target="RFC3031" format="default" sectionFormat="of" derivedContent="RFC3031"/>: Label Switched Path (LSP).</t>
      <t indent="0" pn="section-2-3">This document uses the following term defined in <xref target="RFC9479" format="default" sectionFormat="of" derivedContent="RFC9479"/> and <xref target="RFC9492" format="default" sectionFormat="of" derivedContent="RFC9492"/>: Application-Specific Link Attributes (ASLA).</t>
      <t indent="0" pn="section-2-4">This document uses the following terms defined in <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/>: Node or Adjacency Identifier (NAI) and Segment Routing Database (SR-DB).</t>
      <t indent="0" pn="section-2-5">This document uses the following terms defined in <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="RFC9350"/>: Flexible Algorithm Definition (FAD) and winning FAD.</t>
      <t indent="0" pn="section-2-6"> Note that the base PCEP specification <xref target="RFC4655" format="default" sectionFormat="of" derivedContent="RFC4655"/> originally defined the use of the PCE architecture for MPLS and GMPLS networks
     with LSPs instantiated using the RSVP-TE signaling protocol. Over time, support for additional PSTs, such as
     SRv6, has been introduced <xref target="RFC9603" format="default" sectionFormat="of" derivedContent="RFC9603"/>. The term "LSP" is used extensively in PCEP specifications and, in the
     context of this document, refers to a Candidate Path within an SR Policy, which may be an SRv6 path (still represented
     using the LSP object as specified in <xref target="RFC8231" format="default" sectionFormat="of" derivedContent="RFC8231"/>).</t>
      <t indent="0" pn="section-2-7">The term "extension block" is used in this document to identify the additional bytes appended to a PCEP object, which may exist depending on the inclusion of a flag in that object</t>
      <t indent="0" pn="section-2-8">The following terminologies are used in this document:
      </t>
      <dl newline="false" spacing="normal" indent="3" pn="section-2-9">
        <dt pn="section-2-9.1">P2MP:</dt>
        <dd pn="section-2-9.2"> Point-to-Multipoint</dd>
        <dt pn="section-2-9.3">Subobject Extension Block:</dt>
        <dd pn="section-2-9.4"> Optional, variable-length extension block for SR-ERO and SR-RRO subobjects defined in <xref target="Subobject-Extension-Block" format="default" sectionFormat="of" derivedContent="Section 4.2.1"/> of this document.</dd>
        <dt pn="section-2-9.5">Subobject Extension Block Flag (SEBF):</dt>
        <dd pn="section-2-9.6"> Any flag in the Flags field of SR-ERO or SR-RRO subobjects that is used to signal that the corresponding field is encoded in the Subobject Extension Block.</dd>
      </dl>
    </section>
    <section anchor="Motivation" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-motivation">Motivation</name>
      <t indent="0" pn="section-3-1">Existing PCEP specifications lack mechanisms to explicitly signal and negotiate SR-Algorithm capabilities and constraints. This limits the ability of PCEs to make informed path computation decisions based on the specific SR-Algorithms supported and desired within the network. The absence of an explicit SR-Algorithm specification in PCEP messages implied no specific constraint on the SR-Algorithm to be used for path computation, effectively allowing the use of SIDs with any SR-Algorithm.</t>
      <t indent="0" pn="section-3-2">A primary motivation for these extensions is to enable the PCE to leverage the path computation logic and topological information derived from IGPs, including Flexible Algorithms. Aligning PCE path computation with these IGP algorithms enables network operators to obtain paths that are congruent with the underlying routing behavior, which can result in segment lists with a reduced number of SIDs. The support for SR-Algorithm constraints in PCE path computation simplifies the deployment and management of Flexible Algorithm paths in multi-domain network scenarios.</t>
      <t indent="0" pn="section-3-3">The PCE and the PCC may independently compute SR-TE paths with different SR-Algorithms. This information needs to be exchanged between PCEP peers for purposes such as network monitoring and troubleshooting. In scenarios involving multiple PCEs, when a PCC receives a path from the primary PCE, it needs to be able to report the complete path information, including the SR-Algorithm, to a backup PCE. This is essential for high availability (HA) scenarios, ensuring that the backup PCE can correctly verify Prefix SIDs.</t>
      <t indent="0" pn="section-3-4">The introduction of an SR-Algorithm TLV within the LSPA object allows operators to specify SR-Algorithm constraints directly, thereby refining path computations to meet specific needs, such as low-latency paths.</t>
      <t indent="0" pn="section-3-5">The ability to specify an SR-Algorithm per SID in ERO and RRO is crucial for multiple reasons, for example:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-6">
        <li pn="section-3-6.1">
          <t indent="0" pn="section-3-6.1.1">SID types without algorithm specified - Certain SID types, such as Binding SIDs (BSIDs) <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>, may not have an SR-Algorithm specified. It may be inaccurate to state that an entire end-to-end path adheres to a specific algorithm if it includes a BSID from another policy.</t>
        </li>
      </ul>
      <aside pn="section-3-7">
        <t indent="0" pn="section-3-7.1">Note: In SRv6, the BSID can be allocated from an algorithm-specific SRv6 Locator, which will result in the path to that BSID PCC node following that algorithm-specific path. However, the implicit algorithm of BSID is independent of the SR-Algorithm used for the SR Policy associated with that BSID.</t>
      </aside>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-8">
        <li pn="section-3-8.1">
          <t indent="0" pn="section-3-8.1.1">Topologies with two IGP domains, each using the same FAD but with differing algorithm numbers.</t>
        </li>
      </ul>
    </section>
    <section anchor="OBJECT-FORMATS" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-object-formats">Object Formats</name>
      <section anchor="THE-OPEN-SUBOBJECT" numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-open-object">OPEN Object</name>
        <section anchor="SR-CAP-FLAG" numbered="true" toc="include" removeInRFC="false" pn="section-4.1.1">
          <name slugifiedName="name-sr-pce-capability-sub-tlv">SR PCE Capability Sub-TLV</name>
          <t indent="0" pn="section-4.1.1-1">The SR-PCE-CAPABILITY sub-TLV is defined in <xref target="RFC8664" sectionFormat="of" section="4.1.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8664#section-4.1.2" derivedContent="RFC8664"/> to be included in the PATH-SETUP-TYPE-CAPABILITY TLV.</t>
          <t indent="0" pn="section-4.1.1-2">This document defines the following flag in the SR-PCE-CAPABILITY Sub-TLV Flags field:</t>
          <dl spacing="normal" newline="false" indent="3" pn="section-4.1.1-3">
            <dt pn="section-4.1.1-3.1">S (SR-Algorithm Capability) - bit 5:</dt>
            <dd pn="section-4.1.1-3.2">If the S flag is set to 1, a PCEP speaker indicates support for the Algorithm field and the Subobject Extension Block in the SR-ERO subobject described in <xref target="SR-ERO-Subobject" format="default" sectionFormat="of" derivedContent="Section 4.2"/> and the SR-Algorithm TLV described in <xref target="SR-Algorithm-TLV" format="default" sectionFormat="of" derivedContent="Section 4.4"/> for LSPs set up using PST 1 (Segment Routing) <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/>. It does not indicate support for these extensions for other PSTs. If the S flag is set to 0, behavior reverts to the procedures defined in existing specifications prior to the introduction of this extension.</dd>
          </dl>
        </section>
        <section anchor="SRv6-CAP-FLAG" numbered="true" toc="include" removeInRFC="false" pn="section-4.1.2">
          <name slugifiedName="name-srv6-pce-capability-sub-tlv">SRv6 PCE Capability Sub-TLV</name>
          <t indent="0" pn="section-4.1.2-1">The SRv6-PCE-CAPABILITY sub-TLV is defined in <xref target="RFC9603" sectionFormat="of" section="4.1.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9603#section-4.1.1" derivedContent="RFC9603"/> to be included in the PATH-SETUP-TYPE-CAPABILITY TLV.</t>
          <t indent="0" pn="section-4.1.2-2">This document defines the following flag in the SRv6-PCE-CAPABILITY Sub-TLV Flags field:</t>
          <dl spacing="normal" newline="false" indent="3" pn="section-4.1.2-3">
            <dt pn="section-4.1.2-3.1">SR-Algorithm Capability (S) - bit 13:</dt>
            <dd pn="section-4.1.2-3.2">If the S flag is set to 1, a PCEP speaker indicates support for the Algorithm field in the SRv6-ERO subobject described in <xref target="SRv6-ERO-Subobject" format="default" sectionFormat="of" derivedContent="Section 4.3"/> and the SR-Algorithm TLV described in <xref target="SR-Algorithm-TLV" format="default" sectionFormat="of" derivedContent="Section 4.4"/> for LSPs set up using PST 3 (SRv6) <xref target="RFC9603" format="default" sectionFormat="of" derivedContent="RFC9603"/>. It does not indicate support for these extensions for other PSTs. If the S flag is set to 0, behavior reverts to the procedures defined in existing specifications prior to the introduction of this extension.</dd>
          </dl>
        </section>
      </section>
      <section anchor="SR-ERO-Subobject" numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-sr-ero-subobject">SR-ERO Subobject</name>
        <t indent="0" pn="section-4.2-1">This document updates the SR-ERO subobject format defined in <xref target="RFC8664" sectionFormat="of" section="4.3.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8664#section-4.3.1" derivedContent="RFC8664"/> with a new optional, variable-length Subobject Extension Block field. The block is used to convey additional information, such as the Algorithm field, and is designed to allow future extensibility. Further, a new A flag in the Flags field is introduced as shown in <xref target="SR-ERO-subobject-format" format="default" sectionFormat="of" derivedContent="Figure 1"/>.</t>
        <figure anchor="SR-ERO-subobject-format" align="left" suppress-title="false" pn="figure-1">
          <name slugifiedName="name-sr-ero-subobject-format">SR-ERO Subobject Format</name>
          <artwork align="center" name="" type="" alt="" pn="section-4.2-2.1">
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |L|   Type=36   |     Length    |  NT   |     Flags   |A|F|S|C|M|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                         SID (optional)                        |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  //                   NAI (variable, optional)                  //
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  //       Subobject Extension Block (variable, optional)        //
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
        </figure>
        <t indent="0" pn="section-4.2-3">A new flag in the Flags field:

</t>
        <dl spacing="normal" newline="false" indent="3" pn="section-4.2-4">
          <dt pn="section-4.2-4.1">A (SR-Algorithm Flag):</dt>
          <dd pn="section-4.2-4.2">
            <t indent="0" pn="section-4.2-4.2.1">If set by a PCEP speaker, the Subobject Extension Block <bcp14>MUST</bcp14> be included in the SR-ERO subobject, as shown in <xref target="SR-ERO-subobject-format" format="default" sectionFormat="of" derivedContent="Figure 1"/>, along with the specified algorithm. The length of this block is variable and determined by subtracting the size of the fixed fields and any optional SID or NAI fields from the total subobject Length. The length of the Subobject Extension Block <bcp14>MUST</bcp14> always be a multiple of 4 bytes.
If this flag is set to 0, then either:</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2-4.2.2">
              <li pn="section-4.2-4.2.2.1">the Subobject Extension Block is not included and processing described in <xref target="RFC8664" sectionFormat="of" section="5.2.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8664#section-5.2.1" derivedContent="RFC8664"/> applies or</li>
              <li pn="section-4.2-4.2.2.2">the Subobject Extension Block is included (due to an SEBF in a future specifications) and the Algorithm field <bcp14>MUST</bcp14> be ignored.</li>
            </ul>
          </dd>
        </dl>
        <t indent="0" pn="section-4.2-5">This document updates the SR-ERO subobject validation defined in <xref target="RFC8664" sectionFormat="of" section="5.2.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8664#section-5.2.1" derivedContent="RFC8664"/> by extending existing validation to include the Subobject Extension Block and the A flag, as follows.</t>
        <t indent="0" pn="section-4.2-6">On receiving an SR-ERO subobject, a PCC <bcp14>MUST</bcp14> validate that the Length field, S bit, F bit, A bit, NT field, and any present SEBFs are consistent, as follows:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2-7">
          <li pn="section-4.2-7.1">
            <t indent="0" pn="section-4.2-7.1.1">If the Subobject Extension Block is included (i.e., if any SEBF, such as A or a future flag, is set to 1), the length of the subobject <bcp14>MUST</bcp14> include the size of the entire Subobject Extension Block as determined by the set of SEBFs.
            </t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2-7.1.2">
              <li pn="section-4.2-7.1.2.1">The minimum size of the Subobject Extension Block is 4 bytes when only a single SEBF (such as A) is set and may be longer (in multiples of 4 bytes) if additional SEBFs are set and require more space.</li>
              <li pn="section-4.2-7.1.2.2">The total subobject Length is the sum of the sizes of the fixed and optional fields (SID, NAI, etc.) and the total size of the Subobject Extension Block required by the set of SEBFs.</li>
              <li pn="section-4.2-7.1.2.3">
                <t indent="0" pn="section-4.2-7.1.2.3.1">The exact calculation of Length for each NT, S, F, and set of SEBFs is as follows:
                </t>
                <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2-7.1.2.3.2">
                  <li pn="section-4.2-7.1.2.3.2.1">If NT=0, the F bit <bcp14>MUST</bcp14> be 1, the S bit <bcp14>MUST</bcp14> be 0, and the Length <bcp14>MUST</bcp14> be 8 + the size of the Subobject Extension Block.</li>
                  <li pn="section-4.2-7.1.2.3.2.2">
                    <t indent="0" pn="section-4.2-7.1.2.3.2.2.1">If NT=1, the F bit <bcp14>MUST</bcp14> be 0.
                    </t>
                    <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2-7.1.2.3.2.2.2">
                      <li pn="section-4.2-7.1.2.3.2.2.2.1">If the S bit is 1, the Length <bcp14>MUST</bcp14> be 8 + the size of the Subobject Extension Block.</li>
                      <li pn="section-4.2-7.1.2.3.2.2.2.2">If the S bit is 0, the Length <bcp14>MUST</bcp14> be 12 + the size of the Subobject Extension Block.</li>
                    </ul>
                  </li>
                  <li pn="section-4.2-7.1.2.3.2.3">
                    <t indent="0" pn="section-4.2-7.1.2.3.2.3.1">If NT=2, the F bit <bcp14>MUST</bcp14> be 0.
                    </t>
                    <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2-7.1.2.3.2.3.2">
                      <li pn="section-4.2-7.1.2.3.2.3.2.1">If the S bit is 1, the Length <bcp14>MUST</bcp14> be 20 + the size of the Subobject Extension Block.</li>
                      <li pn="section-4.2-7.1.2.3.2.3.2.2">If the S bit is 0, the Length <bcp14>MUST</bcp14> be 24 + the size of the Subobject Extension Block.</li>
                    </ul>
                  </li>
                  <li pn="section-4.2-7.1.2.3.2.4">
                    <t indent="0" pn="section-4.2-7.1.2.3.2.4.1">If NT=3, the F bit <bcp14>MUST</bcp14> be 0.
                    </t>
                    <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2-7.1.2.3.2.4.2">
                      <li pn="section-4.2-7.1.2.3.2.4.2.1">If the S bit is 1, the Length <bcp14>MUST</bcp14> be 12 + the size of the Subobject Extension Block.</li>
                      <li pn="section-4.2-7.1.2.3.2.4.2.2">If the S bit is 0, the Length <bcp14>MUST</bcp14> be 16 + the size of the Subobject Extension Block.</li>
                    </ul>
                  </li>
                  <li pn="section-4.2-7.1.2.3.2.5">
                    <t indent="0" pn="section-4.2-7.1.2.3.2.5.1">If NT=4, the F bit <bcp14>MUST</bcp14> be 0.
                    </t>
                    <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2-7.1.2.3.2.5.2">
                      <li pn="section-4.2-7.1.2.3.2.5.2.1">If the S bit is 1, the Length <bcp14>MUST</bcp14> be 36 + the size of the Subobject Extension Block.</li>
                      <li pn="section-4.2-7.1.2.3.2.5.2.2">If the S bit is 0, the Length <bcp14>MUST</bcp14> be 40 + the size of the Subobject Extension Block.</li>
                    </ul>
                  </li>
                  <li pn="section-4.2-7.1.2.3.2.6">
                    <t indent="0" pn="section-4.2-7.1.2.3.2.6.1">If NT=5, the F bit <bcp14>MUST</bcp14> be 0.
                    </t>
                    <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2-7.1.2.3.2.6.2">
                      <li pn="section-4.2-7.1.2.3.2.6.2.1">If the S bit is 1, the Length <bcp14>MUST</bcp14> be 20 + the size of the Subobject Extension Block.</li>
                      <li pn="section-4.2-7.1.2.3.2.6.2.2">If the S bit is 0, the Length <bcp14>MUST</bcp14> be 24 + the size of the Subobject Extension Block.</li>
                    </ul>
                  </li>
                  <li pn="section-4.2-7.1.2.3.2.7">
                    <t indent="0" pn="section-4.2-7.1.2.3.2.7.1">If NT=6, the F bit <bcp14>MUST</bcp14> be 0.
                    </t>
                    <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2-7.1.2.3.2.7.2">
                      <li pn="section-4.2-7.1.2.3.2.7.2.1">If the S bit is 1, the Length <bcp14>MUST</bcp14> be 44 + the size of the Subobject Extension Block.</li>
                      <li pn="section-4.2-7.1.2.3.2.7.2.2">If the S bit is 0, the Length <bcp14>MUST</bcp14> be 48 + the size of the Subobject Extension Block.</li>
                    </ul>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-4.2-7.2">If no SEBF (including the A flag defined in this document) is set, the Length value <bcp14>MUST</bcp14> follow the requirements defined in <xref target="RFC8664" sectionFormat="of" section="5.2.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8664#section-5.2.1" derivedContent="RFC8664"/>.</li>
        </ul>
        <section anchor="Subobject-Extension-Block" numbered="true" toc="include" removeInRFC="false" pn="section-4.2.1">
          <name slugifiedName="name-subobject-extension-block">Subobject Extension Block</name>
          <t indent="0" pn="section-4.2.1-1">The Subobject Extension Block is an optional, extensible field in the SR-ERO subobject. Its presence is indicated by the setting of any SEBF in the subobject's Flags field (e.g., the A flag defined in this document or flags defined by future specifications).</t>
          <dl spacing="normal" newline="true" indent="3" pn="section-4.2.1-2">
            <dt pn="section-4.2.1-2.1">Block length and presence:</dt>
            <dd pn="section-4.2.1-2.2">
              <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2.1-2.2.1">
                <li pn="section-4.2.1-2.2.1.1">
                  <t indent="0" pn="section-4.2.1-2.2.1.1.1">If the A flag is set, and no other SEBF is set, the block length <bcp14>MUST</bcp14> be 4.</t>
                </li>
                <li pn="section-4.2.1-2.2.1.2">
                  <t indent="0" pn="section-4.2.1-2.2.1.2.1">The block length is at least 4 bytes when present.</t>
                </li>
                <li pn="section-4.2.1-2.2.1.3">
                  <t indent="0" pn="section-4.2.1-2.2.1.3.1">The block length <bcp14>MUST</bcp14> always be a multiple of 4 bytes.</t>
                </li>
                <li pn="section-4.2.1-2.2.1.4">
                  <t indent="0" pn="section-4.2.1-2.2.1.4.1">The block <bcp14>MUST</bcp14> be included if any SEBF is set in the Flags field.</t>
                </li>
                <li pn="section-4.2.1-2.2.1.5">
                  <t indent="0" pn="section-4.2.1-2.2.1.5.1">Future extensions may define additional SEBFs and corresponding fields, allowing the block to be increased in size beyond the initial 4 bytes as needed.</t>
                </li>
              </ul>
            </dd>
          </dl>
          <t indent="0" pn="section-4.2.1-3">The first 4 bytes of the Subobject Extension Block are described in <xref target="Subobject-extension-format" format="default" sectionFormat="of" derivedContent="Figure 2"/>.</t>
          <figure anchor="Subobject-extension-format" align="left" suppress-title="false" pn="figure-2">
            <name slugifiedName="name-subobject-extension-block-f">Subobject Extension Block Format</name>
            <artwork align="center" name="" type="" alt="" pn="section-4.2.1-4.1">
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                 Unassigned                    |  Algorithm    |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
          </figure>
          <dl spacing="normal" newline="true" indent="3" pn="section-4.2.1-5">
            <dt pn="section-4.2.1-5.1">Unassigned (24 bits):</dt>
            <dd pn="section-4.2.1-5.2">This field is reserved for future use and <bcp14>MUST</bcp14> be set to zero when sending and ignored when receiving.</dd>
            <dt pn="section-4.2.1-5.3">Algorithm (8 bits):</dt>
            <dd pn="section-4.2.1-5.4">The SR-Algorithm value from the "IGP Algorithm Types" registry of the "Interior Gateway Protocol (IGP) Parameters" registry group (see <xref target="IANA-ALGORITHM-TYPES" format="default" sectionFormat="of" derivedContent="IANA-ALGORITHM-TYPES"/>).</dd>
          </dl>
          <t indent="0" pn="section-4.2.1-6">Future extensions <bcp14>SHOULD</bcp14> first use the Unassigned portion of the initial 4 bytes to carry new information. If additional space is needed, the Subobject Extension Block may be extended in 4-byte increments. Each such extension must be indicated by a dedicated SEBF in the Flags field (similar to the A flag) and must be accompanied by capability signaling in an appropriate capability sub-TLV. The specific sub-TLV to be used is not restricted by this specification and may include, for example, the SR-PCE-CAPABILITY sub-TLV, the SRv6-PCE-CAPABILITY sub-TLV, or other capability TLVs, depending on the context of the extension. Interoperability procedures and the precise signaling mechanisms for each new SEBF and its associated capability will be defined by future specifications or procedures describing those extensions.</t>
          <t indent="0" pn="section-4.2.1-7">When receiving a Subobject Extension Block longer than 4 bytes, receivers that do not recognize or have not negotiated support for additional flags <bcp14>MUST</bcp14> ignore the unknown additional bytes beyond those defined in this document.</t>
        </section>
        <section anchor="Guidance-Future-Extensions" numbered="true" toc="include" removeInRFC="false" pn="section-4.2.2">
          <name slugifiedName="name-guidance-for-future-extensi">Guidance for Future Extensions</name>
          <t indent="0" pn="section-4.2.2-1">Future enhancements extending the Subobject Extension Block must:
          </t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2.2-2">
            <li pn="section-4.2.2-2.1">
              <t indent="0" pn="section-4.2.2-2.1.1">Define a new SEBF in the Flags field to indicate the presence of a new extension and specify the corresponding capability signaling for that extension.</t>
            </li>
            <li pn="section-4.2.2-2.2">
              <t indent="0" pn="section-4.2.2-2.2.1">Specify which parts of the reserved/extension block are used and how the block length is calculated when their extension is present.</t>
            </li>
            <li pn="section-4.2.2-2.3">
              <t indent="0" pn="section-4.2.2-2.3.1">Ensure the reserved bits in the initial 4 bytes are used when possible
      and the block is extended only when additional space is necessary.</t>
            </li>
            <li pn="section-4.2.2-2.4">
              <t indent="0" pn="section-4.2.2-2.4.1"> Have future extensions define additional SEBFs and corresponding
      fields, allowing the block to be increased in size beyond the
      initial 4 bytes as needed.</t>
            </li>
          </ul>
          <t indent="0" pn="section-4.2.2-3">Example: Future extension introducing a Z flag and a new Z field (8 bits):
          </t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2.2-4">
            <li pn="section-4.2.2-4.1">
              <t indent="0" pn="section-4.2.2-4.1.1">If the A flag and/or the Z flag are set, the Subobject Extension Block is included. The Z field may use 8 bits of the reserved portion. A field is only considered valid if its corresponding flag is set. For example, if the Z flag is set to 1 but the A flag is set to 0, the Z field is valid but the Algorithm field is ignored.</t>
            </li>
            <li pn="section-4.2.2-4.2">
              <t indent="0" pn="section-4.2.2-4.2.1">If space beyond the initial 4 bytes is needed, the extension document specifies the new block layout and total length. To simplify parsing, if a flag for such an extension is set, the full extended block is encoded, including the initial 4 bytes, even if the A flag is set to 0.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="SRv6-ERO-Subobject" numbered="true" toc="include" removeInRFC="false" pn="section-4.3">
        <name slugifiedName="name-srv6-ero-subobject">SRv6-ERO Subobject</name>
        <t indent="0" pn="section-4.3-1">This document updates the SRv6-ERO subobject format defined in <xref target="RFC9603" sectionFormat="of" section="4.3.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9603#section-4.3.1" derivedContent="RFC9603"/> with the Algorithm field carved out of the Reserved field. Further, a new A flag is defined in the existing Flags field as shown in <xref target="SRv6-ERO-subobject-format" format="default" sectionFormat="of" derivedContent="Figure 3"/>.</t>
        <figure anchor="SRv6-ERO-subobject-format" align="left" suppress-title="false" pn="figure-3">
          <name slugifiedName="name-srv6-ero-subobject-format">SRv6-ERO Subobject Format</name>
          <artwork align="center" name="" type="" alt="" pn="section-4.3-2.1">
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |L|  Type=40    |     Length    |   NT  |    Flags    |A|V|T|F|S|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    Reserved   |   Algorithm   |        Endpoint Behavior      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                                                               |
  |                      SRv6 SID (optional)                      |
  |                           (128-bit)                           |
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  //                    NAI (variable, optional)                 //
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                     SID Structure (optional)                  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
        </figure>
        <dl spacing="normal" newline="true" indent="3" pn="section-4.3-3">
          <dt pn="section-4.3-3.1">Flags field:</dt>
          <dd pn="section-4.3-3.2">A (SR-Algorithm Flag): If set by a PCEP speaker, the Algorithm field is included in the SRv6-ERO subobject as specified in <xref target="SRv6-ERO-subobject-format" format="default" sectionFormat="of" derivedContent="Figure 3"/>.
If this flag is set to 0, then the Algorithm field is absent and processing described in <xref target="RFC9603" sectionFormat="of" section="5.2.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9603#section-5.2.1" derivedContent="RFC9603"/> applies.
</dd>
          <dt pn="section-4.3-3.3">Reserved (8 bits):</dt>
          <dd pn="section-4.3-3.4">It <bcp14>MUST</bcp14> be set to 0 while sending and ignored on
      receipt.</dd>
          <dt pn="section-4.3-3.5">Algorithm (8 bits):</dt>
          <dd pn="section-4.3-3.6">The SR-Algorithm value from the "IGP Algorithm Types" registry of the "Interior Gateway Protocol (IGP) Parameters" registry group.</dd>
        </dl>
        <aside pn="section-4.3-4">
          <t indent="0" pn="section-4.3-4.1">Note: The Subobject Extension Block is applicable to the SRv6-ERO subobject but is not required by this specific specification as existing reserved space is used. When additional space is needed in the SRv6-ERO subobject, the future extensions <bcp14>SHOULD</bcp14> specify the usage of the Subobject Extension Block for the SRv6-ERO subobject.</t>
        </aside>
      </section>
      <section anchor="SR-Algorithm-TLV" numbered="true" toc="include" removeInRFC="false" pn="section-4.4">
        <name slugifiedName="name-sr-algorithm-tlv">SR-Algorithm TLV</name>
        <t indent="0" pn="section-4.4-1">A new TLV for the LSPA object is introduced to carry the SR-Algorithm constraint (<xref target="SR-ALGORITHM-CONSTRAINT" format="default" sectionFormat="of" derivedContent="Section 5.2"/>). This TLV <bcp14>MUST</bcp14> only be used when PST = 1 or 3 for SR-MPLS and SRv6, respectively. Only the first instance of this TLV <bcp14>MUST</bcp14> be processed; subsequent instances <bcp14>MUST</bcp14> be ignored.</t>
        <t indent="0" pn="section-4.4-2">The format of the SR-Algorithm TLV is as follows:</t>
        <figure anchor="SR-ALGORITHM-TLV-FMT" align="left" suppress-title="false" pn="figure-4">
          <name slugifiedName="name-sr-algorithm-tlv-format">SR-Algorithm TLV Format</name>
          <artwork align="center" name="" type="" alt="" pn="section-4.4-3.1">
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |         Type=66               |            Length=4           |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |         Reserved              |   Flags     |S|   Algorithm   |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
        </figure>
        <dl spacing="normal" newline="false" indent="3" pn="section-4.4-4">
          <dt pn="section-4.4-4.1">Type (16 bits):</dt>
          <dd pn="section-4.4-4.2">66</dd>
          <dt pn="section-4.4-4.3">Length (16 bits):</dt>
          <dd pn="section-4.4-4.4">4</dd>
        </dl>
        <t indent="0" pn="section-4.4-5">The 32-bit value is formatted as follows.</t>
        <dl newline="false" spacing="normal" indent="3" pn="section-4.4-6">
          <dt pn="section-4.4-6.1">Reserved (16 bits):</dt>
          <dd pn="section-4.4-6.2">
            <bcp14>MUST</bcp14> be set to 0 by the sender and <bcp14>MUST</bcp14> be ignored by the receiver.</dd>
          <dt pn="section-4.4-6.3">Flags (8 bits):</dt>
          <dd pn="section-4.4-6.4">
            <t indent="0" pn="section-4.4-6.4.1"> This document defines the following flag. The other flags
              <bcp14>MUST</bcp14> be set to 0 by the sender and <bcp14>MUST</bcp14> be ignored by the receiver.
            </t>
            <dl spacing="normal" newline="false" indent="3" pn="section-4.4-6.4.2">
              <dt pn="section-4.4-6.4.2.1">S (Strict):</dt>
              <dd pn="section-4.4-6.4.2.2">If set, the path computation at the PCE
              <bcp14>MUST</bcp14> fail if the specified SR-Algorithm
              constraint cannot be satisfied. If the S (Strict) bit is unset
              and the PCE is unable to compute a path that satisfies the
              specified SR-Algorithm constraint, the PCE <bcp14>MUST</bcp14>
              attempt to compute a path as if no SR-Algorithm constraint had
              been requested. This means the PCE may use any available
              SR-Algorithm for the computation, consistent with the default
              behavior in the absence of SR-Algorithm constraint.</dd>
            </dl>
          </dd>
          <dt pn="section-4.4-6.5">Algorithm (8 bits):</dt>
          <dd pn="section-4.4-6.6">The SR-Algorithm to be used during path computation (see <xref target="SR-ALGORITHM-CONSTRAINT" format="default" sectionFormat="of" derivedContent="Section 5.2"/>).</dd>
        </dl>
      </section>
      <section anchor="METRIC-TYPES" numbered="true" toc="include" removeInRFC="false" pn="section-4.5">
        <name slugifiedName="name-extensions-to-metric-object">Extensions to METRIC Object</name>
        <t indent="0" pn="section-4.5-1">The METRIC object is defined in <xref target="RFC5440" sectionFormat="of" section="7.8" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5440#section-7.8" derivedContent="RFC5440"/>. This document specifies additional types for the METRIC object to enable the encoding of optimization metric types derived from the FAD during Flexible Algorithm path computation (see <xref target="FLEX-ALGO-COMPUTATION" format="default" sectionFormat="of" derivedContent="Section 5.2.2"/>). While these new metric types are defined to support this specific use case, their use is not restricted to Flexible Algorithm path computation or to any specific PST.</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.5-2">
          <li pn="section-4.5-2.1">
            <t indent="0" pn="section-4.5-2.1.1"> T=22: Path Min Delay metric (<xref target="P2P-MIN-DELAY" format="default" sectionFormat="of" derivedContent="Section 4.5.1.1"/>) </t>
          </li>
          <li pn="section-4.5-2.2">
            <t indent="0" pn="section-4.5-2.2.1"> T=23: P2MP Path Min Delay metric (<xref target="P2MP-MIN-DELAY" format="default" sectionFormat="of" derivedContent="Section 4.5.1.2"/>) </t>
          </li>
          <li pn="section-4.5-2.3">
            <t indent="0" pn="section-4.5-2.3.1"> T=24: Path Bandwidth metric (<xref target="P2P-BANDWIDTH" format="default" sectionFormat="of" derivedContent="Section 4.5.2.1"/>) </t>
          </li>
          <li pn="section-4.5-2.4">
            <t indent="0" pn="section-4.5-2.4.1"> T=25: P2MP Path Bandwidth metric (<xref target="P2MP-BANDWIDTH" format="default" sectionFormat="of" derivedContent="Section 4.5.2.2"/>) </t>
          </li>
          <li pn="section-4.5-2.5">
            <t indent="0" pn="section-4.5-2.5.1"> T=128-255: User-defined metric (<xref target="USER-DEFINED-METRIC" format="default" sectionFormat="of" derivedContent="Section 4.5.3"/>) </t>
          </li>
        </ul>
        <t indent="0" pn="section-4.5-3">The following terminology is used and expanded along the way.</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.5-4">
          <li pn="section-4.5-4.1">
            <t indent="0" pn="section-4.5-4.1.1">A network comprises a set of N links {Li, (i=1...N)}.</t>
          </li>
          <li pn="section-4.5-4.2">
            <t indent="0" pn="section-4.5-4.2.1">A path P of a point-to-point (P2P) LSP is a list of K links {Lpi,(i=1...K)}.</t>
          </li>
          <li pn="section-4.5-4.3">
            <t indent="0" pn="section-4.5-4.3.1">A P2MP tree T comprises a set of M destinations {Dest_j,(j=1...M)}.</t>
          </li>
        </ul>
        <section anchor="MIN-DELAY-VALUE" numbered="true" toc="include" removeInRFC="false" pn="section-4.5.1">
          <name slugifiedName="name-path-min-delay-metric">Path Min Delay Metric</name>
          <t indent="0" pn="section-4.5.1-1"><xref target="RFC7471" format="default" sectionFormat="of" derivedContent="RFC7471"/> and <xref target="RFC8570" format="default" sectionFormat="of" derivedContent="RFC8570"/> define the "Min/Max Unidirectional Link Delay" sub-TLV to advertise the link minimum and maximum delay in microseconds in a 24-bit field.</t>
          <t indent="0" pn="section-4.5.1-2"><xref target="RFC5440" format="default" sectionFormat="of" derivedContent="RFC5440"/> defines the METRIC object with a 32-bit metric value encoded in IEEE floating point format (see <xref target="IEEE.754.2019" format="default" sectionFormat="of" derivedContent="IEEE.754.2019"/>).</t>
          <t indent="0" pn="section-4.5.1-3">The encoding for the Path Min Delay metric value is quantified in units of microseconds and encoded in IEEE floating point format.</t>
          <t indent="0" pn="section-4.5.1-4">For use in the PCEP METRIC object, the 24-bit unsigned integer delay value is converted to a 32-bit IEEE floating point value. This conversion follows the procedure specified in <xref target="IEEE.754.2019" format="default" sectionFormat="of" derivedContent="IEEE.754.2019"/>.</t>
          <section anchor="P2P-MIN-DELAY" numbered="true" toc="exclude" removeInRFC="false" pn="section-4.5.1.1">
            <name slugifiedName="name-p2p-path-min-delay-metric">P2P Path Min Delay Metric</name>
            <t indent="0" pn="section-4.5.1.1-1">The minimum Link Delay metric is defined in <xref target="RFC7471" format="default" sectionFormat="of" derivedContent="RFC7471"/> and <xref target="RFC8570" format="default" sectionFormat="of" derivedContent="RFC8570"/> as "Min Unidirectional Link Delay". The Path Min Link Delay metric represents the measured minimum link delay value over a configurable interval.</t>
            <t indent="0" pn="section-4.5.1.1-2">The Path Min Delay metric type of the METRIC object in PCEP represents the sum of the Min Link Delay metric of all links along a P2P path. </t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.5.1.1-3">
              <li pn="section-4.5.1.1-3.1">
                <t indent="0" pn="section-4.5.1.1-3.1.1">A Min Link Delay metric of link L is denoted by D(L).</t>
              </li>
              <li pn="section-4.5.1.1-3.2">
                <t indent="0" pn="section-4.5.1.1-3.2.1">A Path Min Delay metric for the P2P path P = Sum {D(Lpi), (i=1...K)}.</t>
              </li>
            </ul>
          </section>
          <section anchor="P2MP-MIN-DELAY" numbered="true" toc="exclude" removeInRFC="false" pn="section-4.5.1.2">
            <name slugifiedName="name-p2mp-path-min-delay-metric">P2MP Path Min Delay Metric</name>
            <t indent="0" pn="section-4.5.1.2-1">The P2MP Path Min Delay metric type of the METRIC object in PCEP encodes the Path Min Delay metric for the destination that observes the worst (i.e., highest value) delay metric among all destinations of the P2MP tree.</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.5.1.2-2">
              <li pn="section-4.5.1.2-2.1">
                <t indent="0" pn="section-4.5.1.2-2.1.1">The P2P Path Min Delay metric of the path to destination Dest_j is denoted by PMDM(Dest_j).</t>
              </li>
              <li pn="section-4.5.1.2-2.2">
                <t indent="0" pn="section-4.5.1.2-2.2.1">The P2MP Path Min Delay metric for the P2MP tree T = Maximum{PMDM(Dest_j), (j=1...M)}.</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="BANDWIDTH-VALUE" numbered="true" toc="include" removeInRFC="false" pn="section-4.5.2">
          <name slugifiedName="name-path-bandwidth-metric">Path Bandwidth Metric</name>
          <t indent="0" pn="section-4.5.2-1"><xref target="RFC9843" sectionFormat="of" section="4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9843#section-4" derivedContent="RFC9843"/> defines a new metric type, "Bandwidth metric", which may be advertised in their link metric advertisements.</t>
          <t indent="0" pn="section-4.5.2-2">When performing Flexible Algorithm path computation as described in <xref target="FLEX-ALGO-COMPUTATION" format="default" sectionFormat="of" derivedContent="Section 5.2.2"/>, procedures described in Sections <xref target="RFC9843" sectionFormat="bare" section="4.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9843#section-4.1" derivedContent="RFC9843"/> and <xref target="RFC9843" sectionFormat="bare" section="5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9843#section-5" derivedContent="RFC9843"/> from <xref target="RFC9843" format="default" sectionFormat="of" derivedContent="RFC9843"/> <bcp14>MUST</bcp14> be followed with automatic metric calculation.</t>
          <t indent="0" pn="section-4.5.2-3">For path computations in contexts other than Flexible Algorithm (including PSTs other than 1 or 3 for SR-MPLS and SRv6, respectively), if the Generic Metric sub-TLV with the Bandwidth metric type is not advertised for a link, the PCE implementation <bcp14>MAY</bcp14> apply a local policy to derive a metric value (similar to the procedures in Sections <xref target="RFC9843" sectionFormat="bare" section="4.1.3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9843#section-4.1.3" derivedContent="RFC9843"/> and <xref target="RFC9843" sectionFormat="bare" section="4.1.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9843#section-4.1.4" derivedContent="RFC9843"/> of <xref target="RFC9843" format="default" sectionFormat="of" derivedContent="RFC9843"/>) or the link <bcp14>MAY</bcp14> be treated as if the metric value is unavailable (e.g., by using a default value). If the Bandwidth metric value is advertised for a link, the PCE <bcp14>MUST</bcp14> use the advertised value to compute the path metric in accordance with Sections <xref target="P2P-BANDWIDTH" format="counter" sectionFormat="of" derivedContent="4.5.2.1"/> and <xref target="P2MP-BANDWIDTH" format="counter" sectionFormat="of" derivedContent="4.5.2.2"/>.</t>
          <t indent="0" pn="section-4.5.2-4">The Path Bandwidth metric value is encoded in IEEE floating point format (see <xref target="IEEE.754.2019" format="default" sectionFormat="of" derivedContent="IEEE.754.2019"/>).</t>
          <t indent="0" pn="section-4.5.2-5">For use in the PCEP METRIC object, the 24-bit unsigned integer delay value is converted to a 32-bit IEEE floating point value. This conversion follows the procedure specified in <xref target="IEEE.754.2019" format="default" sectionFormat="of" derivedContent="IEEE.754.2019"/>. </t>
          <section anchor="P2P-BANDWIDTH" numbered="true" toc="exclude" removeInRFC="false" pn="section-4.5.2.1">
            <name slugifiedName="name-p2p-path-bandwidth-metric">P2P Path Bandwidth Metric</name>
            <t indent="0" pn="section-4.5.2.1-1">The Path Bandwidth metric type of the METRIC object in PCEP represents the sum of the Bandwidth metric of all links along a P2P path.</t>
            <aside pn="section-4.5.2.1-2">
              <t indent="0" pn="section-4.5.2.1-2.1">Note: The link Bandwidth metric utilized in the formula may be the original metric advertised on the link, which may have a value inversely proportional to the link capacity.</t>
            </aside>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.5.2.1-3">
              <li pn="section-4.5.2.1-3.1">
                <t indent="0" pn="section-4.5.2.1-3.1.1">A Bandwidth metric of link L is denoted by B(L).</t>
              </li>
              <li pn="section-4.5.2.1-3.2">
                <t indent="0" pn="section-4.5.2.1-3.2.1">A Path Bandwidth metric for the P2P path P = Sum {B(Lpi), (i=1...K)}.</t>
              </li>
            </ul>
          </section>
          <section anchor="P2MP-BANDWIDTH" numbered="true" toc="exclude" removeInRFC="false" pn="section-4.5.2.2">
            <name slugifiedName="name-p2mp-path-bandwidth-metric">P2MP Path Bandwidth Metric</name>
            <t indent="0" pn="section-4.5.2.2-1">The Bandwidth metric type of the METRIC object in PCEP encodes the Path Bandwidth metric for the destination that observes the worst Bandwidth metric among all destinations of the P2MP tree.</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.5.2.2-2">
              <li pn="section-4.5.2.2-2.1">
                <t indent="0" pn="section-4.5.2.2-2.1.1">The P2P Bandwidth metric of the path to destination Dest_j is denoted by BM(Dest_j).</t>
              </li>
              <li pn="section-4.5.2.2-2.2">
                <t indent="0" pn="section-4.5.2.2-2.2.1">The P2MP Path Bandwidth metric for the P2MP tree T = Maximum{BM(Dest_j), (j=1...M)}.</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="USER-DEFINED-METRIC" numbered="true" toc="include" removeInRFC="false" pn="section-4.5.3">
          <name slugifiedName="name-user-defined-metric">User-Defined Metric</name>
          <t indent="0" pn="section-4.5.3-1"><xref target="RFC9843" sectionFormat="of" section="2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9843#section-2" derivedContent="RFC9843"/> defined a new metric type range for "User-defined metric", which may be advertised in their link metric advertisements. These are user defined and can be assigned by an operator for local use.</t>
          <t indent="0" pn="section-4.5.3-2">User-defined metric values are encoded using the IEEE floating point format (see <xref target="IEEE.754.2019" format="default" sectionFormat="of" derivedContent="IEEE.754.2019"/>).</t>
          <t indent="0" pn="section-4.5.3-3">For use in the PCEP METRIC object, the 24-bit unsigned integer delay value is converted to a 32-bit IEEE floating point value. This conversion follows the procedure specified in <xref target="IEEE.754.2019" format="default" sectionFormat="of" derivedContent="IEEE.754.2019"/>.</t>
          <t indent="0" pn="section-4.5.3-4">The metric type range was chosen to allow mapping with values assigned in the "IGP Metric-Type" registry. For example, the User-defined metric type 130 of the METRIC object in PCEP can represent the sum of the User-defined metric 130 of all links along a P2P path.</t>
          <t indent="0" pn="section-4.5.3-5">User-defined metrics are equally applicable to P2P and P2MP paths.</t>
        </section>
      </section>
    </section>
    <section anchor="Operation" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-operation">Operation</name>
      <t indent="0" pn="section-5-1">The PCEP extensions defined in Sections <xref target="ERO-ENCODING" format="counter" sectionFormat="of" derivedContent="5.1"/> and <xref target="SR-ALGORITHM-CONSTRAINT" format="counter" sectionFormat="of" derivedContent="5.2"/> of this document <bcp14>MUST NOT</bcp14> be used unless both PCEP speakers have indicated support by setting the S flag in the Path Setup Type sub-TLV corresponding to the PST of the LSP. If this condition is not met, the receiving PCEP speaker <bcp14>MUST</bcp14> respond with a PCErr message with Error-Type 19 (Invalid Operation) and Error-value 33 (Attempted use of SR-Algorithm without advertised capability).</t>
      <t indent="0" pn="section-5-2">The SR-Algorithm used in this document refers to a complete range of SR-Algorithm values (0-255) if a specific section does not specify otherwise. Valid SR-Algorithm values are defined in the "IGP Algorithm Types" registry of the "Interior Gateway Protocol (IGP) Parameters" registry group. Refer to <xref target="RFC8402" sectionFormat="of" section="3.1.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8402#section-3.1.1" derivedContent="RFC8402"/> and <xref target="RFC9256" format="default" sectionFormat="of" derivedContent="RFC9256"/> for the definition of SR-Algorithm in SR. <xref target="RFC8665" format="default" sectionFormat="of" derivedContent="RFC8665"/> and <xref target="RFC8667" format="default" sectionFormat="of" derivedContent="RFC8667"/> describe the use of the SR-Algorithm in IGP. Note that some RFCs refer to SR-Algorithm with different names, for example, "Prefix-SID Algorithm" and "SR Algorithm".</t>
      <section anchor="ERO-ENCODING" numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-ero-and-rro-subobjects">ERO and RRO Subobjects</name>
        <t indent="0" pn="section-5.1-1">If a PCC receives the Algorithm field in the ERO subobject within PCInitiate, PCUpd, or PCRep messages and the path received from those messages is being included in the ERO of PCRpt message, then the PCC <bcp14>MUST</bcp14> include the Algorithm field in the encoded subobjects with the received SR-Algorithm value.</t>
        <t indent="0" pn="section-5.1-2">As per <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/>, the format of the SR-RRO subobject is the same as that of the SR-ERO subobject but without the L flag; therefore, the SR-RRO subobject may also carry the A flag and Algorithm field in the Subobject Extension Block. Similarly, as per <xref target="RFC9603" format="default" sectionFormat="of" derivedContent="RFC9603"/>, the format of the SRv6-RRO subobject is the same as that of the SRv6-ERO subobject but without the L flag; therefore, the SRv6-RRO subobject may also carry the A flag and Algorithm field.</t>
        <section anchor="SR-ERO-ENCODING" numbered="true" toc="include" removeInRFC="false" pn="section-5.1.1">
          <name slugifiedName="name-sr-ero">SR-ERO</name>
          <t indent="0" pn="section-5.1.1-1">A PCEP speaker <bcp14>MAY</bcp14> set the A flag and include the Algorithm field as part of the Subobject Extension Block in an SR-ERO subobject if the S flag has been advertised in the SR-PCE-CAPABILITY sub-TLV by both PCEP speakers.</t>
          <t indent="0" pn="section-5.1.1-2">If the PCEP peer receives an SR-ERO subobject with the A flag set but the S flag was not advertised in SR-PCE-CAPABILITY sub-TLV, then it <bcp14>MUST</bcp14> consider the entire ERO as invalid, as described in <xref target="RFC8664" sectionFormat="of" section="5.2.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8664#section-5.2.1" derivedContent="RFC8664"/>.</t>
          <t indent="0" pn="section-5.1.1-3">The Subobject Extension Block field in the SR-ERO subobject <bcp14>MUST</bcp14> be included after the optional SID, NAI, or SID structure, and the length of the SR-ERO subobject <bcp14>MUST</bcp14> be increased by the size of the Subobject Extension Block, as determined by the set of SEBFs.</t>
          <t indent="0" pn="section-5.1.1-4">If the length and the A flag are not consistent, as specified in <xref target="SR-ERO-Subobject" format="default" sectionFormat="of" derivedContent="Section 4.2"/>, the PCEP peer <bcp14>MUST</bcp14> consider the entire ERO invalid and <bcp14>MUST</bcp14> send a PCErr message with Error-Type = 10 ("Reception of an invalid object") and Error-value = 11 ("Malformed object").</t>
          <t indent="0" pn="section-5.1.1-5">If the SID value is absent (S flag is set to 1), the NAI value is present (F flag is set to 0), and the Algorithm field is set (the A flag is set to 1), the PCC is responsible for choosing the SRv6-SID value based on values specified in the NAI and Algorithm fields. If the PCC cannot find a SID index in the SR-DB, it <bcp14>MUST</bcp14> send a PCErr message with Error-Type = 10 ("Reception of an invalid object") and Error-value = 14 ("Unknown SID").</t>
        </section>
        <section anchor="SRv6-ERO-ENCODING" numbered="true" toc="include" removeInRFC="false" pn="section-5.1.2">
          <name slugifiedName="name-srv6-ero">SRv6-ERO</name>
          <t indent="0" pn="section-5.1.2-1">A PCEP speaker <bcp14>MAY</bcp14> set the A flag and include the Algorithm field in an SRv6-ERO subobject if the S flag has been advertised in SRv6-PCE-CAPABILITY sub-TLV by both PCEP speakers.</t>
          <t indent="0" pn="section-5.1.2-2">If the PCEP peer receives an SRv6-ERO subobject with the A flag set or with the SR-Algorithm included, but the S flag was not advertised in SRv6-PCE-CAPABILITY sub-TLV, then it <bcp14>MUST</bcp14> consider the entire ERO as invalid, as described in <xref target="RFC8664" sectionFormat="of" section="5.2.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8664#section-5.2.1" derivedContent="RFC8664"/>.</t>
          <t indent="0" pn="section-5.1.2-3">The Algorithm field in the SRv6-ERO subobject <bcp14>MUST</bcp14> be included in the position specified in <xref target="SRv6-ERO-Subobject" format="default" sectionFormat="of" derivedContent="Section 4.3"/>; the length of the SRv6-ERO subobject is not impacted by the inclusion of the Algorithm field.</t>
          <t indent="0" pn="section-5.1.2-4">If the SRv6-SID value is absent (S flag is set to 1), the NAI value is present (F flag is n), and the Algorithm field is set (the A flag is set to 1), the PCC is responsible for choosing the SRv6-SID value based on values specified in the NAI and Algorithm fields. If the PCC cannot find a SID index in the SR-DB, it <bcp14>MUST</bcp14> send a PCErr message with Error-Type = 10 ("Reception of an invalid object") and Error-value = 14 ("Unknown SID").</t>
        </section>
      </section>
      <section anchor="SR-ALGORITHM-CONSTRAINT" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-sr-algorithm-constraint">SR-Algorithm Constraint</name>
        <t indent="0" pn="section-5.2-1">To signal a specific SR-Algorithm constraint to the PCE, the headend <bcp14>MUST</bcp14> encode the SR-Algorithm TLV inside the LSPA object.</t>
        <t indent="0" pn="section-5.2-2">If a PCC receives an LSPA object with the SR-Algorithm TLV as part of PCInitiate or PCUpd messages, then it <bcp14>MUST</bcp14> include an LSPA object with the SR-Algorithm TLV in a PCRpt message as part of intended-attribute-list.</t>
        <t indent="0" pn="section-5.2-3">If a PCE receives an LSPA object with the SR-Algorithm TLV in PCRpt or PCReq, then it <bcp14>MUST</bcp14> include the LSPA object with the SR-Algorithm TLV in a PCUpd message, or a PCRep message in case of an unsuccessful path computation based on rules described in <xref target="RFC5440" sectionFormat="of" section="7.11" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5440#section-7.11" derivedContent="RFC5440"/>.</t>
        <t indent="0" pn="section-5.2-4">A PCEP peer that did not advertise the S flag in the Path Setup Type sub-TLV corresponding to the LSP's PST <bcp14>MUST</bcp14> ignore the SR-Algorithm TLV on receipt.</t>
        <t indent="0" pn="section-5.2-5">The PCE <bcp14>MUST NOT</bcp14> use Prefix SIDs associated with an SR-Algorithm other than the one specified in the SR-Algorithm constraint. If a protected Adjacency SID is used without an associated SR-Algorithm, there is a risk that the backup path may fail to forward traffic over parts of the topology that are not included in the specified SR-Algorithm. Consequently, it is <bcp14>NOT RECOMMENDED</bcp14> to use protected Adjacency SIDs without an explicitly specified SR-Algorithm. If an Adjacency SID has an associated SR-Algorithm, the PCE <bcp14>MUST</bcp14> ensure that the SR-Algorithm matches the one specified in the SR-Algorithm constraint.</t>
        <t indent="0" pn="section-5.2-6">Other SID types, such as BSIDs, are allowed. Furthermore, the inclusion of a path BSID from another policy is permitted only if the path associated with that policy fully satisfies all the constraints of the current path computation.</t>
        <t indent="0" pn="section-5.2-7">The specified SR-Algorithm constraint is applied to the end-to-end SR Policy path. Using different SR-Algorithm constraints or using winning FAD with different optimization metrics or constraints for the same SR-Algorithm in each domain or part of the topology in single path computation is out of the scope of this document.</t>
        <t indent="0" pn="section-5.2-8">If the PCE is unable to find a path with the given SR-Algorithm constraint, it does not support a combination of specified constraints, or if the FAD contains constraints, optimization metrics, or other attributes, which the PCE does not support or recognize, it <bcp14>MUST</bcp14> use an empty ERO in PCInitiate for LSP instantiation, a PCUpd message if an update is required, or a NO-PATH object in PCRep to indicate that it was not able to find the valid path.</t>
        <t indent="0" pn="section-5.2-9">If the Algorithm field value is in the range 128-255, the PCE <bcp14>MUST</bcp14> perform path computation according to the Flexible Algorithm procedures outlined in <xref target="FLEX-ALGO-COMPUTATION" format="default" sectionFormat="of" derivedContent="Section 5.2.2"/>. Otherwise, the PCE <bcp14>MUST</bcp14> adhere to the path computation procedures with SID filtering as defined in <xref target="SID-FILTERING-COMPUTATION" format="default" sectionFormat="of" derivedContent="Section 5.2.1"/>.</t>
        <t indent="0" pn="section-5.2-10">If the NO-PATH object is included in PCRep, then the PCE <bcp14>MAY</bcp14> include the SR-Algorithm TLV to indicate constraint, which cannot be satisfied as described in <xref target="RFC5440" sectionFormat="of" section="7.5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5440#section-7.5" derivedContent="RFC5440"/>.</t>
        <t indent="0" pn="section-5.2-11">SR-Algorithm does not replace the objective function defined in <xref target="RFC5541" format="default" sectionFormat="of" derivedContent="RFC5541"/>.</t>
        <section anchor="SID-FILTERING-COMPUTATION" numbered="true" toc="include" removeInRFC="false" pn="section-5.2.1">
          <name slugifiedName="name-path-computation-for-sr-alg">Path Computation for SR-Algorithms 0-127</name>
          <t indent="0" pn="section-5.2.1-1">The SR-Algorithm constraint acts as a filter, restricting which SIDs may be used as a result of the path computation function. Path computation is done based on optimization metric type and constraints specified in the PCEP message received from the PCC.</t>
          <t indent="0" pn="section-5.2.1-2">The mechanism described in this section is applicable only to SR-Algorithm values in the range 0-127. It is not applicable to Flexible Algorithms (range 128-255), which are handled as described in <xref target="FLEX-ALGO-COMPUTATION" format="default" sectionFormat="of" derivedContent="Section 5.2.2"/>. Within the 0-127 range, currently defined algorithms are 0 (Shortest Path First (SPF)) and 1 (Strict-SPF), as introduced in <xref target="RFC8402" sectionFormat="of" section="3.1.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8402#section-3.1.1" derivedContent="RFC8402"/>. Future algorithms defined within this range that do not require explicit PCEP extensions beyond the SR-Algorithm TLV may also utilize this SID filtering approach. If a PCE implementation receives a request with an SR-Algorithm value in the 0-127 range that it does not support for path computation, it <bcp14>MUST</bcp14> reject the PCEP message and send a PCErr message with Error-Type 19 (Invalid Operation) and Error-value 34 (Unsupported combination of constraints).</t>
        </section>
        <section anchor="FLEX-ALGO-COMPUTATION" numbered="true" toc="include" removeInRFC="false" pn="section-5.2.2">
          <name slugifiedName="name-path-computation-for-flexib">Path Computation for Flexible Algorithms</name>
          <t indent="0" pn="section-5.2.2-1">This section is applicable only to the Flexible Algorithms range of SR-Algorithm values. The PCE performs Flexible Algorithm path computation based on topology information stored in its TED <xref target="RFC5440" format="default" sectionFormat="of" derivedContent="RFC5440"/>. The TED is expected to be populated with necessary information, including Flexible Algorithm Definitions (FADs), node participation, and ASLA-specific link attributes, through standard mechanisms, such as IGPs with Traffic Engineering extensions or BGP - Link State (BGP-LS) <xref target="RFC9552" format="default" sectionFormat="of" derivedContent="RFC9552"/>.</t>
          <t indent="0" pn="section-5.2.2-2">The PCE must follow the IGP Flexible Algorithm path computation logic as described in <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="RFC9350"/>. This includes performing the FAD selection as described in <xref target="RFC9350" sectionFormat="of" section="5.3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9350#section-5.3" derivedContent="RFC9350"/> and other sections, determining the topology associated with specific a Flexible Algorithm based on the FAD, the node participation (<xref target="RFC9350" sectionFormat="of" section="11" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9350#section-11" derivedContent="RFC9350"/>), using ASLA-specific link attributes (<xref target="RFC9350" sectionFormat="of" section="12" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9350#section-12" derivedContent="RFC9350"/>), and applying other rules for Flexible Algorithm path calculation (<xref target="RFC9350" sectionFormat="of" section="13" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9350#section-13" derivedContent="RFC9350"/>). While <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="RFC9350"/> defines the base procedures for IGP Flexible Algorithms, these procedures are further extended by other documents, such as <xref target="RFC9843" format="default" sectionFormat="of" derivedContent="RFC9843"/>; a PCE implementation may need to support these IGP extensions to allow use of specific constraints in FAD. <xref target="RFC9917" format="default" sectionFormat="of" derivedContent="RFC9917"/> created an IANA registry called "IGP Flex-Algorithm Path Computation Rules" <eref target="https://www.iana.org/assignments/igp-parameters" brackets="angle"/> within the "Interior Gateway Protocol (IGP) Parameters" registry group with the ordered set of rules that <bcp14>MUST</bcp14> be used to prune links from the topology during the Flexible Algorithm path computation.</t>
          <t indent="0" pn="section-5.2.2-3">The PCE <bcp14>MUST</bcp14> optimize the computed path based on the metric type specified in the FAD. The optimization metric type included in PCEP messages from the PCC <bcp14>MUST</bcp14> be ignored. The PCE <bcp14>MUST</bcp14> use the metric type from the FAD in messages sent to the PCC unless that metric type is not defined in PCEP or not supported by the PCEP peer. It is allowed to use SID types other than Prefix SID (e.g., Adjacency or BSID) but only from nodes participating in the specified SR-Algorithm.</t>
          <t indent="0" pn="section-5.2.2-4">There are corresponding metric types in PCEP for IGP and TE metrics from FAD introduced in <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="RFC9350"/>, but there were no corresponding metric types defined for "Min Unidirectional Link Delay" from <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="RFC9350"/> and "Bandwidth metric" and "User-defined metric" from <xref target="RFC9843" format="default" sectionFormat="of" derivedContent="RFC9843"/>. <xref target="METRIC-TYPES" format="default" sectionFormat="of" derivedContent="Section 4.5"/> of this document introduces them. Note that the defined "Path Bandwidth metric" is accumulative and is different from the BANDWIDTH object defined in <xref target="RFC5440" format="default" sectionFormat="of" derivedContent="RFC5440"/>.</t>
          <t indent="0" pn="section-5.2.2-5">The PCE <bcp14>MUST</bcp14> use the constraints specified in the FAD and also constraints (except optimization metric type) directly included in PCEP messages from the PCC. The PCE implementation <bcp14>MAY</bcp14> decide to ignore specific constraints received from the PCC based on existing processing rules for PCEP objects and TLVs, e.g., the P flag described in <xref target="RFC5440" sectionFormat="of" section="7.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5440#section-7.2" derivedContent="RFC5440"/> and processing rules described in <xref target="RFC9753" format="default" sectionFormat="of" derivedContent="RFC9753"/>. If the PCE does not support a specified combination of constraints, it <bcp14>MUST</bcp14> fail path computation and respond with a PCEP message with a PCInitiate or PCUpd message with an empty ERO or PCRep with NO-PATH object. The PCC <bcp14>MUST NOT</bcp14> include constraints from the FAD in the PCEP message sent to the PCE, as it can result in undesired behavior in various cases. The PCE <bcp14>SHOULD NOT</bcp14> include constraints from the FAD in PCEP messages sent to the PCC.</t>
          <t indent="0" pn="section-5.2.2-6">The combinations of the constraints specified in the FAD and constraints directly included in PCEP messages from the PCC may decrease the chance that Flexible-Algorithm-specific Prefix SIDs represent an optimal path while satisfying all specified constraints; as a result, a longer SID list may be required for the computed path.  Adding more constraints on top of the FAD requires complex path computation and may reduce the benefit of this scheme.</t>
        </section>
      </section>
      <section anchor="NEW-METRIC-TYPES" numbered="true" toc="include" removeInRFC="false" pn="section-5.3">
        <name slugifiedName="name-metric-types">Metric Types</name>
        <t indent="0" pn="section-5.3-1">All the rules of processing the METRIC object as explained in <xref target="RFC5440" format="default" sectionFormat="of" derivedContent="RFC5440"/> and <xref target="RFC8233" format="default" sectionFormat="of" derivedContent="RFC8233"/> are applicable to the metric types defined in this document.</t>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-manageability-consideration">Manageability Considerations</name>
      <t indent="0" pn="section-6-1">All manageability requirements and considerations listed in <xref target="RFC5440" format="default" sectionFormat="of" derivedContent="RFC5440"/>, <xref target="RFC8231" format="default" sectionFormat="of" derivedContent="RFC8231"/>, <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/>, and <xref target="RFC9603" format="default" sectionFormat="of" derivedContent="RFC9603"/> apply to the PCEP extensions defined in this document. In addition, the requirements and considerations listed in this section apply.</t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-6.1">
        <name slugifiedName="name-control-of-function-and-pol">Control of Function and Policy</name>
        <t indent="0" pn="section-6.1-1">A PCE or PCC implementation <bcp14>MAY</bcp14> allow the capability of supporting the PCEP extensions introduced in this document to be enabled or disabled as part of the global configuration. By default, this capability <bcp14>SHOULD</bcp14> be enabled.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-6.2">
        <name slugifiedName="name-information-and-data-models">Information and Data Models</name>
        <t indent="0" pn="section-6.2-1">An implementation <bcp14>SHOULD</bcp14> allow the operator to view the capability defined in this document. Sections <xref target="RFC9826" sectionFormat="bare" section="4.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9826#section-4.1" derivedContent="RFC9826"/> and <xref target="RFC9826" sectionFormat="bare" section="4.1.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9826#section-4.1.1" derivedContent="RFC9826"/> of <xref target="RFC9826" format="default" sectionFormat="of" derivedContent="RFC9826"/> should be extended to include the capabilities introduced in Sections <xref target="SR-CAP-FLAG" format="counter" sectionFormat="of" derivedContent="4.1.1"/> and <xref target="SRv6-CAP-FLAG" format="counter" sectionFormat="of" derivedContent="4.1.2"/> for the PCEP peer.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-6.3">
        <name slugifiedName="name-liveness-detection-and-moni">Liveness Detection and Monitoring</name>
        <t indent="0" pn="section-6.3-1">This document does not define any new mechanism that impacts the liveness detection and monitoring of PCEP.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-6.4">
        <name slugifiedName="name-verify-correct-operations">Verify Correct Operations</name>
        <t indent="0" pn="section-6.4-1">An implementation <bcp14>SHOULD</bcp14> also allow the operator to view FADs, which may be used in Flexible Algorithm path computation as defined in <xref target="FLEX-ALGO-COMPUTATION" format="default" sectionFormat="of" derivedContent="Section 5.2.2"/>.</t>
        <t indent="0" pn="section-6.4-2">An implementation <bcp14>SHOULD</bcp14> allow the operator to view nodes participating in the specified SR-Algorithm.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-6.5">
        <name slugifiedName="name-requirements-on-other-proto">Requirements on Other Protocols and Functional Components</name>
        <t indent="0" pn="section-6.5-1">This document does not put new requirements but relies on the necessary IGP extensions.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-6.6">
        <name slugifiedName="name-impact-on-network-operation">Impact on Network Operations</name>
        <t indent="0" pn="section-6.6-1">This document inherits considerations from documents describing IGP Flexible Algorithm -- for example, <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="RFC9350"/> and <xref target="RFC9843" format="default" sectionFormat="of" derivedContent="RFC9843"/>.</t>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-operational-considerations">Operational Considerations</name>
      <t indent="0" pn="section-7-1">This document inherits operational considerations from documents describing IGP Flexible Algorithm -- for example, <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="RFC9350"/> and <xref target="RFC9843" format="default" sectionFormat="of" derivedContent="RFC9843"/>.</t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-8-1">The security considerations described in <xref target="RFC5440" format="default" sectionFormat="of" derivedContent="RFC5440"/>,
      <xref target="RFC8231" format="default" sectionFormat="of" derivedContent="RFC8231"/>, <xref target="RFC8253" format="default" sectionFormat="of" derivedContent="RFC8253"/>, <xref target="RFC8281" format="default" sectionFormat="of" derivedContent="RFC8281"/>, <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/>, <xref target="RFC9603" format="default" sectionFormat="of" derivedContent="RFC9603"/>, and <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="RFC9350"/> apply to the extensions described in this document as well.</t>
      <t indent="0" pn="section-8-2">Note that this specification introduces the possibility of computing paths by the PCE based on Flexible-Algorithm-related topology attributes and based on the metric type and constraints from the FAD. This creates additional vulnerabilities, which are already described for the path computation done by IGP, like those described in the Security Considerations section of <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="RFC9350"/> but which are also applicable to path computation done by the PCE. Hence, securing the PCEP session using Transport Layer Security (TLS) <xref target="RFC8253" format="default" sectionFormat="of" derivedContent="RFC8253"/> <xref target="RFC9916" format="default" sectionFormat="of" derivedContent="RFC9916"/> is <bcp14>RECOMMENDED</bcp14> as per the recommendations
   and best current practices described in <xref target="RFC9325" format="default" sectionFormat="of" derivedContent="RFC9325"/>.</t>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section anchor="SR-CAPABILITY-FLAG" numbered="true" toc="include" removeInRFC="false" pn="section-9.1">
        <name slugifiedName="name-sr-capability-flag">SR Capability Flag</name>
        <t indent="0" pn="section-9.1-1">IANA maintains a registry named "SR Capability Flag Field" within the "Path Computation Element Protocol
   (PCEP) Numbers" registry group to manage the Flags field of the SR-PCE-CAPABILITY sub-TLV.  IANA has registered the following:</t>
        <table anchor="SR-CAPABILITY-FLAG-value" align="center" pn="table-1">
          <thead>
            <tr>
              <th align="center" colspan="1" rowspan="1">Bit</th>
              <th align="left" colspan="1" rowspan="1">Description </th>
              <th align="left" colspan="1" rowspan="1">Reference </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center" colspan="1" rowspan="1">5</td>
              <td align="left" colspan="1" rowspan="1">SR-Algorithm Capability</td>
              <td align="left" colspan="1" rowspan="1">RFC 9933</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="SRv6-CAPABILITY-FLAG" numbered="true" toc="include" removeInRFC="false" pn="section-9.2">
        <name slugifiedName="name-srv6-pce-capability-flag">SRv6 PCE Capability Flag</name>
        <t indent="0" pn="section-9.2-1">IANA maintains a registry named "SRv6 Capability Flag Field" within the "Path Computation Element Protocol
   (PCEP) Numbers" registry group to manage the Flags field of SRv6-PCE-CAPABILITY sub-TLV.  IANA has registered the following:</t>
        <table anchor="SRv6-CAPABILITY-FLAG-value" align="center" pn="table-2">
          <thead>
            <tr>
              <th align="center" colspan="1" rowspan="1">Bit</th>
              <th align="left" colspan="1" rowspan="1">Description </th>
              <th align="left" colspan="1" rowspan="1">Reference </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center" colspan="1" rowspan="1">13</td>
              <td align="left" colspan="1" rowspan="1">SR-Algorithm Capability</td>
              <td align="left" colspan="1" rowspan="1">RFC 9933</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="SR-ERO-FLAG" numbered="true" toc="include" removeInRFC="false" pn="section-9.3">
        <name slugifiedName="name-sr-ero-flag">SR-ERO Flag</name>
        <t indent="0" pn="section-9.3-1">IANA maintains a registry named "SR-ERO Flag Field" within the "Path Computation Element Protocol
   (PCEP) Numbers" registry group to manage the Flags field of the SR-ERO Subobject.  IANA has registered the following:</t>
        <table anchor="SR-ERO-FLAG-value" align="center" pn="table-3">
          <thead>
            <tr>
              <th align="center" colspan="1" rowspan="1">Bit</th>
              <th align="left" colspan="1" rowspan="1">Description </th>
              <th align="left" colspan="1" rowspan="1">Reference </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center" colspan="1" rowspan="1">7</td>
              <td align="left" colspan="1" rowspan="1">SR-Algorithm Flag (A)</td>
              <td align="left" colspan="1" rowspan="1">RFC 9933</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="SRv6-ERO-FLAG" numbered="true" toc="include" removeInRFC="false" pn="section-9.4">
        <name slugifiedName="name-srv6-ero-flag">SRv6-ERO Flag</name>
        <t indent="0" pn="section-9.4-1">IANA maintains a registry named "SRv6-ERO Flag Field" within the "Path Computation Element Protocol
   (PCEP) Numbers" registry group to manage the Flags field of the SRv6-ERO subobject.  IANA has registered the following:</t>
        <table anchor="SRv6-ERO-FLAG-value" align="center" pn="table-4">
          <thead>
            <tr>
              <th align="center" colspan="1" rowspan="1">Bit</th>
              <th align="left" colspan="1" rowspan="1">Description </th>
              <th align="left" colspan="1" rowspan="1">Reference </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center" colspan="1" rowspan="1">7</td>
              <td align="left" colspan="1" rowspan="1">SR-Algorithm Flag (A)</td>
              <td align="left" colspan="1" rowspan="1">RFC 9933</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="TLV-Type" numbered="true" toc="include" removeInRFC="false" pn="section-9.5">
        <name slugifiedName="name-pcep-tlv-types">PCEP TLV Types</name>
        <t indent="0" pn="section-9.5-1">IANA maintains a registry named "PCEP TLV Type Indicators" within the "Path Computation Element Protocol (PCEP) Numbers" registry group. IANA has registered the following TLV type for the new LSPA TLV specified in this document.</t>
        <table anchor="LSPA-TLV-type" align="center" pn="table-5">
          <thead>
            <tr>
              <th align="center" colspan="1" rowspan="1">Value</th>
              <th align="left" colspan="1" rowspan="1">Description </th>
              <th align="left" colspan="1" rowspan="1">Reference </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center" colspan="1" rowspan="1">66</td>
              <td align="left" colspan="1" rowspan="1">SR-Algorithm</td>
              <td align="left" colspan="1" rowspan="1">RFC 9933</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="Metric-Types" numbered="true" toc="include" removeInRFC="false" pn="section-9.6">
        <name slugifiedName="name-metric-types-2">Metric Types</name>
        <t indent="0" pn="section-9.6-1">IANA maintains a registry named "METRIC Object T Field" within the "Path Computation Element Protocol (PCEP) Numbers" registry group. IANA has registered these codepoints as follows:</t>
        <table anchor="Metric-types" align="center" pn="table-6">
          <thead>
            <tr>
              <th align="center" colspan="1" rowspan="1">Value</th>
              <th align="left" colspan="1" rowspan="1">Description </th>
              <th align="left" colspan="1" rowspan="1">Reference </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center" colspan="1" rowspan="1">22</td>
              <td align="left" colspan="1" rowspan="1">Path Min Delay metric</td>
              <td align="left" colspan="1" rowspan="1">RFC 9933</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">23</td>
              <td align="left" colspan="1" rowspan="1">P2MP Path Min Delay metric</td>
              <td align="left" colspan="1" rowspan="1">RFC 9933</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">24</td>
              <td align="left" colspan="1" rowspan="1">Path Bandwidth metric</td>
              <td align="left" colspan="1" rowspan="1">RFC 9933</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">25</td>
              <td align="left" colspan="1" rowspan="1">P2MP Path Bandwidth metric</td>
              <td align="left" colspan="1" rowspan="1">RFC 9933</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">128-255</td>
              <td align="left" colspan="1" rowspan="1">User-defined metric </td>
              <td align="left" colspan="1" rowspan="1">RFC 9933</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="PCEP-Error-Object" numbered="true" toc="include" removeInRFC="false" pn="section-9.7">
        <name slugifiedName="name-pcep-error-object">PCEP-Error Object</name>
        <t indent="0" pn="section-9.7-1">IANA has registered the following Error-Types and Error-values within the "PCEP-ERROR Object Error Types and Values" registry of the "Path Computation Element Protocol (PCEP) Numbers" registry group.</t>
        <table anchor="PCEP-Error-type" align="center" pn="table-7">
          <thead>
            <tr>
              <th align="center" colspan="1" rowspan="1">Error-Type</th>
              <th align="left" colspan="1" rowspan="1">Meaning </th>
              <th align="left" colspan="1" rowspan="1">Error-value </th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center" colspan="1" rowspan="1">19</td>
              <td align="left" colspan="1" rowspan="1">Invalid Operation</td>
              <td align="left" colspan="1" rowspan="1">33: Attempted use of SR-Algorithm without advertised capability</td>
              <td align="left" colspan="1" rowspan="1">RFC 9933</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1"/>
              <td align="left" colspan="1" rowspan="1"/>
              <td align="left" colspan="1" rowspan="1">34: Unsupported combination of constraints</td>
              <td align="left" colspan="1" rowspan="1">RFC 9933</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references pn="section-10">
      <name slugifiedName="name-references">References</name>
      <references pn="section-10.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="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="RFC7471" target="https://www.rfc-editor.org/info/rfc7471" quoteTitle="true" derivedAnchor="RFC7471">
          <front>
            <title>OSPF Traffic Engineering (TE) Metric Extensions</title>
            <author fullname="S. Giacalone" initials="S." surname="Giacalone"/>
            <author fullname="D. Ward" initials="D." surname="Ward"/>
            <author fullname="J. Drake" initials="J." surname="Drake"/>
            <author fullname="A. Atlas" initials="A." surname="Atlas"/>
            <author fullname="S. Previdi" initials="S." surname="Previdi"/>
            <date month="March" year="2015"/>
            <abstract>
              <t indent="0">In certain networks, such as, but not limited to, financial information networks (e.g., stock market data providers), network performance information (e.g., link propagation delay) is becoming critical to data path selection.</t>
              <t indent="0">This document describes common extensions to RFC 3630 "Traffic Engineering (TE) Extensions to OSPF Version 2" and RFC 5329 "Traffic Engineering Extensions to OSPF Version 3" to enable network performance information to be distributed in a scalable fashion. The information distributed using OSPF TE Metric Extensions can then be used to make path selection decisions based on network performance.</t>
              <t indent="0">Note that this document only covers the mechanisms by which network performance information is distributed. The mechanisms for measuring network performance information or using that information, once distributed, are outside the scope of this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7471"/>
          <seriesInfo name="DOI" value="10.17487/RFC7471"/>
        </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="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="RFC8233" target="https://www.rfc-editor.org/info/rfc8233" quoteTitle="true" derivedAnchor="RFC8233">
          <front>
            <title>Extensions to the Path Computation Element Communication Protocol (PCEP) to Compute Service-Aware Label Switched Paths (LSPs)</title>
            <author fullname="D. Dhody" initials="D." surname="Dhody"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <author fullname="V. Manral" initials="V." surname="Manral"/>
            <author fullname="Z. Ali" initials="Z." surname="Ali"/>
            <author fullname="K. Kumaki" initials="K." surname="Kumaki"/>
            <date month="September" year="2017"/>
            <abstract>
              <t indent="0">In certain networks, such as, but not limited to, financial information networks (e.g., stock market data providers), network performance criteria (e.g., latency) are becoming as critical to data path selection as other metrics and constraints. These metrics are associated with the Service Level Agreement (SLA) between customers and service providers. The link bandwidth utilization (the total bandwidth of a link in actual use for the forwarding) is another important factor to consider during path computation.</t>
              <t indent="0">IGP Traffic Engineering (TE) Metric Extensions describe mechanisms with which network performance information is distributed via OSPF and IS-IS, respectively. 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. This document describes the extension to PCEP to carry latency, delay variation, packet loss, and link bandwidth utilization as constraints for end-to-end path computation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8233"/>
          <seriesInfo name="DOI" value="10.17487/RFC8233"/>
        </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="RFC8402" target="https://www.rfc-editor.org/info/rfc8402" quoteTitle="true" derivedAnchor="RFC8402">
          <front>
            <title>Segment Routing Architecture</title>
            <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
            <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
            <author fullname="L. Ginsberg" initials="L." surname="Ginsberg"/>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
            <author fullname="R. Shakir" initials="R." surname="Shakir"/>
            <date month="July" year="2018"/>
            <abstract>
              <t indent="0">Segment Routing (SR) leverages the source routing paradigm. A node steers a packet through an ordered list of instructions, called "segments". A segment can represent any instruction, topological or service based. A segment can have a semantic local to an SR node or global within an SR domain. SR provides a mechanism that allows a flow to be restricted to a specific topological path, while maintaining per-flow state only at the ingress node(s) to the SR domain.</t>
              <t indent="0">SR can be directly applied to the MPLS architecture with no change to the forwarding plane. A segment is encoded as an MPLS label. An ordered list of segments is encoded as a stack of labels. The segment to process is on the top of the stack. Upon completion of a segment, the related label is popped from the stack.</t>
              <t indent="0">SR can be applied to the IPv6 architecture, with a new type of routing header. A segment is encoded as an IPv6 address. An ordered list of segments is encoded as an ordered list of IPv6 addresses in the routing header. The active segment is indicated by the Destination Address (DA) of the packet. The next active segment is indicated by a pointer in the new routing header.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8402"/>
          <seriesInfo name="DOI" value="10.17487/RFC8402"/>
        </reference>
        <reference anchor="RFC8570" target="https://www.rfc-editor.org/info/rfc8570" quoteTitle="true" derivedAnchor="RFC8570">
          <front>
            <title>IS-IS Traffic Engineering (TE) Metric Extensions</title>
            <author fullname="L. Ginsberg" initials="L." role="editor" surname="Ginsberg"/>
            <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
            <author fullname="S. Giacalone" initials="S." surname="Giacalone"/>
            <author fullname="D. Ward" initials="D." surname="Ward"/>
            <author fullname="J. Drake" initials="J." surname="Drake"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="March" year="2019"/>
            <abstract>
              <t indent="0">In certain networks, such as, but not limited to, financial information networks (e.g., stock market data providers), network-performance criteria (e.g., latency) are becoming as critical to data-path selection as other metrics.</t>
              <t indent="0">This document describes extensions to IS-IS Traffic Engineering Extensions (RFC 5305). These extensions provide a way to distribute and collect network-performance information in a scalable fashion. The information distributed using IS-IS TE Metric Extensions can then be used to make path-selection decisions based on network performance.</t>
              <t indent="0">Note that this document only covers the mechanisms with which network-performance information is distributed. The mechanisms for measuring network performance or acting on that information, once distributed, are outside the scope of this document.</t>
              <t indent="0">This document obsoletes RFC 7810.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8570"/>
          <seriesInfo name="DOI" value="10.17487/RFC8570"/>
        </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="RFC8665" target="https://www.rfc-editor.org/info/rfc8665" quoteTitle="true" derivedAnchor="RFC8665">
          <front>
            <title>OSPF Extensions for Segment Routing</title>
            <author fullname="P. Psenak" initials="P." role="editor" surname="Psenak"/>
            <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="H. Gredler" initials="H." surname="Gredler"/>
            <author fullname="R. Shakir" initials="R." surname="Shakir"/>
            <author fullname="W. Henderickx" initials="W." surname="Henderickx"/>
            <author fullname="J. Tantsura" initials="J." surname="Tantsura"/>
            <date month="December" year="2019"/>
            <abstract>
              <t indent="0">Segment Routing (SR) allows a flexible definition of end-to-end paths within IGP topologies by encoding paths as sequences of topological subpaths called "segments". These segments are advertised by the link-state routing protocols (IS-IS and OSPF).</t>
              <t indent="0">This document describes the OSPFv2 extensions required for Segment Routing.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8665"/>
          <seriesInfo name="DOI" value="10.17487/RFC8665"/>
        </reference>
        <reference anchor="RFC8667" target="https://www.rfc-editor.org/info/rfc8667" quoteTitle="true" derivedAnchor="RFC8667">
          <front>
            <title>IS-IS Extensions for Segment Routing</title>
            <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
            <author fullname="L. Ginsberg" initials="L." role="editor" surname="Ginsberg"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="A. Bashandy" initials="A." surname="Bashandy"/>
            <author fullname="H. Gredler" initials="H." surname="Gredler"/>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <date month="December" year="2019"/>
            <abstract>
              <t indent="0">Segment Routing (SR) allows for a flexible definition of end-to-end paths within IGP topologies by encoding paths as sequences of topological sub-paths, called "segments". These segments are advertised by the link-state routing protocols (IS-IS and OSPF).</t>
              <t indent="0">This document describes the IS-IS extensions that need to be introduced for Segment Routing operating on an MPLS data plane.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8667"/>
          <seriesInfo name="DOI" value="10.17487/RFC8667"/>
        </reference>
        <reference anchor="RFC9256" target="https://www.rfc-editor.org/info/rfc9256" quoteTitle="true" derivedAnchor="RFC9256">
          <front>
            <title>Segment Routing Policy Architecture</title>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="K. Talaulikar" initials="K." role="editor" surname="Talaulikar"/>
            <author fullname="D. Voyer" initials="D." surname="Voyer"/>
            <author fullname="A. Bogdanov" initials="A." surname="Bogdanov"/>
            <author fullname="P. Mattes" initials="P." surname="Mattes"/>
            <date month="July" year="2022"/>
            <abstract>
              <t indent="0">Segment Routing (SR) allows a node to steer a packet flow along any path. Intermediate per-path states are eliminated thanks to source routing. SR Policy is an ordered list of segments (i.e., instructions) that represent a source-routed policy. Packet flows are steered into an SR Policy on a node where it is instantiated called a headend node. The packets steered into an SR Policy carry an ordered list of segments associated with that SR Policy.</t>
              <t indent="0">This document updates RFC 8402 as it details the concepts of SR Policy and steering into an SR Policy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9256"/>
          <seriesInfo name="DOI" value="10.17487/RFC9256"/>
        </reference>
        <reference anchor="RFC9350" target="https://www.rfc-editor.org/info/rfc9350" quoteTitle="true" derivedAnchor="RFC9350">
          <front>
            <title>IGP Flexible Algorithm</title>
            <author fullname="P. Psenak" initials="P." role="editor" surname="Psenak"/>
            <author fullname="S. Hegde" initials="S." surname="Hegde"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="K. Talaulikar" initials="K." surname="Talaulikar"/>
            <author fullname="A. Gulko" initials="A." surname="Gulko"/>
            <date month="February" year="2023"/>
            <abstract>
              <t indent="0">IGP protocols historically compute the best paths over the network based on the IGP metric assigned to the links. Many network deployments use RSVP-TE or Segment Routing - Traffic Engineering (SR-TE) to steer traffic over a path that is computed using different metrics or constraints than the shortest IGP path. This document specifies a solution that allows IGPs themselves to compute constraint-based paths over the network. This document also specifies a way of using Segment Routing (SR) Prefix-SIDs and SRv6 locators to steer packets along the constraint-based paths.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9350"/>
          <seriesInfo name="DOI" value="10.17487/RFC9350"/>
        </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="RFC9753" target="https://www.rfc-editor.org/info/rfc9753" quoteTitle="true" derivedAnchor="RFC9753">
          <front>
            <title>Extension for Stateful PCE to Allow Optional Processing of Path Computation Element Communication Protocol (PCEP) Objects</title>
            <author fullname="C. Li" initials="C." surname="Li"/>
            <author fullname="H. Zheng" initials="H." surname="Zheng"/>
            <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
            <date month="April" year="2025"/>
            <abstract>
              <t indent="0">This document introduces a mechanism to mark some of the Path Computation Element Communication Protocol (PCEP) objects as optional during PCEP message exchange, so the stateful Path Computation Element (PCE) model can relax some constraints during path computation and setup. This document introduces this relaxation to stateful PCE, and it updates RFC 8231.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9753"/>
          <seriesInfo name="DOI" value="10.17487/RFC9753"/>
        </reference>
        <reference anchor="RFC9843" target="https://www.rfc-editor.org/info/rfc9843" quoteTitle="true" derivedAnchor="RFC9843">
          <front>
            <title>IGP Flexible Algorithms: Bandwidth, Delay, Metrics, and Constraints</title>
            <author fullname="S. Hegde" initials="S." surname="Hegde"/>
            <author fullname="W. Britto" initials="W." surname="Britto"/>
            <author fullname="R. Shetty" initials="R." surname="Shetty"/>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <author fullname="P. Psenak" initials="P." surname="Psenak"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <date month="September" year="2025"/>
            <abstract>
              <t indent="0">Many networks configure the IGP link metric relative to the link capacity, and high bandwidth traffic gets routed per the link capacity. Flexible Algorithms provide mechanisms to create constraint-based paths in an IGP. This specification documents a generic metric-type and a set of bandwidth-related constraints to be used in Flexible Algorithms.</t>
              <t indent="0">This document updates RFC 9350.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9843"/>
          <seriesInfo name="DOI" value="10.17487/RFC9843"/>
        </reference>
        <reference anchor="RFC9916" target="https://www.rfc-editor.org/info/rfc9916" quoteTitle="true" derivedAnchor="RFC9916">
          <front>
            <title>Updates to the Usage of TLS to Provide a Secure Transport for the Path Computation Element Communication Protocol (PCEP)</title>
            <author fullname="D. Dhody" initials="D." surname="Dhody"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="July" year="2026"/>
            <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 the Path Computation Element Communication Protocol (PCEP). 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="RFC" value="9916"/>
          <seriesInfo name="DOI" value="10.17487/RFC9916"/>
        </reference>
        <reference anchor="RFC9917" target="https://www.rfc-editor.org/info/rfc9917" quoteTitle="true" derivedAnchor="RFC9917">
          <front>
            <title>IGP Flexible Algorithms Reverse Affinity Constraint</title>
            <author fullname="P. Psenak" initials="P." surname="Psenak"/>
            <author fullname="J. Horn" initials="J." surname="Horn"/>
            <author fullname="A. Dhamija" initials="A." surname="Dhamija"/>
            <date month="January" year="2026"/>
            <abstract>
              <t indent="0">An IGP Flexible Algorithm (Flex-Algorithm) enables the computation of constraint-based paths within an IGP domain, allowing operators to influence path selection according to administrative policies. This document defines an extension to Flex-Algorithm that allows the inclusion or exclusion of links from path computation based on Administrative Groups (also known as link affinities) associated with the reverse direction of the path under computation.</t>
              <t indent="0">This document updates RFCs 9350 and 9843 by introducing the new IANA registry that specifies the ordered set of rules that are used to prune links from the topology during the Flex-Algorithm path computation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9917"/>
          <seriesInfo name="DOI" value="10.17487/RFC9917"/>
        </reference>
      </references>
      <references pn="section-10.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="IANA-ALGORITHM-TYPES" target="https://www.iana.org/assignments/igp-parameters" quoteTitle="true" derivedAnchor="IANA-ALGORITHM-TYPES">
          <front>
            <title>IGP Algorithm Types</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IEEE.754.2019" quoteTitle="true" target="https://doi.org/10.1109/IEEESTD.2019.8766229" derivedAnchor="IEEE.754.2019">
          <front>
            <title>IEEE Standard for Floating-Point Arithmetic</title>
            <author>
              <organization showOnFrontPage="true">IEEE</organization>
            </author>
            <date month="July" year="2019"/>
          </front>
          <seriesInfo name="IEEE Std" value="754-2019"/>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2019.8766229"/>
        </reference>
        <reference anchor="RFC3031" target="https://www.rfc-editor.org/info/rfc3031" quoteTitle="true" derivedAnchor="RFC3031">
          <front>
            <title>Multiprotocol Label Switching Architecture</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen"/>
            <author fullname="A. Viswanathan" initials="A." surname="Viswanathan"/>
            <author fullname="R. Callon" initials="R." surname="Callon"/>
            <date month="January" year="2001"/>
            <abstract>
              <t indent="0">This document specifies the architecture for Multiprotocol Label Switching (MPLS). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3031"/>
          <seriesInfo name="DOI" value="10.17487/RFC3031"/>
        </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="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="RFC9325" target="https://www.rfc-editor.org/info/rfc9325" quoteTitle="true" derivedAnchor="RFC9325">
          <front>
            <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="November" year="2022"/>
            <abstract>
              <t indent="0">Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are used to protect data exchanged over a wide range of application protocols and can also form the basis for secure transport protocols. Over the years, the industry has witnessed several serious attacks on TLS and DTLS, including attacks on the most commonly used cipher suites and their modes of operation. This document provides the latest recommendations for ensuring the security of deployed services that use TLS and DTLS. These recommendations are applicable to the majority of use cases.</t>
              <t indent="0">RFC 7525, an earlier version of the TLS recommendations, was published when the industry was transitioning to TLS 1.2. Years later, this transition is largely complete, and TLS 1.3 is widely available. This document updates the guidance given the new environment and obsoletes RFC 7525. In addition, this document updates RFCs 5288 and 6066 in view of recent attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="195"/>
          <seriesInfo name="RFC" value="9325"/>
          <seriesInfo name="DOI" value="10.17487/RFC9325"/>
        </reference>
        <reference anchor="RFC9479" target="https://www.rfc-editor.org/info/rfc9479" quoteTitle="true" derivedAnchor="RFC9479">
          <front>
            <title>IS-IS Application-Specific Link Attributes</title>
            <author fullname="L. Ginsberg" initials="L." surname="Ginsberg"/>
            <author fullname="P. Psenak" initials="P." surname="Psenak"/>
            <author fullname="S. Previdi" initials="S." surname="Previdi"/>
            <author fullname="W. Henderickx" initials="W." surname="Henderickx"/>
            <author fullname="J. Drake" initials="J." surname="Drake"/>
            <date month="October" year="2023"/>
            <abstract>
              <t indent="0">Existing traffic-engineering-related link attribute advertisements have been defined and are used in RSVP-TE deployments. Since the original RSVP-TE use case was defined, additional applications (e.g., Segment Routing Policy and Loop-Free Alternates) that also make use of the link attribute advertisements have been defined. In cases where multiple applications wish to make use of these link attributes, the current advertisements do not support application-specific values for a given attribute, nor do they support an indication of which applications are using the advertised value for a given link. This document introduces link attribute advertisements that address both of these shortcomings.</t>
              <t indent="0">This document obsoletes RFC 8919.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9479"/>
          <seriesInfo name="DOI" value="10.17487/RFC9479"/>
        </reference>
        <reference anchor="RFC9492" target="https://www.rfc-editor.org/info/rfc9492" quoteTitle="true" derivedAnchor="RFC9492">
          <front>
            <title>OSPF Application-Specific Link Attributes</title>
            <author fullname="P. Psenak" initials="P." role="editor" surname="Psenak"/>
            <author fullname="L. Ginsberg" initials="L." surname="Ginsberg"/>
            <author fullname="W. Henderickx" initials="W." surname="Henderickx"/>
            <author fullname="J. Tantsura" initials="J." surname="Tantsura"/>
            <author fullname="J. Drake" initials="J." surname="Drake"/>
            <date month="October" year="2023"/>
            <abstract>
              <t indent="0">Existing traffic-engineering-related link attribute advertisements have been defined and are used in RSVP-TE deployments. Since the original RSVP-TE use case was defined, additional applications such as Segment Routing (SR) Policy and Loop-Free Alternates (LFAs) that also make use of the link attribute advertisements have been defined. In cases where multiple applications wish to make use of these link attributes, the current advertisements do not support application-specific values for a given attribute, nor do they support indication of which applications are using the advertised value for a given link. This document introduces link attribute advertisements in OSPFv2 and OSPFv3 that address both of these shortcomings.</t>
              <t indent="0">This document obsoletes RFC 8920.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9492"/>
          <seriesInfo name="DOI" value="10.17487/RFC9492"/>
        </reference>
        <reference anchor="RFC9552" target="https://www.rfc-editor.org/info/rfc9552" quoteTitle="true" derivedAnchor="RFC9552">
          <front>
            <title>Distribution of Link-State and Traffic Engineering Information Using BGP</title>
            <author fullname="K. Talaulikar" initials="K." role="editor" surname="Talaulikar"/>
            <date month="December" year="2023"/>
            <abstract>
              <t indent="0">In many environments, a component external to a network is called upon to perform computations based on the network topology and the current state of the connections within the network, including Traffic Engineering (TE) information. This is information typically distributed by IGP routing protocols within the network.</t>
              <t indent="0">This document describes a mechanism by which link-state and TE information can be collected from networks and shared with external components using the BGP routing protocol. This is achieved using a BGP Network Layer Reachability Information (NLRI) encoding format. The mechanism applies to physical and virtual (e.g., tunnel) IGP links. The mechanism described is subject to policy control.</t>
              <t indent="0">Applications of this technique include Application-Layer Traffic Optimization (ALTO) servers and Path Computation Elements (PCEs).</t>
              <t indent="0">This document obsoletes RFC 7752 by completely replacing that document. It makes some small changes and clarifications to the previous specification. This document also obsoletes RFC 9029 by incorporating the updates that it made to RFC 7752.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9552"/>
          <seriesInfo name="DOI" value="10.17487/RFC9552"/>
        </reference>
        <reference anchor="RFC9826" target="https://www.rfc-editor.org/info/rfc9826" quoteTitle="true" derivedAnchor="RFC9826">
          <front>
            <title>A YANG Data Model for the Path Computation Element Communication Protocol (PCEP)</title>
            <author fullname="D. Dhody" initials="D." role="editor" surname="Dhody"/>
            <author fullname="V. Beeram" initials="V." surname="Beeram"/>
            <author fullname="J. Hardwick" initials="J." surname="Hardwick"/>
            <author fullname="J. Tantsura" initials="J." surname="Tantsura"/>
            <date month="September" year="2025"/>
            <abstract>
              <t indent="0">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>
          </front>
          <seriesInfo name="RFC" value="9826"/>
          <seriesInfo name="DOI" value="10.17487/RFC9826"/>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgements" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">Thanks to <contact fullname="Dhruv Dhody"/> for shepherding the
      document and for their contributions and suggestions.</t>
      <t indent="0" pn="section-appendix.a-2">The authors would like to thank <contact fullname="Adrian Farrel"/>, <contact fullname="Aijun Wang"/>, <contact fullname="Alexey Melnikov"/>, <contact fullname="Boris Khasanov"/>, <contact fullname="Deb Cooley"/>, <contact fullname="Éric Vyncke"/>, <contact fullname="Gunter Van de Velde"/>,
      <contact fullname="Jie Dong"/>, <contact fullname="Ketan Talaulikar"/>,
      <contact fullname="Mahesh Jethanandani"/>, <contact fullname="Marina       Fizgeer"/>, <contact fullname="Mike Bishop"/>, <contact fullname="Mohamed Boucadair"/>, <contact fullname="Nagendra Nainar"/>,
      <contact fullname="Rakesh Gandhi"/>, <contact fullname="Russ White"/>,
      and <contact fullname="Shraddha Hegde"/> for review and suggestions.</t>
    </section>
    <section numbered="false" toc="include" removeInRFC="false" pn="section-appendix.b">
      <name slugifiedName="name-contributors">Contributors</name>
      <contact fullname="Mike Koldychev">
        <organization showOnFrontPage="true">Ciena Corporation</organization>
        <address>
          <email>mkoldych@proton.me</email>
        </address>
      </contact>
      <contact fullname="Zafar Ali">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <email>zali@cisco.com</email>
        </address>
      </contact>
      <contact fullname="Stephane Litkowski">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <email>slitkows.ietf@gmail.com</email>
        </address>
      </contact>
      <contact fullname="Siva Sivabalan">
        <organization showOnFrontPage="true">Ciena</organization>
        <address>
          <email>msiva282@gmail.com</email>
        </address>
      </contact>
      <contact fullname="Tarek Saad">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <email>tsaad.net@gmail.com</email>
        </address>
      </contact>
      <contact fullname="Mahendra Singh Negi">
        <organization showOnFrontPage="true">RtBrick Inc</organization>
        <address>
          <email>mahend.ietf@gmail.com</email>
        </address>
      </contact>
      <contact fullname="Tom Petch">
        <address>
          <email>ietfc@btconnect.com</email>
        </address>
      </contact>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.c">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Samuel Sidor" initials="S." surname="Sidor">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <street>Eurovea Central 3.</street>
            <street>Pribinova 10</street>
            <city>Bratislava</city>
            <code>811 09</code>
            <country>Slovakia</country>
          </postal>
          <email>ssidor@cisco.com</email>
        </address>
      </author>
      <author fullname="Zoey Rose" initials="Z." surname="Rose">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <street>2300 East President George</street>
            <city>Richardson</city>
            <region>TX</region>
            <code>75082</code>
            <country>United States of America</country>
          </postal>
          <email>atokar@cisco.com</email>
        </address>
      </author>
      <author fullname="Shaofu Peng" initials="S." surname="Peng">
        <organization showOnFrontPage="true">ZTE Corporation</organization>
        <address>
          <postal>
            <street>No.50 Software Avenue</street>
            <city>Nanjing</city>
            <region>Jiangsu</region>
            <code>210012</code>
            <country>China</country>
          </postal>
          <email>peng.shaofu@zte.com.cn</email>
        </address>
      </author>
      <author fullname="Shuping Peng" initials="S." surname="Peng">
        <organization showOnFrontPage="true">Huawei Technologies</organization>
        <address>
          <postal>
            <street>Huawei Campus, No. 156 Beiqing Rd.</street>
            <city>Beijing</city>
            <code>100095</code>
            <country>China</country>
          </postal>
          <email>pengshuping@huawei.com</email>
        </address>
      </author>
      <author fullname="Andrew Stone" initials="A." surname="Stone">
        <organization showOnFrontPage="true">Nokia</organization>
        <address>
          <email>andrew.stone@nokia.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
