RFC 7432

BGP MPLS-Based Ethernet VPN

๐Ÿ“… published February 2015, from ietf

BGP MPLS-Based Ethernet VPN ๐ŸŽ€

Okay bestie, this is RFC 7432 ๐Ÿ’– and it's a Standards Track doc, which means it's the real deal that people actually build. It came out in February 2015. ISSN 2070-1721. A. Sajassi, Ed. from Cisco is the lead editor, with co-authors R. Aggarwal (Arktan), N. Bitar (Verizon), A. Isaac (Bloomberg), J. Uttaro (AT&T), J. Drake (Juniper Networks), and W. Henderickx (Alcatel-Lucent) ๐Ÿ‘‘. The title block doesn't list anything it obsoletes or updates, so it stands on its own โœจ.

Abstract โœจ

So the whole point here is describing how BGP MPLS-based Ethernet VPNs (EVPN) work ๐Ÿฆ‹. The big flex is that the procedures meet the requirements from RFC 7209, which is titled "Requirements for Ethernet VPN (EVPN)" ๐Ÿ’….

Status of This Memo ๐Ÿ“œ

This is an Internet Standards Track document ๐Ÿ”ฅ.

It's a product of the Internet Engineering Task Force (IETF), which means it represents the consensus of the IETF community. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG) ๐Ÿซถ. If you want more on how Internet Standards work, check out Section 2 of RFC 5741.

Info about the current status, any errata, and how to send feedback lives at http://www.rfc-editor.org/info/rfc7432 ๐ŸŒธ.

Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as in effect on the date it was published. Please read these docs carefully, because they spell out your rights and restrictions for this document ๐Ÿ™ˆ. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Simplified BSD License.


Table of Contents ๐Ÿงš

   1. Introduction ....................................................4
   2. Specification of Requirements ...................................4
   3. Terminology .....................................................4
   4. BGP MPLS-Based EVPN Overview ....................................6
   5. Ethernet Segment ................................................7
   6. Ethernet Tag ID ................................................10
      6.1. VLAN-Based Service Interface ..............................11
      6.2. VLAN Bundle Service Interface .............................11
           6.2.1. Port-Based Service Interface .......................11
      6.3. VLAN-Aware Bundle Service Interface .......................11
           6.3.1. Port-Based VLAN-Aware Service Interface ............12
   7. BGP EVPN Routes ................................................13
      7.1. Ethernet Auto-discovery Route .............................14
      7.2. MAC/IP Advertisement Route ................................14
      7.3. Inclusive Multicast Ethernet Tag Route ....................15
      7.4. Ethernet Segment Route ....................................16
      7.5. ESI Label Extended Community ..............................16
      7.6. ES-Import Route Target ....................................17
      7.7. MAC Mobility Extended Community ...........................18
      7.8. Default Gateway Extended Community ........................18
      7.9. Route Distinguisher Assignment per EVI ....................18
      7.10. Route Targets ............................................19
           7.10.1. Auto-derivation from the Ethernet Tag ID ..........19
   8. Multihoming Functions ..........................................19
      8.1. Multihomed Ethernet Segment Auto-discovery ................19
           8.1.1. Constructing the Ethernet Segment Route ............19
      8.2. Fast Convergence ..........................................20
           8.2.1. Constructing Ethernet A-D per Ethernet
                  Segment Route ......................................21
                  8.2.1.1. Ethernet A-D Route Targets ................21

      8.3. Split Horizon .............................................22
           8.3.1. ESI Label Assignment ...............................22
                  8.3.1.1. Ingress Replication .......................22
                  8.3.1.2. P2MP MPLS LSPs ............................24
      8.4. Aliasing and Backup Path ..................................25
           8.4.1. Constructing Ethernet A-D per EVPN Instance Route ..26
      8.5. Designated Forwarder Election .............................27
      8.6. Interoperability with Single-Homing PEs ...................29
   9. Determining Reachability to Unicast MAC Addresses ..............30
      9.1. Local Learning ............................................30
      9.2. Remote Learning ...........................................30
           9.2.1. Constructing MAC/IP Address Advertisement ..........31
           9.2.2. Route Resolution ...................................32
   10. ARP and ND ....................................................33
      10.1. Default Gateway ..........................................34
   11. Handling of Multi-destination Traffic .........................36
      11.1. Constructing Inclusive Multicast Ethernet Tag Route ......36
      11.2. P-Tunnel Identification ..................................37
   12. Processing of Unknown Unicast Packets .........................38
      12.1. Ingress Replication ......................................38
      12.2. P2MP MPLS LSPs ...........................................39
   13. Forwarding Unicast Packets ....................................39
      13.1. Forwarding Packets Received from a CE ....................39
      13.2. Forwarding Packets Received from a Remote PE .............41
           13.2.1. Unknown Unicast Forwarding ........................41
           13.2.2. Known Unicast Forwarding ..........................41
   14. Load Balancing of Unicast Packets .............................41
      14.1. Load Balancing of Traffic from a PE to Remote CEs ........41
           14.1.1. Single-Active Redundancy Mode .....................42
           14.1.2. All-Active Redundancy Mode ........................42
      14.2. Load Balancing of Traffic between a PE and a Local CE ....44
           14.2.1. Data-Plane Learning ...............................44
           14.2.2. Control-Plane Learning ............................44
   15. MAC Mobility ..................................................45
      15.1. MAC Duplication Issue ....................................47
      15.2. Sticky MAC Addresses .....................................47
   16. Multicast and Broadcast .......................................47
      16.1. Ingress Replication ......................................47
      16.2. P2MP LSPs ................................................48
           16.2.1. Inclusive Trees ...................................48
   17. Convergence ...................................................49
      17.1. Transit Link and Node Failures between PEs ...............49
      17.2. PE Failures ..............................................49
      17.3. PE-to-CE Network Failures ................................49
   18. Frame Ordering ................................................50
   19. Security Considerations .......................................50
   20. IANA Considerations ...........................................52
   21. References ....................................................52
      21.1. Normative References .....................................52
      21.2. Informative References ...................................53
   Acknowledgements ..................................................55
   Contributors ......................................................55
   Authors' Addresses ................................................56

1. Introduction ๐Ÿฆ‹

Virtual Private LAN Service (VPLS), as defined in [RFC4664], [RFC4761], and [RFC4762], is a proven, widely deployed technology ๐Ÿ’–. But it has some limits when it comes to multihoming and redundancy, multicast optimization, provisioning simplicity, flow-based load balancing, and multipathing ๐Ÿ™ˆ. Those limits matter a lot for Data Center (DC) deployments. [RFC7209] explains why a new solution is needed and lays out the set of requirements that the new solution must address โœจ.

This document describes the procedures for a BGP MPLS-based solution called Ethernet VPN (EVPN), which is built to address the requirements in [RFC7209]. For the detailed requirements and motivation, go read [RFC7209] ๐Ÿ“š. EVPN needs extensions to existing IP/MPLS protocols, which this document covers. On top of those extensions, EVPN also uses several building blocks from existing MPLS technologies ๐Ÿงš.

2. Specification of Requirements ๐Ÿ’…

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 [RFC2119] ๐Ÿซถ.

3. Terminology ๐ŸŒˆ

Broadcast Domain: In a bridged network, the broadcast domain corresponds to a Virtual LAN (VLAN). A VLAN is usually represented by a single VLAN ID (VID), but it can be represented by several VIDs when Shared VLAN Learning (SVL) is used, per [802.1Q] ๐ŸŽ€.

Bridge Table: An instantiation of a broadcast domain on a MAC-VRF ๐Ÿ“.

CE: Customer Edge device, e.g., a host, router, or switch ๐Ÿ’œ.

EVI: An EVPN instance spanning the Provider Edge (PE) devices participating in that EVPN โœจ.

MAC-VRF: A Virtual Routing and Forwarding table for Media Access Control (MAC) addresses on a PE ๐Ÿฆ‹.

Ethernet Segment (ES): When a customer site (device or network) is connected to one or more PEs via a set of Ethernet links, that set of links is referred to as an 'Ethernet segment' ๐ŸŒธ.

Ethernet Segment Identifier (ESI): A unique non-zero identifier that identifies an Ethernet segment is called an 'Ethernet Segment Identifier' ๐Ÿ”ฅ.

Ethernet Tag: An Ethernet tag identifies a particular broadcast domain, e.g., a VLAN. An EVPN instance consists of one or more broadcast domains ๐Ÿ’–.

LACP: Link Aggregation Control Protocol ๐Ÿงƒ.

MP2MP: Multipoint to Multipoint ๐Ÿซง.

MP2P: Multipoint to Point ๐Ÿซง.

P2MP: Point to Multipoint ๐Ÿซง.

P2P: Point to Point ๐Ÿซง.

PE: Provider Edge device ๐Ÿ‘‘.

Single-Active Redundancy Mode: When only a single PE, among all the PEs attached to an Ethernet segment, is allowed to forward traffic to/from that Ethernet segment for a given VLAN, the Ethernet segment is defined to be operating in Single-Active redundancy mode ๐Ÿ™ˆ.

All-Active Redundancy Mode: When all PEs attached to an Ethernet segment are allowed to forward known unicast traffic to/from that Ethernet segment for a given VLAN, the Ethernet segment is defined to be operating in All-Active redundancy mode ๐ŸŒˆ.

4. BGP MPLS-Based EVPN Overview โœจ

Okay bestie, let's talk EVPN ๐Ÿ’–. An EVPN instance is a group of Customer Edge devices (CEs) that plug into Provider Edge devices (PEs), and the PEs sit at the edge of the MPLS infrastructure ๐ŸŒธ. A CE can be a host, a router, or a switch. The PEs give the CEs virtual Layer 2 bridged connectivity between each other, and the provider can run more than one EVPN instance in its network ๐Ÿฆ‹.

The PEs can be connected over an MPLS Label Switched Path (LSP) infrastructure, which brings MPLS perks like fast reroute, resiliency, etc. โœจ They can also be connected over an IP infrastructure, in which case IP/GRE (Generic Routing Encapsulation) tunneling or other IP tunneling can be used between the PEs ๐Ÿงš. Heads up though: the detailed procedures in this document are only specified for MPLS LSPs as the tunneling technology. BUT these procedures are designed to be extensible to IP tunneling as the Packet Switched Network (PSN) tunneling technology, so it's giving future-proof energy ๐Ÿ’….

Here's the big glow-up ๐Ÿ”ฅ. In an EVPN, MAC learning between PEs happens in the control plane, not in the data plane like traditional bridging in VPLS [RFC4761] [RFC4762] does. Control-plane learning gives you way more control over the MAC learning process, like deciding who learns what, plus the ability to apply policies ๐Ÿ‘‘. The control plane used for advertising MAC reachability is multi-protocol (MP) BGP, which is similar to IP VPNs [RFC4364]. That gives you flexibility and lets you keep the "virtualization" or isolation of groups of interacting agents (hosts, servers, virtual machines) apart from each other ๐Ÿซถ. So in EVPN, PEs advertise the MAC addresses they learned from their connected CEs, along with an MPLS label, to the other PEs using Multiprotocol BGP (MP-BGP) ๐Ÿ’œ.

Control-plane learning also enables load balancing of traffic to and from CEs that are multihomed to multiple PEs ๐Ÿ˜ญ. That's on top of load balancing across the MPLS core via multiple LSPs between the same pair of PEs. In other words, CEs can connect to multiple active points of attachment, and it improves convergence times when certain network failures happen ๐ŸŒˆ.

However, learning between PEs and CEs is done by whatever method suits the CE best: data-plane learning, IEEE 802.1x, the Link Layer Discovery Protocol (LLDP), IEEE 802.1aq, Address Resolution Protocol (ARP), management plane, or other protocols ๐Ÿ“.

It's a local decision whether the Layer 2 forwarding table on a PE gets populated with all the MAC destination addresses known to the control plane, or whether the PE uses a cache-based scheme instead ๐ŸŽ€. For example, the MAC forwarding table might only be populated with the MAC destinations of the active flows transiting a specific PE โญ.

The policy attributes of EVPN are very similar to IP-VPN's ๐Ÿ’…. An EVPN instance requires a Route Distinguisher (RD) that is unique per MAC-VRF, plus one or more globally unique Route Targets (RTs) ๐Ÿฆ‹. A CE attaches to a MAC-VRF on a PE, on an Ethernet interface that may be configured for one or more Ethernet tags, e.g., VLAN IDs ๐ŸŒธ. Some deployment scenarios guarantee VLAN ID uniqueness across EVPN instances: all points of attachment for a given EVPN instance use the same VLAN ID, and no other EVPN instance uses that VLAN ID ๐Ÿ”ฅ. This document calls that case a "Unique VLAN EVPN" and describes simplified procedures to optimize for it โœจ.


5. Ethernet Segment

As indicated in [RFC7209], each Ethernet segment needs a unique identifier in an EVPN ๐ŸŽ€. This section defines how those identifiers are assigned and how they're encoded for EVPN signaling. Later sections of this document describe the protocol mechanisms that use the identifiers ๐Ÿ’–.

When a customer site is connected to one or more PEs via a set of Ethernet links, that set of Ethernet links constitutes an "Ethernet segment" ๐ŸŒˆ. For a multihomed site, each Ethernet segment (ES) is identified by a unique non-zero identifier called an Ethernet Segment Identifier (ESI) ๐Ÿงš. An ESI is encoded as a 10-octet integer in line format, with the most significant octet sent first. Two ESI values are reserved:

  • ESI 0 denotes a single-homed site.
  • ESI {0xFF} (repeated 10 times) is known as MAX-ESI and is reserved.

In general, an Ethernet segment SHOULD have a non-reserved ESI that is unique network wide (i.e., across all EVPN instances on all the PEs) ๐Ÿ’…. If the CE(s) constituting an Ethernet segment are managed by the network operator, then ESI uniqueness should be guaranteed ๐Ÿซถ. However, if the CE(s) are not managed, then the operator MUST configure a network-wide unique ESI for that Ethernet segment ๐Ÿ”ฅ. This is required to enable auto-discovery of Ethernet segments and Designated Forwarder (DF) election ๐Ÿ‘‘.

