EVPN MPLS Shared ESI Label
In a multihomed EVPN MPLS configuration, broadcast, unknown-unicast, and multicast (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 advertised ESI label, 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 where the BUM packet originated.
However, if a DF election triggers, a PE may change its role from a Non-DF to a DF. Since the DF election runs on each PE distributively, some PE(s) may not update their view of the new DF PE and doesn't add an 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, EOS includes ESI labels to Non-DF PEs as well. This shared ESI label provides a mechanism to achieve sending an ESI label to Non-DF PEs on platforms that cannot support sending different ESI labels to 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 provisioned with the same ES carry the same shared-index value, then they allocate the same ESI label value for that Ethernet Segment.
- A consistent configuration on all PEs enables the hardware to encapsulate the ESI label on all BUM packets towards multi-homed peers. This implements split-horizon filtering during DF role change events.
- EOS uses the shared index value as an offset into the reserved
l2evpn
ethernet-segment range where
EOS derives the label value 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 when EVPN MPLS shares the ESI label between 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 the shared-indexmpls shared index <value>.
- All PEs in that ES carry the same ESI label.
- The 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