<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ietf-lsr-flood-reduction-arch-01" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="3" consensus="true" symRefs="true" sortRefs="true" version="3">
  <front>
    <title abbrev="IGP Flooding Reduction Algo Framework">
      IGP Flooding Reduction Algorithms Framework</title>
    <author fullname="Tony Przygienda" initials="T." surname="Przygienda">
      <organization>HPE</organization>
      <address>
        <postal>
          <street>1701 East Mossy Oaks Road
          </street>
          <city>Spring</city>
          <region>TX
          </region>
          <code>77389
          </code>
          <country>USA
          </country>
        </postal>
        <phone/>
        <email>antoni.przygienda@hpe.com
        </email>
        <uri/>
      </address>
    </author>
    <author fullname="Shraddha Hegde" initials="S." surname="Hegde">
      <organization>HPE</organization>
      <address>
        <postal>
          <street>1701 East Mossy Oaks Road
          </street>
          <city>Spring</city>
          <region>TX
          </region>
          <code>77389
          </code>
          <country>USA
          </country>
        </postal>
        <phone/>
        <email>shraddha.hegde@hpe.com
        </email>
        <uri/>
      </address>
    </author>
    <author fullname="Jordan Head" initials="J." surname="Head">
      <organization>HPE</organization>
      <address>
        <postal>
          <street>1701 East Mossy Oaks Road
          </street>
          <city>Spring</city>
          <region>TX
          </region>
          <code>77389
          </code>
          <country>USA
          </country>
        </postal>
        <phone/>
        <email>jordan.head@hpe.com
        </email>
        <uri/>
      </address>
    </author>
    <author fullname="Acee Lindem" initials="A." surname="Lindem">
      <organization>Arrcus, Inc</organization>
      <address>
        <postal>
          <street>301 Midenhall Way </street>
          <city>Cary</city>
          <region>NC</region>
          <code>27513</code>
          <country>USA</country>
        </postal>
        <phone/>
        <email>acee.ietf@gmail.com</email>
        <uri/>
      </address>
    </author>
    <date/>
    <abstract>
      <t>
          This document introduces a framework making it possible to deploy multiple flood
          reduction algorithms within the same IGP domain in an interoperable fashion.
      </t>
    </abstract>
  </front>
  <middle>
    <section title="Introduction">
      <t>
              Scenarios exist where multiple distributed (or centralized) flood reduction
              algorithms may be deployed simultaneously within an IGP domain. These scenarios
              necessitate certain agreed on cooperative behaviors between the involved
              algorithms to ensure the correctness of the overall solution. This is true
              in both permanent and transient (i.e., migration) deployment cases.
              Fortunately, existing graph theory concepts allow to provide guidance
              toward the design of algorithms
              with the necessary properties to ensure their interoperable coexistence.
      </t>
      <t>
              This document
              presents the necessary requirements for the involved algorithms
              and the details of a framework for their interoperable deployment.
              Although running multiple algorithms simultaneously may not be a preferred operational
              choice,
              it is necessary if the migration from one
              algorithm to another with minimal network disruption is a priority.
              A migration itself may be caused by the discovery of defects in the deployed algorithms
              or the deployment of new algorithms that offer improvements.
      </t>
      <t>
              Dealing with interoperability or lack thereof
              between this framework and other published frameworks such as e.g.
              <xref target="RFC9667"/> is explicitly outside the scope of this document.
      </t>
    </section>
    <section title="Flooding Pruner Framework">
      <section title="Definitions and Axioms">
        <t>
            This section outlines a framework that allows the operation of multiple different
            flood reduction algorithms (called
            <em>flooding pruners</em> or <em>pruners</em> from here on) in an interoperable fashion.
        </t>
        <t>
            An important observation upfront, which will become clear later in this section, is
            that full, non-optimized
            flooding presents a special case of a
            pruner itself. Normal flooding includes all adjacencies without any pruning,
            and hence we name it the <em>non-pruner</em>
            or <em>zero</em> for short.
        </t>
        <section title="Maximum of One Flooding Pruner on a Node">
          <t>
            This framework
            permits the use of at most one pruner on each node. It allows to change
            a specific pruner at any time on any subset of nodes in the network while limiting the impact
            to the node itself and possibly the re-convergence of a set of nodes within its connected component.
          </t>
        </section>
        <section title="Connected Component" anchor="cc">
          <t>
              A <em>connected component</em> (or component for short) is defined as a subset of all nodes
              in the network
            running the same pruner, e.g. A
            (such nodes are denoted by the set notation of A|) where each of the nodes has to be connected to all  other nodes by a path
            that traverses only nodes that run A.
            Observe that there well may be in the network multiple components that
            are not connected, but that run the same pruner algorithm. We denote in such case a component for pruner A as A|, and if
            two <em>disjoint</em> components running the same algorithm A are present in the network, we denote such second set
              as A|' and by extension we use A|'' notation for further such sets.
          </t>
          <t>
                Non-pruners also build components denoted as Z| and its primes.
          </t>
          <t>
                Another way to visualize components is to consider a network running multiple pruners as
                 "islands running pruning algorithms" that are connected to each other by components
                running non-pruners (i.e. using normal flooding).
          </t>
        </section>
        <section title="Flooding Connected Dominating Sets">
          <t>
            A pruner may choose within its component a subset of links to flood while making sure that the component
            remains connected. In other words, after suppressing flooding on some links within the component
              there must still exist paths consisting of the remaining links that connect each pair of nodes
            in the component. We use for such remaining links the term
              <em>flooding connected dominating set</em> or CDS for short (more precisely,
             a not necessarily loop-free edge dominating set).
              Such a CDS is colloquially often called <em>flooding
              topology</em> in context of flood reduction algorithms. A simple spanning
            tree is an easily visualized special case of a CDS. We denote such
            a CDS for a component A| as A|*.
            A|* is often not unique for a component and many different sets of links can
            be a CDS. Nor is it required that a CDS has to be loop-free since there may be many different
            paths on the CDS between two nodes in a component. Therefore, it is possible in a most extreme
              case that each LSP
            is flooded on a different CDS.
          </t>
          <t>
              To summarize the section above in simple terms,
            a pruner must choose at least one set of flooding links that guarantees that
            all information
            can reach all the
            nodes in the component.
          </t>
        </section>
        <section title="Rules for Flooding Pruners" anchor="rules">
          <t>
            Any flood reduction algorithm expecting to interoperate with other algorithms within this framework
              but without
           having to understand their behavior MUST adhere to the
            following rules. Otherwise, the algorithm cannot be expected to accommodate other algorithms in the network
              at the same time or is in other words
            a ship in the night.
          </t>
          <ol spacing="normal">
                <li>
                    Each node of a pruner (except the non-pruner) MUST advertise in its flooded
                    node information the currently active
                    pruner. It MUST
                    also understand such information as advertised by other nodes in the network. A node running
                    a pruner MUST
                    NOT
                    assume implicitly  that a node is a <em>non-pruner</em> or supports or runs the same algorithm.
                    However, any pruner
                    can safely assume that any node that does
                    not advertise any running pruner in its node information
                    MUST be a non-pruner. Observe that a pruner does not need to understand
                    how the algorithm of another pruner operates (or even whether
                    it is centralized, centrally
                    signalled or fully distributed). The only requirement is that every pruner uses
                    the same signaling information provided in this framework
                    which indicates the pruner currently running.
                </li>
            <li>
                    A pruner  MUST NOT prune links in components other  than the one
                    it participates in or assume flooding behavior
                    on links in other components
                    (except in the case of a <em>non-pruner</em> where the flooding is well understood). In other words,
                    each pruner is allowed to prune some links
                    from flooding, but only strictly  within its own component.
                </li>
            <li>
                    A flooding pruner A
                    MUST also include in its flooding CDS all links to adjacent components
                    running a non <em>non-pruner</em> different from A. A node running pruner P that is different
                    from the <em>non-pruner</em> SHOULD include in
                    its flooding CDS all links to non-pruners. It MAY use the known behavior the <em>non-pruner</em> for
                    further optimizations. Nevertheless, such optimizations MUST NOT assume that there is
                    just a single Z| in the network. This is sufficient (but strictly
                    speaking, more than necessary) to
                    guarantee that the overall set of flooding CDSes within each component creates
                    an overall flooding CDS over the whole network. In other words, the resulting set of links
                    that still flood connects all nodes in the network.
                </li>
          </ol>
          <t>
                    This document does not consider other approaches
                    that guarantee a pruner property on e.g. a clique, i.e. a subgraph where every vertex
                    is neighbored to all other vertices in the clique. It assumes that such "ship in the night
                    components" can be considered non-pruners due to their implicit guarantee of
                    correct flooding to nodes
                    that are part of their component where connected to other components.
          </t>
        </section>
      </section>
      <section title="Beneficial Properties of the Flooding Pruner Framework">
        <t>
            Nodes are free to use any kind of pruner to calculate optimized
            flooding. Any mode of computation, distributed or centralized, will work fine as long as it adheres to
            <xref target="rules"/>. Per <xref target="cc"/> a node will become part of one and exactly
            one component after choosing a pruner.

        </t>
        <t>
            The framework allows but does not assume any centralized instance or election in a
            component. Computation and communication within each component is completely independent of other
            components.
        </t>
        <!--
        <t>
            With the exception of a node having to advertise which pruner is active,
            no configuration is necessary
            unless the algorithm itself requires it.
        </t>
          -->

        <t>
            A node is free to choose a different pruner or a <em>non-pruner</em> at any point in time independent
            of all other nodes. It may end up in another component or become a <em>non-pruner</em> with the maximum
            impact consisting of re-computation within two components that see such node leave or join.
            For a distributed algorithm, it is likely that only the adjoining nodes have to
            adjust their pruning decisions.
            That is to say, the framework allows for node-by-node deployment or migration of pruners
            without networkwide recomputation of optimized flooding.
            This is obviously critical to the stability of large networks
            that may not converge within reasonable time if the whole network were to revert to
            non-pruning due to networkwide impact. However, such behavior cannot be excluded, for example, in case of
            election problems due to misconfiguration or topological separation of nodes if the whole
            network runs a single pruner relying on centralized election.
            The network itself cannot ensure correctness of a pruner or
            prevent a pruner having a blast radius of the whole component depending
            upon the algorithm and further signaling used.
        </t>
        <t>
            Although the framework provides extreme operational flexibility when deploying pruners,
            the most likely scenarios are a node-by-node deployment of a single pruner in addition to a non-pruner
            or, if the necessity arises, a node-by-node migration to another pruner.
        </t>
      </section>
      <section title="Example">
        <figure anchor="example1">
          <name>Network of Mixed Pruners</name>
          <artset>
            <artwork align="center" name="" type="svg" originalSrc="example_plain.post.svg"><svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" width="117.87099mm" height="82.853546mm" viewBox="0 0 117.87099 82.853546" version="1.1" id="svg5">
                <defs id="defs2">
    </defs>
                <g id="layer1" transform="translate(-8.9828894,-6.6434949)">
                  <ellipse id="path111" cx="19.737341" cy="18.00219" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-36" ry="2.8196204" rx="3.1088121" cy="32.587246" cx="19.1752" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-3" cx="37.45034" cy="13.736612" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-3-2" cx="72.876335" cy="71.864174" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-3-2-5" cx="94.981461" cy="72.80069" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-3-2-56" cx="83.490501" cy="80.923004" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-3-2-3" cx="69.950912" cy="83.516571" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-3-9" cx="93.553551" cy="58.995136" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-3-1" cx="53.0667" cy="82.41967" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-6" cx="51.909931" cy="25.448881" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <ellipse id="path111-7" cx="40.920647" cy="33.546246" rx="3.1088121" ry="2.8196204" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <rect id="rect227" width="5.7838364" height="5.4946446" x="73.165535" y="13.736611" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <rect id="rect229" width="6.2176242" height="5.9284325" x="83.431839" y="37.739529" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <rect id="rect229-2" width="6.2176242" height="5.9284325" x="90.912918" y="10.961498" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <rect id="rect229-9" width="6.2176242" height="5.9284325" x="111.09474" y="14.591333" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <rect id="rect231" width="7.0851998" height="6.9406037" x="100.92794" y="23.424538" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <path id="path285" d="m 42.944985,72.587144 -3.252018,1.294782 -2.747322,-2.168939 0.504695,-3.463721 3.252017,-1.294781 2.747323,2.168939 z" transform="translate(-10.844693,-18.652872)" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <path id="path285-5" d="m 17.929893,87.335923 -3.252017,1.294782 -2.747323,-2.168939 0.504695,-3.46372 3.252017,-1.294782 2.747323,2.168939 z" transform="translate(4.1932817,-15.471759)" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <path id="path285-5-7" d="m 17.929893,87.335923 -3.252017,1.294782 -2.747323,-2.168939 0.504695,-3.46372 3.252017,-1.294782 2.747323,2.168939 z" transform="translate(-0.1099928,-28.907841)" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <path id="path285-3" d="m 44.390942,70.707399 -3.252017,1.294781 -2.747323,-2.168939 0.504695,-3.46372 3.252017,-1.294782 2.747323,2.168939 z" transform="translate(1.5905557,-3.7594905)" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <path id="path285-56" d="m 29.786757,56.536996 -3.252017,1.294782 -2.747323,-2.168939 0.504695,-3.463721 3.252017,-1.294781 2.747323,2.168939 z" transform="translate(32.389485,-10.84469)" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <path id="path285-56-2" d="m 81.552094,57.693765 -3.252017,1.294781 -2.747323,-2.168938 0.504695,-3.463721 3.252017,-1.294781 2.747323,2.168938 z" transform="translate(35.281403,-10.121709)" fill="white" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165"/>
                  <path d="M 22.154166,19.775627 38.503821,31.772808" id="path588" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 43.333496,31.768358 6.163586,-4.541589" id="path590" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 39.769025,15.614747 9.822221,7.955999" id="path592" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.265" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 22.742015,17.278615 34.445666,14.460186" id="path594" fill="black" fill-opacity="1" fill-rule="evenodd" stroke="black" stroke-width="0.265" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 54.786988,24.380752 73.165535,17.55758" id="path596" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 92.532498,56.331977 87.677128,43.667961" id="path598" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 77.246592,19.231256 8.011041,18.508273" id="path600" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 78.949371,17.543568 21.978569,8.053219" id="path602" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 100.92794,29.623213 89.649463,38.309458" id="path604" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 89.649463,41.23412 21.447657,3.659053" id="path606" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 96.064613,57.332884 111.42527,47.164564" id="path608" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 90.990219,60.590496 75.439666,70.268814" id="path610" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 55.747114,80.991421 70.195921,73.292423" id="path612" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 71.647432,69.274226 60.731074,46.267695" id="path614" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 40.791332,62.488803 31.795812,54.0555" id="path618" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 22.534032,69.04445 40.075995,65.429745" id="path620" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 20.86901,67.01187 27.859812,54.448689" id="path622" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 61.027788,40.923468 74.367923,19.231256" id="path643" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 30.986383,49.192707 39.369285,35.98964" id="path645" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 44.722489,67.449179 6.941664,12.454158" id="path647" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 19.086661,8.5311575 c -2.822753,0.8677279 -5.348889,2.6721105 -7.085201,5.0608565 -1.823802,2.509112 -2.7571243,5.609205 -2.8733364,8.708946 -0.1162121,3.099741 0.5580809,6.198888 1.7165704,9.076352 0.458264,1.138238 0.995135,2.251444 1.699838,3.255927 0.704702,1.004483 1.583627,1.900368 2.638039,2.527909 1.25269,0.745548 2.709244,1.088546 4.160558,1.225523 1.451313,0.136976 2.912838,0.07809 4.3706,0.07584 6.563129,-0.01011 13.125121,1.129884 19.665045,0.578384 2.70831,-0.228387 5.420899,-0.756446 7.884885,-1.903563 2.463986,-1.147117 4.675047,-2.951082 5.996321,-5.326232 1.666185,-2.995169 1.783348,-6.712914 0.702586,-9.965477 C 56.881804,18.593062 54.687252,15.786547 52.054527,13.592015 47.558916,9.8446581 41.812504,7.8055518 36.004381,7.0851995 30.34665,6.3834996 24.543252,6.8795162 19.086661,8.5311575 Z" id="path769" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 50.150304,47.082793 c 0.780267,2.309939 2.696883,4.12583 4.910439,5.147987 2.213557,1.022157 4.703508,1.316395 7.140842,1.252836 2.284886,-0.05958 4.600329,-0.434984 6.64221,-1.462101 2.041882,-1.027118 3.79215,-2.764161 4.496094,-4.938722 0.462043,-1.427303 0.45694,-2.991746 0.05096,-4.435995 -0.405984,-1.444249 -1.20422,-2.76754 -2.243496,-3.849475 -2.078551,-2.163869 -5.050646,-3.312369 -8.032788,-3.643332 -1.739159,-0.193015 -3.514174,-0.127866 -5.215896,0.27965 -1.701722,0.407516 -3.329056,1.162994 -4.684438,2.269731 -1.355382,1.106738 -2.431537,2.570339 -3.002217,4.2245 -0.570681,1.654162 -0.621692,3.497109 -0.06171,5.154921 z" id="path773" fill="none" stroke="#000000" stroke-width="0.298223px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 63.043817,14.459591 c -0.573471,1.740083 -0.370165,3.674597 0.308728,5.376321 0.678893,1.701723 1.805499,3.192204 3.066743,4.521121 2.522489,2.657835 5.655524,4.79074 7.613817,7.887855 1.416621,2.24044 2.123535,4.841482 2.949693,7.360182 0.826158,2.518699 1.837447,5.070439 3.70172,6.954814 1.926865,1.947642 4.683961,3.016533 7.423465,2.981372 2.739504,-0.03516 5.433014,-1.149118 7.469914,-2.981372 1.910337,-1.718406 3.21858,-3.98585 4.615263,-6.142603 1.39668,-2.156754 2.98164,-4.303046 5.21726,-5.569668 2.36159,-1.337997 5.17528,-1.544693 7.88359,-1.724806 2.7083,-0.180114 5.52296,-0.394879 7.87736,-1.745495 1.67811,-0.962659 3.02452,-2.473196 3.85043,-4.222665 0.82591,-1.749468 1.13692,-3.728617 0.95555,-5.65472 -0.36273,-3.852206 -2.689,-7.367214 -5.81815,-9.643062 C 116.58192,9.2550886 112.09037,8.1838436 107.67458,7.9251217 103.25878,7.6663998 98.838659,8.1593899 94.421127,8.3865629 92.398626,8.4905707 90.373258,8.5388707 88.348099,8.531158 83.864765,8.5140834 79.381049,8.2226049 74.900681,8.3865629 72.53276,8.4732164 70.125225,8.6975821 67.937488,9.607729 c -1.093868,0.455073 -2.12306,1.081621 -2.98118,1.898487 -0.858119,0.816866 -1.541657,1.828154 -1.912491,2.953375 z" id="path777" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 108.88072,38.607107 c -1.82131,0.874009 -3.51909,2.054275 -4.81472,3.604252 -1.29562,1.549977 -2.1712,3.487568 -2.27048,5.505291 -0.07,1.423387 0.24667,2.8582 0.86696,4.141232 0.62029,1.283032 1.53973,2.414637 2.63873,3.321906 2.19799,1.814538 5.06911,2.698116 7.91739,2.803171 3.84404,0.141782 7.82099,-1.166466 10.48369,-3.94258 1.33135,-1.388057 2.31376,-3.119983 2.75579,-4.991826 0.44203,-1.871843 0.33367,-3.879976 -0.37045,-5.669781 -0.61181,-1.555164 -1.66264,-2.926753 -2.96863,-3.969458 -1.306,-1.042705 -2.86182,-1.759551 -4.49058,-2.133688 -3.25753,-0.748274 -6.73434,-0.114568 -9.7477,1.331481 z" id="path781" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 72.587147,58.561342 c -2.061969,0.206517 -4.147318,0.07952 -6.207599,0.302246 -2.060281,0.222728 -4.17136,0.847841 -5.649266,2.30048 -0.762275,0.749243 -1.320513,1.685489 -1.743633,2.667018 -0.423119,0.981529 -0.717446,2.012761 -1.00999,3.040792 -0.292543,1.028031 -0.585652,2.059528 -1.006505,3.042031 -0.420852,0.982503 -0.975709,1.920483 -1.734517,2.673238 -0.903638,0.89643 -2.062949,1.497431 -3.261148,1.926927 -1.198199,0.429496 -2.44638,0.699232 -3.678026,1.020475 -1.231646,0.321243 -2.461061,0.699701 -3.569276,1.325806 -1.108215,0.626105 -2.096994,1.520844 -2.649777,2.667395 -0.701489,1.454989 -0.630258,3.219885 0.03017,4.693965 0.660429,1.47408 1.867878,2.664557 3.268556,3.469032 1.400678,0.804475 2.988315,1.242387 4.588812,1.460302 1.600498,0.217914 3.221693,0.222922 4.836899,0.209226 9.93886,-0.08428 19.857252,-0.862096 29.786757,-1.301368 2.25794,-0.09989 4.525559,-0.183227 6.749384,-0.5868 2.223825,-0.403574 4.420133,-1.142999 6.26425,-2.449713 2.365551,-1.676195 4.031901,-4.212422 5.025311,-6.936132 0.99341,-2.72371 1.35445,-5.639197 1.4815,-8.535629 0.14419,-3.287113 -0.0178,-6.654927 -1.19558,-9.727202 -0.58886,-1.536137 -1.43158,-2.98367 -2.54716,-4.192782 -1.11558,-1.209113 -2.509265,-2.17488 -4.065438,-2.708548 -2.260572,-0.775232 -4.754774,-0.610311 -7.065632,-0.0011 -2.310859,0.609184 -4.483658,1.641147 -6.670977,2.603855 -3.195414,1.406403 -6.503273,2.688589 -9.977116,3.036513 z" id="path785" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 18.074489,43.523368 c -2.31696,1.28933 -4.212336,3.259779 -5.639241,5.494644 -2.9440065,4.610999 -3.9122305,10.386252 -2.891918,15.760956 0.709656,3.738259 2.404957,7.369053 5.221032,9.927942 1.408038,1.279444 3.082791,2.275422 4.901766,2.832986 1.818975,0.557564 3.781897,0.669652 5.638157,0.252703 1.996562,-0.448464 3.805958,-1.480273 5.576614,-2.50602 1.770656,-1.025747 3.568701,-2.07216 5.557269,-2.554837 2.260853,-0.548768 4.626934,-0.336077 6.949761,-0.466751 1.161414,-0.06534 2.326276,-0.219371 3.42846,-0.591315 1.102183,-0.371943 2.143746,-0.971637 2.924603,-1.833851 0.959437,-1.0594 1.480972,-2.478346 1.559894,-3.905448 0.07892,-1.427101 -0.267139,-2.859523 -0.875784,-4.152735 -1.217288,-2.586426 -3.408995,-4.565851 -5.60037,-6.401407 C 41.725775,52.784463 38.513023,50.3266 35.425997,47.71665 32.904643,45.584952 30.354457,43.288422 27.18403,42.3666 24.166797,41.48932 20.820179,41.995461 18.074489,43.523368 Z" id="path789" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <text xml:space="preserve" x="34.703018" y="25.448877" id="text909" font-size="5.64444px" font-family="sans-serif" stroke-width="0.264583">
                    <tspan id="tspan907" x="34.703018" y="25.448877" stroke-width="0.264583">A|'</tspan>
                  </text>
                  <text xml:space="preserve" x="73.45472" y="65.212761" id="text913" font-size="5.64444px" font-family="sans-serif" stroke-width="0.264583">
                    <tspan id="tspan911" x="73.45472" y="65.212761" stroke-width="0.264583">A|''</tspan>
                  </text>
                  <text xml:space="preserve" x="24.581303" y="73.599312" id="text921" font-size="5.64444px" font-family="sans-serif" stroke-width="0.264583">
                    <tspan id="tspan919" x="24.581303" y="73.599312" stroke-width="0.264583">Z|'</tspan>
                  </text>
                  <text xml:space="preserve" x="63.477604" y="47.716644" id="text925" font-size="5.64444px" font-family="sans-serif" stroke-width="0.264583">
                    <tspan id="tspan923" x="63.477604" y="47.716644" stroke-width="0.264583">Z|''</tspan>
                  </text>
                  <text xml:space="preserve" x="111.77264" y="54.801846" id="text929" font-size="5.64444px" font-family="sans-serif" stroke-width="0.264583">
                    <tspan id="tspan927" x="111.77264" y="54.801846" stroke-width="0.264583">Z|'''</tspan>
                  </text>
                  <text xml:space="preserve" x="72.731743" y="28.051607" id="text933" font-size="5.64444px" font-family="sans-serif" stroke-width="0.264583">
                    <tspan id="tspan931" x="72.731743" y="28.051607" stroke-width="0.264583">B|</tspan>
                  </text>
                  <path d="m 22.280334,32.724186 15.535178,0.68512" id="path1" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 19.283807,29.769374 0.344927,-8.949313" id="path2" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 21.228003,30.469799 35.397537,15.854059" id="path3" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 18.449043,66.801455 15.999387,59.152914" id="path4" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 18.283146,55.248829 7.859255,-2.473181" id="path5" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 56.167534,82.621119 10.682545,0.694003" id="path6" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 70.641123,80.767361 1.545002,-6.153977" id="path7" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 72.992617,82.933919 7.45618,-1.428263" id="path8" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 85.942581,79.189766 6.5868,-4.655839" id="path9" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 94.691107,69.993444 93.843904,61.802382" id="path10" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 101.67463,23.424538 96.409905,16.889931" id="path11" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 87.368775,37.739529 93.193606,16.889931" id="path12" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 108.01314,23.495546 3.10123,-2.97578" id="path13" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="M 111.09474,16.996409 97.130542,14.484855" id="path14" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path id="path23" d="m 17.55883,27.300654 3.75949,-4.048685 m -3.4703,0 3.4703,4.048685" fill="#000000" stroke="black" stroke-width="0.264999" stroke-opacity="1"/>
                  <path id="path23-1" d="m 43.253971,22.124764 3.75949,-4.048685 m -3.4703,0 3.4703,4.048685" fill="#000000" stroke="black" stroke-width="0.264999" stroke-opacity="1"/>
                  <path id="path23-2" d="m 30.698568,29.508321 3.75949,-4.048685 m -3.4703,0 3.4703,4.048685" fill="#000000" stroke="black" stroke-width="0.264999" stroke-opacity="1"/>
                  <path id="path23-7" d="m 61.549937,78.864743 3.75949,-4.048685 m -3.4703,0 3.4703,4.048685" fill="#000000" stroke="black" stroke-width="0.264999" stroke-opacity="1"/>
                  <path id="path23-0" d="m 92.305762,67.937059 3.75949,-4.048685 m -3.4703,0 3.4703,4.048685" fill="#000000" stroke="black" stroke-width="0.264999" stroke-opacity="1"/>
                  <path id="path23-9" d="m 101.96908,17.777553 3.75949,-4.048685 m -3.4703,0 3.4703,4.048685" fill="#000000" stroke="black" stroke-width="0.264999" stroke-opacity="1"/>
                  <path id="path23-3" d="m 87.712632,31.797415 3.75949,-4.048685 m -3.4703,0 3.4703,4.048685" fill="#000000" stroke="black" stroke-width="0.264999" stroke-opacity="1"/>
                  <path id="path23-6" d="m 80.664264,33.713822 3.75949,-4.048685 m -3.4703,0 3.4703,4.048685" fill="#000000" stroke="black" stroke-width="0.264999" stroke-opacity="1"/>
                  <path d="m 20.523483,35.127831 7.399985,13.943877" id="path24" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                </g>
              </svg>
            </artwork>
            <artwork align="center" name="" type="ascii-art" originalSrc="example.ascii-art">

   +==================+         +==================+
   | A|'   +--+       |         | B|    +--+       |
   |    +--|  |---+   |         |    +--|  |---+   |
   |    |  +--+   |   |         |    |  +--+   |   |
   |  +--+       +--+ |         |  +--+       +--+ |
   |  |  |---X---|  |==============|  |---X---|  | ========#
   |  +--+       +--+ |         |  +--+       +--+ |       #
   +====#==========#==+         +====#==========#==+       #
        ########   #                 #       # =#          #
      +========#===#=====+   +=======#====+  #   +=========#===+
      | Z|'   +--+ #     |   | Z|'' +--+  |  #   | Z|''' +--+  |
      |       |  |##     |   |      |  |  |  #   |       |  |  |
      |       +--+       |   |      +--+  |  #   |       +--+  |
      |  +--+  |    +--+ |   |       #    |  #   |         #   |
      |  |  |--+----|  | |   +=======#====+  #   +=========#===+
      |  +--+       +--+ |           #       #             #
      +====#=============+    #======#       #             #
           #                  #              #             #
           #         +========#=========+    #             #
           #         | A|''  +--+       |    #             #
           #         |    +--|  |---+   |    #             #
           #         |    |  +--+   |   |    #             #
           #         |  +--+       +--+======#             #
           #============|  |---X---|  |====================#
                     |  +--+       +--+ |
                     +==================+

      X : removed link due to reduction
      # : link included on component boundary
      = : link included on component boundary</artwork>
          </artset>
        </figure>
        <t>
            <xref target="example1"/> illustrates a network with three pruners running. Two components
            run pruner A and are denoted as A|' and A|'' and one component runs pruner B. Remaining
            three components run the <em>non-pruner</em> algorithm (annotated
            as Z|', Z|'', and Z|'''). CDSes within components are shown by indicating the links that were
            pruned from flooding as crossed out. Additionally, the links that are included
            to connect the CDS of the component following the rules listed in
            <xref target="rules"/> have been made thicker. Despite multiple algorithms and components
            being present in the network, the complete graph is obviously still covered by the involved CDSes.
        </t>
        <t>
            <xref target="example1"/> also illustrates why the overall CDS can easily be more than just a
            spanning tree of the overall network. A node seeing its neighbor running another algorithm
            cannot always decide based on local knowledge whether the link should be included in
            flooding or not. Such a decision could be based on the overall view of the network using some
            global tie-breaking algorithm.
            However, due to the potential long flooding paths and one-link minimal cuts, such an algorithm
            is not considered here but could be proposed in the future.
        </t>
      </section>
      <section title="Signaling" anchor="tlvs">
        <t>Nodes are REQUIRED to signal when they are actively running any pruner (except a non-pruner). The absence of
                    such an advertisement indicates that a node is either running a non-pruner or some other algorithm where within
                    its component it behaves in an equivalent fashion while also guaranteeing flooding on links connected to other components.</t>
        <section title="IS-IS - Flood Reduction Algorithm Sub-TLV">
          <t>The Flood Reduction Algorithm Sub-TLV is advertised as a sub-TLV within a Router Capability TLV (242) defined in <xref target="RFC7981"/>.
                        It uses the following format:</t>
          <figure align="left">
            <artwork align="center" type="ascii-art">
 0                   1                   2
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Length    |   Algorithm   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
          </figure>
          <ul>
            <li>
              <strong>Type: </strong>TBD1</li>
            <li>
              <strong>Length: </strong>1</li>
            <li>
              <strong>Algorithm: </strong>An 8-bit numerical identifier allocated from
                            the "IGP Algorithm Type For Computing Flooding Topology" registry.
                        </li>
          </ul>
          <t>This sub-TLV MUST only contain the currently active running pruner (other than a non-pruner). It MUST be flooded within
                        a Router Capability TLV that is strictly area-scoped and MUST NOT be leaked between levels.
          </t>
        </section>
        <section title="OSPFv2/OSPFv3 - Flood Reduction Algorithm TLV">
          <t>The Flood Reduction Algorithm TLV is advertised within a OSPFv2 Router Information (RI)
                     Opaque LSA or OSPFv3 Router Information LSA as defined in <xref target="RFC7770"/>.
                        It uses the following format:</t>
          <figure align="left">
            <artwork align="center" type="ascii-art">
 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            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Algorithm   |