In a network with managed and non-managed CEs, the ESI has the following format ๐Ÿฆ‹:

           +---+---+---+---+---+---+---+---+---+---+
           | T |          ESI Value                |
           +---+---+---+---+---+---+---+---+---+---+

Where:

T (ESI Type) is a 1-octet field (most significant octet) that specifies the format of the remaining 9 octets (ESI Value). Six ESI types can be used ๐Ÿ’œ:

  • Type 0 (T=0x00) - This type indicates an arbitrary 9-octet ESI value, which is managed and configured by the operator ๐ŸŒธ.
  • Type 1 (T=0x01) - When IEEE 802.1AX LACP is used between the PEs and CEs, this ESI type indicates an auto-generated ESI value determined from LACP by concatenating the following parameters โœจ:
    • CE LACP System MAC address (6 octets). The CE LACP System MAC address MUST be encoded in the high-order 6 octets of the ESI Value field.
    • CE LACP Port Key (2 octets). The CE LACP port key MUST be encoded in the 2 octets next to the System MAC address.
    • The remaining octet will be set to 0x00.

As far as the CE is concerned, it treats the multiple PEs it's connected to as the same switch ๐Ÿงš. That lets the CE aggregate links attached to different PEs into the same bundle ๐Ÿ’–.

This mechanism could be used only if it produces ESIs that satisfy the uniqueness requirement specified above ๐Ÿ™ˆ.

  • Type 2 (T=0x02) - This type is used for indirectly connected hosts via a bridged LAN between the CEs and the PEs ๐ŸŒˆ. The ESI Value is auto-generated and determined based on the Layer 2 bridge protocol, as follows. If the Multiple Spanning Tree Protocol (MSTP) is used in the bridged LAN, the value of the ESI is derived by listening to Bridge PDUs (BPDUs) on the Ethernet segment ๐ŸŽ€. To achieve this, the PE is not required to run MSTP. However, the PE must learn the Root Bridge MAC address and Bridge Priority of the root of the Internal Spanning Tree (IST) by listening to the BPDUs ๐Ÿ‘‘. The ESI Value is constructed as follows:
    • Root Bridge MAC address (6 octets). The Root Bridge MAC address MUST be encoded in the high-order 6 octets of the ESI Value field.
    • Root Bridge Priority (2 octets). The CE Root Bridge Priority MUST be encoded in the 2 octets next to the Root Bridge MAC address.
    • The remaining octet will be set to 0x00.

This mechanism could be used only if it produces ESIs that satisfy the uniqueness requirement specified above ๐Ÿ’….

  • Type 3 (T=0x03) - This type indicates a MAC-based ESI Value that can be auto-generated or configured by the operator โญ. The ESI Value is constructed as follows:
    • System MAC address (6 octets). The PE MAC address MUST be encoded in the high-order 6 octets of the ESI Value field.
    • Local Discriminator value (3 octets). The Local Discriminator value MUST be encoded in the low-order 3 octets of the ESI Value.

This mechanism could be used only if it produces ESIs that satisfy the uniqueness requirement specified above ๐Ÿฆ‹.

  • Type 4 (T=0x04) - This type indicates a router-ID ESI Value that can be auto-generated or configured by the operator ๐ŸŒธ. The ESI Value is constructed as follows:
    • Router ID (4 octets). The system router ID MUST be encoded in the high-order 4 octets of the ESI Value field.
    • Local Discriminator value (4 octets). The Local Discriminator value MUST be encoded in the 4 octets next to the IP address.
    • The low-order octet of the ESI Value will be set to 0x00.

This mechanism could be used only if it produces ESIs that satisfy the uniqueness requirement specified above ๐Ÿซถ.

  • Type 5 (T=0x05) - This type indicates an Autonomous System (AS)-based ESI Value that can be auto-generated or configured by the operator ๐ŸŒˆ. The ESI Value is constructed as follows:
    • AS number (4 octets). This is an AS number owned by the system and MUST be encoded in the high-order 4 octets of the ESI Value field. If a 2-octet AS number is used, the high-order extra 2 octets will be 0x0000.
    • Local Discriminator value (4 octets). The Local Discriminator value MUST be encoded in the 4 octets next to the AS number.
    • The low-order octet of the ESI Value will be set to 0x00.

This mechanism could be used only if it produces ESIs that satisfy the uniqueness requirement specified above โœจ.


6. Ethernet Tag ID

An Ethernet Tag ID is a 32-bit field containing either a 12-bit or 24-bit identifier that identifies a particular broadcast domain (e.g., a VLAN) in an EVPN instance ๐ŸŽ€. The 12-bit identifier is called the VLAN ID (VID) ๐Ÿ’–. An EVPN instance consists of one or more broadcast domains (one or more VLANs) ๐Ÿงš. The provider of the EVPN service assigns VLANs to a given EVPN instance ๐Ÿ‘‘. A given VLAN can itself be represented by multiple VIDs. In that case, the PEs participating in that VLAN for a given EVPN instance are responsible for performing VLAN ID translation to/from locally attached CE devices ๐ŸŒธ.

If a VLAN is represented by a single VID across all PE devices participating in that VLAN for that EVPN instance, then there's no need for VID translation at the PEs ๐Ÿฆ‹. Some deployment scenarios also guarantee VID uniqueness across all EVPN instances: all points of attachment for a given EVPN instance use the same VID, and no other EVPN instances use that VID ๐Ÿ”ฅ. This lets the RT(s) for each EVPN instance be derived automatically from the corresponding VID, as described in Section 7.10.1 ๐Ÿ’….

The following subsections discuss the relationship between broadcast domains (e.g., VLANs), Ethernet Tag IDs (e.g., VIDs), and MAC-VRFs, as well as how the Ethernet Tag ID is set in the various EVPN BGP routes (defined in Section 8) for the different types of service interfaces described in [RFC7209] ๐ŸŒˆ.

The following Ethernet Tag ID value is reserved:

  • Ethernet Tag ID {0xFFFFFFFF} is known as MAX-ET. โญ

6.1. VLAN-Based Service Interface โœจ

Okay so with this service interface, an EVPN instance is just one broadcast domain (think a single VLAN) ๐ŸŽ€. That means there's a one-to-one mapping between a VID on this interface and a MAC-VRF. Since a MAC-VRF is tied to a single VLAN, it has exactly one bridge table for that VLAN ๐Ÿ’…. If the VLAN is represented by multiple VIDs (like a different VID per Ethernet segment per PE), then each PE needs to do VID translation for frames heading to its Ethernet segment(s) ๐Ÿฆ‹. In those cases, the Ethernet frames riding over the MPLS/IP network SHOULD stay tagged with the originating VID, and VID translation MUST be supported in the data path and MUST be performed on the disposition PE. The Ethernet Tag ID in all EVPN routes MUST be set to 0. ๐ŸŒธ

6.2. VLAN Bundle Service Interface ๐ŸŒˆ

With this service interface, an EVPN instance corresponds to multiple broadcast domains (like multiple VLANs), but only a single bridge table is kept per MAC-VRF. That means multiple VLANs share the same bridge table ๐Ÿ‘ฏ. This implies that MAC addresses MUST be unique across all VLANs for that EVI in order for this service to work. In other words, it's a many-to-one mapping between VLANs and a MAC-VRF, and the MAC-VRF has a single bridge table. Also, a single VLAN has to be represented by a single VID, so no VID translation is allowed for this service interface type ๐Ÿ™…. The MPLS-encapsulated frames MUST remain tagged with the originating VID. Tag translation is NOT permitted. The Ethernet Tag ID in all EVPN routes MUST be set to 0. ๐Ÿ’œ

6.2.1. Port-Based Service Interface ๐Ÿ“

This service interface is a special case of the VLAN bundle service interface, where all of the VLANs on the port are part of the same service and map to the same bundle. The procedures are identical to those described in Section 6.2. It's giving copy-paste energy, but make it make sense ๐Ÿ’€.

6.3. VLAN-Aware Bundle Service Interface ๐Ÿ‘‘

With this service interface, an EVPN instance consists of multiple broadcast domains (like multiple VLANs), with each VLAN having its own bridge table. So, multiple bridge tables (one per VLAN) are maintained by a single MAC-VRF corresponding to the EVPN instance. Main character energy ๐Ÿงš.

Broadcast, unknown unicast, or multicast (BUM) traffic is sent only to the CEs in a given broadcast domain. However, the broadcast domains within an EVI either MAY each have their own P-Tunnel or MAY share P-Tunnels. For example, all of the broadcast domains in an EVI MAY share a single P-Tunnel โœจ.

In the case where a single VLAN is represented by a single VID and thus no VID translation is required, an MPLS-encapsulated packet MUST carry that VID. The Ethernet Tag ID in all EVPN routes MUST be set to that VID. The advertising PE MAY advertise the MPLS Label1 in the MAC/IP Advertisement route representing ONLY the EVI, or representing both the Ethernet Tag ID and the EVI. This decision is only a local matter for the advertising PE (which is also the disposition PE) and doesn't affect any other PEs ๐Ÿซถ.

In the case where a single VLAN is represented by different VIDs on different CEs and thus VID translation is required, a normalized Ethernet Tag ID (VID) MUST be carried in the EVPN BGP routes. Furthermore, the advertising PE advertises the MPLS Label1 in the MAC/IP Advertisement route representing both the Ethernet Tag ID and the EVI. That way, when it receives an MPLS-encapsulated packet, it can identify the corresponding bridge table from the MPLS EVPN label and perform Ethernet Tag ID translation ONLY at the disposition PE. In other words, the Ethernet frames transported over the MPLS/IP network MUST remain tagged with the originating VID, and VID translation is performed on the disposition PE. The Ethernet Tag ID in all EVPN routes MUST be set to the normalized Ethernet Tag ID assigned by the EVPN provider ๐Ÿ”ฅ.

6.3.1. Port-Based VLAN-Aware Service Interface ๐Ÿฆ‹

This service interface is a special case of the VLAN-aware bundle service interface, where all of the VLANs on the port are part of the same service and are mapped to a single bundle, but without any VID translation. The procedures are a subset of those described in Section 6.3. Less moving parts, more vibes ๐ŸŒธ.


7. BGP EVPN Routes ๐Ÿ’–

This document defines a new BGP Network Layer Reachability Information (NLRI) called the EVPN NLRI. Bestie, this is the big one ๐Ÿ˜ญ.

The format of the EVPN NLRI is as follows:

             +-----------------------------------+
             |    Route Type (1 octet)           |
             +-----------------------------------+
             |     Length (1 octet)              |
             +-----------------------------------+
             | Route Type specific (variable)    |
             +-----------------------------------+

The Route Type field defines the encoding of the rest of the EVPN NLRI (Route Type specific EVPN NLRI).

The Length field indicates the length in octets of the Route Type specific field of the EVPN NLRI.

This document defines the following Route Types:

  • 1 - Ethernet Auto-Discovery (A-D) route
  • 2 - MAC/IP Advertisement route
  • 3 - Inclusive Multicast Ethernet Tag route
  • 4 - Ethernet Segment route

The detailed encoding and procedures for these route types are described in subsequent sections. Keep reading, it gets good ๐Ÿ‘€.

The EVPN NLRI is carried in BGP [RFC4271] using BGP Multiprotocol Extensions [RFC4760], with an Address Family Identifier (AFI) of 25 (L2VPN) and a Subsequent Address Family Identifier (SAFI) of 70 (EVPN). The NLRI field in the MP_REACH_NLRI/MP_UNREACH_NLRI attribute contains the EVPN NLRI (encoded as specified above) ๐Ÿงš.

In order for two BGP speakers to exchange labeled EVPN NLRI, they must use BGP Capabilities Advertisements to ensure that they both are capable of properly processing such NLRI. This is done as specified in [RFC4760], by using capability code 1 (multiprotocol BGP) with an AFI of 25 (L2VPN) and a SAFI of 70 (EVPN). Capability check, no cap ๐Ÿงข.

7.1. Ethernet Auto-discovery Route ๐ŸŽ€

An Ethernet A-D route type specific EVPN NLRI consists of the following:

            +---------------------------------------+
            |  Route Distinguisher (RD) (8 octets)  |
            +---------------------------------------+
            |Ethernet Segment Identifier (10 octets)|
            +---------------------------------------+
            |  Ethernet Tag ID (4 octets)           |
            +---------------------------------------+
            |  MPLS Label (3 octets)                |
            +---------------------------------------+

For the purpose of BGP route key processing, only the Ethernet Segment Identifier and the Ethernet Tag ID are considered to be part of the prefix in the NLRI. The MPLS Label field is to be treated as a route attribute, as opposed to being part of the route. Lowkey a plot twist ๐Ÿ™ˆ.

For procedures and usage of this route, please see Sections 8.2 ("Fast Convergence") and 8.4 ("Aliasing and Backup Path") ๐Ÿ’….

7.2. MAC/IP Advertisement Route ๐Ÿ’œ

A MAC/IP Advertisement route type specific EVPN NLRI consists of the following:

            +---------------------------------------+
            |  RD (8 octets)                        |
            +---------------------------------------+
            |Ethernet Segment Identifier (10 octets)|
            +---------------------------------------+
            |  Ethernet Tag ID (4 octets)           |
            +---------------------------------------+
            |  MAC Address Length (1 octet)         |
            +---------------------------------------+
            |  MAC Address (6 octets)               |
            +---------------------------------------+
            |  IP Address Length (1 octet)          |
            +---------------------------------------+
            |  IP Address (0, 4, or 16 octets)      |
            +---------------------------------------+
            |  MPLS Label1 (3 octets)               |
            +---------------------------------------+
            |  MPLS Label2 (0 or 3 octets)          |
            +---------------------------------------+

