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.
Example
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
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: 100.0.0.1:1000
Route target import: Route-Target-AS:64500:1000
Route target export: Route-Target-AS:64500:1000
Service interface: VLAN-based
Local IP address: 100.0.0.1
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: 100.0.0.1
Non-Designated forwarder: 100.0.0.2
- 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