<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="no"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="exp" docName="draft-przygienda-rift-dragonfly-02" ipr="trust200902" obsoletes="" submissionType="IETF" updates="" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.9.1 -->
    <front>
    <title abbrev="draft-przygienda-rift-dragonfly">
            RIFT in Dragonfly Topologies
    </title>
    <seriesInfo name="Internet-Draft" value="draft-przygienda-rift-dragonfly-02"/>
    <author fullname="Tony Przygienda" initials="A." surname="Przygienda" role="editor">
      <organization>HPE Juniper Networking</organization>
      <address>
        <postal>
          <street>1137 Innovation Way
          </street>
          <city>Sunnyvale</city>
          <region>CA
          </region>
          <code/>
          <country>USA
          </country>
        </postal>
        <phone/>
        <email>prz@juniper.net
        </email>
        <uri/>
      </address>
    </author>
    <date year="2026"/>
    <abstract>
      <t>
                RIFT extensions for dragonfly topologies.
      </t>
    </abstract>
    <note>
      <name>Requirements Language</name>
      <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" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they appear in all
                capitals, as shown here.
      </t>
    </note>
  </front>
  <middle>
    <section toc="default" numbered="true">
      <name>Introduction</name>
      <t>
                  RIFT today is standardized to deal with CLOS variant fabrics with some horizontal link exceptions.
                Given that
                interconnecting multiple CLOS via a dragonfly and its variants is an interesting topology (whether it's a full
                mesh or some kind of non-completely meshed regular lattice) this document addresses the resulting
                changes necessary to base RIFT specification to support dragonfly interconnected CLOS fabrics.
                The reader is advised that due to complexity of figures involved the ASCII version of the document
                may present those in simplified fashion.

      </t>
      <figure anchor="oneplanesparsedf">
        <name>Sparse Dragonfly of CLOS Fabrics</name>
        <artset>
          <artwork align="center" name="" type="svg" originalSrc="prep/svg/oneplanesparsedf.svg"><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="125.77708mm" height="97.995834mm" viewBox="0 0 125.77708 97.995834" version="1.1" id="svg8">
              <defs id="defs2">
                <rect x="63.5" y="39.6875" width="2.6458333" height="34.395832" id="rect865"/>
              </defs>
              <g id="layer1" transform="translate(-30.377082,-7.8875)">
                <g id="g866" transform="translate(15.290432,-151.75465)">
                  <rect id="rect10" width="11.5575" height="10.377518" x="64.706535" y="223.29506" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                  <rect id="rect835" width="11.5575" height="10.377518" x="84.466118" y="223.29506" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                  <rect id="rect837" width="11.5575" height="10.377518" x="64.706535" y="241.87466" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                  <rect id="rect839" width="11.5575" height="10.377518" x="84.466118" y="241.87466" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                  <path d="m 70.024047,241.64897 19.950094,-7.83129 v 0 l -0.0636,7.93668 -19.85455,-8.22546 z" id="path841" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                </g>
                <g id="g930" transform="rotate(60,281.41435,179.77316)">
                  <rect id="rect920" width="11.5575" height="10.377518" x="64.706535" y="223.29506" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                  <rect id="rect922" width="11.5575" height="10.377518" x="84.466118" y="223.29506" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                  <rect id="rect924" width="11.5575" height="10.377518" x="64.706535" y="241.87466" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                  <rect id="rect926" width="11.5575" height="10.377518" x="84.466118" y="241.87466" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                  <path d="m 70.024047,241.64897 19.950094,-7.83129 v 0 l -0.0636,7.93668 -19.85455,-8.22546 z" id="path928" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                </g>
                <g id="g958" transform="rotate(-60,-105.29846,157.26747)">
                  <rect id="rect948" width="11.5575" height="10.377518" x="64.706535" y="223.29506" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                  <rect id="rect950" width="11.5575" height="10.377518" x="84.466118" y="223.29506" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                  <rect id="rect952" width="11.5575" height="10.377518" x="64.706535" y="241.87466" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                  <rect id="rect954" width="11.5575" height="10.377518" x="84.466118" y="241.87466" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                  <path d="m 70.024047,241.64897 19.950094,-7.83129 v 0 l -0.0636,7.93668 -19.85455,-8.22546 z" id="path956" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                </g>
                <path d="m 64.822914,52.91667 39.687506,18.52083 7.9375,-37.04166 z" id="path962" fill="none" stroke="#000000" stroke-width="0.5" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                <path d="m 75.67947,34.292923 10.583333,37.04166 37.041667,-21.16666 z" id="path966" fill="none" stroke="black" stroke-width="0.265" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                <text xml:space="preserve" x="57.175724" y="50.93037" id="text861" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1039" x="57.175724" y="50.93037">SA1</tspan>
                </text>
                <text xml:space="preserve" id="text863" font-style="normal" font-weight="normal" font-size="10.5833px" font-family="sans-serif" fill="#000000" fill-opacity="1"/>
                <text xml:space="preserve" x="66.935394" y="33.940525" id="text1003" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1041" x="66.935394" y="33.940525">SA2</tspan>
                </text>
                <text xml:space="preserve" x="82.459854" y="78.140152" id="text1009" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1043" x="82.459854" y="78.140152">SB2</tspan>
                </text>
                <text xml:space="preserve" x="102.24723" y="78.101463" id="text1015" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1045" x="102.24723" y="78.101463">SB1</tspan>
                </text>
                <text xml:space="preserve" x="124.14027" y="49.042622" id="text1021" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1579" x="124.14027" y="49.042622">SC2</tspan>
                </text>
                <text xml:space="preserve" x="114.41478" y="32.037312" id="text1027" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1577" x="114.41478" y="32.037312">SC1</tspan>
                </text>
                <text xml:space="preserve" x="40.782684" y="41.963428" id="text1033" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1035" x="40.782684" y="41.963428">LA1</tspan>
                </text>
                <path d="m 75.67947,34.292923 10.583333,37.04166 37.041667,-21.16666 z" id="path1556" fill="none" stroke="black" stroke-width="0.265" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                <text xml:space="preserve" x="102.54575" y="96.200577" id="text1583" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1585" x="102.54575" y="96.200577">LB1</tspan>
                </text>
                <rect id="rect2300" width="125.67708" height="97.895836" x="30.427082" y="7.9375" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.1"/>
              </g>
            </svg>
          </artwork>
          <artwork align="center" name="" type="ascii-art" originalSrc="svg/oneplanesparsedf.ascii-art">+-----+   +-----+                              +-----+   +-----+
| LA1 |   |     |                              |     |   |     |
+-----+   +-----+                              +-----+   +-----+
   |   \ /   |                                    |   \ /   |
   |    X    |                                    |    X    |
   |   / \   |                                    |   / \   |