For the purpose of BGP route key processing, only the Ethernet Tag ID, MAC Address Length, MAC Address, IP Address Length, and IP Address fields are considered to be part of the prefix in the NLRI. The Ethernet Segment Identifier, MPLS Label1, and MPLS Label2 fields are to be treated as route attributes, as opposed to being part of the "route". Both the IP and MAC address lengths are in bits ๐ŸŒˆ.

For procedures and usage of this route, please see Sections 9 ("Determining Reachability to Unicast MAC Addresses") and 14 ("Load Balancing of Unicast Packets") ๐Ÿ“.

7.3. Inclusive Multicast Ethernet Tag Route ๐Ÿงš

An Inclusive Multicast Ethernet Tag route type specific EVPN NLRI consists of the following:

           +---------------------------------------+
           |  RD (8 octets)                        |
           +---------------------------------------+
           |  Ethernet Tag ID (4 octets)           |
           +---------------------------------------+
           |  IP Address Length (1 octet)          |
           +---------------------------------------+
           |  Originating Router's IP Address      |
           |          (4 or 16 octets)             |
           +---------------------------------------+

For procedures and usage of this route, please see Sections 11 ("Handling of Multi-destination Traffic"), 12 ("Processing of Unknown Unicast Packets"), and 16 ("Multicast and Broadcast"). The IP address length is in bits. For the purpose of BGP route key processing, only the Ethernet Tag ID, IP Address Length, and Originating Router's IP Address fields are considered to be part of the prefix in the NLRI ๐Ÿฆ‹.

7.4. Ethernet Segment Route ๐Ÿ‘‘

An Ethernet Segment route type specific EVPN NLRI consists of the following:

           +---------------------------------------+
           |  RD (8 octets)                        |
           +---------------------------------------+
           |Ethernet Segment Identifier (10 octets)|
           +---------------------------------------+
           |  IP Address Length (1 octet)          |
           +---------------------------------------+
           |  Originating Router's IP Address      |
           |          (4 or 16 octets)             |
           +---------------------------------------+

For procedures and usage of this route, please see Section 8.5 ("Designated Forwarder Election"). The IP address length is in bits. For the purpose of BGP route key processing, only the Ethernet Segment ID, IP Address Length, and Originating Router's IP Address fields are considered to be part of the prefix in the NLRI ๐ŸŒธ.

7.5. ESI Label Extended Community

okay bestie, this one is a brand-new transitive Extended Community ๐Ÿ’– with a Type field of 0x06 and Sub-Type 0x01. It can ride along with Ethernet Auto-discovery routes, and its whole job is to enable split-horizon procedures for multihomed sites (see Section 8.3 ("Split Horizon")) ๐Ÿฆ‹. The ESI Label field stands for an ES as seen by the advertising PE, and the other PEs plugged into that same multihomed Ethernet segment use it for split-horizon filtering โœจ.

Each ESI Label extended community is an 8-octet value, laid out like this:

  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=0x01 | Flags(1 octet)|  Reserved=0   |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  Reserved=0   |          ESI Label                            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The low-order bit of the Flags octet is the "Single-Active" bit ๐Ÿ”ฅ. A value of 0 means the multihomed site is running in All-Active redundancy mode, and a value of 1 means it's running in Single-Active redundancy mode ๐Ÿ’….

7.6. ES-Import Route Target

this is a brand-new transitive Route Target extended community that rides with the Ethernet Segment route ๐ŸŽ€. When it's used, every PE connected to the same multihomed site can import the Ethernet Segment routes ๐Ÿ‘‘. For ESI Types 1, 2, and 3, the value is derived automatically: you take the high-order 6-octet portion of the 9-octet ESI Value (the bit that corresponds to a MAC address) and encode it into the ES-Import Route Target ๐Ÿงš. The format looks like this:

  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=0x02 |          ES-Import            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                     ES-Import Cont'd                          |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

this document expands the Route Target extended community so its high-order octet (the Type field) can be 0x06, on top of the values already in [RFC4360] ๐ŸŒธ. The low-order octet (Sub-Type field) value 0x02 tells you this extended community is of type "Route Target" ๐Ÿ’œ. The new Type value 0x06 tells you the RT is a 6-octet value (like a MAC address, for example) ๐Ÿฆ‹. A BGP speaker that implements RT Constraint [RFC4684] MUST apply the RT Constraint procedures to the ES-Import RT as well ๐Ÿ”ฅ.

for the procedures and how this attribute is actually used, check out Section 8.1 ("Multihomed Ethernet Segment Auto-discovery") ๐Ÿซถ.

7.7. MAC Mobility Extended Community

this is a brand-new transitive Extended Community with a Type field of 0x06 and Sub-Type 0x00 โœจ. It can be advertised alongside MAC/IP Advertisement routes, and the procedures for using it live in Section 15 ("MAC Mobility") ๐ŸŒˆ.

The MAC Mobility extended community is an 8-octet value laid out like so:

  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=0x00 |Flags(1 octet)|  Reserved=0    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                       Sequence Number                         |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

the low-order bit of the Flags octet is the "Sticky/static" flag, and it may be set to 1 ๐ŸŽ€. A value of 1 means the MAC address is static and cannot move ๐Ÿ™ˆ. The sequence number is what keeps PEs holding the correct MAC/IP Advertisement route when the same MAC address gets updated multiple times ๐Ÿ’….

7.8. Default Gateway Extended Community

the Default Gateway community is an Extended Community of an Opaque Type (see Section 3.3 of [RFC4360]) ๐Ÿงš. It's transitive, which means the first octet is 0x03 ๐Ÿ’–. The second octet (Sub-Type) is 0x0d (Default Gateway), as assigned by IANA โœจ. The Value field is reserved: senders set it to 0 and receivers ignore it ๐ŸŒธ. For the procedures and usage, see Section 10.1 ("Default Gateway") ๐Ÿ‘‘.

7.9. Route Distinguisher Assignment per MAC-VRF

okay this part is important ๐Ÿ˜ญ. The Route Distinguisher (RD) MUST be set to the RD of the MAC-VRF that is advertising the NLRI ๐Ÿ”ฅ. An RD MUST be assigned for a given MAC-VRF on a PE, and this RD MUST be unique across all MAC-VRFs on that PE ๐Ÿ’…. It is RECOMMENDED to use the Type 1 RD [RFC4364] ๐Ÿฆ‹. The value field is made of an IP address of the PE (usually the loopback address), followed by a number that's unique to the PE ๐Ÿซถ. That number may be generated by the PE ๐ŸŒˆ. Or, in the Unique VLAN EVPN case, the low-order 12 bits can be the 12-bit VLAN ID, with the remaining high-order 4 bits set to 0 ๐Ÿ“.

7.10. Route Targets

the EVPN route MAY carry one or more Route Target (RT) attributes ๐ŸŽ€. RTs can be configured (just like in IP VPNs) or derived automatically โœจ.

If a PE uses RT Constraint, it advertises all of those RTs using RT Constraints per [RFC4684] ๐Ÿ’œ. That's what lets each EVPN route reach only the PEs configured to import at least one RT from the set carried in that route ๐Ÿ‘‘.

7.10.1. Auto-derivation from the Ethernet Tag ID

for the "Unique VLAN EVPN" scenario, auto-deriving the RT from the Ethernet Tag ID (VLAN ID) for that EVPN instance is highly desirable ๐Ÿ˜. Here's how that auto-derivation works:

  • The Global Administrator field of the RT MUST be set to the Autonomous System (AS) number the PE is associated with ๐Ÿ”ฅ.
  • The 12-bit VLAN ID MUST be encoded in the lowest 12 bits of the Local Administrator field, with the remaining bits set to zero ๐Ÿงš.

8. Multihoming Functions ๐ŸŒธ

this section is all about the functions, procedures, and BGP routes that support multihoming in EVPN ๐Ÿ’–. It covers both multihomed device (MHD) and multihomed network (MHN) scenarios ๐Ÿฆ‹.

8.1. Multihomed Ethernet Segment Auto-discovery

PEs connected to the same Ethernet segment can find each other automatically, with minimal to zero configuration, just by swapping the Ethernet Segment route โœจ๐Ÿซถ.

8.1.1. Constructing the Ethernet Segment Route

the Route Distinguisher (RD) MUST be a Type 1 RD [RFC4364] ๐Ÿ’…. The value field is an IP address of the PE (usually the loopback address), followed by a number unique to the PE ๐ŸŒˆ.

The Ethernet Segment Identifier (ESI) MUST be set to the 10-octet value described in Section 5 ๐Ÿ”ฅ.

The BGP advertisement that carries the Ethernet Segment route MUST also carry an ES-Import Route Target, as defined in Section 7.6 ๐Ÿ‘‘.

The Ethernet Segment route filtering MUST be done so that the route is imported only by PEs multihomed to the same Ethernet segment ๐Ÿ™ˆ. To make that happen, each PE connected to a given Ethernet segment builds an import filtering rule that imports any route carrying the ES-Import Route Target constructed from the ESI ๐Ÿ’œ.

8.2. Fast Convergence

in EVPN, MAC address reachability is learned through the BGP control plane over the MPLS network ๐Ÿงš. So without any fast protection mechanism, convergence time depends on how many MAC/IP Advertisement routes the PE hitting a failure has to withdraw ๐Ÿ˜ญ. In highly scaled environments, that gets slow ๐Ÿข.

to fix this, EVPN defines a mechanism that quickly and efficiently signals remote PEs to update their forwarding tables when connectivity to an Ethernet segment fails ๐Ÿ”ฅ. Each PE advertises a set of one or more Ethernet A-D per ES routes for every locally attached Ethernet segment (see Section 8.2.1 below for how those routes are built) ๐ŸŽ€. A PE might need more than one Ethernet A-D per ES route for a given ES, since the ES can sit in many EVIs and the RTs for all of them might not fit into one route ๐Ÿซถ. Advertising a set of routes lets each one carry a subset of the full RT list ๐Ÿ’…. Each Ethernet A-D per ES route is told apart from the others in the set by its own Route Distinguisher (RD) ๐ŸŒˆ.

When connectivity to the attached segment fails, the PE withdraws its corresponding set of Ethernet A-D per ES routes โœจ. That triggers every PE that gets the withdrawal to update its next-hop adjacencies for all MAC addresses tied to that Ethernet segment ๐Ÿ‘‘. If no other PE advertised an Ethernet A-D route for the same segment, the PE that got the withdrawal just invalidates the MAC entries for that segment ๐Ÿ’€. Otherwise, it updates its next-hop adjacencies accordingly ๐Ÿ’–.

8.2.1. Constructing Ethernet A-D per Ethernet Segment Route

this section walks through how to build the Ethernet A-D per ES route, which powers fast convergence (as we just covered) and advertises the ESI label used for split-horizon filtering (see Section 8.3) ๐Ÿงš. Supporting this route is REQUIRED ๐Ÿ”ฅ.

The Route Distinguisher (RD) MUST be a Type 1 RD [RFC4364] ๐Ÿ’…. The value field is an IP address of the PE (usually the loopback address), followed by a number unique to the PE ๐ŸŒธ.

The Ethernet Segment Identifier MUST be a 10-octet entity as described in Section 5 ("Ethernet Segment") ๐Ÿฆ‹. The Ethernet A-D route isn't needed when the Segment Identifier is set to 0 (for example, in single-homed scenarios) ๐Ÿ™ˆ.

The Ethernet Tag ID MUST be set to MAX-ET ๐ŸŽ€.

The MPLS label in the NLRI MUST be set to 0 โœจ.

The ESI Label extended community MUST be included in the route ๐Ÿซถ. If All-Active redundancy mode is wanted, the "Single-Active" bit in the flags of the ESI Label extended community MUST be set to 0, and the MPLS label in that Extended Community MUST be set to a valid MPLS label value ๐Ÿ’œ. The MPLS label in this Extended Community is called the ESI label, and it MUST have the same value in each Ethernet A-D per ES route advertised for the ES ๐Ÿ‘‘. This label MUST be a downstream assigned MPLS label if the advertising PE uses ingress replication to receive multicast, broadcast, or unknown unicast traffic from other PEs ๐Ÿ”ฅ. If the advertising PE uses P2MP MPLS LSPs to send multicast, broadcast, or unknown unicast traffic, then this label MUST be an upstream assigned MPLS label ๐ŸŒˆ. How this label gets used is described in Section 8.3 ๐Ÿ’….

If Single-Active redundancy mode is wanted, the "Single-Active" bit in the flags of the ESI Label extended community MUST be set to 1, and the ESI label SHOULD be set to a valid MPLS label value ๐Ÿฆ‹.

8.2.1.1. Ethernet A-D Route Targets

each Ethernet A-D per ES route MUST carry one or more Route Target (RT) attributes ๐ŸŽ€. The full set of Ethernet A-D routes per ES MUST carry the entire set of RTs for all the EVPN instances the Ethernet segment belongs to ๐Ÿ˜ญ๐Ÿ’–.

8.3. Split Horizon โœจ

Okay bestie, picture this: a CE is multihomed to two or more PEs on an Ethernet segment ES1 running All-Active redundancy mode ๐Ÿ’…. If the CE sends a broadcast, unknown unicast, or multicast (BUM) packet to one of the non-Designated Forwarder (non-DF) PEs, let's call it PE1, then PE1 forwards that packet to all or a subset of the other PEs in that EVPN instance, including the DF PE for that Ethernet segment. In this case, the DF PE the CE is multihomed to MUST drop the packet and not forward it back to the CE ๐Ÿšซ. This filtering is what we call "split-horizon filtering" in this doc ๐Ÿซถ.

When a set of PEs is in Single-Active redundancy mode, using this split-horizon filtering is highly recommended ๐Ÿ™Œ. It stops transient loops during a failure or recovery that would mess up the Ethernet segment, like when two PEs both think they're the DF before the DF election procedure settles down ๐Ÿ˜ตโ€๐Ÿ’ซ.

