<?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;">
  <!ENTITY I-D.ietf-bess-evpn-l2gw-proto SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-bess-evpn-l2gw-proto.xml">
  <!ENTITY I-D.ietf-bess-evpn-mh-pa SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-bess-evpn-mh-pa.xml">
  <!ENTITY I-D.draft-ietf-bess-rfc7432bis SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-bess-rfc7432bis.xml">

]>
<!-- 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-kriswamy-bess-evpn-perflow-df-00"
    updates=""
    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="Per-flow based EVPN DF Election">Per-flow based EVPN DF Election</title>
    <seriesInfo name="Internet-Draft" value="draft-kriswamy-bess-evpn-perflow-df-00"/>

    <author fullname="Krishnaswamy Ananthamurthy" initials="K." surname="Ananthamurthy">
     <organization>Cisco</organization>
     <address>
	    <postal>
          <street>170 W. Tasman Drive</street>
          <street/>
          <city>San Jose</city>
          <code>95134</code>
          <region>CA</region>
          <country>USA</country>
        </postal>
       <email>kriswamy@cisco.com</email>
     </address>
   </author>

  <author fullname="Ali Sajassi" initials="A." surname="Sajassi">
     <organization>Cisco</organization>
     <address>
	    <postal>
          <street>170 W. Tasman Drive</street>
          <street/>
          <city>San Jose</city>
          <code>95134</code>
          <region>CA</region>
          <country>USA</country>
        </postal>
       <email>sajassi@cisco.com</email>
     </address>
   </author>
  
  <author fullname="Lukas Krattiger" initials="L." surname="Krattiger">
     <organization>Cisco</organization>
     <address>
	    <postal>
          <street>170 W. Tasman Drive</street>
          <street/>
          <city>San Jose</city>
          <code>95134</code>
          <region>CA</region>
          <country>USA</country>
        </postal>
       <email>lkrattig@cisco.com</email>
     </address>
   </author>   
   <date year="2025" />

   <!-- Meta-data Declarations -->
   <area>Routing</area>
   <workgroup>BESS 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. -->

   <keyword>BGP</keyword>

   <abstract>
	<t> The Ethernet Virtual Private Network (EVPN) solution offers procedures for electing a Designated Forwarder (DF) for multihomed Ethernet Segments.
		In this context, the Provider Edge (PE) router is responsible for sending Broadcast, Unknown Unicast, and Multicast (BUM) traffic to a multihomed 
		device or network. This applies in cases of an all-active multihomed Ethernet Segment (ES) as well as for BUM and unicast traffic in the case of 
		single-active multi-homing. While the Default Algorithm provides an efficient and automated way of selecting the DF across different Ethernet 
		Tags in the Ethernet Segment, but lacks in providing per flow based DF within the given EVPN Instances (EVIs).
	</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> The Ethernet Virtual Private Network (EVPN) solution offers procedures for electing a Designated Forwarder (DF) for multihomed Ethernet Segments.
		In this context, the Provider Edge (PE) router is responsible for sending Broadcast, Unknown Unicast, and Multicast (BUM) traffic to a multihomed 
		device or network. This applies in cases of an all-active multihomed Ethernet Segment (ES) as well as for BUM and unicast traffic in the case of 
		single-active multi-homing. While the Default Algorithm provides an efficient and automated way of selecting the DF across different Ethernet 
		Tags in the Ethernet Segment, but lacks in providing per flow based DF within the given EVPN Instances (EVIs).
	</t>
	<t> This document proposes a Per-flow DF Election algorithm to provide optimal load sharing. This document updates RFC8584 
		by modifying the definition of the DF Election Extended Community with new DF Algorithm type.
	</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 title="Designated Forwarder Election Extended Community Extensions" anchor="DFEXT">

	<t> This solution reuses and extends the Designated Forwarder Election Extended Community defined in <xref target="RFC8584"/>
		that is advertised along with the Ethernet Segment route. This document defines a new DF Algorithm type Per-flow. 
		The format of the DF Election Extended Community that is used in this document follows:
	 </t>
		
		
	<figure anchor="df-election-extended-community"
			 title="DF Election Extended Community">
	<artwork><![CDATA[
 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(0x06)| RSV |  DF Alg |    Bitmap     ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~     Bitmap    |   Reserved                                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>

	<t> DF Alg will carry the DF alg type. </t>
	<t> New DF Alg type called per-flow df with value 6 (to be allocated by IANA) 
		will be defined in the draft and same will be encoded in DF algorithm EC.
	</t>

	<t>
		The procedures defined in <xref target="RFC8584"/> to handle Designated Forwarder Election Extended Community are applicable. 
	</t>
	
	<t>
		When a PE receives the ES routes from all the other PEs for the ES in question, it checks to see if all the advertisements have the 
		Extended Community with the same DF Alg, then it will operate in per-flow DF algorithm. 
	</t>
	
	</section>
	
	<section anchor="Operation" title="Operation">
	<t>
		When PE supports the Per-flow DF algorithm, the ES route is sent with the DF Election Extended Community, with DF-Alg set to Per-flow.
	</t>
	<t>
		When PE supports the Per-flow DF algorithm, it should use the DF election as per the flow when it receives the ES 
		route with the DF Election Extended Community and the DF-Alg set to Per-flow.
	</t>
	<t>
		PE, which does not support Per-flow DF, will revert to the default modulo-based DF.
	</t>
	<t>
		When a Provider Edge (PE) router operates in Per-Flow Designated Forwarder (DF) mode, it computes a hash based on the five-tuple 
		of the packet header. The hashing algorithm can use a Cyclic Redundancy Check (CRC). The number of PEs involved in redundancy 
		multihoming will be used in the calculation as follows: I, which is HASH mod N. This approach allows multiple flows
		within a given VLAN to be forwarded by different PEs acting as DF for a specific Ethernet Segment (ES).
	</t>
	</section>
	
	<section title="Security Considerations">
		<t> 
			TBD
		</t>
	</section>
		<section anchor="iana" title="IANA Considerations">
			<t>This document solicits:</t>
			
		
		
		<t><list style="symbols">
          <t>The allocation of two new values in the "DF Alg" registry created
          by <xref target="RFC8584"/> as follows:<figure>
              <artwork><![CDATA[Alg         Name                               Reference
----        -----------------------------      -------------
6           Per-flow Algorithm       This document]]>
              </artwork>
            </figure></t>
        </list></t>
		</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.7432.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8584.xml"/>
        <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.7606.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-bess-evpn-virtual-eth-segment.xml"/>
    </references> 

</back>
</rfc>