+-----+   +-----+                              +-----+   +-----+
| SA1 |   | SA2 |                              | SC1 |   | SC2 |
+-----+   +-----+                              +-----+   +-----+
  | |       | |                                 | |        | |
  | +-------|-|----------------------+          | |        | |
  +---------|-|----------------------+----------+ |        | |
            | |                      | +----------+        | |
            | +----------------------|-|-------------------+ |
            +--------------+ +-------|-|---------------------+
                           | |       | |
                         +-----+   +-----+
                         | SB2 |   | SB1 |
                         +-----+   +-----+
                                \ /
                                 X
                                / \
                         +-----+   +-----+
                         |     |   | LB1 |
                         +-----+   +-----+</artwork>
        </artset>
      </figure>
      <t>
                To start with, <xref target="oneplanesparsedf"/> visualizes three simple single plane
                fabrics interconnected via a DragonFly+ backbone. The behavior of standard RIFT is better understood
                if we look at the homomorphic version of the same topology in <xref target="oneplanesparsedf_homo"/>.
                We can see that it is nothing else but a multi-plane CLOS with a lot of broken links for standard
                RIFT. The planes consist of S_x_1 and S_x_2 ToFs in each CLOS. Given this,
                leaf LB1 should be connected to SA1 to be in the plane and since it is not, SA1 will deduct that
                leaf LB1 fell off the plane 1 and negatively disaggregate it. Unfortunately the same is true for
                leaf LB1 from the view the SA2 in 2nd plane and it will negatively disaggregate it as well. Hence, leaf
                LA1 will not have any possibility to forward to LB1 using standard RIFT computed forwarding. This points us already
                to the first modification needed; we have to relax RIFT to forward through the horizontal
                links on ToFs and this will be the starting point of the next section.



      </t>
      <figure anchor="oneplanesparsedf_homo">
        <name>Homomorphic View of Sparse Dragonfly as a Multi-Plane CLOS</name>
        <artset>
          <artwork align="center" name="" type="svg" originalSrc="prep/svg/oneplanesparsedf_homomorphic.svg"><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="141.65208mm" height="67.568748mm" viewBox="0 0 141.65208 67.568748" version="1.1" id="svg8">
              <defs id="defs2">
                <rect x="63.5" y="39.6875" width="2.6458333" height="34.395832" id="rect865"/>
              </defs>
              <g id="layer1" transform="translate(-22.439584,-46.252082)">
                <rect id="rect1617" width="39.6875" height="54.239582" x="27.78125" y="55.5625" fill="none" fill-opacity="1" stroke="black" stroke-width="0.2"/>
                <rect id="rect10" width="11.5575" height="10.377518" x="79.996971" y="71.540413" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                <rect id="rect835" width="11.5575" height="10.377518" x="99.756554" y="71.540413" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                <rect id="rect837" width="11.5575" height="10.377518" x="79.996971" y="90.120018" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                <rect id="rect839" width="11.5575" height="10.377518" x="99.756554" y="90.120018" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                <path d="m 85.314479,89.89432 19.950091,-7.83129 v 0 l -0.0636,7.93668 -19.854547,-8.22546 z" id="path841" fill="none" stroke="#000000" stroke-width="0.264583" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                <text xml:space="preserve" id="text863" font-style="normal" font-weight="normal" font-size="10.5833px" font-family="sans-serif" fill="#000000" fill-opacity="1"/>
                <text xml:space="preserve" x="102.07402" y="78.045174" id="text1015" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1045" x="102.07402" y="78.045174">SB1</tspan>
                </text>
                <rect id="rect912" width="11.5575" height="10.377518" x="32.940727" y="71.498207" fill="#ffffff" fill-opacity="0.261347" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                <rect id="rect914" width="11.5575" height="10.377518" x="52.70031" y="71.498207" fill="#ffffff" fill-opacity="0.261347" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                <rect id="rect916" width="11.5575" height="10.377518" x="32.940727" y="90.077812" fill="#ffffff" fill-opacity="0.226291" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                <rect id="rect918" width="11.5575" height="10.377518" x="52.916668" y="89.958336" fill="#ffffff" fill-opacity="0.261347" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                <path d="m 38.258239,89.85212 19.950094,-7.83129 v 0 l -0.0636,7.93668 -19.85455,-8.22546 z" id="path920" fill="none" stroke="#000000" stroke-width="0.264583" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                <rect id="rect932" width="11.5575" height="10.377518" x="128.19073" y="71.498207" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                <rect id="rect934" width="11.5575" height="10.377518" x="147.95032" y="71.498207" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                <rect id="rect936" width="11.5575" height="10.377518" x="128.19073" y="90.077812" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                <rect id="rect938" width="11.5575" height="10.377518" x="147.95032" y="90.077812" fill="none" fill-opacity="0.321422" fill-rule="evenodd" stroke="#000000" stroke-width="0.264583" stroke-opacity="1"/>
                <path d="m 133.50824,89.85212 19.95009,-7.83129 v 0 l -0.0636,7.93668 -19.85455,-8.22546 z" id="path940" fill="none" stroke="#000000" stroke-width="0.265" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                <path d="m 34.395833,71.437499 v -3.96875 h 51.593749 v 3.96875 0" id="path946" fill="none" stroke="#000000" stroke-width="0.5" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                <path d="m 62.177083,71.437499 v -7.9375 h 42.333337 v 7.9375 0" id="path948" fill="none" stroke="#000000" stroke-width="0.5" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                <path d="m 105.83333,71.437499 v -7.9375 h 50.27084 v 7.9375" id="path950" fill="none" stroke="#000000" stroke-width="0.5" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                <path d="m 156.10416,82.020832 v 3.96875 H 62.177083 v -3.96875" id="path952" fill="none" stroke="#000000" stroke-width="0.5" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                <path d="m 87.312499,71.437499 c 0,-1.322917 0,-3.96875 0,-3.96875 h 42.333331 v 3.96875" id="path954" fill="none" stroke="#000000" stroke-width="0.5" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                <path d="M 129.64583,82.020833 V 83.34375 L 34.395833,84.666667 V 82.020833" id="path956" fill="none" stroke="#000000" stroke-width="0.5" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                <text xml:space="preserve" x="102.20061" y="96.552254" id="text1589" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1591" x="102.20061" y="96.552254">LB1</tspan>
                </text>
                <text xml:space="preserve" x="55.119915" y="96.215889" id="text1595" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1597" x="55.119915" y="96.215889">LA1</tspan>
                </text>
                <text xml:space="preserve" x="54.946609" y="78.033218" id="text1601" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1603" x="54.946609" y="78.033218">SA1</tspan>
                </text>
                <text xml:space="preserve" x="82.732155" y="77.855423" id="text1607" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1609" x="82.732155" y="77.855423">SB2</tspan>
                </text>
                <text xml:space="preserve" x="35.608677" y="78.2062" id="text1613" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1615" x="35.608677" y="78.2062">SA2</tspan>
                </text>
                <text xml:space="preserve" x="35.595055" y="54.053471" id="text1629" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1633" x="35.595055" y="54.053471">Fabric A</tspan>
                </text>
                <rect id="rect1635" width="39.6875" height="54.239582" x="76.729164" y="55.5625" fill="none" fill-opacity="1" stroke="black" stroke-width="0.2"/>
                <text xml:space="preserve" x="84.450928" y="54.094452" id="text1639" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                  <tspan id="tspan1641" x="84.450928" y="54.094452">Fabric B</tspan>
                </text>
                <rect id="rect1692" width="141.55208" height="67.46875" x="22.489584" y="46.302082" fill="none" fill-opacity="0.321422" stroke="black" stroke-width="0.1"/>
                <rect id="rect2302" width="1.925097e-12" height="1.3229166" x="113.77083" y="96.572914" fill="none" fill-opacity="0.321422" stroke="black" stroke-width="0.1"/>
              </g>
            </svg>
          </artwork>
          <artwork align="center" name="" type="ascii-art" originalSrc="svg/oneplanesparsedf_homomorphic.ascii-art">      Fabric A              Fabric B
*********************  *********************
*                   *  *                   *
*                 +-*--*-----------+     +-*--------------+
*       +---------|-*--*-+     +---|-----|-*----------|   |
*       |         | *  * |     |   |     | *          |   |
* +-----+   +-----+ *  * +-----+   +-----+ *    +-----+   +-----+
* | SA2 |   | SA1 | *  * | SB2 |   | SB1 | *    |     |   |     |
* +-----+   +-----+ *  * +-----+   +-----+ *    +-----+   +-----+
* |  |  \   /  |  | *  *    |  \   /  |    *    |  |  \   /  |  |
* +--|---\-/---|--|-*--*----|---\-/---|----*----+  |   \ /   |  |
*    |    X    |  +-*--*----|----X----|----*-------|----X----|--+
*    |   / \   |    *  *    |   / \   |    *       |   / \   |
* +-----+   +-----+ *  * +-----+   +-----+ *    +-----+   +-----+
* |     |   | LA1 | *  * |     |   | LB1 | *    |     |   |     |
* +-----+   +-----+ *  * +-----+   +-----+ *    +-----+   +-----+
*                   *  *                   *
*                   *  *                   *
*********************  *********************