To make split horizon work, every BUM packet coming from a non-DF PE gets encapsulated with an MPLS label that identifies the Ethernet segment it originally entered the EVPN network on. That's the ESI label ๐Ÿท๏ธ. It MUST be distributed by all PEs in All-Active mode, using a set of Ethernet A-D per ES routes (see Section 8.2.1 above). The ESI label SHOULD be distributed by all PEs in Single-Active mode using that same set of routes. These routes get imported by the PEs connected to the Ethernet segment, and also by the PEs that share at least one EVPN instance with the segment in the route. As described in Section 8.1.1, the route MUST carry an ESI Label extended community with a valid ESI label. The disposition PE uses the value of the ESI label to decide whether or not a BUM frame is allowed to egress a specific Ethernet segment ๐Ÿ”.

8.3.1. ESI Label Assignment

The following subsections walk through how the ESI label gets assigned. The procedures are different depending on which tunnel type is used to deliver multi-destination packets across the EVPN network ๐Ÿงš.

8.3.1.1. Ingress Replication

Each PE that operates in All-Active or Single-Active redundancy mode, and that uses ingress replication to receive BUM traffic, advertises a downstream assigned ESI label in the set of Ethernet A-D per ES routes for its attached ES. This label MUST be programmed in the platform label space by the advertising PE. The forwarding entry for this label must result in NOT forwarding packets received with this label onto the Ethernet segment the label was distributed for ๐Ÿ™…โ€โ™€๏ธ.

Here's how the ingress PE includes the ESI label in a BUM packet when it's running All-Active mode:

  • A non-DF ingress PE MUST include the ESI label distributed by the DF egress PE in the copy of a BUM packet sent to it.
  • An ingress PE (DF or non-DF) SHOULD include the ESI label distributed by each non-DF egress PE in the copy of a BUM packet sent to it.

And for Single-Active mode, the rule is a little simpler:

  • An ingress DF PE SHOULD include the ESI label distributed by the egress PE in the copy of a BUM packet sent to it.

In both All-Active and Single-Active mode, an ingress PE MUST NOT include an ESI label in the copy of a BUM packet sent to an egress PE that isn't attached to the ES the BUM packet came in on for the EVI ๐Ÿšท.

Let's run an example, because it's giving clarity ๐Ÿคฉ. Say PE1 and PE2 are both multihomed to CE1 on ES1, running All-Active. PE1 is using P2P or MP2P LSPs to send packets to PE2. PE1 is the non-DF for VLAN1, PE2 is the DF for VLAN1, and PE1 gets a BUM packet from CE1 on VLAN1 on ES1. PE2 has been advertising an Inclusive Multicast Ethernet Tag route for VLAN1 corresponding to an EVPN instance. So when PE1 sends that BUM packet, it MUST first push the ESI label that PE2 distributed for ES1 onto the MPLS label stack. Then it MUST push the MPLS label PE2 distributed in the Inclusive Multicast Ethernet Tag route for VLAN1. The result gets wrapped in whatever P2P or MP2P LSP label stack is needed to get the packet to PE2 ๐Ÿ“ฆ.

When PE2 gets the packet, it looks at the top MPLS label to figure out which set of ESIs to replicate the packet to, once any P2P or MP2P LSP labels are removed. If the next label is the ESI label PE2 assigned to ES1, then PE2 MUST NOT forward the packet onto ES1 ๐Ÿ›‘. If the next label is an ESI label PE2 never assigned, PE2 MUST drop the packet ๐Ÿ—‘๏ธ. Also worth noting: in this scenario, if PE2 receives a BUM packet for VLAN1 from CE1, it SHOULD encapsulate that packet with an ESI label received from PE1 when sending it to PE1. That's how you avoid transient loops during a failure that hits ES1, like a port or link failure ๐Ÿ”Œ.

8.3.1.2. P2MP MPLS LSPs

The non-DF PEs that operate in All-Active mode and use P2MP LSPs to send BUM traffic advertise an upstream assigned ESI label in the set of Ethernet A-D per ES routes for their common attached ES ๐ŸŒธ. The advertising PE is the one that upstream assigns this label. This label MUST be programmed by the other PEs connected to the ESI advertised in the route, in the context label space for the advertising PE. The forwarding entry for this label must result in NOT forwarding packets received with this label onto the Ethernet segment the label was distributed for. This label MUST also be programmed by the other PEs that import the route but aren't connected to the ESI advertised in the route, in the context label space for the advertising PE. For those PEs, the forwarding entry for this label must be a label pop with no other associated action.

The DF PE operating in Single-Active mode that uses P2MP LSPs to send BUM traffic should advertise an upstream assigned ESI label in the set of Ethernet A-D per ES routes for its attached ES, just like we covered in the paragraph above ๐Ÿง.

Now the example, because we love a good example ๐Ÿ’•. Say PE1 and PE2 are multihomed to CE1 on ES1 in All-Active mode. PE3 belongs to one of the EVPN instances of ES1. PE1 is the non-DF, and it's using P2MP MPLS LSPs to send BUM packets. When PE1 sends a BUM packet it got from CE1, it MUST first push the ESI label it assigned to the ESI the packet came in on. The result is wrapped in whatever P2MP MPLS label stack is needed to reach the other PEs. Penultimate hop popping MUST be disabled on the P2MP LSPs used in the MPLS transport infrastructure for EVPN โš ๏ธ.

When PE2 gets this packet, it decapsulates the top MPLS label and forwards the packet using the context label space determined by that top label. If the next label is the ESI label PE1 assigned to ES1, then PE2 MUST NOT forward the packet onto ES1 ๐Ÿ™…. When PE3 gets this packet, it does the same thing: decapsulates the top MPLS label and forwards using the context label space determined by it. If the next label is the ESI label PE1 assigned to ES1 and PE3 isn't connected to ES1, then PE3 MUST pop the label and flood the packet over all local ESIs in that EVPN instance ๐ŸŒŠ. One more thing: even though PE2 is the DF for that VLAN, when it sends a BUM frame over a P2MP LSP, it should still encapsulate the frame with an ESI label. That's how you dodge transient loops during a failure that hits ES1, like a port or link failure ๐Ÿ’œ.

8.4. Aliasing and Backup Path

Picture a CE that's multihomed to multiple PE nodes using a Link Aggregation Group (LAG) with All-Active redundancy ๐Ÿ‘ฏ. It's possible that only one single PE learns a set of the MAC addresses tied to the traffic the CE sends. So remote PE nodes only get MAC/IP Advertisement routes for those addresses from that one PE, even though several PEs are connected to the multihomed segment ๐Ÿ˜ฌ. The result? The remote PEs can't load balance traffic effectively across the PE nodes on that Ethernet segment. This could happen, for example, when the PEs do data-plane learning on the access, and the CE's load-balancing function hashes traffic from a given source MAC address to a single PE.

Another case where this happens is when the PEs rely on control-plane learning on the access (for example, using ARP). That's because ARP traffic gets hashed to a single link in the LAG ๐Ÿ”—.

To fix this, EVPN introduces the idea of "aliasing" โœจ. Aliasing is when a PE signals that it can reach an EVPN instance on a given ES, even if it hasn't learned any MAC addresses from that EVI/ES. The Ethernet A-D per EVI route is used for this purpose ๐Ÿฆ‹. A remote PE that receives a MAC/IP Advertisement route with a non-reserved ESI SHOULD consider the advertised MAC address reachable via all the PEs that advertised reachability to that MAC address's EVI/ES. They do this through the combination of an Ethernet A-D per EVI route for that EVI/ES (and Ethernet tag, if applicable) AND Ethernet A-D per ES routes for that ES, with the "Single-Active" bit in the flags of the ESI Label extended community set to 0 ๐ŸŒˆ.

Heads up though: a remote PE might get the Ethernet A-D per EVI route before it gets the set of Ethernet A-D per ES routes ๐Ÿ™ˆ. So to handle those corner cases and race conditions, the Ethernet A-D per EVI route MUST NOT be used for traffic forwarding by a remote PE until it also receives the associated set of Ethernet A-D per ES routes โณ.

The backup path is closely related, but it's used in Single-Active redundancy mode ๐Ÿ›Ÿ. Here, a PE also advertises that it can reach a given EVI/ES, using the same combo of Ethernet A-D per EVI and Ethernet A-D per ES routes as before. The difference is that the "Single-Active" bit in the flags of the ESI Label extended community is set to 1. A remote PE that receives a MAC/IP Advertisement route with a non-reserved ESI SHOULD consider the advertised MAC address reachable via any PE that advertised this combination of Ethernet A-D routes. It SHOULD also install a backup path for that MAC address ๐Ÿ’–.

8.4.1. Constructing Ethernet A-D per EVPN Instance Route ๐Ÿฆ‹

okay so this part is all about building the Ethernet A-D per EVPN instance (EVI) route ๐Ÿ’…, the one that does the aliasing thing we just talked about ๐Ÿซถ. Supporting this route is OPTIONAL, so no pressure ๐Ÿ’–

The Route Distinguisher (RD) MUST be set per Section 7.9 ๐ŸŽ€.

The Ethernet Segment Identifier MUST be a 10-octet entity, same vibe as Section 5 ("Ethernet Segment") ๐ŸŒธ. If the Segment Identifier is set to 0, you don't need the Ethernet A-D route at all ๐Ÿ™ˆ

The Ethernet Tag ID is the ID of an Ethernet tag on the Ethernet segment โœจ. It can be a 12-bit VLAN ID, in which case the low-order 12 bits hold the VLAN ID and the high-order 20 bits are set to 0. Or it can be some other Ethernet tag the EVPN uses. It MAY be set to the default Ethernet tag on the Ethernet segment, or to the value 0 ๐Ÿ’œ

Note that the above lets the Ethernet A-D route show up at one of two granularities, so pick your fighter ๐Ÿ‘‘:

  • One Ethernet A-D route per <ESI, Ethernet Tag ID> tuple per MAC-VRF. This is the move when the PE uses MPLS-based disposition with VID translation, and it could also apply when the PE uses MAC-based disposition with VID translation.
  • One Ethernet A-D route for each <ESI> per MAC-VRF (where the Ethernet Tag ID is set to 0). This is the move when the PE uses MAC-based disposition, or MPLS-based disposition without VID translation.

The MPLS label usage is covered in Section 14 ("Load Balancing of Unicast Packets") ๐Ÿงš.

The Next Hop field of the MP_REACH_NLRI attribute of the route MUST be set to the IPv4 or IPv6 address of the advertising PE ๐ŸŒˆ.

The Ethernet A-D route MUST carry one or more Route Target (RT) attributes, per Section 7.10 ๐Ÿ’œ.

8.5. Designated Forwarder Election ๐Ÿ‘‘