+-+-+-+-+-+-+-+-+
</artwork>
          </figure>
          <ul>
            <li>
              <strong>Type: </strong>TBD1</li>
            <li>
              <strong>Length: </strong>1</li>
            <li>
              <strong>Algorithm: </strong>An 8-bit numerical identifier allocated from
                            the "IGP Algorithm Type For Computing Flooding Topology" registry.
                        </li>
          </ul>
          <t>Nodes MUST advertise this TLV when they actively run any pruner (other than a non-pruner).</t>
          <t>Pruner signaling MUST be flooded in a way that is strictly area-scoped that will not leak between areas.
                    For OSPFv2, the TLV MUST be flooded within a Router Information (RI) Opaque LSA as Type-10. For OSPFv3, the TLV MUST be flooded within a
                    Router Information (RI) LSA with the S2-bit set to 1.</t>
        </section>
        <section title="Error Handling">
          <t>This section defines error handling regardless of the deployed IGP or active algorithm.</t>
          <t>If a node receives an advertisement with more than one algorithm, it SHOULD be logged at least once.</t>
          <t>If a node receives an advertisement with an unrecognized/invalid algorithm, it SHOULD be logged at least once.</t>
          <t>If a node receives an advertisement with a mismatched algorithm, it SHOULD be logged at least once.</t>
        </section>
      </section>
    </section>
    <!-- 1 -->
    <section title="YANG Data Model">
      <t>
        YANG <xref target="RFC7950"/> is a data definition language
        used to define the contents of a conceptual data store
        that allows networked devices to be managed using NETCONF
        <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>.
      </t>
      <t>
          This section defines three YANG modules. Module iana-igp-flooding-topo-algo defines
          the identities the 'IGP AlgorithmType for Computing Flooding Topology' in the 'Interior
          Gateway Protocol (IGP) Parameters' registry group. <xref target="IANA-IGP-Flooding-Algo" format="default" sectionFormat="of" derivedContent="IANA-IGP-Flooding-Algo"/>.
          Module ietf-isis-flooding-reduction-algo, which augments the IS-IS YANG data model
          <xref target="RFC9130"/>  and the YANG Data Model for Routing Management
          <xref target="RFC8349"/>, can be used to configure and manage a flooding reduction
          algorithm in an IS-IS level 1 or level 2 area.
          Module ietf-ospf-flooding-reduction-algo, which augments the OSPF YANG data model
          <xref target="RFC9129"/> and the YANG Data Model for Routing Management
          <xref target="RFC8349"/>, can be used to configure and manage a flooding reduction algorithm
          in an OSPF area.
      </t>
      <t>This document uses the graphical representation of data model per <xref target="RFC8340"/>.</t>
      <section title="Tree for IS-IS Flooding Reduction Algorithm">
        <t>The following shows the tree diagram of the module for an IS-IS Flooding Reduction Algorithm:</t>
        <artwork align="left" name="" type="" alt=""><![CDATA[
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/isis:isis:
    +--rw level-1
    |  +--rw flooding-reduction-algo
    |     +--rw flooding-reduction-algo?   identityref
    +--rw level-2
       +--rw flooding-reduction-algo
          +--rw flooding-reduction-algo?   identityref
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/isis:isis/isis:database
            /isis:levels/isis:lsp/isis:router-capabilities:
    +--ro flooding-reduction-algo-tlv
       +--ro flooding-reduction-algo?   identityref
       ]]></artwork>
      </section>
      <section title="Tree for OSPF Flooding Reduction Algorithm">
        <t>The following shows the tree diagram of the module for an OSPF Flooding Reduction Algorithm:</t>
        <artwork align="left" name="" type="" alt=""><![CDATA[
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/ospf:ospf/ospf:areas
            /ospf:area:
    +--rw flooding-reduction-algo
       +--rw flooding-reduction-algo?   identityref
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/ospf:ospf/ospf:areas
            /ospf:area/ospf:database/ospf:area-scope-lsa-type
            /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version
            /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque
            /ospf:ri-opaque:
    +--ro flooding-reduction-algo-tlv
       +--ro flooding-reduction-algo?   identityref
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/ospf:ospf/ospf:areas
            /ospf:area/ospf:database/ospf:area-scope-lsa-type
            /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version
            /ospf:ospfv3/ospf:ospfv3/ospf:body
            /ospf:router-information:
    +--ro flooding-reduction-algo-tlv
       +--ro flooding-reduction-algo?   identityref
       ]]></artwork>
      </section>
      <section title="IANA Module for IGP Flooding Algorithms">
        <t>
          IANA has created a registry titled 'IGP Algorithm
          Type for Computing Flooding Topology' in the 'Interior
          Gateway Protocol (IGP) Parameters' registry group.";
          Module iana-igp-flooding-topo-algo
          is an IANA-maintained module, which defines the identities for the IGP algorithms for
          computing flooding topologies as in the IANA "IGP Algorithm Type for Computing Flooding
          Topology" registry.
        </t>
        <t>This module is maintained by IANA and will be updated if and when there is any change to the registry.</t>
        <t>This document defines the initial version of the IANA-maintained YANG
             module for the  "IGP Algorithm Type for Computing Flooding Topology" registry.
             registry <xref target="IANA-IGP-Flooding-Algo" format="default" sectionFormat="of" derivedContent="IANA-IGP-Flooding-Algo"/>.
        </t>
        <sourcecode name="iana-igp-flooding-topo-algo@2026-02-10.yang" type="" markers="true">
