<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC7623 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7623.xml">
<!ENTITY RFC7432 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7432.xml">
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY I-D.ietf-bess-evpn-virtual-eth-segment SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-bess-evpn-virtual-eth-segment.xml">
]>
<rfc category="std" docName="draft-ietf-bess-pbb-evpn-isid-cmacflush-07"
     ipr="trust200902" submissionType="IETF">
  <!-- Generated by id2xml 1.5.0 on 2020-10-30T09:55:35Z -->

  <?rfc strict="yes"?>

  <?rfc compact="yes"?>

  <?rfc subcompact="no"?>

  <?rfc symrefs="yes"?>

  <?rfc sortrefs="no"?>

  <?rfc text-list-symbols="o*+-"?>

  <?rfc toc="yes"?>

  <front>
    <title abbrev="PBB-EVPN ISID-based CMAC-flush">PBB-EVPN ISID-based
    CMAC-Flush</title>

    <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>USA</country>
        </postal>

        <email>jorge.rabadan@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>USA</country>
        </postal>

        <email>senthil.sathappan@nokia.com</email>
      </address>
    </author>

    <author fullname="Kiran Nagaraj" initials="K." surname="Nagaraj">
      <organization>Nokia</organization>

      <address>
        <postal>
          <street>520 Almanor Avenue</street>

          <city>Sunnyvale</city>

          <region>CA</region>

          <code>94085</code>

          <country>USA</country>
        </postal>

        <email>kiran.nagaraj@nokia.com</email>
      </address>
    </author>

    <author fullname="M. Miyake" initials="M." surname="Miyake">
      <organization>Softbank</organization>

      <address>
        <email>masahiro.miyake@g.softbank.co.jp</email>
      </address>
    </author>

    <author fullname="T. Matsuda" initials="T." surname="Matsuda">
      <organization>Softbank</organization>

      <address>
        <email>taku.matsuda@g.softbank.co.jp</email>
      </address>
    </author>

    <date day="27" month="June" year="2023"/>

    <workgroup>BESS Workgroup</workgroup>

    <abstract>
      <t>Provider Backbone Bridging (PBB) can be combined with Ethernet
      Virtual Private Networks (EVPN) to deploy Ethernet Local Area Network
      (ELAN) services in large Multi-Protocol Label Switching (MPLS) networks
      (PBB-EVPN). Single-Active Multi-homing and per-I-SID (per Service
      Instance Identifier) Load-Balancing can be provided to access devices
      and aggregation networks. In order to speed up the network convergence
      in case of failures on Single-Active Multi-Homed Ethernet Segments,
      PBB-EVPN defines a flush mechanism for Customer MACs (CMAC-flush) that
      works for different Ethernet Segment Backbone MAC (BMAC) address
      allocation models. This document complements those CMAC-flush procedures
      for cases in which no PBB-EVPN Ethernet Segments are defined (the
      attachment circuit is associated to a zero Ethernet Segment Identifier)
      and a Service Instance Identifier based (I-SID-based) CMAC-flush
      granularity is required.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="sect-1" title="Introduction">
      <t><xref target="RFC7623"/> defines how Provider Backbone Bridging (PBB)
      can be combined with Ethernet Virtual Private Networks (EVPN) to deploy
      ELAN services in very large MPLS networks. <xref target="RFC7623"/> also
      describes how Single-Active Multi-homing and per-I-SID Load-Balancing
      can be provided to access devices and aggregation networks. When Access
      Ethernet/MPLS Networks exists, <xref
      target="I-D.ietf-bess-evpn-virtual-eth-segment"/> describes how virtual
      Ethernet Segments can be associated to a group of Ethernet Virtual
      Circuits (EVCs) or even Pseudowires (PWs). In order to speed up the
      network convergence in case of failures on Single-Active Multi-Homed
      Ethernet Segments, <xref target="RFC7623"/> defines a Customer MAC flush
      mechanism that works for different Ethernet Segment BMAC address
      allocation models.</t>

      <t>In some cases, the administrative entities that manage the access
      devices or aggregation networks do not demand Multi-Homing Ethernet
      Segments (ES) from the PBB-EVPN provider, but simply multiple
      single-homed ES. If that is the case, the PBB-EVPN network is no longer
      aware of the redundancy offered by the access administrative entity.
      <xref target="pbb-evpn-and-non-es-based-redundancy"/> shows an example
      where the PBB-EVPN network provides four different Attachment Circuits
      for I-SID1, with those Attachment Circuits not being part of any
      Ethernet Segment or virtual Ethernet Segment (therefore they are
      referred to as null virtual Ethernet Segment).</t>

      <figure anchor="pbb-evpn-and-non-es-based-redundancy"
              title="PBB-EVPN and non-ES based redundancy">
        <artwork><![CDATA[
     <----G.8032--><--PBB-EVPN Network---><----MPLS---->
          Access          MPLS                Access  
           Ring                               Network
     I-SID1    ESI +-----+         +-----+
     +----+    null| PE1 |---------| PE3 |
     |CE1 |--------|BMAC1|         |BMAC3| ESI null
     +----+  active|     |         |     |----+ PW     
       |           +-----+         +-----+     \active  
       |             |                 |        \  +----+
       |             |                 |         ==|CE3 |I-SID1
       |             |                 |        /  +----+
       |stb    ESI +-----+         +-----+     / PW   
     +----+    null| PE2 |         | PE4 |----+ standby      
     |CE2 |--------|BMAC2|         |BMAC4| ESI null
     +----+  active|     |---------|     |
     I-SID1        +-----+         +-----+ 
                                            ]]></artwork>
      </figure>

      <t>In the example in <xref
      target="pbb-evpn-and-non-es-based-redundancy"/>, CE1, CE2 and CE3 are
      attached to the same service, identified by I-SID1, in the PBB-EVPN PEs.
      CE1 and CE2 are connected to the PEs via G.8032 Ethernet Ring Protection
      Switching, and their Attachment Circuits to PE1 and PE2 are represented
      by a port and VLAN identifier. CE3 is dual-homed to PE3 and PE4 through
      an active-standby PW, and its Attachment Circuit to the PEs is
      represented by a PW. Each of the four PEs uses a dedicated Backbone MAC
      address as source MAC address (BMAC1, BMAC2, BMAC3 and BMAC4,
      respectively) when encapsulating customer frames in PBB packets and
      forwarding those PBB packets to the remote PEs as per <xref
      target="RFC7623"/>. There are no multi-homed Ethernet Segments defined
      in the PBB-EVPN network of the example, that is why the four Attachment
      Circuits in <xref target="pbb-evpn-and-non-es-based-redundancy"/> show
      the text "ESI null", which means the Ethernet Segment Identifier on
      those Attachment Circuits is zero. Since there are no multi-homed ES
      defined, the PEs keep their Attachment Circuits active as long as the
      physical connectivity is established and the CEs are responsible for
      managing the redundancy, avoiding loops and providing per-I-SID load
      balancing to the PBB-EVPN network.</t>

      <t>For instance, CE2 will block its link to CE1 and CE3 will block its
      forwarding path to PE4. In this situation, a failure in one of the
      redundant Attachment Circuits will trigger the CEs to start using their
      redundant paths, however those failures will not trigger any Customer
      MAC flush procedures in the PEs that implement <xref target="RFC7623"/>,
      since the PEs are not using the PBB-EVPN multi-homing procedures. For
      example, if the active PW from CE3 (to PE3) fails, PE3 will not issue
      any Customer MAC flush message and therefore the remote PEs will
      continue pointing at PE3's Backbone MAC to reach CE3's Customer MACs,
      until the Customer MACs age out in the I-SID1 forwarding tables.</t>

      <t><xref target="RFC7623"/> provides a Customer MAC flush solution based
      on a shared Backbone MAC update along with the MAC Mobility extended
      community where the sequence number is incremented. However, the
      procedure is only used along with multi-homed Ethernet Segments. Even if
      that procedure could be used for null Ethernet Segments, as in the
      example of <xref target="pbb-evpn-and-non-es-based-redundancy"/>, the
      <xref target="RFC7623"/> Customer MAC flush procedure would result in
      unnecessary flushing of unaffected I-SIDs on the remote PEs, and
      subsequent flooding of unknown unicast traffic in the network.</t>

      <t>This document describes an extension of the <xref target="RFC7623"/>
      Customer MAC flush procedures, so that in the above failure example, PE3
      can trigger a Customer MAC flush notification that makes PE1, PE2 and
      PE4 flush all the Customer MACs associated to PE3's BMAC3 and (only)
      I-SID1. This new Customer MAC flush procedure explained in this document
      will be referred to as "PBB-EVPN I-SID-based CMAC-flush" and can be used
      in PBB-EVPN networks with null or non-null (virtual) Ethernet
      Segments.</t>

      <section anchor="sect-1.1" title="Terminology and Conventions">
        <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>

        <t>AC: Attachment Circuit.</t>

        <t>B-Component: Backbone Component, as in <xref
        target="RFC7623"/>.</t>

        <t>BMAC: Backbone MAC address.</t>

        <t>BMAC/0 route: an EVPN MAC/IP Advertisement route that uses a BMAC
        in the MAC address field and a zero Ethernet Tag ID.</t>

        <t>BMAC/I-SID route: an EVPN MAC/IP Advertisement route that uses a
        BMAC in the MAC address field and an I-SID in the Ethernet Tag field,
        and it is used to notify remote PEs about the required CMAC-flush
        procedure for the CMACs associated with the advertised BMAC and
        I-SID.</t>

        <t>CE: Customer Edge router.</t>

        <t>CMAC: Customer MAC address.</t>

        <t>ES, vES and ESI: Ethernet Segment, virtual Ethernet Segment and
        Ethernet Segment Identifier.</t>

        <t>EVI: EVPN Instance.</t>

        <t>EVPN: Ethernet Virtual Private Networks, as in <xref
        target="RFC7432"/>.</t>

        <t>G.8032: Ethernet Ring Protection.</t>

        <t>I-Component: Service Instance Component, as in <xref
        target="RFC7623"/>.</t>

        <t>I-SID: Service Instance Identifier.</t>

        <t>MAC-VRF: A Virtual Routing and Forwarding table for MAC
        addresses.</t>

        <t>PBB-EVPN: Provider-Backbone-Bridging and EVPN, as in <xref
        target="RFC7623"/>.</t>

        <t>PE: Provider Edge router.</t>

        <t>RD: Route Distinguisher.</t>

        <t>RT: Route Target.</t>

        <t>Familiarity with the terminology in <xref target="RFC7623"/> is
        expected.</t>
      </section>
    </section>

    <section anchor="sect-2" title="Solution requirements">
      <t>The following requirements are followed by the CMAC-flush solution
      described in this document:</t>

      <t><list style="letters">
          <t>The solution MUST prevent black-hole scenarios in case of
          failures on null ES ACs (Attachment Circuits not associated to ES,
          that is, their corresponding ESI is zero) when the access
          device/network is responsible for the redundancy.</t>

          <t>This extension described in this document MUST work with
          Single-Active non-null ES and virtual ES, irrespective of the PE
          BMAC address assignment (dedicated per-ES BMAC or shared BMAC, as in
          <xref target="RFC7623"/>).</t>

          <t>In case of failure on the egress PE, the solution MUST provide a
          CMAC-flush notification at BMAC and I-SID granularity level.</t>

          <t>The solution MUST provide a reliable CMAC-flush notification in
          PBB-EVPN networks that use Route-Reflectors (RRs), without causing
          "double flushing" or no flushing for certain I-SIDs due to the
          notification messages being aggregated at the RR.</t>

          <t>The solution MUST coexist in <xref target="RFC7623"/> networks
          where there are PEs that do not support this specification.</t>

          <t>The solution SHOULD be enabled/disabled by an administrative
          option on a per-PE and per-I-SID basis.</t>
        </list></t>
    </section>

    <section anchor="sect-3"
             title="EVPN BGP Encoding for ISID-based CMAC-flush">
      <t>The solution does not use any new BGP attributes but reuses the MAC
      Mobility extended community as an indication of CMAC-flush (as in <xref
      target="RFC7623"/>) and encodes the I-SID in the Ethernet Tag field of
      the EVPN MAC/IP advertisement route. As a reference, <xref
      target="ure-cmac-flush-notification-encoding-bmac-isid-route"/> shows
      the MAC Mobility extended community and the EVPN MAC/IP advertisement
      route that are used specified in <xref target="RFC7432"/> and used in
      this document as a CMAC-flush notification message.</t>

      <figure anchor="ure-cmac-flush-notification-encoding-bmac-isid-route"
              title="CMAC-Flush notification encoding: BMAC/ISID route">
        <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=0x03 |   Flags       |   Reserved=0  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Sequence Number                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            +---------------------------------------+
            |  RD                                   |
            +---------------------------------------+
            |  ESI = 0                              |
            +---------------------------------------+
            |  Ethernet Tag ID = I-SID              |
            +---------------------------------------+
            |  MAC Address Length = 48              |
            +---------------------------------------+
            |  BMAC Address                         |
            +---------------------------------------+
            |  IP Address Length = 0                |
            +---------------------------------------+
            |  MPLS Label1                          |
            +---------------------------------------+
]]></artwork>
      </figure>

      <t>Where:</t>

      <t><list style="symbols">
          <t>The route's RD and RT are the ones corresponding to its EVI.
          Alternatively to the EVI's RT, the route MAY be tagged with an RT
          auto-derived from the Ethernet Tag (I-SID) instead. <xref
          target="RFC7623"/> describes how the EVPN MAC/IP Advertisement
          routes can be advertised along with the EVI RT or an RT that is
          derived from the I-SID.</t>

          <t>The Ethernet Tag encodes the I-SID for which the PE that receives
          the route must flush the CMACs upon reception of the route.</t>

          <t>The MAC address field encodes the BMAC Address for which the PE
          that receives the route must flush the CMACs upon reception of the
          route.</t>

          <t>The MAC Mobility extended community is used as in <xref
          target="RFC7623"/>, where a delta in the sequence number between two
          updates for the same BMAC/I-SID will be interpreted as a CMAC-flush
          notification for the corresponding BMAC and I-SID.</t>
        </list></t>

      <t>All the other fields are set and used as defined in <xref
      target="RFC7623"/>. This document will refer to this route as the
      BMAC/I-SID route, as opposed to the <xref target="RFC7623"/> BMAC/0
      route (BMAC route sent with Ethernet Tag ID = 0).</t>

      <t>Note that this BMAC/I-SID route will be accepted and reflected by any
      <xref target="RFC7432"/> RR, since no new attributes or values are used.
      A PE receiving the route will process the received BMAC/I-SID update
      only in case of supporting the procedures described in this
      document.</t>
    </section>

    <section anchor="sect-4" title="Solution description">
      <t><xref target="pbb-evpn-and-non-es-based-redundancy"/> will be used in
      the description of the solution. CE1, CE2 and CE3 are connected to ACs
      associated to I-SID1, where no (Multi-Homed) Ethernet Segments have been
      enabled, and the ACs and PWs are in active or standby state as per <xref
      target="pbb-evpn-and-non-es-based-redundancy"/>.</t>

      <t>Enabling or disabling I-SID-based CMAC-flush SHOULD be an
      administrative choice on the system that MAY be configured per I-SID
      (I-Component). When enabled on a PE:</t>

      <t><list style="letters">
          <t>The PE will be able to generate BMAC/I-SID routes as CMAC-Flush
          notifications for the remote PEs.</t>

          <t>The PE will be able to process BMAC/I-SID routes received from
          remote PEs.</t>
        </list></t>

      <t>When I-SID-based CMAC-flush is disabled, the PE will follow the <xref
      target="RFC7623"/> procedures for CMAC-flush.</t>

      <t>This CMAC-flush specification is described in three sets of
      procedures:</t>

      <t><list style="symbols">
          <t>I-SID-based CMAC-flush activation</t>

          <t>CMAC-flush notification generation upon AC failures</t>

          <t>CMAC-flush process upon receiving a CMAC-flush notification</t>
        </list></t>

      <section anchor="sect-4.1"
               title="ISID-based CMAC-Flush activation procedures">
        <t>The following behavior MUST be followed by the PBB-EVPN PEs
        following this specification. <xref
        target="pbb-evpn-and-non-es-based-redundancy"/> is used as a
        reference.</t>

        <t><list style="symbols">
            <t>As in <xref target="RFC7623"/>, each PE advertises a shared
            BMAC in a BMAC/0 route (with BMAC1, BMAC2, BMAC3 and BMAC4 in the
            MAC address field, respectively). This is the BMAC that each PE
            will use as BMAC SA (Source Address) when encapsulating the frames
            received on any local single-homed AC. Each PE will import the
            received BMAC/0 routes from the remote PEs and will install the
            BMACs in its B-component MAC-VRF. For instance, PE1 will advertise
            BMAC1/0 and will install BMAC2, BMAC3 and BMAC4 in its
            MAC-VRF.</t>

            <t>Assuming I-SID-based CMAC-flush is activated for I-SID 1, the
            PEs will advertise the shared BMAC with I-SID 1 encoded in the
            Ethernet Tag. That is, PE1 will advertise BMAC1/1 and will receive
            BMAC2/1, BMAC3/1 and BMAC4/1. The receiving PEs MUST use these
            BMAC/I-SID routes only for CMAC-flush procedures and they MUST NOT
            be used them to add/withdraw any BMAC entry in the MAC-VRFs. As
            per <xref target="RFC7623"/>, only BMAC/0 routes can be used to
            add/withdraw BMACs in the MAC-VRFs.</t>

            <t>The above procedure MAY also be used for dedicated BMACs (BMACs
            allocated per Ethernet Segment).</t>
          </list></t>
      </section>

      <section anchor="sect-4.2" title="CMAC-Flush generation">
        <t>If, for instance, there is a failure on PE1's AC, PE1 will generate
        an update including BMAC1/1 along with the MAC Mobility extended
        community where the Sequence Number has been incremented. The
        reception of the BMAC1/1 with a delta in the sequence number will
        trigger the CMAC-flush procedures on the receiving PEs.</t>

        <t><list style="symbols">
            <t>An AC going operationally down MUST generate a BMAC/I-SID with
            a higher Sequence Number. If the AC going down makes the entire
            local I-SID go operationally down, the PE will withdraw the
            BMAC/I-SID route for the I-SID.</t>

            <t>An AC going operationally up SHOULD NOT generate any BMAC/I-SID
            update, unless it activates its corresponding I-SID, in which case
            the PE will advertise the BMAC/I-SID route.</t>

            <t>An AC receiving a G.8032 flush notification or a flush message
            in any other protocol from the access network MAY propagate it to
            the remote PEs by generating a BMAC/I-SID route update with higher
            Sequence Number.</t>
          </list></t>
      </section>

      <section anchor="sect-4.3"
               title="CMAC-flush process upon receiving a CMAC-flush notification">
        <t>A PE receiving a CMAC-flush notification will follow these
        procedures:</t>

        <t><list style="symbols">
            <t>A received BMAC/I-SID route (with non-zero I-SID) MUST NOT
            add/remove any BMAC to/from the MAC-VRF.</t>

            <t>An update of a previously received BMAC/I-SID route with a
            delta Sequence Number, MUST flush all the CMACs associated to that
            I-SID and BMAC. CMACs associated to the same I-SID but different
            BMAC MUST NOT be flushed.</t>

            <t>A received BMAC/I-SID withdraw (with non-zero I-SID) MUST flush
            all the CMACs associated to that BMAC and I-SID.</t>
          </list></t>

        <t>Note that the CMAC-flush procedures described in <xref
        target="RFC7623"/> for BMAC/0 routes are still valid and a PE
        receiving <xref target="RFC7623"/> CMAC-flush notification messages
        MUST observe the behavior specified in <xref target="RFC7623"/>.</t>
      </section>
    </section>

    <section anchor="sect-5" title="Conclusions">
      <t>The I-SID-based CMAC-flush solution described in this document has
      the following benefits:</t>

      <t><list style="letters">
          <t>The solution solves black-hole scenarios in case of failures on
          null ES ACs, since the CMAC-flush procedures are independent of the
          Ethernet Segment definition.</t>

          <t>This extension can also be used with Single-Active non-null ES
          and virtual ES, irrespective of the PE BMAC address assignment
          (dedicated per-ES BMAC or shared BMAC).</t>

          <t>It provides a CMAC-flush notification at BMAC and I-SID
          granularity level, therefore flushing a minimum number of CMACs and
          reducing the amount of unknown unicast flooding in the network.</t>

          <t>It provides a reliable CMAC-flush notification in PBB-EVPN
          networks that use RRs. RRs will propagate the CMAC-flush
          notifications for all the affected I-SIDs and irrespective of the
          order in which the notifications make it to the RR.</t>

          <t>The solution can coexist in a network with systems supporting or
          not supporting this specification.</t>
        </list></t>
    </section>

    <section anchor="sect-7" title="Security Considerations">
      <t>Security considerations described in <xref target="RFC7623"/> apply
      to this document.</t>

      <t>In addition, this document suggests additional procedures, that can
      be activated on a per I-SID basis, and generate additional EVPN MAC/IP
      Advertisement routes in the network. The format of these additional EVPN
      MAC/IP Advertisement routes is backwards compatible with <xref
      target="RFC7623"/> procedures and should not create any issues on
      receiving PEs not following this specification, however, the additional
      routes may consume extra memory and processing resources on the
      receiving PEs. Because of that, it is RECOMMENDED to activate this
      feature only when necessary (when multi-homed networks or devices are
      attached to the PBB-EVPN PEs), and not by default in any PBB-EVPN
      PE.</t>
    </section>

    <section anchor="sect-8" title="IANA Considerations">
      <t>This document requests no actions from IANA.</t>
    </section>

    <section anchor="sect-9" title="Acknowledgments">
      <t>The authors want to thank Vinod Prabhu, Sriram Venkateswaran, Laxmi
      Padakanti, Ranganathan Boovaraghavan for their review and
      contributions.</t>
    </section>

    <section anchor="sect-10" title="Contributors"/>
  </middle>

  <back>
    <references title="Normative References">
      &RFC7623;

      &RFC7432;

      &RFC2119;

      &RFC8174;
    </references>

    <references title="Informative References">
      &I-D.ietf-bess-evpn-virtual-eth-segment;
    </references>
  </back>
</rfc>