picture this: a CE that's a host or a router, multihomed straight to more than one PE in an EVPN instance on a given Ethernet segment ๐Ÿ“. One or more Ethernet tags may be configured on the segment. Only ONE of those PEs, the Designated Forwarder (DF), is in charge of a few things ๐Ÿ‘‘:

  • Sending multicast and broadcast traffic, on a given Ethernet tag on a particular Ethernet segment, to the CE ๐Ÿ“ฃ
  • Flooding unknown unicast traffic (aka traffic where the PE doesn't know the destination MAC address), on a given Ethernet tag on a particular Ethernet segment, to the CE, but only if the environment actually requires flooding unknown unicast ๐Ÿ™ˆ

Heads up: this behaviour, which lets you pick a DF at the granularity of <ES, VLAN> or <ES, VLAN bundle> for multicast, broadcast, and unknown unicast, is the default in this spec ๐Ÿ’….

Also, a CE always sends packets from a specific flow over a single link toward a PE ๐Ÿ”—. Like, if the CE is a host, it treats all the links it uses to reach the PEs as a Link Aggregation Group (LAG), as mentioned earlier. It uses a local hashing function to map traffic flows onto links in the LAG ๐Ÿงš.

If a bridged network is multihomed to more than one PE in an EVPN network via switches, then All-Active redundancy mode requires the bridged network to be connected to two or more PEs using a LAG ๐Ÿซถ.

If a bridged network does not connect to the PEs using a LAG, then only one of the links between the bridged network and the PEs must be the active link for a given <ES, VLAN> or <ES, VLAN bundle> โœจ. In this case, the set of Ethernet A-D per ES routes each PE advertises MUST have the "Single-Active" bit in the flags of the ESI Label extended community set to 1 ๐Ÿ’€.

The default DF election at the granularity of <ES, VLAN> (for VLAN-based service) or <ES, VLAN bundle> (for VLAN-(aware) bundle service) is called "service carving" ๐Ÿ”ช. With service carving you can elect multiple DFs per Ethernet segment, one per VLAN or VLAN bundle, which load balances the multi-destination traffic headed to that segment โš–๏ธ. The carving splits the VLAN space across the PE nodes evenly, so every PE is the DF for a disjoint set of VLANs or VLAN bundles on that ES. Here's how it goes ๐Ÿ‘‡:

  1. When a PE discovers the ESI of the attached Ethernet segment, it advertises an Ethernet Segment route with the associated ES-Import extended community attribute ๐Ÿ“ฃ.
  2. The PE then starts a timer (default value = 3 seconds) so it can hear Ethernet Segment routes from other PE nodes connected to the same Ethernet segment โฒ๏ธ. This timer value should be the same across all PEs connected to the same Ethernet segment.
  3. When the timer expires, each PE builds an ordered list of the IP addresses of all the PE nodes connected to the Ethernet segment (itself included), in increasing numeric value ๐Ÿ“‹. Each IP address in this list is pulled from the "Originating Router's IP address" field of the advertised Ethernet Segment route. Every PE then gets an ordinal for its spot in the list, starting at 0 for the PE with the numerically lowest IP address ๐Ÿ”ข. The ordinals decide which PE node will be the DF for a given EVPN instance on the Ethernet segment, using this rule:

Assuming a redundancy group of N PE nodes, for VLAN-based service, the PE with ordinal i is the DF for an <ES, VLAN V> when (V mod N) = i. In the case of VLAN-(aware) bundle service, then the numerically lowest VLAN value in that bundle on that ES MUST be used in the modulo function.

It should be noted that using the "Originating Router's IP address" field in the Ethernet Segment route to get the PE IP address for the ordered list allows a CE to be multihomed across different ASes, if such a need ever comes up ๐ŸŒ.

  1. The PE elected as DF for a given <ES, VLAN> or <ES, VLAN bundle> unblocks multi-destination traffic for that VLAN or VLAN bundle on the corresponding ES ๐Ÿ”“. Note that the DF PE unblocks multi-destination traffic in the egress direction toward the segment. All non-DF PEs keep dropping multi-destination traffic in the egress direction toward that <ES, VLAN> or <ES, VLAN bundle>.

If a link or port fails, the affected PE withdraws its Ethernet Segment route ๐Ÿ’”. This re-triggers the service carving procedures on all the PEs in the redundancy group. For PE node failure, or upon PE commissioning or decommissioning, the PEs re-trigger the service carving ๐Ÿ”„. In the case of Single-Active multihoming, when a service moves from one PE in the redundancy group to another PE because of re-carving, the PE that ends up being the elected DF for the service SHOULD trigger a MAC address flush notification toward the associated Ethernet segment โœจ. This can be done, for example, using the IEEE 802.1ak Multiple VLAN Registration Protocol (MVRP) 'new' declaration.

8.6. Interoperability with Single-Homing PEs ๐Ÿค

Let's refer to PEs that only support single-homed CE devices as single-homing PEs ๐Ÿ™‹. For single-homing PEs, all the above multihoming procedures can be omitted ๐Ÿ™Œ. However, to let single-homing PEs fully interoperate with multihoming PEs, some of the multihoming procedures described above SHOULD be supported even by single-homing PEs ๐Ÿ’–:

  • procedures related to processing Ethernet A-D routes for the purpose of fast convergence (Section 8.2 ("Fast Convergence")), to let single-homing PEs benefit from fast convergence โšก
  • procedures related to processing Ethernet A-D routes for the purpose of aliasing (Section 8.4 ("Aliasing and Backup Path")), to let single-homing PEs benefit from load balancing โš–๏ธ
  • procedures related to processing Ethernet A-D routes for the purpose of a backup path (Section 8.4 ("Aliasing and Backup Path")), to let single-homing PEs benefit from the corresponding convergence improvement ๐Ÿ›Ÿ

9. Determining Reachability to Unicast MAC Addresses ๐Ÿ“

PEs forward packets they receive based on the destination MAC address ๐ŸŽฏ. This means PEs must be able to learn how to reach a given destination unicast MAC address ๐Ÿ—บ๏ธ.

There are two components to MAC address learning, "local learning" -- and "remote learning" ๐Ÿงฉ:

9.1. Local Learning ๐Ÿ 

A particular PE must be able to learn the MAC addresses from the CEs that are connected to it. This is called local learning ๐Ÿซ .

The PEs in a particular EVPN instance MUST support local data-plane learning using standard IEEE Ethernet learning procedures ๐Ÿ“š. A PE must be capable of learning MAC addresses in the data plane when it receives packets such as the following from the CE network:

  • DHCP requests
  • An ARP Request for its own MAC
  • An ARP Request for a peer

Alternatively, PEs MAY learn the MAC addresses of the CEs in the control plane, or via management-plane integration between the PEs and the CEs ๐ŸŽ›๏ธ.

There are applications where a MAC address that is reachable via a given PE on a locally attached segment (e.g., with ESI X) may move, so it becomes reachable via another PE on another segment (e.g., with ESI Y). This is referred to as "MAC Mobility" ๐Ÿƒโ€โ™€๏ธ๐Ÿ’จ. Procedures to support this are described in Section 15 ("MAC Mobility").

9.2. Remote Learning ๐ŸŒ

A particular PE must be able to determine how to send traffic to MAC addresses that belong to or are behind CEs connected to other PEs, i.e., to remote CEs or hosts behind remote CEs. We call such MAC addresses "remote" MAC addresses ๐Ÿ›ธ.

This document requires a PE to learn remote MAC addresses in the control plane ๐Ÿง . To achieve this, each PE advertises the MAC addresses it learns from its locally attached CEs in the control plane, to all the other PEs in that EVPN instance, using MP-BGP and, specifically, the MAC/IP Advertisement route ๐Ÿ“ก.

9.2.1. Constructing MAC/IP Address Advertisement ๐ŸŽ€

okay so BGP gets extended to advertise these MAC addresses using the MAC/IP Advertisement route type in the EVPN NLRI ๐Ÿ’Œ

the RD MUST be set per Section 7.9, no skipping this one bestie ๐Ÿ’…

the Ethernet Segment Identifier gets set to the 10-octet ESI from Section 5 ("Ethernet Segment") ๐Ÿงš

the Ethernet Tag ID may be zero or may represent a valid Ethernet Tag ID. this field may be non-zero when there are multiple bridge tables in the MAC-VRF (i.e., the PE needs to support VLAN-aware bundle service for that EVI) ๐ŸŒธ

when the Ethernet Tag ID in the NLRI is non-zero for a particular broadcast domain, it can be either the CE's Ethernet tag value (e.g., CE VLAN ID) or the EVPN provider's Ethernet tag value (e.g., provider VLAN ID). the provider version makes sense when the CE Ethernet tags (e.g., CE VLAN ID) for a broadcast domain are different on different CEs. it's giving flexibility ๐Ÿฆ‹

the MAC Address Length field is in bits and is set to 48. MAC address length values other than 48 bits are outside the scope of this document. the encoding of a MAC address MUST be the 6-octet MAC address specified by [802.1Q] and [802.1D-REV] ๐Ÿ”ฅ

the IP Address field is optional ๐Ÿซถ by default, the IP Address Length field is set to 0 and the IP Address field is omitted from the route. when a valid IP address needs to be advertised, it then gets encoded in this route. when an IP address is present, the IP Address Length field is in bits and is set to 32 or 128 bits. other IP Address Length values are outside the scope of this document. the encoding of an IP address MUST be either 4 octets for IPv4 or 16 octets for IPv6. the Length field of the EVPN NLRI (which is in octets and is described in Section 7) is enough to tell whether an IP address is encoded in this route and, if so, whether it's IPv4 or IPv6 ๐Ÿ’–

the MPLS Label1 field is encoded as 3 octets, where the high-order 20 bits contain the label value. the MPLS Label1 MUST be downstream assigned, and it's associated with the MAC address being advertised by the advertising PE. the advertising PE uses this label when it receives an MPLS-encapsulated packet, so it can forward based on the destination MAC address toward the CE. the forwarding procedures are specified in Sections 13 and 14 โœจ

a PE may advertise the same single EVPN label for all MAC addresses in a given MAC-VRF. this is called a per MAC-VRF label assignment. alternatively, a PE may advertise a unique EVPN label per <MAC-VRF, Ethernet tag> combination, which is called a per <MAC-VRF, Ethernet tag> label assignment. as a third option, a PE may advertise a unique EVPN label per <ESI, Ethernet tag> combination, called a per <ESI, Ethernet tag> label assignment. as a fourth option, a PE may advertise a unique EVPN label per MAC address, called a per MAC label assignment. all of these methods have their trade-offs ๐Ÿ‘‘ the choice of a label assignment methodology is purely local to the PE that originates the route, so each PE picks for itself ๐ŸŒˆ

an assignment per MAC-VRF label needs the fewest EVPN labels, but on an egress PE it needs a MAC lookup on top of the MPLS lookup to forward. on the other hand, a unique label per <ESI, Ethernet tag> or a unique label per MAC lets an egress PE forward a packet from another PE straight to the connected CE after only looking up the MPLS labels, no MAC lookup needed. this includes the ability to do the right VLAN ID translation on egress to the CE ๐Ÿ’…

the MPLS Label2 field is optional. if it's present, it's encoded as 3 octets, where the high-order 20 bits contain the label value ๐Ÿ“

the Next Hop field of the MP_REACH_NLRI attribute of the route MUST be set to the IPv4 or IPv6 address of the advertising PE. no cap, this one's non-negotiable ๐Ÿ’€

the BGP advertisement for the MAC/IP Advertisement route MUST also carry one or more Route Target (RT) attributes. RTs may be configured (as in IP VPNs) or may be derived automatically from the Ethernet Tag ID, in the Unique VLAN case, as described in Section 7.10.1 ๐ŸŽ€

it's worth noting that this document does not require PEs to create forwarding state for remote MACs when they're learned in the control plane. when that forwarding state actually gets created is a local implementation matter ๐Ÿงš


9.2.2. Route Resolution ๐Ÿฆ‹

okay so if the Ethernet Segment Identifier field in a received MAC/IP Advertisement route is set to the reserved ESI value of 0 or MAX-ESI, then if the receiving PE decides to install forwarding state for the associated MAC address, it MUST be based on the MAC/IP Advertisement route alone ๐ŸŒธ

if the Ethernet Segment Identifier field in a received MAC/IP Advertisement route is a non-reserved ESI, and the receiving PE is locally attached to that same ESI, then the PE does not alter its forwarding state based on the received route. this makes sure local routes get preferred over remote routes ๐Ÿ‘‘

if the Ethernet Segment Identifier field in a received MAC/IP Advertisement route is a non-reserved ESI, then if the receiving PE decides to install forwarding state for the associated MAC address, it MUST be when both the MAC/IP Advertisement route AND the associated set of Ethernet A-D per ES routes have been received. the dependency of MAC route installation on Ethernet A-D per ES routes makes sure MAC routes don't get accidentally installed during a mass withdraw period. it's giving safety ๐Ÿซถ

let's walk through an example. picture two PEs (PE1 and PE2) connected to a multihomed Ethernet segment ES1. All-Active redundancy mode is assumed. a given MAC address M1 is learned by PE1 but not PE2. on PE3, these states may come up:

T1    When the MAC/IP Advertisement route from PE1 and the set of
      Ethernet A-D per ES routes and Ethernet A-D per EVI routes from
      PE1 and PE2 are received, PE3 can forward traffic destined to
      M1 to both PE1 and PE2.

T2    If after T1 PE1 withdraws its set of Ethernet A-D per ES
      routes, then PE3 forwards traffic destined to M1 to PE2 only.

T2'   If after T1 PE2 withdraws its set of Ethernet A-D per ES
      routes, then PE3 forwards traffic destined to M1 to PE1 only.

T2''  If after T1 PE1 withdraws its MAC/IP Advertisement route, then
      PE3 treats traffic to M1 as unknown unicast.

T3    PE2 also advertises a MAC route for M1, and then PE1 withdraws
      its MAC route for M1.  PE3 continues forwarding traffic
      destined to M1 to both PE1 and PE2.  In other words, despite M1
      withdrawal by PE1, PE3 forwards the traffic destined to M1 to
      both PE1 and PE2.  This is because a flow from the CE,
      resulting in M1 traffic getting hashed to PE1, can get
      terminated, resulting in M1 being aged out in PE1; however, M1
      can be reachable by both PE1 and PE2.

๐Ÿ™ˆ T3 is the plot twist. even after PE1 withdraws its MAC route, PE3 keeps sending M1 traffic to both PEs, because the flow hashed to PE1 can end and make M1 age out there while M1 is still reachable through both PE1 and PE2 ๐Ÿ˜ญ


10. ARP and ND ๐Ÿฆ‹

the IP Address field in the MAC/IP Advertisement route may optionally carry one of the IP addresses associated with the MAC address. this is an option that helps minimize flooding of ARP or Neighbor Discovery (ND) messages over the MPLS network and to remote CEs. it also minimizes ARP (or ND) message processing on end-stations/hosts connected to the EVPN network ๐Ÿงš a PE may learn the IP address associated with a MAC address in the control or management plane between the CE and the PE. or it may learn this binding by snooping certain messages to or from a CE. when a PE learns the IP address associated with the MAC address of a locally connected CE, it may advertise this address to other PEs by including it in the MAC/IP Advertisement route. the IP address may be an IPv4 address encoded using 4 octets or an IPv6 address encoded using 16 octets. for ARP and ND purposes, the IP Address Length field MUST be set to 32 for an IPv4 address or 128 for an IPv6 address ๐ŸŒˆ

if there are multiple IP addresses associated with a MAC address, then multiple MAC/IP Advertisement routes MUST be generated, one for each IP address. this happens for example when there's both an IPv4 and an IPv6 address on the same MAC address in dual-IP-stack scenarios ๐Ÿ’– when an IP address is dissociated from the MAC address, the MAC/IP Advertisement route with that particular IP address MUST be withdrawn ๐Ÿ”ฅ

a MAC-only route can be advertised along with, but independent from, a MAC/IP route. this is for scenarios where MAC learning over the access network/node happens in the data plane and is independent from the ARP snooping that generates a MAC/IP route. in those cases, when the ARP entry times out and causes the MAC/IP route to be withdrawn, the MAC information isn't lost โœจ in scenarios where the host's MAC/IP is learned via the management or control plane, the sender PE may only generate and advertise the MAC/IP route. if the receiving PE gets both the MAC-only route and the MAC/IP route, then when it receives a withdraw message for the MAC/IP route, it MUST delete the corresponding entry from the ARP table but not the MAC entry from the MAC-VRF table, unless it receives a withdraw message for the MAC-only route ๐ŸŽ€

when a PE receives an ARP Request for an IP address from a CE, and the PE has the MAC address binding for that IP address, the PE SHOULD perform ARP proxy by responding to the ARP Request ๐Ÿซถ

10.1. Default Gateway ๐ŸŒธ

okay so, when a PE has to do inter-subnet forwarding and each subnet lives in its own broadcast domain (like a different VLAN), that forwarding happens at Layer 3 ๐Ÿงš. The PE doing that job is called the default gateway for the EVPN instance. So when it gets an ARP Request for the IP address set as its default gateway address, it sends back an ARP Reply ๐Ÿ’…

Each PE acting as a default gateway for an EVPN instance MAY advertise its default gateway MAC address in the EVPN control plane, using the MAC/IP Advertisement route โœจ and it marks that route as belonging to the default gateway. How? The route has to carry the Default Gateway extended community from Section 7.8 ("Default Gateway Extended Community") ๐ŸŽ€ And when the MAC route carries that community, the ESI field is set to zero ๐Ÿ™ˆ

The IP Address field of the MAC/IP Advertisement route is set to the default gateway IP address for that subnet (e.g., an EVPN instance) ๐Ÿฆ‹ For a given subnet (e.g., a VLAN or EVPN instance), that default gateway IP address is the same on every participating PE. This is the slay part ๐Ÿ‘‘ It lets the receiving PE compare its own configured default gateway IP address with the one in the route. If they don't match, the PE SHOULD notify the operator and log an error message ๐Ÿ˜ญ

Unless it's known a priori (through means outside this document) that all PEs of a given EVPN instance act as a default gateway for that EVPN instance, the MPLS label MUST be set to a valid downstream assigned label ๐ŸŒˆ

Now here's the twist ๐ŸŒ€ Even if all PEs of an EVPN instance do act as default gateways, if only some of them have enough (routing) information to do inter-subnet routing for all the inter-subnet traffic from that subnet, then a PE that advertises its default gateway MAC address in a MAC/IP Advertisement route (and marks it as associated with the default gateway) MUST have the route carry a valid downstream assigned label ๐Ÿ’œ

If all PEs of an EVPN instance are default gateways and they all use the same default gateway MAC address, then no advertisement is needed ๐Ÿ“ But if each gateway uses a different MAC address, then each gateway has to know the other gateways' MAC addresses, which is why the advertisement exists. This is called MAC address aliasing, since one default gateway can show up under multiple MAC addresses ๐Ÿซถ

Every PE that receives this route and imports it according to the procedures in this document follows the procedures in this section when it answers ARP Requests ๐Ÿ”ฅ

Finally, each PE acting as a default gateway for an EVPN instance that receives this route and imports it per this document MUST create MAC forwarding state that lets it apply IP forwarding to packets sent to the MAC address in the route โœจ


11. Handling of Multi-destination Traffic โœจ

So a given PE has to send broadcast or multicast traffic it gets from a CE (tagged with a given Ethernet tag, i.e., VLAN) in an EVPN instance to every other PE that spans that Ethernet tag (VLAN) in that EVPN instance ๐ŸŒธ In some situations, described in Section 12 ("Processing of Unknown Unicast Packets"), a PE may also need to flood unknown unicast traffic to other PEs ๐Ÿฆ‹

The PEs in a particular EVPN instance can use ingress replication, P2MP LSPs, or MP2MP LSPs to send unknown unicast, broadcast, or multicast traffic to the other PEs ๐Ÿงš

To make that work, each PE MUST advertise an "Inclusive Multicast Ethernet Tag route" ๐Ÿ’– The next subsection gives the procedures for building that route, and the subsections after it explain how it gets used in more detail ๐Ÿ‘‘

11.1. Constructing Inclusive Multicast Ethernet Tag Route ๐ŸŽ€

The RD MUST be set per Section 7.9 ๐Ÿ’…

The Ethernet Tag ID identifies the Ethernet tag. It may be set to 0 or to a valid Ethernet tag value ๐Ÿ“

The Originating Router's IP Address field value MUST be set to an IP address of the PE that should be common across all the EVIs on that PE (for example, this could be the PE's loopback address) ๐ŸŒˆ The IP Address Length field is in bits โœจ