module iana-igp-flooding-topo-algo {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:"
          + "iana-igp-flooding-topo-algo";
  prefix iana-igp-flood-algo;

  organization
    "Internet Assigned Numbers Authority (IANA)";
  contact
    "Internet Assigned Numbers Authority

     ICANN
     12025 Waterfront Drive, Suite 300
     Los Angeles, CA 90094-2536
     United States of America

     Tel:    +1 310 301 5800
     &lt;mailto:iana@iana.org&gt;";
  description
    "This YANG module defines the identities for IGP Algorithms
     for Computing Flooding Topologies.

     This YANG module is maintained by IANA and reflects the
     'IGP Flooding Reduction Algorithm' registry.

     Copyright (c) 2026 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Revised BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     All revisions of IETF and IANA published modules can be found
     at the YANG Parameters registry group
     (https://www.iana.org/assignments/yang-parameters).

     This initial version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.

     The latest version of this YANG module is available at
     https://www.iana.org/assignments/yang-parameters.";

  revision 2026-02-10 {
    description
      "Initial version";
    reference
      "RFC 9667: Dynamic Flooding on Dense Graphs";
  }

  identity igp-flooding-topo-algo {
    description
      "Base identity for IGP algorithms for computing flooding
       topologies. Algorithms are defined in the 'IGP Algorithm
       Type for Computing Flooding Topology' in the 'Interior
       Gateway Protocol (IGP) Parameters' registry group.";
  }
}
</sourcecode>
      </section>
      <section title="YANG Module for IS-IS Flooding Reduction Algorithm">
        <t>
          The following is the YANG module for IS-IS Flooding Reduction Algorithm:
        </t>
        <sourcecode name="ietf-isis-flooding-reduction-algo@2026-02-10.yang" type="" markers="true">
module ietf-isis-flooding-reduction-algo {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:"
          + "ietf-isis-flooding-reduction-algo";
  prefix isis-flood-reduce-algo;

