<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" consensus="true" docName="draft-ietf-bess-evpn-redundant-mcast-source-15" number="9856" ipr="trust200902" submissionType="IETF" obsoletes="" updates="" xml:lang="en" symRefs="true" sortRefs="true" tocInclude="true" version="3">

  <front>
    <title abbrev="EVPN Redundant Sources">Multicast Source Redundancy in EVPNs</title>
    <seriesInfo name="RFC" value="9856"/>
    <author fullname="Jorge Rabadan" initials="J." role="editor" surname="Rabadan">
      <organization>Nokia</organization>
      <address>
        <postal>
          <street>520 Almanor Avenue</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94085</code>
          <country>United States of America</country>
        </postal>
        <email>jorge.rabadan@nokia.com</email>
      </address>
    </author>
    <author fullname="Jayant Kotalwar" initials="J." surname="Kotalwar">
      <organization>Nokia</organization>
      <address>
        <postal>
          <street>520 Almanor Avenue</street>
          <city>Sunnyvale</city>
	  <region>CA</region>
	  <code>94085</code>
	  <country>United States of America</country>
        </postal>
        <email>jayant.kotalwar@nokia.com</email>
      </address>
    </author>
    <author fullname="Senthil Sathappan" initials="S." surname="Sathappan">
      <organization>Nokia</organization>
      <address>
        <postal>
          <street>520 Almanor Avenue</street>
          <city>Sunnyvale</city>
	  <region>CA</region>
	  <code>94085</code>
	  <country>United States of America</country>
        </postal>
        <email>senthil.sathappan@nokia.com</email>
      </address>
    </author>
    <author fullname="Zhaohui Zhang" initials="Z." surname="Zhang">
      <organization abbrev="Juniper">Juniper Networks</organization>
      <address>
        <email>zzhang@juniper.net</email>
      </address>
    </author>
    <author fullname="Wen Lin" initials="W." surname="Lin">
      <organization abbrev="Juniper">Juniper Networks</organization>
      <address>
        <email>wlin@juniper.net</email>
      </address>
    </author>
    <date month="September" year="2025"/>
    <area>RTG</area>
    <workgroup>bess</workgroup>

