<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.1.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC9692 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9692.xml">
<!ENTITY RFC5015 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5015.xml">
<!ENTITY I-D.zzhang-pim-pds SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.zzhang-pim-pds.xml">
]>

<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-zzhang-rift-multicast-03" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="MRIFT">Multicast Routing In Fat Trees</title>

    <author initials="Z." surname="Zhang" fullname="Zhaohui Zhang">
      <organization>HPE</organization>
      <address>
        <email>zhaohui.zhang@hpe.com</email>
      </address>
    </author>
    <author initials="P." surname="Thubert" fullname="Pascal Thubert">
      <organization>Cisco Systems</organization>
      <address>
        <email>pthubert@cisco.com</email>
      </address>
    </author>

    <date year="2026" month="November" day="02"/>

    <area>Routing</area>
    <workgroup>RIFT</workgroup>
    <keyword>rift, multicast, bidir</keyword>

    <abstract>


<t>This document specifies multicast procedures with RIFT.  Multicast in
   RIFT is similar to Bidirectional Protocol Independent Multicast (PIM-
   Bidir), with the Rendezvous Point Link (RP-Link) simulated by a
   spanning tree of some Top of Fabric (TOF) nodes and sub-TOF nodes.</t>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>Because of the simple north-south regular topology in Fat Tree
   networks, the PIM-Bidir <xref target="RFC5015"/> solution is extended for multicast
   in RIFT <xref target="RFC9692"/> in this document, referred to as MRIFT.
   The following is a
   summary of the changes and adaptations compared to PIM-Bidir.</t>

<t>With PIM-Bidir, PIM joins are sent towards a Rendezvous Point Address
   (RPA), which could be an address not belonging to any router.  The
   RPA does belong to a RP Link (RPL), which could be attached to a
   single router or multiple routers (e.g.  RPL is a LAN).  With MRIFT,
   there is no concept of RPA any more (joins are simply sent
   northbound).  The joins are terminated on some sub-TOF nodes and the
   RPL is simulated by a spanning tree among some TOF and sub-TOF nodes.</t>

<t>Instead of (*,G) trees in PIM-Bidir, MRIFT uses (*,G-Prefix) trees,
   where the G-Prefix could be *, G, or anything in between (e.g.,
   225.1.1.0/24).  For light flows, they could just follow the (*,*)
   tree.  For heavy flows, individual (*,G) trees could be built.  For
   medium flows, some (*,G-prefix) trees could be shared.  All the First
   Hop Routers (FHRs, connecting to sources) and the Last Hop Routers
   (LHRs, connecting to receivers) of a particular (*,G) flow must agree
   on whether a (*,*) or (*,G) or (*,G-prefix) tree is used for the flow
   so that they all join the same tree.  This is done via out of band
   control outside the scope of this document.</t>

<t>Because of the rich connections in Fat Trees, a router has to choose
   one of its many north neighbors to send join to.  This is done
   through hashing.  The hashing algorithm should lead to several but
   not too many routers choosing the same north neighbor, so that fewer
   routers are involved in multicast traffic forwarding, yet none of
   those routers are overburdened by replicating to too many downstream
   neighbors.</t>

<t>Instead of PIM messages, RIFT's own TIEs are used, similar to the
   concept in <xref target="I-D.zzhang-pim-pds"/>.  This introduces the concept of
   neighbor-scoped flooding - a multicast TIE is sent only to a chosen
   upstream north neighbor that consumes it and then regenerates a new
   TIE for the next upstream.</t>

<t>When a join reaches a sub-TOF node, the normal join process stops.
   This forms a sub-tree rooted at this sub-TOF node.  Multiple sub-
   trees of the same tree may be joined by a single TOF node, or they
   may have to be connected by a spanning tree serving as the RPL.  For
   example, in the following topology, in normal situations the two sub-
   tree roots for the two pods, say Spine111 and Spine121, may be joined
   by TOF21, but if the TOF21-Spine121 link is down, then TOF22 may be
   used, and if the TOF22-Spine111 link is also down, then Spine111 and
   Spine121 will have to be joined via
   Spine111-TOF21-Spine112-TOF22-Spine121.</t>

