<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.37 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-agt-rtgwg-dragonfly-routing-00" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="dragonfly-routing">Routing in Dragonfly+ Topologies</title>
    <seriesInfo name="Internet-Draft" value="draft-agt-rtgwg-dragonfly-routing-00"/>
    <author initials="D." surname="Afanasiev" fullname="Dmitry Afanasiev">
      <organization/>
      <address>
        <email>dmitry.afanasiev@gmail.com</email>
      </address>
    </author>
    <author initials="R." surname="Glebov" fullname="Roman Glebov">
      <organization>Yandex</organization>
      <address>
        <email>kitaro630@yandex.ru</email>
      </address>
    </author>
    <author initials="J." surname="Tantsura" fullname="Jeff Tantsura">
      <organization>Nvidia</organization>
      <address>
        <email>jefftant.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2023" month="July" day="10"/>
    <area>Routing</area>
    <workgroup>Routing Area Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 87?>

<t>This document provides an overview of Dragonfly+ network topology and describes routing implementation for IP networks with Dragonfly+ topology with support for non-minimal routing.</t>
    </abstract>
  </front>
  <middle>
    <?line 91?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Dragonfly {KIM2008} is a high-scalability, low-diameter, cost-efficient network topology that provides high bandwidth and large path diversity.  Dragonfly topology was originally designed for HPC and supercomputing systems and are now adopted in more and more supercomputing networks. Its properties also make it an interesting candidate for data center network topology, especially Dragonfly+ variant {SPHINER2017} with leaf-spine intra-group topology. But building IP networks with  Dragonfly+ topology is a non-trivial problem because many mechanisms traditionally available in HPC interconnection networks are not available in IP networks. Specifically , Dragonfly+ relies heavily on non-minimal routing and adaptive load balancing for efficient use of available  network capacity.</t>
      <t>This document provides an overview of Dragonfly+ network topology and describes routing implementation for IP networks with Dragonfly+ topology with support for non-minimal routing. It also discusses load balancing in Dragonfly+.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>Group: building block of Dragonfly network, collection of nodes  connected by local links. In practical deployments, routers and associated end-points belonging to a group are assumed to be compactly colocated.
Local (L) / intra-group link: link between routers in the same group. In  Dragonfly+ group is a leaf-spine network (bipartite graph) so local links are always between leaf and spine.
Global (G) / inter-group link: links between routers from different groups. Usually long and more expensive so it is desirable to minimize the number of global links.
Path signature - sequence of letters corresponding to types of links in the path, e.g. LGLLGL. 
Local / intra-group network
Global / inter-group network
MIN: minimal routing 
VAL: randomized non-minimal routing (valiant load balanced)
AR: adaptive routing. It  is  a misnomer because it has nothing to do with disseminating reachability information - it is a mapping mechanism that maps traffic to already known paths. 
UGAL: Universal Globally-Adaptive load-balanced 
UGAL-L: UGAL with using local queue information at current router node 
UGAL-G: UGAL with using global information
ARN: Adaptive Routing Notification</t>
    </section>
    <section anchor="network-design-requirements">
      <name>Network Design Requirements</name>
      <t>Network design requirements are largely the same as in {RFC7938}. The most notable difference is the extensive use of non-minimal paths.
# Dragonfly Topology</t>
      <section anchor="dragonfly-topology-overview">
        <name>Dragonfly Topology Overview</name>
        <t>Dragonfly topology was introduced by Kim et al. {KIM2008}. It aims to decrease the cost and diameter of the network while providing good scalability. Dragonfly is a hierarchical  topology that divides routers into groups connected by long (inter-group) links in a fully-connected global network. Each group essentially implements high-radix virtual router. Dragonfly is a direct topology, in which every router has a set of terminal connections leading to endpoints, and a set of topological
