<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
    which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
<!ENTITY wj     "&#8288;">
<!ENTITY rfc2119 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc2328 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.2328.xml">
<!ENTITY rfc2973 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.2973.xml">
<!ENTITY rfc3630 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.3630.xml">
<!ENTITY rfc4552 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.4552.xml">
<!ENTITY rfc4811 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.4811.xml">
<!ENTITY rfc5029 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5029.xml">
<!ENTITY rfc5250 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5250.xml">
<!ENTITY rfc5304 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5304.xml">
<!ENTITY rfc5310 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5310.xml">
<!ENTITY rfc5340 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5340.xml">
<!ENTITY rfc5613 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5613.xml">
<!ENTITY rfc7356 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.7356.xml">
<!ENTITY rfc7370 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.7370.xml">
<!ENTITY rfc7474 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.7474.xml">
<!ENTITY rfc7684 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.7684.xml">
<!ENTITY rfc7770 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.7770.xml">
<!ENTITY rfc7938 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.7938.xml">
<!ENTITY rfc7981 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.7981.xml">
<!ENTITY rfc8126 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.8126.xml">
<!ENTITY rfc8174 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY rfc8362 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.8362.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt'>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
    please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
    (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
    (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="exp" docName="draft-ietf-lsr-dynamic-flooding-18"
     ipr="trust200902" consensus="yes" submissionType="IETF">
  <!-- category values: std, bcp, info, exp, and historic
    ipr values: trust200902, noModificationTrust200902, noDerivativesTrust200902,
       or pre5378Trust200902
    you can add the attributes updates="NNNN" and obsoletes="NNNN" 
    they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
       full title is longer than 39 characters -->

    <title abbrev="Dynamic Flooding">Dynamic Flooding on Dense Graphs</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Tony Li" initials="T." role="editor" surname="Li">
      <organization>Juniper Networks</organization>

      <address>
        <postal>
          <street>1133 Innovation Way</street>

          <!-- Reorder these if your country does things differently -->

          <city>Sunnyvale</city>

          <region>California</region>

          <code>94089</code>

          <country>USA</country>
        </postal>

        <phone></phone>

        <email>tony.li@tony.li</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Peter Psenak" initials="P." role="editor"
            surname="Psenak">
      <organization>Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street>Eurovea Centre, Central 3</street>

          <street>Pribinova Street 10</street>

          <city>Bratislava</city>

          <code>81109</code>

          <country>Slovakia</country>
        </postal>

        <email>ppsenak@cisco.com</email>
      </address>
    </author>

    <author fullname="Huaimo Chen" initials="H" surname="Chen">
      <organization>Futurewei</organization>

      <address>
        <postal>
          <street/>

          <city>Boston, MA</city>

          <region/>

          <code/>

          <country>USA</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>hchen.ietf@gmail.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Luay Jalil" initials="L." surname="Jalil">
      <organization>Verizon</organization>

      <address>
        <postal>
          <street/>

          <city>Richardson</city>

          <region>Texas</region>

          <code>75081</code>

          <country>USA</country>
        </postal>

        <email>luay.jalil@verizon.com</email>
      </address>
    </author>

    <author fullname="Srinath Dontula" initials="S." surname="Dontula">
      <organization>ATT</organization>

      <address>
        <postal>
          <street>200 S Laurel Ave</street>

          <city>Middletown</city>

          <region>New Jersey</region>

          <code>07748</code>

          <country>USA</country>
        </postal>

        <email>sd947e@att.com</email>
      </address>
    </author>

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
       in the current day for you. If only the current year is specified, xml2rfc will fill 
       in the current day and month for you. If the year is not the current one, it is 
       necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
       purpose of calculating the expiry date).  With drafts it is normally sufficient to 
       specify just the year. -->
    <date year="2024"/>

    <!-- Meta-data Declarations -->

    <area>Routing</area>

    <workgroup>Internet Engineering Task Force</workgroup>

    <!-- WG name at the upperleft corner of the doc,
       IETF is fine for individual submissions.  
       If this element is not present, the default is "Network Working Group",
       which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>datacenter IGP routing flooding dense graph topology</keyword>

    <!-- Keywords will be incorporated into HTML output
       files in a meta tag but they have no effect on text or nroff
       output. If you submit your draft to the RFC Editor, the
       keywords will be used for the search engine. -->

    <abstract>
      <t>Routing with link state protocols in dense network topologies can
      result in sub-optimal 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>

  <middle>
    <section title="Introduction" anchor="Intro">
      <t>In recent years, there has been increased focus on how to address the
      dynamic routing of networks that have a bipartite (a.k.a., spine-leaf or
      leaf-spine), <xref target="Clos">Clos</xref>, or <xref
      target="Leiserson">Fat Tree</xref> topology. Conventional Interior
      Gateway Protocols (IGPs, i.e., <xref target="ISO10589">IS-IS</xref>,
      <xref target="RFC2328">OSPFv2</xref>, and <xref
      target="RFC5340">OSPFv3</xref>) under-perform, redundantly flooding
      information throughout the dense topology, leading to overloaded control
      plane inputs and thereby creating operational issues. For practical
      considerations, network architects have resorted to applying
      unconventional techniques to address the problem, e.g., applying <xref
      target="RFC7938">BGP in the data center</xref>. However some feel
      that using an Exterior Gateway Protocol as an IGP is sub-optimal, if
      only due to the configuration overhead.</t>

      <t>The primary issue that is demonstrated when conventional IGPs
      are applied is the poor reaction of the network to topology changes.
      Normal link state routing protocols rely on a flooding algorithm for
      state distribution within an area. In a dense topology, this flooding
      algorithm is highly redundant, resulting in unnecessary overhead. Each
      node in the topology receives each link state update multiple times.
      Ultimately, all of the redundant copies will be discarded, but only
      after they have reached the control plane and been processed. This
      creates issues because significant link state database updates can
      become queued behind many redundant copies of another update. This
      delays convergence as the link state database does not stabilize
      promptly.</t>

      <t>In a real-world implementation, the packet queues leading to
      the control-plane are necessarily of finite size, so if the
      flooding rate exceeds the update processing rate for long
      enough, then the control plane will be obligated to drop
      incoming updates. If these lost updates are of significance,
      this will further delay the stabilization of the link state database
      and the convergence of the network.</t>

      <t>This is not a new problem. Historically, when routing protocols have
      been deployed in networks where the underlying topology is a complete
      graph, there have been similar issues. This was more common when the
      underlying link-layer fabric presented the network layer with a full
      mesh of virtual connections. This was addressed by reducing the flooding
      topology through <xref target="RFC2973">IS-IS Mesh Groups</xref>, but
      this approach requires careful configuration of the flooding
      topology.</t>

      <t>Thus, the root problem is not limited to massively scalable data
      centers. It exists with any dense topology at scale.</t>

      <t>Link state routing protocols were conceived when links were
      very expensive and topologies were sparse. The fact that those
      same designs are sub-optimal in a dense topology should not come
      as a huge surprise. Technology has progressed to the point where
      links are cheap and common. This represents a complete reversal
      in the economic fundamentals of network engineering. The
      original designs are to be commended for continuing to provide
      correct operation to this point, and optimizations for operation
      in today's environment are to be expected.</t>

      <section title="Requirements Language">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
        NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
        "MAY", and "OPTIONAL" in this document are to be interpreted as
        described in BCP 14 <xref target="RFC2119"/> <xref
        target="RFC8174"/> when, and only when, they
        appear in all capitals, as shown here.
        These words may also appear in this document in
        lower case as plain English words, absent their normative meanings.</t>
      </section>
    </section>

    <section title="Problem Statement">
      <t>In a dense topology, the flooding algorithm that is the heart of
      conventional link state routing protocols causes a great deal of
      redundant messaging. This is exacerbated by scale. While the protocol
      can survive this combination, the redundant messaging is unnecessary
      overhead and delays convergence. Thus, the problem is to provide routing
      in dense, scalable topologies with rapid convergence.</t>
    </section>

    <section title="Solution Requirements">
      <t>A solution to this problem must then meet the following requirements:
      <list hangIndent="4" style="format Requirement %d:  ">
          <t>Provide a dynamic routing solution. Reachability must be restored
          after any topology change.</t>

          <t>Provide a significant improvement in convergence.</t>

          <t>
            The solution should address a variety of dense
            topologies. Just addressing a complete bipartite topology
            such as K5,8 is insufficient. <xref target="Bondy"/>
            Multi-stage Clos topologies must also be addressed, as
            well as topologies that are slight variants. Addressing
            complete graphs is a good demonstration of generality.
          </t>

          <t>There must be no single point of failure. The loss of any link or
          node should not unduly hinder convergence.</t>

	  <t>
	    The workload for flooding should be evenly
	    distributed. A hot spot, where one node has an
	    extreme workload, would be a performance limitation and a
	    vulnerability for resiliency.
	  </t>
	  
          <t>Dense topologies are subgraphs of much larger topologies.
          Operational efficiency requires that the dense subgraph not
          operate in a radically different manner than the remainder
          of the topology.  While some operational differences are
          permissible, they should be minimized. Any change to any
          node outside of the dense subgraph is not acceptable. These
          situations occur when massively scaled data centers are part
          of an overall larger wide-area network. Having a second
          protocol operating just on this subgraph would add much more
          complexity at the edge of the subgraph where the two
          protocols would have to inter-operate.</t>
        </list></t>
    </section>

    <section title="Dynamic Flooding">
      <t>The combination of a dense topology and flooding on the
      physical topology is sub-optimal for network scaling.  However,
      if the flooding topology is decoupled from the physical topology
      and restricted to a greatly reduced portion of that topology,
      the result can be efficient flooding and all of the resilience
      of existing protocols. A node that supports flooding on the
      decoupled flooding topology is said to support dynamic
      flooding.</t>

      <t>With dynamic flooding, the flooding topology is computed
      within an IGP area with the dense topology either centrally on
      an elected node, termed the Area Leader, or in a distributed
      manner on all nodes that are supporting Dynamic Flooding. If the
      flooding topology is computed centrally, it is encoded into and
      distributed as part of the normal link state database.  This is
      the centralized mode of operation. If the flooding topology is
      computed in a distributed fashion, this is the distributed
      mode of operation. Nodes within such an IGP area would only
      flood on the flooding topology. On links outside of the flooding
      topology, normal database synchronization mechanisms (i.e., OSPF
      database exchange, IS-IS Complete Sequence Number Protocol Data
      Units (CSNPs)) would apply, but flooding may not. Details are
      described in <xref target="BEHAVIOR"/>. New link state
      information that arrives from outside of the flooding topology
      suggests that the sender has no flooding topology information or
      that it is operating on old information about the flooding
      topology. In these cases, the new link state information should
      be flooded on the flooding topology as well.</t>

      <t>The flooding topology covers the full set of nodes within the area,
      but excludes some of the links that standard flooding would employ.</t>

      <t>
        Since the flooding topology is computed before topology changes, 
        the effort required to compute it
        does not factor into the convergence time and can be done when the
        topology is stable.  The speed of the computation and its
        distribution, in the case of centralized mode, is not a significant
        issue.
      </t>

      <t>
	Graph theory defines the 'degree' of a node to be the number
	of edges that are attached to the node. To keep the
	flooding workload scalable and distributed, there should be no
	nodes in the flooding topology that have a much higher degree
	than other nodes.
      </t>

      <t>If a node does not have any flooding topology information
      when it receives new link state information, it should flood
      according to standard flooding rules. This situation will occur
      when the dense topology is first established but is unlikely to
      recur.</t>

      <t>
	Link state protocols are intentionally designed to be
	asynchronous, with nodes acting independently. During the
	flooding process, different nodes will have different
	information, resulting in transient conditions that can
	temporarily produce suboptimal forwarding. These periods of
	transient conditions are known as 'transients.'
      </t>

      <t>When centralized mode is used and if, during a transient, there are
      multiple flooding topologies being advertised, then nodes should flood
      link state updates on all of the flooding topologies. Each node should
      locally evaluate the election of the Area Leader for the IGP area and
      first flood on its flooding topology. The rationale behind this is
      straightforward: if there is a transient and there has been a recent
      change in Area Leader, then propagating topology information promptly
      along the most likely flooding topology should be the priority.</t>

      <t>During transients, loops may form in the flooding
      topology. This is not problematic, as the standard flooding
      rules would cause duplicate updates to be ignored. Similarly,
      during transients, the flooding topology may become
      disconnected. <xref target="PARTITIONED_FT"/> discusses how such
      conditions are handled.</t>

      <section title="Applicability">
        <t>In a complete graph, this approach is appealing because it
        drastically decreases the flooding topology without the manual
        configuration of mesh groups. By controlling the diameter of the
        flooding topology, as well as the maximum node degree in the flooding
        topology, convergence time goals can be met, and the stability of the
        control plane can be assured.</t>

        <t>Similarly, in a massively scaled data center, where there are many
        opportunities for redundant flooding, this mechanism ensures that
        flooding is redundant, with each leaf and spine well connected, while
        ensuring that no update takes too many hops and that no node
        shares an undue portion of the flooding effort.</t>

        <t>In a network where only a portion of the nodes support Dynamic
        Flooding, the remaining nodes will continue to perform standard
        flooding. This is not an issue for correctness, as no node can become
        isolated.</t>

        <t>
          Flooding that is initiated by nodes that support Dynamic
          Flooding will remain within the flooding topology until it
          reaches a legacy node, where standard flooding is
          resumed. Standard flooding will be bounded by nodes
          supporting Dynamic Flooding, which can help limit the
          propagation of unnecessary flooding. Whether or not the
          network can remain stable in this condition is very
          dependent on the number and location of the nodes that
          support Dynamic Flooding.
        </t>

        <t>During incremental deployment of dynamic flooding, an area will
        consist of one or more sets of connected nodes that support dynamic
        flooding and one or more sets of connected nodes that do not, i.e.,
        nodes that support standard flooding. The flooding topology is the
        union of these sets of nodes. Each set of nodes that does not support
        dynamic flooding needs to be part of the flooding topology and such a
        set of nodes may provide connectivity between two or more sets of
        nodes that support dynamic flooding.</t>
      </section>

      <section title="Leader election">
        <t>A single node within the dense topology is elected as an Area
        Leader.</t>

        <t>A generalization of the mechanisms used in existing
        Designated Router (OSPF) or Designated Intermediate-System
        (IS-IS) elections is used for leader election. The elected
        node is known as the Area Leader.</t>

        <t>In the case of centralized mode, the Area Leader is responsible for
        computing and distributing the flooding topology. When a new Area
        Leader is elected and has distributed new flooding topology
        information, then any prior Area Leaders should withdraw any of their
        flooding topology information from their link state database
        entries.</t>

        <t>In the case of distributed mode, the distributed algorithm
        advertised by the Area Leader MUST be used by all nodes that
        participate in Dynamic Flooding.</t>

        <t>Not every node needs to be a candidate to be the Area
        Leader within an area, as a single candidate is sufficient for
        correct operation. For redundancy, however, it is strongly
        RECOMMENDED that there be multiple candidates.</t>
      </section>

      <section title="Computing the Flooding Topology">
        <t>There is a great deal of flexibility in how the flooding
        topology may be computed. For resilience, it needs to at least
        contain a cycle of all nodes in the dense subgraph. However,
        additional links could be added to decrease the convergence
        time. The trade-off between the density of the flooding
        topology and the convergence time is a matter for further
        study. The exact algorithm for computing the flooding topology
        in the case of the centralized computation need not be
        standardized, as it is not an interoperability issue. Only the
        encoding of the resultant topology needs to be documented. In
        the case of distributed mode, all nodes in the IGP area need
        to use the same algorithm to compute the flooding topology. It
        is possible to use private algorithms to compute flooding
        topology, so long as all nodes in the IGP area use the same
        algorithm.</t>

        <t>While the flooding topology should be a covering cycle, it need not
        be a Hamiltonian cycle where each node appears only once. In fact, in
        many relevant topologies, this will not be possible, e.g., K5,8. This is
        fortunate, as computing a Hamiltonian cycle is known to be
        NP-complete.</t>

        <t>A simple algorithm to compute the topology for a complete bipartite
        graph is to simply select unvisited nodes on each side of the graph
        until both sides are completely visited. If the numbers of nodes on
        each side of the graph are unequal, then revisiting nodes on the less
        populated side of the graph will be inevitable. This algorithm can run
        in O(N) time, so it is quite efficient.</t>

        <t>While a simple cycle is adequate for correctness and resiliency, it
        may not be optimal for convergence. At scale, a cycle may have a
        diameter that is half the number of nodes in the graph. This could
        cause an undue delay in link state update propagation. Therefore it
        may be useful to have a bound on the diameter of the flooding
        topology. Introducing more links into the flooding topology would
        reduce the diameter but at the trade-off of possibly adding redundant
        messaging. The optimal trade-off between convergence time and graph
        diameter is for further study.</t>

        <t>Similarly, if additional redundancy is added to the flooding
        topology, specific nodes in that topology may end up with a very high
        degree. This could result in overloading the control plane of those
        nodes, resulting in poor convergence. Thus, it may be
        preferable to have
        an upper bound on the degree of nodes in the flooding topology. Again,
        the optimal trade-off between graph diameter, node degree,
        convergence time, and topology computation time is for further
        study.</t>

        <t>If the leader chooses to include a multi-access broadcast
        LAN segment as part of the flooding topology, all of the
        adjacencies in that LAN segment should be included as
        well. Once updates are flooded on the LAN, they will be
        received by every attached node.</t>
      </section>

      <section title="Topologies on Complete Bipartite Graphs">
        <t>Complete bipartite graph topologies have become popular for data
        center applications and are commonly called leaf-spine or spine-leaf
        topologies. This section discusses some flooding topologies that
        are of particular interest in these networks.</t>

        <section title="A Minimal Flooding Topology">
          <t>A Minimal Flooding Topology on a complete bipartite
          graph is one in which the topology is connected and each node has at
          least degree two. This is of interest because it guarantees that the
          flooding topology has no single point of failure.</t>

          <t>In practice, this implies that every leaf node in the flooding
          topology will have a degree of two. As there are usually more leaves
          than spines, the degree of the spines will be higher, but the load
          on the individual spines can be evenly distributed.</t>

          <t>This type of flooding topology is also of interest
          because it scales well. As the number of leaves increases,
          it is possible to construct flooding topologies that perform
          well. Specifically, for N spines and M leaves, if M &gt;=
          N(N/2-1), then there is a flooding topology that has a
          diameter of four.</t>
        </section>

        <section title="Xia Topologies" anchor="Xia">
          <t>A Xia Topology on a complete bipartite graph is one in
          which all spine nodes are bi-connected through leaves with degree
          two, but the remaining leaves all have degree one and are evenly
          distributed across the spines.</t>

          <t>Constructively, one can create a Xia topology by iterating through
          the spines. Each spine can be connected to the next spine by
          selecting any unused leaf. Since leaves are connected to all spines,
          all leaves will have a connection to both the first and second spine
          and one can therefore choose any leaf without loss of generality.
          Continuing this iteration across all of the spines, selecting a new
          leaf at each iteration, will result in a path that connects all
          spines. Adding one more leaf between the last and first spine will
          produce a cycle of N spines and N leaves.</t>

          <t>At this point, M-N leaves remain unconnected. These can be
          distributed evenly across the remaining spines, connected by a
          single link.</t>

          <t>Xia topologies represent a compromise that trades off increased
          risk and decreased performance for lower flooding amplification. Xia
          topologies will have a larger diameter. For M spines, the diameter
          will be M + 2.</t>

          <t>In a Xia topology, some leaves are singly connected. This
          represents a risk in that in some failures, convergence may be
          delayed. However, there may be some alternate behaviors that can be
          employed to mitigate these risks. If a leaf node sees that its
          single link on the flooding topology has failed, it can compensate
          by performing a database synchronization check with a different
          spine. Similarly, if a leaf determines that its connected spine on
          the flooding topology has failed, it can compensate by performing a
          database synchronization check with a different spine. In both of
          these cases, the synchronization check is intended to ameliorate any
          delays in link state propagation due to the fragmentation of the
          flooding topology.</t>

          <t>The benefit of this topology is that flooding load is easily
          understood. Each node in the spine cycle will never receive an
          update more than twice. For M leaves and N spines, a spine never
          transmits more than (M/N +1) updates.</t>
        </section>

        <section title="Optimization">
          <t>If two nodes are adjacent in the flooding topology and
          there is a set of parallel links between them, then any
          given update MUST be flooded over only one of those
          links. The selection of the specific link is
          implementation-specific.</t>
        </section>
      </section>

      <section title="Encoding the Flooding Topology">
        <t>There are a variety of ways that the flooding topology could be
        encoded efficiently. If the topology was only a cycle, a simple list
        of the nodes in the topology would suffice. However, this is
        insufficiently flexible as it would require a slightly different
        encoding scheme as soon as a single additional link is added. Instead,
        this document chooses to encode the flooding topology as a set of intersecting
        paths, where each path is a set of connected links.</t>

        <t>Advertisement of the flooding topology includes support for
        multi-access broadcast LANs. When a LAN is included in the
        flooding topology, all edges between the LAN and nodes
        connected to the LAN are assumed to be part of the flooding
        topology. To reduce the size of the flooding topology
        advertisement, explicit advertisement of these edges is
        optional. Note that this may result in the possibility of
        "hidden nodes" or "stealth nodes" which are part of the
        flooding topology but are not explicitly mentioned in the
        flooding topology advertisements. These hidden nodes can be
        found by examination of the Link State database where
        connectivity between a LAN and nodes connected to the LAN is
        fully specified.</t>

        <t>Note that while all nodes MUST be part of the advertised flooding
        topology, not all multi-access LANs need to be included. Only those
        LANs which are part of the flooding topology need to be included in
        the advertised flooding topology.</t>

        <t>Other encodings are certainly possible. This document has
        attempted to make a useful trade-off between simplicity,
        generality, and space.</t>
      </section>

      <section title="Advertising the Local Edges Enabled for Flooding">
        <t>Correct operation of the flooding topology requires that all nodes
        which participate in the flooding topology choose local links for
        flooding which are part of the calculated flooding topology.
        Failure to do so could result in an unexpected partition of the flooding
        topology and/or sub-optimal flooding reduction. As an aid to
        diagnosing problems when dynamic flooding is in use, this document
        defines a means of advertising what local edges are enabled for
        flooding (LEEF). The protocol-specific encodings are defined in
        Sections 5.1.6 and 5.2.8.</t>

        <t>The following guidelines apply:</t>

        <t><list>
            <t>Advertisement of LEEFs is optional.</t>

            <t>As the flooding topology is defined in terms of edges
	    (i.e., pairs of nodes) and not in terms of links, in
            cases where parallel adjacencies to the same neighbor exist, the
            advertisement SHOULD indicate that all such links have been
            enabled.</t>

            <t>LEEF advertisements MUST NOT include edges enabled for
            temporary flooding (Section 6.7).</t>

            <t>LEEF advertisements MUST NOT be used either when calculating a
            flooding topology or when determining what links to add
            temporarily to the flooding topology when the flooding topology is
            temporarily partitioned.</t>
          </list></t>
      </section>
    </section>

    <section title="Protocol Elements">
      <section title="IS-IS TLVs">
        <t>The following TLVs/sub-TLVs are added to IS-IS: <list
            style="numbers">
            <t>A sub-TLV that an IS may include in its Link State
	    Protocol Data Unit (LSP) to indicate its
            preference for becoming the Area Leader.</t>

            <t>A sub-TLV that an IS may include in its LSP to indicate that
            it supports Dynamic Flooding and the algorithms that it supports
            for distributed mode, if any.</t>

            <t>A TLV to advertise the list of system IDs that compose the
            flooding topology for the area.  A system ID is an
	    identifier for a node.</t>

            <t>A TLV to advertise a path that is part of the flooding
            topology.</t>

            <t>A TLV that requests flooding from the adjacent node.</t>
          </list></t>

        <section anchor="ISIS_AREA_LEADER_SUBTLV"
                 title="IS-IS Area Leader Sub-TLV">
          <t>The Area Leader Sub-TLV allows a system to: <list style="numbers">
              <t>Indicate its eligibility and priority for becoming
              the Area Leader.</t>

              <t>Indicate whether centralized or distributed mode is to be
              used to compute the flooding topology in the area.</t>

              <t>Indicate the algorithm identifier for the algorithm that is
              used to compute the flooding topology in distributed mode.</t>
            </list></t>

          <t>Intermediate Systems (nodes) that are not advertising this
          Sub-TLV are not eligible to become the Area Leader.</t>

          <t>
	    The Area Leader is the node with the numerically highest
	    Area Leader priority in the area. In the event of ties,
	    the node with the numerically highest system ID is the
	    Area Leader. Due to transients during database flooding,
	    different nodes may not agree on the Area Leader. This is
	    not problematic, as subsequent flooding will cause the
	    entire area to converge.
	  </t>

          <t>The Area Leader Sub-TLV is advertised as a Sub-TLV of the IS-IS
          Router Capability TLV-242 that is defined in <xref
          target="RFC7981"/> and has the following format:</t>

          <figure align="left">
            <artwork align="left"><![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    | Priority      |   Algorithm   |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]></artwork>
          </figure>

          <t><list>
              <t>Type: TBD1</t>

              <t>Length: 2</t>

              <t>Priority: 0-255, unsigned integer. Determination of
	      the priority is outside of the scope of this document.</t>

              <t>Algorithm: a numeric identifier in the range 0-255 that
              identifies the algorithm used to calculate the flooding
              topology. The following values are defined: <list>
                  <t>0: Centralized computation by the Area Leader.</t>

                  <t>
		    1-127: Standardized distributed algorithms.
		  </t>

                  <t>128-254: Private distributed algorithms. Individual
                  values are to be assigned according to the "Private Use"
                  policy defined in <xref target="RFC8126"/> (see <xref
                  target="IGP_IANA"/>).</t>

                  <t>255: Reserved</t>
                </list></t>
            </list></t>
        </section>

        <section anchor="ISIS_DYNAMIC_FLOODING_SUBTLV"
                 title="IS-IS Dynamic Flooding Sub-TLV">
          <t>The Dynamic Flooding Sub-TLV allows a system to: <list
              style="numbers">
              <t>Indicate that it supports Dynamic Flooding. This is indicated
              by the advertisement of this Sub-TLV.</t>

              <t>
		Indicate the set of algorithms that it supports.
	      </t>
            </list></t>

          <t>In incremental deployments, understanding which nodes support
          Dynamic Flooding can be used to optimize the flooding topology. In
          distributed mode, knowing the capabilities of the nodes can allow
          the Area Leader to select the optimal algorithm.</t>

          <t>The Dynamic Flooding Sub-TLV is advertised as a Sub-TLV of the
          IS-IS Router Capability TLV (242) <xref target="RFC7981"/> and has
          the following format:</t>

          <figure align="left">
            <artwork align="left"><![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    | Algorithm...  | 
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]></artwork>
          </figure>

          <t><list>
              <t>Type: TBD7</t>

              <t>Length: 1-255; number of Algorithms</t>

              <t>Algorithm: numeric identifiers in the range
              0-255 that identify the algorithm used to calculate the
              flooding topology, as described in <xref
              target="ISIS_AREA_LEADER_SUBTLV"/>.</t>
            </list></t>
        </section>

        <section anchor="ISIS_AREA_SYSTEM_ID_TLV"
                 title="IS-IS Area Node IDs TLV">
          <t>The IS-IS Area Node IDs TLV is only used in centralized mode.</t>

          <t>The Area Node IDs TLV is used by the Area Leader to enumerate the
          Node IDs (System ID + pseudo-node ID) that it has used in computing
          the area flooding topology. Conceptually, the Area Leader creates a
          list of node IDs for all nodes in the area (including pseudo-nodes
          for all LANs in the topology), assigning an index to each node,
          starting with index 0. Indices are implicitly assigned
          sequentially, with the index of the first node being the
          Starting Index and each subsequent node's index is the
          previous node's index + 1.</t>

          <t>Because the space in a single TLV is limited, more than one TLV
          may be required to encode all of the node IDs in the area. This TLV
          may be present in multiple LSPs.</t>

          <t>The format of the Area Node IDs TLV is:</t>

          <figure align="left">
            <artwork align="left"><![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    | Starting Index                |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |L| Reserved    | Node IDs ...
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  Node IDs continued ....   
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]></artwork>
          </figure>

          <t><list>
              <t>Type: TBD2</t>

              <t>Length: 3 + ((System ID Length + 1) * (number of node
              IDs))</t>

              <t>Starting index: The index of the first node ID that appears
              in this TLV.</t>

              <t>L (Last): This bit is set if the index of the last node ID
              that appears in this TLV is equal to the last index in the full
              list of node IDs for the area.</t>

              <t>Node IDs: A concatenated list of node IDs for the area</t>
            </list></t>

          <t>If there are multiple IS-IS Area Node IDs TLVs with the L-bit set
          advertised by the same node, the TLV which specifies the smaller
          maximum index is used and the other TLV(s) with L-bit set are
          ignored. TLVs which specify node IDs with indices greater than that
          specified by the TLV with the L-bit set are also ignored.</t>
        </section>

        <section anchor="ISIS_FLOOD_PATH_TLV" title="IS-IS Flooding Path TLV">
          <t>The IS-IS Flooding Path TLV is only used in centralized mode.</t>

          <t>The Flooding Path TLV is used to denote a path in the flooding
          topology. The goal is an efficient encoding of the links of the
          topology. A single link is a simple case of a path that only covers
          two nodes. A connected path may be described as a sequence of
          indices: (I1, I2, I3, ...), denoting a link from the system with
          index 1 to the system with index 2, a link from the system with
          index 2 to the system with index 3, and so on.</t>

          <t>If a path exceeds the size that can be stored in a single TLV,
          then the path may be distributed across multiple TLVs by the
          replication of a single system index.</t>

          <t>Complex topologies that are not a single path can be described
          using multiple TLVs.</t>

          <t>The Flooding Path TLV contains a list of system indices relative
          to the systems advertised through the Area Node IDs TLV. At least 2
          indices must be included in the TLV. Due to the length restriction
          of TLVs, this TLV can contain at most 126 system indices.</t>

          <t>The Flooding Path TLV has the format:</t>

          <figure align="left">
            <artwork align="left"><![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    | Starting Index                |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | Index 2                       | Additional indices ...
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]></artwork>
          </figure>

          <t><list>
              <t>Type: TBD3</t>

              <t>Length: 2 * (number of indices in the path)</t>

              <t>Starting index: The index of the first system in the
              path.</t>

              <t>Index 2: The index of the next system in the path.</t>

              <t>Additional indices (optional): A sequence of additional
              indices to systems along the path.</t>
            </list></t>
        </section>

        <section anchor="ISIS_FLOODING_REQUEST_TLV"
                 title="IS-IS Flooding Request TLV">
          <t>The Flooding Request TLV allows a system to request an adjacent
          node to enable flooding towards it on a specific link in the case
          where the connection to the adjacent node is not part of the existing
          flooding topology.</t>

          <t>A node that supports Dynamic Flooding MAY include the Flooding
          Request TLV in its Intermediate System to Intermediate
	  System Hello (IIH) Protocol Data Units (PDUs).</t>

          <t>The Flooding Request TLV has the format:</t>

          <figure align="left">
            <artwork align="left"><![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    |   Levels      |    Scope      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    ...        |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]></artwork>
          </figure>

          <t><list>
              <t>Type: TBD9</t>

              <t>Length: 1 + number of advertised Flooding Scopes</t>

              <t>Levels: the level(s) for which flooding is requested. Levels
              are encoded as the circuit type as specified in <xref
              target="ISO10589">IS-IS</xref></t>

              <t>Scope (8 bits): Flooding
              Scope for which the flooding is requested as defined in
              the LSP Flooding Scope Identifier Registry as created by
              <xref target="RFC7356"/>. Inclusion of flooding scopes
              is optional and is only necessary if <xref
              target="RFC7356"/> is supported. Multiple flooding
              scopes MAY be included. Values are restricted to the
              range 0..127. </t>
            </list></t>

          <t>Circuit Flooding Scope MUST NOT be sent in the Flooding Request
          TLV and MUST be ignored if received.</t>

          <t>When the TLV is received in a level-specific LAN-Hello PDU
          (L1-LAN-IIH or L2-LAN-IIH), only levels that match the PDU type are
          valid. Levels that do not match the PDU type MUST be ignored on
          receipt.</t>

          <t>When the TLV is received in a Point-to-Point Hello (P2P-IIH), only
          levels that are supported by the established adjacency are valid.
          Levels that are not supported by the adjacency MUST be ignored on
          receipt.</t>

          <t>If flooding was disabled on the received link due to Dynamic
          Flooding, then flooding MUST be temporarily enabled over the link
          for the specified Circuit Type(s) and Flooding Scope(s) received in
          the in the Flooding Request TLV. Flooding MUST be enabled until the
          Circuit Type or Flooding Scope is no longer advertised in the
          Flooding Request TLV or the TLV no longer appears in IIH PDUs
          received on the link.</t>

          <t>When flooding is temporarily enabled on the link for any
          Circuit Type or Flooding Scope due to receiving the Flooding Request TLV,
          the receiver MUST perform standard database synchronization for the
          corresponding Circuit Type(s) and Flooding Scope(s) on the link. In
          the case of IS-IS, this results in setting the Send Routeing
	  Message (SRM) flag for all related
          LSPs on the link and sending CSNPs.</t>

          <t>So long as the Flooding Request TLV is being received, flooding
          MUST NOT be disabled for any of the Circuit Types or Flooding Scopes
          present in the Flooding Request TLV, even if the connection between
          the neighbors is removed from the flooding topology. Flooding for
          such Circuit Types or Flooding Scopes MUST continue on the link and
          be considered temporarily enabled.</t>
        </section>

        <section title="IS-IS LEEF Advertisement">
          <t>In support of advertising which edges are currently enabled in
          the flooding topology, an implementation MAY indicate that a link is
          part of the flooding topology by advertising a bit-value in the Link
          Attributes sub-TLV defined by <xref target="RFC5029"/>.</t>

          <t>The following bit-value is defined by this document:</t>

          <t>Local Edge Enabled for Flooding (LEEF) - suggested value 4 (to be
          assigned by IANA)</t>
        </section>
      </section>

      <section title="OSPF LSAs and TLVs">
        <t>This section defines new LSAs and TLVs for both OSPFv2 and
        OSPFv3.</t>

        <t>
          The following LSAs and TLVs/sub-TLVs are added to
          OSPFv2/OSPFv3:

          <list style="numbers">
            <t>A TLV that is used to advertise the preference for becoming
            the Area Leader.</t>

            <t>A TLV that is used to indicate the support for Dynamic Flooding
            and the algorithms that the advertising node supports for
            distributed mode, if any.</t>

            <t>An OSPFv2 Opaque LSA and OSPFv3 LSA to advertise the flooding
            topology for centralized mode.</t>

            <t>A TLV to advertise the list of Router IDs that comprise the
            flooding topology for the area.</t>

            <t>A TLV to advertise a path that is part of the flooding
            topology.</t>

            <t>A bit in the LLS Type 1 Extended Options and Flags that
            requests
            flooding from the adjacent node.</t>
          </list></t>

        <section anchor="OSPF_AREA_LEADER_SUBTLV"
                 title="OSPF Area Leader Sub-TLV">
          <t>The usage of the OSPF Area Leader Sub-TLV is identical to IS-IS
          and is described in <xref target="ISIS_AREA_LEADER_SUBTLV"/>.</t>

          <t>The OSPF Area Leader Sub-TLV is used by both OSPFv2 and
          OSPFv3.</t>

          <t>The OSPF Area Leader Sub-TLV is advertised as a top-level TLV of
          the RI LSA that is defined in <xref target="RFC7770"/> and has the
          following format:</t>

          <figure>
            <artwork><![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            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Priority   |   Algorithm   |            Reserved           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  ]]></artwork>
          </figure>

          <t><list style="hanging">
              <t>Type: TBD4</t>

              <t>Length: 4 octets</t>

              <t>Priority: 0-255, unsigned integer</t>

              <t>Algorithm: As defined in <xref
              target="ISIS_AREA_LEADER_SUBTLV"/>.</t>
            </list></t>
        </section>

        <section anchor="OSPF_DYNAMIC_FLOODING_SUBTLV"
                 title="OSPF Dynamic Flooding Sub-TLV">
          <t>The usage of the OSPF Dynamic Flooding Sub-TLV is identical to
          IS-IS and is described in <xref
          target="ISIS_DYNAMIC_FLOODING_SUBTLV"/>.</t>

          <t>The OSPF Dynamic Flooding Sub-TLV is used by both OSPFv2 and
          OSPFv3.</t>

          <t>The OSPF Dynamic Flooding Sub-TLV is advertised as a top-level
          TLV of the RI LSA that is defined in <xref target="RFC7770"/> and
          has the following format:</t>

          <figure>
            <artwork><![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            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Algorithm ... |                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  ]]></artwork>
          </figure>

          <t><list style="hanging">
              <t>Type: TBD8</t>

              <t>Length: Number of Algorithms</t>

              <t>Algorithm: As defined in <xref
              target="ISIS_AREA_LEADER_SUBTLV"/>.</t>
            </list></t>
        </section>

        <section anchor="OSPFV2_DYNAMIC_FLOOD_LSA"
                 title="OSPFv2 Dynamic Flooding Opaque LSA">
          <t>The OSPFv2 Dynamic Flooding Opaque LSA is only used in
          centralized mode.</t>

          <t>The OSPFv2 Dynamic Flooding Opaque LSA is used to advertise
          additional data related to dynamic flooding in OSPFv2. OSPFv2
          Opaque LSAs are described in <xref target="RFC5250"/>.</t>

          <t>Multiple OSPFv2 Dynamic Flooding Opaque LSAs can be advertised by
          an OSPFv2 router. The flooding scope of the OSPFv2 Dynamic Flooding
          Opaque LSA is area-local.</t>

          <t>The format of the OSPFv2 Dynamic Flooding Opaque LSA is as
          follows:</t>

          <t><figure title="OSPFv2 Dynamic Flooding Opaque LSA">
              <artwork><![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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            LS age             |     Options   |   LS Type     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      TBD5     |                 Opaque ID                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Advertising Router                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     LS sequence number                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         LS checksum           |             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +-                            TLVs                             -+
   |                             ...                               |
    ]]></artwork>
            </figure></t>

          <t>The opaque type used by OSPFv2 Dynamic Flooding Opaque LSA is
          TBD. The opaque type is used to differentiate the various types of
          OSPFv2 Opaque LSAs as described in section 3 of <xref
          target="RFC5250"/>. The LS Type is 10. The LSA Length field <xref
          target="RFC2328"/> represents the total length (in octets) of the
          Opaque LSA including the LSA header and all TLVs (including
          padding).</t>

          <t>The Opaque ID field is an arbitrary value used to maintain
          multiple Dynamic Flooding Opaque LSAs. For OSPFv2 Dynamic Flooding
          Opaque LSAs, the Opaque ID has no semantic significance other than
          to differentiate Dynamic Flooding Opaque LSAs originated
          from the same
          OSPFv2 router.</t>

          <t>The format of the TLVs within the body of the OSPFv2 Dynamic
          Flooding Opaque LSA is the same as the format used by the Traffic
          Engineering Extensions to OSPF <xref target="RFC3630"/>.</t>

          <t>The Length field defines the length of the value portion in
          octets (thus a TLV with no value portion would have a length of 0).
          The TLV is padded to a 4-octet alignment; padding is not included in
          the length field (so a 3-octet value would have a length of 3, but
          the total size of the TLV would be 8 octets). Nested TLVs are also
          32-bit aligned. For example, a 1-octet value would have the length
          field set to 1, and 3 octets of padding would be added to the end of
          the value portion of the TLV. The padding is composed of zeros.</t>
        </section>

        <section anchor="OSPFV3_DYNAMIC_FLOOD_LSA"
                 title="OSPFv3 Dynamic Flooding LSA">
          <t>The OSPFv3 Dynamic Flooding Opaque LSA is only used in
          centralized mode.</t>

          <t>The OSPFv3 Dynamic Flooding LSA is used to advertise additional
          data related to dynamic flooding in OSPFv3.</t>

          <t>The OSPFv3 Dynamic Flooding LSA has a function code of TBD. The
          flooding scope of the OSPFv3 Dynamic Flooding LSA is area-local. The
          U bit will be set indicating that the OSPFv3 Dynamic Flooding LSA
          should be flooded even if it is not understood. The Link State ID
          (LSID) value for this LSA is the Instance ID. OSPFv3 routers MAY
          advertise multiple OSPFv3 Dynamic Flooding Opaque LSAs in each area.</t>

          <t>The format of the OSPFv3 Dynamic Flooding LSA is as follows:</t>

          <t><figure title="OSPFv3 Dynamic Flooding LSA">
              <artwork><![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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |            LS age             |1|0|1|          TBD6           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                    Link State ID                              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                    Advertising Router                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                    LS sequence number                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |        LS checksum            |            Length             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +-                            TLVs                             -+
    |                             ...                               |
        ]]></artwork>
            </figure></t>
        </section>

        <section anchor="OSPF_AREA_ROUTER_ID_TLV"
                 title="OSPF Area Router ID TLVs">
          <t>In OSPF, TLVs are defined to advertise indices associated
          with nodes and Broadcast/NBMA networks. Due to identifier
          differences between OSPFv2 and OSPFv3, two different TLVs are defined
          as described in the following sub-sections.</t>

          <t>The OSPF Area Router ID TLVs are used by the Area Leader
          to enumerate the Router IDs that it has used in computing
          the flooding topology. This includes the identifiers
          associated with Broadcast/NBMA networks as defined for
          Network LSAs. Conceptually, the Area Leader creates a list
          of Router IDs for all routers in the area, assigning an
          index to each router, starting with index 0.  Indices are
          implicitly assigned sequentially, with the index of the
          first node being the Starting Index and each subsequent
          node's index is the previous node's index + 1.
          </t>

          <section anchor="OSPFV2_AREA_ROUTER_ID_TLV"
                   title="OSPFv2 Area Router ID TLV">
            <t>This TLV is a top-level TLV of the OSPFv2 Dynamic Flooding
            Opaque LSA.</t>

            <t>Because the space in a single OSPFv2 opaque LSA is
            limited, more than one LSA may be required to encode all of the
            Router IDs in the area. This TLV MAY be advertised in multiple OSPFv2
            Dynamic Flooding Opaque LSAs so that all Router IDs can be
            advertised.</t>

            <t>The format of the Area Router IDs TLV is:</t>

            <figure title="OSPFv2 Area Router IDs TLV">
              <artwork><![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            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Starting Index             |L| Flags       |   Reserved    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +-        OSPFv2 Router ID TLV Entry                           -+
    |                           ...                                 |
  ]]></artwork>
            </figure>

            <t><list>
                <t>TLV Type: 1</t>

                <t>TLV Length: 4 + sum of the lengths of all TLV
                entries</t>

                <t>Starting index: The index of the first Router/Designated
                Router ID that appears in this TLV.</t>

                <t>L (Last): This bit is set if the index of the last
                Router/Designated ID that appears in this TLV is equal to the
                last index in the full list of Router IDs for the area.</t>

                <t>OSPFv2 Router ID TLV Entries: A concatenated list of Router
                ID TLV Entries for the area.</t>
              </list></t>

            <t>If there are multiple OSPFv2 Area Router ID TLVs with the L-bit
            set advertised by the same router, the TLV which specifies the
            smaller maximum index is used and the other TLV(s) with L-bit set
            are ignored. TLVs which specify Router IDs with indices greater
            than that specified by the TLV with the L-bit set are also
            ignored.</t>

            <t>Each entry in the OSPFv2 Area Router IDs TLV represents either
            a node or a Broadcast/NBMA network identifier. An entry has the
            following format:</t>

            <figure title="OSPFv2 Router IDs TLV Entry">
              <artwork><![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       
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    ID Type    |  Number of IDs                |  Reserved     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +-    Originating Router ID/DR Address                         -+
    |                     ...                                       |
]]></artwork>
            </figure>

            <t>
              <list>
              <t>ID Type: 1 octet. The following values are defined:
              <list>
                <t>1 - Router</t>
                <t>2 - Designated Router</t>
              </list>
              </t>
              <t>Number of IDs: 2 octets</t>
              <t> Reserved: 1 octet, MUST be transmitted as 0 and MUST
              be ignored on receipt </t>
              <t> Originating Router ID/DR Address:(4 * Number of IDs) octets 
              as indicated by the ID Type</t>
            </list>
            </t>

          </section>

          <section anchor="OSPFV3_AREA_ROUTER_ID_TLV"
                   title="OSPFv3 Area Router ID TLV">
            <t>This TLV is a top-level TLV of the OSPFv3 Dynamic Flooding
            LSA.</t>

            <t>Because the space in a single OSPFv3 Dynamic Flooding LSA is
            limited, more than one LSA may be required to encode all of the
            Router IDs in the area. This TLV MAY be advertised in multiple OSPFv3
            Dynamic Flooding Opaque LSAs so that all Router IDs can be
            advertised.</t>

            <t>The format of the OSPFv3 Area Router IDs TLV is:</t>

            <figure title="OSPFv3 Area Router IDs TLV">
              <artwork><![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            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Starting Index             |L| Flags       |   Reserved    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +-        OSPFv3 Router ID TLV Entry                           -+
    |                           ...                                 |
  ]]></artwork>
            </figure>

            <t><list>
                <t>TLV Type: 1</t>

                <t>TLV Length: 4 + sum of the lengths of all TLV entries</t>

                <t>Starting index: The index of the first Router/Designated
                Router ID that appears in this TLV.</t>

                <t>L (Last): This bit is set if the index of the last
                Router/Designated Router ID that appears in this TLV is equal
                to the last index in the full list of Router IDs for the
                area.</t>

                <t>OSPFv3 Router ID TLV Entries: A concatenated list of Router
                ID TLV Entries for the area.</t>
              </list></t>

            <t>If there are multiple OSPFv3 Area Router ID TLVs with the L-bit
            set advertised by the same router, the TLV which specifies the
            smaller maximum index is used and the other TLV(s) with L-bit set
            are ignored. TLVs which specify Router IDs with indices greater
            than that specified by the TLV with the L-bit set are also
            ignored.</t>

            <t>Each entry in the OSPFv3 Area Router IDs TLV represents either
            a router or a Broadcast/NBMA network identifier. An entry has the
            following format:</t>

            <figure title="OSPFv3 Router ID TLV Entry">
              <artwork><![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     
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    ID Type    |  Number of IDs                |  Reserved     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +-    Originating ID Entry                                     -+
    |                    ...                                        |

]]></artwork>
            </figure>

            <t>
              <list>
                <t>
                  ID Type - 1 octet. The following values are defined:
                <list>
                  <t>
                    1 - Router
                  </t>
                  <t>
                    2 - Designated Router
                  </t>
                </list>
                </t>
                
                <t>
                  Number of IDs - 2 octets
                </t>
                <t>
                  Reserved - 1 octet,
                  MUST be transmitted as 0 and MUST be ignored on
                  receipt
                </t>
              </list>
            </t>
            <t>
              The Originating ID Entry takes one of the following
              forms, depending on the ID Type.
            </t>
            <t>
              For a Router:
            </t>

            <figure>
              <artwork><![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     
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Originating Router ID                                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure>
            <t>
              The length of the Originating ID Entry is (4 * Number of IDs)
              octets.
            </t>
            <t>
              For a Designated Router:
            </t>

            <figure>
              <artwork><![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     
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Originating Router ID                                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Interface ID                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
            </figure>

            <t>
              The length of the Originating ID Entry is (8 * Number of
              IDs) octets
            </t>
          </section>
        </section>

        <section anchor="OSPF_FLOOD_PATH_TLV" title="OSPF Flooding Path TLV">
          <t>The OSPF Flooding Path TLV is a top-level TLV of the OSPFv2
          Dynamic Flooding Opaque LSAs and OSPFv3 Dynamic Flooding LSA.</t>

          <t>The usage of the OSPF Flooding Path TLV is identical to IS-IS and
          is described in <xref target="ISIS_FLOOD_PATH_TLV"/>.</t>

          <t>The OSPF Flooding Path TLV contains a list of Router ID indices
          relative to the Router IDs advertised through the OSPF Area Router
          IDs TLV. At least 2 indices must be included in the TLV.</t>

          <t>Multiple OSPF Flooding Path TLVs can be advertised in a single
          OSPFv2 Dynamic Flooding Opaque LSA or OSPFv3 Dynamic Flooding LSA.
          OSPF Flooding Path TLVs can also be advertised in multiple OSPFv2
          Dynamic Flooding Opaque LSAs or OSPFv3 Dynamic Flooding LSA, if they
          all can not fit in a single LSA.</t>

          <t>The Flooding Path TLV has the format:</t>

          <figure title="OSPF Flooding Path TLV">
            <artwork><![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            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Starting Index             |       Index 2                 |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +-                        Additional Indices                   -+
    |                           ...                                 | 
 ]]></artwork>
          </figure>

          <t><list>
              <t>TLV Type: 2</t>

              <t>TLV Length: 2 * (number of indices in the path)</t>

              <t>Starting index: The index of the first Router ID in the
              path.</t>

              <t>Index 2: The index of the next Router ID in the path.</t>

              <t>Additional indices (optional): A sequence of additional
              indices to Router IDs along the path.</t>
            </list></t>
        </section>

        <section anchor="OSPF_FLOODING_REQUEST_BIT"
                 title="OSPF Flooding Request Bit">
          <t>A single new option bit, the Flooding Request (FR) bit, is
          defined in the LLS Type 1 Extended Options and Flags field <xref
          target="RFC5613"/>. The FR bit allows a router to request an
          adjacent node to enable flooding towards it on a specific link in
          the case where the connection to the adjacent node is not part of the
          current flooding topology.</t>

          <t>A node that supports Dynamic Flooding MAY include the
          FR bit in its OSPF LLS Extended Options and Flags TLV.</t>

          <t>If the FR bit is signaled for a link on which flooding was
          disabled due to Dynamic Flooding, then flooding MUST be
          temporarily enabled over the link. Flooding MUST be
          enabled until the FR bit is no longer advertised in the OSPF LLS
          Extended Options and Flags TLV or the OSPF LLS Extended Options and
          Flags TLV no longer appear in the OSPF Hellos.</t>

          <t>When flooding is temporarily enabled on the link for any area
          due to receiving the FR bit in the OSPF LLS Extended Options and Flags TLV,
          the receiver MUST perform standard database synchronization
          for the area corresponding to the link. If the adjacency is already in
          the FULL state, the mechanism specified in <xref target="RFC4811"/> MUST
          be used for database resynchronization.</t>

          <t>So long as the FR bit is being received in the OSPF LLS Extended
          Options and Flags TLV for a link, flooding MUST NOT be
          disabled on the link even if the connection between the neighbors is removed
          from the flooding topology. Flooding MUST continue on
          the link and be considered as temporarily enabled.</t>
        </section>

        <section anchor="OSPF_LEEF_ADVERTISEMENT"
                 title="OSPF LEEF Advertisement">
          <t>In support of advertising the specific edges that are
          currently enabled in the flooding topology, an
          implementation MAY indicate that a link is part of the
          flooding topology. The OSPF Link Attributes Bits TLV is
          defined to support this advertisement.</t>

          <figure title="OSPF Link Attributes Bits TLV">
            <artwork><![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            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Link Attribute Bits                                        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +-            Additional Link Attribute Bits                   -+
    |                           ...                                 | 
 ]]></artwork>
          </figure>

          <t>Type: TBD and specific to OSPFv2 and OSPFv3</t>

          <t>Length: Size of the Link Attribute Bits in octets. It MUST be a
          multiple of 4 octets.</t>

          <t>The following bits are defined:</t>

          <t>Bit #0: - Local Edge Enabled for Flooding (LEEF)</t>

          <t>OSPF Link-attribute Bits TLV appears as:</t>

          <t>1. A sub-TLV of the OSPFv2 Extended Link TLV <xref
          target="RFC7684"/></t>

          <t>2. A sub-TLV of the OSPFv3 Router-Link TLV <xref
          target="RFC8362"/></t>
        </section>
      </section>
    </section>

    <section anchor="BEHAVIOR" title="Behavioral Specification">
      <t>This section specifies the detailed behavior of the nodes
      participating in the IGP.</t>

      <section anchor="TERMINOLOGY" title="Terminology">
        <t>Some terminology to be used in the following
        sections: <list style="hanging">
            <t>A node is considered reachable if it is part of the
            connected network graph. Note that this is independent of
            any constraints that may be considered when performing IGP
            shortest-path tree calculation (e.g., link metrics,
            overload bit state, etc.). The two-way connectivity check
            MUST be performed before including an edge in the
            connected network graph.</t>

            <t>A node is connected to the flooding topology, if it has at least
            one local link, which is part of the flooding topology.</t>

            <t>A node is disconnected from the flooding topology when it is not
            connected to the flooding topology.</t>

            <t>Current flooding topology - The latest version of the
            flooding topology that has been received (in the case of
            centralized mode) or calculated locally (in the case of
            distributed mode).</t>
          </list></t>
      </section>

      <section anchor="FT_PROP" title="Flooding Topology">
        <t>The flooding topology MUST include all reachable nodes in the
        area.</t>

        <t>If a node's reachability changes, the flooding topology MUST be
        recalculated. In centralized mode, the Area Leader MUST advertise a
        new flooding topology.</t>

        <t>If a node becomes disconnected from the current flooding topology
        but is still reachable, then a new flooding topology MUST be
        calculated. In centralized mode, the Area Leader MUST advertise the new
        flooding topology.</t>

        <t>
          The flooding topology SHOULD be bi-connected to provide
          network resiliency, but this does incur some amount of
          redundant flooding. Xia topologies (<xref target="Xia"/>)
          are an example of an explicit decision to sacrifice
          resiliency to avoid redundancy.
        </t>
      </section>

      <section title="Leader Election">
        <t>Any capable node MAY advertise its eligibility to become the
        Area Leader.</t>

        <t>Nodes that are not reachable are not eligible to become the
        Area Leader. Nodes that do not advertise their eligibility to
        become the Area Leader are not eligible. Amongst the eligible
        nodes, the node with the numerically highest priority is the
        Area Leader. If multiple nodes all have the highest priority,
        then the node with the numerically highest system identifier
        in the case of IS-IS, or Router-ID in the case of OSPFv2 and
        OSPFv3 is the Area Leader.</t>
      </section>

      <section title="Area Leader Responsibilities">
        <t>If the Area Leader operates in centralized mode, it MUST advertise
        algorithm 0 in its Area Leader Sub-TLV. For Dynamic Flooding
        to be enabled, it also MUST compute and advertise a flooding topology
        for the area. The Area Leader may update the flooding topology at any
        time, however, it should not destabilize the network with undue or
        overly frequent topology changes. If the Area Leader operates in
        centralized mode and needs to advertise a new flooding topology, it
        floods the new flooding topology on both the new and old flooding
        topologies.</t>

        <t>If the Area Leader operates in distributed mode, it MUST advertise
        a non-zero algorithm in its Area Leader Sub-TLV.</t>

        <t>When the Area Leader advertises algorithm 0 in its Area Leader
        Sub-TLV and does not advertise a flooding topology, Dynamic Flooding
        is disabled for the area. Note this applies whether the Area Leader
        intends to operate in centralized mode or distributed mode.</t>

        <t>Note that once Dynamic Flooding is enabled, disabling it risks
        destabilizing the network due to the issues discussed in <xref
        target="Intro"/>.</t>
      </section>

      <section title="Distributed Flooding Topology Calculation">
        <t>If the Area Leader advertises a non-zero algorithm in its Area
        Leader Sub-TLV, all nodes in the area that support Dynamic Flooding
        and support the algorithm advertised by the Area Leader MUST compute
        the flooding topology based on the Area Leader's advertised
        algorithm.</t>

        <t>Nodes that do not support the advertised algorithm MUST
        continue to use standard IS-IS/OSPF flooding mechanisms.
        Nodes that do not support the flooding algorithm advertised by
        the Area Leader MUST be considered as Dynamic Flooding
        incapable nodes by the Area Leader.</t>

        <t>If the value of the algorithm advertised by the Area Leader is from
        the range 128-254 (private distributed algorithms), it is the
        responsibility of the network operator to guarantee that all nodes in
        the area agree on the dynamic flooding algorithm corresponding
        to the advertised value.</t>
      </section>

      <section title="Use of LANs in the Flooding Topology">
        <t>The use of LANs in the flooding topology differs depending on whether
        the area is operating in centralized mode or distributed mode.</t>

        <section title="Use of LANs in Centralized mode">
          <t>As specified in Section 4.5, when a LAN is advertised as part of
          the flooding topology, all nodes connected to the LAN are assumed to
          be using the LAN as part of the flooding topology. This assumption
          is made to reduce the size of the Flooding Topology
          advertisement.</t>
        </section>

        <section title="Use of LANs in Distributed Mode">
          <t>In distributed mode, the flooding topology is NOT
          advertised, therefore the space consumed to advertise it is
          not a concern. It is therefore possible to assign only a
          subset of the nodes connected to the LAN to use the LAN as
          part of the flooding topology. Doing so may further optimize
          flooding by reducing the amount of redundant flooding on a
          LAN. However, support of flooding by a subset of the nodes
          connected to a LAN requires some modest, but
          backward-compatible, changes in the way flooding is
          performed on a LAN.</t>

          <section title="Partial flooding on a LAN in IS-IS">
            <t>The Designated Intermediate System (DIS) for a LAN MUST
            use the standard flooding behavior.</t>

            <t>Non-DIS nodes whose connection to the LAN is included in the
            flooding topology MUST use the standard flooding behavior.</t>

            <t>Non-DIS nodes whose connection to the LAN is NOT included in
            the flooding topology behave as follows:</t>

            <t><list style="symbols">
                <t>Received CSNPs from the DIS are ignored.</t>

                <t>Partial Sequence Number Protocol Data Units (PSNPs)
                are NOT originated on the LAN.</t>

                <t>An LSP received on the LAN that is newer than the
                corresponding LSP present in the LSPDB is retained and
                flooded on all local circuits which are part of the flooding
                topology (i.e., do not discard newer LSPs simply because they
                were received on a LAN which the receiving node is not using
                for flooding).</t>

                <t>An LSP received on the LAN which is older or the same as the
                corresponding LSP in the LSPDB is silently
                discarded.</t>

                <t>LSPs received on links other than the LAN are NOT flooded
                on the LAN.</t>
              </list></t>

            <t>NOTE: If any node connected to the LAN requests the enablement
            of temporary flooding, all nodes MUST revert to the standard flooding
            behavior on the LAN.</t>
          </section>

          <section title="Partial Flooding on a LAN in OSPF">
            <t>The Designated Router (DR) and Backup Designated Router (BDR) for
            LANs MUST use the standard flooding behavior.</t>

            <t>Non-DR/BDR nodes with a connection to a LAN that is
            included in the flooding topology use the standard
            flooding behavior on that LAN.</t>

            <t>Non-DR/BDR nodes with a connection to a LAN that is NOT
            included in the flooding topology behave as follows:</t>

            <t><list style="symbols">
                <t>LSAs received on the LAN are acknowledged to the DR/BDR.</t>

                <t>LSAs received on interfaces other than the LAN are NOT
                flooded on the LAN.</t>
              </list></t>

            <t>NOTE: If any node connected to the LAN requests the enablement
            of temporary flooding, all nodes revert to the standard flooding
            behavior.</t>

            <t>NOTE: The sending of LSA Acks by nodes NOT using the LAN as
            part of the flooding topology eliminates the need for changes on
            the part of the DR/BDR, which might include nodes that do
            not support the dynamic flooding algorithm.</t>
          </section>
        </section>
      </section>

      <section title="Flooding Behavior" anchor="FLOODING_BEHAVIOR">
        <t>Nodes that support Dynamic Flooding MUST use the flooding topology
        for flooding when possible, and MUST NOT revert to standard flooding
        when a valid flooding topology is available.</t>

        <t>In some cases, a node that supports Dynamic Flooding may need to add
        a local link(s) to the flooding topology temporarily, even though the
        link(s) is not part of the calculated flooding topology. This is
        termed "temporary flooding" and is discussed in <xref
        target="TEMP_FLOOD"/>.</t>

        <t>In distributed mode, the flooding topology is calculated locally.
        In centralized mode, the flooding topology is
        advertised in the area link state database. Received link state
        updates, whether received on a link that is in the flooding topology
        or on a link that is not in the flooding topology, MUST be flooded on
        all links that are in the flooding topology, except for the link on
        which the update was received.</t>

	<t>
	  In centralized mode, new information in the form of new
	  paths or new node ID assignments can be received at any
	  time. This may replace some or all of the existing
	  information about the flooding topology. There may be
	  transient conditions where the information that a node has
	  is inconsistent or incomplete. If a node detects that its
	  current information is inconsistent, then the node may wait
	  for an implementation-specific amount of time, expecting more
	  information to arrive that will provide a consistent,
	  complete view of the flooding topology.
	</t>

	<t>
	  In both centralized and distributed mode, if a node
	  determines that some of its adjacencies are to be added to
	  the flooding topology, it should add those and begin
	  flooding on those adjacencies immediately.  If a node
	  determines that adjacencies are to be removed from the
	  flooding topology, then it should wait for an
	  implementation-specific amount of time before acting on that
	  information. This serves to ensure that new information is
	  flooded promptly and completely, allowing all nodes to
	  receive updates in a timely fashion.
	</t>
      </section>

      <section title="Treatment of Topology Events">
        <t>This section explicitly considers a variety of different
        topological events in the network and how Dynamic Flooding should
        address them.</t>

        <section anchor="TEMP_FLOOD"
                 title="Temporary Addition of Links to the Flooding Topology">
          <t>In some cases, a node that supports Dynamic Flooding may need to
          add a local link(s) to the flooding topology temporarily, even
          though the link(s) is not part of the calculated flooding topology.
          This is referred to as "temporary flooding" on the link.</t>

          <t>When temporary flooding is enabled on the link, the flooding
          needs to be enabled in both directions on the link. To achieve
          that, the following steps MUST be performed: <list style="hanging">
              <t>The Link State Database needs to be re-synchronised on the link.
              This is done using the standard protocol mechanisms. In the case
              of IS-IS, this results in setting the SRM bit for all LSPs on the
              circuit and sending a complete set of CSNPs on the link. In OSPF, the
              mechanism specified in <xref target="RFC4811"/> is used.</t>

              <t>Flooding is enabled locally on the link.</t>

              <t>Flooding is requested from the neighbor using the mechanism
              specified in section <xref target="ISIS_FLOODING_REQUEST_TLV"/>
              or <xref target="OSPF_FLOODING_REQUEST_BIT"/>.</t>
            </list></t>

            <t>
              The request for temporary flooding MUST be withdrawn on
              the link when all of the following conditions are met:
          <list style="hanging">
            <t>
              The node itself is connected to the current flooding
              topology.
            </t>

            <t>
              The adjacent node is connected to the current
              flooding topology.
            </t>
          </list>
          Any change in the flooding topology MUST result in an
          evaluation of the above conditions for any link on which
          temporary flooding was enabled.
          </t>

          <t>Temporary flooding is stopped on the link when both adjacent
          nodes stop requesting temporary flooding on the link.</t>
        </section>

        <section anchor="LOCAL_LINK_ADD" title="Local Link Addition">
          <t>If a local link is added to the topology, the protocol will form
          a normal adjacency on the link and update the appropriate link state
          advertisements for the nodes on either end of the link. These link
          state updates will be flooded on the flooding topology.</t>

          <t>In centralized mode, the Area Leader, upon receiving
          these updates, may choose to retain the existing flooding
          topology or may choose to modify the flooding topology. If
          the Area Leader decides to change the flooding topology, it
          will update the flooding topology in the link state database
          and flood it using the new flooding topology.</t>

          <t>In distributed mode, any change in the topology, including the
          link addition, MUST trigger the flooding topology recalculation.
          This is done to ensure that all nodes converge to the same flooding
          topology, regardless of the time of the calculation.</t>

          <t>Temporary flooding MUST be enabled on the newly added local link,
          as long as at least one of the following conditions are met: <list
              style="hanging">
              <t>The node on which the local link was added is not connected
              to the current flooding topology.</t>

              <t>The new adjacent node is not connected to the current
              flooding topology.</t>
            </list></t>

          <t>Note that in this case there is no need to perform a database
          synchronization as part of the enablement of the temporary flooding,
          because it was part of the adjacency bring-up itself.</t>

          <t>If multiple local links are added to the topology before the
          flooding topology is updated, temporary flooding MUST be enabled on
          a subset of these links per the conditions discussed in
          <xref target="RATE_LIMIT"/>.</t>
        </section>

        <section anchor="NODE_ADDITION" title="Node Addition">
          <t>If a node is added to the topology, then at least one link is
          also added to the topology. <xref target="LOCAL_LINK_ADD"/>
          applies.</t>

          <t>A node that has a large number of neighbors is at risk of
          introducing a local flooding storm if all neighbors are brought up
          at once and temporary flooding is enabled on all links
          simultaneously. The most robust way to address this is to limit the
          rate of initial adjacency formation following bootup. This
          reduces unnecessary redundant flooding as part of initial database
          synchronization and minimizes the need for temporary flooding as it
          allows time for the new node to be added to the flooding topology
          after only a small number of adjacencies have been formed.</t>

          <t>In the event a node elects to bring up a large number of
          adjacencies simultaneously, a significant amount of redundant
          flooding may be introduced as multiple neighbors of the new node
          enable temporary flooding to the new node which initially is not
          part of the flooding topology.</t>
        </section>

        <section anchor="FAIL_NOT_ON_TOPO"
                 title="Failures of Links Not on the Flooding Topology">
          <t>If a link that is not part of the flooding topology fails, then
          the adjacent nodes will update their link state advertisements and
          flood them on the flooding topology.</t>

          <t>In centralized mode, the Area Leader, upon receiving these
          updates, may choose to retain the existing flooding topology or may
          choose to modify the flooding topology. If it elects to change the
          flooding topology, it will update the flooding topology in the link
          state database and flood it using the new flooding topology.</t>

          <t>In distributed mode, any change in the topology, including the
          failure of the link that is not part of the flooding topology MUST
          trigger the flooding topology recalculation. This is done to ensure
          that all nodes converge to the same flooding topology, regardless of
          the time of the calculation.</t>
        </section>

        <section anchor="FAIL_ON_TOPO"
                 title="Failures of Links On the Flooding Topology">
          <t>If there is a failure on the flooding topology, the adjacent
          nodes will update their link state advertisements and flood them. If
          the original flooding topology is bi-connected, the flooding
          topology should still be connected despite a single failure.</t>

          <t>If the failed local link represented the only connection to the
          flooding topology on the node where the link failed, the node MUST
          enable temporary flooding on a subset of its local links. This
          allows the node to send its updated link state advertisement(s) and
          also, keep receiving link state updates from other nodes in the
          network before the new flooding topology is calculated and
          distributed (in the case of centralized mode).</t>

          <t>In centralized mode, the Area Leader will notice the change in
          the flooding topology, recompute the flooding topology, and flood it
          using the new flooding topology.</t>

          <t>In distributed mode, all nodes supporting dynamic flooding will
          notice the change in the topology and recompute the new flooding
          topology.</t>
        </section>

        <section anchor="NODE_DEL" title="Node Deletion">
          <t>If a node is deleted from the topology, then at least one link is
          also removed from the topology. <xref target="FAIL_NOT_ON_TOPO"/>
          and <xref target="FAIL_ON_TOPO"/> apply.</t>
        </section>

        <section anchor="LINK_ADD_FLOOD"
                 title="Local Link Addition to the Flooding Topology">
          <t>
            If the flooding topology changes and a local link that was
            not part of the flooding topology is now part of the
            flooding topology, then the node MUST:
            <list style="hanging">
              <t>Re-synchronize the Link State Database over the link. This is
              done using the standard protocol mechanisms. In the case of
              IS-IS, this requires sending a complete set of CSNPs. In OSPF, the
              mechanism specified in <xref target="RFC4811"/> is used.</t>

              <t>Make the link part of the flooding topology and start
              flooding on it.</t>
            </list></t>
        </section>

        <section anchor="LOCAL_LINK_DEL"
                 title="Local Link Deletion from the Flooding Topology">
          <t>
            If the flooding topology changes and a local link that was
            part of the flooding topology is no longer part of the
            flooding topology, then the node MUST remove the link from
            the flooding topology.
          </t>

          <t>The node MUST keep flooding on such link for a limited amount of
          time to allow other nodes to migrate to the new flooding
          topology.</t>

          <t>If the removed local link represented the only connection to the
          flooding topology on the node, the node MUST enable temporary
          flooding on a subset of its local links. This allows the node to
          send its updated link state advertisement(s) and also keep receiving
          link state updates from other nodes in the network before the new
          flooding topology is calculated and distributed (in the case of
          centralized mode).</t>
        </section>

        <section anchor="TREAT_DISC"
                 title="Treatment of Disconnected Adjacent Nodes">
          <t>
	    Every time there is a change in the flooding topology, a
	    node MUST check if any adjacent nodes are disconnected
	    from the current flooding topology. Temporary flooding
	    MUST be enabled towards a subset of the disconnected nodes
	    per the discussion in <xref target="RATE_LIMIT"/> and
	    <xref target="FLOODING_BEHAVIOR"/>.
	  </t>
        </section>

        <section anchor="FAIL_LEADER" title="Failure of the Area Leader">
          <t>The failure of the Area Leader can be detected by observing that
          it is no longer reachable. In this case, the Area Leader election
          process is repeated and a new Area Leader is elected.</t>

          <t>To minimize disruption to Dynamic Flooding if the Area
          Leader becomes unreachable, the node that has the
          second-highest priority for becoming Area Leader (including
          the system identifier/Router-ID tie-breaker if necessary)
          SHOULD advertise the same algorithm in its Area Leader
          Sub-TLV as the Area Leader and (in centralized mode) SHOULD
          advertise a flooding topology. This SHOULD be done even when
          the Area Leader is reachable.</t>

          <t>In centralized mode, the new Area Leader will compute a new
          flooding topology and flood it using the new flooding topology. To
          minimize disruption, the new flooding topology SHOULD have as much in
          common as possible with the old flooding topology. This will
          minimize the risk of over-flooding.</t>

          <t>In the distributed mode, the new flooding topology will be
          calculated on all nodes that support the algorithm that is
          advertised by the new Area Leader. Nodes that do not support the
          algorithm advertised by the new Area Leader will no longer
          participate in Dynamic Flooding and will revert to standard
          flooding.</t>
        </section>

        <section anchor="PARTITIONED_FT"
                 title="Recovery from Multiple Failures">
          <t>In the event of multiple failures on the flooding
          topology, it may become partitioned. The nodes that remain active on
          the edges of the flooding topology partitions will recognize this
          and will try to repair the flooding topology locally by enabling
          temporary flooding towards the nodes that they consider disconnected
          from the flooding topology until a new flooding topology becomes
          connected again.</t>

          <t>Nodes, where local failure was detected, update their link
          state advertisements and flood them on the remainder of the
          flooding topology.</t>

          <t>In centralized mode, the Area Leader will notice the change in
          the flooding topology, recompute the flooding topology, and flood it
          using the new flooding topology.</t>

          <t>In distributed mode, all nodes that actively participate in
          Dynamic Flooding will compute the new flooding topology.</t>

          <t>Note that this is very different from the area partition because
          there is still a connected network graph between the nodes in the
          area. The area may remain connected and forwarding may still be
          functioning correctly.</t>
        </section>

        <section anchor="RATE_LIMIT" title="Rate-Limiting Temporary Flooding">
          <t>As discussed in the previous sections, some events
          require the introduction of temporary flooding on edges that
          are not part of the current flooding topology. This can
          occur regardless of whether the area is operating in
          centralized mode or distributed mode.</t>

          <t>Nodes that decide to enable temporary flooding also have
          to decide whether to do so on a subset of the edges that are
          currently not part of the flooding topology or on all the
          edges that are currently not part of the flooding
          topology. Doing the former risks a longer convergence time
          as it may miss vital edges and not fully repair the flooding
          topology. Doing the latter risks introducing a flooding
          storm that destabilizes the network.</t>

          <t>It is recommended that a node rate limit the number of
          edges on which it chooses to enable temporary flooding.
          Initial values for the number of edges on which to enable
          temporary flooding and the rate at which additional edges
          may subsequently be enabled is left as an implementation
          decision.</t>
        </section>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <section title="IS-IS">
        <t>
          This document requests the following code points from the "IS-IS 
          Sub-TLVs for IS-IS Router CAPABILITY TLV" registry (IS-IS TLV 242).

          <list style="hanging">
            <t>
              Type: TBD1
            </t>

            <t>
              Description: IS-IS Area Leader Sub-TLV
            </t>

            <t>
              Reference: This document (<xref
              target="ISIS_AREA_LEADER_SUBTLV"/>)
            </t>
          </list>
          <list style="hanging">
            <t>Type: TBD7</t>

            <t>Description: IS-IS Dynamic Flooding Sub-TLV</t>

            <t>Reference: This document (<xref
            target="ISIS_DYNAMIC_FLOODING_SUBTLV"/>)</t>
          </list>
        </t>

        <t>
          This document requests that IANA allocate and assign code
          points from the "IS-IS Top-Level TLV Codepoints" registry.
          One for each of the following TLVs:
        </t>

        <t>
          <list style="hanging">
            <t>Type: TBD2</t>

            <t>Description: IS-IS Area System IDs TLV</t>

            <t>
              Reference: This document (<xref
              target="ISIS_AREA_SYSTEM_ID_TLV"/>)
            </t> 
          </list>
        </t>

        <t>
          <list style="hanging">
            <t>Type: TBD3</t>

            <t>Description: IS-IS Flooding Path TLV</t>
            
            <t>
              Reference: This document (<xref
              target="ISIS_FLOOD_PATH_TLV"/>)
            </t>
          </list>
        </t>

        <t>
          <list style="hanging">
            <t>Type: TBD9</t>

            <t>Description: IS-IS Flooding Request TLV</t>

            <t>
              Reference: This document (<xref
              target="ISIS_FLOODING_REQUEST_TLV"/>)
            </t>
          </list>
        </t>
        <t>
          This document requests that IANA extend the "IS-IS Neighbor
          Link-Attribute Bit Values" registry to contain a "L2BM"
          column that indicates if a bit may appear in an L2 Bundle
          Member Attributes TLV. All existing rows should
          have the value "N" for "L2BM". The following explanatory
          note should be added to the registry:
        </t>
        <blockquote>
          <t>
            The "L2BM" column indicates applicability to the L2 Bundle Member
            Attributes TLV. The options for the "L2BM" column are:
          </t>
          <t>
            Y - This bit <bcp14>MAY</bcp14> appear in the L2
            Bundle Member Attributes TLV.
          </t>
          <t>
            N - This bit <bcp14>MUST NOT</bcp14> appear in the
            L2 Bundle Member Attributes TLV.
          </t>
        </blockquote>

        <t>
          This document requests that IANA allocate a new bit-value
          from the "IS-IS Neighbor Link-Attribute Bit Values"
          registry.
        </t>

        <t>
          <list style="hanging">
            <t>
              Value: 0x4 (suggested, to be assigned by IANA)
            </t>
            <t>
              L2BM: N
            </t>
            <t>
              Name: Local Edge Enabled for Flooding (LEEF)
            </t>
            <t>
              Reference: This document
            </t>
          </list>
        </t>
      </section>

      <section title="OSPF">
        <t>This document requests the following code points from the "OSPF
        Router Information (RI) TLVs" registry: <list style="hanging">
        <t>Type: TBD4</t>

        <t>Description: OSPF Area Leader Sub-TLV</t>

        <t>Reference: This document (<xref
        target="OSPF_AREA_LEADER_SUBTLV"/>)</t>
        </list> <list style="hanging">
        <t>Type: TBD8</t>

        <t>Description: OSPF Dynamic Flooding Sub-TLV</t>

        <t>Reference: This document (<xref
        target="OSPF_DYNAMIC_FLOODING_SUBTLV"/>)</t>
      </list></t>

      <t>This document requests the following code point from the "Opaque
      Link-State Advertisements (LSA) Option Types" registry: <list
      style="hanging">
      <t>Type: TBD5</t>

      <t>Description: OSPFv2 Dynamic Flooding Opaque LSA</t>

      <t>Reference: This document (<xref
      target="OSPFV2_DYNAMIC_FLOOD_LSA"/>)</t>
        </list></t>

        <t>This document requests the following code point from the "OSPFv3
        LSA Function Codes" registry: <list style="hanging">
        <t>Type: TBD6</t>

        <t>Description: OSPFv3 Dynamic Flooding LSA</t>

        <t>Reference: This document (<xref
        target="OSPFV3_DYNAMIC_FLOOD_LSA"/>)</t>
        </list></t>

        <t>This document requests a new bit in the "LLS Type 1 Extended Options and
        Flags" registry: <list style="hanging">
        <t>Bit Position: TBD10</t>

        <t>Description: Flooding Request bit</t>

        <t>Reference: This document (<xref
        target="OSPF_FLOODING_REQUEST_BIT"/>)</t>
        </list>This document requests the following code point from the
        "OSPFv2 Extended Link TLV Sub-TLVs" registry:</t>

        <t><list style="hanging">
          <t>Type: TBD11</t>

          <t>Description: OSPFv2 Link Attributes Bits Sub-TLV</t>

          <t>Reference: This document (<xref
          target="OSPF_LEEF_ADVERTISEMENT"/>)</t>

          <t>L2 Bundle Member Attributes (L2BM): Y</t>
          
          </list>This document requests the following code point from the
        "OSPFv3 Extended LSA Sub-TLVs" registry:</t>

        <t><list style="hanging">
          <t>Type: TBD12</t>

          <t>Description: OSPFv3 Link Attributes Bits Sub-TLV</t>

          <t>Reference: This document (<xref
          target="OSPF_LEEF_ADVERTISEMENT"/>)</t>

          <t>L2 Bundle Member Attributes (L2BM): Y</t>
          
        </list></t>

        <section title="OSPF Dynamic Flooding LSA TLVs Registry">
          <t>This specification also requests a new registry - "OSPF Dynamic
          Flooding LSA TLVs". New values can be allocated via IETF Review or
          IESG Approval.</t>

          <t>The "OSPF Dynamic Flooding LSA TLVs" registry will define
          top-level TLVs for the OSPFv2 Dynamic Flooding Opaque LSA and OSPFv3
          Dynamic Flooding LSAs. It should be added to the "Open Shortest Path
          First (OSPF) Parameters" registries group.</t>

          <t>The following initial values are allocated:</t>

          <t><list style="hanging">
            <t>Type: 0</t>

            <t>Description: Reserved</t>

            <t>Reference: This document</t>
          </list></t>

          <t><list style="hanging">
            <t>Type: 1</t>

            <t>Description: OSPF Area Router IDs TLV</t>

            <t>Reference: This document (<xref
            target="OSPF_AREA_ROUTER_ID_TLV"/>)</t>
          </list></t>

          <t><list style="hanging">
            <t>Type: 2</t>

            <t>Description: OSPF Flooding Path TLV</t>

            <t>Reference: This document (<xref
            target="OSPF_FLOOD_PATH_TLV"/>)</t>
          </list></t>

          <t>Types in the range 32768-33023 are for experimental use; these
          will not be registered with IANA, and MUST NOT be mentioned by
          RFCs.</t>

          <t>Types in the range 33024-65535 are not to be assigned at this
          time. Before any assignments can be made in the 33024-65535 range,
          there MUST be an IETF specification that specifies IANA
          Considerations that cover the range being assigned.</t>
        </section>

        <section title="OSPF Link Attributes Sub-TLV Bit Values Registry">
          <t>This specification also requests a new registry - "OSPF Link
          Attributes Sub-TLV Bit Values". New values can be allocated via IETF
          Review or IESG Approval.</t>

          <t>The "OSPF Link Attributes Sub-TLV Bit Values" registry defines
          Link Attribute bit-values for the OSPFv2 Link Attributes Sub-TLV and
          OSPFv3 Link Attributes Sub-TLV. It should be added to the "Open
          Shortest Path First (OSPF) Parameters" registries
          group. This registry should contain a column "L2BM" that
          indicates if a bit may appear in an L2 Bundle Member
          Attributes (L2BM) sub-TLV. The following explanatory note
          should be added to the registry:</t>

          <blockquote>
            <t>
              The "L2BM" column indicates applicability to the L2 Bundle Member
              Attributes sub-TLV. The options for the "L2BM" column are:
            </t>
            <t>
              Y - This bit <bcp14>MAY</bcp14> appear in the L2
              Bundle Member Attributes sub-TLV.
            </t>
            <t>
              N - This bit <bcp14>MUST NOT</bcp14> appear in the
              L2 Bundle Member Attributes sub-TLV.
            </t>
          </blockquote>

          <t>The following initial value is allocated:</t>

          <t><list style="hanging">
            <t>Bit Number: 0</t>

            <t>Description: Local Edge Enabled for Flooding(LEEF)</t>

            <t>Reference: This document (<xref
            target="OSPF_LEEF_ADVERTISEMENT"/>)</t>

            <t>L2 Bundle Member Attributes (L2BM): N</t>

          </list></t>
        </section>
      </section>

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

	<t>
	  The registration policy for this registry is Expert Review.
	</t>
	
        <t>Values in this registry come from the range 0-255.</t>

        <t>The initial values in the IGP Algorithm Type For Computing Flooding
        Topology registry are: <list style="hanging">
        <t>0: Reserved for centralized mode.</t>

        <t>1-127: Individual values are to
        be assigned according to the "Expert Review" policy
        defined in <xref target="RFC8126"/>. The designated experts
        should require a clear, public specification of the algorithm
        and comply with <xref target="RFC7370"/>.</t>

        <t>128-254: Reserved for private use.</t>

        <t>255: Reserved.</t>
        </list></t>
      </section>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>This document introduces no new security issues. Security of routing
      within a domain is already addressed as part of the routing protocols
      themselves. This document proposes no changes to those security
      architectures.</t>

      <t>An attacker could become the Area Leader and
      introduce a flawed flooding algorithm into the network thus compromising
      the operation of the protocol. Authentication methods as described in
      <xref target="RFC5304"/> and <xref target="RFC5310"/> for IS-IS, <xref
      target="RFC2328"/> and <xref target="RFC7474"/> for OSPFv2 and <xref
      target="RFC5340"/> and <xref target="RFC4552"/> for OSPFv3 SHOULD be
      used to prevent such attacks.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to thank Sarah Chen, Tony Przygienda,
      Dave Cooper, Gyan Mishra, and Les Ginsberg for their
      contribution to this work. The authors would also like to thank
      Arista Networks for supporting the development of this
      technology.</t>

      <t>The authors would like to thank Zeqing (Fred) Xia, Naiming Shen, Adam
      Sweeney, Acee Lindem, and Olufemi Komolafe for their helpful comments.</t>

      <t>The authors would like to thank Tom Edsall for initially introducing
      them to the problem.</t>

      <t>Advertising Local Edges Enabled for Flooding (LEEF) is based
      on an idea proposed by Huaimo Chen, Mehmet Toy, Yi Yang, Aijun
      Wang, Xufeng Liu, Yanhe Fan, and Lei Liu.  We wish to thank them
      for their contribution.</t>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
       1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
       2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
       (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

Both are cited textually in the same manner: by using xref elements.
If you use the PI option, xml2rfc will, by default, try to find included files in the same
directory as the including file. You can also define the XML_LIBRARY environment variable
with a value containing a set of directories to search.  These can be either in the local
filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      <reference anchor="ISO10589">
        <front>
          <title>Intermediate System to Intermediate System Intra-Domain
          Routing 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="10" year="2002"/>
        </front>

        <seriesInfo name="ISO/IEC" value="10589:2002"/>
      </reference>

      &rfc2119;
      &rfc2328;
      &rfc4552;
      &rfc5029;
      &rfc5250;
      &rfc5304;
      &rfc5310;
      &rfc5340;
      &rfc5613;
      &rfc7356;
      &rfc7474;
      &rfc7684;
      &rfc7770;
      &rfc7981;
      &rfc8126;
      &rfc8174;
      &rfc8362;
    </references>

    <references title="Informative References">
      <reference anchor="Bondy"
                 target="https://www.zib.de/groetschel/teaching/WS1314/BondyMurtyGTWA.pdf">
        <front>
          <title>Graph Theory With Applications</title>

          <author fullname="John Adrian Bondy" initials="J. A."
                  surname="Bondy"/>
          <author fullname="U. S. R. Murty" initials="U. S. R."
                  surname="Murty"/>

          <date year="1976"/>
          
        </front>

        <annotation>ISBN 0-444-19451-7</annotation>
          
      </reference>
                 
      <reference anchor="Clos"
                 target="http://dx.doi.org/10.1002/j.1538-7305.1953.tb01433.x">
        <front>
          <title>A Study of Non-Blocking Switching Networks</title>

          <author fullname="Charles Clos" initials="C." surname="Clos"/>

          <date month="March" year="1953"/>
        </front>

        <seriesInfo name="The Bell System Technical Journal"
                    value="Vol. 32(2), DOI 10.1002/j.1538-7305.1953.tb01433.x"/>
      </reference>

      <reference anchor="Leiserson">
        <front>
          <title>Fat-Trees: Universal Networks for Hardware-Efficient
          Supercomputing</title>

          <author fullname="C. E. Leiserson" initials="C. E."
                  surname="Leiserson"/>

          <date year="1985"/>
        </front>

        <seriesInfo name="IEEE Transactions on Computers"
                    value="34(10):892-901"/>
      </reference>

      &rfc2973;
      &rfc3630;
      &rfc4811;
      &rfc7370;
      &rfc7938;

    </references>
  </back>
</rfc>
