<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" docName="draft-ietf-lsr-igp-flex-algo-reverse-affinity-12" number="9917" consensus="true" ipr="trust200902" updates="9350, 9843" obsoletes="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" prepTime="2026-01-27T20:38:34" indexInclude="true" scripts="Common,Latin">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-lsr-igp-flex-algo-reverse-affinity-12" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9917" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="Flex-Algorithm Reverse Affinity">IGP Flexible Algorithms Reverse Affinity Constraint</title>
    <seriesInfo name="RFC" value="9917" stream="IETF"/>
    <author fullname="Peter Psenak" initials="P." surname="Psenak">
      <organization showOnFrontPage="true">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 showOnFrontPage="true">Cisco Systems</organization>
      <address>
        <postal>
          <city>Milpitas</city>
          <code>95035</code>
          <region>CA</region>
          <country>United States of America</country>
        </postal>
        <email>jakuhorn@cisco.com</email>
      </address>
    </author>
    <author fullname="Amit Dhamija" initials="A" surname="Dhamija">
      <organization showOnFrontPage="true">Arrcus</organization>
      <address>
        <email>amitd@arrcus.com</email>
      </address>
    </author>
    <date month="01" year="2026"/>
    <area>RTG</area>
    <workgroup>lsr</workgroup>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">An IGP Flexible Algorithm (Flex-Algorithm) enables the computation of 
      constraint-based paths within an IGP domain, allowing operators to influence path 
      selection according to administrative policies. This document defines an extension 
      to Flex-Algorithm that allows the inclusion or exclusion of links from path
      computation based on Administrative Groups (also known as link affinities) 
      associated with the reverse direction of the path under computation.</t>
      <t indent="0" pn="section-abstract-2">This document updates RFCs 9350 and 9843
      by introducing the new IANA registry that specifies the ordered set of rules 
      that are used to prune links from the topology during the Flex-Algorithm path 
      computation.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9917" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2026 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-use-case-example">Use Case Example</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-deployment-consideration">Deployment Consideration</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-is-is-flexible-algorithm-ex">IS-IS Flexible Algorithm Exclude Reverse Admin Group Sub-TLV</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-is-is-flexible-algorithm-in">IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-is-is-flexible-algorithm-inc">IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ospf-flexible-algorithm-exc">OSPF Flexible Algorithm Exclude Reverse Admin Group Sub-TLV</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ospf-flexible-algorithm-inc">OSPF Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-ospf-flexible-algorithm-incl">OSPF Flexible Algorithm Include-All Reverse Admin Group Sub-TLV</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-calculation-of-flexible-alg">Calculation of Flexible Algorithm Paths</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="12" format="counter" sectionFormat="of" target="section-12"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.12.2">
              <li pn="section-toc.1-1.12.2.1">
                <t indent="0" pn="section-toc.1-1.12.2.1.1"><xref derivedContent="12.1" format="counter" sectionFormat="of" target="section-12.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sub-sub-tlvs-for-flexible-a">Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV</xref></t>
              </li>
              <li pn="section-toc.1-1.12.2.2">
                <t indent="0" pn="section-toc.1-1.12.2.2.1"><xref derivedContent="12.2" format="counter" sectionFormat="of" target="section-12.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ospf-flexible-algorithm-def">OSPF Flexible Algorithm Definition TLV Sub-TLV Registry</xref></t>
              </li>
              <li pn="section-toc.1-1.12.2.3">
                <t indent="0" pn="section-toc.1-1.12.2.3.1"><xref derivedContent="12.3" format="counter" sectionFormat="of" target="section-12.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-igp-flex-algorithm-path-com">IGP Flex-Algorithm Path Computation Rules Registry</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.12.2.3.2">
                  <li pn="section-toc.1-1.12.2.3.2.1">
                    <t indent="0" pn="section-toc.1-1.12.2.3.2.1.1"><xref derivedContent="12.3.1" format="counter" sectionFormat="of" target="section-12.3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-guidance-for-designated-exp">Guidance for Designated Experts</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.13">
            <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="13" format="counter" sectionFormat="of" target="section-13"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.14">
            <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="14" format="counter" sectionFormat="of" target="section-14"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.14.2">
              <li pn="section-toc.1-1.14.2.1">
                <t indent="0" pn="section-toc.1-1.14.2.1.1"><xref derivedContent="14.1" format="counter" sectionFormat="of" target="section-14.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.14.2.2">
                <t indent="0" pn="section-toc.1-1.14.2.2.1"><xref derivedContent="14.2" format="counter" sectionFormat="of" target="section-14.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.15">
            <t indent="0" pn="section-toc.1-1.15.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">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 <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="RFC9350"/> 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:   
      </t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1-2">
        <li pn="section-1-2.1">link inclusion or exclusion based on the presence of a specific
        Admin Group(s) <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="RFC9350"/></li>
        <li pn="section-1-2.2">link exclusion based on the presence of a specific Shared Risk
        Link Group (SRLG) <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="RFC9350"/></li>
        <li pn="section-1-2.3">link exclusion based on minimum bandwidth <xref target="RFC9843" format="default" sectionFormat="of" derivedContent="RFC9843"/></li>
        <li pn="section-1-2.4">link exclusion based on maximum delay <xref target="RFC9843" format="default" sectionFormat="of" derivedContent="RFC9843"/></li>
      </ul>
      <t indent="0" pn="section-1-3">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 the Shortest Path First (SPF) computation.</t>
      <t indent="0" pn="section-1-4">This document updates <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="RFC9350"/> and <xref target="RFC9843" format="default" sectionFormat="of" derivedContent="RFC9843"/>
	  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 <xref target="NEW_REG" format="default" sectionFormat="of" derivedContent="Section 12.3.1"/>).</t>
      <t indent="0" pn="section-1-5">The term OSPF in this document is used to cover both OSPFv2 and OSPFv3 protocols.</t>
    </section>
    <section anchor="ReqLang" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-requirements-language">Requirements Language</name>
      <t indent="0" pn="section-2-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
      </t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-use-case-example">Use Case Example</name>
      <t indent="0" pn="section-3-1">The Flexible Algorithm Definition (FAD) can specify Extended Administrative Groups that are
      used by the operator to include or exclude links during the Flex-Algorithm path
      computation <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="RFC9350"/>. These link Extended Administrative Groups are checked
      in the path direction of the SPF computation, e.g., in the direction from the root 
      vertex toward vertices of increasing distance.</t>
      <t indent="0" pn="section-3-2">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 like 
      Cyclic 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 indent="0" pn="section-3-3">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>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-deployment-consideration">Deployment Consideration</name>
      <t indent="0" pn="section-4-1">Threshold-based setting of the link Extended Administrative Groups must be done 
      with care to avoid excessive flooding and constant Flex-Algorithm path 
      recalculation.</t>
      <t indent="0" pn="section-4-2">One possible approach is to use two different thresholds when setting and unsetting 
      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 for 
      unsetting the Extended Administrative Group on the link.</t>
      <t indent="0" pn="section-4-3">Many implementations provide a throttling mechanism that limits the rate at which 
      the Link State PDU (LSP) in case of IS-IS, or Link 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. Application 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" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-is-is-flexible-algorithm-ex">IS-IS Flexible Algorithm Exclude Reverse Admin Group Sub-TLV</name>
      <t indent="0" pn="section-5-1">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 <xref target="FLEXALGPATHCALC" format="default" sectionFormat="of" derivedContent="Section 11"/>.
      </t>
      <t indent="0" pn="section-5-2">The IS-IS FAERAG Sub-TLV is a sub-TLV of the IS-IS FAD Sub-TLV. It has the 
        following format: 
      </t>
      <artwork name="" type="" align="left" alt="" pn="section-5-3">
 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                     |
