<?xml version="1.0" encoding="US-ASCII"?> version='1.0' encoding='UTF-8'?>

<!-- [rfced] Because this document updates RFC 9350, please
review the errata reported for RFC 9350
(https://www.rfc-editor.org/errata/rfc9350)
and let us know if you confirm our opinion that none of them
are relevant to the content of this document.
-->

<!--[rfced] FYI, we have added RFC 9843 to the list of updated documents
in the header, based on the statement in the abstract.
-->

<!DOCTYPE rfc SYSTEM "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    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>

<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>

<!-- [rfced] Please insert any keywords (beyond those that appear in
the title) for use on https://www.rfc-editor.org/search. -->

<keyword>example</keyword>

<!--[rfced] Because of the abstract's length, we suggest moving some
of its content, particularly the second paragraph, to the Introduction.
As noted in Section 4.3 of RFC 7322:
  Every RFC must have an Abstract that provides a concise and
  comprehensive overview of the purpose and contents of the entire
  document, to give a technically knowledgeable reader a general
  overview of the function of the document....
  A satisfactory Abstract can often be
  constructed in part from material within the Introduction section,
  but an effective Abstract may be shorter, less detailed, and perhaps
  broader in scope than the Introduction.

Please let us know how the text may be updated.
-->

    <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>This extension 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>This document 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>
    <section title="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 <xref target="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) - <xref target="RFC9350"/></t>

     <t> - link target="RFC9350" format="default"/></li>
        <li>link exclusion based on the presence of a specific Shared Risk
        Link Group (SRLG) - <xref target="RFC9350"/></t>

     <t> - link target="RFC9350" format="default"/></li>
        <li>link exclusion based on minimum bandwidth - <xref target="I-D.ietf-lsr-flex-algo-bw-con"/></t>

     <t> - link
        target="RFC9843" format="default"/></li>
        <li>link exclusion based on maximum delay - <xref target="I-D.ietf-lsr-flex-algo-bw-con"/></t>

    </list></t>
        target="RFC9843" format="default"/></li>
      </ul>
<!--[rfced] FYI, in addition to expanding "SPF", the word "path" was removed
here to match usage of "SPF computation" in this document and other RFCs.
Please let us know if you prefer otherwise.

Original: the SPF path computation
Current:  the Shortest Path First (SPF) computation
-->
      <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 the SPF path Shortest Path First (SPF) computation.</t>
      <t>This document updates <xref target="RFC9350"/> target="RFC9350" format="default"/> and <xref target="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 <xref target="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>The numbered="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&nbsp;14 <xref
      target="RFC2119">BCP 14</xref> target="RFC2119"/> <xref target="RFC8174"/>
    when, and only when, they appear in all capitals, as shown here.</t> here.
        </t>
    </section>
    <section title="Use numbered="true" toc="default">
      <name>Use Case Example"> Example</name>
      <t>The Flexible Algorithm definition 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"/>. 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 toward verticies vertices 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 like
      CRC
      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>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 title="Deployment Consideration">

      <t>Threshold based numbered="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 path
      re-calculation.</t>
      recalculation.</t>
      <t>One possible approach is to use two different thresholds when setting and un-setting 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
      un-setting
      unsetting the Extended Administrative Group on the link.</t>

<!--[rfced] To avoid the repetition of "Usage" and "use" to improve
readability, may we update "Usage" to "Application"?

Original:
  Usage 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.