<keyword>Warm standby</keyword>
<keyword>hot standby</keyword>
<keyword>OISM</keyword>
<keyword>redundant G-source</keyword>
<keyword>SFG</keyword>
<keyword>Single Flow Group</keyword>

    <abstract>
      <t>In Ethernet Virtual Private Networks (EVPNs), IP multicast traffic
      replication and delivery play a crucial role in enabling efficient and
      scalable Layer 2 and Layer 3 services. A common deployment scenario
      involves redundant multicast sources that ensure high availability and
      resiliency. However, the presence of redundant sources can lead to
      duplicate IP multicast traffic in the network, causing inefficiencies
      and increased overhead. This document specifies extensions to the EVPN
      multicast procedures that allow for the suppression of duplicate IP
      multicast traffic from redundant sources. The proposed mechanisms
      enhance the EVPN's capability to deliver multicast traffic efficiently while
      maintaining high availability. These extensions are applicable to
      various EVPN deployment scenarios and provide guidelines to ensure
      consistent and predictable behavior across diverse network
      topologies.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="sect-1" numbered="true" toc="default">
      <name>Introduction</name>
      <t>Ethernet Virtual Private Networks (EVPNs) <xref target="RFC7432" format="default"/>
      support both intra-subnet and inter-subnet IP multicast forwarding.
      <xref target="RFC9251" format="default"/> outlines the procedures required to optimize
      the delivery of IP multicast flows when both sources and receivers are
      connected to the same EVPN Broadcast Domain. <xref target="RFC9625" format="default"/>,
      on the other hand, defines the procedures for supporting inter-subnet IP
      multicast within a tenant network, where the IP multicast source and
      receivers of the same multicast flow are connected to different
      Broadcast Domains within the same tenant.</t>
      <t>However, <xref target="RFC9251" format="default"/>, <xref target="RFC9625" format="default"/>, and
      conventional IP multicast techniques do not provide a solution for
      scenarios where: </t>
      <ol spacing="normal" type="1"><li>
          <t>A given multicast group carries multiple flows (i.e., multiple
          sources are active), and</t>
        </li>
        <li>
          <t>Each receiver should receive only from one source.</t>
        </li>
      </ol>
      <t>Existing multicast solutions typically assume that there are no
      redundant sources sending identical flows to the same IP multicast
      group. In cases where redundant sources do exist, the receiver
      application is expected to handle duplicate packets.</t>
      <t>In conventional IP multicast networks, such as those running Protocol
      Independent Multicast (PIM) <xref target="RFC7761" format="default"/> or Multicast Virtual Private Network
      (MVPN) <xref target="RFC6513" format="default"/>, a workaround is to configure all
      redundant sources with the same IP address. This approach ensures that
      each receiver gets only one flow because: </t>
      <ul spacing="normal">
        <li>
          <t>The Rendezvous Point (RP) in the multicast network always creates
          the (S,G) state for each source.</t>
        </li>
        <li>
          <t>The Last Hop Router (LHR) may also create the (S,G) state.</t>
        </li>
        <li>
          <t>The (S,G) state binds the flow to a source-specific tree rooted
          at the source IP address. When multiple sources share the same IP
          address, the resulting source-specific trees ensure that each LHR or
          RP resides on at most one tree.</t>
        </li>
      </ul>
      <t>This workaround, which often uses anycast addresses, is suitable for
      Warm Standby (WS) redundancy solutions (<xref target="sect-4" format="default"/>). However, it
      is not effective for Hot Standby (HS) redundancy scenarios (<xref target="sect-5" format="default"/>), and it introduces challenges when sources need to be
      reachable via IP unicast or when multiple sources with the same IP
      address are attached to the same Broadcast Domain. In scenarios where
      multiple multicast sources stream traffic to the same group using EVPN
      Optimized Inter-Subnet Multicast (OISM), there is not necessarily any
      (S,G) state created for the redundant sources. In such cases, the Last Hop Routers may only have a (*,G) state, and there may not be an RP router to create an (S,G) state.</t>
      <t>This document extends <xref target="RFC9251" format="default"/> and <xref target="RFC9625" format="default"/> to address scenarios where IP multicast source
      redundancy exists. Specifically, it defines procedures for EVPN Provider Edge (PE)
      devices/routers to ensure that receivers do not
      experience packet duplication when two or more sources send identical IP
      multicast flows into the tenant domain. These procedures are limited to
      the context of <xref target="RFC9251" format="default"/> and <xref target="RFC9625" format="default"/>;
      handling redundant sources in other multicast solutions is beyond the
      scope of this document.</t>
      <section anchor="sect-1.1" 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&nbsp;14 <xref
        target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
        appear in all capitals, as shown here.</t>

        <dl spacing="normal" newline="false">
          <dt>BD:</dt><dd>Broadcast Domain. An emulated Ethernet, such that two
          systems on the same BD will receive each other's link-local
          broadcasts. In this document, "BD" also refers to the instantiation of
          a Broadcast Domain on an EVPN PE. An EVPN PE can be attached to one
          or multiple BDs of the same tenant.</dd>
          <dt>BUM:</dt><dd>Broadcast, Unknown Unicast, and Multicast traffic.</dd>
          <dt>DF:</dt><dd>Designated Forwarder. As defined in <xref
          target="RFC7432" format="default"/>, an Ethernet Segment (ES) may be
          multi-homed (attached to more than one PE). An ES may
          also contain multiple BDs of one or more EVIs. For each such EVI,
          one of the PEs attached to the segment becomes that EVI's DF for
          that segment. Since a BD may belong to only one EVI, we can speak
          unambiguously of the BD's DF for a given segment.</dd>
          <dt>Downstream PE:</dt><dd>In this document, a downstream PE is
          referred to as the EVPN PE that is connected to the IP Multicast
          receivers and gets the IP Multicast flows from remote EVPN PEs.</dd>
          <dt>EVI:</dt><dd>EVPN Instance.</dd>
          <dt>G-traffic:</dt><dd>Any frame with an IP payload whose destination IP
          address is a multicast group G.</dd>
          <dt>G-source:</dt><dd>Any system sourcing IP multicast traffic to
          group G.</dd>
          <dt>Hot Standby Redundancy:</dt><dd>The multicast source redundancy
          procedure defined in this document, by which the upstream PEs
          forward the redundant multicast flows to the downstream PEs, and the
          downstream PEs make sure only one flow is forwarded to the
          interested attached receivers.</dd>
          <dt>IGMP:</dt><dd>Internet Group Management Protocol <xref
          target="RFC9776" format="default"/>.</dd>
          <dt>I-PMSI:</dt><dd>Inclusive Multicast Tree or Inclusive Provider Multicast Service Interface. While defined in <xref target="RFC6513"
          format="default"/>, in this document it is only applicable to EVPN
          and refers to the default multicast tree for a given BD. All the
          EVPN PEs that are attached to a specific BD belong to the I-PMSI for
          the BD. The I-PMSI trees are signaled by EVPN Inclusive Multicast
          Ethernet Tag (IMET) routes.</dd>
          <dt>IMET route:</dt><dd>EVPN Inclusive Multicast Ethernet Tag route,
          as in <xref target="RFC7432" format="default"/>.</dd>
          <dt>MLD:</dt><dd>Multicast Listener Discovery <xref target="RFC9777"
          format="default"/>.</dd>
          <dt>MVPN:</dt><dd>Multicast Virtual Private Networks, as in <xref
          target="RFC6513" format="default"/>.</dd>
          <dt>OISM:</dt><dd>Optimized Inter-Subnet Multicast, as in <xref
          target="RFC9625" format="default"/>.</dd>
          <dt>PE:</dt><dd>Provider Edge.</dd>
          <dt>PIM:</dt><dd>Protocol Independent Multicast, as in <xref
          target="RFC7761" format="default"/>.</dd>
          <dt>P-tunnel:</dt><dd>The term "Provider tunnel" refers to the type
          of tree employed by an upstream EVPN PE to forward multicast traffic
          to downstream PEs. The P-tunnels supported in this document include
          Ingress Replication (IR), Assisted Replication (AR) <xref
          target="RFC9574" format="default"/>, Bit Indexed Explicit
          Replication (BIER) <xref target="RFC8296" format="default"/>,
          multicast Label Distribution Protocol (mLDP), and
          Point-to-Multipoint (P2MP) RSVP - Traffic Engineering (RSVP-TE)
          extensions.</dd>
          <dt>Redundant G-source:</dt><dd>A host or router transmitting a
          Single Flow Group (SFG) within a tenant network, where multiple
          hosts or routers are also transmitting the same SFG. Redundant
          G-sources transmitting the same SFG should have distinct IP
          addresses; however, they may share the same IP address if located in
          different Broadcast Domains (BDs) within the same tenant network.
          For the purposes of this document, redundant G-sources are assumed
          to not exhibit "bursty" traffic behavior.</dd>
          <dt>S-ES and S-ESI:</dt><dd>Multicast Source Ethernet Segment and
          multicast Source Ethernet Segment Identifier. The ES
          and ESI associated to a G-source.</dd>
          <dt>S-PMSI:</dt><dd><t>Selective Multicast Tree or Selective Provider Multicast Service Interface. As defined in <xref target="RFC6513"
          format="default"/>, this term refers to a multicast tree to which
          only the PEs interested in a specific Broadcast Domain
          belong. In the context of this document, it is specific to EVPN.
          Two types of EVPN S-PMSIs are supported:</t>
            <dl spacing="normal" newline="false">
              <dt>S-PMSIs with Auto-Discovery routes:</dt><dd>These S-PMSIs
              require the upstream PE to advertise S-PMSI Auto-Discovery 
              (S-PMSI A-D) routes, as described in <xref target="RFC9572"
              format="default"/>.  Downstream PEs interested in the multicast
              traffic join the S-PMSI tree following the procedures specified
              in <xref target="RFC9572" format="default"/>.</dd>
              <dt>S-PMSIs without Auto-Discovery Routes:</dt><dd>These S-PMSIs
              do not require the advertisement of S-PMSI A-D routes. Instead,
              they rely on the forwarding information provided by 
              IMET routes. Upstream PEs forward IP
              multicast flows only to downstream PEs that advertise
              Selective Multicast Ethernet Tag (SMET) routes for the specific
              flow. These S-PMSIs are supported exclusively with the following
              P-tunnel types: IR, AR, and BIER.</dd>
            </dl>
	  </dd>
          <dt>SFG:</dt><dd><t>Single Flow Group. A multicast group that
          represents traffic containing a single flow. Multiple sources, which
          may have the same or different IP addresses, can transmit traffic
          for an SFG. An SFG can be represented in two forms:</t>
            <dl spacing="normal" newline="false">
              <dt>(*,G):</dt><dd>Indicates that any source transmitting
              multicast traffic to group G is considered a redundant G-source
              for the SFG.</dd>
              <dt>(S,G):</dt><dd>Indicates that S is a prefix of any
              length. In this representation, a source is deemed a redundant
              G-source for the SFG if its address matches the specified prefix
              S.</dd>
	    </dl>
	  </dd>
          <dt>SMET route:</dt><dd>Selective Multicast Ethernet Tag route, as
          in <xref target="RFC9251" format="default"/>.</dd>
          <dt>(S,G) and (*,G):</dt><dd>Used to describe multicast packets or
          multicast state. "S" stands for Source (IP address of the multicast
          traffic), and "G" stands for the Group or multicast destination IP
          address of the group. An (S,G) multicast packet refers to an IP
          packet with source IP address "S" and destination IP address "G",
          and it is forwarded on a multicast router if there is a
          corresponding state for (S,G). A (*,G) multicast packet refers to an
          IP packet with "any" source IP address and a destination IP address
          "G", and it is forwarded on a multicast router based on the
          existence of the corresponding (*,G) state. The document uses
          variations of these terms. For example, (S1,G1) represents the
          multicast packets or multicast state for source IP address "S1" and
          group IP address "G1".</dd>
          <dt>Upstream PE:</dt><dd>In this document, an upstream PE refers to
          either the EVPN PE that is directly connected to the IP multicast
          source or the PE closest to the source. The upstream PE receives
          IP multicast flows through local Attachment Circuits (ACs).</dd>
          <dt>Warm Standby Redundancy:</dt><dd>A multicast source redundancy
          mechanism defined in this document, wherein the upstream PEs
          connected to redundant sources within the same tenant ensure that
          only one source of a given flow transmits multicast traffic to the
          interested downstream PEs at any given time.</dd>
        </dl>

        <t>This document also assumes familiarity with the terminology of
        <xref target="RFC7432" format="default"/>, <xref target="RFC4364" format="default"/>, <xref target="RFC6513" format="default"/>, <xref target="RFC6514" format="default"/>, <xref target="RFC9251" format="default"/>, <xref target="RFC9625" format="default"/>, <xref target="RFC9136" format="default"/>, and <xref target="RFC9572" format="default"/>.</t>
      </section>
      <section anchor="sect-1.2" numbered="true" toc="default">
        <name>Background on IP Multicast Delivery in EVPN Networks</name>
        <t>IP multicast facilitates the delivery of a single copy of a packet
        from a source (S) to a group of receivers (G) along a multicast tree.
        In an EVPN tenant domain, the multicast tree can be constructed where
        the source (S) and the receivers for the multicast group (G) are
        either connected to the same Broadcast Domain (BD) or to different Broadcast Domains. 
        The former scenario is referred to as "Intra-subnet
        IP Multicast forwarding", while the latter is referred to as
        "Inter-subnet IP Multicast forwarding".</t>
        <section anchor="sect-1.2.1" numbered="true" toc="default">
          <name>Intra-Subnet IP Multicast Forwarding</name>
          <t>When the source S1 and the receivers interested in G1 are
          connected to the same Broadcast Domain, the EVPN network can
          deliver IP multicast traffic to the receivers using two different
          approaches, as illustrated in <xref target="ure-intra-subnet-ip-multicast" format="default"/>:</t>
          <figure anchor="ure-intra-subnet-ip-multicast">
            <name>Intra-Subnet IP Multicast</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
                  S1  +                        S1  +
        (a)       +   |              (b)       +   |
                  |   | (S1,G1)                |   | (S1,G1)
              PE1 |   |                    PE1 |   |
              +-----+ v                    +-----+ v
              |+---+|                      |+---+|
              ||BD1||                      ||BD1||
              |+---+|                      |+---+|
              +-----+                      +-----+
         +-------|-------+            +-------|
         |       |       |            |       |
         v       v       v            v       v
      +-----+ +-----+ +-----+      +-----+ +-----+ +-----+
      |+---+| |-----| |-----|      |+---+| |+---+| |+---+|
      ||BD1|| ||BD1|| ||BD1||      ||BD1|| ||BD1|| ||BD1||
      |+---+| |-----| |-----|      |+---+| |+---+| |+---+|
      +-----+ +-----+ +-----+      +-----+ +-----+ +-----+
      PE2|    PE3|    PE4|         PE2|    PE3|    PE4
       - | - - - | -     |          - | - - - | -
      |  |       |  |    |         |  |       |  |
         v       v       v            v       v
      |  R1      R2 |    R3        |  R1      R2 |    R3
       - - - G1- - -                - - - G1- - -
]]></artwork>
          </figure>

          <dl spacing="normal" newline="false">
            <dt>Model (a):</dt>
	    <dd>
	      <t>IP Multicast Delivery as BUM Traffic</t>
              <t>The upstream PE sends the IP Multicast flows to all
              downstream PEs, even to PEs with non-interested receivers, such
              as, e.g., PE4 in <xref target="ure-intra-subnet-ip-multicast"
              format="default"/>. To optimize this behavior, downstream PEs
              can snoop IGMP/MLD messages from receivers to build Layer 2
              multicast state. For instance, PE4 could avoid forwarding
              (S1,G1) to R3, since R3 has not expressed interest in
              (S1,G1).</t>
            </dd>
            <dt>Model (b):</dt>
	    <dd>
	      <t>Optimized Delivery with S-PMSI</t>
              <t>Model (b) in <xref target="ure-intra-subnet-ip-multicast"
              format="default"/> uses a "Selective Provider Multicast Service 
              Interface (S-PMSI)" to optimize the delivery of the (S1,G1)
              flow. </t>
              <ul spacing="normal">
                <li>For example, if PE1 uses "IR", it
                will forward (S1,G1) only to downstream PEs that have issued a
                "SMET" route for (S1,G1),
                such as PE2 and PE3.</li>
                <li>If PE1 uses a P-tunnel type other than IR (e.g.,
                AR or BIER),
                PE1 will advertise an "S-PMSI Auto-Discovery (A-D)" route for
                (S1,G1). Downstream PEs, such as PE2 and PE3, will then join the
                corresponding multicast tree to receive the flow.</li>
              </ul>
            </dd>
          </dl>

          <t>Procedures for Model (b) are specified in <xref target="RFC9251" format="default"/> and <xref target="RFC9572" format="default"/>.</t>
        </section>
        <section anchor="sect-1.2.2" numbered="true" toc="default">
          <name>Inter-Subnet IP Multicast Forwarding</name>
          <t>When the sources and receivers are connected to different BDs
          within the same tenant domain, the EVPN network can deliver IP
          multicast traffic using either Inclusive or Selective Multicast
          Trees, as illustrated in <xref target="ure-inter-subnet-ip-multicast" format="default"/> with models (a) and (b),
          respectively.</t>
          <figure anchor="ure-inter-subnet-ip-multicast">
            <name>Inter-Subnet IP Multicast</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
                  S1  +                     S1  +
        (a)       +   |              (b)    +   |
                  |   | (S1,G1)             |   | (S1,G1)
              PE1 |   |                 PE1 |   |
              +-----+ v                 +-----+ v
              |+---+|                   |+---+|
              ||BD1||                   ||BD1||
              |+---+|                   |+---+|
              +-----+                   +-----+
         +-------|-------+         +-------|
         |       |       |         |       |
         v       v       v         v       v
      +-----+ +-----+ +-----+   +-----+ +-----+ +-----+
      |+---+| |+---+| |+---+|   |+---+| |+---+| |+---+|
      ||SBD|| ||SBD|| ||SBD||   ||SBD|| ||SBD|| ||SBD||
      |+-|-+| |+-|-+| |+---+|   |+-|-+| |+-|-+| |+---+|
      | VRF | | VRF | | VRF |   | VRF | | VRF | | VRF |
      |+-v-+| |+-v-+| |+---+|   |+-v-+| |+-v-+| |+---+|
      ||BD2|| ||BD3|| ||BD4||   ||BD2|| ||BD3|| ||BD4||
      |+-|-+| |+-|-+| |+---+|   |+-|-+| |+-|-+| |+---+|
      +--|--+ +--|--+ +-----+   +--|--+ +--|--+ +-----+
      PE2|    PE3|    PE4       PE2|    PE3|    PE4
       - | - - - | -             - | - - - | -
      |  |       |  |           |  |       |  |
         v       v                 v       v
      |  R1      R2 |    R3     |  R1      R2 |    R3
       - - - G1- - -             - - - G1- - -
]]></artwork>
          </figure>
          <t>As defined in <xref target="RFC9625" format="default"/>, inter-subnet multicast
          forwarding in EVPN is optimized by ensuring IP multicast flows are
          sent within the context of the source BD. If a downstream PE is not
          connected to the source BD, the IP multicast flow is delivered to
          the Supplementary Broadcast Domain (SBD), as shown in <xref target="ure-inter-subnet-ip-multicast" format="default"/>.</t>

          <ul spacing="normal">
            <li><t>Inclusive and Selective Multicast Trees</t>
              <dl spacing="normal">
		  <dt>Model (a):</dt><dd><t> Inclusive Multicast Tree</t>
                  <t>In this model, the Inclusive Multicast Tree for BD1 on
                  PE1 delivers (S1,G1) to all downstream PEs, such as PE2,
                  PE3, and PE4, in the context of the SBD. Each downstream PE
                  then locally routes the flow to its ACs,
                  ensuring delivery to interested receivers.</t></dd>
		  <dt>Model (b):</dt><dd><t>Selective Multicast Tree</t>
                  <t>In this model, PE1 optimizes forwarding by delivering
                  (S1,G1) only to downstream PEs that explicitly indicate
                  interest in the flow via SMET
                  routes. If the P-tunnel type is "IR", "AR", or "BIER", PE1 does not need to advertise an
                  S-PMSI A-D route. Downstream PEs join the multicast tree
                  based on the SMET routes advertised for (S1,G1).</t></dd>
		</dl>
              </li>
            <li><t>Advantages of <xref target="RFC9625" format="default"/></t>
            <t><xref target="RFC9625" format="default"/> extends the
            procedures defined in <xref target="RFC9251" format="default"/> to
            support both intra- and inter-subnet multicast forwarding for
            EVPN. It ensures that every upstream PE attached to a source is
            aware of all downstream PEs within the same tenant domain that
            have interest in specific flows. This is achieved through the
            advertisement of SMET routes with the SBD Route Target, which are
            imported by all upstream PEs.</t>
            </li>
            <li><t>Elimination of Complexity</t>
            <t>The inter-subnet multicast mechanism defined in <xref
            target="RFC9625" format="default"/> eliminates the need for:
            Rendezvous Points (RPs), shared trees, upstream multicast hop
            selection, or other complex conventional multicast routing
            techniques.</t>
            </li>
          </ul>

          <t>By leveraging the EVPN framework, inter-subnet multicast
          forwarding achieves efficient delivery without introducing
          unnecessary overhead or dependencies on classic IP multicast
          protocols.</t>
        </section>
      </section>
      <section anchor="sect-1.3" numbered="true" toc="default">
        <name>Multi-Homed IP Multicast Sources in EVPN</name>
        <t>Unlike conventional multicast routing technologies, multi-homed PEs
        connected to the same source do not create IP multicast packet
        duplication when utilizing a multi-homed ES. <xref target="ure-all-active-multi-homing-and-oism" format="default"/> illustrates this
        scenario, where two multi-homed PEs (PE1 and PE2) are attached to the
        same source S1. The source S1 is connected via a Layer 2 switch (SW1)
        to an all-active ES (ES-1), with a Link Aggregation
        Group (LAG) extending to PE1 and PE2.</t>
        <figure anchor="ure-all-active-multi-homing-and-oism">
          <name>All-Active Multi-Homing and OISM</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
                                  S1
                                  |
                                  v
                               +-----+
                               | SW1 |
                               +-----+
                         +----  |   |
                  (S1,G1)| +----+   +----+
      IGMP/MLD           | | all-active  |
      J(S1,G1)     PE1   v |    ES-1     |    PE2
      +---->   +-----------|---+     +---|-----------+
               | +---+   +---+ |     | +---+         |
       R1  <-----|BD2|   |BD1| |     | |BD1|         |
               | +---+---+---+ |     | +---+---+     |
          +----|     |VRF|  |  |     |     |VRF|     |----+
          |    | +---+---+  |  |     | +---+---+     |    |
          |    | |SBD|      |  |     | |SBD|         |    |
          |    | +---+      |  |     | +---+         |    |
          |    +------------|--+     +---------------+    |
          |                 |                             |
          |                 |                             |
          |                 |                             |
          |  EVPN           |               ^             |
          |  OISM           v    PE3        | SMET        |
          |              +---------------+  | (*,G1)      |
          |              | +---+         |  |             |
          |              | |SBD|         |                |
          |              | +---+---+     |                |
          +--------------|     |VRF|     |----------------+
                         | +---+---+---+ |
                         | |BD2|   |BD3| |
                         | +-|-+   +-|-+ |
                         +---|-------|---+
                         ^   |       |   ^
              IGMP/MLD   |   v       v   | IGMP/MLD
                 J(*,G1) |  R2       R3  | J(S1,G1)
]]></artwork>
        </figure>
        <t>When S1 transmits the (S1,G1) flow, SW1 selects a single link
        within the all-active ES to forward the flow, as per
        <xref target="RFC7432" format="default"/>. In this example, assuming PE1 is the
        receiving PE for BD1, the multicast flow is forwarded
        once BD1 establishes multicast state for (S1,G1) or (*,G1). In <xref target="ure-all-active-multi-homing-and-oism" format="default"/>: </t>
        <ul spacing="normal">
          <li>
            <t>Receiver R1 receives (S1,G1) directly via the IRB (Integrated
            Routing and Bridging) interface, defined in <xref target="RFC9135" format="default"/>, following the procedures in <xref target="RFC9625" format="default"/>.</t>
          </li>
          <li>
            <t>Receivers R2 and R3, upon issuing IGMP/MLD reports, trigger PE3
            to advertise an SMET (*,G1) route. This creates multicast state in
            PE1's BD1, enabling PE1 to forward the multicast flow to PE3's
            SBD. PE3 subsequently delivers the flow to R2 and R3 as defined in
            <xref target="RFC9625" format="default"/>.</t>
          </li>
        </ul>
        <t>Requirements for Multi-Homed IP Multicast Sources:</t>
        <ul spacing="normal">
          <li>
            <t>When IP multicast source multi-homing is needed, EVPN
            multi-homed ESes <bcp14>MUST</bcp14> be used.</t>
          </li>
          <li>
            <t>EVPN multi-homing ensures that only one upstream PE forwards a
            given multicast flow at a time, preventing packet duplication at
            downstream PEs.</t>
          </li>
          <li>
            <t>The SMET route for a multicast flow ensures that all upstream
            PEs in the multi-homed ES maintain state for the
            flow. This allows for immediate failover, as the backup PE can
            seamlessly take over forwarding in case of an upstream PE
            failure.</t>
          </li>
        </ul>
        <t>This document assumes that multi-homed PEs connected to the same
        source always utilize multi-homed ESes.</t>
      </section>
      <section anchor="sect-1.4" numbered="true" toc="default">
        <name>The Need for Redundant IP Multicast Sources in EVPN</name>
        <t>While multi-homing PEs to the same IP multicast G-source provides a
        certain level of resiliency, multicast applications are often critical
        in operator networks, necessitating a higher level of redundancy. This
        document assumes the following:</t>

	<ol type="a" spacing="normal">
          <li>Redundant G-sources: Redundant G-sources for an SFG may
          exist within the EVPN tenant network. A redundant G-source is
          defined as a host or router transmitting an SFG stream in a tenant
          network where another host or router is also sending traffic to the
          same SFG.</li>
          <li>G-source placement: Redundant G-sources may reside in
          the same BD or in different BDs of the tenant network. There must be
          no restrictions on the locations of receiver systems within the
          tenant.</li>
          <li>G-source attachment to EVPN PEs: Redundant G-sources may
          be either single-homed to a single EVPN PE or multi-homed to
          multiple EVPN PEs.</li>
          <li>Packet duplication avoidance: The EVPN PEs must ensure
          that receiver systems do not experience duplicate packets for the
          same SFG.</li>
        </ol>

        <t>This framework ensures that EVPN networks can effectively
        support redundant multicast sources while maintaining high reliability
        and operational efficiency.</t>
      </section>
    </section>
    <section anchor="sect-2" numbered="true" toc="default">
      <name>Solution Overview</name>
      <t>An SFG can be represented as (*,G) if any source transmitting
      multicast traffic to group G is considered a redundant G-source.
      Alternatively, this document allows an SFG to be represented as (S,G),
      where the source IP address S is a prefix of variable length. In this
      case, a source is deemed a redundant G-source for the SFG if its address
      falls within the specified prefix. In the remainder of this document,
      some examples use (*,G) state for brevity. Wherever an SFG is
      represented as (*,G), it should be understood as being interchangeable
      with (S,G). The use of variable-length prefixes in source advertisements
      via S-PMSI A-D routes is permitted in this document only for the
      specific application of redundant G-sources.</t>
      <t>This document describes two solutions for handling redundant
      G-sources:</t>
      <ul spacing="normal">
        <li>
          <t>Warm Standby Solution</t>
        </li>
        <li>
          <t>Hot Standby Solution</t>
        </li>
      </ul>
      <section anchor="sect-2.1" numbered="true" toc="default">
        <name>Warm Standby Solution</name>
        <t>The Warm Standby solution is an upstream PE-based solution, where
        downstream PEs do not participate in the procedures. In this solution,
        all upstream PEs connected to redundant G-sources for an SFG (*,G) or
        (S,G) elect a "Single Forwarder (SF)" among themselves. After the
        Single Forwarder is elected, the upstream PEs apply Reverse Path
        Forwarding checks to the multicast state for the SFG: </t>

	<ul spacing="normal">
          <li>Non-Single Forwarder (Non-SF) Behavior: A Non-SF
          upstream PE discards all (*,G) or (S,G) packets received over its
          local AC.</li>
          <li>Single Forwarder Behavior: The Single Forwarder accepts
          and forwards (*,G) or (S,G) packets received on a single local
          AC for the SFG. If packets are received on multiple
          local ACs, the Single Forwarder discards packets on
          all but one. The selection of the AC for forwarding
          is a local implementation detail.</li>
        </ul>

        <t>In the event of a failure of the Single Forwarder, a new Single Forwarder
        is elected among the upstream PEs. This election process
        requires BGP extensions on existing EVPN routes, which are detailed in
        Sections <xref target="sect-3" format="counter"/> and <xref target="sect-4" format="counter"/>.</t>
      </section>
      <section anchor="sect-2.2" numbered="true" toc="default">
        <name>Hot Standby Solution</name>
        <t>The Hot Standby solution relies on downstream PEs to prevent
        duplication of SFG packets. Upstream PEs, aware of locally connected
        G-sources, append a unique ESI label to
        multicast packets for each SFG. Downstream PEs receive SFG packets
        from all upstream PEs attached to redundant G-sources and avoid
        duplication by performing a Reverse Path Forwarding check on the (*,G)
        state for the SFG:</t>

	<ul spacing="normal">
          <li>Packet Filtering: A downstream PE discards (*,G) packets
          received from the "wrong G-source."</li>
          <li>Wrong G-source Identification: The "wrong G-source" is
          identified using an ESI label that differs from the ESI label
          associated with the selected G-source.</li>
          <li>ESI Label Usage: In this solution, the ESI label is used
          for "ingress filtering" at the downstream PE, rather than for
          "egress filtering" as described in <xref target="RFC7432"
          format="default"/>. In <xref target="RFC7432" format="default"/>,
          the ESI label indicates which egress ACs must be
          excluded when forwarding BUM traffic.  Here, the ESI label
          identifies ingress traffic that should be discarded by the
          downstream PE.</li>
        </ul>

        <t>Control plane and data plane extensions to <xref target="RFC7432" format="default"/>
        are required to support ESI labels for SFGs forwarded by upstream PEs.
        Upon failure of the selected G-source, the downstream PE switches to a
        different G-source and updates its Reverse Path Forwarding check for
        the (*,G) state. These extensions and procedures are described in Sections
        <xref target="sect-3" format="counter"/> and <xref target="sect-5" format="counter"/>.</t>
      </section>
      <section anchor="sect-2.3" numbered="true" toc="default">
        <name>Solution Selection</name>
        <t>Operators should select a solution based on their specific
        requirements: </t>
        <ul spacing="normal">
          <li>
            <t>The Warm Standby solution is more bandwidth-efficient but
            incurs longer failover times in the event of a G-source or
            upstream PE failure. Additionally, only the upstream PEs connected
            to redundant G-sources for the same SFG need to support the new
            procedures in the Warm Standby solution.</t>
          </li>
          <li>
            <t>The Hot Standby solution is recommended for scenarios requiring
            fast failover times, provided that the additional bandwidth
            consumption (due to multiple transmissions of SFG packets to
            downstream PEs) is acceptable.</t>
          </li>
        </ul>
      </section>
      <section anchor="sect-2.4" numbered="true" toc="default">
        <name>System Support</name>
        <t>This document does not mandate support for both solutions on a
        single system. If one solution is implemented, support for the other
        is <bcp14>OPTIONAL</bcp14>.</t>
      </section>
    </section>
    <section anchor="sect-3" numbered="true" toc="default">
      <name>BGP EVPN Extensions</name>
      <t>This document introduces the following BGP EVPN extensions:</t>
      <section anchor="sect-3.1" numbered="true" toc="default">
        <name>Single Flow Group Flag in the Multicast Flags Extended Community</name>
        <t>A new Single Flow Group (SFG) flag is defined within the Multicast
        Flags Extended Community. This flag has been registered as bit 4 
        in the "Multicast Flags Extended Community" registry (see <xref target="sfg"/>). The SFG
        flag is set in S-PMSI A-D routes that carry (*,G) or (S,G) Single Flow Group
        information in the BGP EVPN Network Layer Reachability
        Information (NLRI).</t>
      </section>
      <section anchor="sect-3.2" numbered="true" toc="default">
        <name>ESI Label Extended Community in S-PMSI A-D Routes</name>
        <t>The Hot Standby solution requires the advertisement of one or more
        ESI Label Extended Communities <xref target="RFC7432" format="default"/> alongside the
        S-PMSI A-D routes. These extended communities encode the ESI values
        associated with an S-PMSI A-D (*,G) or (S,G) route that advertises the
        presence of a Single Flow Group.</t>
        <t>Key considerations include:</t>
        <ol spacing="normal" type="1"><li>
            <t>When advertised with the S-PMSI A-D routes, only the ESI label
            value in the extended community is relevant to the procedures
            defined in this document.</t>
          </li>
          <li>
            <t>The Flags field within the extended community <bcp14>MUST</bcp14> be set to
            "0x00" on transmission and <bcp14>MUST</bcp14> be ignored on reception.</t>
          </li>
        </ol>
        <t><xref target="RFC7432" format="default"/> specifies the use of the ESI Label
        Extended Community in conjunction with the A-D per ES route. This
        document extends the applicability of the ESI Label Extended Community
        by allowing its inclusion multiple times (with different ESI label
        values) alongside the EVPN S-PMSI A-D route. These extensions enable
        the precise encoding and advertisement of SFG-related
        information, facilitating efficient multicast traffic handling in EVPN
        networks.</t>
      </section>
    </section>
    <section anchor="sect-4" numbered="true" toc="default">
      <name>Warm Standby (WS) Solution for Redundant G-Sources</name>
      <t>This section specifies the Warm Standby solution for handling
      redundant multicast sources (G-sources). Note that while the examples
      use IPv4 addresses, the solution supports both IPv4 and IPv6
      sources.</t>
      <section anchor="sect-4.1" numbered="true" toc="default">
        <name>Specification</name>
        <t>The Warm Standby solution follows these general procedures:</t>
        <ol spacing="normal" type="1"><li>
            <t>Configuration of the upstream PEs</t>
            <t>Upstream PEs, potentially connected to redundant
            G-sources, are configured to recognize: </t>
            <ul spacing="normal">
              <li>
                <t>The multicast groups that carry an SFG in the tenant
                domain.</t>
              </li>
              <li>
                <t>The local Broadcast Domains that may host redundant
                G-sources</t>
              </li>
            </ul>
            <t>The SFG configuration applies to either "any" source,
            i.e., (*) or to a specific "source prefix" (e.g., "192.0.2.0/30"
            or "2001:db8::/120"). For instance, if the IPv4 prefix is
            192.0.2.0/30, the sources 192.0.2.1 and 192.0.2.2 are considered
            redundant G-sources for the SFG, while 192.0.2.10 is not. In a
            different example for IPv6, if the prefix is 2001:db8::/120,
            sources 2001:db8::1 or 2001:db8::2 are considered redundant
            G-sources for the SFG, but 2001:db8:1::1 is not.</t>
            <t>Example Configuration (<xref target="ure-ws-solution-for-redundant-g-sources" format="default"/>):</t>
            <ul spacing="normal">
              <li>
                <t>PE1 is configured to recognize G1 as an SFG for any source,
                with potential redundant G-sources attached to 
                BD1 and BD2.</t>
              </li>
              <li>
                <t>Alternatively, PE1 may recognize G1 as an SFG for sources
                within 192.0.2.0/30 (or 2001:db8::/120), with redundant
                G-sources in BD1 and BD2.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Signaling the location of a G-source for an SFG</t>
            <t>Upon receiving the first IP multicast packet for a
            configured SFG on a Broadcast Domain, an upstream PE (e.g.,
            PE1):</t>
            <ul spacing="normal">
              <li>
                <t><bcp14>MUST</bcp14> advertise an S-PMSI A-D route for the SFG:</t>
                <ul spacing="normal">
                  <li>
                    <t>An (*,G) route if the SFG is configured for any
                    source.</t>
                  </li>
                  <li>
                    <t>An (S,G) route (where S can have any prefix length) if
                    the SFG is configured for a source prefix.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t><bcp14>MUST</bcp14> include the following attributes in the S-PMSI A-D
                route:</t>
                <ul spacing="normal">
                  <li>
                    <t>Route Targets (RTs): The Broadcast Domain Route Target
                    (BD-RT) of the BD receiving the traffic and, if
                    applicable, the Supplementary Broadcast Domain Route
                    Target (SBD-RT), which is needed so that the route is
                    imported by all PEs attached to the tenant domain in an
                    OISM solution.</t>
                  </li>
                  <li>
                    <t>Multicast Flags Extended Community: <bcp14>MUST</bcp14> include
                    the SFG flag to indicate that the route conveys an
                    SFG.</t>
                  </li>
                  <li>
                    <t>Designated Forwarder Election Extended Community:
                    Specifies the algorithm and preferences for the Single Forwarder
                    election, using the DF
                    election defined in <xref target="RFC8584" format="default"/>.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Advertises the route:</t>
                <ul spacing="normal">
                  <li>
                    <t>Without a PMSI Tunnel Attribute if using IR, AR, or BIER.</t>
                  </li>
                  <li>
                    <t>With a PMSI Tunnel Attribute for other tunnel
                    types.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t><bcp14>MUST</bcp14> withdraw the S-PMSI A-D route when the SFG traffic
                ceases. A timer is <bcp14>RECOMMENDED</bcp14> to detect inactivity and
                trigger route withdrawal.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Single Forwarder Election on the upstream PEs</t>
            <t>If an upstream PE receives one or more S-PMSI A-D
            routes for the same SFG from remote PEs, it performs Single Forwarder
            Election based on the Designated Forwarder Election
            Extended Community. </t>
            <ul spacing="normal">
              <li>
                <t>Two routes are considered part of the same SFG if they are
                advertised for the same tenant and match in the following
                fields:</t>
                <ul spacing="normal">
                  <li>
                    <t>Multicast Source Length</t>
                  </li>
                  <li>
                    <t>Multicast Source</t>
                  </li>
                  <li>
                    <t>Multicast Group Length</t>
                  </li>
                  <li>
                    <t>Multicast Group</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Election Rules:</t>
                <ol spacing="normal" type="1"><li>
                    <t>A consistent DF Election Algorithm
                    <bcp14>MUST</bcp14> be used across all upstream PEs for the Single Forwarder
                    election. In OISM networks, the Default
                    Designated Forwarder Election Algorithm <bcp14>MUST NOT</bcp14> be used
                    if redundant G-sources are attached to Broadcast Domains
                    with different Ethernet Tags.</t>
                  </li>
                  <li>
                    <t>In case of a mismatch in the DF
                    Election Algorithm or capabilities, the tie-breaker is the
                    lowest PE IP address (as advertised in the Originator
                    Address field of the S-PMSI A-D route).</t>
                  </li>
                </ol>
              </li>
            </ul>
          </li>
          <li>
            <t>Reverse Path Forwarding Checks on the Upstream PEs</t>
            <t>All PEs with a local G-source for an SFG apply a
            Reverse Path Forwarding check to the (*,G) or (S,G) state based on
            the Single Forwarder election result:</t>
            <ol spacing="normal" type="1"><li>
                <t>Non-SF PEs: <bcp14>MUST</bcp14> discard all (*,G) or (S,G)
                packets received on local ACs.</t>
              </li>
              <li>
                <t>Single Forwarder PEs: <bcp14>MUST</bcp14> forward (*,G) or (S,G) packets
                received on one (and only one) local AC.</t>
              </li>
            </ol>
          </li>
        </ol>
        <t>Key Features of the Warm Standby Solution:</t>
        <ul spacing="normal">
          <li>
            <t>The solution ensures redundancy for SFGs without requiring
            upgrades to downstream PEs (where no redundant G-sources are
            connected).</t>
          </li>
          <li>
            <t>Existing procedures for Non-SFG G-sources remain unchanged.</t>
          </li>
          <li>
            <t>Redundant G-sources can be either single-homed or multi-homed.
            Multi-homing does not alter the above procedures.</t>
          </li>
        </ul>
        <t>Examples of the Warm Standby solution are provided in Sections <xref target="sect-4.2" format="counter"/> and <xref target="sect-4.3" format="counter"/>.</t>
      </section>
      <section anchor="sect-4.2" numbered="true" toc="default">
        <name>Warm Standby Example in an OISM Network</name>
        <t><xref target="ure-ws-solution-for-redundant-g-sources" format="default"/>
        illustrates an example where S1 and S2 are redundant G-sources for the
        Single Flow Group (*,G1).</t>
        <figure anchor="ure-ws-solution-for-redundant-g-sources">
          <name>Warm Standby Solution for Redundant G-Sources</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
                     S1 (Single               S2
                     |   Forwarder)           |
              (S1,G1)|                 (S2,G1)|
                     |                        |
            PE1      |               PE2      |
            +--------v---+           +--------v---+
     S-PMSI |      +---+ |           |      +---+ | S-PMSI
     (*,G1) |  +---|BD1| |           |  +---|BD2| | (*,G1)
    Pref200 |  |VRF+---+ |           |  |VRF+---+ | Pref100
      |SFG  |+---+  | |  |           |+---+  |    |  SFG|
      | +----|SBD|--+ |  |-----------||SBD|--+    |---+ |
      v |   |+---+    |  |           |+---+       |   | v
        |   +---------|--+           +------------+   |
 SMET   |             |                               | SMET
 (*,G1) |             |   (S1,G1)                     | (*,G1)
        |    +--------+------------------+            |
    ^   |    |                           |            |   ^
    |   |    |                EVPN       |            |   |
    |   |    |                OISM       |            |   |
    |   |    |                           |            |   |
    PE3 |    |           PE4             |            | PE5
    +--------v---+       +------------+  |   +------------+
    |      +---+ |       |      +---+ |  |   |      +---+ |
    |  +---|SBD| |-------|  +---|SBD| |--|---|  +---|SBD| |
    |  |VRF+---+ |       |  |VRF+---+ |  |   |  |VRF+---+ |
    |+---+  |    |       |+---+  |    |  |   |+---+  |    |
    ||BD3|--+    |       ||BD4|--+    |  +--->|BD1|--+    |
    |+---+       |       |+---+       |      |+---+       |
    +------------+       +------------+      +------------+
      |  ^                                     | ^
      |  | IGMP/MLD                            | | IGMP/MLD
      R1 | J(*,G1)                             R3| J(*,G1)
]]></artwork>
        </figure>
        <t>The Warm Standby procedure is as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Configuration of the upstream PEs (PE1 and PE2)</t>
            <ul spacing="normal">
              <li>
                <t>PE1 and PE2 are configured to recognize G1 as a Single Flow Group
                for any source.</t>
              </li>
              <li>
                <t>Redundant G-sources for G1 may be attached to 
                BD1 (for PE1) and BD2 (for PE2).</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Signaling the location of S1 and S2 for (*,G1)</t>
            <t>Upon receiving traffic for G1 on a local
            AC:</t>
            <ul spacing="normal">
              <li>
                <t>PE1 and PE2 originate S-PMSI A-D routes for (*,G1),
                including:</t>
                <ul spacing="normal">
                  <li>
                    <t>the SBD-RT,</t>
                  </li>
                  <li>
                    <t>the Designated Forwarder Election Extended Community,
                    and</t>
                  </li>
                  <li>
                    <t>the SFG flag in the Multicast Flags Extended
                    Community.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>These routes indicate the presence of a Single Flow Group.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Single Forwarder Election</t>
            <ul spacing="normal">
              <li>
                <t>Based on the Designated Forwarder Election Extended
                Community, PE1 and PE2 perform Single Forwarder election.</t>
              </li>
              <li>
                <t>Assuming they use Preference-based Election <xref target="RFC9785" format="default"/>, PE1 (with a higher
                preference) is elected as the Single Forwarder for (*,G1).</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Reverse Path Forwarding check on the PEs attached to a
            redundant G-source</t>
            <ol spacing="normal" type="a"><li>
                <t>Non-SF Behavior: PE2 discards all (*,G1)
                packets received on its local AC.</t>
              </li>
              <li>
                <t>Single Forwarder Behavior: PE1 forwards (*,G1) packets
                received on one (and only one) local AC.</t>
              </li>
            </ol>
          </li>
        </ol>
        <t>The outcome:</t>
        <ul spacing="normal">
          <li>
            <t>Upon receiving IGMP/MLD reports for (*,G1) or (S,G1),
            downstream PEs (PE3 and PE5) issue SMET routes to pull the
            multicast Single Flow Group traffic from PE1 only.</t>
          </li>
          <li>
            <t>In the event of a failure of S1, the AC
            connected to S1, or PE1 itself, the S-PMSI A-D route for (*,G1) is
            withdrawn by PE1.</t>
          </li>
          <li>
            <t>As a result, PE2 is promoted to Single Forwarder, ensuring
            continued delivery of (*,G1) traffic.</t>
          </li>
        </ul>
      </section>
      <section anchor="sect-4.3" numbered="true" toc="default">
        <name>Warm Standby Example in a Single-BD Tenant Network</name>
        <t><xref target="ure-ws-solution-for-redundant-g-sources-in-the-same-bd" format="default"/>
        illustrates an example where S1 and S2 are redundant G-sources for the
        Single Flow Group (*,G1). In this case, all G-sources and receivers
        are connected to the same BD1, and there is no
        SBD.</t>
        <figure anchor="ure-ws-solution-for-redundant-g-sources-in-the-same-bd">
          <name>WS Solution for Redundant G-Sources in the Same BD</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
                     S1 (Single               S2
                     |   Forwarder)           |
              (S1,G1)|                 (S2,G1)|
                     |                        |
            PE1      |               PE2      |
            +--------v---+           +--------v---+
    S-PMSI  |      +---+ |           |      +---+ | S-PMSI
    (*,G1)  |      |BD1| |           |      |BD1| | (*,G1)
    Pref200 |      +---+ |           |      +---+ | Pref100
     |SFG   |         |  |           |            |  SFG|
     |  +---|         |  |-----------|            |---+ |
     v  |   |         |  |           |            |   | v
        |   +---------|--+           +------------+   |
 SMET   |             |                               | SMET
 (*,G1) |             |     (S1,G1)                   | (*,G1)
        |    +--------+------------------------+      |
    ^   |    |                                 |      |   ^
    |   |    |                EVPN             |      |   |
    |   |    |                                 |      |   |
    |   |    |                                 |      |   |
    PE3 |    |           PE4                   |      | PE5
    +--------v---+       +------------+      +-|----------+
    |      +---+ |       |      +---+ |      | |    +---+ |
    |      |BD1| |-------|      |BD1| |------| +--->|BD1| |
    |      +---+ |       |      +---+ |      |      +---+ |
    |            |       |            |      |            |
    |            |       |            |      |            |
    |            |       |            |      |            |
    +------------+       +------------+      +------------+
      |  ^                                    |  ^
      |  | IGMP/MLD                           |  | IGMP/MLD
      R1 | J(*,G1)                            R3 | J(*,G1)
]]></artwork>
        </figure>
        <t>The procedures for the Warm Standby solution in this example are
        identical to those described in <xref target="sect-4.2" format="default"/>, with the
        following distinction:</t>
        <ul spacing="normal">
          <li>
            <t>Signaling the S-PMSI A-D Routes </t>
            <ul spacing="normal">
              <li>
                <t>Upon receiving traffic for the Single Flow Group (*,G1),
                PE1 and PE2 advertise S-PMSI A-D routes.</t>
              </li>
              <li>
                <t>These routes include only the BD1-RT (Broadcast Domain 1
                Route Target) as there is no SBD
                in this scenario.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>This example represents a specific sub-case of the broader
        procedure detailed in <xref target="sect-4.2" format="default"/>, adapted to a single
        Broadcast Domain environment. The absence of an SBD simplifies the
        configuration, as all signaling remains within the context of BD1.</t>
      </section>
    </section>
    <section anchor="sect-5" numbered="true" toc="default">
      <name>Hot Standby Solution for Redundant G-Sources</name>
      <t>This section specifies the Hot Standby solution for handling
      redundant multicast sources (G-sources). The solution supports both IPv4
      and IPv6 sources.</t>
      <section anchor="sect-5.1" numbered="true" toc="default">
        <name>Specification</name>
        <t>The Hot Standby solution is designed for scenarios requiring fast
        failover in the event of a G-source or upstream PE failure. It assumes
        that additional bandwidth consumption in the tenant network is
        acceptable. The procedure is as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Configuration of PEs</t>
            <ul spacing="normal">
              <li>
                <t>Upstream PEs are configured to identify Single Flow Groups
                in the tenant domain. This includes groups for any source or a
                source prefix containing redundant G-sources.</t>
              </li>
              <li>
                <t>Each redundant G-source <bcp14>MUST</bcp14> be associated with an ES
                on the upstream PEs. This applies to both single-homed
                and multi-homed G-sources. For both, single-homed and
                multi-homed G-sources, ESI labels are essential for Reverse
                Path Forwarding checks on downstream PEs. The term S-ESI is
                used to denote the ESI associated with a redundant
                G-source.</t>
              </li>
              <li>
                <t>Unlike the Warm Standby solution, the Hot Standby solution
                requires downstream PEs to support the procedure.</t>
              </li>
              <li>
                <t>Downstream PEs: </t>
                <ul spacing="normal">
                  <li>
                    <t>Do not need explicit configuration for Single Flow Groups
                    or their ESIs (since they get that information from
                    the upstream PEs).</t>
                  </li>
                  <li>
                    <t>Dynamically select an ESI for each Single Flow Group
                    based on local policy (hence different downstream PEs may
                    select different ESIs) and program
                    a Reverse Path Forwarding check to discard (*,G) or (S,G)
                    packets from other ESIs.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
            <t>Signaling the location of a G-source for a given SFG and its
            association to the local ESes</t>
            <t>An upstream PE configured for Hot Standby procedures: </t>
            <ul spacing="normal">
              <li>
                <t><bcp14>MUST</bcp14> advertise an S-PMSI A-D route for each Single Flow Group.
                These routes:</t>
                <ul spacing="normal">
                  <li>
                    <t>Use the Broadcast Domain Route Target (BD-RT) and, if
                    applicable, the 
                    SBD-RT so that the routes are imported in all the
                    PEs of the tenant domain.</t>
                  </li>
                  <li>
                    <t><bcp14>MUST</bcp14> include ESI Label Extended Communities to convey
                    the S-ESI labels associated with the Single Flow Group.
                    These ESI labels match the labels advertised by the EVPN
                    A-D per ES routes for each S-ES.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t><bcp14>MAY</bcp14> include a PMSI Tunnel Attribute, depending on the
                tunnel type, as specified in the Warm Standby procedure.</t>
              </li>
              <li>
                <t><bcp14>MUST</bcp14> trigger the S-PMSI A-D route advertisement based on
                the SFG configuration (and not based on the reception of
                traffic).</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Distribution of DCB ESI labels and G-source ES routes</t>
            <ul spacing="normal">
              <li>
                <t>Upstream PEs advertise corresponding EVPN routes:</t>
                <ul spacing="normal">
                  <li>
                    <t>EVPN ES routes for the local S-ESIs.
                    ES routes are used for regular DF
                    Election for the S-ES. This document does not introduce
                    any change in the procedures related to the EVPN ES
                    routes.</t>
                  </li>
                  <li>
                    <t>A-D per EVI and A-D per ES routes for tenant-specific
                    traffic. If the SBD exists, the EVPN A-D per EVI and A-D
                    per ES routes <bcp14>MUST</bcp14> include the route target SBD-RT, since
                    they have to be imported by all the PEs in the tenant
                    domain.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>ESI label procedures:</t>
                <ul spacing="normal">
                  <li>
                    <t>The EVPN A-D per ES routes convey the S-ESI labels that
                    the downstream PEs use to implement Reverse Path
                    Forwarding checks for SFGs.</t>
                  </li>
                  <li>
                    <t>All packets for a given G-source <bcp14>MUST</bcp14> carry the same
                    S-ESI label. For example, if two redundant G-sources are
                    multi-homed to PE1 and PE2 via S-ES-1 and S-ES-2, PE1 and
                    PE2 <bcp14>MUST</bcp14> allocate the same ESI label "Lx" for S-ES-1, and
                    they <bcp14>MUST</bcp14> allocate the same ESI label "Ly" for S-ES-2. In
                    addition, Lx and Ly <bcp14>MUST</bcp14> be different.</t>
                  </li>
                  <li>
                    <t>S-ESI labels are allocated as Domain-wide Common Block
                    (DCB) labels and follow the procedures in <xref target="RFC9573" format="default"/>. In addition, the PE indicates that
                    these ESI labels are DCB labels by using the extensions
                    described in <xref target="sect-5.2" format="default"/>.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
            <t>Processing of EVPN A-D per ES/EVI routes and Reverse Path
            Forwarding check on the downstream PEs</t>
            <t>The
            EVPN A-D per ES/EVI routes are received and imported in all the
            PEs in the tenant domain. Downstream PEs process received EVPN A-D
            per ES/EVI routes based on their configuration: </t>
            <ul spacing="normal">
              <li>
                <t>The PEs attached to the same Broadcast Domain of the route
                target BD-RT that is included in the EVPN A-D per ES/EVI
                routes process the routes as in <xref target="RFC7432" format="default"/> and
                <xref target="RFC8584" format="default"/>. If the receiving PE is attached to
                the same ES as indicated in the route, split-horizon procedures <xref target="RFC7432" format="default"/> are followed and
                the DF Election candidate list is modified
                as in <xref target="RFC8584" format="default"/> if the ES
                supports the AC-DF (AC influenced DF) capability.</t>
              </li>
              <li>
                <t>The PEs that are not attached to the Broadcast Domain 
                identified by the BD-RT but are attached to the
                SBD of the received
                SBD-RT <bcp14>MUST</bcp14> import the EVPN A-D per ES/EVI routes and use
                them for redundant G-source mass withdrawal, as explained
                later.</t>
              </li>
              <li>
                <t>Upon importing EVPN A-D per ES routes corresponding to
                different S-ESes, a PE <bcp14>MUST</bcp14> select a primary S-ES based on
                local policy, and add a Reverse Path Forwarding check to the
                (*,G) or (S,G) state in the Broadcast Domain or SBD.
                This Reverse Path Forwarding check discards
                all ingress packets to (*,G)/(S,G) that are not received with
                the ESI label of the primary S-ES.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>G-traffic forwarding for redundant G-sources and fault
            detection</t>
            <ul spacing="normal">
              <li>
                <t>Traffic forwarding with S-ESI labels:</t>
                <ul spacing="normal">
                  <li>
                    <t>When there is an existing (*,G) or (S,G) state for the
                    SFG with output interface list entries associated with
                    remote EVPN PEs, the upstream PE will add an S-ESI label
                    to the bottom of the stack when forwarding G-traffic
                    received on an S-ES. This label is allocated from a
                    DCB as described in Step 3.</t>
                  </li>
                  <li>
                    <t>If point-to-multipoint or BIER PMSIs are used, this
                    procedure does not introduce new data path requirements on
                    the upstream PEs, apart from allocating the S-ESI label
                    from the DCB as per <xref target="RFC9573" format="default"/>). However, when IR or AR
                    are employed, this document extends
                    the procedures defined in <xref target="RFC7432" format="default"/>. In
                    these scenarios, the upstream PE pushes the S-ESI labels
                    on packets not only destined for PEs sharing the ES but
                    also for all PEs within the tenant domain. This ensures
                    that downstream PEs receive all the multicast packets from
                    the redundant G-sources with an S-ESI label, regardless of
                    the PMSI type or local ESes. Downstream PEs will discard
                    any packet carrying an S-ESI label different from the
                    primary S-ESI label (associated with the selected primary
                    S-ES), as outlined in Step 4.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Handling route withdrawals and fault detection</t>
                <ul spacing="normal">
                  <li>
                    <t>If the last EVPN A-D per EVI or the last EVPN A-D per
                    ES route for the primary S-ES is withdrawn, the downstream
                    PE will immediately select a new primary S-ES and update
                    the Reverse Path Forwarding check accordingly.</t>
                  </li>
                  <li>
                    <t>For scenarios where the same S-ES is used across
                    multiple tenant domains by the upstream PEs, the
                    withdrawal of all the EVPN A-D per-ES routes associated
                    with an S-ES enables a mass withdrawal mechanism. This
                    allows the downstream PE to simultaneously update the
                    Reverse Path Forwarding check for all tenant domains that
                    rely on the same S-ES.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Removal of Reverse Path Forwarding checks on S-PMSI
                withdrawal</t>
                <ul spacing="normal">
                  <li>
                    <t>The withdrawal of the last EVPN S-PMSI A-D route for a
                    given (*,G) or (S,G) that represents an SFG <bcp14>SHOULD</bcp14> result
                    in the downstream PE removing the S-ESI label-based
                    Reverse Path Forwarding check for that (*,G) or (S,G).</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ol>

        <t>This document supports the use of Context-Specific Label Space ID Extended
        Communities, as described in <xref target="RFC9573" format="default"/>, for scenarios
        where S-ESI labels are allocated within context-specific label spaces. When the
        context-specific label space ID extended community is advertised along with the
        ESI label in an EVPN A-D per ES route, the ESI label is from a context-specific
        label space identified by the DCB label in
        the Extended Community.</t>
      </section>
      <section anchor="sect-5.2" numbered="true" toc="default">
        <name>Extensions for the Advertisement of DCB Labels</name>
        <t>DCB labels are specified in <xref target="RFC9573" format="default"/>, and this document makes use of them as outlined in
        <xref target="sect-5.1" format="default"/>. <xref target="RFC9573" format="default"/> assumes that
        DCB labels are applicable only to
        Multipoint-to-Multipoint, Point-to-Multipoint, or BIER tunnels.
        Additionally, it specifies that when a PMSI label is a
        DCB label, the ESI label used for multi-homing is also a
        DCB label.</t>
        <t>This document extends the use of DCB-allocated ESI labels with the
        following provisions: </t>
        <ol spacing="normal" type="a"><li>
            <t>DCB-allocated ESI labels <bcp14>MAY</bcp14> be used with IR
            tunnels and</t>
          </li>
          <li>
            <t>DCB-allocated ESI labels <bcp14>MAY</bcp14> be used by PEs that do not use
            DCB-allocated PMSI labels.</t>
          </li>
        </ol>
        <t>These control plane extensions are indicated in the EVPN A-D
        per ES routes for the relevant S-ESes by: </t>
        <ol spacing="normal" type="1"><li>
            <t>Adding the ESI-DCB-flag (DCB flag) to the
            ESI label Extended Community, or</t>
          </li>
          <li>
            <t>Adding the Context-Specific Label Space ID extended community</t>
          </li>
        </ol>
        <t>The encoding of the DCB-flag within the ESI Label Extended
        Community is shown below:</t>
        <figure anchor="ESI-label">
          <name>ESI Label Extended Community</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type=0x06     | Sub-Type=0x01 | Flags(1 octet)|  Reserved=0   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Reserved=0   |          ESI Label                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>This document defines the DCB-flag as follows: </t>
        <ul spacing="normal">
          <li>
            <t>Bit 5 of the Flags octet in the ESI Label Extended Community is
            defined as the ESI-DCB-flag by this document.</t>
          </li>
          <li>
            <t>When the ESI-DCB-flag is set, it indicates that the ESI label
            is a DCB label.</t>
          </li>
        </ul>
        <t>Criteria for identifying a DCB label:</t>
        <t>An ESI label is considered a DCB label if either of the following
        conditions is met:</t>
        <ol spacing="normal" type="a"><li>
            <t>The ESI label is encoded in an ESI Label Extended Community
            with the ESI-DCB-flag set.</t>
          </li>
          <li>
            <t>The ESI label is signaled by a PE that has advertised a PMSI
            label that is a DCB label.</t>
          </li>
        </ol>
        <t>As in <xref target="RFC9573" format="default"/>, this document also permits the use
        of context-specific label space ID extended community. When this extended
        community is advertised along with the ESI label in an EVPN A-D per ES
        route, it indicates that the ESI label is from a context-specific label space
        identified by the DCB label in the Extended Community.</t>
      </section>
      <section anchor="sect-5.3" numbered="true" toc="default">
        <name>Use of BFD in the HS Solution</name>
        <t>In addition to utilizing the state of the EVPN A-D per EVI, EVPN
        A-D per ES, or S-PMSI A-D routes to adjust the Reverse Path Forwarding
        checks for (*,G) or (S,G) as discussed in <xref target="sect-5.1" format="default"/>,
        the Bidirectional Forwarding Detection (BFD) protocol <bcp14>MAY</bcp14> be employed
        to monitor the status of the multipoint tunnels used to forward the
        SFG packets from redundant G-sources.</t>
        <t>BFD integration:</t>
        <ul spacing="normal">
          <li>
            <t>The BGP-BFD Attribute is advertised alongside the S-PMSI A-D or
            IMET routes, depending on whether
            Inclusive PMSI or Selective PMSI trees are being utilized.</t>
          </li>
          <li>
            <t>The procedures outlined in <xref target="RFC9780" format="default"/> are followed to bootstrap
            multipoint BFD sessions on the downstream PEs.</t>
          </li>
        </ul>
      </section>
      <section anchor="sect-5.4" numbered="true" toc="default">
        <name>Hot Standby Example in an OISM Network</name>
        <t>This section describes the Hot Standby model applied in an Optimized Inter-Subnet Multicast
        (OISM) network. Figures <xref target="ure-hs-solution-for-multi-homed-redundant-g-sources-in-oism" format="counter"/>
        and <xref target="ure-hs-solution-for-single-homed-redundant-g-sources-in-oism" format="counter"/>
        illustrate scenarios with multi-homed and single-homed redundant
        G-sources, respectively.</t>
        <section anchor="sect-5.4.1" numbered="true" toc="default">
          <name>Multi-Homed Redundant G-Sources</name>
          <t>Scenario (<xref target="ure-hs-solution-for-multi-homed-redundant-g-sources-in-oism" format="default"/>):
          </t>
          <ul spacing="normal">
            <li>
              <t>S1 and S2 are redundant G-sources for the Single Flow Group
              (*,G1), connected to BD1.</t>
            </li>
            <li>
              <t>S1 and S2 are all-active multi-homed to upstream PEs (PE1 and
              PE2).</t>
            </li>
            <li>
              <t>Receivers are connected to downstream PEs (PE3 and PE5) in
              BD3 and BD1, respectively.</t>
            </li>
            <li>
              <t>S1 and S2 are connected to the multi-homing PEs using a LAG.
              Multicast traffic can traverse either link.</t>
            </li>
            <li>
              <t>In this model, downstream PEs receive duplicate G-traffic for
              (*,G1) and must use Reverse Path Forwarding checks to avoid
              delivering duplicate packets to receivers.</t>
            </li>
          </ul>
          <figure anchor="ure-hs-solution-for-multi-homed-redundant-g-sources-in-oism">
            <name>Hot Standby Solution for Multi-Homed Redundant G-Sources in OISM</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
                     S1(ESI-1)                S2(ESI-2)
                     |                        |
                     | +----------------------+
              (S1,G1)| |               (S2,G1)|
                     +----------------------+ |
            PE1      | |             PE2    | |
            +--------v---+           +--------v---+
            |      +---+ |           |      +---+ |  S-PMSI
 S-PMSI     |  +---|BD1| |           |  +---|BD1| |  (*,G1)
 (*,G1)     |  |VRF+---+ |           |  |VRF+---+ |   SFG
  SFG       |+---+  | |  |           |+---+  | |  |   ESI1,2
 ESI1,2 +---||SBD|--+ |  |-----------||SBD|--+ |  |---+  |
    |   |   |+---+    |  |   EVPN    |+---+    |  |   |  v
    v   |   +---------|--+   OISM    +---------|--+   |
        |             |                        |      |
        |             |   (S1,G1)              |      |
 SMET   |   +---------+------------------+     |      | SMET
 (*,G1) |   |                            |     |      | (*,G1)
    ^   |   | +----------------------------+---+      |   ^
    |   |   | |             (S2,G1)      | |          |   |
    |   |   | |                          | |          |   |
    PE3 |   | |          PE4             | |          | PE5
    +-------v-v--+       +------------+  | | +------------+
    |      +---+ |       |      +---+ |  | | |      +---+ |
    |  +---|SBD| +-------|  +---|SBD| |--|-|-|  +---|SBD| |
    |  |VRF+---+ |       |  |VRF+---+ |  | | |  |VRF+---+ |
    |+---+  |    |       |+---+  |    |  | | |+---+  |    |
    ||BD3|--+    |       ||BD4|--+    |  | +->|BD1|--+    |
    |+---+       |       |+---+       |  +--->+---+       |
    +------------+       +------------+      +------------+
      |  ^                                    |  ^
      |  | IGMP/MLD                           |  | IGMP/MLD
      R1 | J(*,G1)                            R3 | J(*,G1)
]]></artwork>
          </figure>
          <t>The procedure is as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Configuration of the PEs:</t>
              <ul spacing="normal">
                <li>
                  <t>PE1 and PE2 are configured to recognize (*,G1) as a
                  Single Flow Group.</t>
                </li>
                <li>
                  <t>Redundant G-sources use S-ESIs: ESI-1 for S1 and ESI-2
                  for S2.</t>
                </li>
                <li>
                  <t>The ESes (ES-1 and ES-2) are configured on
                  both PEs. ESI labels are allocated from a 
                  DCB <xref target="RFC9573" format="default"/> - ESI-label-1 for ESI-1
                  and ESI-label-2 for ESI-2.</t>
                </li>
                <li>
                  <t>The downstream PEs (PE3, PE4, and PE5) are configured to
                  support Hot Standby mode and select the G-source with, e.g.,
                  lowest ESI value.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Advertisement of the EVPN routes:</t>
              <ul spacing="normal">
                <li>
                  <t>PE1 and PE2 advertise S-PMSI A-D routes for (*,G1),
                  including:</t>
                  <ul spacing="normal">
                    <li>
                      <t>Route Targets: BD1-RT and SBD-RT.</t>
                    </li>
                    <li>
                      <t>ESI Label Extended Communities for ESI-label-1 and
                      ESI-label-2.</t>
                    </li>
                    <li>
                      <t>The SFG flag indicating that (*,G1) represents a
                      Single Flow Group.</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>EVPN ES and A-D per ES/EVI routes are also advertised for
                  ESI-1 and ESI-2. These include SBD-RT for downstream PE
                  import. The EVPN A-D per ES routes contain ESI-label-1 for
                  ESI-1 (on both PEs) and ESI-label-2 for ESI-2 (also on both
                  PEs).</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Processing of EVPN A-D per ES/EVI routes and Reverse Path
              Forwarding check on downstream PEs:</t>
              <ul spacing="normal">
                <li>
                  <t>PE1 and PE2 receive each other's ES and A-D per ES/EVI
                  routes. DF Election and programming of the
                  ESI labels for egress split-horizon filtering follow, as
                  specified in <xref target="RFC7432" format="default"/> and <xref target="RFC8584" format="default"/>.</t>
                </li>
                <li>
                  <t>PE3/PE4 import the EVPN A-D per ES/EVI routes in the SBD;
                  PE5 imports them in BD1.</t>
                </li>
                <li>
                  <t>As downstream PEs, PE3 and PE5 use the EVPN A-D per
                  ES/EVI routes to program Reverse Path Forwarding checks.</t>
                </li>
                <li>
                  <t>The primary S-ESI for (*,G1) is selected based on local
                  policy (e.g., lowest ESI value), and therefore packets with
                  ESI-label-2 are discarded if ESI-label-1 is selected as the
                  primary label.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Traffic forwarding and fault detection:</t>
              <ul spacing="normal">
                <li>
                  <t>PE1 receives (S1,G1) traffic and forwards it with
                  ESI-label-1 in the context of BD1. This traffic passes
                  Reverse Path Forwarding checks on downstream PEs (PE3 and
                  PE5, since PE4 has no local interested receivers) and is
                  delivered to receivers.</t>
                </li>
                <li>
                  <t>PE2 receives (S2,G1) traffic and forwards it with
                  ESI-label-2. This traffic fails the Reverse Path Forwarding
                  check on PE3 and PE5 and is discarded.</t>
                </li>
                <li>
                  <t>If the link between S1 and PE1 fails, PE1 withdraws the
                  EVPN ES and A-D routes for ESI-1. S1 forwards the (S1,G1)
                  traffic to PE2 instead. PE2 continues forwarding (S2,G1)
                  traffic using ESI-label-2 and now also forwards (S1,G1) with
                  ESI-label-1. The Reverse Path Forwarding checks do not
                  change in PE3/PE5.</t>
                </li>
                <li>
                  <t>If all links to S1 fail, PE2 also withdraws the EVPN ES
                  and A-D routes for ESI-1 and downstream PEs update the
                  Reverse Path Forwarding checks to accept ESI-label-2
                  traffic.</t>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="sect-5.4.2" numbered="true" toc="default">
          <name>Single-Homed Redundant G-Sources</name>
          <t>Scenario (<xref target="ure-hs-solution-for-single-homed-redundant-g-sources-in-oism" format="default"/>):</t>
          <ul spacing="normal">
            <li>
              <t>S1 is single-homed to PE1 using ESI-1, and S2 is single-homed
              to PE2 using ESI-2.</t>
            </li>
            <li>
              <t>The scenario is a subset of the multi-homed case. Only one PE
              advertises EVPN A-D per ES/EVI routes for each S-ESI.</t>
            </li>
          </ul>
          <figure anchor="ure-hs-solution-for-single-homed-redundant-g-sources-in-oism">
            <name>HS Solution for Single-Homed Redundant G-Sources in OISM</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
                     S1(ESI-1)                S2(ESI-2)
                     |                        |
              (S1,G1)|                 (S2,G1)|
                     |                        |
            PE1      |               PE2      |
            +--------v---+           +--------v---+
            |      +---+ |           |      +---+ |  S-PMSI
 S-PMSI     |  +---|BD1| |           |  +---|BD2| |  (*,G1)
 (*,G1)     |  |VRF+---+ |           |  |VRF+---+ |   SFG
  SFG       |+---+  | |  |           |+---+  | |  |   ESI2
  ESI1  +---||SBD|--+ |  |-----------||SBD|--+ |  |---+  |
    |   |   |+---+    |  |   EVPN    |+---+    |  |   |  v
    v   |   +---------|--+   OISM    +---------|--+   |
        |             |                        |      |
        |             |   (S1,G1)              |      |
 SMET   |   +---------+------------------+     |      | SMET
 (*,G1) |   |                            |     |      | (*,G1)
    ^   |   | +--------------------------------+----+ |   ^
    |   |   | |             (S2,G1)      |          | |   |
    |   |   | |                          |          | |   |
    PE3 |   | |          PE4             |          | | PE5
    +-------v-v--+       +------------+  |   +------v-----+
    |      +---+ |       |      +---+ |  |   |      +---+ |
    |  +---|SBD| |-------|  +---|SBD| |--|---|  +---|SBD| |
    |  |VRF+---+ |       |  |VRF+---+ |  |   |  |VRF+---+ |
    |+---+  |    |       |+---+  |    |  |   |+---+  |    |
    ||BD3|--+    |       ||BD4|--+    |  +--->|BD1|--+    |
    |+---+       |       |+---+       |      |+---+       |
    +------------+       +------------+      +------------+
      |  ^                                    |  ^
      |  | IGMP/MLD                           |  | IGMP/MLD
      R1 | J(*,G1)                            R3 | J(*,G1)
]]></artwork>
          </figure>
          <t>The procedures follow the same logic as described in the
          multi-homed scenario, with the distinction that each ESI is specific
          to a single PE.</t>
          <t>Figures <xref target="ure-hs-solution-for-multi-homed-redundant-g-sources-in-oism" format="counter"/>
          and <xref target="ure-hs-solution-for-single-homed-redundant-g-sources-in-oism" format="counter"/>
          demonstrate the application of the Hot Standby solution, ensuring
          seamless traffic forwarding while avoiding duplication in the
          presence of redundant G-sources.</t>
        </section>
      </section>
      <section anchor="sect-5.5" numbered="true" toc="default">
        <name>Hot Standby Example in a Single-BD Tenant Network</name>
        <t>The Hot Standby procedures described in <xref target="sect-5.4" format="default"/>
        apply equally to scenarios where the tenant network comprises a single
        Broadcast Domain (e.g., BD1), irrespective of whether the redundant
        G-sources are multi-homed or single-homed. In such cases:</t>
        <ul spacing="normal">
          <li>
            <t>The advertised routes do not include the SBD-RT.</t>
          </li>
          <li>
            <t>All procedures are confined to the single BD1.</t>
          </li>
        </ul>
        <t>The absence of the SBD simplifies the configuration and
        limits the scope of the Hot Standby solution to BD1, while maintaining
        the integrity of the procedures for managing redundant G-sources.</t>
      </section>
    </section>
    <section anchor="sect-6" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The same Security Considerations described in <xref target="RFC9625" format="default"/> are valid for this document.</t>
      <t>From a security perspective, out of the two methods described in this
      document, the Warm Standby method is considered lighter in terms of
      control plane, and therefore its impact is low on the processing
      capabilities of the PEs. The Hot Standby method adds more burden on the
      control plane of all the PEs of the tenant with sources and
      receivers.</t>
    </section>
    <section anchor="sect-7" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>IANA has allocated bit 4 in the "Multicast Flags Extended
      Community" registry that was introduced by <xref target="RFC9251" format="default"/>. This
      bit indicates that a given (*,G) or (S,G) in an S-PMSI A-D route is
      associated with an SFG. This bit is called "Single Flow Group" bit, and
      it is defined as follows:</t>
      <table align="center" anchor="sfg">
        <thead>
          <tr>
            <th align="left">Bit</th>
            <th align="left">Name</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">4</td>
            <td align="left">Single Flow Group</td>
            <td align="left">This Document</td>
          </tr>
        </tbody>
      </table>




      <t>IANA has allocated bit 5 in the "EVPN ESI Label Extended Community Flags" registry that was introduced by <xref target="RFC9746" format="default"/>. This bit is the ESI-DCB
      flag and indicates that the ESI label contained in the ESI Label
      Extended Community is a DCB label. This bit is
      defined as follows:</t>

      <table align="center">
        <thead>
          <tr>
            <th align="left">Bit</th>
            <th align="left">Name</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">5</td>
            <td align="left">ESI-DCB</td>
            <td align="left">This Document</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7432.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6513.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6514.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9251.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9625.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8584.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9573.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9746.xml"/>
      </references>
      <references>
        <name>Informative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9136.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9572.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9785.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4364.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9780.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7761.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9135.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9776.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9777.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8296.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9574.xml"/>
      </references>
    </references>

    <section numbered="false" toc="default">
      <name>Acknowledgments</name>
      <t>The authors would like to thank <contact fullname="Mankamana
      Mishra"/>, <contact fullname="Ali Sajassi"/>, <contact fullname="Greg
      Mirsky"/>, and <contact fullname="Sasha Vainshtein"/> for their review
      and valuable comments.  Special thanks to <contact fullname="Gunter Van
      de Velde"/> for his excellent review, which significantly enhanced the
      document's readability.</t>
    </section>
    <section anchor="sect-9" numbered="false" toc="default">
      <name>Contributors</name>
      <t>In addition to the authors listed on the front page, the following
      person has significantly contributed to this document:</t>

    <contact fullname="Eric C. Rosen">
      <address>
        <email>erosen52@gmail.com</email>
      </address>
    </contact>

    </section>

  </back>

</rfc>