+-                                                             -+
|                            ...                                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
      <t indent="0" pn="section-5-4">where:</t>
      <dl newline="false" spacing="normal" indent="3" pn="section-5-5">
        <dt pn="section-5-5.1">Type (1 octet):</dt>
        <dd pn="section-5-5.2">10</dd>
        <dt pn="section-5-5.3">Length (1 octet):</dt>
        <dd pn="section-5-5.4">Variable, dependent on the size of the
        Extended Admin Group. The length <bcp14>MUST</bcp14> be a multiple of
        4 octets. If the length is not a multiple of 4 octets, the entire
        sub-TLV <bcp14>MUST</bcp14> be ignored by the receiver.</dd>
        <dt pn="section-5-5.5">Extended Administrative Group:</dt>
        <dd pn="section-5-5.6">Extended Administrative
        Group as defined in <xref target="RFC7308" format="default" sectionFormat="of" derivedContent="RFC7308"/>.</dd>
      </dl>
      <t indent="0" pn="section-5-6">The IS-IS FAERAG Sub-TLV <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-TLV <bcp14>MUST</bcp14>
        be ignored by the receiver.</t>
      <t indent="0" pn="section-5-7">The IS-IS FAERAG Sub-TLV <bcp14>MUST NOT</bcp14> appear more than once in the set of FAD 
        Sub-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 the lowest-numbered 
        LSP from a given IS <bcp14>MUST</bcp14> be used and any other occurrences <bcp14>MUST</bcp14> be ignored
        by the receiver.</t>
    </section>
    <section anchor="ISISFLEXALGINCANYTLV" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-is-is-flexible-algorithm-in">IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV</name>
      <t indent="0" pn="section-6-1">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 <xref target="FLEXALGPATHCALC" format="default" sectionFormat="of" derivedContent="Section 11"/>.</t>
      <t indent="0" pn="section-6-2">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 
        <xref target="ISISFLEXALGEXLTLV" format="default" sectionFormat="of" derivedContent="Section 5"/>.</t>
      <t indent="0" pn="section-6-3">IANA has assigned Type value of 11 for the IS-IS Flexible Algorithm Include-Any 
        Reverse Admin Group Sub-TLV.</t>
      <t indent="0" pn="section-6-4">The IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV <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-TLV <bcp14>MUST</bcp14> be ignored by the receiver.</t>
      <t indent="0" pn="section-6-5">The IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV <bcp14>MUST NOT</bcp14> 
        appear more than once in the set of FAD Sub-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 the lowest-numbered 
        LSP from a given IS <bcp14>MUST</bcp14> be used and any other occurrences <bcp14>MUST</bcp14> be ignored 
        by the receiver.</t>
    </section>
    <section anchor="ISISFLEXALGINCALLTLV" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-is-is-flexible-algorithm-inc">IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV</name>
      <t indent="0" pn="section-7-1">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 <xref target="FLEXALGPATHCALC" format="default" sectionFormat="of" derivedContent="Section 11"/>.</t>
      <t indent="0" pn="section-7-2">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
         <xref target="ISISFLEXALGEXLTLV" format="default" sectionFormat="of" derivedContent="Section 5"/>.</t>
      <t indent="0" pn="section-7-3">IANA has assigned Type value of 12 for the IS-IS Flexible Algorithm Include-All 
        Reverse Admin Group Sub-TLV.</t>
      <t indent="0" pn="section-7-4">The IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV <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-TLV <bcp14>MUST</bcp14> be ignored by the receiver.</t>
      <t indent="0" pn="section-7-5">The IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV <bcp14>MUST NOT</bcp14> 
        appear more than once in the set of FAD Sub-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 the lowest-numbered 
        LSP from a given IS <bcp14>MUST</bcp14> be used and any other occurrences <bcp14>MUST</bcp14> be ignored
        by the receiver.</t>
    </section>
    <section anchor="OSPFFLEXALGEXLTLV" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-ospf-flexible-algorithm-exc">OSPF Flexible Algorithm Exclude Reverse Admin Group Sub-TLV</name>
      <t indent="0" pn="section-8-1">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 <xref target="FLEXALGPATHCALC" format="default" sectionFormat="of" derivedContent="Section 11"/>.
      </t>
      <t indent="0" pn="section-8-2">The OSPF FAERAG Sub-TLV is a sub-TLV of the OSPF FAD TLV. It has the 
        following format: </t>
      <artwork name="" type="" align="left" alt="" pn="section-8-3">
 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                     |