Perhaps:
   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>Many implementations provide a throttling mechanism that limits the rate at which
      the LSP Label Switched Path (LSP) in case of ISIS, IS-IS, or LSA 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. Usage 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-IS numbered="true" toc="default">
      <name>IS-IS Flexible Algorithm Exclude Reverse Admin Group Sub-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 <xref target="FLEXALGPATHCALC"/>. target="FLEXALGPATHCALC" format="default"/>.
      </t>
      <t>The IS-IS FAERAG Sub-TLV is a Sub-TLV sub-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 (1 octet): 10</t>

            <t>Length octet):</dt><dd>10</dd>
        <dt>Length (1 octet): Variable, octet):</dt><dd>Variable, dependent on the size of the
        Extended Admin Group. The length MUST <bcp14>MUST</bcp14> be a multiple of
        4 octets. If the length is not a multiple of 4 octets, the entire Sub-TLV MUST
        sub-TLV <bcp14>MUST</bcp14> be ignored by the receiver.</t>

            <t>Extended receiver.</dd>
        <dt>Extended Administrative Group: Extended Group:</dt><dd>Extended Administrative
        Group as defined in <xref target="RFC7308"/>.</t>
          </list></t> target="RFC7308" format="default"/>.</dd>
      </dl>
      <t>The IS-IS FAERAG Sub-TLV MUST 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-TLV MUST <bcp14>MUST</bcp14>
        be ignored by the receiver.</t>
      <t>The IS-IS FAERAG Sub-TLV MUST NOT <bcp14>MUST NOT</bcp14> appear more than once in the set of FAD
        sub-TLVs
        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 lowest-numbered
        LSP from a given IS MUST <bcp14>MUST</bcp14> be used and any other occurrences MUST <bcp14>MUST</bcp14> be ignored
        by the receiver.</t>
    </section>
    <section anchor="ISISFLEXALGINCANYTLV"
               title="IS-IS numbered="true" toc="default">
      <name>IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-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 <xref target="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
        <xref target="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-TLV MUST 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-TLV MUST <bcp14>MUST</bcp14> be ignored by the receiver.</t>
      <t>The IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV MUST NOT <bcp14>MUST NOT</bcp14>
        appear more than once in the set of FAD sub-TLVs 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 lowest-numbered
        LSP from a given IS MUST <bcp14>MUST</bcp14> be used and any other occurrences MUST <bcp14>MUST</bcp14> be ignored
        by the receiver.</t>
    </section>
    <section anchor="ISISFLEXALGINCALLTLV"
               title="IS-IS numbered="true" toc="default">
      <name>IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-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 <xref target="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
         <xref target="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-TLV MUST 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-TLV MUST <bcp14>MUST</bcp14> be ignored by the receiver.</t>
      <t>The IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV MUST NOT <bcp14>MUST NOT</bcp14>
        appear more than once in the set of FAD sub-TLVs 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 lowest-numbered
        LSP from a given IS MUST <bcp14>MUST</bcp14> be used and any other occurrences MUST <bcp14>MUST</bcp14> be ignored
        by the receiver.</t>
    </section>
    <section anchor="OSPFFLEXALGEXLTLV"
               title="OSPF numbered="true" toc="default">
      <name>OSPF Flexible Algorithm Exclude Reverse Admin Group Sub-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 <xref target="FLEXALGPATHCALC"/>. target="FLEXALGPATHCALC" format="default"/>.
      </t>
      <t>The OSPF FAERAG Sub-TLV is a Sub-TLV sub-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 (2 octets): 10</t>

            <t>Length octets):</dt><dd>10</dd>
        <dt>Length (2 octets): Variable, octets):</dt><dd>Variable, dependent on the size of the
        Extended Admin Group. The length MUST <bcp14>MUST</bcp14> be a multiple of
        4 octets. If the length is not a multiple of 4 octets, the entire Sub-TLV MUST
        sub-TLV <bcp14>MUST</bcp14> be ignored by the receiver.</t>

            <t>Extended receiver.</dd>
        <dt>Extended Administrative Group: Extended Group:</dt><dd>Extended Administrative
        Group as defined in <xref target="RFC7308"/>.</t>
          </list></t> target="RFC7308" format="default"/>.</dd>
      </dl>
      <t>The OSPF FAERAG Sub-TLV MUST NOT <bcp14>MUST NOT</bcp14> appear more than once in an OSPF
        FAD TLV. If it appears more than once, the OSPF FAD TLV MUST <bcp14>MUST</bcp14> be
        ignored by the receiver.</t>
    </section>
    <section anchor="OSPFFLEXALGINCANYTLV"
               title="OSPF numbered="true" toc="default">
      <name>OSPF Flexible Algorithm Include-Any Reverse Admin Group Sub-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 <xref target="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 <xref
        target="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-TLV MUST
        NOT <bcp14>MUST
        NOT</bcp14> appear more than once in an OSPF FAD TLV. If it appears more than
        once, the OSPF FAD TLV MUST <bcp14>MUST</bcp14> be ignored by the receiver.</t>
    </section>
    <section anchor="OSPFFLEXALGINCALLTLV"
               title="OSPF numbered="true" toc="default">
      <name>OSPF Flexible Algorithm Include-All Reverse Admin Group Sub-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 <xref target="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 <xref
        target="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-TLV MUST
        NOT <bcp14>MUST
        NOT</bcp14> appear more than once in an OSPF FAD TLV. If it appears more than
        once, the OSPF FAD TLV MUST <bcp14>MUST</bcp14> be ignored by the receiver.</t>
    </section>
    <section anchor="FLEXALGPATHCALC"
             title="Calculation numbered="true" toc="default">
      <name>Calculation of Flexible Algorithm Paths"> Paths</name>
      <t>The following procedures augment the rules defined in Section 13 of
       <xref target="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>

