<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
    which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
    There has to be one entity for each item to be referenced. 
    An alternate method (rfc include) is described in the references. -->

<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC7432 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7432.xml">
<!ENTITY RFC5884 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5884.xml">
<!ENTITY RFC5880 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5880.xml">
<!ENTITY RFC7726 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7726.xml">
<!ENTITY RFC7623 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7623.xml">
<!ENTITY RFC6428 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6428.xml">
<!ENTITY RFC6790 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6790.xml">
<!ENTITY RFC4385 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4385.xml">
<!ENTITY RFC5226 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5226.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
    please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
    (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
    (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-gmsm-bess-evpn-bfd-00" ipr="trust200902">
 <!-- category values: std, bcp, info, exp, and historic
    ipr values: trust200902, noModificationTrust200902, noDerivativesTrust200902,
       or pre5378Trust200902
    you can add the attributes updates="NNNN" and obsoletes="NNNN" 
    they will automatically be output with "(if approved)" -->

 <!-- ***** 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="Fault management for EVPN">Fault Management for EVPN networks
   </title>

   <!-- add 'role="editor"' below for the editors if appropriate -->

   <!-- Another author who claims to be an editor -->

   <author fullname="Vengada Prasad Govindan" initials="V" 
           surname="Govindan">
     <organization>Cisco Systems</organization>
     <address>
       <email>venggovi@cisco.com</email>
       <!-- uri and facsimile elements may also be added -->
     </address>
   </author>

   <author fullname="Mudigonda Mallik" initials="M"
           surname="Mudigonda">
     <organization>Cisco Systems</organization>
     <address>
       <email>mmudigon@cisco.com</email>
       <!-- uri and facsimile elements may also be added -->
     </address>
   </author>

   <author fullname="Ali Sajassi" initials="A"
           surname="Sajassi">
     <organization>Cisco Systems</organization>
     <address>
       <email>sajassi@cisco.com</email>
       <!-- uri and facsimile elements may also be added -->
     </address>
   </author>



   <author fullname="Gregory Mirsky" initials="G" 
           surname="Mirsky">
     <organization>Ericsson</organization>

     <address>

       <email>gregory.mirsky@ericsson.com</email>


       <!-- uri and facsimile elements may also be added -->
     </address>
   </author>

   <date year="2016" />

   <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
        in the current day for you. If only the current year is specified, xml2rfc will fill 
	 in the current day and month for you. If the year is not the current one, it is 
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to 
	 specify just the year. -->

   <!-- Meta-data Declarations -->

   <area>Network</area>

   <workgroup>Internet Engineering Task Force</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>E-VPN, BFD</keyword>

   <!-- Keywords will be incorporated into HTML output
        files in a meta tag but they have no effect on text or nroff
        output. If you submit your draft to the RFC Editor, the
        keywords will be used for the search engine. -->

   <abstract>
     <t>
This document proposes a proactive, in-band network OAM mechanism to
   detect loss of continuity and miss-connection faults that affect unicast and 
   multi-destination paths, used by Broadcast, unknown Unicast and Multicast 
   traffic, in an EVPN network.  The  mechanisms proposed in the draft use the principles of the widely
   adopted Bidirectional Forwarding Detection protocol.
     </t>
   </abstract>
 </front>

 <middle>
   <section title="Introduction">
   <t><xref target="I-D.salam-l2vpn-evpn-oam-req-frmwk" /> and <xref target="I-D.ooamdt-rtgwg-ooam-requirement" />
     outlines the OAM requirements of Ethernet VPN networks     
    <xref target="RFC7432"></xref>. This document proposes mechanisms for proactive fault     
    detection at the network(overlay) OAM layer of EVPN.  EVPN fault     
    detection mechanisms need to consider unicast and Broadcast and unknown Unicast (BUM) traffic     
    separately since they map to different FECs in EVPN, hence this document     
    proposes different fault detection mechanisms to suit each     
    type using the principles of<xref target="RFC5880"></xref>,<xref target="RFC5884"></xref> and Point-to-multipoint BFD<xref target="I-D.ietf-bfd-multipoint"/> and <xref target="I-D.ietf-bfd-multipoint-active-tail"/>. 
</t>



     <section title="Requirements Language">
       <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
       "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
       document are to be interpreted as described in <xref
       target="RFC2119">RFC 2119</xref>.</t>
     </section>
   </section>

   <section anchor="id_scope" title="Scope of the Document">
     <t>This document proposes proactive fault detection for EVPN <xref target="RFC7432"> </xref> using BFD mechanisms for:
     </t>

     <t><list style="symbols">
	<t>Unicast traffic. </t>
	<t>BUM traffic using Multi-point-to-Point (MP2P) tunnels (ingress replication).</t>
	<t>BUM traffic using Point-to-Multipoint (P2MP) tunnels (LSM).</t>

       </list>
       This document does not discuss BFD mechanisms for:
       <list style="symbols"> 
       <t> EVPN variants like PBB-EVPN <xref target="RFC7623"></xref>. This will be addressed in future versions.</t>
       <t> IRB solution based on EVPN <xref target="I-D.ietf-bess-evpn-inter-subnet-forwarding"/>. This will be addressed in future versions.</t>
       <t> EVPN using other encapsulations like VxLAN, NVGRE and MPLS over GRE <xref target="I-D.ietf-bess-evpn-overlay"/>. </t>
       <t> BUM traffic using MP2MP tunnels will also be addressed in a future version of this document.</t>
       </list>

       This specification describes procedures only for BFD asynchronous mode.
       BFD demand mode is outside the scope of this specification.  Further, the 
       use of the  Echo function is outside the scope of this specification.
       </t>
   </section>

<section title ="Motivation for running BFD at the network layer of EVPN">
<t>
    The choice of running BFD at the network layer of the OAM model for     
    EVPN <xref target="I-D.salam-l2vpn-evpn-oam-req-frmwk" /> and <xref target="I-D.ooamdt-rtgwg-ooam-requirement" />
    was made after considering the following:     
   <list counter="defs1" hangIndent="4" style="symbols">
  
    <t>In addition to detecting link failures in the EVPN network, BFD     
    sessions at the network layer can be used to monitor the successful     
    programming of labels used for setting up MP2P and P2MP EVPN tunnels     
    transporting Unicast and BUM traffic. The scope of reachability     
    detection covers the ingress and the egress EVPN PE nodes and the     
    network connecting them.</t>
      
       <t>Monitoring a representative set of path(s) or a particular path     
    among the multiple paths available between two EVPN PE nodes could be     
    done by exercising the entropy labels when they are used. However     
    paths that cannot be realized by entropy variations cannot be     
    monitored. Fault monitoring requirements outlined by <xref target="I-D.salam-l2vpn-evpn-oam-req-frmwk" /> are     
    addressed by the mechanisms proposed by this draft.</t> </list>
      
       Successful establishment and maintenance of BFD sessions between     
    EVPN PE nodes does not fully guarantee that the EVPN service is     
    functioning.  For example, an egress EVPN-PE can understand the EVPN     
    label but could switch data to incorrect interface.  However, once     
    BFD sessions in the EVPN Network Layer reach UP state, it does     
    provide additional confidence that data transported using those     
    tunnels will reach the expected egress node.  When the BFD session 
    in EVPN overlay goes down that can be used as indication of the 
    Loss-of-Connectivity defect in the EVPN underlay that would 
    cause EVPN service failure.
</t>
</section>

<section title="Fault Detection of unicast traffic">
	<t>The mechanisms specified in BFD for MPLS LSPs <xref target="RFC5884"></xref>
         <xref target="RFC7726"></xref> can be applied to bootstrap and maintain BFD 
         sessions for unicast EVPN traffic. The discriminators required for de-multiplexing
         the BFD sessions MUST be exchanged using EVPN LSP ping specifying the Unicast EVPN FEC 
         <xref target="I-D.jain-bess-evpn-lsp-ping" /> before establishing the BFD session.
         This is needed since the MPLS label stack does not contain enough information
         to disambiguate the sender of the packet. 

         The usage of MPLS entropy labels take care of addressing the requirement of 
         monitoring various paths of the multi-path server layer network <xref target="RFC6790"></xref>.
         Each unique realizable path between the participating PE routers MAY be monitored
         separately when entropy labels are used. The multi-path connectivity between two PE routers MUST be tracked by
         at least one representative BFD session, in which case
         the granularity of fault-detection would be coarser. 

         The PE node receiving the EVPN LSP ping MUST allocate BFD discriminators using the procedures defined in <xref target="RFC7726"></xref>.
         Note that once the BFD session for the EVPN label is UP, either end of the BFD session
         MUST NOT change  the local discriminator values of the BFD Control packets it generates,
         unless it first brings down the session as specified in <xref target="RFC5884"></xref>. 
	</t>
</section>
<section title="Fault Detection of BUM traffic using ingress replication (MP2P)">

<t>Ingress replication uses separate MP2P tunnels for transporting BUM traffic 
from the ingress PE (head) to a set of one or more egress PEs (tails). 
The fault detection mechanism proposed by this document takes advantage 
of the fact that a unique copy is made by the head for each tail. Another
key aspect to be considered in EVPN is the advertisement of the inclusive
multicast route. The BUM traffic flows from a head node to a particular
tail only after the head receives the inclusive multicast route
containing the BUM EVPN label (downstream allocated) corresponding to the MP2P tunnel. 

The head-end PE performing ingress replication MUST initiate an EVPN LSP ping 
using the inclusive multicast FEC <xref target="I-D.jain-bess-evpn-lsp-ping" />
upon receiving an inclusive multicast route from a tail to bootstrap the BFD session.

There MAY exist multiple BFD sessions between a head PE an individual tail 
due to the usage of entropy labels <xref target="RFC6790"></xref> for an 
inclusive multicast FEC. 

The PE node receiving the EVPN LSP ping MUST allocate BFD discriminators using the procedures defined in <xref target="RFC7726"></xref>.
Note that once the BFD session for the EVPN label is UP, either end of the BFD session
MUST NOT change  the local discriminator values of the BFD Control packets it generates,
unless it first brings down the session as specified in <xref target="RFC5884"></xref>. 

</t>
</section>


<section title="Fault Detection of BUM traffic using P2MP tunnels (LSM)">
<t> TBD.
</t>
</section>


<section title="BFD packet encapsulation">

<section title="Using GAL/G-ACh encapsulation without IP headers">

<section title="Ingress replication">
<t>The packet contains the following labels: LSP label (transport) when not using PHP, the optional entropy label, the BUM label and the SH label<xref target="RFC7432"></xref> (where applicable). The G-ACh type is set to TBD. 
The G-Ach payload of the packet MUST contain the L2 header (in overlay space) followed by the IP header encapsulating the BFD packet. The MAC address of the inner packet is used to validate the &lt;EVI, MAC&gt; in the receiving node.
The discriminator values of BFD are obtained through negotiation through the out-of-band EVPN LSP ping. 
</t>
<section title="Alternative encapsulation format">
<t> A new TLV can be defined as proposed in Sec 3 of <xref target="RFC6428"></xref> to include the EVPN FEC information as a TLV following the BFD Control packet. The format of the TLV can be reused from the EVPN Inclusive Multicast sub-TLV proposed by Fig 2 of <xref target="I-D.jain-bess-evpn-lsp-ping"/>. 
</t>
<t>
A new type (TBD3) to indicate the EVPN Inclusive Multicast SubTLV is requested from the "CC/
   CV MEP-ID TLV" registry <xref target="RFC6428"></xref>.
</t>
      <t><figure>
          <artwork><![CDATA[  
    0                   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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0 0 0 1|Version|     Flags     |       BFD CV Code Point TBD2  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   ~                  BFD Control Packet                           ~
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   ~               EVPN Inclusive Multicast TLV                    ~
   |                 (Type = TBD3)                                 | 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Figure 1: BFD-EVPN CV Message for EVPN Multicast 
                  (Ingress Replication)

]]></artwork>
        </figure></t>

</section>
</section>

<section title="LSM">
<t>TBD. </t>

</section>
<section title="Unicast">
<t>The packet contains the following labels: LSP label (transport) when not using PHP, the optional entropy label and the EVPN Unicast label. The G-ACh type is set to TBD.  The G-Ach payload of the packet MUST contain the L2 header (in overlay space) followed by the IP header encapsulating the BFD packet. The MAC address of the inner packet is used to validate the &lt;EVI, MAC&gt; in the receiving node. The discriminator values of BFD are obtained through negotiation through the out-of-band EVPN ping.
</t>
<section title="Alternative encapsulation format">
<t> A new TLV can be defined as proposed in Sec 3 of <xref target="RFC6428"></xref> to include the EVPN FEC information as a TLV following the BFD Control packet. The format of the TLV can be reused from the EVPN MAC sub-TLV proposed by Fig 1 of <xref target="I-D.jain-bess-evpn-lsp-ping"/>. 
A new type (TBD4) to indicate the EVPN MAC SubTLV is requested from the "CC/
   CV MEP-ID TLV" registry <xref target="RFC6428"></xref>.
</t>
      <t><figure>
          <artwork><![CDATA[  
    0                   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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0 0 0 1|Version|     Flags     |       BFD CV Code Point TBD2  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   ~                  BFD Control Packet                           ~
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   ~                           EVPN MAC Sub TLV                    ~
   |                 (Type = TBD4)                                 | 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Figure 2: BFD-EVPN CV Message for EVPN Unicast

]]></artwork>
        </figure></t>
</section>

</section>
</section>

<section title="Using IP headers">

<t>The encapsulation option using IP headers will not be suited for EVPN, as using different values in the destination IP address for data and OAM (BFD) packets could cause the BFD packets to follow a different path than that of data packets. Hence this option MUST NOT be used for EVPN.
</t>
</section>
</section>

<section title="Scalability Considerations"> <!-- 4, line 229-->
<t>The mechanisms proposed by this draft could affect the packet load on the network and its elements especially when supporting configurations involving a large number of EVIs. The option of slowing down or speeding up BFD timer values can be used by an administrator or a network management entity to maintain the overhead incurred due to fault monitoring at an acceptable level.
</t>
</section> <!-- ends: "4 from line 229-->

<section title="IANA Considerations"> <!-- 5, line 234-->
<t>   IANA is requested for two channel types from the "Pseudowire Associated
   Channel Types" registry in <xref target="RFC4385"></xref>.

<list>
     <t> TBD1   BFD-EVPN CC message </t> 
     <t> TBD2   BFD-EVPN CV message </t>
</list>
Ed Note: Do we need a CC code point? TBD
</t>
<t>

 IANA is requested to allocate the following code-points from the
   "CC/CV MEP-ID TLV" registry <xref target="RFC6428"></xref>.  The parent registry
   is the "Pseudowire Associated Channel Types" registry of <xref target="RFC4385"></xref>
   .  All code points within this registry shall be allocated
   according to the "Standards Action" procedures as specified in <xref target="RFC5226"></xref>.
   The items tracked in the registry will be the type, associated name,
   and reference.

   The requested values are:

<list>
      <t> TBD3 - CV code-point for BFD EVPN Inclusive multicast. </t>
      <t> TBD4 - CV code-point for BFD EVPN Unicast. </t>
</list>
</t>
</section>

<section title="Security Considerations"> <!-- 5, line 234-->
<t> TBD.
</t>
</section>



 </middle>

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

 <back>
   <!-- References split into informative and normative -->

    <references title="Normative References">
     &RFC2119;
     &RFC7432;
     &RFC5884;
     &RFC6790;
     &RFC7726;
     &RFC7623;
     &RFC5880;
     &RFC6428;
     &RFC4385;
     &RFC5226;
     <?rfc include="reference.I-D.jain-bess-evpn-lsp-ping"?>
     <?rfc include="reference.I-D.ietf-bfd-multipoint"?>
     <?rfc include="reference.I-D.ietf-bfd-multipoint-active-tail"?>
     <?rfc include="reference.I-D.ietf-bess-evpn-inter-subnet-forwarding"?>
     <?rfc include="reference.I-D.ietf-bess-evpn-overlay"?>

   </references>

    <references title="Informative References">
      <?rfc include="reference.I-D.salam-l2vpn-evpn-oam-req-frmwk"?>
      <?rfc include="reference.I-D.ooamdt-rtgwg-ooam-requirement"?>
   </references>



   <!-- Change Log 

v00 2016-06-03  GVP Initial Version
    -->
 </back>
</rfc>
