<?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 SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
    There has to be one entity for each item to be referenced. 
    An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC3552 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3552.xml">
<!ENTITY I-D.narten-iana-considerations-rfc2434bis SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.narten-iana-considerations-rfc2434bis.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="std" docName="draft-xu-lsr-flooding-reduction-in-clos-01"
     ipr="trust200902">
  <front>
    <title abbrev="">Flooding Reduction in CLOS Networks</title>

    <author fullname="Xiaohu Xu" initials="X." surname="Xu">
      <organization>China Mobile</organization>

      <address>
        <email>xuxiaohu_ietf@hotmail.com</email>
      </address>
    </author>

    <!--

-->

    <date day="22" month="November" year="2023"/>

    <abstract>
      <t>In a CLOS topology, an OSPF (or ISIS) router may receive identical
      copies of an LSA (or LSP) from multiple OSPF (or ISIS) neighbors.
      Moreover, two OSPF (or ISIS) neighbors may exchange the same LSA (or
      LSP) simultaneously. This results in unnecessary flooding of link-state
      information, which wastes the precious resources of OSPF (or ISIS)
      routers. Therefore, this document proposes extensions to OSPF (or ISIS)
      to reduce this flooding within CLOS networks. The reduction of OSPF (or
      ISIS) flooding is highly beneficial for improving the scalability of
      CLOS networks.</t>
    </abstract>

    <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>In a CLOS topology, OSPF or ISIS routers might receive multiple
      identical copies of an LSA or LSP from different neighbors, two
      neighbors may even exchange the same LSA or LSP simultaneously. The
      unnecessary flooding of link-state information waste valuable resources
      of OSPF or ISIS routers. To tackle this issue, this document proposes
      some extensions to OSPF or ISIS so as to reduce the unnecessary flooding
      within CLOS networks and therefore improve the scalability of CLOS
      networks. </t>

      <t>Due to the flooding issue as mentioned above, some data center
      network operators have opted for BGP <xref target="RFC7938"/> as the
      underlay routing protocol for their CLOS networks. </t>

      <t>However, with the advent of high-performance Ethernet networks for AI
      and HPC, it has become necessary to have visibility of the whole network
      topology, including link capacity and load information, to enable
      end-to-end path load-balancing, also known as global load-balancing or
      adaptive routing. This implies that link-state routing protocols like
      OSPF or ISIS may need to be reviewed as the routing protocol for
      large-scale AI and HPC Ethernet networks, provided the scaling issue
      associated with link-state routing protocols is well addressed. </t>

      <t>To address the scaling issue, this document proposes a pragmatic
      approach. The idea is to configure partial routers as non-reflectors for
      a given OSPF area or a given ISIS level. These routers cannot reflect
      the LSAs or LSPs they receive from neighbors in that OSPF area or ISIS
      level to their other neighbors in the same OSPF area or ISIS level.</t>
    </section>

    <section title="Solution Description">
      <t><figure>
          <artwork align="center"><![CDATA[      
   +----+ +----+ +----+ +----+  
   | S1 | | S2 | | S3 | | S4 |  (Spine)
   +----+ +----+ +----+ +----+             
             
   +----+ +----+ +----+ +----+ +----+ +----+ +----+ +----+
   | L1 | | L2 | | L3 | | L4 | | L5 | | L6 | | L7 | | L8 |  (Leaf)
   +----+ +----+ +----+ +----+ +----+ +----+ +----+ +----+ 


                              Figure 1]]></artwork>
        </figure></t>

      <t>(Note that the diagram above does not include the connections between
      nodes. However, it can be assumed that leaf nodes are connected to every
      spine node in their CLOS topology.)</t>

      <t>In a three-stage CLOS network as shown in Figure 1, also known as a
      leaf-spine network, all nodes should be in OSPF area zero or ISIS
      Level-2. All leaf nodes SHOULD be configured as non-reflectors. To
      further reduce the flooding of link-state, all spine nodes, except for
      two, COULD also be configured as non-reflectors.</t>

      <t><figure>
          <artwork align="center"><![CDATA[      
   =========================================         
   # +----+ +----+ +----+ +----+           #
   # | L1 | | L2 | | L3 | | L4 | (Leaf)    #
   # +----+ +----+ +----+ +----+           #
   #                                PoD-1  #
   # +----+ +----+ +----+ +----+           #
   # | S1 | | S2 | | S3 | | S4 | (Spine)   #
   # +----+ +----+ +----+ +----+           #
   =========================================

   ===============================     ===============================
   # +----+ +----+ +----+ +----+ #     # +----+ +----+ +----+ +----+ #
   # |SS1 | |SS2 | |SS3 | |SS4 | #     # |SS1 | |SS2 | |SS3 | |SS4 | #
   # +----+ +----+ +----+ +----+ #     # +----+ +----+ +----+ +----+ #
   #   (Super-Spine@Plane-1)     #     #   (Super-Spine@Plane-4)     #
   #============================== ... ===============================

   =========================================         
   # +----+ +----+ +----+ +----+           #
   # | S1 | | S2 | | S3 | | S4 | (Spine)   #
   # +----+ +----+ +----+ +----+           #
   #                                PoD-8  #
   # +----+ +----+ +----+ +----+           #
   # | L1 | | L2 | | L3 | | L4 | (Leaf)    #
   # +----+ +----+ +----+ +----+           #
   =========================================        

                              Figure 2]]></artwork>
        </figure>(Note that the diagram above does not include the connections
      between nodes. However, it can be assumed that the leaf nodes in a given
      PoD are connected to every spine node in that PoD. Similarly, each spine
      node (e.g., S1) is connected to all super-spine nodes in the
      corresponding PoD-interconnect plane (e.g., Plane-1).)</t>

      <t>For a five-stage CLOS network as illustrated in Figure 2, each Pod
      consisting of leaf and spine nodes is configured as an OSPF non-zero
      area or an ISIS Level-1 area. The Pod-interconnect plane consisting of
      spine and super-spine nodes is configured as an OSPF area zero or an
      ISIS Level-2 area. Therefore, spine nodes play the role of OSPF area
      border routers or ISIS Level-1-2 routers. All leaf nodes SHOULD be
      configured as non-reflectors, and all spine nodes SHOULD be configured
      as non-reflectors for OSPF area zero or ISIS Level-2. To reduce the
      link-state flooding further, all spine nodes in each Pod, except for at
      least two of them, COULD be configured as non-reflectors for the
      associated non-zero OSPF area or ISIS Level-1 area. Similarly, all
      super-spine nodes in each Pod-interconnect plane, except for two of
      them, COULD be configured as non-reflectors.</t>
    </section>

    <section anchor="Abbreviations_Terminology" title="Terminology">
      <t>This memo makes use of the terms defined in <xref target="RFC2328"/>
      and <xref target="RFC1195"/>.</t>
    </section>

    <section title="Modifications to OSPF and ISIS Behavior ">
      <t>Routers that are configured as non-reflectors for a given OSPF area
      or ISIS level SHOULD NOT reflect the LSAs or LSPs they receive from
      neighbors in that OSPF area or ISIS level to their other neighbors in
      the same OSPF area or ISIS level.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>TBD.</t>

      <!---->
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>TBD.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>TBD.</t>

      <!---->
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include='reference.RFC.2119'?>

      <?rfc include='reference.RFC.2328'?>

      <?rfc include='reference.RFC.5340'?>

      <?rfc include='reference.RFC.1195'?>

      <!---->
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.7938'?>

      <!---->
    </references>
  </back>
</rfc>