  import ietf-routing {
    prefix rt;
    reference
      "RFC 8349: A YANG Data Model for Routing Management
                 (NMDA Version)";
  }
  import ietf-isis {
    prefix isis;
    reference
      "RFC 9130: YANG Data Model for the IS-IS Protocol";
  }
  import iana-igp-flooding-topo-algo {
    prefix iana-igp-flood-algo;
    reference
      "RFC 9667: Dynamic Flooding on Dense Graphs";
  }

  organization
    "IETF Link State Routing (LSR) Working Group";
  contact
    "WG Web:   &lt;https://datatracker.ietf.org/wg/lsr/&gt;
     WG List:  &lt;mailto:lsr@ietf.org&gt;

     Author:   Acee Lindem
               &lt;mailto:acee.ietf@gmail.com&gt;";
  description
    "This YANG module defines the operational state for
     the flooding reduction algorithm in IS-IS as defined
     in RFC XXXX.

     Copyright (c) 2026 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.
     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Revised BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     All revisions of IETF and IANA published modules can be found
     at the YANG Parameters registry group
     (https://www.iana.org/assignments/yang-parameters).

     This version of this YANG module is part of RFC XXXX; see
     the RFC itself for full legal notices.";

  revision 2026-02-10 {
    description
      "Initial version";
    reference
      "RFC XXXX: IGP Flooding Reduction Algorithms Framework";
  }

  /*
   * IS-IS Flooding Reduction Algorithm configuration
   */

  grouping flooding-reduction-algo-config {
    description
      "Grouping for IS-IS flooding algorithm router
       configuration.";
    container flooding-reduction-algo {
      description
        "IS-IS Level-1 flooding algorithm routing configuration.
         This containers includes configuration related to the
         active flooding reduction algorithm.";
      leaf flooding-reduction-algo {
        type identityref {
          base iana-igp-flood-algo:igp-flooding-topo-algo;
        }
        description
          "Specifies the active flooding reduction algorithm
           in for IS-IS Level 1.
           RFC XXXX: IGP Flooding Reduction Algorithms Framework";
      }
    }
  }

  augment "/rt:routing/"
        + "rt:control-plane-protocols/rt:control-plane-protocol"
        + "/isis:isis" {
    when "/rt:routing/rt:control-plane-protocols/"
       + "rt:control-plane-protocol/rt:type = 'isis:isis'" {
      description
        "This augment IS-IS routing protocol when used";
    }
    description
      "This augments IS-IS with flooding reduction algorithm
       configuration.";
    container level-1 {
      uses flooding-reduction-algo-config;
      description
        "IS-IS Level-1 Flooding Reduction Algorithm
         configuration.";
    }
    container level-2 {
      uses flooding-reduction-algo-config;
      description
        "IS-IS Level-2 Flooding Reduction Algorithm
         configuration.";
    }
  }

  /*
   * IS-IS Flooding Reduction Algorithm Router Capabilities
   */

  grouping flooding-reduction-algorithm-tlv {
    description
      "Grouping for IS-IS flooding reduction algorithm
       TLV types.";
    reference
      "RFC 7981: IS-IS Extensions for Advertising Router
                 Information
       RFC XXXX: Flooding Reduction Algorithms Framework";
    container flooding-reduction-algo-tlv {
      description
        "IS-IS Router Flooding Algorithm TLV.";
      leaf flooding-reduction-algo {
        type identityref {
          base iana-igp-flood-algo:igp-flooding-topo-algo;
        }
        description
          "Flooding reduction algorithm active in the
           IS-IS routing domain";
        reference
          "RFC 7981: IS-IS Extensions for Advertising Router
                     Information
           RFC XXXX: Flooding Reduction Algorithms Framework";
      }
    }
  }

  augment "/rt:routing/"
        + "rt:control-plane-protocols/rt:control-plane-protocol"
        + "/isis:isis/isis:database/isis:levels/isis:lsp"
        + "/isis:router-capabilities" {
    when "/rt:routing/rt:control-plane-protocols/"
       + "rt:control-plane-protocol/"
       + "rt:type = 'isis:isis'" {
      description
        "This augment IS-IS routing protocol when used";
    }
    description
      "This augments IS-IS protocol LSDB router capability.";
    uses flooding-reduction-algorithm-tlv;
  }
}
</sourcecode>
      </section>
      <section title="YANG Module for OSPF Flooding Reduction Algorithm">
        <t>The following is the YANG module for OSPF Flooding Reduction Algorithm:</t>
        <sourcecode name="ietf-ospf-flooding-reduction-algo@2026-02-10.yang" type="" markers="true">
module ietf-ospf-flooding-reduction-algo {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:"
          + "ietf-ospf-flooding-reduction-algo";
  prefix ospf-fc;

