<?xml version="1.0" encoding="US-ASCII"?>

<?xml-model href="rfc7991bis.rnc"?>

<!-- <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> --> 
<!-- This third-party XSLT can be enabled for direct transformations in XML processors, including most browsers -->


<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<!-- If further character entities are required then they should be added to the DOCTYPE above.
     Use of an external entity file is not recommended. -->

<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->

<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->

<rfc category="std"
    xmlns:xi="http://www.w3.org/2001/XInclude"
    docName="draft-mankamana-pim-pfm-sd-extension-evpn-mh-01"
    consensus="true"
    submissionType="IETF"
    ipr="trust200902"
    tocInclude="true"
    tocDepth="4"
    symRefs="true"
    sortRefs="true">

 <!-- ***** FRONT MATTER ***** -->

 <front>
   <!-- The abbreviated title is used in the page header - it is only necessary if the 
        full title is longer than 39 characters -->
    <title abbrev="PFM-SD extension for EVPN multi-homing">PFM-SD extension for EVPN multi-homing</title>
    <seriesInfo name="Internet-Draft" value="draft-mankamana-pim-pfm-sd-extension-evpn-mh-01"/>

   <author fullname="Mankamana Mishra" initials="M." surname="Mishra">
     <organization>Cisco</organization>
     <address>
       <email>mankamis@cisco.com</email>
     </address>
   </author>
            <author fullname="IJsbrand Wijnands" initials="I." surname="Wijnands">
     <organization>Individual</organization>
     <address>
       <email>ice@braindump.be</email>
     </address>
   </author>
   
              <author fullname="Ryan R Tucker" initials="R." surname="Tucker">
     <organization> Charter</organization>
     <address>
       <email>Ryan.Tucker@charter.com</email>
     </address>
   </author>
            <author fullname="Hooman Bidgoli" initials="H." surname="Bidgoli">
     <organization> Nokia</organization>
     <address>
       <email>hooman.bidgoli@nokia.com</email>
     </address>
   </author>
   
   
      <author fullname="Zhaohui Zhang" initials="Z." surname="Zhang">
     <organization>Juniper Networks</organization>
     <address>
       <email>zzhang@juniper.net</email>
     </address>
   </author>
     
   <date year="2024" />

   <!-- Meta-data Declarations -->
   <area>Routing</area>
   <workgroup>PIM Working Group</workgroup>

   <!-- WG name at the upperleft corner of the doc,
        IETF is fine for individual submissions. 
	 If this element is not present, the default is "Network Working Group",
        which is used by the RFC Editor as a nod to the history of the IETF. -->


   <abstract>
<t>Ethernet Virtual Private Network (EVPN) solution is becoming
   pervasive in data center (DC) applications for Network Virtualization
   Overlay (NVO) and DC interconnect (DCI) services and in service
   provider (SP) applications for next-generation virtual private LAN
   services.</t>
   
   <t> EVPN defines sets of procedures to achieve multihoming between peers. 
   When the multicast source is protected by EVPN multihoming for redundancy and 
   multicast receivers are present behind PIM network, there are cases where 
   traffic blackholes. </t>
   <t>PIM Flooding Mechanism (PFM) and Source Discovery (SD) define new flood 
   mechanisms in PIM domain to carry information about source and group. This draft 
   defines the necessary extension to PFM-SD procedures to have seamless integration 
   with EVPN supported multihoming. </t>
   </abstract>



   <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
      NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
      "MAY", and "OPTIONAL" in this document are to be interpreted as
      described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when,
      and only when, they appear in all capitals, as shown here. 
     </t>
   </note>

 </front>

 <middle>
  <section anchor="intro" title="Introduction">
  <t> 
	  <xref target="RFC7432"/> describes procedures for BGP MPLS-based Ethernet VPNs
   (EVPN). It defines the function, procedure, and associated BGP routes used to support multihoming in EVPN. 
   It defines the concept of Ethernet Segment (ES) which is a virtual construct to drive BGP procedures to be able 
   to determine if two provider edge are multihomed. 
   
   
   

<figure><artwork><![CDATA[
                   +--------------+                 +-------------+
                   |              |                 |             |
                   |     PE1      |                 |    PE2      |
                   |              |                 |             |
                   +---------+----+                 +-----+-------+
                              \                          /                                          
                               \                        /           
                                \                      /              
                                 \                    /              
                                  \                  /               
                                 +-\----------------/-+               
                                 |  \              /  |
                                 +---\------------/---+
                                      \          / 
                                       \        /       
                                     +-------------+                       
                                     |             |                       
                                     |      CE     |                       
                                     +-------------+ 

                          ]]>
    </artwork></figure>

The above figure shows a sample multihoming case. where two independent PE (Provider Edge) are connected to CE (customer edge) devices via 
MC-LAG. Any packets that are originating from CE or host attached to CE can be hashed to either of the PE. and PE would have no knowledge about 
who can get any packets. 
  </t>
  <t> 
	  <xref target="RFC8364"/> defines a generic flooding mechanism for distributing
   information throughout a PIM domain. 
	  </t>
  <t>
	  Many deployments do use EVPN multihoming to achieve redundancy of reachability in the network. When EVPN multihoming is 
	  deployed with PIM <xref target="RFC7761"/> network, there is challenge with respect to RPF selection by PIM domain. This draft defines 
	  a necessary extension to <xref target="RFC8364"/> to achieve optimal multicast forwarding in PIM domain. 
	  </t>

  </section>

    <section title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
      NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
      "MAY", and "OPTIONAL" in this document are to be interpreted as
      described in BCP&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/> when,
      and only when, they appear in all capitals, as shown here. 
     </t>
    </section>

    <section anchor="terminology" title="Terminology">
        <dl>
            <dt>BD:</dt><dd> test </dd>


        </dl>
  </section>
 
 <section title="Problem Statement">
	 <t>
		 