<!--[rfced] As this text is repeated in Table 1, may we remove it from
Section 11 to avoid redundancy?

Original:
      Check if any exclude reverse Admin Group rule is part of the Flex-Algorithm 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 MUST be pruned from the computation.</t>

          <t>Check
      computation.

      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 MUST be
      pruned from the computation.</t>

          <t>Check computation.

      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
      MUST be pruned from the computation.</t>

          </list></t> computation.
-->

      <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 link <bcp14>MUST</bcp14> be pruned from the
        computation.</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 link <bcp14>MUST</bcp14> be
        pruned from the computation.</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 link <bcp14>MUST</bcp14>
        be pruned from the computation.</li>
      </ul>
      <t>Please see rules 8, 9, and 10 in <xref target="PATHCOMPREGISTRY"/> target="PATHCOMPREGISTRY" format="default"/> for these added
        rules.</t>
    </section>
<!--[rfced] May the content of Section 12 be moved under Section 13.3 or
become a subsection?  Rationale: Section 12 provides guidance to designated
experts when evaluating new registrations in the registry described in
Section 13.3.

Original:
   12. IGP Flex-Algorithm Path Computation Rules Registry
   13. IANA Considerations
     13.1.  Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV
     13.2.  OSPF Flexible Algorithm Definition TLV Sub-TLV Registry
     13.3.  IGP Flex-Algorithm Path Computation Rules Registry

Perhaps:
   12. IANA Considerations
     12.1.  Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV
     12.2.  OSPF Flexible Algorithm Definition TLV Sub-TLV Registry
     12.3.  IGP Flex-Algorithm Path Computation Rules Registry
        12.3.1.  Guidance for Designated Experts

[where 12.3.1 contains the original section 12]

If so, the two mentions of Section 12 would be updated accordingly:

Original: Section 12 provides guidance for designated experts.
Perhaps:  Section 12.3.1 provides guidance for designated experts.

