<?xml version="1.0" encoding="iso-8859-1" ?>
<!--<!DOCTYPE rfc SYSTEM "rfc4748.dtd"> -->
    <!DOCTYPE rfc SYSTEM 'rfc2629.dtd' [ 
    <!ENTITY rfc2629 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml'> 
		<!ENTITY rfc2119 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'> 
    <!ENTITY rfc8279 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8279.xml'> 
    <!ENTITY rfc7761 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7761.xml'>
    <!ENTITY rfc7450 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7450.xml'>
    <!ENTITY rfc4875 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4875.xml'>
    <!ENTITY rfc6388 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6388.xml'>
    <!ENTITY rfc9026 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.9026.xml'>
    <!ENTITY rfc5880 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5880.xml'>
    <!ENTITY rfc5884 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5884.xml'>
    <!ENTITY rfc8562 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8562.xml'>
    <!ENTITY rfc0792 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.0792.xml'>
    <!ENTITY rfc4443 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4443.xml'>
    <!ENTITY rfc8029 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8029.xml'>
    <!ENTITY rfc6513 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6513.xml'>
    <!ENTITY I-D.ietf-pim-sr-p2mp-policy PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-pim-sr-p2mp-policy.xml'>
    <!ENTITY I-D.ietf-bier-bfd PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bier-bfd.xml'>
    <!ENTITY I-D.ietf-bier-ping PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bier-ping.xml'>
		]>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>		

<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc disable-output-escaping="yes"?>