<figure><artwork><![CDATA[                                                                                                                                       
                         Multicast Receiver                                  
                                   |                                            
                                   |                                            
                                   | PIM (1 .1.1.1, 232.1.1.1)                  
                                   |                                            
                                   |                                            
                           +---------------+                                    
                           |       P2      |                                    
                           |               |                                    
                           +---------------+                                    
                                   |                                            
    PIM join (10.1.1.1, 232.1.1.1) |                                            
                                   |    Unicast Rechability          
                           +--------------+  Prefix 10.1.1.0/24           
                           |       P1     |  NH : PE1, PE2 (ECMP)         
                           |              |                                     
                           +--------------+                                     
                                   /\                                            
                                  /  \                                           
                                 /    \                                          
                                /      \ PIM (10.1.1.1, 232.1.1.1)          
                               /        \                                        
                              /          \                                       
                             /            \                                      
                            -              -                                     
                  +-------------+        +-------------+                            
                  |     PE1     |        |    PE2      |                            
                  |             |        |             |                            
IRB 10.1.1.0/24   +-------------+        +-------------+IRB 10.1.1.0/24           
                          \                     /                                    
                           \                   /                                     
                            \                 /                                      
                             \               /                                       
                              \             /                                        
                               \           /                                         
                                -         -                                          
                          +--------------------+                                      
                          |          CE        |                                      
                          |                    |                                      
                          +--------------------+                                      
                                     |                                                
                                     |                                                
                                     |                                                
                               Source 10.1.1.1                                         
	]]>
    </artwork></figure> 
    <t>Above figure shows sample topology where </t>
    <ul>
       <li> CE is multihomed to PE1 and PE2 </li>
       <li> EVPN gets terminated over IRB in both of the PE </li>
       <li> North of the PE is PIM domain </li>
       <li> Multicast receiver originates PIM join towards source </li>
       </ul>
		 </t>
		 
  <t> In the above topology, the source prefix is announced in IGP from both of the PE. When P1 does process 
	  PIM joins towards source 10.1.1.1, it needs to do a source prefix lookup to pick RPF towards the source.
	  Since there is ECMP path, it gets two next hop as PE1 and PE2. Based on local decision P1 can send 
	  PIM join to either of the next hop. Consider in this case it picks PE2 as RPF to send PIM join. 
	  At this point of time end to end PIM tree has been created where the tree is built rooted at PE2. At present 
	  there is no data traffic being sourced. 
	  </t>
  <t> As the next step Source starts sending multicast traffic. Once traffic reaches CE, it is going to hash the flow 
	  to either of the ports. and consider it picks PE1 as the next hop to send traffic to. 
  </t>
  <t> Previous two steps (PIM join and multicast data flow) can happen in any order
	  </t>
	  <t> At the end we are in a situation where multicast traffic is being received by PE1 and PIM join landed on PE2 causing traffic blackholing. 
		  </t>
	<t>
		At present deployment uses EVPN BUM tunnel to bridge multicast traffic between peers. Which results in traffic from PE1 being bridged to 
		PE2 via P1. and it leads same traffic going over the link twice (once as bridge copy and once as routed copy). 
		</t>
  
	 </section>
	 
	 <section title="Solution Requirement">
		 <t>
			 <ul>
				 <li> It MUST avoid traffic duplication between peers unless there are local receivers</li>
				 <li> It MUST be applicable for PIM-SM and PIM-SSM</li>
				 </ul>
			 </t>
		 </section>
		 
	 <section title="Solution overview">
		 <t>
			 
			 [<xref target="RFC8364"/> defines a generic flooding mechanism for distributing
   information throughout the PIM domain.  Multicast source discovery was
   one of the types of information being flooded in the PIM domain. <xref target="RFC8364"/> was mainly
   designed to flood source information for PIM-SM sources.  However, this
   draft provides an extension to flood PIM-SM and PIM-SSM source
   information if the source is being hosted in a multihomed port.

		
			 </t>
		
				 <section title="Flooding multihome source">
					 <t> Multihome source flood will use a generic flood mechanism defined by 
						 <xref target="RFC8364"/>. Forwarding rules are identical to <xref target="RFC8364"/>
						 </t>
						 <t> Details of TLV extension and packet format are to be added in the next revision. 
							 </t>
					 </section>
					 
			      <section title=" Optimization multihome source flooding">
				      <t>
					      TBD
					      </t>
				      </section>
		
		 
		 </section> 
     
    <section title="Security Considerations">


    </section>

    <section anchor="iana" title="IANA Considerations">
      
    </section>

</middle>

 <!--  *****BACK MATTER ***** -->

<back>
    <!-- References split into informative and normative -->
    <references title="Normative References">
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8364.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.7432.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.7761.xml"/>

    </references>

    <references title="Informative References">



    </references>

    <section title="Acknowledgments">
        <t> </t>
    </section>
</back>
</rfc>