+-                                                             -+
|                            ...                                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
      <t indent="0" pn="section-8-4">where:</t>
      <dl newline="false" spacing="normal" indent="3" pn="section-8-5">
        <dt pn="section-8-5.1">Type (2 octets):</dt>
        <dd pn="section-8-5.2">10</dd>
        <dt pn="section-8-5.3">Length (2 octets):</dt>
        <dd pn="section-8-5.4">Variable, dependent on the size of the
        Extended Admin Group. The length <bcp14>MUST</bcp14> be a multiple of
        4 octets. If the length is not a multiple of 4 octets, the entire
        sub-TLV <bcp14>MUST</bcp14> be ignored by the receiver.</dd>
        <dt pn="section-8-5.5">Extended Administrative Group:</dt>
        <dd pn="section-8-5.6">Extended Administrative
        Group as defined in <xref target="RFC7308" format="default" sectionFormat="of" derivedContent="RFC7308"/>.</dd>
      </dl>
      <t indent="0" pn="section-8-6">The OSPF FAERAG Sub-TLV <bcp14>MUST NOT</bcp14> appear more than once in an OSPF
        FAD TLV. If it appears more than once, the OSPF FAD TLV <bcp14>MUST</bcp14> be
        ignored by the receiver.</t>
    </section>
    <section anchor="OSPFFLEXALGINCANYTLV" numbered="true" toc="include" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-ospf-flexible-algorithm-inc">OSPF Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV</name>
      <t indent="0" pn="section-9-1">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 <xref target="FLEXALGPATHCALC" format="default" sectionFormat="of" derivedContent="Section 11"/>.</t>
      <t indent="0" pn="section-9-2">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 <xref target="OSPFFLEXALGEXLTLV" format="default" sectionFormat="of" derivedContent="Section 8"/>.</t>
      <t indent="0" pn="section-9-3">IANA has assigned Type value of 11 for the OSPF Flexible Algorithm Include-Any 
        Reverse Admin Group Sub-TLV.</t>
      <t indent="0" pn="section-9-4">The OSPF Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV <bcp14>MUST NOT</bcp14> appear more than once in an OSPF FAD TLV. If it appears more than
        once, the OSPF FAD TLV <bcp14>MUST</bcp14> be ignored by the receiver.</t>
    </section>
    <section anchor="OSPFFLEXALGINCALLTLV" numbered="true" toc="include" removeInRFC="false" pn="section-10">
      <name slugifiedName="name-ospf-flexible-algorithm-incl">OSPF Flexible Algorithm Include-All Reverse Admin Group Sub-TLV</name>
      <t indent="0" pn="section-10-1">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 <xref target="FLEXALGPATHCALC" format="default" sectionFormat="of" derivedContent="Section 11"/>.</t>
      <t indent="0" pn="section-10-2">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 <xref target="OSPFFLEXALGEXLTLV" format="default" sectionFormat="of" derivedContent="Section 8"/>.</t>
      <t indent="0" pn="section-10-3">IANA has assigned Type value of 12 for the OSPF Flexible Algorithm Include-All Reverse 
        Admin Group Sub-TLV.</t>
      <t indent="0" pn="section-10-4">The OSPF Flexible Algorithm Include-All Reverse Admin Group Sub-TLV <bcp14>MUST NOT</bcp14> appear more than once in an OSPF FAD TLV. If it appears more than
        once, the OSPF FAD TLV <bcp14>MUST</bcp14> be ignored by the receiver.</t>
    </section>
    <section anchor="FLEXALGPATHCALC" numbered="true" toc="include" removeInRFC="false" pn="section-11">
      <name slugifiedName="name-calculation-of-flexible-alg">Calculation of Flexible Algorithm Paths</name>
      <t indent="0" pn="section-11-1">The following procedures augment the rules defined in  
       <xref target="RFC9350" section="13" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9350#section-13" derivedContent="RFC9350"/> by introducing additional constraints based on 
       Administrative Groups (AGs) associated with the reverse direction of a link. 
      </t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-11-2">
        <li pn="section-11-2.1">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 link <bcp14>MUST</bcp14> be pruned from the
        computation.</li>
        <li pn="section-11-2.2">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 link <bcp14>MUST</bcp14> be
        pruned from the computation.</li>
        <li pn="section-11-2.3">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 link <bcp14>MUST</bcp14>
        be pruned from the computation.</li>
      </ul>
      <t indent="0" pn="section-11-3">Please see rules 8, 9, and 10 in <xref target="PATHCOMPREGISTRY" format="default" sectionFormat="of" derivedContent="Section 12.3"/> for these added 
        rules.</t>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-12">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section anchor="SUBTLVREGISTRY" numbered="true" toc="include" removeInRFC="false" pn="section-12.1">
        <name slugifiedName="name-sub-sub-tlvs-for-flexible-a">Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV</name>
        <t indent="0" pn="section-12.1-1">IANA has registered the following in the 
          "IS-IS Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV" registry 
          under the "IS-IS TLV Codepoints" registry group:
        </t>
        <dl newline="false" spacing="compact" indent="3" pn="section-12.1-2">
          <dt pn="section-12.1-2.1">Type:</dt>
          <dd pn="section-12.1-2.2">10</dd>
          <dt pn="section-12.1-2.3">Description:</dt>
          <dd pn="section-12.1-2.4">Flexible Algorithm Exclude Reverse Admin Group</dd>
          <dt pn="section-12.1-2.5">MP:</dt>
          <dd pn="section-12.1-2.6">n</dd>
          <dt pn="section-12.1-2.7">Reference:</dt>
          <dd pn="section-12.1-2.8">RFC 9917, <xref target="ISISFLEXALGEXLTLV" format="default" sectionFormat="of" derivedContent="Section 5"/></dd>
        </dl>
        <dl newline="false" spacing="compact" indent="3" pn="section-12.1-3">
          <dt pn="section-12.1-3.1">Type:</dt>
          <dd pn="section-12.1-3.2">11</dd>
          <dt pn="section-12.1-3.3">Description:</dt>
          <dd pn="section-12.1-3.4">Flexible Algorithm Include-Any Reverse Admin Group</dd>
          <dt pn="section-12.1-3.5">MP:</dt>
          <dd pn="section-12.1-3.6">n</dd>
          <dt pn="section-12.1-3.7">Reference:</dt>
          <dd pn="section-12.1-3.8">RFC 9917, <xref target="ISISFLEXALGINCANYTLV" format="default" sectionFormat="of" derivedContent="Section 6"/></dd>
        </dl>
        <dl newline="false" spacing="compact" indent="3" pn="section-12.1-4">
          <dt pn="section-12.1-4.1">Type:</dt>
          <dd pn="section-12.1-4.2">12</dd>
          <dt pn="section-12.1-4.3">Description:</dt>
          <dd pn="section-12.1-4.4">Flexible Algorithm Include-All Reverse Admin Group</dd>
          <dt pn="section-12.1-4.5">MP:</dt>
          <dd pn="section-12.1-4.6">n</dd>
          <dt pn="section-12.1-4.7">Reference:</dt>
          <dd pn="section-12.1-4.8">RFC 9917, <xref target="ISISFLEXALGINCALLTLV" format="default" sectionFormat="of" derivedContent="Section 7"/></dd>
        </dl>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-12.2">
        <name slugifiedName="name-ospf-flexible-algorithm-def">OSPF Flexible Algorithm Definition TLV Sub-TLV Registry</name>
        <t indent="0" pn="section-12.2-1">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:
        </t>
        <dl newline="false" spacing="compact" indent="3" pn="section-12.2-2">
          <dt pn="section-12.2-2.1">Type:</dt>
          <dd pn="section-12.2-2.2">10</dd>
          <dt pn="section-12.2-2.3">Description:</dt>
          <dd pn="section-12.2-2.4">Flexible Algorithm Exclude Reverse Admin Group</dd>
          <dt pn="section-12.2-2.5">Reference:</dt>
          <dd pn="section-12.2-2.6">RFC 9917, <xref target="OSPFFLEXALGEXLTLV" format="default" sectionFormat="of" derivedContent="Section 8"/></dd>
        </dl>
        <dl newline="false" spacing="compact" indent="3" pn="section-12.2-3">
          <dt pn="section-12.2-3.1">Type:</dt>
          <dd pn="section-12.2-3.2">11</dd>
          <dt pn="section-12.2-3.3">Description:</dt>
          <dd pn="section-12.2-3.4">Flexible Algorithm Include-Any Reverse Admin Group</dd>
          <dt pn="section-12.2-3.5">Reference:</dt>
          <dd pn="section-12.2-3.6">RFC 9917, <xref target="OSPFFLEXALGINCANYTLV" format="default" sectionFormat="of" derivedContent="Section 9"/></dd>
        </dl>
        <dl newline="false" spacing="compact" indent="3" pn="section-12.2-4">
          <dt pn="section-12.2-4.1">Type:</dt>
          <dd pn="section-12.2-4.2">12</dd>
          <dt pn="section-12.2-4.3">Description:</dt>
          <dd pn="section-12.2-4.4">Flexible Algorithm Include-All Reverse Admin Group</dd>
          <dt pn="section-12.2-4.5">Reference:</dt>
          <dd pn="section-12.2-4.6">RFC 9917, <xref target="OSPFFLEXALGINCALLTLV" format="default" sectionFormat="of" derivedContent="Section 10"/></dd>
        </dl>
      </section>
      <section anchor="PATHCOMPREGISTRY" numbered="true" toc="include" removeInRFC="false" pn="section-12.3">
        <name slugifiedName="name-igp-flex-algorithm-path-com">IGP Flex-Algorithm Path Computation Rules Registry</name>
        <t indent="0" pn="section-12.3-1">IANA has created a new registry called "IGP Flex-Algorithm Path Computation 
          Rules" within the "Interior Gateway Protocol (IGP) Parameters" 
          registry group. The registration procedure for the new registry is 
          Expert Review <xref target="RFC8126" format="default" sectionFormat="of" derivedContent="RFC8126"/>. <xref target="NEW_REG" format="default" sectionFormat="of" derivedContent="Section 12.3.1"/> provides guidance for designated experts.</t>
        <t indent="0" pn="section-12.3-2">The "IGP Flex-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 indent="0" pn="section-12.3-3">There is no upper bound on the number of rules that the registry supports.</t>
        <t indent="0" pn="section-12.3-4">In <xref target="flex-algo-rules" format="default" sectionFormat="of" derivedContent="Table 1"/>, "FAEMB" means "Flex-Algorithm Exclude Minimum Bandwidth",
   and "FAEMD" means "Flex-Algorithm Exclude Maximum Delay".</t>
        <table align="center" anchor="flex-algo-rules" pn="table-1">
          <name slugifiedName="name-igp-flex-algorithm-path-cal">IGP Flex-Algorithm Path Calculation Rules</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Sequence Number</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">1</td>
              <td align="left" colspan="1" rowspan="1">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 link <bcp14>MUST</bcp14> be pruned from the computation.</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9350" section="13" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9350#section-13" derivedContent="RFC9350"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">2</td>
              <td align="left" colspan="1" rowspan="1">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 link <bcp14>MUST</bcp14> 
                be pruned from the computation.</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9350" section="13" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9350#section-13" derivedContent="RFC9350"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">3</td>
              <td align="left" colspan="1" rowspan="1">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 link <bcp14>MUST</bcp14> be pruned from the computation.</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9350" section="13" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9350#section-13" derivedContent="RFC9350"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">4</td>
              <td align="left" colspan="1" rowspan="1">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 link <bcp14>MUST</bcp14> be pruned from the computation.</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9350" section="13" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9350#section-13" derivedContent="RFC9350"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">5</td>
              <td align="left" colspan="1" rowspan="1">If the Flex-Algorithm Definition 
                uses something other than the IGP metric (<xref target="RFC9350" section="5" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9350#section-5" derivedContent="RFC9350"/>), 
                and such metric is not advertised for the particular link in a topology for 
                which the computation is done, such link <bcp14>MUST</bcp14> be pruned from the computation. 
                A metric of value 0 <bcp14>MUST NOT</bcp14> be assumed in such a case.</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9350" section="13" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9350#section-13" derivedContent="RFC9350"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">6</td>
              <td align="left" colspan="1" rowspan="1"> 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 link <bcp14>MUST</bcp14> be pruned from the Flex-Algorithm computation.</td>
              <td align="left" colspan="1" rowspan="1">
                <xref section="6" target="RFC9843" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9843#section-6" derivedContent="RFC9843"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">7</td>
              <td align="left" colspan="1" rowspan="1">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 link <bcp14>MUST</bcp14> be pruned from the Flex-Algorithm computation.</td>
              <td align="left" colspan="1" rowspan="1">
                <xref section="6" target="RFC9843" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9843#section-6" derivedContent="RFC9843"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">8</td>
              <td align="left" colspan="1" rowspan="1">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 link <bcp14>MUST</bcp14> 
                be pruned from the computation.</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="FLEXALGPATHCALC" format="default" sectionFormat="of" derivedContent="Section 11"/> of RFC 9917</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">9</td>
              <td align="left" colspan="1" rowspan="1">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 link <bcp14>MUST</bcp14> be pruned from the computation.</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="FLEXALGPATHCALC" format="default" sectionFormat="of" derivedContent="Section 11"/> of RFC 9917</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">10</td>
              <td align="left" colspan="1" rowspan="1">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 link <bcp14>MUST</bcp14> be pruned from the computation.</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="FLEXALGPATHCALC" format="default" sectionFormat="of" derivedContent="Section 11"/> of RFC 9917</td>
            </tr>
          </tbody>
        </table>
        <section anchor="NEW_REG" numbered="true" toc="include" removeInRFC="false" pn="section-12.3.1">
          <name slugifiedName="name-guidance-for-designated-exp">Guidance for Designated Experts</name>
          <t indent="0" pn="section-12.3.1-1">Since the original Flex-Algorithm specification <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="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" format="default" sectionFormat="of" derivedContent="Section 12.3"/>.</t>
          <t indent="0" pn="section-12.3.1-2">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" pn="section-12.3.1-3">
       <li pn="section-12.3.1-3.1" derivedCounter="1.">
          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 pn="section-12.3.1-3.2" derivedCounter="2.">
          The relative ordering of existing rules <bcp14>MUST NOT</bcp14> be altered. Doing so has 
           the potential to create backwards compatibility issues.
        </li>
            <li pn="section-12.3.1-3.3" derivedCounter="3.">
          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 pn="section-12.3.1-3.4" derivedCounter="4.">
          Merging or repeating of the rules <bcp14>MUST NOT</bcp14> be done.
        </li>
          </ol>
        </section>
      </section>
    </section>
    <section anchor="Security" numbered="true" toc="include" removeInRFC="false" pn="section-13">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-13-1">This document inherits security considerations from <xref target="RFC9350" format="default" sectionFormat="of" derivedContent="RFC9350"/>.</t>
    </section>
  </middle>
  <back>
    <references pn="section-14">
      <name slugifiedName="name-references">References</name>
      <references pn="section-14.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC7308" target="https://www.rfc-editor.org/info/rfc7308" quoteTitle="true" derivedAnchor="RFC7308">
          <front>
            <title>Extended Administrative Groups in MPLS Traffic Engineering (MPLS-TE)</title>
            <author fullname="E. Osborne" initials="E." surname="Osborne"/>
            <date month="July" year="2014"/>
            <abstract>
              <t indent="0">MPLS Traffic Engineering (MPLS-TE) advertises 32 administrative groups (commonly referred to as "colors" or "link colors") using the Administrative Group sub-TLV. This is defined for OSPFv2 (RFC 3630), OSPFv3 (RFC 5329) and IS-IS (RFC 5305).</t>
              <t indent="0">This document adds a sub-TLV to the IGP TE extensions, "Extended Administrative Group". This sub-TLV provides for additional administrative groups (link colors) beyond the current limit of 32.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7308"/>
          <seriesInfo name="DOI" value="10.17487/RFC7308"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9350" target="https://www.rfc-editor.org/info/rfc9350" quoteTitle="true" derivedAnchor="RFC9350">
          <front>
            <title>IGP Flexible Algorithm</title>
            <author fullname="P. Psenak" initials="P." role="editor" surname="Psenak"/>
            <author fullname="S. Hegde" initials="S." surname="Hegde"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="K. Talaulikar" initials="K." surname="Talaulikar"/>
            <author fullname="A. Gulko" initials="A." surname="Gulko"/>
            <date month="February" year="2023"/>
            <abstract>
              <t indent="0">IGP protocols historically compute the best paths over the network based on the IGP metric assigned to the links. Many network deployments use RSVP-TE or Segment Routing - Traffic Engineering (SR-TE) to steer traffic over a path that is computed using different metrics or constraints than the shortest IGP path. This document specifies a solution that allows IGPs themselves to compute constraint-based paths over the network. This document also specifies a way of using Segment Routing (SR) Prefix-SIDs and SRv6 locators to steer packets along the constraint-based paths.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9350"/>
          <seriesInfo name="DOI" value="10.17487/RFC9350"/>
        </reference>
        <reference anchor="RFC9843" target="https://www.rfc-editor.org/info/rfc9843" quoteTitle="true" derivedAnchor="RFC9843">
          <front>
            <title>IGP Flexible Algorithms: Bandwidth, Delay, Metrics, and Constraints</title>
            <author fullname="S. Hegde" initials="S." surname="Hegde"/>
            <author fullname="W. Britto" initials="W." surname="Britto"/>
            <author fullname="R. Shetty" initials="R." surname="Shetty"/>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <author fullname="P. Psenak" initials="P." surname="Psenak"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <date month="September" year="2025"/>
            <abstract>
              <t indent="0">Many networks configure the IGP link metric relative to the link capacity, and high bandwidth traffic gets routed per the link capacity. Flexible Algorithms provide mechanisms to create constraint-based paths in an IGP. This specification documents a generic metric-type and a set of bandwidth-related constraints to be used in Flexible Algorithms.</t>
              <t indent="0">This document updates RFC 9350.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9843"/>
          <seriesInfo name="DOI" value="10.17487/RFC9843"/>
        </reference>
      </references>
      <references pn="section-14.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" quoteTitle="true" derivedAnchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t indent="0">Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t indent="0">To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t indent="0">This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
    </references>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Peter Psenak" initials="P." surname="Psenak">
        <organization showOnFrontPage="true">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 showOnFrontPage="true">Cisco Systems</organization>
        <address>
          <postal>
            <city>Milpitas</city>
            <code>95035</code>
            <region>CA</region>
            <country>United States of America</country>
          </postal>
          <email>jakuhorn@cisco.com</email>
        </address>
      </author>
      <author fullname="Amit Dhamija" initials="A" surname="Dhamija">
        <organization showOnFrontPage="true">Arrcus</organization>
        <address>
          <email>amitd@arrcus.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
