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
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: 18.104.22.168:1000 Route target import: Route-Target-AS:64500:1000 Route target export: Route-Target-AS:64500:1000 Service interface: VLAN-based Local IP address: 22.214.171.124 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: 126.96.36.199 Non-Designated forwarder: 188.8.131.52
- Shared ESI label state for an ES is ON when the following conditions are
- 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