<?xml version="1.0" encoding="UTF-8"?>
<rfc ipr="trust200902"
     docName="draft-gomez-rift-multicast-operational-00"
     category="info"
     submissionType="IETF"
     xml:lang="en"
     version="3">

  <front>
    <title abbrev="Multicast over RIFT">
      Operational Considerations for Multicast over RIFT-based Data Center Fabrics
    </title>
    <seriesInfo name="Internet-Draft" value="draft-gomez-rift-multicast-operational-00"/>
    <author fullname="Jesus David Gomez Zavala" initials="J. D." surname="Gomez">
      <organization>Independent</organization>
      <address>
        <email>jesusdavid.ieft@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="17"/>
    <area>Routing</area>
    <workgroup>RIFT Working Group</workgroup>
    <keyword>RIFT</keyword>
    <keyword>multicast</keyword>
    <keyword>data center</keyword>
    <keyword>PIM</keyword>
    <keyword>EVPN</keyword>
    <keyword>BIER</keyword>
    <abstract>
      <t>RIFT (Routing in Fat Trees) is increasingly used as an underlay routing protocol in modern data center fabrics. However, RIFT does not natively define mechanisms for multicast traffic distribution.</t>
      <t>This document provides operational guidance and best practices for deploying multicast in RIFT-based data center fabrics. It analyzes PIM, EVPN multicast, BIER, and head-end replication, highlighting trade-offs in scalability, efficiency, and operational complexity.</t>
      <t>This document does not define new protocol mechanisms. It aims to assist network operators in making informed design decisions when deploying multicast services over RIFT-based fabrics.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" numbered="true" toc="default">
      <name>Introduction</name>
      <t>Modern data center fabrics rely on Clos-based topologies to achieve scalability, high bandwidth, and fault tolerance. RIFT <xref target="RFC9692"/> provides efficient unicast routing with topology awareness and Zero Touch Provisioning (ZTP).</t>
      <t>Multicast traffic remains relevant for telemetry distribution, financial data delivery, streaming, and EVPN-VXLAN BUM traffic handling. However, RIFT does not define native multicast capabilities.</t>
      <t>Operators must rely on external mechanisms such as PIM <xref target="RFC4601"/>, EVPN multicast <xref target="RFC7432"/>, BIER <xref target="RFC8279"/>, or head-end replication. This document provides guidance for selecting and operating these mechanisms in RIFT-based fabrics.</t>
    </section>

    <section anchor="terminology" numbered="true" toc="default">
      <name>Terminology</name>
      <t>The key words <bcp14>MUST</bcp14>, <bcp14>MUST NOT</bcp14>, <bcp14>REQUIRED</bcp14>, <bcp14>SHALL</bcp14>, <bcp14>SHALL NOT</bcp14>, <bcp14>SHOULD</bcp14>, <bcp14>SHOULD NOT</bcp14>, <bcp14>RECOMMENDED</bcp14>, <bcp14>NOT RECOMMENDED</bcp14>, <bcp14>MAY</bcp14>, and <bcp14>OPTIONAL</bcp14> in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals.</t>
      <dl newline="false" spacing="normal">
        <dt>RIFT Fabric:</dt><dd>A Clos or fat-tree data center network using RIFT as the underlay.</dd>
        <dt>Leaf Node:</dt><dd>A node connecting endpoints to the fabric.</dd>
        <dt>Spine Node:</dt><dd>A node interconnecting leaf nodes within the fabric.</dd>
        <dt>BUM Traffic:</dt><dd>Broadcast, Unknown Unicast, and Multicast traffic in EVPN-VXLAN.</dd>
        <dt>VTEP:</dt><dd>VXLAN Tunnel Endpoint.</dd>
        <dt>Head-End Replication (HER):</dt><dd>Ingress node replicates packets to each remote receiver via unicast.</dd>
        <dt>RP (Rendezvous Point):</dt><dd>PIM-SM node coordinating multicast group membership and tree construction.</dd>
        <dt>RPF (Reverse Path Forwarding):</dt><dd>Mechanism validating multicast packet ingress interface against the unicast routing table.</dd>
        <dt>KV-TIE:</dt><dd>Key-Value Topology Information Element. RIFT mechanism for distributing key-value data within the fabric.</dd>
        <dt>ZTP:</dt><dd>Zero Touch Provisioning. RIFT automatic node-level discovery and configuration.</dd>
      </dl>
    </section>

    <section anchor="applicability" numbered="true" toc="default">
      <name>Applicability Statement</name>
      <t>This document applies to data center fabrics using RIFT <xref target="RFC9692"/> as the underlay routing protocol, specifically Clos and fat-tree topologies as described in <xref target="RFC9696"/>. It is not intended for general-purpose IP networks or WAN environments.</t>
      <t>Numerical values and thresholds presented in this document are illustrative and may vary by platform. Operators <bcp14>SHOULD</bcp14> validate all thresholds against their platform documentation prior to production deployment.</t>
    </section>

    <section anchor="problem" numbered="true" toc="default">
      <name>Problem Statement</name>
      <t>RIFT provides efficient unicast routing but does not define mechanisms for multicast group membership or tree construction. Existing solutions introduce the following trade-offs:</t>
      <ul spacing="normal">
        <li>PIM introduces control-plane complexity requiring RP placement design and specialized expertise.</li>
        <li>EVPN multicast increases signaling overhead and requires overlay-underlay coordination.</li>
        <li>Head-end replication does not scale efficiently; cost grows linearly with VTEP count.</li>
        <li>None of these approaches natively leverage RIFT topology awareness or KV-TIE distribution.</li>
      </ul>
      <t>There is no standardized operational guidance for multicast in RIFT-based fabrics. This document addresses this gap.</t>
    </section>

    <section anchor="models" numbered="true" toc="default">
      <name>Multicast Deployment Models</name>
      <t>Operators should evaluate deployment models based on scale, platform support, and operational requirements. Table 1 summarizes the trade-offs.</t>
      <table anchor="tbl-models" align="center">
        <name>Deployment Model Comparison</name>
        <thead><tr><th>Model</th><th>Config</th><th>Underlay Mcast</th><th>Scale</th><th>Convergence</th></tr></thead>
        <tbody>
          <tr><td>RIFT Native</td><td>Auto</td><td>None</td><td>Excellent</td><td>Excellent</td></tr>
          <tr><td>PIM</td><td>Medium</td><td>Required</td><td>Good</td><td>1-5 s</td></tr>
          <tr><td>EVPN / IR</td><td>Low</td><td>None</td><td>Limited</td><td>Good</td></tr>
          <tr><td>EVPN / Incl. Trees</td><td>High</td><td>Required</td><td>Medium</td><td>Moderate</td></tr>
          <tr><td>BIER</td><td>Auto</td><td>None</td><td>Excellent</td><td>Sub-second</td></tr>
          <tr><td>Head-End Replication</td><td>Low</td><td>None</td><td>Poor</td><td>Good</td></tr>
        </tbody>
      </table>

      <section anchor="model-native" numbered="true" toc="default">
        <name>Native RIFT Multicast</name>
        <t>Work is ongoing <xref target="RIFT-MULTICAST"/> to define native RIFT multicast support. Operators <bcp14>MAY</bcp14> consider this approach once standardized. It is expected to provide automatic tree construction via ZTP and KV-TIEs.</t>
      </section>

      <section anchor="model-pim" numbered="true" toc="default">
        <name>Underlay Multicast using PIM</name>
        <t>PIM <bcp14>MAY</bcp14> be deployed over a RIFT underlay. The RP <bcp14>SHOULD</bcp14> be placed on spine nodes. PIM BSR <bcp14>SHOULD</bcp14> be used for automatic RP advertisement. A dedicated multicast group range <bcp14>SHOULD</bcp14> be assigned for fabric use. Convergence is typically 1 to 5 seconds after failure.</t>
      </section>

      <section anchor="model-evpn" numbered="true" toc="default">
        <name>Overlay Multicast using EVPN</name>
        <t>EVPN multicast <xref target="RFC7432"/> <bcp14>MAY</bcp14> be used over a RIFT underlay. Ingress Replication is <bcp14>RECOMMENDED</bcp14> for small deployments only (fewer than 100 VTEPs). Inclusive Multicast Trees scale better but require underlay multicast. Operators <bcp14>SHOULD</bcp14> carefully plan VNI-to-multicast group mappings.</t>
      </section>

      <section anchor="model-bier" numbered="true" toc="default">
        <name>BIER-based Multicast</name>
        <t>BIER <xref target="RFC8279"/> <bcp14>MAY</bcp14> be used as a multicast forwarding mechanism. <xref target="RFC9624"/> defines how BIER optimizes EVPN BUM forwarding. BIER is stateless in intermediate nodes and provides sub-second convergence. Operators <bcp14>SHOULD</bcp14> evaluate BIER where platform support is available.</t>
      </section>

      <section anchor="model-her" numbered="true" toc="default">
        <name>Head-End Replication</name>
        <t>Head-end replication <bcp14>MAY</bcp14> be used for simplicity. It is <bcp14>RECOMMENDED</bcp14> only for small deployments (fewer than 50 VTEPs) and <bcp14>SHOULD NOT</bcp14> be used in large fabrics.</t>
      </section>
    </section>

    <section anchor="best-practices" numbered="true" toc="default">
      <name>Operational Best Practices</name>
      <t>The values presented are illustrative and may vary by platform.</t>
      <section anchor="bp-planning" numbered="true" toc="default">
        <name>Multicast Group Planning</name>
        <t>A multicast group allocation policy <bcp14>SHOULD</bcp14> be established prior to deployment. Each VNI <bcp14>SHOULD</bcp14> be mapped to a unique multicast group for EVPN BUM traffic. All mappings <bcp14>SHOULD</bcp14> be documented centrally to prevent conflicts.</t>
      </section>
      <section anchor="bp-redundancy" numbered="true" toc="default">
        <name>RP Redundancy Strategies</name>
        <t>A primary RP and at least one backup RP <bcp14>SHOULD</bcp14> be configured on different spine nodes. PIM Anycast-RP <xref target="RFC4610"/> or BSR-based redundancy <bcp14>MAY</bcp14> be used for automatic failover.</t>
      </section>
      <section anchor="bp-automation" numbered="true" toc="default">
        <name>Configuration Automation</name>
        <t>Operators <bcp14>SHOULD</bcp14> use configuration templates and automation frameworks for consistent configuration. Manual per-node configuration is error-prone and does not scale beyond 100 nodes.</t>
      </section>
      <section anchor="bp-validation" numbered="true" toc="default">
        <name>Convergence Validation</name>
        <t>Before production deployment, operators <bcp14>SHOULD</bcp14> validate convergence by deliberately failing an RP or spine node and measuring traffic interruption duration.</t>
      </section>
    </section>

    <section anchor="monitoring" numbered="true" toc="default">
      <name>Monitoring and Observability</name>
      <t>Operators <bcp14>SHOULD</bcp14> monitor multicast traffic using platform telemetry. Table 2 provides recommended alert thresholds. Values are illustrative.</t>
      <table anchor="tbl-monitoring" align="center">
        <name>Key Multicast Monitoring Metrics</name>
        <thead><tr><th>Metric</th><th>Alert Threshold</th><th>Recommended Action</th></tr></thead>
        <tbody>
          <tr><td>Active Multicast Groups</td><td>&gt; 80% of HW limit</td><td>Add capacity / optimize</td></tr>
          <tr><td>Active Sources</td><td>Unexpected spike</td><td>Investigate source</td></tr>
          <tr><td>RP CPU Usage</td><td>&gt; 70%</td><td>Add RP / rate-limit</td></tr>
          <tr><td>BUM Traffic Volume</td><td>&gt; 150% of baseline</td><td>Check storm / misconfig</td></tr>
          <tr><td>PIM Join/Prune Rate</td><td>Sustained high rate</td><td>Check topology stability</td></tr>
        </tbody>
      </table>
    </section>

    <section anchor="convergence" numbered="true" toc="default">
      <name>Convergence Considerations</name>
      <t>Multicast convergence depends on underlay convergence time, protocol behavior, and control-plane load. Some packet loss during convergence is expected. Operators <bcp14>SHOULD</bcp14> use fast failure detection on PIM-enabled links.</t>
      <table anchor="tbl-scalability" align="center">
        <name>Scalability and Convergence Guidelines</name>
        <thead><tr><th>Metric</th><th>Small DC (&lt;100)</th><th>Medium DC (100-500)</th><th>Large DC (500+)</th></tr></thead>
        <tbody>
          <tr><td>Max Multicast Groups</td><td>~1,000</td><td>~5,000</td><td>~50,000+</td></tr>
          <tr><td>Recommended RPs</td><td>1</td><td>2-3</td><td>4-6</td></tr>
          <tr><td>Convergence Target</td><td>&lt; 1 second</td><td>1-5 seconds</td><td>5-10 seconds</td></tr>
          <tr><td>Recommended BUM Model</td><td>HER / PIM</td><td>Inclusive Trees</td><td>BIER / Dist. RPs</td></tr>
          <tr><td>HW Threshold Alert</td><td>80% of 4K</td><td>80% of 16K</td><td>80% of 64K+</td></tr>
        </tbody>
      </table>
    </section>

    <section anchor="bum" numbered="true" toc="default">
      <name>BUM Traffic Handling</name>
      <section anchor="bum-broadcast" numbered="true" toc="default">
        <name>Broadcast Traffic</name>
        <t>EVPN ARP suppression <bcp14>SHOULD</bcp14> be enabled on all leaf nodes. DHCP relay <bcp14>SHOULD</bcp14> be configured on leaf nodes. Broadcast rate limiting <bcp14>SHOULD</bcp14> be configured to prevent storm propagation.</t>
      </section>
      <section anchor="bum-unicast" numbered="true" toc="default">
        <name>Unknown Unicast</name>
        <t>Leaf nodes <bcp14>SHOULD</bcp14> properly learn and advertise MAC addresses via EVPN Type 2 routes. Unknown unicast rates per VNI <bcp14>SHOULD</bcp14> be monitored. Unknown unicast suppression <bcp14>SHOULD</bcp14> be enabled where supported.</t>
      </section>
      <section anchor="bum-mcast" numbered="true" toc="default">
        <name>Multicast Traffic</name>
        <t>IGMP snooping <bcp14>SHOULD</bcp14> be enabled on all leaf nodes. An IGMP querier <bcp14>SHOULD</bcp14> be designated per broadcast domain. For IPv6 segments, MLD snooping and an MLD querier <bcp14>SHOULD</bcp14> be configured.</t>
      </section>
    </section>

    <section anchor="usecases" numbered="true" toc="default">
      <name>Use Cases and Deployment Examples</name>
      <section anchor="uc-small" numbered="true" toc="default">
        <name>Small Data Center (fewer than 100 Nodes)</name>
        <t>A small RIFT fabric (2-4 spines, 10-50 leaves) prioritizes simplicity. RIFT ZTP <bcp14>SHOULD</bcp14> be deployed. EVPN with Head-End Replication is <bcp14>RECOMMENDED</bcp14> for BUM. If native multicast is required, a single RP on one spine node is sufficient. ARP suppression <bcp14>SHOULD</bcp14> be enabled on all leaves.</t>
      </section>
      <section anchor="uc-medium" numbered="true" toc="default">
        <name>Medium Data Center (100 to 500 Nodes)</name>
        <t>A medium RIFT fabric (10-30 spines, 100-300 leaves) requires scalability and redundancy. Operators <bcp14>SHOULD</bcp14> deploy 2-3 RPs on different spine nodes with PIM BSR. EVPN inclusive multicast trees are <bcp14>RECOMMENDED</bcp14> over head-end replication. Separate multicast group ranges <bcp14>SHOULD</bcp14> be assigned for infrastructure and application traffic.</t>
      </section>
      <section anchor="uc-large" numbered="true" toc="default">
        <name>Large Data Center (500 or More Nodes)</name>
        <t>A large RIFT fabric (50+ spines, 500+ leaves) requires high efficiency. BIER <xref target="RFC8279"/> <xref target="RFC9624"/> is <bcp14>RECOMMENDED</bcp14> where platform support is available. If BIER is unavailable, 4-6 distributed RPs with PIM Anycast-RP <xref target="RFC4610"/> <bcp14>SHOULD</bcp14> be deployed. Regional multicast domains <bcp14>SHOULD</bcp14> limit state propagation.</t>
      </section>
    </section>

    <section anchor="troubleshooting" numbered="true" toc="default">
      <name>Troubleshooting</name>
      <t>Diagnostic procedures vary by platform. Operators <bcp14>SHOULD</bcp14> consult platform documentation for specific commands and tools.</t>
      <section anchor="ts-no-traffic" numbered="true" toc="default">
        <name>Multicast Traffic Not Reaching All VTEPs</name>
        <t>Possible causes: incorrect IGMP/MLD group membership on leaf nodes; EVPN IMET routes not advertised; RPF check failing due to asymmetric routing. Steps: verify group membership state; verify EVPN IMET route advertisement; check RPF path; confirm RIFT unicast convergence is complete.</t>
      </section>
      <section anchor="ts-rp-cpu" numbered="true" toc="default">
        <name>RP Node High CPU</name>
        <t>Possible causes: excessive PIM Register messages; (S,G) state approaching platform limits. Steps: examine PIM message rates on the RP; check active multicast state count; consider additional RPs or BIER migration.</t>
      </section>
      <section anchor="ts-convergence" numbered="true" toc="default">
        <name>Slow Multicast Convergence</name>
        <t>Possible causes: PIM waiting for RIFT unicast convergence; slow backup RP detection; fast failure detection not configured. Steps: measure RIFT convergence time independently; verify fast failure detection on PIM links; test RP failover in a lab.</t>
      </section>
      <section anchor="ts-broadcast" numbered="true" toc="default">
        <name>Excessive Broadcast Traffic</name>
        <t>Possible causes: ARP suppression not enabled; host generating broadcast storm; MAC learning failures. Steps: verify ARP suppression per VNI; monitor per-interface broadcast counters; identify source via MAC address tables; inspect offending host.</t>
      </section>
    </section>

    <section anchor="security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>Multicast deployments <bcp14>MAY</bcp14> introduce flooding, amplification, and unauthorized group access risks. Operators <bcp14>SHOULD</bcp14> enable RPF checking; use SSM with IGMPv3 where possible; filter 224.0.0.0/24 at fabric boundaries (this range <bcp14>MUST NOT</bcp14> be routed across the fabric); configure per-source rate limits; and apply control-plane policing on RP nodes.</t>
    </section>

    <section anchor="iana" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>

  </middle>

  <back>
    <references>
      <name>References</name>
      <references anchor="normative">
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front><title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials="S." surname="Bradner" fullname="S. Bradner"/>
          <date year="1997" month="March"/></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">
          <front><title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author initials="B." surname="Leiba" fullname="B. Leiba"/>
          <date year="2017" month="May"/></front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9692" target="https://www.rfc-editor.org/info/rfc9692">
          <front><title>RIFT: Routing in Fat Trees</title>
          <author initials="T." surname="Przygienda" fullname="T. Przygienda" role="editor"/>
          <author initials="J." surname="Head" fullname="J. Head" role="editor"/>
          <author initials="A." surname="Sharma" fullname="A. Sharma"/>
          <author initials="B." surname="Rijsman" fullname="B. Rijsman"/>
          <date year="2025" month="April"/></front>
          <seriesInfo name="RFC" value="9692"/>
          <seriesInfo name="DOI" value="10.17487/RFC9692"/>
        </reference>
      </references>
      <references anchor="informative">
        <name>Informative References</name>
        <reference anchor="RFC4601" target="https://www.rfc-editor.org/info/rfc4601">
          <front><title>Protocol Independent Multicast - Sparse Mode (PIM-SM)</title>
          <author initials="B." surname="Fenner" fullname="B. Fenner" role="editor"/>
          <date year="2006" month="August"/></front>
          <seriesInfo name="RFC" value="4601"/>
          <seriesInfo name="DOI" value="10.17487/RFC4601"/>
        </reference>
        <reference anchor="RFC4610" target="https://www.rfc-editor.org/info/rfc4610">
          <front><title>Anycast-RP Using Protocol Independent Multicast (PIM)</title>
          <author initials="D." surname="Farinacci" fullname="D. Farinacci"/>
          <author initials="Y." surname="Cai" fullname="Y. Cai"/>
          <date year="2006" month="August"/></front>
          <seriesInfo name="RFC" value="4610"/>
          <seriesInfo name="DOI" value="10.17487/RFC4610"/>
        </reference>
        <reference anchor="RFC7432" target="https://www.rfc-editor.org/info/rfc7432">
          <front><title>BGP MPLS-Based Ethernet VPN</title>
          <author initials="A." surname="Sajassi" fullname="A. Sajassi" role="editor"/>
          <date year="2015" month="February"/></front>
          <seriesInfo name="RFC" value="7432"/>
          <seriesInfo name="DOI" value="10.17487/RFC7432"/>
        </reference>
        <reference anchor="RFC8279" target="https://www.rfc-editor.org/info/rfc8279">
          <front><title>Multicast Using Bit Index Explicit Replication (BIER)</title>
          <author initials="I. J." surname="Wijnands" fullname="I. J. Wijnands" role="editor"/>
          <author initials="E." surname="Rosen" fullname="E. Rosen" role="editor"/>
          <date year="2017" month="November"/></front>
          <seriesInfo name="RFC" value="8279"/>
          <seriesInfo name="DOI" value="10.17487/RFC8279"/>
        </reference>
        <reference anchor="RFC8365" target="https://www.rfc-editor.org/info/rfc8365">
          <front><title>A Network Virtualization Overlay Solution Using Ethernet VPN (EVPN)</title>
          <author initials="A." surname="Sajassi" fullname="A. Sajassi" role="editor"/>
          <date year="2018" month="March"/></front>
          <seriesInfo name="RFC" value="8365"/>
          <seriesInfo name="DOI" value="10.17487/RFC8365"/>
        </reference>
        <reference anchor="RFC9251" target="https://www.rfc-editor.org/info/rfc9251">
          <front><title>IGMP and MLD Proxies for Ethernet VPN (EVPN)</title>
          <author initials="A." surname="Sajassi" fullname="A. Sajassi" role="editor"/>
          <date year="2022" month="June"/></front>
          <seriesInfo name="RFC" value="9251"/>
          <seriesInfo name="DOI" value="10.17487/RFC9251"/>
        </reference>
        <reference anchor="RFC9624" target="https://www.rfc-editor.org/info/rfc9624">
          <front><title>EVPN BUM Using Bit Index Explicit Replication (BIER)</title>
          <author initials="Z." surname="Zhang" fullname="Z. Zhang"/>
          <author initials="T." surname="Przygienda" fullname="T. Przygienda"/>
          <author initials="A." surname="Sajassi" fullname="A. Sajassi"/>
          <date year="2024" month="August"/></front>
          <seriesInfo name="RFC" value="9624"/>
          <seriesInfo name="DOI" value="10.17487/RFC9624"/>
        </reference>
        <reference anchor="RFC9696" target="https://www.rfc-editor.org/info/rfc9696">
          <front><title>RIFT: Applicability and Operational Considerations</title>
          <author initials="T." surname="Przygienda" fullname="T. Przygienda" role="editor"/>
          <date year="2025" month="April"/></front>
          <seriesInfo name="RFC" value="9696"/>
          <seriesInfo name="DOI" value="10.17487/RFC9696"/>
        </reference>
        <reference anchor="RIFT-MULTICAST" target="https://datatracker.ietf.org/doc/draft-zzhang-rift-multicast/">
          <front><title>Multicast Routing In Fat Trees</title>
          <author initials="Z." surname="Zhang" fullname="Zhaohui Zhang"/>
          <date year="2025" month="April"/></front>
          <seriesInfo name="Internet-Draft" value="draft-zzhang-rift-multicast"/>
        </reference>
      </references>
    </references>

    <section anchor="appendix-clos" numbered="false" toc="default">
      <name>Appendix A: Two-Level RIFT Fabric (Small/Medium DC)</name>
      <figure anchor="fig-clos"><name>Two-Level RIFT Fabric</name>
        <artwork align="center" type="ascii-art"><![CDATA[
          Level 1 (Spine)
  +------------+    +------------+
  |  Spine-1   |    |  Spine-2   |
  +------------+    +------------+
   /    |    \      /    |    \
  /     |     \    /     |     \
Level 0 (Leaf)
+--------+ +--------+ +--------+ +--------+
| Leaf-1 | | Leaf-2 | | Leaf-3 | | Leaf-4 |
+--------+ +--------+ +--------+ +--------+
   | |        | |        | |        | |
  VMs VMs   VMs VMs    VMs VMs    VMs VMs
        ]]></artwork>
      </figure>
    </section>

    <section anchor="appendix-pim" numbered="false" toc="default">
      <name>Appendix B: PIM Multicast Tree Example</name>
      <figure anchor="fig-pim"><name>PIM Multicast Tree in a RIFT Fabric</name>
        <artwork align="center" type="ascii-art"><![CDATA[
   Source (Leaf-1)
        |
        v
  +----------+
  | Spine-1  |  <-- Rendezvous Point (RP)
  +----------+
   /    |    \
  v     v     v
+------+ +------+ +------+
|Leaf-2| |Leaf-3| |Leaf-4|
+------+ +------+ +------+
        ]]></artwork>
      </figure>
    </section>

    <section anchor="appendix-her" numbered="false" toc="default">
      <name>Appendix C: EVPN BUM Head-End Replication</name>
      <figure anchor="fig-her"><name>EVPN BUM Head-End Replication</name>
        <artwork align="center" type="ascii-art"><![CDATA[
  Ingress VTEP
  +--------+
  | Leaf-1 |
  +--------+
   /   |   \  (unicast VXLAN copies)
  v    v    v
+------+ +------+ +------+
|Leaf-2| |Leaf-3| |Leaf-4|
|(VTEP)| |(VTEP)| |(VTEP)|
+------+ +------+ +------+
        ]]></artwork>
      </figure>
    </section>

    <section anchor="appendix-large" numbered="false" toc="default">
      <name>Appendix D: Large DC Multi-Level Topology</name>
      <figure anchor="fig-large"><name>Three-Level RIFT Fabric (Large DC)</name>
        <artwork align="center" type="ascii-art"><![CDATA[
        Level 2 (Super-Spine)
+-----------+  +-----------+  +-----------+
| S-Spine-1 |  | S-Spine-2 |  | S-Spine-3 |
+-----------+  +-----------+  +-----------+
  Level 1 (Spine) -- Multiple RP regions
+------+ +------+  +------+ +------+
|Sp-1  | |Sp-2  |  |Sp-3  | |Sp-4  |  ...
|(RP-A)| |(RP-B)|  |(RP-C)| |(RP-D)|
+------+ +------+  +------+ +------+
  Level 0 (Leaf)
+--++--+ +--++--+  +--++--+ +--++--+
|L1||L2| |L3||L4|  |L5||L6| |L7||L8| ...
+--++--+ +--++--+  +--++--+ +--++--+
        ]]></artwork>
      </figure>
    </section>

  </back>
</rfc>