connections leading to other routers, some from the same group and some from the other groups.  While original Dragonfly uses fully-connected intra-group topology it doesn't prevent using  other intra-group topologies. Different intra-group topologies produce different Dragonfly "flavors". Inter-group topology is always fully connected.</t>
        <t>Dragonfly+ proposed in {SPHINER2017} relies on an extended group topology in which intra-group routers are connected as a bipartite graph (leaf-spine or Clos-like topology). Dragonfly+ is superior to conventional Dragonfly due to the significantly larger number of hosts which it is able to support. In addition, Dragonfly+ supports similar or better bisectional bandwidth for various traffic patterns and requires smaller number of buffers to avoid credit loop deadlocks in lossless networks. Dragonfly+ is a indirect topology where only leaf nodes are connect to endpoints.</t>
        <t>TODO: spine sizing.</t>
      </section>
      <section anchor="rouging-and-paths-in-dragonfly">
        <name>Rouging and Paths in Dragonfly+</name>
        <t>In Dragonfly and Dragonfly+ topologies there exists at least one direct global link between every pair of groups. Minimal intergroup routes traverse a single global link. The capacity of minimal routes between each pair of groups is lower than the aggregate link capacity  of hosts in a group. Therefore, conventional minimal routing is not enough to obtain maximal throughput and efficiently support various traffic patters. {KIM2008} introduces the concept of non-minimal adaptive routing. 
For Dragonfly+ we can define three priority levels of inter-group routes. We use notations of ”L” and ”G” below to express where the route traverses local or global
link, respectively.
1. High priority: Minimal route (LGL) - a shortest distance route which passes through two spine routers using a single global link.
2. Medium priority: Intermediate spine route (LGGL) - a route which traverses an intermediate group, using its spine router, passing exactly three spine routers using two global links.
3. Low priority: Intermediate leaf route (LGLLGL) - a route which traverses an intermediate group using its two spine routers and a leaf router, passing exactly four spine routers using two global links.</t>
        <t>LGLLGL routes normally appear only when some spines are not connected to at least one spine in every other group - in this case non-minimal routes through intermediate group might need to use different ingress and egress spines in the intermediate group.</t>
        <t>TODO: discuss imbalance, density and LGLLGL routes {WILKE2017}</t>
      </section>
      <section anchor="topology-construction-and-graph-wiring">
        <name>Topology Construction and Graph Wiring</name>
        <t>Possible implementation is described in {WILKE2017}.</t>
      </section>
      <section anchor="adaptive-load-balancing">
        <name>Adaptive Load Balancing</name>
        <t>While routing and forwarding setup described in this document allows to propagate reachability information and install forwarding state required for  Dragonfly+ topologies, including non-minimal paths, it's not enough to efficiently use Dragonfly network capacity, especially in presence of LGLLGL paths. Efficient traffic to paths mapping in Dragonfly network can not be described by static mechanisms because ideally we would like to
- fill paths starting from high priority
- try to move flows from congested paths as a possible reaction to congestion.</t>
        <t>This requires dynamic adaptive load balancing and coupling between adaptive load balancing and congestion control. Adaptive load balancing <bcp14>MUST</bcp14> be able to work  without complete knowledge of network link utilization and queue state since such state can significantly change over the period of several RTTs and collecting and distributing global network utilization information often enough in any network of practically interesting size in infeasible.</t>
        <t>Adaptive routing can also work as a complementary failure handling mechanism with much faster reaction time than routing convergence.</t>
        <t>TODO: separate document describing possible adaptive load balancing implementation using existing mechanisms.</t>
      </section>
    </section>
    <section anchor="routing-and-forwarding">
      <name>Routing and Forwarding</name>
      <t>This section describes routing design supporting non-minimal paths. It uses only existing mechanisms - VRFs, route leaking and EBGP as a routing protocol. EBGP is chosen for scalability and flexibility - routing policies and communities allow to implement additional logic and precisely control propagation of routing updates.</t>
      <t>Routing design is based on following principles:
- intra-group traffic <bcp14>MUST</bcp14> use minimal routing as group in Dragonfly+ is just a leaf-spine network
- path can contain at most one transit group
- transit spine(s) <bcp14>MUST</bcp14> use shortest path forwarding to avoid forwarding loops
- LGLLGL paths require traffic reflection via leaves in the transit group but only appear if number of uplinks per spine is less than number of remote groups</t>
      <section anchor="forwarding">
        <name>Forwarding</name>
        <t>To achieve desired forwarding behavior several VRFs are configured on every spine:
- local VRF in each group containing local links
- core VRF containing all global links</t>
        <t>Additional VRF serving as a virtual link is configured if network is using  LGLLGL paths 
- reflect VRF in each group containing local links. Since both local VRF and reflect VRF include leaf-spine links some form of VRF multiplexing over leaf-spine links is required when LGLLGL paths are used.</t>
        <t>Local VRF:
- imports minimal and non-minmal paths from the core VRF and installs them</t>
        <t>Core VRF