The Next Hop field of the MP_REACH_NLRI attribute of the route MUST be set to the IPv4 or IPv6 address of the advertising PE ๐Ÿซถ

The BGP advertisement for the Inclusive Multicast Ethernet Tag route MUST also carry one or more Route Target (RT) attributes ๐Ÿ’œ The RT assignments described in Section 7.10 MUST be followed ๐Ÿ”ฅ

11.2. P-Tunnel Identification ๐Ÿฆ‹

To identify the P-tunnel used for sending broadcast, unknown unicast, or multicast traffic, the Inclusive Multicast Ethernet Tag route MUST carry a Provider Multicast Service Interface (PMSI) Tunnel attribute as specified in [RFC6514] ๐ŸŒธ

How the PMSI Tunnel attribute of the Inclusive Multicast Ethernet Tag route gets built depends on the technology used for the P-tunnel for the EVPN instance on the PE. Here's how it goes ๐Ÿงš

  • If the PE that originates the advertisement uses a P-multicast tree for the P-tunnel for EVPN, the PMSI Tunnel attribute MUST contain the identity of the tree (the PE could create the identity of the tree before the tree is actually instantiated) ๐Ÿ‘‘
  • A PE that uses a P-multicast tree for the P-tunnel MAY aggregate two or more EVPN instances (EVIs) on the PE onto the same tree. In this case, besides carrying the identity of the tree, the PMSI Tunnel attribute MUST carry an MPLS upstream assigned label, which the PE has uniquely bound to the EVI associated with this update (as determined by its RTs) ๐Ÿ’–

If the PE has already advertised Inclusive Multicast Ethernet Tag routes for two or more EVIs that it now wants to aggregate, then the PE MUST re-advertise those routes. The re-advertised routes MUST be the same as the originals, except for the PMSI Tunnel attribute and the label carried in that attribute ๐Ÿ˜ญ

  • If the PE that originates the advertisement uses ingress replication for the P-tunnel for EVPN, the route MUST include the PMSI Tunnel attribute with the Tunnel Type set to Ingress Replication and the Tunnel Identifier set to a routable address of the PE. The PMSI Tunnel attribute MUST carry a downstream assigned MPLS label. This label is used to demultiplex the broadcast, multicast, or unknown unicast EVPN traffic that the PE receives over an MP2P tunnel ๐ŸŒˆ
  • The Leaf Information Required flag of the PMSI Tunnel attribute MUST be set to zero and MUST be ignored on receipt ๐Ÿ™ˆ

12. Processing of Unknown Unicast Packets ๐Ÿ”ฎ

The procedures in this document do not require PEs to flood unknown unicast traffic to other PEs ๐ŸŒธ If PEs learn CE MAC addresses through a control-plane protocol, they can then distribute those MAC addresses via BGP, so all unicast MAC addresses will be learned before traffic to those destinations shows up โœจ

That said, if a received packet's destination MAC address isn't known to the PE, the PE may have to flood the packet ๐Ÿฆ‹ When flooding, you have to account for "split-horizon forwarding," and the procedures here are borrowed from the split-horizon forwarding rules in VPLS solutions [RFC4761] [RFC4762] ๐Ÿงš When a flooding-capable PE (let's call it PEx) gets a frame with an unknown destination MAC address, it floods the frame. If the frame came from an attached CE, PEx MUST send a copy of it on every Ethernet segment (belonging to that EVI) for which it is the DF, except the Ethernet segment it received the frame on. On top of that, PEx has to flood the frame to all the other PEs participating in that EVPN instance ๐Ÿ‘‘ If the frame instead came from another PE (let's call it PEy), PEx has to send a copy of the packet on each Ethernet segment (belonging to that EVI) for which it is the DF. PEx MUST NOT send the frame to other PEs, since PEy already did that ๐Ÿ’… Split-horizon forwarding rules apply to unknown MAC addresses ๐Ÿ’–

Whether or not to flood packets to unknown destination MAC addresses should be an administrative choice, depending on how learning happens between CEs and PEs ๐Ÿ“

The PEs in a particular EVPN instance may use ingress replication, using RSVP-TE P2P LSPs or LDP MP2P LSPs, to send unknown unicast traffic to other PEs ๐ŸŒˆ Or they may use RSVP-TE P2MP or LDP P2MP to send that traffic to other PEs ๐Ÿซถ

12.1. Ingress Replication ๐Ÿ’œ

If ingress replication is in use, the P-tunnel attribute carried in the Inclusive Multicast Ethernet Tag routes for the EVPN instance specifies the downstream label that the other PEs can use to send unknown unicast, multicast, or broadcast traffic for that EVPN instance to this particular PE ๐Ÿ”ฅ

The PE that receives a packet with this particular MPLS label MUST treat the packet as a broadcast, multicast, or unknown unicast packet. Further, if the MAC address is a unicast MAC address, the PE MUST treat the packet as an unknown unicast packet ๐Ÿ˜ญ

12.2. P2MP MPLS LSPs ๐Ÿฆ‹

P2MP LSP procedures are very similar to the VPLS procedures described in [RFC7117] ๐Ÿงš The P-tunnel attribute a PE uses for sending unknown unicast, broadcast, or multicast traffic for a particular EVPN instance is advertised in the Inclusive Multicast Ethernet Tag route, as described in Section 11 ("Handling of Multi-destination Traffic") ๐ŸŒธ

The P-tunnel attribute specifies the P2MP LSP identifier. This is the equivalent of an Inclusive tree as described in [RFC7117] โœจ Note that multiple Ethernet tags, which may sit in different EVPN instances, can use the same P2MP LSP via upstream labels [RFC7117]. That's the equivalent of an Aggregate Inclusive tree [RFC7117] ๐Ÿ‘‘ When P2MP LSPs are used for flooding unknown unicast traffic, packet reordering is possible โš ๏ธ

The PE that receives a packet on the P2MP LSP specified in the PMSI Tunnel attribute MUST treat the packet as a broadcast, multicast, or unknown unicast packet. Further, if the MAC address is a unicast MAC address, the PE MUST treat the packet as an unknown unicast packet ๐Ÿ’–

13. Forwarding Unicast Packets ๐ŸŒˆ

This section describes how PEs forward unicast packets, whether those packets come from directly connected CEs or from other PEs ๐Ÿซถ

13.1. Forwarding Packets Received from a CE ๐ŸŽ€

okay so when a PE gets a packet from a CE on a given Ethernet Tag ID, the very first thing it has to do is look up the source MAC address of that packet ๐Ÿ” in some environments with MAC security turned on, that source MAC address MAY be used to check the host's identity and decide whether its traffic can come into the network. source MAC lookup MAY also be used for local MAC address learning ๐Ÿซถ

if the PE decides to forward the packet, then the destination MAC address has to be looked up too. if the PE has received MAC address advertisements for that destination MAC from one or more other PEs, or it learned the address from locally connected CEs, then it counts as a known MAC address โœจ otherwise it's an unknown MAC address ๐Ÿค”

for known MAC addresses, the PE forwards the packet to one of the remote PEs or to a locally attached CE. when it's going to a remote PE, the packet gets wrapped in the EVPN MPLS label that the remote PE advertised for that MAC address, and then in the MPLS LSP label stack that gets it to the remote PE ๐Ÿฆ‹

if the MAC address is unknown, and the PE's administrative policy requires flooding of unknown unicast traffic, then:

  • The PE MUST flood the packet to other PEs. The PE MUST first encapsulate the packet in the ESI MPLS label as described in Section 8.3. If ingress replication is used, the packet MUST be replicated to each remote PE, with the VPN label being an MPLS label determined as follows: This is the MPLS label advertised by the remote PE in a PMSI Tunnel attribute in the Inclusive Multicast Ethernet Tag route for a <MAC-VRF> or <MAC-VRF, Ethernet tag> combination.

The Ethernet tag in the route may be the same as the Ethernet tag associated with the interface on which the ingress PE receives the packet. If P2MP LSPs are being used, the packet MUST be sent on the P2MP LSP of which the PE is the root, for the Ethernet tag in the EVPN instance. If the same P2MP LSP is used for all Ethernet tags, then all the PEs in the EVPN instance MUST be the leaves of the P2MP LSP. If a distinct P2MP LSP is used for a given Ethernet tag in the EVPN instance, then only the PEs in the Ethernet tag MUST be the leaves of the P2MP LSP. The packet MUST be encapsulated in the P2MP LSP label stack.

if the MAC address is unknown, then, if the administrative policy on the PE does not allow flooding of unknown unicast traffic:

  • the PE MUST drop the packet. ๐Ÿšซ

13.2. Forwarding Packets Received from a Remote PE ๐ŸŒธ

this section is all about how to forward known and unknown unicast packets that come in from a remote PE ๐Ÿ’…

13.2.1. Unknown Unicast Forwarding

when a PE gets an MPLS packet from a remote PE, the PE first processes the MPLS label stack. then, if the top MPLS label turns out to be a P2MP LSP label tied to an EVPN instance (or, for ingress replication, the downstream label advertised in the P-tunnel attribute), and after the split-horizon procedures from Section 8.3 are done:

  • If the PE is the designated forwarder of BUM traffic on a particular set of ESIs for the Ethernet tag, the default behavior is for the PE to flood the packet on these ESIs. In other words, the default behavior is for the PE to assume that for BUM traffic it is not required to perform a destination MAC address lookup. As an option, the PE MAY perform a destination MAC lookup to flood the packet to only a subset of the CE interfaces in the Ethernet tag. For instance, the PE MAY decide to not flood a BUM packet on certain Ethernet segments even if it is the DF on the Ethernet segment, based on administrative policy. ๐Ÿงš
  • If the PE is not the designated forwarder on any of the ESIs for the Ethernet tag, the default behavior is for it to drop the packet.

13.2.2. Known Unicast Forwarding

if the top MPLS label ends up being an EVPN label that was advertised in the unicast MAC advertisements, then the PE either forwards the packet based on the CE next-hop forwarding information tied to that label, or it does a destination MAC address lookup to forward the packet to a CE ๐ŸŽฏ


14. Load Balancing of Unicast Packets ๐Ÿ’œ

this section spells out the load-balancing procedures for sending known unicast packets to a multihomed CE. it's giving balance and it's giving efficiency ๐Ÿ˜ญ

14.1. Load Balancing of Traffic from a PE to Remote CEs

whenever a remote PE imports a MAC/IP Advertisement route for a given <ESI, Ethernet tag> in a MAC-VRF, it MUST examine all imported Ethernet A-D routes for that ESI so it can figure out the load-balancing characteristics of the Ethernet segment ๐Ÿ‘€

14.1.1. Single-Active Redundancy Mode

