<?xmlversion="1.0" encoding="US-ASCII"?>version='1.0' encoding='UTF-8'?> <!DOCTYPE rfcSYSTEM "rfc2629.dtd"> <?rfc toc="yes"?> <?rfc tocompact="yes"?> <?rfc tocdepth="3"?> <?rfc tocindent="yes"?> <?rfc symrefs="yes"?> <?rfc sortrefs="yes"?> <?rfc comments="yes"?> <?rfc inline="yes"?> <?rfc compact="yes"?> <?rfc subcompact="no"?>[ <!ENTITY nbsp " "> <!ENTITY zwsp "​"> <!ENTITY nbhy "‑"> <!ENTITY wj "⁠"> ]> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" consensus="true" docName="draft-ietf-pce-sid-algo-29" number="9933" ipr="trust200902"updates="8664 9603">updates="8664, 9603" obsoletes="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" version="3"> <front> <title abbrev="SR-Algorithm in PCEP"> Carrying SR-Algorithm in Path Computation Element Communication Protocol (PCEP) </title> <seriesInfo name="RFC" value="9933"/> <author fullname="Samuel Sidor" initials="S." surname="Sidor"> <organization>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>Cisco Systems, Inc.</organization> <address> <postal> <street>2300 East President George</street> <city>Richardson</city><code>TX 75082</code><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>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>Huawei Technologies</organization> <address> <postal> <street>Huawei Campus, No. 156 Beiqing Rd.</street> <city>Beijing</city><region/><code>100095</code> <country>China</country> </postal><phone/> <facsimile/><email>pengshuping@huawei.com</email><uri/></address> </author> <author fullname="Andrew Stone" initials="A." surname="Stone"> <organization>Nokia</organization> <address> <email>andrew.stone@nokia.com</email> </address> </author><date/> <workgroup>PCE Working Group</workgroup><date month="February" year="2026"/> <area>RTG</area> <workgroup>pce</workgroup> <!-- [rfced] Please insert any keywords (beyond those that appear in the title) for use on https://www.rfc-editor.org/search. --> <keyword>example</keyword> <abstract> <t>This document 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> </front> <middle> <section anchor="Introduction"title="Introduction">numbered="true" toc="default"> <name>Introduction</name> <t><xreftarget="RFC5440"/>target="RFC5440" format="default"/> 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. <xreftarget="RFC8664"/>target="RFC8664" format="default"/> and <xreftarget="RFC9603"/>target="RFC9603" format="default"/> specify PCEP extensions to support Segment Routing (SR) over MPLS and IPv6dataplanesdata planes, respectively.</t> <t>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 Interior Gateway Protocols (IGPs).</t> <t>The PCEP extensions specified in this document are as follows:<list style="hanging"> <t hangText="Signaling</t> <dl newline="false" spacing="normal"> <dt>Signaling SR-Algorithm in ERO andRRO:">RRO:</dt> <dd> Mechanisms are introduced for PCEP peers to exchange information about the SR-Algorithm associated with each SID. This includes extending SR-ERO,SR-RRO andSR-RRO, SRv6-ERO, and SRv6-RRO subobjects to carry an Algorithm field. This document updates <xreftarget="RFC8664"/>target="RFC8664" format="default"/> and <xreftarget="RFC9603"/>target="RFC9603" format="default"/> to enable suchencoding.</t> <t hangText="SR-Algorithmencoding.</dd> <dt>SR-Algorithm Constraint for PathComputation:">Computation:</dt> <dd> 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.</t> <t hangText="ExtensionsObject.</dd> <dt>Extensions to METRICObject:">SeveralObject:</dt> <dd>Several new metric types are introduced for the METRIC Object to support optimization metrics derived fromFADsFlexible Algorithm Definitions (FADs) during Flexible Algorithm pathcomputation,computation; their application is not restricted to FlexibleAlgorithmsAlgorithms, and they may be used withLSPs setupLabel Switched Paths (LSPs) set up using different Path SetupTypes.</t> </list> </t>Types.</dd> </dl> <section anchor="Language"title="Requirements Language"> <t>Thenumbered="true" toc="default"> <name>Requirements Language</name> <t> The key words"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY","<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and"OPTIONAL""<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described inBCP 14BCP 14 <xreftarget="RFC2119"></xref>target="RFC2119"/> <xreftarget="RFC8174"></xref>target="RFC8174"/> when, and only when, they appear in all capitals, as shownhere.</t>here. </t> </section> </section> <sectiontitle="Terminology"> <t>Thisnumbered="true" toc="default"> <name>Terminology</name> <!--[rfced] FYI - We removed the first paragraph in Section 2 as it repeats the same information in the second paragraph. Please let us know of any objections. Original: This document uses the following terms defined in<xref target="RFC5440"/>:[RFC5440]: ERO, LSPA, PCC, PCE, PCEP, PCEP Peer, PCEP speaker, RRO,TED.</t>TED. This document uses the following terms defined in [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>This document uses the following terms defined in <xreftarget="RFC5440"/>:target="RFC5440" format="default"/>: Explicit Route Object (ERO), Label Switched Path Attributes (LSPA), Path Computation Client (PCC), Path Computation Element (PCE), Path Computation Element Communication Protocol (PCEP), PCEPPeer,peer, PCEP speaker, Record Route Object (RRO), and Traffic Engineering Database (TED).</t> <t>This document uses the following term defined in <xreftarget="RFC3031"/>:target="RFC3031" format="default"/>: Label Switched Path (LSP).</t> <t>This document uses the following term defined in <xreftarget="RFC9479"/>target="RFC9479" format="default"/> and <xreftarget="RFC9492"/>:target="RFC9492" format="default"/>: Application-Specific Link Attributes (ASLA).</t> <t>This document uses the following terms defined in <xreftarget="RFC8664"/>:target="RFC8664" format="default"/>: Node or Adjacency Identifier (NAI) and Segment Routing Database (SR-DB).</t> <t>This document uses the following terms defined in <xreftarget="RFC9350"/>:target="RFC9350" format="default"/>: Flexible Algorithm Definition (FAD) andWinningwinning FAD.</t> <t> Note that the base PCEP specification <xreftarget="RFC4655"/>target="RFC4655" format="default"/> 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 additionalpath setup types,Path Setup Types, such as SRv6, has been introduced <xreftarget="RFC9603"/>.target="RFC9603" format="default"/>. 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 <xreftarget="RFC8231"/>).</t>target="RFC8231" format="default"/>).</t> <t>The termextension block"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>The following terminologies are used in this document:<list style="hanging"> <t hangText="P2MP:"> Point-to-Multipoint</t> <t hangText="Subobject</t> <dl newline="false" spacing="normal"> <dt>P2MP:</dt> <dd> Point-to-Multipoint</dd> <dt>Subobject ExtensionBlock:">Block:</dt> <dd> Optional, variable-length extension block for SR-ERO and SR-RRO subobjects defined in <xreftarget="Subobject-Extension-Block"/>target="Subobject-Extension-Block" format="default"/> of thisdocument.</t> <t hangText="Subobjectdocument.</dd> <dt>Subobject Extension Block Flag(SEBF):">(SEBF):</dt> <dd> 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 ExtensionBlock.</t> </list> </t>Block.</dd> </dl> </section> <section anchor="Motivation"title="Motivation">numbered="true" toc="default"> <name>Motivation</name> <t>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 anySR-algorithm.</t>SR-Algorithm.</t> <t>A primary motivation for these extensions is to enable the PCE to leverage the path computation logic and topological information derived from Interior Gateway Protocols (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>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>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>The ability to specify an SR-Algorithm per SID in ERO and RRO is crucial for multiple reasons, for example:</t><list style="symbols"><ul spacing="normal"> <li> <t>SID types without algorithm specified - Certain SID types, such as Binding SIDs (BSIDs) <xreftarget="RFC8402"/>,target="RFC8402" format="default"/>, may not have anSR-algorithmSR-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. Note: In SRv6, the BSID can be allocated from analgo-specificalgorithm-specific SRv6LocatorLocator, which will result in the path to that BSID PCC node following thatalgo-specificalgorithm-specific path. However, the implicit algorithm of BSID is independent ofSR algorithmthe SR-Algorithm used for the SR Policy associated with that BSID.</t> </li> <li> <t>Topologies with two Interior Gateway Protocol (IGP) domains, each using the same FAD but with differing algorithm numbers.</t></list></li> </ul> </section> <section anchor="OBJECT-FORMATS"title="Object Formats">numbered="true" toc="default"> <name>Object Formats</name> <section anchor="THE-OPEN-SUBOBJECT"title="OPEN Object">numbered="true" toc="default"> <name>OPEN Object</name> <section anchor="SR-CAP-FLAG"title="SRnumbered="true" toc="default"> <name>SR PCE CapabilitySub-TLV">Sub-TLV</name> <t>The SR-PCE-CAPABILITYSub-TLVsub-TLV is defined in <xref target="RFC8664" sectionFormat="of" section="4.1.2"/>format="default"/> to be included in the PATH-SETUP-TYPE-CAPABILITY TLV.</t> <t>This document defines the following flag in the SR-PCE-CAPABILITY Sub-TLV Flags field:</t><list style="symbols"> <t>S<dl spacing="normal" newline="false"> <dt>S (SR-Algorithm Capability) - bit5: If5:</dt><dd>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 <xreftarget="SR-ERO-Subobject"/>target="SR-ERO-Subobject" format="default"/> and the SR-Algorithm TLV described in <xreftarget="SR-Algorithm-TLV"/>target="SR-Algorithm-TLV" format="default"/> for LSPssetupset up using Path Setup Type 1 (Segment Routing) <xreftarget="RFC8664"/>.target="RFC8664" format="default"/>. It does not indicate support for these extensions for other Path Setup Types. If the S flag is set to 0, behavior reverts to the procedures defined in existing specifications prior to the introduction of thisextension.</t> </list>extension.</dd> </dl> </section> <section anchor="SRv6-CAP-FLAG"title="SRv6numbered="true" toc="default"> <name>SRv6 PCE Capabilitysub-TLV">Sub-TLV</name> <t>The SRv6-PCE-CAPABILITY sub-TLV is defined in <xref target="RFC9603" sectionFormat="of" section="4.1.1"/>format="default"/> to be included in the PATH-SETUP-TYPE-CAPABILITY TLV.</t> <t>This document defines the following flag in the SRv6-PCE-CAPABILITYsub-TLVSub-TLV Flags field:</t><list style="symbols"> <t>SR-Algorithm<dl spacing="normal" newline="false"> <dt>SR-Algorithm Capability (S) - bitTBD1: If13:</dt><dd>If the S flag is set to 1, a PCEP speaker indicates support for the Algorithm field in the SRv6-ERO subobject described in <xreftarget="SRv6-ERO-Subobject"/>target="SRv6-ERO-Subobject" format="default"/> and the SR-Algorithm TLV described in <xreftarget="SR-Algorithm-TLV"/>target="SR-Algorithm-TLV" format="default"/> for LSPssetupset up using Path Setup Type 3 (SRv6) <xreftarget="RFC9603"/>.target="RFC9603" format="default"/>. It does not indicate support for these extensions for other Path Setup Types. If the S flag is set to 0, behavior reverts to the procedures defined in existing specifications prior to the introduction of thisextension.</t> </list>extension.</dd> </dl> </section> </section> <section anchor="SR-ERO-Subobject"title="SR-ERO Subobject">numbered="true" toc="default"> <name>SR-ERO Subobject</name> <t>This document updates the SR-ERO subobject format defined in <xref target="RFC8664" sectionFormat="of" section="4.3.1"/>format="default"/> 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 <xreftarget="SR-ERO-subobject-format"/>.</t>target="SR-ERO-subobject-format" format="default"/>.</t> <figureanchor="SR-ERO-subobject-format" title="SR-EROanchor="SR-ERO-subobject-format"> <name>SR-ERO SubobjectFormat"><artwork align="center">Format</name> <artwork align="center" name="" type="" alt=""><![CDATA[ 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>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork> </figure> <t>A new flag in the Flags field:<list style="symbols"> <t>A</t> <dl spacing="normal" newline="false"> <dt>A (SR-AlgorithmFlag): IfFlag):</dt><dd><t>If set by a PCEP speaker, the Subobject Extension BlockMUST<bcp14>MUST</bcp14> be included in the SR-EROsubobjectsubobject, as shown in <xreftarget="SR-ERO-subobject-format"/>target="SR-ERO-subobject-format" format="default"/>, 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 BlockMUST<bcp14>MUST</bcp14> always be a multiple of 4 bytes. If this flag is set to 0, theneither: <list style="symbols"> <t>theeither:</t> <ul spacing="normal"> <li>the Subobject Extension Block is not included and processing described in <xref target="RFC8664" sectionFormat="of" section="5.2.1"/> applies, or</t> <t>theformat="default"/> applies or</li> <li>the Subobject Extension Block is included (due to an SEBF in a future specifications) and the Algorithm fieldMUST<bcp14>MUST</bcp14> beignored.</t> </list> </t> </list> </t>ignored.</li> </ul> </dd> </dl> <t>This document updates the SR-ERO subobject validation defined in <xref target="RFC8664" sectionFormat="of" section="5.2.1"/>format="default"/> by extending existing validation to include the Subobject Extension Block and the Aflagflag, as follows.</t> <t>On receiving an SR-ERO subobject, a PCCMUST<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> <ulspacing="normal" bare="false" empty="false"> <li>Ifspacing="normal"> <li> <t>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 subobjectMUST<bcp14>MUST</bcp14> include the size of the entire Subobject Extension Block as determined by the set of SEBFs. </t> <ulspacing="normal" bare="false" empty="false">spacing="normal"> <li>The minimum size of the Subobject Extension Block is 4 bytes when only a single SEBF (such as A) isset,set and may be longer (in multiples of 4 bytes) if additional SEBFs are set and require more space.</li> <li>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>The<li> <t>The exact calculation of Length for each NT, S, F, and set of SEBFs is as follows: </t> <ulspacing="normal" bare="false" empty="false">spacing="normal"> <li>If NT=0, the F bit <bcp14>MUST</bcp14> be 1, the S bit <bcp14>MUST</bcp14> bezero,0, and the Length <bcp14>MUST</bcp14> be 8 + the size of the Subobject Extension Block.</li><li>If<li> <t>If NT=1, the F bit <bcp14>MUST</bcp14> bezero.0. </t> <ulspacing="normal" bare="false" empty="false">spacing="normal"> <li>If the S bit is 1, the Length <bcp14>MUST</bcp14> be 8 + the size of the Subobject Extension Block.</li> <li>If the S bit is 0, the Length <bcp14>MUST</bcp14> be 12 + the size of the Subobject Extension Block.</li> </ul> </li><li>If<li> <t>If NT=2, the F bit <bcp14>MUST</bcp14> bezero.0. </t> <ulspacing="normal" bare="false" empty="false">spacing="normal"> <li>If the S bit is 1, the Length <bcp14>MUST</bcp14> be 20 + the size of the Subobject Extension Block.</li> <li>If the S bit is 0, the Length <bcp14>MUST</bcp14> be 24 + the size of the Subobject Extension Block.</li> </ul> </li><li>If<li> <t>If NT=3, the F bit <bcp14>MUST</bcp14> bezero.0. </t> <ulspacing="normal" bare="false" empty="false">spacing="normal"> <li>If the S bit is 1, the Length <bcp14>MUST</bcp14> be 12 + the size of the Subobject Extension Block.</li> <li>If the S bit is 0, the Length <bcp14>MUST</bcp14> be 16 + the size of the Subobject Extension Block.</li> </ul> </li><li>If<li> <t>If NT=4, the F bit <bcp14>MUST</bcp14> bezero.0. </t> <ulspacing="normal" bare="false" empty="false">spacing="normal"> <li>If the S bit is 1, the Length <bcp14>MUST</bcp14> be 36 + the size of the Subobject Extension Block.</li> <li>If the S bit is 0, the Length <bcp14>MUST</bcp14> be 40 + the size of the Subobject Extension Block.</li> </ul> </li><li>If<li> <t>If NT=5, the F bit <bcp14>MUST</bcp14> bezero.0. </t> <ulspacing="normal" bare="false" empty="false">spacing="normal"> <li>If the S bit is 1, the Length <bcp14>MUST</bcp14> be 20 + the size of the Subobject Extension Block.</li> <li>If the S bit is 0, the Length <bcp14>MUST</bcp14> be 24 + the size of the Subobject Extension Block.</li> </ul> </li><li>If<li> <t>If NT=6, the F bit <bcp14>MUST</bcp14> bezero.0. </t> <ulspacing="normal" bare="false" empty="false">spacing="normal"> <li>If the S bit is 1, the Length <bcp14>MUST</bcp14> be 44 + the size of the Subobject Extension Block.</li> <li>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>If no SEBF (including the A flag defined in this document) is set, the Length valueMUST<bcp14>MUST</bcp14> follow the requirements defined in <xref target="RFC8664" sectionFormat="of" section="5.2.1"/> applies.</li>format="default"/>.</li> </ul> <section anchor="Subobject-Extension-Block"title="Subobjectnumbered="true" toc="default"> <name>Subobject ExtensionBlock">Block</name> <t>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 thisdocument,document or flags defined by future specifications).</t><t>Block Length<dl spacing="normal" newline="true"> <dt>Block length andPresence: <list style="symbols">presence:</dt> <dd> <ul spacing="normal"> <li> <t>If the A flag is set, and no other SEBF is set, the blockLength MUSTlength <bcp14>MUST</bcp14> be 4.</t> </li> <li> <t>The block length is at least 4 bytes when present.</t> </li> <li> <t>The block lengthMUST<bcp14>MUST</bcp14> always be a multiple of 4bytes</t>bytes.</t> </li> <li> <t>The blockMUST<bcp14>MUST</bcp14> be included if any SEBF is set in the Flags field.</t> </li> <li> <t>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></list> </t></li> </ul> </dd> </dl> <t>The first 4 bytes of the Subobject Extension Block are described in <xreftarget="Subobject-extension-format"/>.</t>target="Subobject-extension-format" format="default"/>.</t> <figureanchor="Subobject-extension-format" title="Subobjectanchor="Subobject-extension-format"> <name>Subobject Extension BlockFormat"><artwork align="center">Format</name> <artwork align="center" name="" type="" alt=""><![CDATA[ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Unassigned | Algorithm |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork></figure> <t>Unassigned+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork> </figure> <dl spacing="normal" newline="true"> <dt>Unassigned (24bits): Thisbits):</dt><dd>This field is reserved for future use andMUST<bcp14>MUST</bcp14> be set to zero when sending and ignored whenreceiving.</t> <t>Algorithmreceiving.</dd> <dt>Algorithm (8bits):bits):</dt><dd>The SR-Algorithm value fromregistrythe "IGP Algorithm Types" registry of the "Interior Gateway Protocol (IGP) Parameters"IANAregistry group (see <xreftarget="IANA-ALGORITHM-TYPES"/>).</t>target="IANA-ALGORITHM-TYPES" format="default"/>).</dd> </dl> <t>Future extensionsSHOULD<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-CAPABILITYSub-TLV,sub-TLV, the SRv6-PCE-CAPABILITYSub-TLV,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>When receiving a Subobject Extension Block longer than 4 bytes, receivers that do not recognize or have not negotiated support for additional flagsMUST<bcp14>MUST</bcp14> ignore the unknown additional bytes beyond those defined in this document.</t> </section> <section anchor="Guidance-Future-Extensions"title="Guidancenumbered="true" toc="default"> <name>Guidance for FutureExtensions">Extensions</name> <t>Future enhancements extending the Subobject Extension Block must:<list style="symbols"> <t>Define</t> <!--[rfced] To parallel the structure of the first two bullet items, may we update the latter two bullet items as follows? Original: * Define a new SEBF in the Flags field to indicate the presence of new extension, and specify the corresponding capability signaling for that extension. * Specify which parts of the reserved/extension block are used and how the block length is calculated when their extension is present. * The reserved bits in the initial 4 bytes are used when possible, and the block is extended only when additional space is necessary. * Future extensions may define additional SEBFs and corresponding fields, allowing the block to be increased in size beyond the initial 4 bytes as needed. Perhaps: * 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. * Specify which parts of the reserved/extension block are used and how the block length is calculated when their extension is present. * Ensure the reserved bits in the initial 4 bytes are used when possible and the block is extended only when additional space is necessary. * Have future extensions define additional SEBFs and corresponding fields, allowing the block to be increased in size beyond the initial 4 bytes as needed. --> <ul spacing="normal"> <li> <t>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> <t>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> <t>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> <t>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></list> </t></li> </ul> <t>Example: Future extension introducing a Z flag and a new Z field (8 bits):<list style="symbols"></t> <ul spacing="normal"> <li> <t>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 isvalid,valid but the Algorithm field is ignored.</t> </li> <li> <t>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></list> </t></li> </ul> </section> </section> <section anchor="SRv6-ERO-Subobject"title="SRv6-ERO Subobject">numbered="true" toc="default"> <name>SRv6-ERO Subobject</name> <t>This document updates the SRv6-ERO subobject format defined in <xref target="RFC9603" sectionFormat="of" section="4.3.1"/>format="default"/> 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 <xreftarget="SRv6-ERO-subobject-format"/>.</t>target="SRv6-ERO-subobject-format" format="default"/>.</t> <figureanchor="SRv6-ERO-subobject-format" title="SRv6-EROanchor="SRv6-ERO-subobject-format"> <name>SRv6-ERO SubobjectFormat"><artwork align="center">Format</name> <artwork align="center" name="" type="" alt=""><![CDATA[ 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> <t>Flags field:</t> <t>A+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork> </figure> <dl spacing="normal" newline="true"> <dt>Flags field:</dt> <dd>A (SR-Algorithm Flag): If set by a PCEP speaker, the Algorithm field is included in the SRv6-ERO subobject as specified in <xreftarget="SRv6-ERO-subobject-format"/>.target="SRv6-ERO-subobject-format" format="default"/>. 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"/> applies.</t> <t>Reserved</dd> <dt>Reserved (8bits): It MUSTbits):</dt><dd>It <bcp14>MUST</bcp14> be set tozero0 while sending and ignored onreceipt.</t> <t>Algorithmreceipt.</dd> <dt>Algorithm (8bits):bits):</dt><dd>The SR-Algorithm value fromregistrythe "IGP Algorithm Types" registry of the "Interior Gateway Protocol (IGP) Parameters"IANA registry.</t>registry group.</dd> </dl> <t>Note: The Subobject Extension Block is applicable to the SRv6-EROsubobject,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 extensionsSHOULD<bcp14>SHOULD</bcp14> specify the usage of the Subobject Extension Block for the SRv6-ERO subobject.</t> </section> <section anchor="SR-Algorithm-TLV"title="SR-Algorithm TLV">numbered="true" toc="default"> <name>SR-Algorithm TLV</name> <t>A new TLV for the LSPA Object is introduced to carry the SR-Algorithm constraint (<xreftarget="SR-ALGORITHM-CONSTRAINT"/>).target="SR-ALGORITHM-CONSTRAINT" format="default"/>). This TLVMUST<bcp14>MUST</bcp14> only be used whenPST (PathPath Setuptype)Type (PST) = 1 or 3 for SR-MPLS and SRv6, respectively. Only the first instance of this TLVMUST<bcp14>MUST</bcp14> beprocessed,processed; subsequent instancesMUST<bcp14>MUST</bcp14> be ignored.</t> <t>The format of the SR-Algorithm TLV is as follows:</t> <figureanchor="SR-ALGORITHM-TLV-FMT" title="SR-Algorithmanchor="SR-ALGORITHM-TLV-FMT"> <name>SR-Algorithm TLVFormat">Format</name> <artworkalign="center"><![CDATA[align="center" name="" type="" alt=""><![CDATA[ 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>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork> </figure><t>Type<dl spacing="normal" newline="false"> <dt>Type (16bits): 66.</t> <t>Lengthbits):</dt><dd>66</dd> <dt>Length (16bits): 4.</t>bits):</dt><dd>4</dd> </dl> <t>The 32-bit value is formatted asfollows. <list style="hanging"> <t hangText="Reservedfollows.</t> <dl newline="false" spacing="normal"> <dt>Reserved (16bits):"> MUSTbits):</dt> <dd> <bcp14>MUST</bcp14> be set tozero0 by the sender andMUST<bcp14>MUST</bcp14> be ignored by thereceiver.</t> <t hangText="Flagsreceiver.</dd> <dt>Flags (8bits):">bits):</dt> <dd> <t> This document defines the following flag. The other flagsMUST<bcp14>MUST</bcp14> be set tozero0 by the sender andMUST<bcp14>MUST</bcp14> be ignored by the receiver.<list style="symbols"> <t>S (Strict): If</t> <dl spacing="normal" newline="false"> <dt>S (Strict):</dt><dd>If set, the path computation at the PCEMUST<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 PCEMUST<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-Algorithmconstraint.</t> </list> </t> <t hangText="Algorithmconstraint.</dd> </dl> </dd> <dt>Algorithm (8bits):">bits):</dt> <dd>The SR-Algorithm to be used during path computation (see <xreftarget="SR-ALGORITHM-CONSTRAINT"/>).</t> </list> </t>target="SR-ALGORITHM-CONSTRAINT" format="default"/>).</dd> </dl> </section> <section anchor="METRIC-TYPES"title="Extensionsnumbered="true" toc="default"> <name>Extensions to METRICObject">Object</name> <t>The METRIC object is defined in <xref target="RFC5440" sectionFormat="of" section="7.8"/>.format="default"/>. 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 <xreftarget="FLEX-ALGO-COMPUTATION"/>).target="FLEX-ALGO-COMPUTATION" format="default"/>). 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 Path Setup Type.</t><list style="symbols"><ul spacing="normal"> <li> <t> T=22: Path Min DelaymetricMetric (<xreftarget="P2P-MIN-DELAY"/>)target="P2P-MIN-DELAY" format="default"/>) </t> </li> <li> <t> T=23: P2MP Path Min DelaymetricMetric (<xreftarget="P2MP-MIN-DELAY"/>)target="P2MP-MIN-DELAY" format="default"/>) </t> </li> <li> <t> T=24: Path Bandwidth Metric (<xreftarget="P2P-BANDWIDTH"/>)target="P2P-BANDWIDTH" format="default"/>) </t> </li> <li> <t> T=25: P2MP Path Bandwidth Metric (<xreftarget="P2MP-BANDWIDTH"/>)target="P2MP-BANDWIDTH" format="default"/>) </t> </li> <li> <t> T=128-255:User-defined metricUser-Defined Metric (<xreftarget="USER-DEFINED-METRIC"/>)target="USER-DEFINED-METRIC" format="default"/>) </t></list></li> </ul> <t>The following terminology is used and expanded along the way.</t><list style="symbols"><ul spacing="normal"> <li> <t>A network comprisesofa set of N links {Li, (i=1...N)}.</t> </li> <li> <t>A path P of a point-to-point (P2P) LSP is a list of K links {Lpi,(i=1...K)}.</t> </li> <li> <t>A P2MP tree T comprises a set of M destinations {Dest_j,(j=1...M)}.</t></list></li> </ul> <section anchor="MIN-DELAY-VALUE"title="Pathnumbered="true" toc="default"> <name>Path Min DelayMetric">Metric</name> <t><xreftarget="RFC7471"/>target="RFC7471" format="default"/> and <xreftarget="RFC8570"/>target="RFC8570" format="default"/> define the "Min/Max Unidirectional LinkDelay Sub-TLV"Delay" sub-TLV to advertise the link minimum and maximum delay in microseconds in a 24-bit field.</t> <t><xreftarget="RFC5440"/>target="RFC5440" format="default"/> defines the METRIC object with a 32-bit metric value encoded in IEEE floating point format (see <xreftarget="IEEE.754.2008"/>).</t>target="IEEE.754.2008" format="default"/>).</t> <t>The encoding for the Path Min Delay metric value is quantified in units of microseconds and encoded in IEEE floating point format.</t> <t>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 <xreftarget="IEEE.754.2008"/>.</t>target="IEEE.754.2008" format="default"/>.</t> <section anchor="P2P-MIN-DELAY"title="P2Pnumbered="true" toc="default"> <name>P2P Path Min DelayMetric">Metric</name> <t>The minimum Link Delay metric is defined in <xreftarget="RFC7471"/>target="RFC7471" format="default"/> and <xreftarget="RFC8570"/>target="RFC8570" format="default"/> as "Min Unidirectional Link Delay". The Path Min Link Delay metric represents the measured minimum link delay value over a configurable interval.</t> <t>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><list style="symbols"><ul spacing="normal"> <li> <t>A Min Link Delay metric of link L is denoted by D(L).</t> </li> <li> <t>A Path Min Delay metric for the P2P path P = Sum {D(Lpi), (i=1...K)}.</t></list></li> </ul> </section> <section anchor="P2MP-MIN-DELAY"title="P2MPnumbered="true" toc="default"> <name>P2MP Path Min DelayMetric">Metric</name> <t>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><list style="symbols"><ul spacing="normal"> <li> <t>The P2P Path Min Delay metric of the path to destination Dest_j is denoted by PMDM(Dest_j).</t> </li> <li> <t>The P2MP Path Min Delay metric for the P2MP tree T = Maximum{PMDM(Dest_j), (j=1...M)}.</t></list></li> </ul> </section> </section> <section anchor="BANDWIDTH-VALUE"title="Pathnumbered="true" toc="default"> <name>Path BandwidthMetric">Metric</name> <t><xref target="RFC9843" sectionFormat="of" section="4"/>format="default"/> defines a new metrictypetype, "Bandwidth Metric", which may be advertised in their link metric advertisements.</t> <t>When performing Flexible Algorithm path computation as described in <xreftarget="FLEX-ALGO-COMPUTATION"/>,target="FLEX-ALGO-COMPUTATION" format="default"/>, procedures described insections 4.1Sections <xref target="RFC9843" sectionFormat="bare" section="4.1"/> and5<xref target="RFC9843" sectionFormat="bare" section="5"/> from <xreftarget="RFC9843"/> MUSTtarget="RFC9843" format="default"/> <bcp14>MUST</bcp14> be followed with automatic metric calculation.</t> <t>For path computations in contexts other than Flexible Algorithm (including Path Setup Types other than 1 or 3 for SR-MPLS andSRv6),SRv6, respectively), if the Generic Metric sub-TLV with the Bandwidth metric type is not advertised for a link, the PCE implementationMAY<bcp14>MAY</bcp14> apply a local policy to derive a metric value (similar to the procedures in Sections4.1.3<xref target="RFC9843" sectionFormat="bare" section="4.1.3"/> and4.1.4<xref target="RFC9843" sectionFormat="bare" section="4.1.4"/> of <xreftarget="RFC9843"/>)target="RFC9843" format="default"/>) or the linkMAY<bcp14>MAY</bcp14> be treated as if the metric value is unavailable(e.g.(e.g., by using a default value). If the Bandwidth metric value is advertised for a link, the PCEMUST<bcp14>MUST</bcp14> use the advertised value to compute the path metric in accordance with Sections <xreftarget="P2P-BANDWIDTH"/>target="P2P-BANDWIDTH" format="counter"/> and <xreftarget="P2MP-BANDWIDTH"/>.</t>target="P2MP-BANDWIDTH" format="counter"/>.</t> <t>The Path Bandwidth metric value is encoded in IEEE floating point format (see <xreftarget="IEEE.754.2008"/>).</t>target="IEEE.754.2008" format="default"/>).</t> <t>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 <xreftarget="IEEE.754.2008"/>.target="IEEE.754.2008" format="default"/>. </t> <section anchor="P2P-BANDWIDTH"title="P2Pnumbered="true" toc="default"> <name>P2P Path BandwidthMetric">Metric</name> <t>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. Note:theThe 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><list style="symbols"><ul spacing="normal"> <li> <t>A Bandwidth Metric of link L is denoted by B(L).</t> </li> <li> <t>A Path Bandwidth metric for the P2P path P = Sum {B(Lpi), (i=1...K)}.</t></list></li> </ul> </section> <section anchor="P2MP-BANDWIDTH"title="P2MPnumbered="true" toc="default"> <name>P2MP Path BandwidthMetric">Metric</name> <t>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><list style="symbols"><ul spacing="normal"> <li> <t>The P2P Bandwidth metric of the path to destination Dest_j is denoted by BM(Dest_j).</t> </li> <li> <t>The P2MP Path Bandwidth metric for the P2MP tree T = Maximum{BM(Dest_j), (j=1...M)}.</t></list></li> </ul> </section> </section> <section anchor="USER-DEFINED-METRIC"title="User Defined Metric">numbered="true" toc="default"> <name>User-Defined Metric</name> <t><xref target="RFC9843" sectionFormat="of" section="2"/>format="default"/> defined a new metric type range for"User defined"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>User Defined<t>User-defined metric values are encoded using the IEEE floating point format (see <xreftarget="IEEE.754.2008"/>).</t>target="IEEE.754.2008" format="default"/>).</t> <t>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 <xreftarget="IEEE.754.2008"/>.</t>target="IEEE.754.2008" format="default"/>.</t> <t>The metric type range was chosen to allow mapping with values assigned in the "IGPMetric-Type Registry".Metric-Type" registry. For example, theUser Defineduser-defined metric type 130 of the METRIC object in PCEP can represent the sum of theUser Defined Metricuser-defined metric 130 of all links along aP2P.</t> <t>User Defined MetricsP2P path.</t> <t>User-defined metrics are equally applicable to P2P and P2MP paths.</t> </section> </section> </section> <section anchor="Operation"title="Operation">numbered="true" toc="default"> <name>Operation</name> <t>The PCEP extensions defined in Sections <xreftarget="ERO-ENCODING"/>target="ERO-ENCODING" format="counter"/> and <xreftarget="SR-ALGORITHM-CONSTRAINT"/>target="SR-ALGORITHM-CONSTRAINT" format="counter"/> of this documentMUST NOT<bcp14>MUST NOT</bcp14> be used unless both PCEP speakers have indicated support by setting the S flag in the Path Setup TypeSub-TLVsub-TLV corresponding to the PST of the LSP. If this condition is not met, the receiving PCEP speakerMUST<bcp14>MUST</bcp14> respond with a PCErr message with Error-Type 19 (Invalid Operation) andError-Value TBD3Error-value 33 (Attempted use of SR-Algorithm without advertised capability).</t> <t>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 theregistry"IGP Algorithm Types" registry of the "Interior Gateway Protocol (IGP) Parameters"IANA registry.registry group. Refer to <xref target="RFC8402" sectionFormat="of" section="3.1.1"/>format="default"/> and <xreftarget="RFC9256"/>target="RFC9256" format="default"/> for the definition of SR-Algorithm in Segment Routing. <xreftarget="RFC8665"/>target="RFC8665" format="default"/> and <xreftarget="RFC8667"/> are describingtarget="RFC8667" format="default"/> describe the use of the SR-Algorithm in IGP. Note that some RFCsare referringrefer to SR-Algorithm with different names, forexampleexample, "Prefix-SID Algorithm" and "SR Algorithm".</t> <section anchor="ERO-ENCODING"title="EROnumbered="true" toc="default"> <name>ERO and RROSubobjects">Subobjects</name> <t>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 PCCMUST<bcp14>MUST</bcp14> include the Algorithm field in the encoded subobjects with the received SR-Algorithm value.</t> <t>As per <xreftarget="RFC8664"/>,target="RFC8664" format="default"/>, the format of the SR-RRO subobject is the same as that of the SR-EROsubobject,subobject but without the Lflag, thereforeflag; therefore, the SR-RRO subobject may also carry the A flag and Algorithm field in the Subobject Extension Block. Similarly, as per <xreftarget="RFC9603"/>,target="RFC9603" format="default"/>, the format of the SRv6-RRO subobject is the same as that of the SRv6-ERO subobject but without the Lflag, thereforeflag; therefore, the SRv6-RRO subobject may also carry the A flag and Algorithm field.</t> <section anchor="SR-ERO-ENCODING"title="SR-ERO">numbered="true" toc="default"> <name>SR-ERO</name> <t>A PCEP speakerMAY<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-CAPABILITYSub-TLVsub-TLV by both PCEP speakers.</t> <t>If the PCEP peer receives an SR-ERO subobject with the A flagset,set but the S flag was not advertised in SR-PCE-CAPABILITYSub-TLV,sub-TLV, then itMUST<bcp14>MUST</bcp14> consider the entire ERO asinvalidinvalid, as described in <xref target="RFC8664" sectionFormat="of" section="5.2.1"/>.</t>format="default"/>.</t> <t>The Subobject Extension Block field in the SR-ERO subobjectMUST<bcp14>MUST</bcp14> be included after the optional SID, NAI, or SIDstructurestructure, and the length of the SR-ERO subobjectMUST<bcp14>MUST</bcp14> be increased by the size of the Subobject Extension Block, as determined by the set of SEBFs.</t> <t>If the length and the A flag are notconsistentconsistent, as specified in <xreftarget="SR-ERO-Subobject"/>,target="SR-ERO-Subobject" format="default"/>, the PCEP peerMUST<bcp14>MUST</bcp14> consider the entire ERO invalid andMUST<bcp14>MUST</bcp14> send a PCErr message with Error-Type = 10 ("Reception of an invalid object") and Error-value = 11 ("Malformed object").</t> <t>If the SID value is absent (S flag is set to 1), the NAI value is present (F flag is set to0)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, itMUST<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"title="SRv6-ERO">numbered="true" toc="default"> <name>SRv6-ERO</name> <t>A PCEP speakerMAY<bcp14>MAY</bcp14> set theA-flagA 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>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-CAPABILITYSub-TLV,sub-TLV, then itMUST<bcp14>MUST</bcp14> consider the entire ERO asinvalidinvalid, as described in <xref target="RFC8664" sectionFormat="of" section="5.2.1"/>.</t>format="default"/>.</t> <t>The Algorithm field in the SRv6-ERO subobjectMUST<bcp14>MUST</bcp14> be included in the position specified in <xreftarget="SRv6-ERO-Subobject"/>,target="SRv6-ERO-Subobject" format="default"/>; the length of the SRv6-ERO subobject is not impacted by the inclusion of the Algorithm field.</t> <t>If the SRv6-SID value is absent (S flag is set to 1), the NAI value is present (F flag isn)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, itMUST<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"title="SR-Algorithm Constraint">numbered="true" toc="default"> <name>SR-Algorithm Constraint</name> <t>To signal a specific SR-Algorithm constraint to the PCE, the headendMUST<bcp14>MUST</bcp14> encode the SR-Algorithm TLV inside the LSPA object.</t><t>If<!--[rfced] For clarity, may we update "PCInitiate, PCUpd messages" to "PCInitiate or PCUpd messages"? Original: If a PCC receives an LSPA object with SR-Algorithm TLV as part of PCInitiate, PCUpd messages, then it MUST include LSPA object with SR- Algorithm TLV in PCRpt message as part of intended-attribute-list. Perhaps: If a PCC receives an LSPA object with SR-Algorithm TLV as part of PCInitiate or PCUpd messages, then it MUST include LSPA object with SR- Algorithm TLV in PCRpt message as part of intended-attribute-list. --> <t>If a PCC receives an LSPA object with the SR-Algorithm TLV as part of PCInitiate, 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>If a PCE receives an LSPA object with the SR-Algorithm TLV in PCRpt or PCReq, then itMUST<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"/>.</t>format="default"/>.</t> <t>A PCEP peer that did not advertise the S flag in the Path Setup TypeSub-TLVsub-TLV corresponding to the LSP'sPST, it MUSTPST <bcp14>MUST</bcp14> ignore the SR-Algorithm TLV on receipt.</t> <t>The PCEMUST NOT<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 isNOT RECOMMENDED<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 PCEMUST<bcp14>MUST</bcp14> ensure that the SR-Algorithm matches the one specified in the SR-Algorithm constraint.</t> <t>Other SID types, such as Binding SIDs, are allowed. Furthermore, the inclusion of a path Binding SID (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>The specified SR-Algorithm constraint is applied to the end-to-end SRpolicyPolicy path. Using different SR-Algorithm constraints or using winning FAD with different optimizationmetricmetrics 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>If<!--[rfced] May we update the punctuation in the latter part of this sentence to clarify that it is a list of what is used? Original: 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 metric or other attributes, which the PCE does not support or recognize, it MUST use an empty ERO in PCInitiate for LSP instantiation or PCUpd message if an update is required or NO-PATH object in PCRep to indicate that it was not able to find the valid path. Perhaps: 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 MUST 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>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 or PCUpd message if an update is required or NO-PATH object in PCRep to indicate that it was not able to find the valid path.</t> <t>If the Algorithm field value is in the range 128-255, the PCEMUST<bcp14>MUST</bcp14> perform path computation according to the Flexible Algorithm procedures outlined in <xreftarget="FLEX-ALGO-COMPUTATION"/>.target="FLEX-ALGO-COMPUTATION" format="default"/>. Otherwise, the PCEMUST<bcp14>MUST</bcp14> adhere to the path computation procedures with SID filtering as defined in <xreftarget="SID-FILTERING-COMPUTATION"/>.</t>target="SID-FILTERING-COMPUTATION" format="default"/>.</t> <t>If the NO-PATH object is included in PCRep, then the PCEMAY<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"/>.</t>format="default"/>.</t> <t>SR-Algorithm does not replace theObjective Functionobjective function defined in <xreftarget="RFC5541"/>.</t>target="RFC5541" format="default"/>.</t> <section anchor="SID-FILTERING-COMPUTATION"title="Pathnumbered="true" toc="default"> <name>Path Computation for SR-Algorithms0-127">0-127</name> <t>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>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 <xreftarget="FLEX-ALGO-COMPUTATION"/>.target="FLEX-ALGO-COMPUTATION" format="default"/>. Within the 0-127 range, currently defined algorithms are 0 (Shortest Path First (SPF)) and 1(Strict SPF)(Strict-SPF), as introduced in <xref target="RFC8402" sectionFormat="of" section="3.1.1"/>.format="default"/>. 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, itMUST<bcp14>MUST</bcp14> reject the PCEP message and send a PCErr message with Error-Type 19 (Invalid Operation) andError-Value TBD4Error-value 34 (UnsupportedSR-Algorithm).</t>combination of constraints).</t> </section> <section anchor="FLEX-ALGO-COMPUTATION"title="Pathnumbered="true" toc="default"> <name>Path Computation for FlexibleAlgorithms">Algorithms</name> <t>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 <xreftarget="RFC5440"/>.target="RFC5440" format="default"/>. The TED is expected to be populated with necessary information, including Flexible Algorithm Definitions (FADs), node participation, and ASLA-specific link attributes, through standardmechanismsmechanisms, such as Interior Gateway Protocols (IGPs) with Traffic Engineering extensions orBGP-LSBGP - Link State (BGP-LS) <xreftarget="RFC9552"/>.</t>target="RFC9552" format="default"/>.</t> <!--[rfced] This note was left in the document: [Note to RFC Editor: The URL of the "IGP Flex-Algorithm Path Computation Rules Registry" IANA registry to be inserted once it will get created after approval of [I-D.ietf-lsr-igp-flex-algo-reverse-affinity].] Would you like an informative reference or an inline URL to be added for the "IGP Flex-Algorithm Path Computation Rules" registry Original: [I-D.ietf-lsr-igp-flex-algo-reverse-affinity] created an IANA registry called "IGP Flex-Algorithm Path Computation Rules Registry" within the "Interior Gateway Protocol (IGP) Parameters" registry group with the ordered set of rules that MUST be used to prune links from the topology during the Flexible Algorithm path computation. Perhaps A (with an informative reference): [RFC9917] created an IANA registry called "IGP Flex-Algorithm Path Computation Rules" [IANA-IGP-RULES] within the "Interior Gateway Protocol (IGP) Parameters" registry group with the ordered set of rules that MUST be used to prune links from the topology during the Flexible Algorithm path computation. ... [IANA-IGP-Rules] IANA, "IGP Flex-Algorithm Path Computation Rules", <https://www.iana.org/assignments/igp-parameters>. Perhaps B (with inline URL): [RFC9917] created an IANA registry called "IGP Flex-Algorithm Path Computation Rules" <https://www.iana.org/assignments/igp-parameters> within the "Interior Gateway Protocol (IGP) Parameters" registry group with the ordered set of rules that MUST be used to prune links from the topology during the Flexible Algorithm path computation. --> <t>The PCE must follow the IGP Flexible Algorithm path computation logic as described in <xreftarget="RFC9350"/>.target="RFC9350" format="default"/>. This includes performing the FAD selection as described in <xref target="RFC9350" sectionFormat="of" section="5.3"/>format="default"/> and other sections, determining the topology associated with specific a Flexible Algorithm based on the FAD, the node participation<xref(<xref target="RFC9350" sectionFormat="of" section="11"/>,format="default"/>), using ASLA-specific link attributes<xref(<xref target="RFC9350" sectionFormat="of" section="12"/>,format="default"/>), and applying other rules for Flexible Algorithm path calculation<xref(<xref target="RFC9350" sectionFormat="of" section="13"/>.format="default"/>). While <xreftarget="RFC9350"/>target="RFC9350" format="default"/> defines the base procedures for IGP Flexible Algorithms, these procedures are further extended by otherdocumentsdocuments, such as <xreftarget="RFC9843"/>,target="RFC9843" format="default"/>; a PCE implementation may need to support these IGP extensions to allow use of specific constraints in FAD. <xreftarget="I-D.ietf-lsr-igp-flex-algo-reverse-affinity"/>target="RFC9917" format="default"/> created an IANA registry called "IGP Flex-Algorithm Path ComputationRules Registry"Rules" within the "Interior Gateway Protocol (IGP) Parameters" registry group with the ordered set of rules thatMUST<bcp14>MUST</bcp14> be used to prune links from the topology during the Flexible Algorithm path computation.</t><t>[Note to RFC Editor: The URL of the "IGP Flex-Algorithm Path Computation Rules Registry" IANA registry to be inserted once it will get created after approval of <xref target="I-D.ietf-lsr-igp-flex-algo-reverse-affinity" />.] </t><t>The PCEMUST<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 PCCMUST<bcp14>MUST</bcp14> be ignored. The PCEMUST<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 orBSID),BSID) but only from nodes participating in the specified SR-Algorithm.</t> <t>There are corresponding metric types in PCEP for IGP and TEmetricmetrics from FAD introduced in <xreftarget="RFC9350"/>,target="RFC9350" format="default"/>, but there were no corresponding metric types defined for "Min Unidirectional Link Delay" from <xreftarget="RFC9350"/>target="RFC9350" format="default"/> and "BandwidthMetric", "User DefinedMetric" and "User-Defined Metric" from <xreftarget="RFC9843"/>.target="RFC9843" format="default"/>. <xreftarget="METRIC-TYPES"/>target="METRIC-TYPES" format="default"/> of this documentis introducingintroduces them. Note that the defined "Path Bandwidth Metric" is accumulative and is different from theBandwidthBANDWIDTH Object defined in <xreftarget="RFC5440"/>.</t>target="RFC5440" format="default"/>.</t> <t>The PCEMUST<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 implementationMAY<bcp14>MAY</bcp14> decide to ignore specific constraints received from the PCC based on existing processing rules for PCEP Objects and TLVs,e.g.e.g., the P flag described in <xref target="RFC5440" sectionFormat="of" section="7.2"/>format="default"/> and processing rules described in <xreftarget="RFC9753"/>.target="RFC9753" format="default"/>. If the PCE does not support a specified combination of constraints, itMUST<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 PCCMUST NOT<bcp14>MUST NOT</bcp14> include constraints from the FAD in the PCEP message sent toPCEthe PCE, as it can result in undesired behavior in various cases. The PCESHOULD NOT<bcp14>SHOULD NOT</bcp14> include constraints from the FAD in PCEP messages sent to the PCC.</t> <t>The combinations of the constraints specified in the FAD and constraints directly included in PCEP messages from the PCC may decrease the chance thatFlexible Algorithm specificFlexible-Algorithm-specific Prefix SIDs represent an optimal path while satisfying all specifiedconstraints,constraints; as aresultresult, 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"title="Metric types">numbered="true" toc="default"> <name>Metric Types</name> <t>All the rules of processing the METRIC object as explained in <xreftarget="RFC5440"/>target="RFC5440" format="default"/> and <xreftarget="RFC8233"/>target="RFC8233" format="default"/> are applicable to the metric types defined in this document.</t> </section> </section> <sectiontitle="Manageability Considerations"numbered="true" toc="default"> <name>Manageability Considerations</name> <!--[rfced] We note that RFC 8281 does not list any "manageability requirements and considerations". All other RFCs in this sentence have a specific section about that topic. May we remove RFC 8281 from the list? Original: All manageability requirements and considerations listed in [RFC5440], [RFC8231], [RFC8281], [RFC8664] and [RFC9603] apply to the PCEP extensions defined in this document. --> <t>All manageability requirements and considerations listed in <xreftarget="RFC5440"/>,target="RFC5440" format="default"/>, <xreftarget="RFC8231"/>,target="RFC8231" format="default"/>, <xreftarget="RFC8281"/>,target="RFC8281" format="default"/>, <xreftarget="RFC8664"/>target="RFC8664" format="default"/>, and <xreftarget="RFC9603"/>target="RFC9603" format="default"/> apply to the PCEP extensions defined in this document. In addition, the requirements and considerations listed in this section apply.</t> <sectiontitle="Controlnumbered="true" toc="default"> <name>Control of Function andPolicy" numbered="true" toc="default">Policy</name> <t>A PCE or PCC implementationMAY<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 capabilitySHOULD<bcp14>SHOULD</bcp14> be enabled.</t> </section> <sectiontitle="Information and Data Models"numbered="true" toc="default"> <name>Information and Data Models</name> <t>An implementationSHOULD<bcp14>SHOULD</bcp14> allow the operator to view the capability defined in this document. Sections <xref target="RFC9826" sectionFormat="bare"section="4.1"/>section="4.1" format="default"/> and <xref target="RFC9826" sectionFormat="bare"section="4.1.1"/>section="4.1.1" format="default"/> of <xreftarget="RFC9826"/>target="RFC9826" format="default"/> should be extended to include the capabilities introduced in Sections <xref target="SR-CAP-FLAG"sectionFormat="bare"/>format="counter"/> and <xref target="SRv6-CAP-FLAG"sectionFormat="bare"/>format="counter"/> for the PCEP peer.</t> </section> <sectiontitle="Liveness Detection and Monitoring"numbered="true" toc="default"> <name>Liveness Detection and Monitoring</name> <t>This document does not define any new mechanism that impacts the liveness detection and monitoring of PCEP.</t> </section> <sectiontitle="Verify Correct Operations"numbered="true" toc="default"> <name>Verify Correct Operations</name> <t>An implementationSHOULD<bcp14>SHOULD</bcp14> also allow the operator to view FADs, which may be used in Flexible Algorithm path computation as defined in <xreftarget="FLEX-ALGO-COMPUTATION"/>.</t>target="FLEX-ALGO-COMPUTATION" format="default"/>.</t> <t>An implementationSHOULD<bcp14>SHOULD</bcp14> allow the operator to view nodes participating in the specified SR-Algorithm.</t> </section> <sectiontitle="Requirementsnumbered="true" toc="default"> <name>Requirements on Other Protocols and FunctionalComponents" numbered="true" toc="default">Components</name> <t>This document does not put new requirements but relies on the necessary IGP extensions.</t> </section> <sectiontitle="Impact On Network Operations"numbered="true" toc="default"> <name>Impact on Network Operations</name> <t>This document inherits considerations from documents describing IGP Flexible Algorithm--- forexampleexample, <xreftarget="RFC9350"/>target="RFC9350" format="default"/> and <xreftarget="RFC9843"/>.</t>target="RFC9843" format="default"/>.</t> </section> </section> <sectiontitle="Operational Considerations"numbered="true" toc="default"> <name>Operational Considerations</name> <t>This document inherits operational considerations from documents describing IGP Flexible Algorithm--- forexample <xref target="RFC9350"/> and <xref target="RFC9843"/>.</t> </section> <section title="Implementation Status"> <t>[Note to the RFC Editor - remove this section before publication, as well as remove the reference to RFC 7942.]</t> <t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described inexample, <xreftarget="RFC7942"/>. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs. Please note that the listing of any individual implementation here does not imply endorsement by the IETF. Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as,target="RFC9350" format="default"/> andmust not be construed to be, a catalog of available implementations or their features. Readers are advised to note that other implementations may exist.</t> <t>According to<xreftarget="RFC7942"/>, "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature. It is up to the individual working groups to use this information as they see fit".</t> <section anchor="Cisco" title="Cisco"> <t><list style="symbols"> <t>Organization: Cisco Systems</t> <t>Implementation: IOS-XR PCC and PCE.</t> <t>Description: SR-MPLS part with experimental codepoints.</t> <t>Maturity Level: Production.</t> <t>Coverage: Partial.</t> <t>Contact: ssidor@cisco.com</t> </list></t> </section> <section anchor="Huawei" title="Huawei"> <t><list style="symbols"> <t>Organization: Huawei</t> <t>Implementation: NE Series Routers</t> <t>Description: SR Policy with SR Algorithm.</t> <t>Maturity Level: Production.</t> <t>Coverage: Partial.</t> <t>Contact: pengshuping@huawei.com</t> </list></t> </section>target="RFC9843" format="default"/>.</t> </section> <sectiontitle="Security Considerations"numbered="true" toc="default"> <name>Security Considerations</name> <t>The security considerations described in <xreftarget="RFC5440"/>,target="RFC5440" format="default"/>, <xreftarget='RFC8231'/>,target="RFC8231" format="default"/>, <xreftarget='RFC8253'/>,target="RFC8253" format="default"/>, <xreftarget='RFC8281'/>,target="RFC8281" format="default"/>, <xreftarget="RFC8664"/>,target="RFC8664" format="default"/>, <xreftarget="RFC9603"/>target="RFC9603" format="default"/>, and <xreftarget='RFC9350'/>target="RFC9350" format="default"/> apply to the extensions described in this document as well.</t> <t>Note that this specification introduces the possibility of computing paths by the PCE based onFlexible Algorithm relatedFlexible-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 byIGPIGP, like those described in the Security Considerations section of <xreftarget='RFC9350'/>,target="RFC9350" format="default"/> but which are also applicable to path computation done by the PCE. Hence, securing the PCEP session using Transport Layer Security (TLS) <xreftarget="RFC8253"/><xref target='I-D.ietf-pce-pceps-tls13'/>target="RFC8253" format="default"/> <xref target="RFC9916" format="default"/> isRECOMMENDED<bcp14>RECOMMENDED</bcp14> as per the recommendations and best current practices described in <xreftarget="RFC9325"/>.</t>target="RFC9325" format="default"/>.</t> </section> <section anchor="IANA"title="IANA Considerations">numbered="true" toc="default"> <name>IANA Considerations</name> <section anchor="SR-CAPABILITY-FLAG"title="SRnumbered="true" toc="default"> <name>SR CapabilityFlag">Flag</name> <t>IANA maintains aregistry,registry named "SR Capability FlagField",Field" within the "Path Computation Element Protocol (PCEP) Numbers" registry group to manage the Flags field of the SR-PCE-CAPABILITYTLV.sub-TLV. IANAis requested to confirmhas registered thefollowing early allocation:</t> <texttablefollowing:</t> <table anchor="SR-CAPABILITY-FLAG-value"style="none" suppress-title="true"> <ttcol align="center" width='15%'>Bit</ttcol> <ttcol align="left" width='30%'>Description </ttcol> <ttcol align="left" width='55%'>Reference </ttcol> <c>5</c><c>SR-Algorithm Capability</c><c>This document</c> </texttable>align="center"> <thead> <tr> <th align="center">Bit</th> <th align="left">Description </th> <th align="left">Reference </th> </tr> </thead> <tbody> <tr> <td align="center">5</td> <td align="left">SR-Algorithm Capability</td> <td align="left">RFC 9933</td> </tr> </tbody> </table> </section> <section anchor="SRv6-CAPABILITY-FLAG"title="SRv6numbered="true" toc="default"> <name>SRv6 PCE CapabilityFlag">Flag</name> <t>IANA maintains aregistry,registry named "SRv6 Capability FlagField",Field" within the "Path Computation Element Protocol (PCEP) Numbers" registry group to manage the Flags field of SRv6-PCE-CAPABILITY sub-TLV. IANAis requested to makehas registered thefollowing assignment:</t> <texttablefollowing:</t> <table anchor="SRv6-CAPABILITY-FLAG-value"style="none" suppress-title="true"> <ttcol align="center" width='15%'>Bit</ttcol> <ttcol align="left" width='30%'>Description </ttcol> <ttcol align="left" width='55%'>Reference </ttcol> <c>TBD1</c><c>SR-Algorithm Capability</c><c>This document</c> </texttable>align="center"> <thead> <tr> <th align="center">Bit</th> <th align="left">Description </th> <th align="left">Reference </th> </tr> </thead> <tbody> <tr> <td align="center">13</td> <td align="left">SR-Algorithm Capability</td> <td align="left">RFC 9933</td> </tr> </tbody> </table> </section> <section anchor="SR-ERO-FLAG"title="SR-ERO Flag">numbered="true" toc="default"> <name>SR-ERO Flag</name> <t>IANA maintains aregistry,registry named "SR-ERO FlagField",Field" within the "Path Computation Element Protocol (PCEP) Numbers" registry group to manage the Flags field of the SR-ERO Subobject. IANAis requested to confirmhas registered thefollowing early allocation:</t> <texttablefollowing:</t> <table anchor="SR-ERO-FLAG-value"style="none" suppress-title="true"> <ttcol align="center" width='15%'>Bit</ttcol> <ttcol align="left" width='30%'>Description </ttcol> <ttcol align="left" width='55%'>Reference </ttcol> <c>7</c><c>SR-Algorithmalign="center"> <thead> <tr> <th align="center">Bit</th> <th align="left">Description </th> <th align="left">Reference </th> </tr> </thead> <tbody> <tr> <td align="center">7</td> <td align="left">SR-Algorithm Flag(A)</c><c>This document</c> </texttable>(A)</td> <td align="left">RFC 9933</td> </tr> </tbody> </table> </section> <section anchor="SRv6-ERO-FLAG"title="SRv6-ERO Flag">numbered="true" toc="default"> <name>SRv6-ERO Flag</name> <t>IANA maintains aregistry,registry named "SRv6-ERO FlagField",Field" within the "Path Computation Element Protocol (PCEP) Numbers" registry group to manage the Flags field of the SRv6-ERO subobject. IANAis requested to makehas registered thefollowing assignment:</t> <texttablefollowing:</t> <table anchor="SRv6-ERO-FLAG-value"style="none" suppress-title="true"> <ttcol align="center" width='15%'>Bit</ttcol> <ttcol align="left" width='30%'>Description </ttcol> <ttcol align="left" width='55%'>Reference </ttcol> <c>TBD2</c><c>SR-Algorithmalign="center"> <thead> <tr> <th align="center">Bit</th> <th align="left">Description </th> <th align="left">Reference </th> </tr> </thead> <tbody> <tr> <td align="center">7</td> <td align="left">SR-Algorithm Flag(A)</c><c>This document</c> </texttable>(A)</td> <td align="left">RFC 9933</td> </tr> </tbody> </table> </section> <section anchor="TLV-Type"title="PCEPnumbered="true" toc="default"> <name>PCEP TLVTypes">Types</name> <t>IANA maintains aregistry,registry named "PCEP TLV TypeIndicators",Indicators" within the "Path Computation Element Protocol (PCEP) Numbers" registry group. IANAis requested to confirmhas registered theearly allocation of a newfollowing TLV type for the new LSPA TLV specified in this document.</t><texttable<table anchor="LSPA-TLV-type"style="none" suppress-title="true"> <ttcol align="center" width='15%'>Type</ttcol> <ttcol align="left" width='30%'>Description </ttcol> <ttcol align="left" width='55%'>Reference </ttcol> <c>66</c><c>SR-Algorithm</c><c>This document</c> </texttable>align="center"> <thead> <tr> <th align="center">Value</th> <th align="left">Description </th> <th align="left">Reference </th> </tr> </thead> <tbody> <tr> <td align="center">66</td> <td align="left">SR-Algorithm</td> <td align="left">RFC 9933</td> </tr> </tbody> </table> </section> <section anchor="Metric-Types"title="Metric Types">numbered="true" toc="default"> <name>Metric Types</name> <t>IANA maintains a registryfornamed "METRIC Object T Field" within the "Path Computation Element Protocol (PCEP) Numbers" registry group. IANAis requested to confirm the early allocatedhas registered these codepoints as follows:</t><texttable<table anchor="Metric-types"style="none" suppress-title="true"> <ttcol align="center" width='15%'>Type</ttcol> <ttcol align="left" width='30%'>Description </ttcol> <ttcol align="left" width='55%'>Reference </ttcol> <c>22</c><c>Pathalign="center"> <thead> <tr> <th align="center">Value</th> <th align="left">Description </th> <th align="left">Reference </th> </tr> </thead> <tbody> <tr> <td align="center">22</td> <td align="left">Path Min DelayMetric</c><c>This document</c> <c>23</c><c>P2MPMetric</td> <td align="left">RFC 9933</td> </tr> <tr> <td align="center">23</td> <td align="left">P2MP Path Min DelayMetric</c><c>This document</c> <c>24</c><c>PathMetric</td> <td align="left">RFC 9933</td> </tr> <tr> <td align="center">24</td> <td align="left">Path BandwidthMetric</c><c>This document</c> <c>25</c><c>P2MPMetric</td> <td align="left">RFC 9933</td> </tr> <tr> <td align="center">25</td> <td align="left">P2MP Path BandwidthMetric</c><c>This document</c> <c>128-255</c><c>User DefinedMetric</td> <td align="left">RFC 9933</td> </tr> <tr> <td align="center">128-255</td> <td align="left">User-Defined Metric</c><c>This document</c> </texttable></td> <td align="left">RFC 9933</td> </tr> </tbody> </table> </section> <section anchor="PCEP-Error-Object"title="PCEP-Error Object">numbered="true" toc="default"> <name>PCEP-Error Object</name> <t>IANAis requested to allocate new error typeshas registered the following Error-Types anderror valuesError-values within the "PCEP-ERROR Object Error Types and Values"sub-registryregistry of thePCEP Numbers"Path Computation Element Protocol (PCEP) Numbers" registryfor the following errors.</t> <texttablegroup.</t> <table anchor="PCEP-Error-type"style="none" suppress-title="true"> <ttcol align="center" width='15%'>Error-Type</ttcol> <ttcol align="left" width='30%'>Meaning </ttcol> <ttcol align="left" width='55%'>Error-Value </ttcol> <ttcol align='left' >Reference</ttcol> <c>19</c><c>Invalid Operation</c><c>TBD3:Attemptedalign="center"> <thead> <tr> <th align="center">Error-Type</th> <th align="left">Meaning </th> <th align="left">Error-value </th> <th align="left">Reference</th> </tr> </thead> <tbody> <tr> <td align="center">19</td> <td align="left">Invalid Operation</td> <td align="left">33: Attempted use of SR-Algorithm without advertisedcapability</c><c>This Document</c> <c></c><c></c><c>TBD4:Unsupportedcapability</td> <td align="left">RFC 9933</td> </tr> <tr> <td align="center"/> <td align="left"/> <td align="left">34: Unsupported combination ofconstraints</c><c>This Document</c> </texttable>constraints</td> <td align="left">RFC 9933</td> </tr> </tbody> </table> </section> </section> </middle> <back><references title="Normative References"> <?rfc include="reference.RFC.2119"?> <?rfc include="reference.RFC.5440"?> <?rfc include="reference.RFC.7471"?> <?rfc include="reference.RFC.8174"?> <?rfc include="reference.RFC.8231"?> <?rfc include="reference.RFC.8233"?> <?rfc include="reference.RFC.8253"?> <?rfc include="reference.RFC.8281"?> <?rfc include="reference.RFC.8402"?> <?rfc include="reference.RFC.8570"?> <?rfc include="reference.RFC.8664"?> <?rfc include="reference.RFC.8665"?> <?rfc include="reference.RFC.8667"?> <?rfc include="reference.RFC.9256"?> <?rfc include="reference.RFC.9350"?> <?rfc include="reference.RFC.9603"?> <?rfc include="reference.RFC.9753"?> <?rfc include="reference.RFC.9843"?> <?rfc include="reference.I-D.ietf-lsr-igp-flex-algo-reverse-affinity"?> <?rfc include="reference.I-D.ietf-pce-pceps-tls13"?><references> <name>References</name> <references> <name>Normative References</name> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5440.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7471.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8231.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8233.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8253.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8281.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8402.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8570.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8664.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8665.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8667.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9256.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9350.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9603.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9753.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9843.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9917.xml"/> <!-- [I-D.ietf-pce-pceps-tls13] -> [RFC9916] companion doc RFC9916 --> <reference anchor="RFC9916" target="https://www.rfc-editor.org/info/rfc9916"> <front> <title>Updates for PCEPS: TLS Connection Establishment Restrictions</title> <author initials="D." surname="Dhody" fullname="Dhruv Dhody"> <organization>Huawei</organization> </author> <author initials="S." surname="Turner" fullname="Sean Turner"> <organization>sn3rd</organization> </author> <author initials="R." surname="Housley" fullname="Russ Housley"> <organization>Vigil Security, LLC</organization> </author> <date month='February' year='2026'/> </front> <seriesInfo name="RFC" value="9916"/> <seriesInfo name="DOI" value="10.17487/RFC9916"/> </reference> </references><references title="Informative References"> <?rfc include="reference.RFC.9826"?> <?rfc include="reference.RFC.3031"?> <?rfc include="reference.RFC.4655"?> <?rfc include="reference.RFC.5541"?> <?rfc include="reference.RFC.7942"?> <?rfc include="reference.RFC.9325"?> <?rfc include="reference.RFC.9479"?> <?rfc include="reference.RFC.9492"?> <?rfc include="reference.RFC.9552"?><references> <name>Informative References</name> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9826.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3031.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4655.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5541.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9325.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9479.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9492.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9552.xml"/> <!-- [rfced] Regarding [IEEE.754.2008], this IEEE Standard has been superseded by a newer version published in 2019 (https://ieeexplore.ieee.org/document/8766229). Would you like us to update this reference to point to the most current version? Current: [IEEE.754.2008] IEEE, "IEEE Standard for Floating-Point Arithmetic", IEEE Std 754-2008, DOI 10.1109/IEEESTD.2008.4610935, August 2008, <https://doi.org/10.1109/IEEESTD.2008.4610935>. Perhaps: [IEEE.754.2019] IEEE, "IEEE Standard for Floating-Point Arithmetic", IEEE Std 754-2019, DOI 10.1109/IEEESTD.2019.8766229, July 2019, <https://doi.org/10.1109/IEEESTD.2019.8766229>. --> <reference anchor="IEEE.754.2008" quoteTitle="true" target="https://doi.org/10.1109/IEEESTD.2008.4610935" derivedAnchor="IEEE.754.2008"> <front> <title>IEEE Standard for Floating-Point Arithmetic</title> <author> <organization showOnFrontPage="true">IEEE</organization> </author> <date month="August" year="2008"/> </front> <seriesInfo name="IEEE Std" value="754-2008"/> <seriesInfo name="DOI" value="10.1109/IEEESTD.2008.4610935"/><seriesInfo name="IEEE" value="IEEE Std 754-2008"/></reference> <!-- Note to PE: XML for most current version of [IEEE.754.2008] <reference anchor="IEEE.754.2019"> <front> <title>IEEE Standard for Floating-Point Arithmetic</title> <author> <organization showOnFrontPage="true">IEEE</organization> </author> <datemonth="August" year="2008"/>month="July" year="2019"/> </front> <seriesInfo name="IEEE Std" value="754-2019"/> <seriesInfo name="DOI" value="10.1109/IEEESTD.2019.8766229"/> </reference> --> <referenceanchor="IANA-ALGORITHM-TYPES">anchor="IANA-ALGORITHM-TYPES" target="https://www.iana.org/assignments/igp-parameters"> <front><title>Interior Gateway Protocol (IGP) Parameters - IGP<title>IGP Algorithm Types</title> <author> <organization>IANA</organization> </author><date year="n/a"/></front><seriesInfo name="IANA Registry" value="https://www.iana.org/assignments/igp-parameters/igp-parameters.xhtml#algorithm-type"/></reference> </references> </references> <sectionanchor="Acknowledgement" title="Acknowledgement">anchor="Acknowledgements" numbered="false" toc="default"> <name>Acknowledgements</name> <t>Thanks to <contact fullname="Dhruv Dhody"/> for shepherding the document and forhistheir contributions and suggestions.</t><t> Would<t>The authors would like to thankAdrian Farrel, Aijun Wang, Alexey Melnikov, Boris Khasanov, Deb Cooley, Eric Vyncke, Gunter<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 deVelde, Jie Dong, Ketan Talaulikar, Mahesh Jethanandani, Marina Fizgeer, Mike Bishop, Mohamed Boucadair, Nagendra Nainar, Rakesh Gandhi, Russ White, Shraddha HegdeVelde"/>, <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 andsuggestions. </t>suggestions.</t> </section><!-- Acknowledgement --><sectiontitle="Contributors"> <t><figure><artwork> Mike Koldychev Ciena Corporation Email: mkoldych@proton.me Zafar Ali Cisconumbered="false" toc="default"> <name>Contributors</name> <contact fullname="Mike Koldychev"> <organization>Ciena Corporation</organization> <address> <email>mkoldych@proton.me</email> </address> </contact> <contact fullname="Zafar Ali"> <organization>Cisco Systems,Inc. Email: zali@cisco.com Stephane Litkowski CiscoInc.</organization> <address> <email>zali@cisco.com</email> </address> </contact> <contact fullname="Stephane Litkowski"> <organization>Cisco Systems,Inc. Email: slitkows.ietf@gmail.com Siva Sivabalan Ciena Email: msiva282@gmail.com Tarek Saad CiscoInc.</organization> <address> <email>slitkows.ietf@gmail.com</email> </address> </contact> <contact fullname="Siva Sivabalan"> <organization>Ciena</organization> <address> <email>msiva282@gmail.com</email> </address> </contact> <contact fullname="Tarek Saad"> <organization>Cisco Systems,Inc. Email: tsaad.net@gmail.com MahendraInc.</organization> <address> <email>tsaad.net@gmail.com</email> </address> </contact> <contact fullname="Mahendra SinghNegi RtBrick Inc Email: mahend.ietf@gmail.com Tom Petch Email: ietfc@btconnect.com </artwork></figure></t>Negi"> <organization>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> </back> <!--Contributors[rfced] Please review whether any of the notes in this document should be in the <aside> element. It is defined as "a container for content that is semantically less important or tangential to the content that surrounds it" (https://authors.ietf.org/en/rfcxml-vocabulary#aside). --> <!--[rfced] Terminology a) We note that "object" and "Object" are both used throughout the document. Please review the terms below and let us know if/how this capitalization should be made consistent. METRIC object vs. METRIC Object LSPA Object vs. LSPA object PCEP Object LSP Object NO-PATH object BANDWIDTH Object (FYI - We capitalized "Bandwidth" to reflect usage in RFC 5440.) b) Similar to above, we note that "metric" and "Metric" are both used throughout the document. Please review the terms below and let us know if/how this capitalization should be made consistent. Path Min Delay metric vs. Path Min Delay Metric P2MP Path Min Delay metric vs. P2MP Path Min Delay Metric Path Bandwidth Metric vs. Path Bandwidth metric P2MP Path Bandwidth Metric vs. P2MP Path Bandwidth metric User-defined metric vs. User Defined metric vs. User Defined Metric Link Delay metric Path Min Link Delay metric Min Link Delay metric P2P Path Min Delay metric Bandwidth Metric vs. Bandwidth metric vs. bandwidth metric P2P Bandwidth metric --> <!--[rfced] Abbreviations a) Both the expansion and the acronym for the following terms are used throughout the document. Would you like to update to using the expansion upon first usage and the acronym for the rest of the document for consistency? Binding SID (BSID) Interior Gateway Protocol (IGP) Path Setup Type (PST) Segment Routing (SR) b) FYI - We have expanded the following abbreviation per Section 3.6 of RFC 7322 ("RFC Style Guide"). Please review each expansion in the document carefully to ensure correctness. BGP - Link State (BGP-LS) --> <!-- [rfced] Please review the "Inclusive Language" portion of the online Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> and let us know if any changes are needed. Updates of this nature typically result in more precise language, which is helpful for readers. Note that our script did not flag any words in particular, but this should still be reviewed as a best practice. --></back></rfc>