<figure><artwork><![CDATA[
   .                +--------+          +--------+          ^ N
   .                |TOF   21|          |TOF   22|          |
   .Level 2         ++-+--+-++          ++-+--+-++        <-*-> E/W
   .                 | |  | |            | |  | |           |
   .             P111/2|  |P121          | |  | |         S v
   .                 ^ ^  ^ ^            | |  | |
   .                 | |  | |            | |  | |
   .  +--------------+ |  +-----------+  | |  | +---------------+
   .  |                |    |         |  | |  |                 |
   . South +-----------------------------+ |  |                 ^
   .  |    |           |    |         |    |  |              All TIEs
   .  0/0  0/0        0/0   +-----------------------------+     |
   .  v    v           v              |    |  |           |     |
   .  |    |           +-+    +<-0/0----------+           |     |
   .  |    |             |    |       |    |              |     |
   .+-+----++ optional +-+----++     ++----+-+           ++-----++
   .|       | E/W link |       |     |       |           |       |
   .|Spin111+----------+Spin112|     |Spin121|           |Spin122|
   .+-+---+-+          ++----+-+     +-+---+-+           ++---+--+
   .  |   |             |   South      |   |              |   |
   .  |   +---0/0--->-----+ 0/0        |   +----------------+ |
   . 0/0                | |  |         |                  | | |
   .  |   +---<-0/0-----+ |  v         |   +--------------+ | |
   .  v   |               |  |         |   |                | |
   .+-+---+-+          +--+--+-+     +-+---+-+          +---+-+-+
   .|       |  (L2L)   |       |     |       |  Level 0 |       |
   .|Leaf111~~~~~~~~~~~~Leaf112|     |Leaf121|          |Leaf122|
   .+-+-----+          +-+---+-+     +--+--+-+          +-+-----+
   .  +                  +    \        /   +              +
   .  Prefix111   Prefix112    \      /   Prefix121    Prefix122
   .                          multi-homed
   .                            Prefix
   .+---------- Pod 1 ---------+     +---------- Pod 2 ---------+
]]></artwork></figure>

</section>
<section anchor="specifications"><name>Specifications</name>

<section anchor="multicast-capability"><name>Multicast Capability</name>

<t>A new optional field is added to the NodeCapabilities to indicate
   that the node is enabled for multicast:</t>

<figure><artwork><![CDATA[
 struct NodeCapabilities {
     ...
     4: optional bool           multicast_enabled;
 }
]]></artwork></figure>

</section>
<section anchor="optional-per-neighbor-flooding-scope"><name>Optional Per-neighbor Flooding Scope</name>

<t>This document introduces an optional per-neighbor flooding scope for
   TIEs:</t>

<figure><artwork><![CDATA[
struct TIEHeader {
   ...
   13: optional common.SystemIDType    flooding_scope_neighbor;
}
]]></artwork></figure>

<t>When a node originates a TIE with a per-neighbor flooding scope, it
   is sent to the specified neighbor only.  When a node receives a TIE
   with per-neighbor flooding scope, it is accepted only if the node is
   the specified neighbor, and it is not reflooded any further.</t>

</section>
<section anchor="multicast-tie"><name>Multicast TIE</name>

<t>Currently the multicast TIEs are only N-TIEs with per-neighbor
   flooding scope except on TOFs and sub-TOFs.  If a multicast TIE is
   received from a node south of sub-TOFs without the per-neighbor
   flooding scope specified, it MUST be discarded.</t>