</artwork>
        </artset>
      </figure>
    </section>
    <section anchor="glossary" numbered="true" toc="default">
      <name>Glossary</name>
      <t>
                The following terms are used in this document.
      </t>
      <dl newline="true" spacing="normal">
        <dt>DF+ capable ToF:</dt>
        <dd>
                    ToF that provides DF+ extensions, both in recognizing the inter fabric links and
                    computation procedures necessary to support those. The resulting combination allows
                    the use of RIFT with
                    dragonfly topologies overall.
                </dd>
        <dt>Horizon:</dt>
        <dd>We define horizon as a concept differentiating between inter fabric links and southbound
                    pointing standard RIFT intra fabric links on a ToF. Both type of links need a different FIB
                    to support
                    alternate next hop when routing between fabrics. A link can only be on one side of the horizon
                    but not both sides.
                </dd>
        <dt>Inter Fabric Planes or IFL-planes:</dt>
        <dd>
                    Multi-Plane that spans multiple fabrics.
                </dd>
        <dt>Inter Fabric link or IFL links:</dt>
        <dd>
                    A horizontal ToF link between two fabrics.
                </dd>
        <dt>K-Alternate Next Hops or KNHs:</dt>
        <dd>
                    Next hop used by the originating fabric on a <xref target="EPPSTEIN">k-shortest path</xref>
                     to the destination fabric.
                    The receiver on the other side must subsequently
                    use as next hop shortest path next hop to the destination fabric.
                </dd>
      </dl>
    </section>
    <section numbered="true" toc="default">
      <name>Horizontal Link Behavior at ToF Level</name>
      <t>
                Dragonfly+, being basically, when seen a single fabric,
                    a multi-plane CLOS with many broken links
                    (which we will call inter fabric planes or IFL planes to distinguish
                    them from multi-plane within a fabric later)
                    will somehow need to change the behavior of RIFT to allow
                    forwarding via horizontal links at ToF level lest we end up
                    inverting the fabric and force leaves to deal with transit
                    traffic. Moreover, the necessity
                    to deal with new mis-cabling
                    concepts leads us to change the solution framework and consider
                    this configuration not as a single
                    fabric but as a multi-fabric setup with dragonfly links
                    building inter fabric planes now.
                    Additionally we will have to allow adjacencies on
                    ToF horizontal links
                    to another fabric and permit those to
                    forward through such inter fabric planes while
                    distinguishing such inter fabric (or IF) links from normal horizontal ToF
                    "multi-plane ringing". Hence
                    in <xref target="oneplanesparsedf_homo"/> instead of
                    the first assumption of a single fabric we break out
                    fabric A and fabric B and consider the links SA2-SB2 and
                    SA1-SB1 as two "inter fabric DF+" links, or in short, as already
                    introduced, IFL links.
                    And fortunately enough, IFL links, just like all other horizontal ToF links,
                    are considered northbound from both sides and northbound
                    flooding rules apply, an ideal thing since with that
                     ToFs will see full topology of their inter fabric
                    plane.

      </t>
      <t>
                    RIFT used in such DF+ configuration will require on ToF not
                    only a DF+ capability flag but a fabric ID now which has to be
                    distinct in each of the CLOS or dragonfly cliques. In case of
                    non-DF+ mode a ToF will declare such links
                    miscabled, once enabled to operate in DF+
                    it will mark those links as IFL links.
                    Given `fabric_id` is an optional schema element
                    a ToF operating in DF+ mode will reject all
                    links to other ToFs without
                    `fabric_id` value set or  not indicating
                    DF+ mode as mis-cabled to prevent a mixture of
                    non-DF+ and DF+ ToFs in a setup. On the other hand,
                    a ToF indicating DF+ capability and showing matching
                    fabric id is clearly a normal horizontal multi plane
                    ring in the same fabric.
      </t>
    </section>
    <section anchor="sec_route_comp" numbered="true" toc="default">
      <name>First Route Computation Change</name>
      <t>
                Now that we can detect
                 IFL links reliably we can also remove those from the
                computations used in negative disaggregation as
                first step. This will prevent ToFs in fabric A
                negatively disaggregating Fabric B prefixes, a desirable
                behavior.
                Not being able to forward from Fabric A to
                fabric B is obviously a far less desirable behavior
                and hence a ToF in DF+ mode needs to extend its route
                computation by a special southbound DF+ computation
                where we use SPF taking in first step all IFL links
                and the nodes behind them as candidates. This computation
                will result in a "direct inter fabric forwarding database"
                containing amongst others shortest path to prefixes in fabric B or
                in other words, direct inter fabric next hops.
      </t>
      <section anchor="computation">
        <name>Additional Bi-Sectional Bandwidth Route Computation Change</name>
        <t>
                One of the DF+ properties is that it not only provides a direct
                path to a destination but guarantees that destinations are reachable
                via KNHs to increase the bi-sectional
                bandwidth. In our first simple example SB1 forwarding to LA1 can take instead
                of SA1 directly a path through SC1 relying on it forwarding to SA1.
                And in less dense DF+ backbones we can even encounter longer indirect paths.
                To support this we introduce an additional SPF computation which
                computes for each IFL interface k-shortest-paths whereas K should
                be obviously reasonably constrained. To illustrate this by an example
                <xref target="sparse_17"/> introduces a 17 fabrics rather sparse dragonfly
                mesh where a 3 hops alternate paths are viable (if so chosen). FID 0
                forwarding to FID 2 has obviously the shortest path via FID1 but
                a k-shortest path computation will yield FID 13 and FID 16 as viable
                3 hops k-shortest-paths. However, only the originating fabric can
                choose a k-shortest path and every subsequent non originator MUST
                follow equal cost shortest paths to prevent looping or excessive
                bow-tying through the fabric. Not only MUST it follow the
                shortest path to the destination fabric, the shortest path MUST
                be actually computed on a topology where the sender node is excluded
                to prevent looping.

        </t>
        <t>
                    For the sake of clarity <xref target="sparse_17"/> does not visualize the
                full path diversity since, e.g. FID 13 can viably choose FIDs 3, 6, 9 beside
                FID 12 as shortest path next hops providing very significant
                path diversity on a 3 hops path. Further "steering" of chosen nexthops can
                    be achieved by e.g. DSCP marking or congestion notification schemes
                    but such approaches are outside the scope of this document.
        </t>
        <t>

                    Computing such alternate next hops will have the other beneficial
                effect of actually providing a backup path in case the direct IFL plane
                link to another fabric becomes unavailable.
        </t>
        <figure anchor="sparse_17">
          <name>Multi-Plane CLOS Fabrics Connected in Sparse Dragonfly</name>
          <artset>
            <artwork align="center" name="" type="svg" originalSrc="prep/svg/mesh_17_every_3th_neighbor.svg"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="600" viewBox="0 0 600 600">
                <defs>
                  <g>
                    <g id="glyph-0-0">
                      <path d="M 7.375 -5.015625 C 7.375 -3.929688 7.257812 -3.003906 7.03125 -2.234375 C 6.800781 -1.472656 6.4375 -0.882812 5.9375 -0.46875 C 5.445312 -0.0625 4.796875 0.140625 3.984375 0.140625 C 2.835938 0.140625 1.988281 -0.3125 1.4375 -1.21875 C 0.894531 -2.132812 0.625 -3.398438 0.625 -5.015625 C 0.625 -6.085938 0.734375 -7.007812 0.953125 -7.78125 C 1.171875 -8.550781 1.523438 -9.140625 2.015625 -9.546875 C 2.515625 -9.953125 3.171875 -10.15625 3.984375 -10.15625 C 5.128906 -10.15625 5.976562 -9.703125 6.53125 -8.796875 C 7.09375 -7.898438 7.375 -6.640625 7.375 -5.015625 Z M 2.109375 -5.015625 C 2.109375 -3.703125 2.25 -2.722656 2.53125 -2.078125 C 2.8125 -1.429688 3.296875 -1.109375 3.984375 -1.109375 C 4.671875 -1.109375 5.15625 -1.425781 5.4375 -2.0625 C 5.726562 -2.707031 5.875 -3.691406 5.875 -5.015625 C 5.875 -6.304688 5.726562 -7.273438 5.4375 -7.921875 C 5.15625 -8.578125 4.671875 -8.90625 3.984375 -8.90625 C 3.296875 -8.90625 2.8125 -8.578125 2.53125 -7.921875 C 2.25 -7.273438 2.109375 -6.304688 2.109375 -5.015625 Z M 2.109375 -5.015625 "/>
                    </g>
                    <g id="glyph-0-1">
                      <path d="M 5.203125 0 L 3.734375 0 L 3.734375 -6.640625 C 3.734375 -6.984375 3.738281 -7.296875 3.75 -7.578125 C 3.757812 -7.867188 3.773438 -8.148438 3.796875 -8.421875 C 3.671875 -8.304688 3.539062 -8.1875 3.40625 -8.0625 C 3.28125 -7.945312 3.132812 -7.820312 2.96875 -7.6875 L 1.875 -6.796875 L 1.125 -7.75 L 3.96875 -10 L 5.203125 -10 Z M 5.203125 0 "/>
                    </g>
                    <g id="glyph-0-2">
                      <path d="M 7.359375 0 L 0.640625 0 L 0.640625 -1.140625 L 3.21875 -3.765625 C 3.71875 -4.273438 4.132812 -4.71875 4.46875 -5.09375 C 4.8125 -5.476562 5.066406 -5.84375 5.234375 -6.1875 C 5.398438 -6.539062 5.484375 -6.925781 5.484375 -7.34375 C 5.484375 -7.84375 5.332031 -8.222656 5.03125 -8.484375 C 4.738281 -8.742188 4.351562 -8.875 3.875 -8.875 C 3.414062 -8.875 3.003906 -8.789062 2.640625 -8.625 C 2.273438 -8.457031 1.898438 -8.210938 1.515625 -7.890625 L 0.71875 -8.890625 C 1.113281 -9.222656 1.566406 -9.515625 2.078125 -9.765625 C 2.597656 -10.015625 3.210938 -10.140625 3.921875 -10.140625 C 4.867188 -10.140625 5.613281 -9.894531 6.15625 -9.40625 C 6.707031 -8.925781 6.984375 -8.28125 6.984375 -7.46875 C 6.984375 -6.925781 6.875 -6.429688 6.65625 -5.984375 C 6.445312 -5.535156 6.144531 -5.085938 5.75 -4.640625 C 5.363281 -4.191406 4.90625 -3.707031 4.375 -3.1875 L 2.5 -1.390625 L 2.5 -1.3125 L 7.359375 -1.3125 Z M 7.359375 0 "/>
                    </g>
                    <g id="glyph-0-3">
                      <path d="M 6.96875 -7.6875 C 6.96875 -7 6.773438 -6.453125 6.390625 -6.046875 C 6.003906 -5.648438 5.503906 -5.390625 4.890625 -5.265625 L 4.890625 -5.203125 C 5.679688 -5.109375 6.273438 -4.859375 6.671875 -4.453125 C 7.078125 -4.046875 7.28125 -3.515625 7.28125 -2.859375 C 7.28125 -2.273438 7.140625 -1.753906 6.859375 -1.296875 C 6.585938 -0.847656 6.164062 -0.492188 5.59375 -0.234375 C 5.019531 0.015625 4.285156 0.140625 3.390625 0.140625 C 2.859375 0.140625 2.363281 0.0976562 1.90625 0.015625 C 1.445312 -0.0664062 1.015625 -0.207031 0.609375 -0.40625 L 0.609375 -1.75 C 1.023438 -1.53125 1.472656 -1.363281 1.953125 -1.25 C 2.429688 -1.144531 2.890625 -1.09375 3.328125 -1.09375 C 4.179688 -1.09375 4.789062 -1.253906 5.15625 -1.578125 C 5.53125 -1.898438 5.71875 -2.347656 5.71875 -2.921875 C 5.71875 -3.484375 5.492188 -3.894531 5.046875 -4.15625 C 4.597656 -4.414062 3.925781 -4.546875 3.03125 -4.546875 L 2.125 -4.546875 L 2.125 -5.765625 L 3.046875 -5.765625 C 3.898438 -5.765625 4.515625 -5.921875 4.890625 -6.234375 C 5.273438 -6.554688 5.46875 -6.972656 5.46875 -7.484375 C 5.46875 -7.929688 5.320312 -8.28125 5.03125 -8.53125 C 4.738281 -8.78125 4.316406 -8.90625 3.765625 -8.90625 C 3.253906 -8.90625 2.804688 -8.820312 2.421875 -8.65625 C 2.046875 -8.5 1.695312 -8.3125 1.375 -8.09375 L 0.640625 -9.109375 C 1.003906 -9.390625 1.445312 -9.628906 1.96875 -9.828125 C 2.5 -10.035156 3.113281 -10.140625 3.8125 -10.140625 C 4.84375 -10.140625 5.625 -9.910156 6.15625 -9.453125 C 6.695312 -9.003906 6.96875 -8.414062 6.96875 -7.6875 Z M 6.96875 -7.6875 "/>
                    </g>
                    <g id="glyph-0-4">
                      <path d="M 7.734375 -2.21875 L 6.359375 -2.21875 L 6.359375 0 L 4.90625 0 L 4.90625 -2.21875 L 0.28125 -2.21875 L 0.28125 -3.390625 L 4.890625 -10.03125 L 6.359375 -10.03125 L 6.359375 -3.46875 L 7.734375 -3.46875 Z M 4.90625 -6.1875 C 4.90625 -6.625 4.914062 -7.035156 4.9375 -7.421875 C 4.957031 -7.816406 4.972656 -8.144531 4.984375 -8.40625 L 4.921875 -8.40625 C 4.847656 -8.21875 4.757812 -8.023438 4.65625 -7.828125 C 4.550781 -7.628906 4.441406 -7.457031 4.328125 -7.3125 L 1.6875 -3.46875 L 4.90625 -3.46875 Z M 4.90625 -6.1875 "/>
                    </g>
                    <g id="glyph-0-5">
                      <path d="M 3.953125 -6.203125 C 4.941406 -6.203125 5.738281 -5.941406 6.34375 -5.421875 C 6.945312 -4.910156 7.25 -4.179688 7.25 -3.234375 C 7.25 -2.191406 6.914062 -1.367188 6.25 -0.765625 C 5.59375 -0.160156 4.65625 0.140625 3.4375 0.140625 C 2.914062 0.140625 2.425781 0.09375 1.96875 0 C 1.519531 -0.09375 1.140625 -0.226562 0.828125 -0.40625 L 0.828125 -1.765625 C 1.160156 -1.566406 1.566406 -1.40625 2.046875 -1.28125 C 2.523438 -1.164062 2.988281 -1.109375 3.4375 -1.109375 C 4.132812 -1.109375 4.691406 -1.269531 5.109375 -1.59375 C 5.523438 -1.914062 5.734375 -2.414062 5.734375 -3.09375 C 5.734375 -3.695312 5.546875 -4.160156 5.171875 -4.484375 C 4.796875 -4.804688 4.203125 -4.96875 3.390625 -4.96875 C 3.117188 -4.96875 2.820312 -4.941406 2.5 -4.890625 C 2.1875 -4.847656 1.929688 -4.804688 1.734375 -4.765625 L 1.046875 -5.171875 L 1.421875 -10 L 6.5625 -10 L 6.5625 -8.6875 L 2.71875 -8.6875 L 2.484375 -6.0625 C 2.648438 -6.09375 2.851562 -6.125 3.09375 -6.15625 C 3.332031 -6.1875 3.617188 -6.203125 3.953125 -6.203125 Z M 3.953125 -6.203125 "/>
                    </g>
                    <g id="glyph-0-6">
                      <path d="M 0.6875 -4.25 C 0.6875 -4.832031 0.722656 -5.40625 0.796875 -5.96875 C 0.878906 -6.53125 1.019531 -7.0625 1.21875 -7.5625 C 1.425781 -8.0625 1.707031 -8.503906 2.0625 -8.890625 C 2.414062 -9.273438 2.863281 -9.578125 3.40625 -9.796875 C 3.957031 -10.015625 4.617188 -10.125 5.390625 -10.125 C 5.585938 -10.125 5.804688 -10.113281 6.046875 -10.09375 C 6.285156 -10.070312 6.488281 -10.046875 6.65625 -10.015625 L 6.65625 -8.765625 C 6.300781 -8.878906 5.898438 -8.9375 5.453125 -8.9375 C 4.816406 -8.9375 4.285156 -8.835938 3.859375 -8.640625 C 3.441406 -8.441406 3.109375 -8.171875 2.859375 -7.828125 C 2.617188 -7.484375 2.441406 -7.082031 2.328125 -6.625 C 2.222656 -6.164062 2.15625 -5.675781 2.125 -5.15625 L 2.21875 -5.15625 C 2.414062 -5.488281 2.703125 -5.765625 3.078125 -5.984375 C 3.453125 -6.210938 3.929688 -6.328125 4.515625 -6.328125 C 5.390625 -6.328125 6.085938 -6.054688 6.609375 -5.515625 C 7.140625 -4.984375 7.40625 -4.226562 7.40625 -3.25 C 7.40625 -2.195312 7.113281 -1.367188 6.53125 -0.765625 C 5.945312 -0.160156 5.15625 0.140625 4.15625 0.140625 C 3.507812 0.140625 2.921875 -0.015625 2.390625 -0.328125 C 1.867188 -0.648438 1.453125 -1.132812 1.140625 -1.78125 C 0.835938 -2.4375 0.6875 -3.257812 0.6875 -4.25 Z M 4.140625 -1.09375 C 4.671875 -1.09375 5.101562 -1.265625 5.4375 -1.609375 C 5.78125 -1.960938 5.953125 -2.507812 5.953125 -3.25 C 5.953125 -3.832031 5.800781 -4.296875 5.5 -4.640625 C 5.207031 -4.992188 4.769531 -5.171875 4.1875 -5.171875 C 3.78125 -5.171875 3.425781 -5.082031 3.125 -4.90625 C 2.832031 -4.738281 2.601562 -4.523438 2.4375 -4.265625 C 2.269531 -4.003906 2.1875 -3.738281 2.1875 -3.46875 C 2.1875 -3.082031 2.257812 -2.707031 2.40625 -2.34375 C 2.550781 -1.988281 2.769531 -1.691406 3.0625 -1.453125 C 3.351562 -1.210938 3.710938 -1.09375 4.140625 -1.09375 Z M 4.140625 -1.09375 "/>
                    </g>
                    <g id="glyph-0-7">
                      <path d="M 1.8125 0 L 5.796875 -8.6875 L 0.546875 -8.6875 L 0.546875 -10 L 7.390625 -10 L 7.390625 -8.9375 L 3.421875 0 Z M 1.8125 0 "/>
                    </g>
                    <g id="glyph-0-8">
                      <path d="M 3.984375 -10.140625 C 4.578125 -10.140625 5.101562 -10.046875 5.5625 -9.859375 C 6.019531 -9.679688 6.378906 -9.414062 6.640625 -9.0625 C 6.910156 -8.707031 7.046875 -8.265625 7.046875 -7.734375 C 7.046875 -7.128906 6.863281 -6.632812 6.5 -6.25 C 6.132812 -5.875 5.695312 -5.554688 5.1875 -5.296875 C 5.570312 -5.097656 5.929688 -4.875 6.265625 -4.625 C 6.597656 -4.375 6.863281 -4.082031 7.0625 -3.75 C 7.257812 -3.425781 7.359375 -3.039062 7.359375 -2.59375 C 7.359375 -2.03125 7.21875 -1.546875 6.9375 -1.140625 C 6.664062 -0.734375 6.28125 -0.414062 5.78125 -0.1875 C 5.28125 0.03125 4.691406 0.140625 4.015625 0.140625 C 2.929688 0.140625 2.09375 -0.09375 1.5 -0.5625 C 0.914062 -1.039062 0.625 -1.703125 0.625 -2.546875 C 0.625 -2.992188 0.71875 -3.382812 0.90625 -3.71875 C 1.09375 -4.0625 1.335938 -4.351562 1.640625 -4.59375 C 1.953125 -4.84375 2.289062 -5.050781 2.65625 -5.21875 C 2.175781 -5.5 1.769531 -5.835938 1.4375 -6.234375 C 1.113281 -6.628906 0.953125 -7.128906 0.953125 -7.734375 C 0.953125 -8.253906 1.085938 -8.691406 1.359375 -9.046875 C 1.628906 -9.398438 1.992188 -9.671875 2.453125 -9.859375 C 2.910156 -10.046875 3.421875 -10.140625 3.984375 -10.140625 Z M 3.96875 -8.96875 C 3.507812 -8.96875 3.128906 -8.851562 2.828125 -8.625 C 2.523438 -8.394531 2.375 -8.070312 2.375 -7.65625 C 2.375 -7.1875 2.535156 -6.820312 2.859375 -6.5625 C 3.179688 -6.3125 3.570312 -6.082031 4.03125 -5.875 C 4.46875 -6.0625 4.835938 -6.285156 5.140625 -6.546875 C 5.441406 -6.816406 5.59375 -7.1875 5.59375 -7.65625 C 5.59375 -8.070312 5.441406 -8.394531 5.140625 -8.625 C 4.847656 -8.851562 4.457031 -8.96875 3.96875 -8.96875 Z M 2.0625 -2.578125 C 2.0625 -2.128906 2.21875 -1.753906 2.53125 -1.453125 C 2.851562 -1.160156 3.335938 -1.015625 3.984375 -1.015625 C 4.617188 -1.015625 5.101562 -1.160156 5.4375 -1.453125 C 5.769531 -1.742188 5.9375 -2.125 5.9375 -2.59375 C 5.9375 -3.050781 5.753906 -3.425781 5.390625 -3.71875 C 5.035156 -4.019531 4.582031 -4.285156 4.03125 -4.515625 L 3.828125 -4.609375 C 3.253906 -4.359375 2.816406 -4.070312 2.515625 -3.75 C 2.210938 -3.4375 2.0625 -3.046875 2.0625 -2.578125 Z M 2.0625 -2.578125 "/>
                    </g>
                    <g id="glyph-0-9">
                      <path d="M 7.34375 -5.71875 C 7.34375 -5.15625 7.300781 -4.585938 7.21875 -4.015625 C 7.144531 -3.453125 7.007812 -2.921875 6.8125 -2.421875 C 6.613281 -1.929688 6.335938 -1.488281 5.984375 -1.09375 C 5.628906 -0.707031 5.175781 -0.40625 4.625 -0.1875 C 4.070312 0.03125 3.40625 0.140625 2.625 0.140625 C 2.4375 0.140625 2.210938 0.128906 1.953125 0.109375 C 1.703125 0.0859375 1.5 0.0546875 1.34375 0.015625 L 1.34375 -1.234375 C 1.71875 -1.117188 2.128906 -1.0625 2.578125 -1.0625 C 3.210938 -1.0625 3.738281 -1.15625 4.15625 -1.34375 C 4.582031 -1.539062 4.914062 -1.8125 5.15625 -2.15625 C 5.40625 -2.5 5.582031 -2.898438 5.6875 -3.359375 C 5.800781 -3.816406 5.867188 -4.300781 5.890625 -4.8125 L 5.8125 -4.8125 C 5.601562 -4.5 5.316406 -4.226562 4.953125 -4 C 4.585938 -3.769531 4.097656 -3.65625 3.484375 -3.65625 C 2.617188 -3.65625 1.925781 -3.921875 1.40625 -4.453125 C 0.882812 -4.992188 0.625 -5.75 0.625 -6.71875 C 0.625 -7.769531 0.914062 -8.597656 1.5 -9.203125 C 2.09375 -9.816406 2.882812 -10.125 3.875 -10.125 C 4.53125 -10.125 5.117188 -9.960938 5.640625 -9.640625 C 6.160156 -9.328125 6.570312 -8.84375 6.875 -8.1875 C 7.1875 -7.539062 7.34375 -6.71875 7.34375 -5.71875 Z M 3.890625 -8.90625 C 3.359375 -8.90625 2.925781 -8.726562 2.59375 -8.375 C 2.257812 -8.019531 2.09375 -7.476562 2.09375 -6.75 C 2.09375 -6.15625 2.234375 -5.679688 2.515625 -5.328125 C 2.804688 -4.984375 3.25 -4.8125 3.84375 -4.8125 C 4.25 -4.8125 4.597656 -4.894531 4.890625 -5.0625 C 5.191406 -5.226562 5.425781 -5.441406 5.59375 -5.703125 C 5.769531 -5.972656 5.859375 -6.25 5.859375 -6.53125 C 5.859375 -6.894531 5.785156 -7.257812 5.640625 -7.625 C 5.492188 -7.988281 5.269531 -8.289062 4.96875 -8.53125 C 4.675781 -8.78125 4.316406 -8.90625 3.890625 -8.90625 Z M 3.890625 -8.90625 "/>
                    </g>
                  </g>
                </defs>
                <rect x="-60" y="-60" width="720" height="720" fill="white" fill-opacity="1"/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 423.472656 551.71875 L 323.652344 580 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 423.472656 551.71875 L 57.492188 448.03125 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 220.3125 29.535156 L 560.929688 198.417969 "/>
                <path fill="none" stroke-width="6" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 220.3125 29.535156 L 323.652344 20 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 423.472656 551.71875 L 57.492188 151.96875 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 423.472656 551.71875 L 560.929688 198.417969 "/>
                <path fill="none" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 423.472656 551.71875 L 323.652344 20 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 20 351.671875 L 20 248.328125 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 20 248.328125 L 57.492188 151.96875 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 20 351.671875 L 220.3125 29.535156 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 20 351.671875 L 506.296875 110.558594 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 323.652344 20 L 423.472656 48.28125 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 323.652344 580 L 220.3125 570.464844 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 220.3125 570.464844 L 127.410156 524.402344 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 323.652344 580 L 20 351.671875 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 323.652344 580 L 423.472656 48.28125 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 220.3125 570.464844 L 20 248.328125 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 323.652344 580 L 127.410156 75.597656 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 423.472656 48.28125 L 506.296875 110.558594 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 220.3125 570.464844 L 220.3125 29.535156 "/>
                <path fill="none" stroke-width="6" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 580 300 L 560.929688 401.582031 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 580 300 L 57.492188 448.03125 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 220.3125 570.464844 L 506.296875 110.558594 "/>
                <path fill="none" stroke-width="6" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 560.929688 401.582031 L 506.296875 489.441406 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 580 300 L 323.652344 580 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 580 300 L 57.492188 151.96875 "/>
                <path fill="none" stroke-width="6" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 580 300 L 560.929688 198.417969 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 560.929688 401.582031 L 220.3125 570.464844 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 560.929688 401.582031 L 127.410156 75.597656 "/>
                <path fill="none" stroke-width="6" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 580 300 L 323.652344 20 "/>
                <path fill="none" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 20 248.328125 L 323.652344 20 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 560.929688 401.582031 L 20 351.671875 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 560.929688 401.582031 L 423.472656 48.28125 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 57.492188 151.96875 L 423.472656 48.28125 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 127.410156 524.402344 L 57.492188 448.03125 "/>
                <path fill="none" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 127.410156 524.402344 L 323.652344 20 "/>
                <path fill="none" stroke-width="6" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 506.296875 110.558594 L 560.929688 198.417969 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 127.410156 524.402344 L 57.492188 151.96875 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 127.410156 524.402344 L 560.929688 198.417969 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 57.492188 151.96875 L 127.410156 75.597656 "/>
                <path fill="none" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 506.296875 489.441406 L 423.472656 551.71875 "/>
                <path fill="none" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 506.296875 489.441406 L 20 248.328125 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 127.410156 75.597656 L 220.3125 29.535156 "/>
                <path fill="none" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 506.296875 489.441406 L 127.410156 524.402344 "/>
                <path fill="none" stroke-width="6" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 506.296875 489.441406 L 220.3125 29.535156 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 127.410156 75.597656 L 506.296875 110.558594 "/>
                <path fill="none" stroke-width="6" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 506.296875 489.441406 L 506.296875 110.558594 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 57.492188 448.03125 L 127.410156 75.597656 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 20 248.328125 L 560.929688 198.417969 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 57.492188 448.03125 L 20 351.671875 "/>
                <path fill="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 57.492188 448.03125 L 423.472656 48.28125 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 590 300 C 590 305.523438 585.523438 310 580 310 C 574.476562 310 570 305.523438 570 300 C 570 294.476562 574.476562 290 580 290 C 585.523438 290 590 294.476562 590 300 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 570.929688 401.582031 C 570.929688 407.105469 566.453125 411.582031 560.929688 411.582031 C 555.40625 411.582031 550.929688 407.105469 550.929688 401.582031 C 550.929688 396.058594 555.40625 391.582031 560.929688 391.582031 C 566.453125 391.582031 570.929688 396.058594 570.929688 401.582031 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 516.296875 489.441406 C 516.296875 494.964844 511.816406 499.441406 506.296875 499.441406 C 500.773438 499.441406 496.296875 494.964844 496.296875 489.441406 C 496.296875 483.921875 500.773438 479.441406 506.296875 479.441406 C 511.816406 479.441406 516.296875 483.921875 516.296875 489.441406 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 433.472656 551.71875 C 433.472656 557.242188 428.996094 561.71875 423.472656 561.71875 C 417.953125 561.71875 413.472656 557.242188 413.472656 551.71875 C 413.472656 546.195312 417.953125 541.71875 423.472656 541.71875 C 428.996094 541.71875 433.472656 546.195312 433.472656 551.71875 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 333.652344 580 C 333.652344 585.523438 329.175781 590 323.652344 590 C 318.128906 590 313.652344 585.523438 313.652344 580 C 313.652344 574.476562 318.128906 570 323.652344 570 C 329.175781 570 333.652344 574.476562 333.652344 580 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 230.3125 570.464844 C 230.3125 575.988281 225.835938 580.464844 220.3125 580.464844 C 214.789062 580.464844 210.3125 575.988281 210.3125 570.464844 C 210.3125 564.941406 214.789062 560.464844 220.3125 560.464844 C 225.835938 560.464844 230.3125 564.941406 230.3125 570.464844 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 137.410156 524.402344 C 137.410156 529.925781 132.933594 534.402344 127.410156 534.402344 C 121.886719 534.402344 117.410156 529.925781 117.410156 524.402344 C 117.410156 518.878906 121.886719 514.402344 127.410156 514.402344 C 132.933594 514.402344 137.410156 518.878906 137.410156 524.402344 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 67.492188 448.03125 C 67.492188 453.554688 63.015625 458.03125 57.492188 458.03125 C 51.96875 458.03125 47.492188 453.554688 47.492188 448.03125 C 47.492188 442.507812 51.96875 438.03125 57.492188 438.03125 C 63.015625 438.03125 67.492188 442.507812 67.492188 448.03125 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 30 351.671875 C 30 357.191406 25.523438 361.671875 20 361.671875 C 14.476562 361.671875 10 357.191406 10 351.671875 C 10 346.148438 14.476562 341.671875 20 341.671875 C 25.523438 341.671875 30 346.148438 30 351.671875 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 30 248.328125 C 30 253.851562 25.523438 258.328125 20 258.328125 C 14.476562 258.328125 10 253.851562 10 248.328125 C 10 242.808594 14.476562 238.328125 20 238.328125 C 25.523438 238.328125 30 242.808594 30 248.328125 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 67.492188 151.96875 C 67.492188 157.492188 63.015625 161.96875 57.492188 161.96875 C 51.96875 161.96875 47.492188 157.492188 47.492188 151.96875 C 47.492188 146.445312 51.96875 141.96875 57.492188 141.96875 C 63.015625 141.96875 67.492188 146.445312 67.492188 151.96875 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 137.410156 75.597656 C 137.410156 81.121094 132.933594 85.597656 127.410156 85.597656 C 121.886719 85.597656 117.410156 81.121094 117.410156 75.597656 C 117.410156 70.074219 121.886719 65.597656 127.410156 65.597656 C 132.933594 65.597656 137.410156 70.074219 137.410156 75.597656 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 230.3125 29.535156 C 230.3125 35.058594 225.835938 39.535156 220.3125 39.535156 C 214.789062 39.535156 210.3125 35.058594 210.3125 29.535156 C 210.3125 24.011719 214.789062 19.535156 220.3125 19.535156 C 225.835938 19.535156 230.3125 24.011719 230.3125 29.535156 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 333.652344 20 C 333.652344 25.523438 329.175781 30 323.652344 30 C 318.128906 30 313.652344 25.523438 313.652344 20 C 313.652344 14.476562 318.128906 10 323.652344 10 C 329.175781 10 333.652344 14.476562 333.652344 20 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 433.472656 48.28125 C 433.472656 53.804688 428.996094 58.28125 423.472656 58.28125 C 417.953125 58.28125 413.472656 53.804688 413.472656 48.28125 C 413.472656 42.757812 417.953125 38.28125 423.472656 38.28125 C 428.996094 38.28125 433.472656 42.757812 433.472656 48.28125 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 516.296875 110.558594 C 516.296875 116.078125 511.816406 120.558594 506.296875 120.558594 C 500.773438 120.558594 496.296875 116.078125 496.296875 110.558594 C 496.296875 105.035156 500.773438 100.558594 506.296875 100.558594 C 511.816406 100.558594 516.296875 105.035156 516.296875 110.558594 "/>
                <path fill-rule="nonzero" fill="white" fill-opacity="1" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke="black" stroke-opacity="1" stroke-miterlimit="10" d="M 570.929688 198.417969 C 570.929688 203.941406 566.453125 208.417969 560.929688 208.417969 C 555.40625 208.417969 550.929688 203.941406 550.929688 198.417969 C 550.929688 192.894531 555.40625 188.417969 560.929688 188.417969 C 566.453125 188.417969 570.929688 192.894531 570.929688 198.417969 "/>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-0" x="575.996094" y="307.125"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-1" x="557.765625" y="408.628906"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-2" x="502.289062" y="496.5625"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-3" x="419.53125" y="558.839844"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-4" x="319.640625" y="587.070312"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-5" x="216.273438" y="577.515625"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-6" x="123.363281" y="531.515625"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-7" x="53.523438" y="455.082031"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-8" x="16.003906" y="358.789062"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-9" x="16.011719" y="255.441406"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-1" x="49.238281" y="159.09375"/>
                  <use xlink:href="#glyph-0-0" x="57.246281" y="159.09375"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-1" x="120.242188" y="82.648438"/>
                  <use xlink:href="#glyph-0-1" x="128.250188" y="82.648438"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-1" x="212.066406" y="36.652344"/>
                  <use xlink:href="#glyph-0-2" x="220.074406" y="36.652344"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-1" x="315.449219" y="27.117188"/>
                  <use xlink:href="#glyph-0-3" x="323.457219" y="27.117188"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-1" x="415.039062" y="55.351562"/>
                  <use xlink:href="#glyph-0-4" x="423.047062" y="55.351562"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-1" x="498.105469" y="117.605469"/>
                  <use xlink:href="#glyph-0-5" x="506.113469" y="117.605469"/>
                </g>
                <g fill="black" fill-opacity="1">
                  <use xlink:href="#glyph-0-1" x="552.664062" y="205.53125"/>
                  <use xlink:href="#glyph-0-6" x="560.672063" y="205.53125"/>
                </g>
              </svg>
            </artwork>
            <artwork align="center" name="" type="ascii-art" originalSrc="svg/missing.ascii-art">missing TDB</artwork>
          </artset>
        </figure>
      </section>
      <section>
        <name>Dragonfly with Multi-Plane CLOS Fabrics</name>
        <t>
                    Most complex case of RIFT deployment would be
                    a dragonfly topology of CLOS fabrics which are in
                    themselves already multi-plane fabrics.
                    To present it as homomorphic graph <xref target="multiplanesparsedf_homo"/> is
                    included. The symmetry is obvious, we end up with
                    the normal RIFT ringing within the fabric, e.g. r_A for fabric A and then
                    for the inter fabric planes dragonfly is basically the according ringing
                    itself, here IR_1 and IR_2. Observe that the northbound flooding occurring
                    on all those links will present each ToF with the full topology of the
                    dragonfly, a necessary condition for proper disaggregation and further
                    reachability computations. If the intra fabric ToF ringing should be avoided
                    a tunnel between the ToFs within a fabric are necessary and may go all the
                    way down to the leaves. How such tunnels are provisioned is outside the
                    specification here but it will necessitate basically flat distribution
                    of the loopbacks of the ToFs across whole fabric via e.g. redistribution
                    of some RIFT routes in northbound and southbound direction or an equivalent
                    scheme.
        </t>
        <figure anchor="multiplanesparsedf_homo">
          <name>Multi-Plane CLOS Fabrics Connected in Sparse Dragonfly</name>
          <artset>
            <artwork align="center" name="" type="svg" originalSrc="prep/svg/multiplanesparedf_homomorphic.svg"><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="153.62332mm" height="82.185837mm" viewBox="0 0 153.62332 82.185837" version="1.1" id="svg886">
                <defs id="defs880"/>
                <g id="layer1" transform="translate(-21.213267,-106.99971)">
                  <g id="g1472">
                    <rect id="rect1451" width="7.9375" height="7.9375" x="31.75" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1453" width="7.9375" height="7.9375" x="47.625" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1455" width="7.9375" height="7.9375" x="31.75" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1457" width="7.9375" height="7.9375" x="47.625" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <path d="m 37.041666,161.39583 13.229167,7.9375" id="path1459" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 37.041666,169.33333 v 0 -7.9375 0" id="path1461" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 50.270833,169.33333 v -7.9375 l -13.229167,7.9375" id="path1463" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  </g>
                  <g id="g1488" transform="translate(31.75)">
                    <rect id="rect1474" width="7.9375" height="7.9375" x="31.75" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1476" width="7.9375" height="7.9375" x="47.625" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1478" width="7.9375" height="7.9375" x="31.75" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1480" width="7.9375" height="7.9375" x="47.625" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <path d="m 37.041666,161.39583 13.229167,7.9375" id="path1482" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 37.041666,169.33333 v 0 -7.9375 0" id="path1484" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 50.270833,169.33333 v -7.9375 l -13.229167,7.9375" id="path1486" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <rect id="rect1490" width="7.9375" height="7.9375" x="15.875" y="134.9375" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1492" width="7.9375" height="7.9375" x="31.75" y="134.9375" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <path d="M 3.9687495,153.45833 19.843749,142.875 l 15.875,10.58333" id="path1494" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 19.843749,153.45833 15.875,-10.58333 15.875,10.58333" id="path1496" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 23.812499,140.22916 h 7.9375" id="path1498" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 15.875,140.22917 -3.96875,-1e-5 v -9.26041 h 31.749999 v 9.26041 h -3.81" id="path1500" fill="none" stroke="#000000" stroke-width="0.259237px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <rect id="rect1617" width="66.145836" height="54.239582" x="-5.2916665" y="127" fill="none" fill-opacity="1" stroke="black" stroke-width="0.258199"/>
                    <text xml:space="preserve" x="-3.2988114" y="124.53381" id="text1629" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                      <tspan id="tspan1633" x="-3.2988114" y="124.53381">Fabric A</tspan>
                    </text>
                    <text xml:space="preserve" x="5.2916665" y="136.26042" id="text1629-1" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                      <tspan id="tspan1574" x="5.2916665" y="136.26042">r_A</tspan>
                    </text>
                    <rect id="rect1592" width="7.9375" height="7.9375" x="108.47916" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1594" width="7.9375" height="7.9375" x="124.35416" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1596" width="7.9375" height="7.9375" x="108.47916" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1598" width="7.9375" height="7.9375" x="124.35416" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <path d="M 113.77083,161.39584 127,169.33334" id="path1600" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 113.77083,169.33334 v 0 -7.9375 0" id="path1602" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 127,169.33334 v -7.9375 l -13.22917,7.9375" id="path1604" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <rect id="rect1606" width="7.9375" height="7.9375" x="92.604164" y="134.9375" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1608" width="7.9375" height="7.9375" x="108.47916" y="134.9375" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <path d="m 80.697916,153.45834 15.875,-10.58333 15.875004,10.58333" id="path1610" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 96.572916,153.45834 15.875004,-10.58333 15.875,10.58333" id="path1612" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 100.54167,140.22917 h 7.9375" id="path1614" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 92.604167,140.22918 -3.96875,-1e-5 v -9.26041 h 31.750003 v 9.26041 h -3.81" id="path1616" fill="none" stroke="#000000" stroke-width="0.259237px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <rect id="rect1618" width="66.145836" height="54.239582" x="71.4375" y="127.00001" fill="none" fill-opacity="1" stroke="black" stroke-width="0.258199"/>
                    <text xml:space="preserve" x="121.70834" y="124.35416" id="text1622" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                      <tspan id="tspan1620" x="121.70834" y="124.35416">Fabric B</tspan>
                    </text>
                    <text xml:space="preserve" x="121.70834" y="136.26042" id="text1626" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                      <tspan id="tspan1624" x="121.70834" y="136.26042">r_B</tspan>
                    </text>
                    <path d="M 112.44791,134.9375 V 117.73958 H 35.718749 v 17.19792" id="path1628" fill="none" stroke="#000000" stroke-width="0.865" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 35.718749,142.875 v 3.96875 H 112.44791 V 142.875" id="path1630" fill="none" stroke="#000000" stroke-width="0.865" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 19.843754,134.9375 v -11.90625 h 59.313713 17.41545 v 11.90625" id="path1632" fill="none" stroke="#000000" stroke-width="0.865" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 19.843749,142.875 v 6.61458 H 96.572915 V 142.875" id="path1634" fill="none" stroke="#000000" stroke-width="0.865" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <text xml:space="preserve" x="17.197916" y="140.22917" id="text1638" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.175px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                      <tspan id="tspan1640" x="17.197916" y="140.22917">SA2</tspan>
                    </text>
                    <text xml:space="preserve" x="33.072918" y="140.22917" id="text1644" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.175px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                      <tspan id="tspan1646" x="33.072918" y="140.22917">SA1</tspan>
                    </text>
                    <text xml:space="preserve" x="62.177082" y="116.41666" id="text1650" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52779px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264584">
                      <tspan id="tspan1654" x="62.177082" y="116.41666">IR_1</tspan>
                    </text>
                    <text xml:space="preserve" x="62.177082" y="127" id="text1658" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52779px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264584">
                      <tspan id="tspan1660" x="62.177082" y="127">IR_2</tspan>
                    </text>
                    <text xml:space="preserve" x="33.072918" y="140.22917" id="text1676" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.175px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                      <tspan id="tspan1674" x="33.072918" y="140.22917">SA1</tspan>
                    </text>
                    <text xml:space="preserve" x="109.80209" y="140.22917" id="text1680" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.175px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                      <tspan id="tspan1682" x="109.80209" y="140.22917">SB1</tspan>
                    </text>
                    <text xml:space="preserve" x="93.927086" y="140.22917" id="text1686" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.175px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                      <tspan id="tspan1688" x="93.927086" y="140.22917">SB2</tspan>
                    </text>
                    <rect id="rect1690" width="153.45833" height="82.020836" x="-10.454233" y="107.08221" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165" stroke-opacity="1"/>
                  </g>
                  <g id="g1590" transform="translate(76.729167)">
                    <rect id="rect1576" width="7.9375" height="7.9375" x="31.75" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1578" width="7.9375" height="7.9375" x="47.625" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1580" width="7.9375" height="7.9375" x="31.75" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1582" width="7.9375" height="7.9375" x="47.625" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <path d="m 37.041666,161.39583 13.229167,7.9375" id="path1584" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 37.041666,169.33333 v 0 -7.9375 0" id="path1586" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 50.270833,169.33333 v -7.9375 l -13.229167,7.9375" id="path1588" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  </g>
                </g>
              </svg>
            </artwork>
            <artwork align="center" name="" type="ascii-art" originalSrc="svg/multiplanesparedf_homomorphic.ascii-art">   Fabric A
 *******************************************
 *                                         *
 *  +-----+   +-----+   +-----+   +-----+  *
 *  |     |   |     |   |     |   |     |  *
 *  +-----+   +-----+   +-----+   +-----+  *
 *     |   \ /   |         |   \ /   |     *
 *     |    X    |         |    X    |     *
 *     |   / \   |         |   / \   |     *
 *  +-----+   +-----+   +-----+   +-----+  *
 *  |     |   |     |   |     |   |     |  *
 *  +-----+   +-----+   +-----+   +-----+  *
 *         \         \ /         /         *
 *          \         X         /          *
 *   +-------\---+   / \   +---/---------+ *
 *   |        +-----+   +-----+          | *
 *   |    +---| SA2 |   | SA1 |---+      | *
 *   |    |   +-----+   +-----+   |      | *
 *   |    |      |         |      | r_A  | *
 *   |    +------|---------|------+      | *
 *   |           |         |             | *
 ****|***********|*********|*************|**
     |           |         |             |
