EVPN MPLS Shared ESI Label

In a multihomed EVPN MPLS configuration, BUM packets sent from a Non-Designated Forwarder (Non-DF) PE to a Designated Forwarder (DF) PE must carry the ESI label advertised by the egress DF PE. When the egress DF PE receives a packet with the ESI label that it has advertised, it does not forward the packet on the Ethernet Segment (ES) corresponding to that ESI label. This avoids sending the packet back to the same ES from which the BUM packet originated.

However, when a DF election is triggered, a PE may change its role from being Non-DF to DF. Since the DF election is run on each PE distributively, some PE(s) may not have updated their view of the new DF PE and add no ESI label in the BUM packet. In such a case, the BUM packets in transit may get sent back to the same ES where they originated. To overcome this, ESI labels are included to Non-DF PEs as well. This shared ESI label provides a mechanism to achieve sending ESI label to Non-DF PEs on platforms which cannot support sending different ESI labels to its multihomed peers.

Configuring EVPN MPLS Shared ESI Label

An Ethernet-Segment (ES) must be configured with a shared-index to allocate an ESI label value based on the shared-index configuration.


switch(config)# interface Ethernet4
switch(config-if-Et1)# switchport access vlan 1000
switch(config-if-Et1)# evpn ethernet-segment
switch(config-evpn-es)# identifier 0022:2222:2222:2222:2222
switch(config-evpn-es)# mpls shared index 100
switch(config-evpn-es)# route-target import 00:02:00:02:00:02
  • If all PEs which are provisioned with the same ES carry the same shared-index value, then they will allocate the same ESI label value for that ethernet-segment.
  • Having this configuration consistent on all PEs will enable the hardware to encapsulate the ESI label on all BUM packets towards its multi-homed peers. This is essential to implement split-horizon filtering during DF role change events.
  • The shared index value is used as an offset into the reserved l2evpn ethernet-segment range where the label value is derived as follows:
    • ESI label = label-range base value + shared-index value – 1
The ESI labels are allocated from l2evpn ethernet-segment label range which has a default configuration as shown below.
switch#show running-config all
mpls label range bgp-sr 900000 65536
mpls label range dynamic 100000 262144
mpls label range isis-sr 900000 65536
mpls label range l2evpn 1036288 12288
mpls label range l2evpn ethernet-segment 1031072 1024
mpls label range srlb 965536 65536
mpls label range static 16 99984

EVPN MPLS Shared ESI Label Show Commands

The following show command displays the operational state on whether the ESI label is shared amongst all the PEs in that Ethernet-Segment:

switch# show bgp evpn instance
EVPN instance: VLAN 1000
  Route distinguisher:
  Route target import: Route-Target-AS:64500:1000
  Route target export: Route-Target-AS:64500:1000
  Service interface: VLAN-based
  Local IP address:
  Encapsulation type: MPLS
  Label allocation mode: per-instance
  MAC route label: 1040210
  IMET route label: 1042201
  AD route label: 1040210
  Local ethernet segment:
    ESI: 0022:2222:2222:2222:2222
      Interface: Ethernet4
      Mode: all-active
      State: up
      ESI label: 1031171
      Shared ESI label: on
      ES-Import RT: 00:02:00:02:00:02
      Designated forwarder:
      Non-Designated forwarder:
  • Shared ESI label state for an ES is ON when the following conditions are satisfied.
    • ES is configured with shared-index i.e, mpls shared index <value>.
    • All PEs in that ES carry the same ESI label.
  • l2evpn shared ethernet-segment label range space can be looked up using the command below:
    switch# show mpls label ranges
    Start     End       Size      Usage
    0         15        16        reserved
    16        99999     99984     static mpls
    100000    116383    16384     ldp (dynamic)
    116384    132767    16384     bgp (dynamic)
    132768    362143    229376    free (dynamic)
    362144    899999    537856    unassigned
    900000    965535    65536     isis-sr
    900000    965535    65536     bgp-sr
    965536    1031071   65536     srlb
    1031072   1032095   1024      l2evpn shared ethernet-segment
    1032096   1036287   4192      unassigned
    1036288   1048575   12288     l2evpn


When the PE switch is multihomed to more than six PEs and each one of those PEs have an ethernet segment in shared ESI configuration, the PE switch may not be able to push the ESI label into the MPLS label stack of BUM packets ingressing on every ethernet segment. In such a case, the syslog EVPN-3-MPLS_SHARED_ESI_HW_RESOURCE_FULL is emitted.