for a given ES, if the remote PE has imported the set of Ethernet A-D per ES routes from at least one PE, and the "Single-Active" flag in the ESI Label extended community is set, then the remote PE MUST deduce that the ES is operating in Single-Active redundancy mode. so the MAC address is reachable only through the PE announcing the associated MAC/IP Advertisement route. that one is the primary PE ๐Ÿ‘‘ the other PEs advertising the set of Ethernet A-D per ES routes for the same ES are backup paths, in case the primary PE hits a failure, and they're called backup PEs.

it should be noted that the primary PE for a given <ES, VLAN> (or <ES, VLAN bundle>) is the DF for that <ES, VLAN> (or <ES, VLAN bundle>) ๐Ÿ’–

if the primary PE encounters a failure, it MAY withdraw its set of Ethernet A-D per ES routes for the affected ES before it withdraws its set of MAC/IP Advertisement routes.

if there is only one backup PE for a given ES, the remote PE MAY use the primary PE's withdrawal of its set of Ethernet A-D per ES routes as a trigger to update its forwarding entries for the associated MAC addresses, so they point toward the backup PE. as the backup PE starts learning the MAC addresses over its attached ES, it starts sending MAC/IP Advertisement routes while the failed PE withdraws its routes. this mechanism minimizes the flooding of traffic during fail-over events ๐Ÿฆ‹

if there is more than one backup PE for a given ES, the remote PE MUST use the primary PE's withdrawal of its set of Ethernet A-D per ES routes as a trigger to start flooding traffic for the associated MAC addresses (as long as flooding of unknown unicast packets is administratively allowed), because it's not possible to select a single backup PE ๐Ÿ™ˆ

14.1.2. All-Active Redundancy Mode

for a given ES, if the remote PE has imported the set of Ethernet A-D per ES routes from one or more PEs, and none of them have the "Single-Active" flag set in the ESI Label extended community, then the remote PE MUST deduce that the ES is operating in All-Active redundancy mode. a remote PE that receives a MAC/IP Advertisement route with a non-reserved ESI SHOULD consider the advertised MAC address reachable via all the PEs that have advertised reachability to that MAC address's EVI/ES. that means the combination of an Ethernet A-D per EVI route for that EVI/ES (and Ethernet tag, if applicable) AND an Ethernet A-D per ES route for that ES. the remote PE MUST use the received MAC/IP Advertisement routes and Ethernet A-D per EVI/per ES routes to construct the set of next hops for the advertised MAC address ๐ŸŒˆ

each next hop comprises an MPLS label stack that the egress PE uses to forward the packet. this label stack is determined as follows:

  • If the next hop is constructed as a result of a MAC route, then this label stack MUST be used. However, if the MAC route doesn't exist for that PE, then the next hop and the MPLS label stack are constructed as a result of the Ethernet A-D routes. Note that the following description applies to determining the label stack for a particular next hop to reach a given PE, from which the remote PE has received and imported Ethernet A-D routes that have the same ESI and Ethernet tag as the ones present in the MAC advertisement. The Ethernet A-D routes mentioned in the following description refer to the ones imported from this given PE.
  • If a set of Ethernet A-D per ES routes for that ES AND an Ethernet A-D route per EVI exist, only then must the label from that latter route be used.

the example below explains all of this ๐Ÿ‘‡

Consider a CE (CE1) that is dual-homed to two PEs (PE1 and PE2) on a LAG interface (ES1), and it's sending packets with source MAC address MAC1 on VLAN1 (mapped to EVI1). a remote PE, say PE3, is able to learn that MAC1 is reachable via PE1 and PE2. both PE1 and PE2 may advertise MAC1 in BGP if they receive packets with MAC1 from CE1. if that's not the case, and MAC1 is advertised only by PE1, PE3 still considers MAC1 reachable via both PE1 and PE2, because both PE1 and PE2 advertise a set of Ethernet A-D per ES routes for ES1 as well as an Ethernet A-D per EVI route for <EVI1, ES1> โœจ

the MPLS label stack to send the packets to PE1 is the MPLS LSP stack to get to PE1 (at the top of the stack), followed by the EVPN label advertised by PE1 for CE1's MAC.

the MPLS label stack to send packets to PE2 is the MPLS LSP stack to get to PE2 (at the top of the stack), followed by the MPLS label in the Ethernet A-D route advertised by PE2 for <ES1, VLAN1>, if PE2 has not advertised MAC1 in BGP.

we will refer to these label stacks as MPLS next hops.

the remote PE (PE3) can now load balance the traffic it receives from its CEs, destined for CE1, between PE1 and PE2. PE3 MAY use N-tuple flow information to hash traffic into one of the MPLS next hops for load balancing of IP traffic. alternatively, PE3 MAY rely on the source MAC addresses for load balancing ๐Ÿงบ

note that once PE3 decides to send a particular packet to PE1 or PE2, it can pick one out of multiple possible paths to reach that remote PE using regular MPLS procedures. for instance, if the tunneling technology is based on RSVP-TE LSPs and PE3 decides to send a particular packet to PE1, then PE3 can choose from multiple RSVP-TE LSPs that have PE1 as their destination ๐Ÿฆ‹

when PE1 or PE2 receives the packet destined for CE1 from PE3, if the packet is a known unicast, it is forwarded to CE1. if it's a BUM packet, then only one of PE1 or PE2 must forward the packet to the CE. which of the two forwards it is determined based on which one is the DF ๐Ÿ‘‘

14.2. Load Balancing of Traffic between a PE and a Local CE

a CE may be configured with more than one interface connected to different PEs, or to the same PE, for load balancing, using a technology such as a LAG. the PE(s) and the CE can load balance traffic onto these interfaces using one of the following mechanisms ๐ŸŒธ

14.2.1. Data-Plane Learning

consider that the PEs perform data-plane learning for local MAC addresses learned from local CEs. this lets the PE(s) learn a particular MAC address and associate it with one or more interfaces, if the technology between the PE and the CE supports multipathing. the PEs can now load balance traffic destined to that MAC address across the multiple interfaces ๐Ÿ’…

whether the CE can load balance the traffic it generates across the multiple interfaces depends on the CE implementation ๐Ÿซถ

14.2.2. Control-Plane Learning ๐Ÿงš

okay so the CE can be a host that advertises the same MAC address through a control protocol on all of its interfaces ๐Ÿ’… this lets the PE(s) learn the host's MAC address and link it to every interface. the PEs can then load balance traffic destined for the host across all of those interfaces ๐Ÿฆ‹ and the host can load balance its own outgoing traffic onto them too. the PE that receives that traffic just uses the usual EVPN forwarding procedures to send it along ๐Ÿซถ

15. MAC Mobility โœจ

so a host or end-station (identified by its MAC address) can move from one Ethernet segment to another ๐Ÿƒโ€โ™€๏ธ๐Ÿ’จ this is called 'MAC Mobility' or 'MAC move'. it's not the same as multihoming, where one MAC address is reachable through multiple PEs on the same Ethernet segment ๐Ÿ™…โ€โ™€๏ธ during a MAC move you end up with two sets of MAC/IP Advertisement routes, one for the new Ethernet segment and one for the previous one, so the MAC looks reachable through both segments at once ๐Ÿ‘€

here's the thing, though. every PE in the EVPN instance needs to figure out where the MAC actually is now, so the PEs that had advertised it for the previous Ethernet segment MUST withdraw all of those advertisements ๐Ÿ˜ค that's non-negotiable bestie ๐Ÿ’–

if local learning happens in the data plane, those PEs can't spot that the MAC moved ๐Ÿ™ˆ so they rely on the MAC/IP Advertisement routes from other PEs that carry the MAC Mobility extended community attribute. receiving those is what tells them to withdraw. if local learning happens in the control or management plane, those interactions are the trigger for the withdrawal instead ๐ŸŒธ

now, if a MAC moves a bunch of times, maybe even back and forth between the same two Ethernet segments, you get lots of withdrawals and re-advertisements ๐ŸŒ€ to make sure every PE gets all of them correctly through the BGP infrastructure in between, a sequence number goes into the MAC Mobility extended community attribute. it's literally necessary ๐Ÿ’…

an implementation MUST handle sequence number wraparound when it processes mobility events, because it's giving very important ๐Ÿ˜ญ

every MAC mobility event for a given MAC address carries a sequence number, and it's set using these rules โœจ

  • a PE advertising a MAC address for the first time advertises it with no MAC Mobility extended community attribute.
  • a PE that detects a locally attached MAC address it had previously received a MAC/IP Advertisement route for, but with a different Ethernet segment identifier, advertises the MAC in a MAC/IP Advertisement route tagged with a MAC Mobility extended community attribute. the sequence number is one greater than the sequence number in the MAC Mobility extended community attribute of the received route. for the first mobility event for that MAC, when the received route has no MAC Mobility extended community attribute, the sequence number in the received route is assumed to be 0 for this processing ๐Ÿง 
  • a PE that detects a locally attached MAC address it had previously received a MAC/IP Advertisement route for, with the same non-zero Ethernet segment identifier, advertises it with:
    1. no MAC Mobility extended community attribute, if the received route did not carry one.
    2. a MAC Mobility extended community attribute whose sequence number equals the highest sequence number among the received MAC/IP Advertisement route(s), if the received route(s) is (are) tagged with a MAC Mobility extended community attribute.
  • a PE that detects a locally attached MAC address it had previously received a MAC/IP Advertisement route for, with the same zero Ethernet segment identifier (single-homed scenarios), advertises it with a MAC Mobility extended community attribute with the sequence number set properly. in single-homed scenarios there's no need for ESI comparison. ESI comparison is for multihoming, so the PEs attached to the same multihomed site don't falsely detect MAC moves between each other ๐Ÿ™…โ€โ™€๏ธ

a PE that receives a MAC/IP Advertisement route for a MAC address with a different Ethernet segment identifier and a higher sequence number than the one it had previously advertised withdraws its own MAC/IP Advertisement route ๐Ÿซ  if two (or more) PEs advertise the same MAC address with the same sequence number but different Ethernet segment identifiers, the receiving PE picks the route advertised by the PE with the lowest IP address as the best route ๐Ÿ‘‘ and if a PE originated the MAC route and then receives the same MAC address with the same sequence number that it generated, it compares its own IP address with the remote PE's IP address and selects the lowest one. if its own route isn't the best one, it withdraws it ๐Ÿ’€

15.1. MAC Duplication Issue ๐Ÿ™ˆ

so it can happen that the same MAC address gets learned by different PEs in the same VLAN, because two (or more) hosts were misconfigured with the same duplicate MAC address ๐Ÿ˜ฌ the traffic from those hosts would keep triggering MAC moves among the PEs attached to them. it's important to spot this and to stop the sequence number from climbing to infinity ๐Ÿšซโ™พ๏ธ to fix it, a PE that detects a MAC mobility event via local learning starts an M-second timer (default value M = 180). if it detects N MAC moves before the timer expires (default value N = 5), it concludes a duplicate-MAC situation has happened ๐Ÿšจ the PE MUST alert the operator and stop sending and processing any BGP MAC/IP Advertisement routes for that MAC address until the operator takes corrective action. the values of M and N MUST be configurable so operators stay in control ๐ŸŽ›๏ธ and the other PEs in the EVPN instance will keep forwarding traffic for the duplicate MAC address to one of the PEs advertising it.

15.2. Sticky MAC Addresses ๐Ÿ“Œ

sometimes you want certain MAC addresses to be static so they never get subjected to MAC moves ๐ŸงŠ those MAC addresses are advertised with a MAC Mobility extended community where the static flag is set to 1 and the sequence number is set to zero. if a PE gets such advertisements and later learns the same MAC address(es) through local learning, then the PE MUST alert the operator ๐Ÿšจ

16. Multicast and Broadcast ๐Ÿ“ฃ

the PEs in a given EVPN instance can use ingress replication or P2MP LSPs to send multicast traffic to other PEs ๐ŸŽ€

16.1. Ingress Replication ๐Ÿ”

PEs may use ingress replication to flood BUM traffic, as described in Section 11 ("Handling of Multi-destination Traffic"). a given broadcast packet must be sent to all the remote PEs ๐Ÿ“ข but a multicast packet for a given multicast flow only has to go to a subset of the PEs, namely the ones that have receivers interested in that flow ๐ŸŽฏ figuring out which PEs have receivers for a given flow is done with explicit tracking per [RFC7117] ๐Ÿ•ต๏ธโ€โ™€๏ธ

16.2. P2MP LSPs ๐ŸŒˆ

a PE may use an "Inclusive" tree to send a BUM packet. that terminology is borrowed from [RFC7117] ๐Ÿ’œ

there are lots of transport technologies that can run in the service provider (SP) network ๐Ÿ›ฃ๏ธ for Inclusive P-multicast trees, these include point-to-multipoint LSPs created by RSVP-TE or Multipoint LDP (mLDP).

16.2.1. Inclusive Trees ๐ŸŒณ

an Inclusive tree lets you use a single multicast distribution tree, called an Inclusive P-multicast tree, in the SP network to carry all the multicast traffic from a specified set of EVPN instances on a given PE ๐Ÿช„ one P-multicast tree can carry the traffic of sites in a single EVPN instance, or the traffic of sites across several EVPN instances. carrying more than one EVPN instance on the same tree is called 'Aggregation', and that tree is called an Aggregate Inclusive P-multicast tree, or Aggregate Inclusive tree for short. the Aggregate Inclusive tree has to include every PE that is a member of any EVPN instance using it ๐Ÿซ‚ which means a PE may receive BUM traffic even when it has no receivers interested in that traffic ๐Ÿคทโ€โ™€๏ธ

an Inclusive or Aggregate Inclusive tree, as defined in this document, is a P2MP tree. a P2MP tree only carries traffic for EVPN CEs connected to the PE that is the root of the tree ๐ŸŒฒ