  import ietf-routing {
    prefix rt;
    reference
      "RFC 8349: A YANG Data Model for Routing Management
                 (NMDA Version)";
  }
  import ietf-ospf {
    prefix ospf;
    reference
      "RFC 9129: YANG Data Model for the OSPF Protocol";
  }
  import iana-igp-flooding-topo-algo {
    prefix iana-igp-flood-algo;
    reference
      "RFC 9667: Dynamic Flooding on Dense Graphs";
  }

  organization
    "IETF Link State Routing (LSR) Working Group";
  contact
    "WG Web:   &lt;https://datatracker.ietf.org/wg/lsr/&gt;
     WG List:  &lt;mailto:lsr@ietf.org&gt;

     Author:   Acee Lindem
               &lt;mailto:acee.ietf@gmail.com&gt;";
  description
    "This YANG module defines the configuration and operational
     state for the flooding reduction algorithms in OSPF as
     defined in RFC XXXX.

     Copyright (c) 2026 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.
     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Revised BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     All revisions of IETF and IANA published modules can be found
     at the YANG Parameters registry group
     (https://www.iana.org/assignments/yang-parameters).

     This version of this YANG module is part of RFC XXXX; see
     the RFC itself for full legal notices.";

  revision 2026-02-10 {
    description
      "Initial version";
    reference
      "RFC XXXX: IGP Flooding Reduction Algorithms Framework";
  }

  grouping flooding-reduction-algorithm-tlv {
    description
      "Grouping for OSPF flooding algorithm capabilities
       TLV types.";
    reference
      "RFC 7770: Extensions to OSPF for Advertising Optional
                 Router Capabilities
       RFC XXXX: IGP Flooding Reduction Algorithms Framework";
    container flooding-reduction-algo-tlv {
      description
        "OSPF Flooding Reduction Algorithm TLV.";
      leaf flooding-reduction-algo {
        type identityref {
          base iana-igp-flood-algo:igp-flooding-topo-algo;
        }
        description
          "Flooding reduction algorithm active in the
           OSPF routing domain area
           RFC XXXX: Flooding Reduction Algorithms Framework";
      }
    }
  }

  /*
   * OSPF Flooding Reduciton Algorithm Configuration
   */

  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol/ospf:ospf/"
        + "ospf:areas/ospf:area" {
    when "derived-from-or-self(/rt:routing/"
       + "rt:control-plane-protocols/"
       + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" {
      description
        "This augmentation is only valid for both
         OSPFv2 and OSPFv3";
    }
    container flooding-reduction-algo {
      description
        "OSPF area-level flooding reduction algorithm routing
         configuration. This container includes configuration related
         to the active flooding reduction algorithm.";
      leaf flooding-reduction-algo {
        type identityref {
          base iana-igp-flood-algo:igp-flooding-topo-algo;
        }
        description
          "Specifies the active flooding reduction algorithm
           in the OSPF area.
           RFC XXXX: IGP Flooding Reduction Algorithms Framework";
      }
    }
    description
      "This augments the OSPF protocol area configuration with
       flood reduction algorithm specification.";
  }

