<?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-01" 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-01"/>
    <author fullname="Tony Przygienda" initials="A." surname="Przygienda" role="editor">
      <organization>Juniper</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="2024"/>
    <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 variant 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
                leaves those out.

      </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.
                </dd>
        <dt>Inter Fabric Planes or IF-planes:</dt>
        <dd>
                    Multi-Plane that spans multiple fabrics.
                </dd>
        <dt>Inter Fabric link or IF links:</dt>
        <dd>
                    A horizontal ToF link between two fabrics.
                </dd>
        <dt>Alternate Next Hop:</dt>
        <dd>
                    A next hop through an IF interface that does not represent the shortest path
                    through the inter fabric horizon but necessitates the receiving node to
                    use the next hop on the shortest path to the destination fabric (direct next hop).
                </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 IF 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, IF links.
                    And fortunately enough, IF 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. 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 IF 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
                 IF 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 IF 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. <xref target="fwd"/> will expound
                further how that database is used.
      </t>
      <section>
        <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 additional, alternate next hop to increase the bi-sectional
                bandwidth. In our example SB1 forwarding to LA1 can take instead
                of SA1 directly a path through SC1 relying on it forwarding to SA1.
                To support this we introduce an additional SPF computation which
                takes in first 2 iterations only  IF links  and generates
                a "indirect inter fabric forwarding database". <xref target="fwd"/> will expound
                further how that database is used.
        </t>
        <t>Computing such alternate next hops will have the other beneficial
                effect of actually providing a backup path in case the direct IF plane
                link to another fabric becomes unavailable.</t>
      </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 "indirect
                inter fabric next hop" 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 arriving at a inter fabric
                link MUST use a FIB which does not contain the
                indirect inter fabric next hops and hence the FIB
                used to forward traffic on the IF inter faces MUST NOT
                include the results of indirect next hop computation.
                The solution will naturally
                limit any non-shortest inter fabric path in ToF case to
                maximally one alternate next hop. Observe that
                per inter face specific FIB is nothing particularly
                special, any technology supporting VPN or trunking
                today is already capable of provisioning inter face
                specific forwarding behavior.

      </t>
    </section>
    <section anchor="patholody" 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 IF 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 IF 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 IF 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 "IF 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 IF 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>
    </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>
      </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>