- imports locally originated paths from local VRF in each group
- imports transit paths from reflect VRF</t>
        <t>Reflect VRF
- imports minimal paths from core VRF</t>
      </section>
      <section anchor="routing">
        <name>Routing</name>
        <t>Each group is in a separate AS.</t>
        <t>Communities, routing policies and update propagation:
- When a announcing a route originated in the local group towards other groups add community C1
- When propagating announce with community C1 add community C2
- Do not propagate updates with community C2 
- Import routes with C1 and C2 into local VRFs
- Import routes with C1 only into reflect VRFs, add community C3
- Import routes with C3 from reflect VRFs into core VRF</t>
        <t>During import into local VRFs prepend ASPATH: 
- 2 times for routes with  C1 only
- 1 time for routes with C2<br/>
- do not prepend for routes with C3
As result  paths with C1, C2 and C3 will all have has the same ASPATH length in local VRFs and will be  eligible for ECMP.</t>
      </section>
      <section anchor="scalability-and-optimizations">
        <name>Scalability and Optimizations</name>
        <t>TBD</t>
        <section anchor="failure-handling-and-convergence">
          <name>Failure handling and convergence</name>
          <t>TBD</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document does not request any IANA allocations.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7938" target="http://cva.stanford.edu/publications/2005/thesis_arjuns.pdf">
          <front>
            <title>Load-balanced routing in interconnection networks</title>
            <author>
              <organization/>
            </author>
            <date year="2005"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 242?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9Va3XLbyLG+x1NMvBexT0Tob31ss1JJaEmWtZZkRZLXtUml
VENgSM4KwDAYQBTX5arcnoc4VedZzqPkSfJ1zwAYENSWK3dx7dokMD89/fP1
1z0cjUZRpatMjcWza1NXupgLXYjjUs5NMcvWvxO3ZmkyM9fKPovkdFqqh7FI
m9ej0s2JUpMUMlf8alaN5LwaldV8NR8Nho729qJEVmpuyvUYe81MhBUPI70s
x6Iqa1sd7O292TuIZKnkWHihopUp7+dYYtk+EhMMEJ/xnL6c0rvoXq0xMB2L
s6JSZaGq0THJE0W2kkV6JzNTQMa1spHNZVnd/b02lbJjUZhoqcfir5VJdoQ1
ZVWqmcWndU4f/hZFsq4WphxHo0jgjy4w5zgWk5kspNXqgZ86BRznuirXG69M
OZeF/kVW2hRjwY9ULnUGffHwWDbD/zSn53Fi8nCv61icZmpqwo2uTS6L8HF/
k59wYPUYbnWvK1ma/z7c+9Oa38VlHe7xQyxuZVHZupTBLj+o2az/vL/N5YNO
tQy3+RkzoO0q1qqaBceJClPmmPWgxjz8+t3R6/1X37svETnC5utXbw5fj4VT
F/35cHYB33g97p40rnurkkVBbrqGwbFEsSPe6/kCXneTyExOM9W5dOPR62ft
Mo11m++jViMfdN4+bVViFkXvhR/+OaYZxzLL1oM5n3WmZT5876fexOImMVU1
mHdTqQe18Y7nVM4Bp5UdzDlWRaFt/12KiIPkdaEEqbBToCznCmstqmppx7u7
qdExDLy7vxfv7++92T27OZrENCPef9NOurl6f3Z5cn2wt/9qPDBFBx1jcW5W
4sjYqlW5gJEFmYRC9lhWMlEUqPbXTOEONcnUI3ktpi+WulDlYMRfZLJYi/ey
lHCj9eD1jZSlOIEV0sGrHzOZ6lyX4i+pKQsfTeGAt1j0XpzKWaEH704QVQU2
X8gHLTb0/U5Ny1oCDUhVW3VOKn+MN7X+Xl9BwW9jmoYn7cx355Mfbs7PPuD5
66HmL9RcQu/QVV/fJ4/SQuVwo7WtVP4Nyr6QpTbiXSZ/tpm+Hx651Il4a8pk
MZyp75WYxOJKlveBjZw6LiRr4tu8b2/v1e6bV69Hh6PD/TejNwd73++NXt7t
v2wnfz47/3DyhA8qq+eFsEv4l1CPy8yUDFfCzES1CLGg+gYsaCP4Xu0AD0uV
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
TWVyT7tNkobM+5s6oo/RvwCk2yZV7DAAAA==

-->

</rfc>