Original: (refer to Section 12)
Perhaps:  (refer to Section 12.3.1)
-->
    <section anchor="NEW_REG" title="IGP numbered="true" toc="default">
      <name>IGP Flex-Algorithm Path Computation Rules Registry"> Registry</name>
      <t>Since the original Flex-Algorithm specification <xref target="RFC9350"/>, 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"/>.</t> 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" indent="adaptive" start="1">
       <li derivedCounter="1.">
        <t>When type="1">
       <li>
          When a new constraint is defined, the rule associated with that constraint
       MAY
       <bcp14>MAY</bcp14> be inserted at any position. Backwards compatibility is guaranteed because
       nodes which that don't support the new constraint will not participate in an
       algorithm where the FAD specifies a constraint they don't support.</t> support.
        </li>

       <li derivedCounter="2.">
           <t>The
        <li>
          The relative ordering of existing rules MUST NOT <bcp14>MUST NOT</bcp14> be altered. Doing so has
           the potential to create backwards compatibility issues.</t> issues.
        </li>

       <li derivedCounter="3.">
           <t>Deletion
        <li>
          Deletion of the rules MUST NOT <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.</t> necessary.
        </li>

       <li derivedCounter="4.">
           <t>Merging
        <li>
          Merging or repeating of the rules MUST NOT <bcp14>MUST NOT</bcp14> be done.</t> done.
        </li>
      </ol>
    </section>
    <section anchor="IANA" title="IANA Considerations"> numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="SUBTLVREGISTRY"
                 title="Sub-Sub-TLVs numbered="true" toc="default">
        <name>Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV">

          <t>This document makes Sub-TLV</name>
        <t>IANA has registered the following registration in 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 Admin Group</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: Flexible Group</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 Admin Group</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: Flexible Group</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 Admin Group</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>
      <section title="OSPF numbered="true" toc="default">
        <name>OSPF Flexible Algorithm Definition TLV Sub-TLV Registry"> 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 Admin Group</t>

              <t>Reference: This document (<xref
              target="OSPFFLEXALGEXLTLV"/>).</t>
            </list> <list style="hanging">
              <t>Type: 11</t>

              <t>Description: Flexible Group</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 Admin Group</t>

              <t>Reference: This document (<xref
              target="OSPFFLEXALGINCANYTLV"/>).</t>
            </list> <list style="hanging">
              <t>Type: 12</t>

              <t>Description: Flexible Group</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 Admin Group</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="IGP numbered="true" toc="default">
        <name>IGP Flex-Algorithm Path Computation Rules Registry">

          <t>This document creates Registry</name>
        <t>IANA has created a new registry called "IGP Flex-Algorithm Path Computation
          Rules 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"/>. <xref target="NEW_REG"/> target="NEW_REG" format="default"/> provides guidance for Designated Experts.</t> designated experts.</t>
        <t>The "IGP Flex-Algo 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>There is no upper bound on the number of rules that the registry supports.</t>
<!--[rfced] For the sake of the reader, would you like to add a sentence
to explain "FAEMB" and "FAEMB", which are used in the descriptions within
Table 1? It could appear directly before table, perhaps:

   In Table 1, "FAEMB" means "Flex-Algorithm Exclude Minimum Bandwidth",
   and "FAEMD" means "Flex-Algorithm Exclude Maximum Delay".
-->
        <table align="center" pn="table-6">
            <name slugifiedName="name-is-is-sub-sub-tlvs-for-flexi">IGP Flex-algo align="center">
          <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 link MUST <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">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 link MUST <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 link MUST <bcp14>MUST</bcp14> be pruned from the computation</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 link MUST <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 link MUST <bcp14>MUST</bcp14> be pruned from the computation.
                A metric of value 0 MUST 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 link MUST <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">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 link MUST <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 link MUST <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 link MUST <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">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 link MUST <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>
    </section>
    <section anchor="Security" title="Security Considerations"> numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>This document inherits security considerations from <xref
      target="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>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"/>

<!-- [RFC9843]
draft-ietf-lsr-flex-algo-bw-con-22
companion doc RFC YYY1
Published 09/12/25
-->
      <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>
<!--[rfced] The Acknowledgments section is currently populated with "TBD".
Please let us know if/what text should be added here.
-->
    <section anchor="Acknowledgments" numbered="false" toc="default">
      <name>Acknowledgments</name>
      <t>TBD</t>
    </section>

<!-- [rfced] FYI - We have added expansions for the following abbreviations
per Section 3.6 of RFC 7322 ("RFC Style Guide"). Please review each
expansion in the document carefully to ensure correctness.

 Cyclic Redundancy Check (CRC)
 Link State Advertisement (LSA)
 Label Switched Path (LSP)
 Shortest Path First (SPF)
-->

<!-- [rfced] Please review the "Inclusive Language" portion of the online
Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language>
and let us know if any changes are needed.  Updates of this nature typically
result in more precise language, which is helpful for readers.

Note that our script did not flag any words in particular, but this should
still be reviewed as a best practice.
-->

  </back>
</rfc>