<figure><artwork><![CDATA[
    /** TIE for multicast */
    struct IPMulticastTIEElement {
        /** Multicast TIEs are for (*, group-prefix) joins.
            The '*' is not encoded in the TIE. */
        1: required common.IPPrefixType        group_prefix;
   
        /** fields used by TOFs and sub-TOFs to
            build spanning tree RPL */
        2: optional list<common.SystemIDType>  sub_tof_children;
    }
   
    /** Type of TIE.
        ...
    */
    enum TIETypeType {
        ...
        TIETypeIPMulticast                          = 11,
        TIETypeMaxValue                             = 12,
    }
   
    /** Single element in a TIE.
        ...
     */
    union TIEElement {
        ...
        /** IP multicast elements. */
        10: optional IPMulticastTIEElement ip_multicast;
    }
]]></artwork></figure>

</section>
<section anchor="building-spanning-tree-among-tofs-and-sub-tofs"><name>Building Spanning Tree among TOFs and sub-TOFs</name>

<t>Note: this is still subject to further discussion/change.  It may be
   replaced by another scheme upon further discussions.</t>

<t>If a sub-TOF node is the root of a sub-tree for a (*, G-prefix) tree,
   it hashes to a TOF neighbor as its parent for the tree, and
   originates a corresponding multicast N-TIE with the per-neighbor
   flooding scope, targeted at the chosen ToF neighbor.</t>

<t>A receiving TOF node originates a corresponding S-TIE without the
   per-neighbor flooding scope.  The sub_tof_children list all of sub-
   TOF nodes that have chosen the TOF as parent.</t>

<t>When a sub-TOF node that is the root of a sub-tree receives from TOF
   neighbors the S-TIEs for the same tree, it chooses, from all those S-TIEs,
   the one with the highest originating system-id as the root. If the chosen root
   is not already its parent, it re-parents to the chosen root.</t>

<t>After the above steps, if a non-root TOF node remains as the chosen
   parent of some sub-TOF nodes, the TOF node needs to join towards the
   root through some intermediate sub-TOF and TOF nodes.
   If it has a sub-TOF neighbor listed in the
   sub_tof_children of the root, it originates an S-TIE with the per-
   neighbor flooding scope set to the sub-TOF neighbor, i.e. the sub-TOF
   neighbor now becomes the parent of the TOF node (that is a parent of
   some other sub-TOF nodes) and now the two sub-trees are joined at
   the the sub-ToF neighbor.</t>

<t>In case the TOF node does not have a neighbor listed in the
   sub_tof_children of the S-TIE for the root, it finds a sub-ToF node
   that is a next hop of the route to the root, and originates an S-TIE
   with per-neighbor flooding scope set to the sub-ToF neighbor, as in
   the above case where the neighbor is a sub_tof_child of the root.
   When the neighbor receives the S-TIE join, it further joins towards
   the root, either direcly or indirectly via another ToF, by originating
   a neighbor flooding scoped N-TIE. In the indirect case, the ToF repeats
   the above steps and joins another sub-ToF node.</t>

</section>
<section anchor="root-resilience-considerations"><name>Root Resilience Considerations</name>

<t>While the sub-trees eventually converges to a single root,
   if the root fails at the node level or loses all its links,
   a new root will be automatically chosen by the above procedure.</t>

</section>
<section anchor="multiplane-considerations"><name>Multiplane Considerations</name>

<t>Because the ultimate root of the tree is on a single ToF node,
   the planes must be connected via ToF rings, which is assumed for
   multi-plane RIFT. In the single plane case, or with the ToF rings
   for multi-planes, it is guaranteed that the ToFs and sub-ToFs are
   contiguous due to the south reflection and east-west ring connection,
   unless the topology is partitioned due to wide-spread failures,
   in which case the multicast trees are also partitioned.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>To be provided.</t>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>The authors thank Bruno Rijsman and Antoni Przygenda for their review
   and suggestions.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>

&RFC2119;
&RFC8174;
&RFC9692;


    </references>

    <references title='Informative References'>

&RFC5015;
&I-D.zzhang-pim-pds;


    </references>



  </back>

<!-- ##markdown-source:
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
AAA=

-->

</rfc>