IR_2 |           |         |             | IR_1
     |           |         |             |
 ****|***********|*********|*************|**
 *   |           |         |             | *
 *   |    +------|---------|------+      | *
 *   |    |      |         |      | r_B  | *
 *   |    |   +-----+   +-----+   |      | *
 *   |    +---| SB2 |   | SB1 |---+      | *
 *   |        +-----+   +-----+          | *
 *   +-------/---+   \ /   +---\---------+ *
 *          /         X         \          *
 *         /         / \         \         *
 *  +-----+   +-----+   +-----+   +-----+  *
 *  |     |   |     |   |     |   |     |  *
 *  +-----+   +-----+   +-----+   +-----+  *
 *     |   \ /   |         |   \ /   |     *
 *     |    X    |         |    X    |     *
 *     |   / \   |         |   / \   |     *
 *  +-----+   +-----+   +-----+   +-----+  *
 *  |     |   |     |   |     |   |     |  *
 *  +-----+   +-----+   +-----+   +-----+  *
 *                                         *
 *******************************************
   Fabric B</artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section numbered="true" toc="default" anchor="fwd">
      <name>Forwarding Considerations</name>
      <t>
                Since RIFT is being extended with the concept of KNH
                and IP packets do not carry any marking
                as the path they have taken indiscriminate forwarding
                using non-shortest paths at ToF level may loop
                in inter fabric case. To prevent this the ToFs have
                to maintain the concept of a "split horizon" on the
                arriving traffic. Any traffic arriving at the ToF
                that is targeted at the prefix within its fabric
                can be forwarded without any further considerations.
                On the other hand, traffic not targeted
                at the fabric of the ToF arriving at a inter fabric
                link MUST use a FIB generated by <xref target="computation"/>.
                The solution will naturally
                limit any non-shortest inter fabric path in ToF case to
                shortest paths computed without including the
                sender. As last case, traffic arriving from
                within its own fabric but targeted at another fabric
                can use any of the k-shortest paths as next hop as described in
                <xref target="computation"/>.
                Observe that
                per interface specific FIB is nothing particularly
                special, any technology supporting VPN or trunking
                today is already capable of provisioning interface
                specific forwarding behavior.

      </t>
    </section>
    <section anchor="pathology" numbered="true" toc="default">
      <name>Partitioning of inter Fabric Planes</name>
      <t>
                A special case where a plane within a remote fabric breaks down
                is not noticeable in another fabric and hence the traffic
                can black hole since we do suppress the IFL links
                during negative disaggregation normally. To detect the condition reliably
                a ToF has to compute the inter fabric view of
                all the other ToFs in its own fabric while including IFL links
                and
                consider the resulting difference as
                "inter fabric negative disaggregation". This is possible
                but at scale can present significant computational load
                and is left therefore as optional behavior. Additionally,
                even when the fabric is a single plane fabric it must be
                then ringed at ToF level since otherwise the ToFs do not
                see the inter fabric planes they are not part of as
                an IFL ring.
      </t>
      <t>
                The same computation will deal with an even stranger case of a double
                failure on the IF
                links where a ToF becomes completely separated from the other
                fabrics. It will detect this and initiate negative disaggregation
                for the according prefixes.
      </t>
    </section>
    <section numbered="true" toc="default">
      <name>Specification</name>
      <t>
            Precise schema changes and computation algorithms are
            to be provided in future version of the draft in detail. Basically
            the LIEs and Node TIEs need to be extended by fabric_id and DF+ mode
            indication and computations described conceptually in former chapters
            tightly specified.
      </t>
    </section>
    <section numbered="true" toc="default">
      <name>Summary Overview</name>
      <t>
                A final <xref target="overview"/> is provided to map things back to the usual
                dragonfly sparse topology and show the concepts in action.