  /*
   * OSPFv2 Router-Information Opaque LSA Flooding Reduction TLV
   */

  augment "/rt:routing/"
        + "rt:control-plane-protocols/rt:control-plane-protocol/"
        + "ospf:ospf/ospf:areas/"
        + "ospf:area/ospf:database/"
        + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
        + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/"
        + "ospf:ospfv2/ospf:body/ospf:opaque/"
        + "ospf:ri-opaque" {
    when "derived-from-or-self(/rt:routing/"
       + "rt:control-plane-protocols/"
       + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" {
      description
        "This augmentation is only valid for OSPFv2.";
    }
    description
      "OSPFv2 Opaque Area-Scoped Router-Information LSA Router
       Functional capabilities.";
    uses flooding-reduction-algorithm-tlv;
    reference
      "RFC 7770: Extensions to OSPF for Advertising Optional
                 Router Capabilities
       RFC XXXX: IGP Flooding Reduction Algorithms Framework";
  }

  /*
   * OSPFv3 Router-Information LSA Flooding Reduction TLV
   */

  augment "/rt:routing/"
        + "rt:control-plane-protocols/rt:control-plane-protocol/"
        + "ospf:ospf/ospf:areas/"
        + "ospf:area/ospf:database/"
        + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
        + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
        + "ospf:ospfv3/ospf:body/ospf:router-information" {
    when "derived-from-or-self(/rt:routing/"
       + "rt:control-plane-protocols/"
       + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" {
      description
        "This augmentation is only valid for OSPFv3.";
    }
    description
      "OSPFv3 Area-Scoped Router-Information LSA Router
       Functional capabilities.";
    uses flooding-reduction-algorithm-tlv;
    reference
      "RFC 7770: Extensions to OSPF for Advertising Optional
                 Router Capabilities
       RFC XXXX: IGP Flooding Reduction Algorithms Framework";
  }
}
</sourcecode>
      </section>
    </section>
    <section title="IANA Considerations" toc="default" anchor="IANA">
      <section anchor="IANA-IGP-Flooding-Algo" title="IANA IGP Flooding Algorithm Registry">
        <t>
            The existing IANA registry "IGP Algorithm Type for Computing Flooding Topology"
            in the "Interior Gateway Protocol (IGP) Parameters" registry
            group <xref target="RFC9667"/> is reused for algorithm definitions in this document.
            No further IANA action is required.
        </t>
      </section>
      <section anchor="IGP-Flooding-Algo" title="IGP Flooding Reduction Algorithm Capabiity">
        <t>
          This section requests that IANA reserve a single value from each of the following registries.
          Both should be named: "Flood Reduction Algorithm".
        </t>
        <ul>
          <li>
            IS-IS Sub-TLVs for IS-IS Router CAPABILITY TLV Registry (from within the 1-32767 range)
          </li>
          <li>
            OSPF Router Information (RI) TLVs Registry
          </li>
        </ul>
      </section>
    </section>
    <section title="Security Considerations" toc="default">
      <t>
                This document outlines a framework for extensions to an IGP protocol for operation on high-density network
                topologies. Implementations SHOULD implement cryptographic authentication
                compliant to e.g. <xref target="RFC5304"/>, and should enable other security measures
                in accordance with the best common practices for the relevant IGP protocol.
      </t>
    </section>
    <!-- end of security considerations -->




      <!--
        <section anchor="IGP_IANA" title="IANA Section">
            <t>IANA is requested to set up a registry called "IGP Flooding Pruner Type" under the existing "Interior Gateway
                Protocol (IGP) Parameters" IANA registry.</t>

            <t>Values in this registry come from the range 0 - 2^16-1.</t>

            <t>
                The following values are defined:</t>
            <ul>

                <li>
                    0 - 127: Standardized algorithms assigned in the registry.
                </li>

                <li>
                    128 - 254: Reserved for experimental purposes.
                </li>

                <li>
                    255: Reserved.
                </li>

            </ul>
        </section>

        -->


        <!-- 2 -->
        <section title="Contributors" toc="default">
      <t>
                The following people have contributed to this draft and are mentioned without any particular
                order: Raj Chetan, Les Ginsberg, Peter Psenak and Tony Li.
      </t>
    </section>
    <!-- end of contributors -->

    </middle>
  <back>
    <references title="Normative References">
      <reference anchor="RFC6241" target="https://www.rfc-editor.org/info/rfc6241" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml">
        <front>
          <title>Network Configuration Protocol (NETCONF)</title>
          <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
          <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
          <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
          <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
          <date month="June" year="2011"/>
          <abstract>
            <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6241"/>
        <seriesInfo name="DOI" value="10.17487/RFC6241"/>
      </reference>
      <reference anchor="RFC7981" target="https://www.rfc-editor.org/info/rfc7981" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7981.xml">
        <front>
          <title>IS-IS Extensions for Advertising Router Information</title>
          <author fullname="L. Ginsberg" initials="L." surname="Ginsberg"/>
          <author fullname="S. Previdi" initials="S." surname="Previdi"/>
          <author fullname="M. Chen" initials="M." surname="Chen"/>
          <date month="October" year="2016"/>
          <abstract>
            <t>This document defines a new optional Intermediate System to Intermediate System (IS-IS) TLV named CAPABILITY, formed of multiple sub-TLVs, which allows a router to announce its capabilities within an IS-IS level or the entire routing domain. This document obsoletes RFC 4971.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7981"/>
        <seriesInfo name="DOI" value="10.17487/RFC7981"/>
      </reference>
      <reference anchor="RFC7770" target="https://www.rfc-editor.org/info/rfc7770" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7770.xml">
        <front>
          <title>Extensions to OSPF for Advertising Optional Router Capabilities</title>
          <author fullname="A. Lindem" initials="A." role="editor" surname="Lindem"/>
          <author fullname="N. Shen" initials="N." surname="Shen"/>
          <author fullname="JP. Vasseur" initials="JP." surname="Vasseur"/>
          <author fullname="R. Aggarwal" initials="R." surname="Aggarwal"/>
          <author fullname="S. Shaffer" initials="S." surname="Shaffer"/>
          <date month="February" year="2016"/>
          <abstract>
            <t>It is useful for routers in an OSPFv2 or OSPFv3 routing domain to know the capabilities of their neighbors and other routers in the routing domain. This document proposes extensions to OSPFv2 and OSPFv3 for advertising optional router capabilities. The Router Information (RI) Link State Advertisement (LSA) is defined for this purpose. In OSPFv2, the RI LSA will be implemented with an Opaque LSA type ID. In OSPFv3, the RI LSA will be implemented with a unique LSA type function code. In both protocols, the RI LSA can be advertised at any of the defined flooding scopes (link, area, or autonomous system (AS)). This document obsoletes RFC 4970 by providing a revised specification that includes support for advertisement of multiple instances of the RI LSA and a TLV for functional capabilities.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7770"/>
        <seriesInfo name="DOI" value="10.17487/RFC7770"/>
      </reference>
      <reference anchor="RFC7950" target="https://www.rfc-editor.org/info/rfc7950" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml">
        <front>
          <title>The YANG 1.1 Data Modeling Language</title>
          <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
          <date month="August" year="2016"/>
          <abstract>
            <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7950"/>
        <seriesInfo name="DOI" value="10.17487/RFC7950"/>
      </reference>
      <reference anchor="RFC8040" target="https://www.rfc-editor.org/info/rfc8040" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml">
        <front>
          <title>RESTCONF Protocol</title>
          <author fullname="A. Bierman" initials="A." surname="Bierman"/>
          <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
          <author fullname="K. Watsen" initials="K." surname="Watsen"/>
          <date month="January" year="2017"/>
          <abstract>
            <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8040"/>
        <seriesInfo name="DOI" value="10.17487/RFC8040"/>
      </reference>
      <reference anchor="RFC8340" target="https://www.rfc-editor.org/info/rfc8340" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8340.xml">
        <front>
          <title>YANG Tree Diagrams</title>
          <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
          <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
          <date month="March" year="2018"/>
          <abstract>
            <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="215"/>
        <seriesInfo name="RFC" value="8340"/>
        <seriesInfo name="DOI" value="10.17487/RFC8340"/>
      </reference>
      <reference anchor="RFC8349" target="https://www.rfc-editor.org/info/rfc8349" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8349.xml">
        <front>
          <title>A YANG Data Model for Routing Management (NMDA Version)</title>
          <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
          <author fullname="A. Lindem" initials="A." surname="Lindem"/>
          <author fullname="Y. Qu" initials="Y." surname="Qu"/>
          <date month="March" year="2018"/>
          <abstract>
            <t>This document specifies three YANG modules and one submodule. Together, they form the core routing data model that serves as a framework for configuring and managing a routing subsystem. It is expected that these modules will be augmented by additional YANG modules defining data models for control-plane protocols, route filters, and other functions. The core routing data model provides common building blocks for such extensions -- routes, Routing Information Bases (RIBs), and control-plane protocols.</t>
            <t>The YANG modules in this document conform to the Network Management Datastore Architecture (NMDA). This document obsoletes RFC 8022.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8349"/>
        <seriesInfo name="DOI" value="10.17487/RFC8349"/>
      </reference>
      <reference anchor="RFC9129" target="https://www.rfc-editor.org/info/rfc9129" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9129.xml">
        <front>
          <title>YANG Data Model for the OSPF Protocol</title>
          <author fullname="D. Yeung" initials="D." surname="Yeung"/>
          <author fullname="Y. Qu" initials="Y." surname="Qu"/>
          <author fullname="Z. Zhang" initials="Z." surname="Zhang"/>
          <author fullname="I. Chen" initials="I." surname="Chen"/>
          <author fullname="A. Lindem" initials="A." surname="Lindem"/>
          <date month="October" year="2022"/>
          <abstract>
            <t>This document defines a YANG data model that can be used to configure and manage OSPF. The model is based on YANG 1.1 as defined in RFC 7950 and conforms to the Network Management Datastore Architecture (NMDA) as described in RFC 8342.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9129"/>
        <seriesInfo name="DOI" value="10.17487/RFC9129"/>
      </reference>
      <reference anchor="RFC9130" target="https://www.rfc-editor.org/info/rfc9130" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9130.xml">
        <front>
          <title>YANG Data Model for the IS-IS Protocol</title>
          <author fullname="S. Litkowski" initials="S." role="editor" surname="Litkowski"/>
          <author fullname="D. Yeung" initials="D." surname="Yeung"/>
          <author fullname="A. Lindem" initials="A." surname="Lindem"/>
          <author fullname="J. Zhang" initials="J." surname="Zhang"/>
          <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
          <date month="October" year="2022"/>
          <abstract>
            <t>This document defines a YANG data model that can be used to configure and manage the IS-IS protocol on network elements.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9130"/>
        <seriesInfo name="DOI" value="10.17487/RFC9130"/>
      </reference>
      <!--
            <reference anchor="ISO10589">
                <front>
                    <title>Intermediate system to Intermediate system intra-domain
                        routeing information exchange protocol for use in conjunction with
                        the protocol for providing the connectionless-mode Network Service
                        (ISO 8473)
                    </title>

                    <author>
                        <organization abbrev="ISO">International Organization for Standardization</organization>
                    </author>

                    <date month="Nov" year="2002"/>
                </front>

                <seriesInfo name="ISO/IEC" value="10589:2002, Second Edition"/>
            </reference>
            -->

        </references>
    <!-- end of normative references -->

        <references title="Informative References">
      <reference anchor="RFC5304" target="https://www.rfc-editor.org/info/rfc5304" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5304.xml">
        <front>
          <title>IS-IS Cryptographic Authentication</title>
          <author fullname="T. Li" initials="T." surname="Li"/>
          <author fullname="R. Atkinson" initials="R." surname="Atkinson"/>
          <date month="October" year="2008"/>
          <abstract>
            <t>This document describes the authentication of Intermediate System to Intermediate System (IS-IS) Protocol Data Units (PDUs) using the Hashed Message Authentication Codes - Message Digest 5 (HMAC-MD5) algorithm as found in RFC 2104. IS-IS is specified in International Standards Organization (ISO) 10589, with extensions to support Internet Protocol version 4 (IPv4) described in RFC 1195. The base specification includes an authentication mechanism that allows for multiple authentication algorithms. The base specification only specifies the algorithm for cleartext passwords. This document replaces RFC 3567.</t>
            <t>This document proposes an extension to that specification that allows the use of the HMAC-MD5 authentication algorithm to be used in conjunction with the existing authentication mechanisms. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5304"/>
        <seriesInfo name="DOI" value="10.17487/RFC5304"/>
      </reference>
      <reference anchor="RFC9667" target="https://www.rfc-editor.org/info/rfc9667" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9667.xml">
        <front>
          <title>Dynamic Flooding on Dense Graphs</title>
          <author fullname="T. Li" initials="T." role="editor" surname="Li"/>
          <author fullname="P. Psenak" initials="P." role="editor" surname="Psenak"/>
          <author fullname="H. Chen" initials="H." surname="Chen"/>
          <author fullname="L. Jalil" initials="L." surname="Jalil"/>
          <author fullname="S. Dontula" initials="S." surname="Dontula"/>
          <date month="October" year="2024"/>
          <abstract>
            <t>Routing with link-state protocols in dense network topologies can result in suboptimal convergence times due to the overhead associated with flooding. This can be addressed by decreasing the flooding topology so that it is less dense.</t>
            <t>This document discusses the problem in some depth and an architectural solution. Specific protocol changes for IS-IS, OSPFv2, and OSPFv3 are described in this document.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9667"/>
        <seriesInfo name="DOI" value="10.17487/RFC9667"/>
      </reference>
      <!--
    <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5449.xml'/>

    <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5614.xml'/>
    <xi:include href='https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml'/>
    -->

        </references>
    <!-- end of informative references -->

    </back>
</rfc>