<rfc category="info"  docName="draft-ietf-mboned-redundant-ingress-failover-06"
     ipr="trust200902">
  <!-- ***** FRONT MATTER ***** -->
  <front>
    <title abbrev="Multicast Redundant In-Router Failover">Multicast Redundant Ingress Router Failover</title>
	
    <author fullname="Greg Shepherd" initials="G" surname="Shepherd">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>170 W. Tasman Dr.</street>
          <city>San Jose</city>
          <region></region>
          <code></code>
          <country>US</country>
        </postal>
        <email>gjshep@gmail.com</email>
      </address>
    </author>

    <author fullname="Zheng Zhang" initials="Z" role="editor" surname="Zhang">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <street></street>
          <city>Nanjing</city>
          <region></region>
          <code></code>
          <country>China</country>
        </postal>
        <email>zhang.zheng@zte.com.cn</email>
      </address>
    </author>

    <author fullname="Yisong Liu" initials="Y" surname="Liu">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <street/>
          <city>Beijing</city>
          <region/>
          <code/>
          <country/>
        </postal>
        <email>liuyisong@chinamobile.com</email>
      </address>
    </author>
    
    <author fullname="Ying Cheng" initials="Y" surname="Cheng">
      <organization>China Unicom</organization>
      <address>
        <postal>
          <street></street>
          <city>Beijing</city>
          <region></region>
          <code></code>
          <country>China</country>
        </postal>
        <email>chengying10@chinaunicom.cn</email>
      </address>
    </author>

     <author fullname="Gyan Mishra" initials="G" surname="Mishra">
      <organization>Verizon Inc.</organization>
      <address>
        <postal>
          <street></street>
          <city></city>
          <region></region>
          <code></code>
          <country></country>
        </postal>
        <email>gyan.s.mishra@verizon.com</email>
      </address>
    </author>
    
	<date year="2025"/>	
    <area>OPS</area>
    <workgroup>MBONED WG</workgroup>
    <keyword>Multicast Redundant Ingress Router, Failover</keyword>
    <abstract>
     <t>This document discusses multicast redundant ingress router failover issues, 
	 including global multicast and service provider network MVPN use cases. 
     This document analyzes the specifications for global multicast and multicast 
	 VPN fast upstream failover and ingress PE standby modes and the benefits of each mode.
     </t>
    </abstract>
  </front>

  <!-- ***** MIDDLE MATTER ***** -->

  <middle>
  <section title="Introduction">
    <t>The multicast redundant ingress router failover is an important issue in 
    multicast deployment. 
    This document tries to do a research on it in the multicast domain. 
    The Multicast Domain is a domain which is used to forward multicast flow according to 
    specific multicast technologies, such as PIM (<xref target="RFC7761"/>), 
    BIER (<xref target="RFC8279"/>), P2MP TE tunnel (<xref target="RFC4875"/>), 
    MLDP (<xref target="RFC6388"/>), etc. 
	Static configuration, AMT (<xref target="RFC7450"/>) and 
    SR P2MP Policy (<xref target="I-D.ietf-pim-sr-p2mp-policy"/>) may be used as well.
    The domain may or may not connect the multicast source and receiver directly.</t>

    <t>The ingress router is close to the multicast source.
    The ingress router may be directly connected to the multicast source,
    or there may be multiple hops between the ingress router and the multicast source.
    In a multicast domain, the ingress router is the router closest to the multicast source.
    It is also called the first hop router in PIM, or the BFIR in BIER,
    or the ingress LSR in P2MP TE tunnel or MLDP. </t>

    <t>The failover function between the multicast source and the ingress router can be achieved by many ways, 
    and it is not included in this document. </t>

    <t>The egress router is close to the multicast receiver.
    The egress router may be directly connected to the multicast receiver, 
	or there may be multiple hops between the egress router and the multicast receiver. 
	In a multicast domain, the egress router is the router closest to the multicast receiver. 
	It is also called the last hop router in PIM, or the BFER in BIER, or the egress LSR in P2MP TE tunnel or MLDP.</t>

    <t>This document doesn't discuss the details of these technologies. 
    This document discusses the general redundant ingress router failover ways 
    in the multicast domain.</t>

     <t>This document discusses the global multicast and Service Provider Network MVPN use case 
	 with redundant ingress PE nodes upstream multicast hop (UMH) and failover from primary 
	 to standby UMH in the multicast domain.
     This document analyzes the specifications for Multicast VPN Fast Upstream Failover (<xref target="RFC9026"/>) 
     and the Ingress PE Standby Modes and the benefits of each mode.
     </t>
  </section>

  <section title="Terminology">
    <t>The following abbreviations are used in this document:</t>
    <t>IR: The ingress router closest to the multicast source in the multicast domain.</t>
    <t>ER: The egress router closest to the multicast receiver in the multicast domain.</t>
    <t>SIR: The IR responsible for sending multicast flows,
    or the IR whose flows are received by the ER,
    is called Selected-IR, or SIR for short.</t>
    <t>BIR: IR is not responsible for sending multicast flows,
    or the flow from IR is not accepted by ER,
    but once SIR fails, IR will replace the role of SIR.
    This IR is called Backup-IR, or BIR for short.</t>
  </section>
 
  <section title="Multicast Redundant Ingress Router Failover"> 
    <figure  align="center">
          <artwork align="center"><![CDATA[			
                source
                 ...
           +-----+      +-----+
+----------+ IR1 +------+ IR2 +---------+
|multicast +-----+      +-----+         |
|domain            ...                  |
|                                       |
|          +-----+      +-----+         |
|          | Rm  |      | Rn  |         |
|          ++---++      +--+--+         |
|           |   |          |            |
|     +-----+   +---+      +-----+      |
|     |             |            |      |
|   +-v---+      +--v--+      +--v--+   |
+---+ ER1 +------+ ER2 +------+ ER3 +---+
    +-----+      +-----+      +-----+
     ...           ...          ...
   receiver      receiver     receiver
                Figure 1
            ]]></artwork>
       <postamble></postamble>
    </figure>

    <t>
	Typically, a multicast source is connected to two IRs directly or through multiple hops 
	to avoid single node failure. 
	As shown in Figure 1, there are two IRs close to the multicast source. 
	These two IRs are UMH (Upstream Multicast Hop) candidates for ER.</t>

    <t>
	The two IRs obtain multicast flows from the multicast source. 
	How to forward the multicast flows to the ER varies according to the technology 
	deployed in the multicast domain. 
	For example, for the PIM used in this domain, 
	two PIM trees can be built with the two IRs as roots.</t>

    <t>
	The IR cooperates with other routers in the multicast domain, such as the ER, 
	to minimize multicast flow packet loss during IR switchover.</t>
  
    <section title="Swichover"> 
      <t>
	  Some failures may occur in the domain, such as link failure and node failure. 
	  If the failed link or node is located on the multicast flow forwarding path, 
	  multicast flow packets may be lost.</t>
      <t>
	  If there are multiple paths from IR to ER, there is no need to switch IR 
	  when some nodes or links fail.</t>

      <t>
      <list style="symbols">
        <t>
		When PIM is used as the multicast forwarding protocol in a domain, 
		a forwarding tree of (S, G) or (*, G) is pre-built. 
		When a node or link in the forwarding tree fails, the tree is partially rebuilt.</t>

        <t>
		When BIER is used as the multicast forwarding protocol within the domain, 
		when a node or link fails, there is no need to rebuild the forwarding tree, 
		and BIER forwarding is restored as the IGP routing converges.</t>
        
        <t>When P2MP TE tunnels or MLDP are used as multicast forwarding protocols 
		in a domain, forwarding LSPs are pre-established. 
		When a node or link in the LSP fails, the LSP may be partially rebuilt.</t>

        <t>When a static multicast tree or SR P2MP policy is used in a domain, 
		the controller needs to recalculate a new forwarding path to bypass the failed node or link.</t>
      </list>
      </t>
  
      <t>In some cases, there are some critical nodes or links in the network.
      Due to the failure of critical nodes or links, the multicast path cannot be restored.
      The IR needs to be switched.</t>
  
      <figure  align="center">
          <artwork align="center"><![CDATA[			
                  source
                   ...
           +-----+      +-----+
+----------+ IR1 +------+ IR2 +---------+
|          +--+--+      +--+--+         |
|             |            |            |
|          +--+--+      +--+--+         |
|          | Rx  |      | Ry  |         |
|          +-+-+-+      ++---++         |
|            | |         |   |          |
|            | +-----------+ |          |
|            |           | | |          |
|            | +---------+ | |          |
|            | |           | |          |
|          +-v-v-+      +--v-v+         |
|          | Rm  |      | Rn  |         |
|          ++---++      +--+--+         |
|           |   |          |            |
|     +-----+   +---+      +-----+      |
|     |             |            |      |
|   +-v---+      +--v--+      +--v--+   |
+---+ ER1 +------+ ER2 +------+ ER3 +---+
    +-----+      +-----+      +-----+
     ...           ...          ...
   receiver      receiver     receiver
                Figure 2
            ]]></artwork>
       <postamble></postamble>
    </figure>

      <t>For example, in Figure 2, there is only one path in some areas of the network.
      IR1 and Rx are key nodes in the domain. 
	  When IR1 or Rx fails, there is no other path between IR1 and ER.</t>

      <t>
      <list style="symbols">
        <t>When PIM is used in the domain, Rm and Rn can select Ry as the upstream node, 
		send Join messages, and build a new tree with IR2 as the root. </t>

        <t>When BIER is used in the domain, IR2 should be responsible for the forwarding 
		role and forward flow to ER. </t>

        <t>When P2MP TE tunnel or MLDP is used in the domain, LSP initiated from IR2 can 
		be built and replace the LSP initiated from IR1 when the LSP used does not work. </t>

        <t>When static multicast tree or SR P2MP policy is used in the domain, 
		the controller should let IR2 forward multicast flow to ER. </t>
      </list>
      </t>    
    </section>
    
    <section title="Failure detection">
	<t>For successful IR switchover, some method should be used to monitor IR node failures 
	or path failures between IR and ER, and once failures occur, IR can switchover. 
	Either BFD or PING method can be used. </t>

    <t>BFD <xref target="RFC5880"/> can be used for all deployments. 
	Multipoint BFD <xref target="RFC8562"/> can also be used for failure detection 
	between IR and ER. BFD for MPLS LSP <xref target="RFC5884"/> can be used for P2MP TE 
	tunnel or MLDP deployments. 
	BIER BFD <xref target="I-D.ietf-bier-bfd"/> can be used for BIER deployments. </t>

    <t>IPv4 PING <xref target="RFC0792"/> and IPv6 PING <xref target="RFC4443"/> can also 
	be used for all deployments. LSP-Ping <xref target="RFC8029"/> can be used for P2MP TE 
	tunnel or MLDP deployment. 
	BIER PING <xref target="I-D.ietf-bier-ping"/> can be used for BIER deployment. </t>

    <t>BIR and ER can easily detect SIR node and path failures through BFD and PING methods. 
	If monitoring is done between SIR and ER, it is a challenge to quickly trigger a switch 
	when BIR needs to start forwarding multicast flows. If monitoring is between BIR and SIR, 
	the path between BIR and SIR may fail, but the path is not the path from SIR to ER, 
	and BIR may mistakenly trigger a switch, which will generate unnecessary duplicate flow. 
	In this case, ER must support selective reception and be compatible with IR switch errors. 
	In order to minimize false switches, the reliability of SIR/BIR detection needs to be enhanced, 
	such as using redundant reliable paths for detection. </t>

    <t>Multicast VPN Fast Upstream Failover <xref target="RFC9026"/> defines a mechanism to detect 
	the state of P-Tunnel X-PMSI A-D routes using P2MP BFD <xref target="RFC5880"/> with a new 
	advertised BGP attribute called the BFD discriminator optional transitive attribute.</t>

    <t>Multicast VPN Fast Upstream Failover <xref target="RFC9026"/> defines a new "Standby PE" 
	BGP community where the downstream PE initiates and sends a "Standby BGP C-multicast route" 
	with the standby upstream PE UMH route RT import EC, which constructs the NLRI using the standby 
	upstream PE UMH route's RD to identify the standby upstream PE. </t>
	
	
    </section>
  </section>

  <section title="Stand-by Modes"> 
    <t>If there are multiple IRs that can act as UMHs, and if an IR fails, 
	there is no other path from the IR to the ER, and the IR needs to be switched. </t>

    <t>Multicast IR protection usually has three alternate modes.
    <xref target="RFC9026"/> has some descriptions of this.
    This document discusses the details of these three modes here. </t>

    <t>When an ER discovers a node or path failure, it may send a request to the upstream router or IR.
    The request from the ER may be PIM tree construction, or BIER overlay protocol signaling, 
	or LSP construction, or some other way to let the IR know whether to forward the multicast flow. </t>

    <section title="Cold Root Standby Mode">
      <t>In cold root standby mode, ER selects a SIR, such as IR1 in Figure 1, 
	  as the SIR and signals it to get the multicast flow. </t>
      <t>When ER finds that the SIR is down, or ER finds that it cannot receive 
	  the flow from IR1, ER signals IR2 to get the multicast flow. </t>
      <t>
      <list style="symbols">
        <t>For IR, IR (including SIR and BIR) only performs the normal operation 
		of forwarding the flow according to ER's request. </t>

        <t>For ER, ER must select an IR as the SIR and signal it.
        When SIR fails or the path between SIR and ER fails, ER must signal BIR to get the flow. </t>

        <t>For intermediate routers, they know nothing about the role of IR, they just do packet forwarding. 
		There is no duplicate packet in the domain. </t>
      </list>
      </t>
  
      <t>If an IR switchover occurs, the ER detects the SIR failure and signals the BIR.
      Packet loss occurs during the signaling process until the ER receives the flow from the BIR.</t>
    </section>
    
    <section title="Warm Root Standby Mode">
      <t>In warm root standby mode, ER signals IR1 and IR2. </t>
      <t>If IR1 is SIR, IR1 forwards flow to ER.
      BIR (such as IR2) shall not forward flow to ER until SIR fails. </t>
      <t>
      <list style="symbols">
        <t>For IR, IR should play the role of SIR or BIR.
        BIR shall not forward flow to ER.
        When SIR fails or the path between SIR and ER fails,
        BIR must start forwarding flow to ER.
        But it is difficult to know the path failure by BIR itself, some method should be taken to let BIR
        get the failure notification. </t>
        
        <t>For ER, ER does not choose SIR or BIR. ER just signals to both of them. </t>
        
        <t>For intermediate routers, they have no idea about the role of IR,
        they just do packet forwarding. There are no duplicate packets in the domain. </t>
      </list>
      </t>
    
      <t>In case of IR switching, the BIR detects the SIR failure and switches to the SIR. 
	  There is packet loss during IR switching. </t>

      <t>In some deployments, the SIR and BIR may be responsible for different multicast flows. 
	  For a particular multicast flow, the SIR may be IR1 and for another multicast flow, 
	  the SIR may be IR2. 
	  So two IRs can share the multicast forwarding load. 
	  Another possible deployment is that two IRs can be responsible for different ERs for one multicast flow. 
	  For example, IR1 sends some multicast flows to ERs and IR2 sends some other multicast flows to ERs. 
	  If IR1 detects a failure among IR1 and ERs, IR1 may notify IR2 to take over the responsibility 
	  of forwarding the multicast flows to ERs that previously sent by IR1. </t>
    </section>
    
    <section title="Hot Root Standby Mode">
      <t>In hot-root standby mode, the ER signals to both IRs. </t>
      <t>Both IRs send flows to the ER. The ER must discard duplicate flows from one of the IRs. </t>
      <t>In this case, there is no SIR or BIR. Only the ER knows which IR is the SIR. </t>
      <t>
      <list style="symbols">
        <t>For the IR, the IR does not need to know the role of the SIR or BIR,
        the IR just forwards flows based on the request received from the ER. </t>
        
        <t>For the ER, the ER signals both IRs for flows.
        And the ER must discard duplicate flows from the backup BIR.
        When the SIR fails or the path between the SIR and the ER fails,
        the ER must switch forwarding planes to forward flow packets from the BIR.
        It should be noted that ER may choose different SIR or BIR for different multicast flows. </t>
        
        <t>For intermediate routers, they do not know the role of IR, they only do packet forwarding. 
		There is duplicate packet forwarding within the domain. </t>
      </list>
      </t>
      
      <t>In the case of IR switching, ER detects SIR failure. 
	  Since there are duplicate flow packets arriving at ER, ER just switches to forwarding the flow from BIR. 
	  There may be packet loss during switching. </t>
    </section>
    
   <section title="Summary"> 
      <t>The following table is a simple comparison of the three modes.
      "SIR failover" means that the SIR fails or the path between the SIR and the ER fails.</t>
      <texttable anchor="TABLE_1" title="">

      <ttcol align="left">role</ttcol>
      <ttcol align="left">Cold Mode</ttcol>
      <ttcol align="left">Warm Mode</ttcol>
      <ttcol align="left">Hot Mode</ttcol>
     
      <c>IR</c>
      <c>Forwards flow based on ER's request. </c>
      <c>Acting as either SIR or BIR, BIR must not forward flow to ER until SIR fails over. </c>
      <c>Does not need to know SIR or BIR role, just forwards flow based on ER's request. </c>
      
      <c>ER</c>
      <c>Must select an IR as SIR to signal request, signals BIR to request flow when SIR fails over. </c>
      <c>Does not select SIR or BIR, just signals both of them. </c>
      <c>Signals both SIR and BIR. Drops duplicate flow from BIR until SIR fails over. </c>
      
      <c>Intermediate routers</c>
      <c>Know nothing about SIR or BIR. Do not forward duplicate flow. </c>
      <c>Know nothing about SIR or BIR. Do not forward duplicate flow. </c>
      <c>No knowledge of SIR or BIR. Forward duplicate flow. </c>
	  </texttable>
  
      <t>Cold root standby mode is the easiest to implement, but has the longest convergence time. </t>
      <t>Hot root standby mode has the least packet loss, but there are duplicate packet forwardings 
	  within the domain, which consumes more bandwidth. </t>
      <t>Warm root standby mode has a moderate packet loss rate and convergence time, 
	  but it is difficult for the BIR to know about the failure between the SIR and ER. </t>
      <t>The hot root standby mode described in Section 5 <xref target="RFC9026"/> is the best UMH protection mechanism. 
	  There can be duplicate packet forwardings within the domain, 
	  and these packets will be discarded according to <xref target="RFC9026"/> Section 6 and <xref target="RFC6513"/> Section 9.1. 
	  Hot root standby mode is the best recommended method for MVPN fast failover optimization. </t>
      <t>For network administrators, the most appropriate standby mode should be selected based on the network deployment. </t>
	</section>
  </section>

  <section title="IANA Considerations">
  <t>  This document does not have any requests for IANA allocation.</t>
  </section>
  
	<section title="Security Considerations"> 
	  <t>This document adds no new security considerations.</t>
	</section>	
	
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <references title='Normative References'>
    &rfc8279;
    &rfc7761;
    &rfc7450;
    &rfc4875;
    &rfc6388;
    </references>
    
    <references title='Informative References'>
    &rfc9026;
    &rfc6513;
    &rfc5880;
    &rfc5884;
    &rfc8562;
    &rfc0792;
    &rfc4443;
    &rfc8029;
    <?rfc include="reference.I-D.ietf-pim-sr-p2mp-policy"?>
    <?rfc include="reference.I-D.ietf-bier-bfd"?>
    <?rfc include="reference.I-D.ietf-bier-ping"?>
    </references>
	</back>
</rfc>