signaling an Inclusive tree works the same way as in [RFC7117], except the VPLS A-D route gets replaced with the Inclusive Multicast Ethernet Tag route. the P-tunnel attribute [RFC7117] for an Inclusive tree is advertised with the Inclusive Multicast Ethernet Tag route, as described in Section 11 ("Handling of Multi-destination Traffic"). for an Aggregate Inclusive tree, a PE can "aggregate" multiple EVPN instances on the same P2MP LSP using upstream labels ๐Ÿท๏ธ the aggregation procedures are the same as those in [RFC7117], with VPLS A-D routes replaced by EVPN Inclusive Multicast Ethernet Tag routes ๐Ÿ’…

17. Convergence โฑ๏ธ

this section describes how failure recovery works for different types of network failures ๐Ÿ”ง

existing MPLS fast-reroute mechanisms can provide failure recovery on the order of 50 ms when transit links and nodes fail in the infrastructure connecting the PEs ๐Ÿš€ that's so fast ๐Ÿ˜ญ

17.2. PE Failures ๐Ÿ’”

picture a host CE1 that is dual-homed to PE1 and PE2 ๐Ÿ‘ฏโ€โ™€๏ธ if PE1 fails, a remote PE, PE3, can discover it from the failure of the BGP session. that detection can be in the sub-second range if Bidirectional Forwarding Detection (BFD) is used to detect BGP session failures โฉ then PE3 can update its forwarding state so all traffic for CE1 goes only to PE2 ๐ŸŽ‰

17.3. PE-to-CE Network Failures โœจ

okay so if the connection between the multihomed CE and one of the PEs it's attached to fails ๐Ÿ’”, that PE MUST withdraw the set of Ethernet A-D per ES routes it had previously advertised for that ES. this lets the remote PEs yeet that PE's MPLS next hop out of the set they can use to forward traffic to the CE ๐Ÿšซ. and when the MAC entry on the PE ages out, the PE MUST withdraw the MAC address from BGP ๐Ÿงน.

when an Ethernet tag gets decommissioned on an Ethernet segment, the PE MUST withdraw the Ethernet A-D per EVI route(s) announced for the <ESI, Ethernet tags> that are impacted by the decommissioning ๐Ÿซ . and the PE MUST also withdraw the MAC/IP Advertisement routes that are impacted by the decommissioning. bestie, that's a lot of cleanup, but it's giving responsible ๐Ÿงฝ.

the Ethernet A-D per ES routes should be used by an implementation to optimize the withdrawal of MAC/IP Advertisement routes ๐Ÿช„. when a PE receives a withdrawal of a particular Ethernet A-D route from an advertising PE, it SHOULD consider all the MAC/IP Advertisement routes that are learned from the same ESI as in that Ethernet A-D route as having been withdrawn. this is how the network converges faster when PE-to-CE failures happen โšก. iconic behavior ๐Ÿ’….


18. Frame Ordering ๐Ÿฆ‹

okay this one is lowkey wild ๐Ÿ˜ญ. in a MAC address, if the first nibble (bits 8 through 5) of the most significant octet of the destination MAC address (the one that follows the last MPLS label) happens to be 0x4 or 0x6, then the Ethernet frame can get misread as an IPv4 or IPv6 packet by intermediate P nodes doing ECMP based on deep packet inspection ๐Ÿ™ˆ. that means packets from the same flow can get load balanced onto different ECMP paths, and they end up with different delays. so packets in one flow can arrive at the destination out of order. and the wild part is this can happen during steady state with zero failures, which is a big deal for network operations ๐Ÿ’€.

so to avoid that misordering, here's what we do โœจ:

  • if a network uses deep packet inspection for its ECMP, then the "Preferred PW MPLS Control Word" [RFC4385] SHOULD be used with the value 0 (e.g., a 4-octet field with a value of zero) when sending EVPN-encapsulated packets over an MP2P LSP ๐ŸŽ€.
  • if a network uses entropy labels [RFC6790], then the control word SHOULD NOT be used when sending EVPN-encapsulated packets over an MP2P LSP ๐ŸŒธ.
  • when sending EVPN-encapsulated packets over a P2MP LSP or P2P LSP, then the control word SHOULD NOT be used ๐Ÿงš.

19. Security Considerations ๐Ÿ›ก๏ธ

okay this section is serious, so let's get into it ๐Ÿซถ. security considerations discussed in [RFC4761] and [RFC4762] apply to this document for MAC learning in the data plane over an Attachment Circuit (AC), and for flooding of unknown unicast and ARP messages over the MPLS/IP core. security considerations discussed in [RFC4364] apply to this document for MAC learning in the control plane over the MPLS/IP core. this section describes additional considerations.

as mentioned in [RFC4761], there are two aspects to achieving data privacy and protecting against denial-of-service attacks in a VPN: securing the control plane and protecting the forwarding path ๐Ÿ”. compromise of the control plane could result in a PE sending customer data belonging to one EVPN to another EVPN, or black-holing EVPN customer data, or even sending it to an eavesdropper ๐Ÿ˜ฑ. none of those are acceptable from a data privacy point of view. on top of that, a compromised control plane could give attackers ways to use EVPN data without permission, like exploiting traffic replication within a multicast tree to amplify a denial-of-service attack by sending huge amounts of traffic ๐ŸŒช๏ธ.

the mechanisms in this document use BGP for the control plane ๐Ÿง . so techniques like those discussed in [RFC5925] help authenticate BGP messages, which makes it harder to spoof updates (those can divert EVPN traffic to the wrong EVPN instance) or withdrawals (those are denial-of-service attacks) ๐Ÿšง. in the multi-AS backbone options (b) and (c) [RFC4364], this also means protecting the inter-AS BGP sessions between the Autonomous System Border Routers (ASBRs), the PEs, or the Route Reflectors ๐Ÿ”’.

further discussion of security considerations for BGP can be found in the BGP specification itself [RFC4271] and in the security analysis for BGP [RFC4272] ๐Ÿ“–. the original discussion of the TCP MD5 signature option for protecting BGP sessions is found in [RFC5925], while [RFC6952] includes an analysis of BGP keying and authentication issues ๐Ÿ”‘.

note that [RFC5925] will not help keep MPLS labels private ๐Ÿšจ. knowing the labels, one can eavesdrop on EVPN traffic. that eavesdropping also requires access to the data path within an SP network. users of VPN services are expected to take appropriate precautions (such as encryption) to protect the data exchanged over a VPN ๐Ÿ”.

one of the requirements for protecting the data plane is that the MPLS labels be accepted only from valid interfaces ๐Ÿšช. for a PE, valid interfaces comprise links from other routers in the PE's own AS. for an ASBR, valid interfaces comprise links from other routers in the ASBR's own AS, and links from other ASBRs in ASes that have instances of a given EVPN. it is especially important in the case of multi-AS EVPN instances that one accept EVPN packets only from valid interfaces ๐Ÿซก.

it's also important to help limit malicious traffic into a network from an impostor MAC address ๐Ÿ•ต๏ธโ€โ™€๏ธ. the mechanism described in Section 15.1 shows how duplicate MAC addresses can be detected and continuous false MAC mobility can be prevented ๐Ÿ“. the mechanism described in Section 15.2 shows how MAC addresses can be pinned to a given Ethernet segment, so that if they appear behind any other Ethernet segments, the traffic for those MAC addresses can be kept out of the EVPN network from those other segments ๐Ÿ“Œ.


20. IANA Considerations ๐Ÿ“‹

this document defines a new NLRI, called "EVPN", to be carried in BGP using multiprotocol extensions ๐Ÿ’œ. this NLRI uses the existing AFI of 25 (L2VPN). IANA has assigned BGP EVPNs a SAFI value of 70 ๐ŸŒˆ.

IANA has allocated the following EVPN Extended Community sub-types in [RFC7153], and this document is the only reference for them ๐ŸŽ€:

   0x00     MAC Mobility                 [RFC7432]
   0x01     ESI Label                    [RFC7432]
   0x02     ES-Import Route Target       [RFC7432]

this document creates a registry called "EVPN Route Types" ๐Ÿ—‚๏ธ. new registrations will be made through the "RFC Required" procedure defined in [RFC5226]. the registry has a maximum value of 255. the initial registrations are as follows โœจ:

   0     Reserved                           [RFC7432]
   1     Ethernet Auto-discovery            [RFC7432]
   2     MAC/IP Advertisement               [RFC7432]
   3     Inclusive Multicast Ethernet Tag   [RFC7432]
   4     Ethernet Segment                   [RFC7432]

21. References ๐Ÿ“š

21.1. Normative References

here's every normative reference, bestie ๐Ÿซถ:

21.2. Informative References โœจ

okay so these are the informative refs, bestie ๐Ÿ“š they're not required reading to implement this, but they're the receipts for the background stuff. Here they are, exactly as cited:

[802.1D-REV]
           "IEEE Standard for Local and metropolitan area networks -
           Media Access Control (MAC) Bridges", IEEE Std. 802.1D,
           June 2004.

[802.1Q]   "IEEE Standard for Local and metropolitan area networks -
           Media Access Control (MAC) Bridges and Virtual Bridged
           Local Area Networks", IEEE Std 802.1Q(tm), 2014 Edition,
           November 2014.

[RFC4272]  Murphy, S., "BGP Security Vulnerabilities Analysis",
           RFC 4272, January 2006,
           <http://www.rfc-editor.org/info/rfc4272>.

[RFC4385]  Bryant, S., Swallow, G., Martini, L., and D. McPherson,
           "Pseudowire Emulation Edge-to-Edge (PWE3) Control Word for
           Use over an MPLS PSN", RFC 4385, February 2006,
           <http://www.rfc-editor.org/info/rfc4385>.

[RFC4664]  Andersson, L., Ed., and E. Rosen, Ed., "Framework for
           Layer 2 Virtual Private Networks (L2VPNs)", RFC 4664,
           September 2006, <http://www.rfc-editor.org/info/rfc4664>.

[RFC4684]  Marques, P., Bonica, R., Fang, L., Martini, L., Raszuk,
           R., Patel, K., and J. Guichard, "Constrained Route
           Distribution for Border Gateway Protocol/MultiProtocol
           Label Switching (BGP/MPLS) Internet Protocol (IP) Virtual
           Private Networks (VPNs)", RFC 4684, November 2006,
           <http://www.rfc-editor.org/info/rfc4684>.

[RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
           IANA Considerations Section in RFCs", BCP 26, RFC 5226,
           May 2008, <http://www.rfc-editor.org/info/rfc5226>.

[RFC5925]  Touch, J., Mankin, A., and R. Bonica, "The TCP
           Authentication Option", RFC 5925, June 2010,
           <http://www.rfc-editor.org/info/rfc5925>.

[RFC6514]  Aggarwal, R., Rosen, E., Morin, T., and Y. Rekhter, "BGP
           Encodings and Procedures for Multicast in MPLS/BGP IP
           VPNs", RFC 6514, February 2012,
           <http://www.rfc-editor.org/info/rfc6514>.

[RFC6790]  Kompella, K., Drake, J., Amante, S., Henderickx, W., and
           L.  Yong, "The Use of Entropy Labels in MPLS Forwarding",
           RFC 6790, November 2012,
           <http://www.rfc-editor.org/info/rfc6790>.

[RFC6952]  Jethanandani, M., Patel, K., and L. Zheng, "Analysis of
           BGP, LDP, PCEP, and MSDP Issues According to the Keying
           and Authentication for Routing Protocols (KARP) Design
           Guide", RFC 6952, May 2013,
           <http://www.rfc-editor.org/info/rfc6952>.

[RFC7117]  Aggarwal, R., Ed., Kamite, Y., Fang, L., Rekhter, Y., and
           C.  Kodeboniya, "Multicast in Virtual Private LAN Service
           (VPLS)", RFC 7117, February 2014,
           <http://www.rfc-editor.org/info/rfc7117>.

[RFC7209]  Sajassi, A., Aggarwal, R., Uttaro, J., Bitar, N.,
           Henderickx, W., and A. Isaac, "Requirements for Ethernet
           VPN (EVPN)", RFC 7209, May 2014,
           <http://www.rfc-editor.org/info/rfc7209>.

Acknowledgements โœจ

Huge thank-yous, bestie ๐Ÿซถ Special shoutout to Yakov Rekhter, who reviewed this doc several times, left super valuable comments, and had seriously engaging discussions on a bunch of topics that really shaped it ๐Ÿ‘‘ We also want to thank Pedro Marques, Kaushik Ghosh, Nischal Sheth, Robert Raszuk, Amit Shukla, and Nadeem Mohammed for chats that helped shape it too ๐Ÿ’œ Thanks to Han Nguyen for the comments and support, and to Steve Kensil and Reshad Rahman for their reviews ๐ŸŒธ Jorge Rabadan gets props for his contribution to Section 5, and Thomas Morin gets a big hug for reviewing the doc and contributing Section 8.6 ๐Ÿฆ‹ Many thanks to Jakob Heitz for helping to improve several sections, too โœจ

We also want to thank Clarence Filsfils, Dennis Cai, Quaizar Vohra, Kireeti Kompella, and Apurva Mehta for their contributions ๐Ÿงš

Last but not least, special thanks to Giles Heron (our WG chair) ๐ŸŒˆ for his super detailed review in preparation for WG Last Call and for making so many valuable suggestions. He's iconic ๐Ÿ’…


Contributors ๐ŸŽ€

In addition to the authors on the front page, these co-authors also contributed to the doc:

Keyur Patel
Samer Salam
Sami Boutros
Cisco

Yakov Rekhter
Ravi Shekhar
Juniper Networks

Florin Balus
Nuage Networks

Authors' Addresses ๐Ÿ’Œ

Ali Sajassi (editor)
Cisco
EMail: sajassi@cisco.com


Rahul Aggarwal
Arktan
EMail: raggarwa_1@yahoo.com


Nabil Bitar
Verizon Communications
EMail : nabil.n.bitar@verizon.com


Aldrin Isaac
Bloomberg
EMail: aisaac71@bloomberg.net


James Uttaro
AT&T
EMail: uttaro@att.com


John Drake
Juniper Networks
EMail: jdrake@juniper.net


Wim Henderickx
Alcatel-Lucent
EMail: wim.henderickx@alcatel-lucent.com
๐Ÿ“ฆ where this page comes from