</t>
      <t>
                We see three fabrics, each of them multi-plane (though mixes are absolutely possible as long
                the number of ToFs connected to dragonfly are kept the same). The fat links represent the "IFL horizon", i.e.
                any traffic coming from those links cannot use alternate next hops to the destination. In this
                example traffic from LA11 going through PA11 and SA2 towards LC11 is given two choices of next hops,
                either SC2 or SB2. Now that it entered the IFL horizon in case SB2 receives it no further alternate
                next hops will be used but traffic will be handed off to SC2 which applies the same rule and in
                this case actually forwards the traffic into the fabric.
      </t>
      <figure anchor="overview">
        <name>Multi-Plane CLOS Fabrics Connected in Sparse Dragonfly</name>
        <artset>
          <artwork align="center" name="" type="svg" originalSrc="prep/svg/multiplanesparedf_overview.svg"><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="184.05042mm" height="150.97749mm" viewBox="0 0 184.05042 150.97749" version="1.1" id="svg886">
              <defs id="defs880"/>
              <g id="layer1" transform="translate(-29.150769,-112.29137)">
                <g id="g2472" transform="rotate(-150,152.03826,151.51462)">
                  <rect id="rect1592" width="7.9375" height="7.9375" x="108.47916" y="153.45833" transform="translate(31.75)" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <rect id="rect1594" width="7.9375" height="7.9375" x="124.35416" y="153.45833" transform="translate(31.75)" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <rect id="rect1596" width="7.9375" height="7.9375" x="108.47916" y="169.33333" transform="translate(31.75)" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <rect id="rect1598" width="7.9375" height="7.9375" x="124.35416" y="169.33333" transform="translate(31.75)" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <path d="M 113.77083,161.39584 127,169.33334" id="path1600" transform="translate(31.75)" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 113.77083,169.33334 v 0 -7.9375 0" id="path1602" transform="translate(31.75)" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 127,169.33334 v -7.9375 l -13.22917,7.9375" id="path1604" transform="translate(31.75)" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <rect id="rect1606" width="7.9375" height="7.9375" x="92.604164" y="134.9375" transform="translate(31.75)" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <rect id="rect1608" width="7.9375" height="7.9375" x="108.47916" y="134.9375" transform="translate(31.75)" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <path d="m 80.697916,153.45834 15.875,-10.58333 15.875004,10.58333" id="path1610" transform="translate(31.75)" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 96.572916,153.45834 15.875004,-10.58333 15.875,10.58333" id="path1612" transform="translate(31.75)" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 100.54167,140.22917 h 7.9375" id="path1614" transform="translate(31.75)" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 92.604167,140.22918 -3.96875,-1e-5 v -9.26041 h 31.750003 v 9.26041 h -3.81" id="path1616" transform="translate(31.75)" fill="none" stroke="#000000" stroke-width="0.259237px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <rect id="rect1618" width="66.145836" height="54.239582" x="71.4375" y="127.00001" transform="translate(31.75)" fill="none" fill-opacity="1" stroke="black" stroke-width="0.258199"/>
                  <text xml:space="preserve" x="121.70834" y="136.26042" id="text1626" transform="translate(31.75)" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                    <tspan id="tspan1624" x="121.70834" y="136.26042">r_B</tspan>
                  </text>
                  <text xml:space="preserve" x="109.80209" y="140.22917" id="text1680" transform="translate(31.75)" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.175px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                    <tspan id="tspan1682" x="109.80209" y="140.22917">SB1</tspan>
                  </text>
                  <text xml:space="preserve" x="93.927086" y="140.22917" id="text1686" transform="translate(31.75)" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.175px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                    <tspan id="tspan1688" x="93.927086" y="140.22917">SB2</tspan>
                  </text>
                  <g id="g1590" transform="translate(76.729167)">
                    <rect id="rect1576" width="7.9375" height="7.9375" x="31.75" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1578" width="7.9375" height="7.9375" x="47.625" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1580" width="7.9375" height="7.9375" x="31.75" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1582" width="7.9375" height="7.9375" x="47.625" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <path d="m 37.041666,161.39583 13.229167,7.9375" id="path1584" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 37.041666,169.33333 v 0 -7.9375 0" id="path1586" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 50.270833,169.33333 v -7.9375 l -13.229167,7.9375" id="path1588" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  </g>
                </g>
                <g id="g2360" transform="translate(93.527017,76.65512)">
                  <g id="g1472" transform="translate(-31.220833)">
                    <rect id="rect1451" width="7.9375" height="7.9375" x="31.75" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1453" width="7.9375" height="7.9375" x="47.625" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1455" width="7.9375" height="7.9375" x="31.75" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect1457" width="7.9375" height="7.9375" x="47.625" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <path d="m 37.041666,161.39583 13.229167,7.9375" id="path1459" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 37.041666,169.33333 v 0 -7.9375 0" id="path1461" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 50.270833,169.33333 v -7.9375 l -13.229167,7.9375" id="path1463" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  </g>
                  <rect id="rect1474" width="7.9375" height="7.9375" x="32.279167" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <rect id="rect1476" width="7.9375" height="7.9375" x="48.154167" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <rect id="rect1478" width="7.9375" height="7.9375" x="32.279167" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <rect id="rect1480" width="7.9375" height="7.9375" x="48.154167" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <path d="M 37.570833,161.39583 50.8,169.33333" id="path1482" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 37.570833,169.33333 v 0 -7.9375 0" id="path1484" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 50.8,169.33333 v -7.9375 l -13.229167,7.9375" id="path1486" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <rect id="rect1490" width="7.9375" height="7.9375" x="16.404167" y="134.9375" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <rect id="rect1492" width="7.9375" height="7.9375" x="32.279167" y="134.9375" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <path d="M 4.4979162,153.45833 20.372916,142.875 l 15.875,10.58333" id="path1494" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 20.372916,153.45833 15.875,-10.58333 15.875,10.58333" id="path1496" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 24.341666,140.22916 h 7.9375" id="path1498" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 16.404167,140.22917 -3.96875,-1e-5 v -9.26041 h 31.749999 v 9.26041 h -3.81" id="path1500" fill="none" stroke="#000000" stroke-width="0.259237px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <rect id="rect1617" width="66.145836" height="54.239582" x="-4.7624998" y="127" fill="none" fill-opacity="1" stroke="black" stroke-width="0.258199"/>
                  <text xml:space="preserve" x="5.8208332" y="136.26042" id="text1629-1" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                    <tspan id="tspan1574" x="5.8208332" y="136.26042">r_A</tspan>
                  </text>
                  <text xml:space="preserve" x="17.727083" y="140.22917" id="text1638" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.175px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                    <tspan id="tspan1640" x="17.727083" y="140.22917">SA2</tspan>
                  </text>
                  <text xml:space="preserve" x="33.602085" y="140.22917" id="text1644" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.175px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                    <tspan id="tspan1646" x="33.602085" y="140.22917">SA1</tspan>
                  </text>
                  <text xml:space="preserve" x="33.602085" y="140.22917" id="text1676" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.175px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                    <tspan id="tspan1674" x="33.602085" y="140.22917">SA1</tspan>
                  </text>
                  <text xml:space="preserve" x="1.8520846" y="174.625" id="text2556" font-style="normal" font-variant="normal" font-weight="normal" font-size="2.11667px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                    <tspan id="tspan2558" x="1.8520846" y="174.625">LA11</tspan>
                  </text>
                  <text xml:space="preserve" x="29.259861" y="-41.154572" id="text2562" transform="rotate(150)" font-style="normal" font-variant="normal" font-weight="normal" font-size="2.11667px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                    <tspan id="tspan2564" x="29.259861" y="-41.154572">LC11</tspan>
                  </text>
                  <text xml:space="preserve" x="1.8520846" y="158.75" id="text2570" font-style="normal" font-variant="normal" font-weight="normal" font-size="2.11667px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                    <tspan id="tspan2572" x="1.8520846" y="158.75">PA11</tspan>
                  </text>
                  <text xml:space="preserve" x="29.000368" y="-56.580112" id="text2576" transform="rotate(150)" font-style="normal" font-variant="normal" font-weight="normal" font-size="2.11667px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                    <tspan id="tspan2578" x="29.000368" y="-56.580112">PC11</tspan>
                  </text>
                  <text xml:space="preserve" x="16.404167" y="109.80209" id="text2582" font-style="normal" font-variant="normal" font-weight="normal" font-size="4.93889px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                    <tspan id="tspan2588" x="16.404167" y="109.80209">Inter Fabric</tspan>
                    <tspan id="tspan2590" x="16.404167" y="115.97571">  Horizon</tspan>
                  </text>
                </g>
                <g id="g2422" transform="rotate(150,51.600371,162.05233)">
                  <g id="g2376" transform="translate(-31.220833)">
                    <rect id="rect2362" width="7.9375" height="7.9375" x="31.75" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect2364" width="7.9375" height="7.9375" x="47.625" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect2366" width="7.9375" height="7.9375" x="31.75" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <rect id="rect2368" width="7.9375" height="7.9375" x="47.625" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                    <path d="m 37.041666,161.39583 13.229167,7.9375" id="path2370" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 37.041666,169.33333 v 0 -7.9375 0" id="path2372" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                    <path d="m 50.270833,169.33333 v -7.9375 l -13.229167,7.9375" id="path2374" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  </g>
                  <rect id="rect2378" width="7.9375" height="7.9375" x="32.279167" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <rect id="rect2380" width="7.9375" height="7.9375" x="48.154167" y="153.45833" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <rect id="rect2382" width="7.9375" height="7.9375" x="32.279167" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <rect id="rect2384" width="7.9375" height="7.9375" x="48.154167" y="169.33333" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <path d="M 37.570833,161.39583 50.8,169.33333" id="path2386" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 37.570833,169.33333 v 0 -7.9375 0" id="path2388" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 50.8,169.33333 v -7.9375 l -13.229167,7.9375" id="path2390" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <rect id="rect2392" width="7.9375" height="7.9375" x="16.404167" y="134.9375" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <rect id="rect2394" width="7.9375" height="7.9375" x="32.279167" y="134.9375" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.499999" stroke-opacity="1"/>
                  <path d="M 4.4979162,153.45833 20.372916,142.875 l 15.875,10.58333" id="path2396" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 20.372916,153.45833 15.875,-10.58333 15.875,10.58333" id="path2398" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 24.341666,140.22916 h 7.9375" id="path2400" fill="none" stroke="#000000" stroke-width="0.264583px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <path d="m 16.404167,140.22917 -3.96875,-1e-5 v -9.26041 h 31.749999 v 9.26041 h -3.81" id="path2402" fill="none" stroke="#000000" stroke-width="0.259237px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                  <rect id="rect2404" width="66.145836" height="54.239582" x="-4.7624998" y="127" fill="none" fill-opacity="1" stroke="black" stroke-width="0.258199"/>
                  <text xml:space="preserve" x="5.8208332" y="136.26042" id="text2408" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.52778px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                    <tspan id="tspan2546" x="5.8208332" y="136.26042">r_C</tspan>
                  </text>
                  <text xml:space="preserve" x="17.727083" y="140.22917" id="text2412" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.175px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                    <tspan id="tspan2540" x="17.727083" y="140.22917">SC2</tspan>
                  </text>
                  <text xml:space="preserve" x="33.602085" y="140.22917" id="text2416" font-style="normal" font-variant="normal" font-weight="normal" font-size="3.175px" font-family="sans-serif" fill="#000000" fill-opacity="1" stroke-width="0.264583">
                    <tspan id="tspan2548" x="33.602085" y="140.22917">SC1</tspan>
                  </text>
                </g>
                <path d="m 79.504102,177.19679 c 1.322916,0 50.270838,34.39583 50.270838,34.39583 0,0 22.79654,-42.60322 21.47362,-41.2803 -1.32291,1.32292 -71.744458,6.88447 -71.744458,6.88447 z" id="path2536" fill="none" stroke="#000000" stroke-width="0.865" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                <path d="m 92.733266,169.25929 c 21.166674,42.33333 21.166674,42.33333 21.166674,42.33333 l 50.27083,-34.39583 z" id="path2538" fill="none" stroke="#000000" stroke-width="0.865" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
                <rect id="rect2592" width="183.88542" height="150.8125" x="29.233269" y="112.37387" fill="none" fill-opacity="0.321422" stroke="#000000" stroke-width="0.165" stroke-opacity="1"/>
              </g>
            </svg>
          </artwork>
          <artwork align="center" name="" type="ascii-art" originalSrc="svg/multiplanesparedf_overview.ascii-art">[[ Overview of the solution,
   Refer to PDF for Picture ]]</artwork>
        </artset>
      </figure>
      <t>
            For the more complex case of alternate paths longer than 2 hops and the resulting forwarding
            behavior and path diversity <xref target="sparse_17"/> has been described in the document.
      </t>
    </section>
    <section anchor="IANA" toc="default" numbered="true">
      <name>IANA Considerations</name>
      <t>This document requests allocation for the following RIFT codepoints.</t>
      <t>TBD</t>
    </section>
    <section numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>
                TBD
      </t>
    </section>
    <section numbered="true" toc="default">
      <name>Acknowledgements</name>
      <t>
                Dmitry Afanasiev's ideas around his work with BGP and dragonfly started interesting discussions,
                and he provided the crucial
                split horizon forwarding idea. Jeff Tantsura encouraged the work from its initial conception.
                Many thanks to Benson Muite for ASCII figures.
      </t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Informative References</name>
        <reference anchor="EPPSTEIN">
          <front>
            <title>Finding the k-Shortest Paths</title>
            <author initials="D" surname="Eppstein">
              <organization>USC
              </organization>
            </author>
            <date year="1997"/>
          </front>
        </reference>
      </references>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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>
      </references>
    </references>
  </back>
</rfc>
