<?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" docName="draft-ietf-lsr-igp-flex-algo-reverse-affinity-12" number="9917" consensus="true" ipr="trust200902"updates="9350">updates="9350, 9843" obsoletes="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" version="3"> <front> <title abbrev="Flex-Algorithm Reverse Affinity">IGP Flexible Algorithms Reverse Affinity Constraint</title> <seriesInfo name="RFC" value="9917"/> <author fullname="Peter Psenak" initials="P." surname="Psenak"> <organization>Cisco Systems</organization> <address> <postal> <street>Apollo Business Center</street> <street>Mlynske nivy 43</street> <city>Bratislava</city> <code>82109</code> <country>Slovakia</country> </postal> <email>ppsenak@cisco.com</email> </address> </author> <author fullname="Jakub Horn" initials="J." surname="Horn"> <organization>Cisco Systems</organization> <address> <postal><street></street><city>Milpitas</city> <code>95035</code> <region>CA</region><country>USA</country><country>United States of America</country> </postal> <email>jakuhorn@cisco.com</email> </address> </author> <author fullname="Amit Dhamija" initials="A" surname="Dhamija"> <organization>Arrcus</organization> <address><postal> <street/> </postal><email>amitd@arrcus.com</email> </address> </author><date/> <area>Routing Area</area> <workgroup>LSR Working Group</workgroup> <keyword>IGP</keyword> <keyword>Draft</keyword><date month="January" year="2026"/> <area>RTG</area> <workgroup>lsr</workgroup> <abstract> <t>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>Thisextension enhances the path selection capabilities of Flex-Algorithm by enabling reverse-affinity-based constraints, which are particularly useful for scenarios where path symmetry or directional link attributes are operationally significant.</t> <t>Thisdocument updates<xref target="RFC9350"/>RFCs 9350 and<xref target="I-D.ietf-lsr-flex-algo-bw-con"/>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> <middle> <sectiontitle="Introduction">numbered="true" toc="default"> <name>Introduction</name> <t>IGP protocols historically computed the best paths over the network solely based on the IGP metric assigned to the links. An IGP Flex-Algorithm as specified in <xreftarget="RFC9350"/>target="RFC9350" format="default"/> allows IGPs to compute constraint-based paths. Several mechanisms to include or exclude the link during the Flex-Algorithm path calculation have been defined already:<list style="hanging"> <t> - link</t> <ul spacing="normal"> <li>link inclusion or exclusion based on the presence of a specific Admin Group(s)-<xreftarget="RFC9350"/></t> <t> - linktarget="RFC9350" format="default"/></li> <li>link exclusion based on the presence of a specific Shared Risk Link Group (SRLG)-<xreftarget="RFC9350"/></t> <t> - linktarget="RFC9350" format="default"/></li> <li>link exclusion based on minimum bandwidth-<xreftarget="I-D.ietf-lsr-flex-algo-bw-con"/></t> <t> - linktarget="RFC9843" format="default"/></li> <li>link exclusion based on maximum delay-<xreftarget="I-D.ietf-lsr-flex-algo-bw-con"/></t> </list></t>target="RFC9843" format="default"/></li> </ul> <t>This document extends IGP Flex-Algorithm with additional constraints for inclusion or exclusion of links in the path based on Admin Groups associated with the reverse direction of theSPF pathShortest Path First (SPF) computation.</t> <t>This document updates <xreftarget="RFC9350"/>target="RFC9350" format="default"/> and <xreftarget="I-D.ietf-lsr-flex-algo-bw-con"/>target="RFC9843" format="default"/> by creating 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 (refer to <xreftarget="NEW_REG"/>).</t>target="NEW_REG" format="default"/>).</t> <t>The term OSPF in this document is used to cover both OSPFv2 and OSPFv3 protocols.</t> </section> <section anchor="ReqLang"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 in BCP 14 <xreftarget="RFC2119">BCP 14</xref>target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shownhere.</t>here. </t> </section> <sectiontitle="Usenumbered="true" toc="default"> <name>Use CaseExample">Example</name> <t>The Flexible AlgorithmdefinitionDefinition (FAD) can specify Extended Administrative Groups that are used by the operator to include or exclude links during the Flex-Algorithm path computation <xreftarget="RFC9350"/>.target="RFC9350" format="default"/>. These link Extended Administrative Groups are checked in the path direction of the SPF computation, e.g., in the direction from the root vertex towardverticiesvertices of increasing distance.</t> <t>In certain scenarios, it is beneficial to evaluate the Extended Administrative Groups associated with the reverse direction of a link, rather than solely those in the direction of path computation. Consider a point-to-point link represented as a pair of directed edges between two nodes, A and B. When computing a path from A to B, issues such as input errors on the link, detectable only at the receiving node B, may be operationally significant. An operator might monitor metrics likeCRCCyclic Redundancy Check (CRC) errors or other input-related faults at node B and apply thresholds over a defined observation period. If such a threshold is exceeded, node B may locally assign specific Extended Administrative Groups to the link in the direction from B to A.</t> <t>To accommodate this operational intent, the Flex-Algorithm can be extended to inspect the Extended Administrative Groups of the reverse-direction edge (from B to A) when evaluating the forward-direction edge (from A to B) during path computation. This enables the exclusion of links from the computed topology based on conditions detected at the far end of the link, improving network reliability and policy control.</t> </section> <sectiontitle="Deployment Consideration"> <t>Threshold basednumbered="true" toc="default"> <name>Deployment Consideration</name> <t>Threshold-based setting of the link Extended Administrative Groups must be done with care to avoid excessive flooding and constant Flex-Algorithm pathre-calculation.</t>recalculation.</t> <t>One possible approach is to use two different thresholds when setting andun-settingunsetting the Extended Administrative Group on the link. For example, when setting the Extended Administrative Group on the link based on the percentage of certain incoming errors, higher threshold is used for setting and lower threshold is used forun-settingunsetting the Extended Administrative Group on the link.</t> <t>Many implementations provide a throttling mechanism that limits the rate at which theLSPLink State PDU (LSP) in case ofISIS,IS-IS, orLSALink State Advertisement (LSA) in case of OSPFv2 and OSPFv3, is updated at the originator. Such mechanism is typically not specific to any particular link attribute, but rather considers any change in the LSP or LSA.UsageApplication of such throttling mechanism can also be used to avoid frequent changes in the setting of the Extended Administrative Group on a link to affect the stability of the receivers.</t> </section> <section anchor="ISISFLEXALGEXLTLV"title="IS-ISnumbered="true" toc="default"> <name>IS-IS Flexible Algorithm Exclude Reverse Admin GroupSub-TLV">Sub-TLV</name> <t>The IS-IS Flexible Algorithm Exclude Reverse Admin Group (FAERAG) Sub-TLV is used to advertise the exclude rule that is used during the Flex-Algorithm path calculation as specified in <xreftarget="FLEXALGPATHCALC"/>.target="FLEXALGPATHCALC" format="default"/>. </t> <t>The IS-IS FAERAG Sub-TLV is aSub-TLVsub-TLV of the IS-IS FAD Sub-TLV. It has the following format:<figure> <artwork><![CDATA[</t> <artwork name="" type="" align="left" 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 | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Extended Admin Group | +- -+ | ... |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ where: ]]></artwork> </figure> <list style="hanging"> <t>Type+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork> <t>where:</t> <dl newline="false" spacing="normal"> <dt>Type (1octet): 10</t> <t>Lengthoctet):</dt><dd>10</dd> <dt>Length (1octet): Variable,octet):</dt><dd>Variable, dependent on the size of the Extended Admin Group. The lengthMUST<bcp14>MUST</bcp14> be a multiple of 4 octets. If the length is not a multiple of 4 octets, the entireSub-TLV MUSTsub-TLV <bcp14>MUST</bcp14> be ignored by thereceiver.</t> <t>Extendedreceiver.</dd> <dt>Extended AdministrativeGroup: ExtendedGroup:</dt><dd>Extended Administrative Group as defined in <xreftarget="RFC7308"/>.</t> </list></t>target="RFC7308" format="default"/>.</dd> </dl> <t>The IS-IS FAERAG Sub-TLVMUST NOT<bcp14>MUST NOT</bcp14> appear more than once in a single IS-IS FAD Sub-TLV. If it appears more than once, the IS-IS FAD Sub-TLVMUST<bcp14>MUST</bcp14> be ignored by the receiver.</t> <t>The IS-IS FAERAG Sub-TLVMUST NOT<bcp14>MUST NOT</bcp14> appear more than once in the set of FADsub-TLVsSub-TLVs for a given Flex-Algorithm from a given IS. If it appears more than once in such set, the IS-IS FAERAG Sub-TLV in the first occurrence in thelowest numberedlowest-numbered LSP from a given ISMUST<bcp14>MUST</bcp14> be used and any other occurrencesMUST<bcp14>MUST</bcp14> be ignored by the receiver.</t> </section> <section anchor="ISISFLEXALGINCANYTLV"title="IS-ISnumbered="true" toc="default"> <name>IS-IS Flexible Algorithm Include-Any Reverse Admin GroupSub-TLV">Sub-TLV</name> <t>The IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV is used to advertise the include-any rule that is used during the Flex-Algorithm path calculation as specified in <xreftarget="FLEXALGPATHCALC"/>.</t>target="FLEXALGPATHCALC" format="default"/>.</t> <t>The format of the IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV is identical to the format of the FAERAG Sub-TLV in <xreftarget="ISISFLEXALGEXLTLV"/>.</t>target="ISISFLEXALGEXLTLV" format="default"/>.</t> <t>IANA has assigned Type value of 11 for the IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV.</t> <t>The IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLVMUST NOT<bcp14>MUST NOT</bcp14> appear more than once in a single IS-IS FAD Sub-TLV. If it appears more than once, the IS-IS FAD Sub-TLVMUST<bcp14>MUST</bcp14> be ignored by the receiver.</t> <t>The IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLVMUST NOT<bcp14>MUST NOT</bcp14> appear more than once in the set of FADsub-TLVsSub-TLVs for a given Flex-Algorithm from a given IS. If it appears more than once in such set, the IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV in the first occurrence in thelowest numberedlowest-numbered LSP from a given ISMUST<bcp14>MUST</bcp14> be used and any other occurrencesMUST<bcp14>MUST</bcp14> be ignored by the receiver.</t> </section> <section anchor="ISISFLEXALGINCALLTLV"title="IS-ISnumbered="true" toc="default"> <name>IS-IS Flexible Algorithm Include-All Reverse Admin GroupSub-TLV">Sub-TLV</name> <t>The IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV is used to advertise the include-all rule that is used during the Flex-Algorithm path calculation as specified in <xreftarget="FLEXALGPATHCALC"/>.</t>target="FLEXALGPATHCALC" format="default"/>.</t> <t>The format of the IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV is identical to the format of the FAERAG Sub-TLV in <xreftarget="ISISFLEXALGEXLTLV"/>.</t>target="ISISFLEXALGEXLTLV" format="default"/>.</t> <t>IANA has assigned Type value of 12 for the IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV.</t> <t>The IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLVMUST NOT<bcp14>MUST NOT</bcp14> appear more than once in a single IS-IS FAD Sub-TLV. If it appears more than once, the IS-IS FAD Sub-TLVMUST<bcp14>MUST</bcp14> be ignored by the receiver.</t> <t>The IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLVMUST NOT<bcp14>MUST NOT</bcp14> appear more than once in the set of FADsub-TLVsSub-TLVs for a given Flex-Algorithm from a given IS. If it appears more than once in such set, the IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV in the first occurrence in thelowest numberedlowest-numbered LSP from a given ISMUST<bcp14>MUST</bcp14> be used and any other occurrencesMUST<bcp14>MUST</bcp14> be ignored by the receiver.</t> </section> <section anchor="OSPFFLEXALGEXLTLV"title="OSPFnumbered="true" toc="default"> <name>OSPF Flexible Algorithm Exclude Reverse Admin GroupSub-TLV">Sub-TLV</name> <t>The OSPF Flexible Algorithm Exclude Reverse Admin Group (FAERAG) Sub-TLV is used to advertise the exclude rule that is used during the Flex-Algorithm path calculation as specified in <xreftarget="FLEXALGPATHCALC"/>.target="FLEXALGPATHCALC" format="default"/>. </t> <t>The OSPF FAERAG Sub-TLV is aSub-TLVsub-TLV of the OSPF FAD TLV. It has the following format:<figure> <artwork><![CDATA[</t> <artwork name="" type="" align="left" 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 | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Extended Admin Group | +- -+ | ... |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ where: ]]></artwork> </figure> <list style="hanging"> <t>Type+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork> <t>where:</t> <dl newline="false" spacing="normal"> <dt>Type (2octets): 10</t> <t>Lengthoctets):</dt><dd>10</dd> <dt>Length (2octets): Variable,octets):</dt><dd>Variable, dependent on the size of the Extended Admin Group. The lengthMUST<bcp14>MUST</bcp14> be a multiple of 4 octets. If the length is not a multiple of 4 octets, the entireSub-TLV MUSTsub-TLV <bcp14>MUST</bcp14> be ignored by thereceiver.</t> <t>Extendedreceiver.</dd> <dt>Extended AdministrativeGroup: ExtendedGroup:</dt><dd>Extended Administrative Group as defined in <xreftarget="RFC7308"/>.</t> </list></t>target="RFC7308" format="default"/>.</dd> </dl> <t>The OSPF FAERAG Sub-TLVMUST NOT<bcp14>MUST NOT</bcp14> appear more than once in an OSPF FAD TLV. If it appears more than once, the OSPF FAD TLVMUST<bcp14>MUST</bcp14> be ignored by the receiver.</t> </section> <section anchor="OSPFFLEXALGINCANYTLV"title="OSPFnumbered="true" toc="default"> <name>OSPF Flexible Algorithm Include-Any Reverse Admin GroupSub-TLV">Sub-TLV</name> <t>The OSPF Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV is used to advertise the include-any rule that is used during the Flex-Algorithm path calculation as specified in <xreftarget="FLEXALGPATHCALC"/>.</t>target="FLEXALGPATHCALC" format="default"/>.</t> <t>The format of the OSPF Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV is identical to the format of the OSPF FAERAG Sub-TLV in <xreftarget="OSPFFLEXALGEXLTLV"/>.</t>target="OSPFFLEXALGEXLTLV" format="default"/>.</t> <t>IANA has assigned Type value of 11 for the OSPF Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV.</t> <t>The OSPF Flexible Algorithm Include-Any Reverse Admin Group Sub-TLVMUST NOT<bcp14>MUST NOT</bcp14> appear more than once in an OSPF FAD TLV. If it appears more than once, the OSPF FAD TLVMUST<bcp14>MUST</bcp14> be ignored by the receiver.</t> </section> <section anchor="OSPFFLEXALGINCALLTLV"title="OSPFnumbered="true" toc="default"> <name>OSPF Flexible Algorithm Include-All Reverse Admin GroupSub-TLV">Sub-TLV</name> <t>The OSPF Flexible Algorithm Include-All Reverse Admin Group Sub-TLV is used to advertise the include-all rule that is used during the Flex-Algorithm path calculation as specified in <xreftarget="FLEXALGPATHCALC"/>.</t>target="FLEXALGPATHCALC" format="default"/>.</t> <t>The format of the OSPF Flexible Algorithm Include-All Reverse Admin Group Sub-TLV is identical to the format of the OSPF FAERAG Sub-TLV in <xreftarget="OSPFFLEXALGEXLTLV"/>.</t>target="OSPFFLEXALGEXLTLV" format="default"/>.</t> <t>IANA has assigned Type value of 12 for the OSPF Flexible Algorithm Include-All Reverse Admin Group Sub-TLV.</t> <t>The OSPF Flexible Algorithm Include-All Reverse Admin Group Sub-TLVMUST NOT<bcp14>MUST NOT</bcp14> appear more than once in an OSPF FAD TLV. If it appears more than once, the OSPF FAD TLVMUST<bcp14>MUST</bcp14> be ignored by the receiver.</t> </section> <section anchor="FLEXALGPATHCALC"title="Calculationnumbered="true" toc="default"> <name>Calculation of Flexible AlgorithmPaths">Paths</name> <t>The following procedures augment the rules defined inSection 13 of<xreftarget="RFC9350"/>target="RFC9350" section="13"/> by introducing additional constraints based on Administrative Groups (AGs) associated with the reverse direction of a link.<list style="hanging"> <t>Check</t> <ul spacing="normal" > <li>Check if any exclude reverse Admin Group rule is part of the Flex-Algorithm definition. If such exclude rule exists, check if any Admin Group that is part of the exclude rule is also set on the link in the reverse direction. If such Admin Group is set on the link in the reverse direction, the linkMUST<bcp14>MUST</bcp14> be pruned from thecomputation.</t> <t>Checkcomputation.</li> <li>Check if any include-any reverse Admin Group rule is part of the Flex-Algorithm definition. If such include-any rule exists, check if any Admin Group that is part of the include-any rule is also set on the link in the reverse direction. If no such Admin Group is set on the link in the reverse direction, the linkMUST<bcp14>MUST</bcp14> be pruned from thecomputation.</t> <t>Checkcomputation.</li> <li>Check if any include-all reverse Admin Group rule is part of the Flex-Algorithm definition. If such include-all rule exists, check if all Admin Groups that are part of the include-all rule are also set on the link in the reverse direction. If all such Admin Groups are not set on the link in the reverse direction, the linkMUST<bcp14>MUST</bcp14> be pruned from thecomputation.</t> </list></t>computation.</li> </ul> <t>Please see rules 8, 9, and 10 in <xreftarget="PATHCOMPREGISTRY"/>target="PATHCOMPREGISTRY" format="default"/> for these added rules.</t> </section> <sectionanchor="NEW_REG" title="IGP Flex-Algorithm Path Computation Rules Registry"> <t>Since the original Flex-Algorithm specification <xref target="RFC9350"/>, many Flex-Algorithm extensions have been proposed and standardized. Many of them added additional rules to the Flex-Algorithm path computation. Maintaining an IANA registry for these rules allows specification across multiple documents progressing independently. The new "IGP Flex-Algorithm Path Computation Rules" registry has been created and is specified in <xref target="PATHCOMPREGISTRY"/>.</t> <t>This section provides the guidance for designated experts on evaluating new registrations in the "IGP Flex-Algorithm Path Computation Rules" registry:</t> <ol spacing="normal" type="1" indent="adaptive" start="1"> <li derivedCounter="1."> <t>When a new constraint is defined, the rule associated with that constraint MAY be inserted at any position. Backwards compatibility is guaranteed because nodes which don't support the new constraint will not participate in an algorithm where the FAD specifies a constraint they don't support.</t> </li> <li derivedCounter="2."> <t>The relative ordering of existing rules MUST NOT be altered. Doing so has the potential to create backwards compatibility issues.</t> </li> <li derivedCounter="3."> <t>Deletion of the rules MUST NOT be done. Given that the rules are only used conditionally based on the information carried in the winning FAD, deletion of the rule is not necessary.</t> </li> <li derivedCounter="4."> <t>Merging or repeating of the rules MUST NOT be done.</t> </li> </ol> </section> <sectionanchor="IANA"title="IANA Considerations">numbered="true" toc="default"> <name>IANA Considerations</name> <section anchor="SUBTLVREGISTRY"title="Sub-Sub-TLVsnumbered="true" toc="default"> <name>Sub-Sub-TLVs for Flexible Algorithm DefinitionSub-TLV"> <t>This document makesSub-TLV</name> <t>IANA has registered the followingregistrationin the "IS-IS Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV" registry under the "IS-IS TLV Codepoints" registry group:<list style="hanging"> <t>Type: 10</t> <t>Description: Flexible</t> <dl newline="false" spacing="compact"> <dt>Type:</dt><dd>10</dd> <dt>Description:</dt><dd>Flexible Algorithm Exclude Reverse AdminGroup</t> <t>MP-TLV Applicability: N</t> <t>Reference: This document (<xref target="ISISFLEXALGEXLTLV"/>).</t> </list> <list style="hanging"> <t>Type: 11</t> <t>Description: FlexibleGroup</dd> <dt>MP:</dt><dd>n</dd> <dt>Reference:</dt><dd>RFC 9917, <xref target="ISISFLEXALGEXLTLV" format="default"/></dd> </dl> <dl newline="false" spacing="compact"> <dt>Type:</dt><dd>11</dd> <dt>Description:</dt><dd>Flexible Algorithm Include-Any Reverse AdminGroup</t> <t>MP-TLV Applicability: N</t> <t>Reference: This document (<xref target="ISISFLEXALGINCANYTLV"/>).</t> </list> <list style="hanging"> <t>Type: 12</t> <t>Description: FlexibleGroup</dd> <dt>MP:</dt><dd>n</dd> <dt>Reference:</dt><dd>RFC 9917, <xref target="ISISFLEXALGINCANYTLV" format="default"/></dd> </dl> <dl newline="false" spacing="compact"> <dt>Type:</dt><dd>12</dd> <dt>Description:</dt><dd>Flexible Algorithm Include-All Reverse AdminGroup</t> <t>MP-TLV Applicability: N</t> <t>Reference: This document (<xref target="ISISFLEXALGINCALLTLV"/>).</t> </list></t>Group</dd> <dt>MP:</dt><dd>n</dd> <dt>Reference:</dt><dd>RFC 9917, <xref target="ISISFLEXALGINCALLTLV" format="default"/></dd> </dl> </section> <sectiontitle="OSPFnumbered="true" toc="default"> <name>OSPF Flexible Algorithm Definition TLV Sub-TLVRegistry">Registry</name> <t>This document makes the following registration in the "OSPF Flexible Algorithm Definition TLV Sub-TLVs" registry under the "Open Shortest Path First (OSPF) Parameters" registry group:<list style="hanging"> <t>Type: 10</t> <t>Description: Flexible</t> <dl newline="false" spacing="compact"> <dt>Type:</dt><dd>10</dd> <dt>Description:</dt><dd>Flexible Algorithm Exclude Reverse AdminGroup</t> <t>Reference: This document (<xref target="OSPFFLEXALGEXLTLV"/>).</t> </list> <list style="hanging"> <t>Type: 11</t> <t>Description: FlexibleGroup</dd> <dt>Reference:</dt><dd>RFC 9917, <xref target="OSPFFLEXALGEXLTLV" format="default"/></dd> </dl> <dl newline="false" spacing="compact"> <dt>Type:</dt><dd>11</dd> <dt>Description:</dt><dd>Flexible Algorithm Include-Any Reverse AdminGroup</t> <t>Reference: This document (<xref target="OSPFFLEXALGINCANYTLV"/>).</t> </list> <list style="hanging"> <t>Type: 12</t> <t>Description: FlexibleGroup</dd> <dt>Reference:</dt><dd>RFC 9917, <xref target="OSPFFLEXALGINCANYTLV" format="default"/></dd> </dl> <dl newline="false" spacing="compact"> <dt>Type:</dt><dd>12</dd> <dt>Description:</dt><dd>Flexible Algorithm Include-All Reverse AdminGroup</t> <t>Reference: This document (<xref target="OSPFFLEXALGINCALLTLV"/>).</t> </list></t>Group</dd> <dt>Reference:</dt><dd>RFC 9917, <xref target="OSPFFLEXALGINCALLTLV" format="default"/></dd> </dl> </section> <section anchor="PATHCOMPREGISTRY"title="IGPnumbered="true" toc="default"> <name>IGP Flex-Algorithm Path Computation RulesRegistry"> <t>This document createsRegistry</name> <t>IANA has created a new registry called "IGP Flex-Algorithm Path ComputationRules Registry"Rules" within the "Interior Gateway Protocol (IGP) Parameters" registry group. The registration procedure for the new registry is"Expert Review".Expert Review <xref target="RFC8126"/>. <xreftarget="NEW_REG"/>target="NEW_REG" format="default"/> provides guidance forDesignated Experts.</t>designated experts.</t> <t>The "IGPFlex-AlgoFlex-Algorithm Path Computation Rules" registry specifies the ordered set of rules that are used to prune links from the topology during the Flex-Algorithm path computation.</t> <t>There is no upper bound on the number of rules that the registry supports.</t> <t>In <xref target="flex-algo-rules"/>, "FAEMB" means "Flex-Algorithm Exclude Minimum Bandwidth", and "FAEMD" means "Flex-Algorithm Exclude Maximum Delay".</t> <table align="center"pn="table-6"> <name slugifiedName="name-is-is-sub-sub-tlvs-for-flexi">IGP Flex-algoanchor="flex-algo-rules"> <name>IGP Flex-Algorithm Path Calculation Rules</name> <thead> <tr><th align="left" colspan="1" rowspan="1">Sequence<th>Sequence Number</th><th align="left" colspan="1" rowspan="1">Description</th> <th align="left" colspan="1" rowspan="1">Reference</th><th>Description</th> <th>Reference</th> </tr> </thead> <tbody> <tr><td align="left" colspan="1" rowspan="1">1</td> <td align="left" colspan="1" rowspan="1">Check<td>1</td> <td>Check if any exclude Administrative Group rule is part of the Flex-Algorithm Definition. If such exclude rule exists, check if any color that is part of the exclude rule is also set on the link. If such a color is set, the linkMUST<bcp14>MUST</bcp14> be pruned from thecomputation</td> <td align="left" colspan="1" rowspan="1">Section 13 of <xref target="RFC9350"/></td>computation.</td> <td><xref target="RFC9350" section="13"/></td> </tr> <tr><td align="left" colspan="1" rowspan="1">2</td> <td align="left" colspan="1" rowspan="1">Check<td>2</td> <td>Check if any exclude SRLG rule is part of the Flex-Algorithm Definition. If such exclude rule exists, check if the link is part of any SRLG that is also part of the SRLG exclude rule. If the link is part of such SRLG, the linkMUST<bcp14>MUST</bcp14> be pruned from the computation.</td><td align="left" colspan="1" rowspan="1">Section 13 of <xref target="RFC9350"/></td><td><xref target="RFC9350" section="13"/></td> </tr> <tr><td align="left" colspan="1" rowspan="1">3</td> <td align="left" colspan="1" rowspan="1">Check<td>3</td> <td>Check if any include-any Administrative Group rule is part of the Flex-Algorithm Definition. If such include-any rule exists, check if any color that is part of the include-any rule is also set on the link. If no such color is set, the linkMUST<bcp14>MUST</bcp14> be pruned from thecomputation</td> <td align="left" colspan="1" rowspan="1">Section 13 of <xref target="RFC9350"/></td>computation.</td> <td><xref target="RFC9350" section="13"/></td> </tr> <tr><td align="left" colspan="1" rowspan="1">4</td> <td align="left" colspan="1" rowspan="1">Check<td>4</td> <td>Check if any include-all Administrative Group rule is part of the Flex-Algorithm Definition. If such include-all rule exists, check if all colors that are part of the include-all rule are also set on the link. If all such colors are not set on the link, the linkMUST<bcp14>MUST</bcp14> be pruned from the computation.</td><td align="left" colspan="1" rowspan="1">Section 13 of <xref target="RFC9350"/></td><td><xref target="RFC9350" section="13"/></td> </tr> <tr><td align="left" colspan="1" rowspan="1">5</td> <td align="left" colspan="1" rowspan="1">If<td>5</td> <td>If the Flex-Algorithm Definition uses something other than the IGP metric(Section 5 of <xref target="RFC9350"/>),(<xref target="RFC9350" section="5"/>), and such metric is not advertised for the particular link in a topology for which the computation is done, such linkMUST<bcp14>MUST</bcp14> be pruned from the computation. A metric of value 0MUST NOT<bcp14>MUST NOT</bcp14> be assumed in such a case.</td><td align="left" colspan="1" rowspan="1">Section 13 of <xref target="RFC9350"/></td><td><xref target="RFC9350" section="13"/></td> </tr> <tr><td align="left" colspan="1" rowspan="1">6</td> <td align="left" colspan="1" rowspan="1"><td>6</td> <td> Check if any exclude FAEMB rule is part of the Flex-Algorithm definition. If such exclude rule exists and the link has Maximum Link Bandwidth advertised, check if the link bandwidth satisfies the FAEMB rule. If the link does not satisfy the FAEMB rule, the linkMUST<bcp14>MUST</bcp14> be pruned from the Flex-Algorithmcomputation</td> <td align="left" colspan="1" rowspan="1">Section 6 of <xref target="I-D.ietf-lsr-flex-algo-bw-con"/></td>computation.</td> <td><xref section="6" target="RFC9843"/></td> </tr> <tr><td align="left" colspan="1" rowspan="1">7</td> <td align="left" colspan="1" rowspan="1">Check<td>7</td> <td>Check if any exclude FAEMD rule is part of the Flex-Algorithm definition. If such exclude rule exists and the link has Min Unidirectional link delay advertised, check if the link delay satisfies the FAEMD rule. If the link does not satisfy the FAEMD rule, the linkMUST<bcp14>MUST</bcp14> be pruned from the Flex-Algorithm computation.</td><td align="left" colspan="1" rowspan="1">Section 6 of <xref target="I-D.ietf-lsr-flex-algo-bw-con"/></td><td><xref section="6" target="RFC9843"/></td> </tr> <tr><td align="left" colspan="1" rowspan="1">8</td> <td align="left" colspan="1" rowspan="1">Check<td>8</td> <td>Check if any exclude reverse Admin Group rule is part of the Flex-Algorithm definition. If such exclude rule exists, check if any Admin Group that is part of the exclude rule is also set on the link in the reverse direction. If such Admin Group is set on the link in the reverse direction, the linkMUST<bcp14>MUST</bcp14> be pruned from the computation.</td><td align="left" colspan="1" rowspan="1">This document, <xref target="FLEXALGPATHCALC"/></td><td><xref target="FLEXALGPATHCALC"/> of RFC 9917</td> </tr> <tr><td align="left" colspan="1" rowspan="1">9</td> <td align="left" colspan="1" rowspan="1">Check<td>9</td> <td>Check if any include-any reverse Admin Group rule is part of the Flex-Algorithm definition. If such include-any rule exists, check if any Admin Group that is part of the include-any rule is also set on the link in the reverse direction. If no such Admin Group is set on the link in the reverse direction, the linkMUST<bcp14>MUST</bcp14> be pruned from thecomputation</td> <td align="left" colspan="1" rowspan="1">This document, <xref target="FLEXALGPATHCALC"/></td>computation.</td> <td><xref target="FLEXALGPATHCALC"/> of RFC 9917</td> </tr> <tr><td align="left" colspan="1" rowspan="1">10</td> <td align="left" colspan="1" rowspan="1">Check<td>10</td> <td>Check if any include-all reverse Admin Group rule is part of the Flex-Algorithm definition. If such include-all rule exists, check if all Admin Groups that are part of the include-all rule are also set on the link in the reverse direction. If all such Admin Groups are not set on the link in the reverse direction, the linkMUST<bcp14>MUST</bcp14> be pruned from the computation.</td><td align="left" colspan="1" rowspan="1">This document, <xref target="FLEXALGPATHCALC"/></td><td><xref target="FLEXALGPATHCALC"/> of RFC 9917</td> </tr> </tbody> </table> <section anchor="NEW_REG" numbered="true" toc="default"> <name>Guidance for Designated Experts</name> <t>Since the original Flex-Algorithm specification <xref target="RFC9350" format="default"/>, many Flex-Algorithm extensions have been proposed and standardized. Many of them added additional rules to the Flex-Algorithm path computation. Maintaining an IANA registry for these rules allows specification across multiple documents progressing independently. The new "IGP Flex-Algorithm Path Computation Rules" registry has been created and is specified in <xref target="PATHCOMPREGISTRY" format="default"/>.</t> <t>This section provides the guidance for designated experts on evaluating new registrations in the "IGP Flex-Algorithm Path Computation Rules" registry:</t> <ol spacing="normal" type="1"> <li> When a new constraint is defined, the rule associated with that constraint <bcp14>MAY</bcp14> be inserted at any position. Backwards compatibility is guaranteed because nodes that don't support the new constraint will not participate in an algorithm where the FAD specifies a constraint they don't support. </li> <li> The relative ordering of existing rules <bcp14>MUST NOT</bcp14> be altered. Doing so has the potential to create backwards compatibility issues. </li> <li> Deletion of the rules <bcp14>MUST NOT</bcp14> be done. Given that the rules are only used conditionally based on the information carried in the winning FAD, deletion of the rule is not necessary. </li> <li> Merging or repeating of the rules <bcp14>MUST NOT</bcp14> be done. </li> </ol> </section> </section> </section> <section anchor="Security"title="Security Considerations">numbered="true" toc="default"> <name>Security Considerations</name> <t>This document inherits security considerations from <xreftarget="RFC9350"/>.</t> </section> <section anchor="Acknowledgements" title="Acknowledgements"> <t>TBD</t>target="RFC9350" format="default"/>.</t> </section> </middle> <back><references title="Normative References"> <?rfc include='reference.RFC.2119'?> <?rfc include='reference.RFC.8174'?> <?rfc include='reference.RFC.7308'?> <?rfc include='reference.RFC.9350'?> <?rfc include='reference.I-D.ietf-lsr-flex-algo-bw-con'?><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.8174.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7308.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.9843.xml"/> </references> <references> <name>Informative References</name> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/> </references> </references> </back> </rfc>