EVPN Route-Type 1-PER ESI
Hi,
Time around us is not that great, we all are mostly locked down at our homes. We are now getting used to " working from home" concept, which was very new for me one month ago. I always thought working from office is more productive, but currently i am seeing a shift in myself & getting used to it !! what about you..
In this article, i will try to describe my understanding on EVPN Route Type 1, specifically per-ESI ethernet AD Route, i hope that it will be helpful for you & "me" in future ( i usally refer my linked-in articles for a quick refresher). As per RFC 7432, RT1 is encoded as
Looks simple and innocent, Right !! but it is not. There are lot of confusion between RT1-per ESI and RT1-per EVI for an RFC 7432 reader. RFC 7432 section 8.2.1 says how to construct RT1-per ESI & section 8.4.1 says how to construct RT1-per EVI. Both serve different purpose. This article is devoted to RT1-per ESI.
RT1-per ESI is used for Three purposes
1. To share Split Horizon Label. ( This is shared via an MP_Reach_NLRI tagged with ESI Label Ext comm)
2. To share A/A or A/S status of the ES. Using a flag bit (Single Active Bit) in the ESI label Ext community << Edit [22/04/2021] >>
3. To achieve fast convergence via MAC mass withdraw ( This time, RT1-PER ESI is an MP_UNREACH_NLRI Update packet))
Route Distinguisher (RD) (8 octets) Here, RD is used as Type 1, or Per Node RD : Like 10.0.0.1:0
let's analyze why RD-Type 1 is selected for this route. To undserstand this, we should understand in detail the use of this Route. This Route is used to share the SHG label for an ES. This SHG label is common for all EVI's which are using subinterfaces from this ES.When a PE(I must be specific, a designated forwarder) recieves a BUM packet with SHG label ( shared by itself in RT1-PER ESI) Then it don't fowards the packet towards ES(SHG label is downstream allocated) to avoid loop. We generally configure ESI on Main interface ( not on Sub interface/attachement circuit). For Example, below will be the configuration.
- Confgure Type 0 ESI on Bundle-2 as 00.00.00.00.02.02.02.02.02
- AC Bundle2.100 with VLAN 100, attached to EVI 100
- 2nd AC Bundle2.200 with VLAN 200, attached to EVI 200.
Note that, ESI value on that node will be unique, so if i have 2 different bundle interfaces configured with non-zero ESI value then, auto generate RD to be used will be 10.0.0.1:0 and 10.0.0.1:1 ( something like this). Beacuse here we want to share the SHG label to be used for this ES not per EVI.
Also, like while sending MAC mass withdraw ( MP_UNREACH_NLRI), then we want to tell Remote PE's that the ES is down. So drop all learned MAC's learned from this ES ( similar to BGP PIC).
Ethernet Segment Identifier (10 octets): ESI value is Configured by the user( for type 0) on the Interface. There are other Type of ESI, Refer section 5, RFC7432
For Non zero ESI value only this Route will be generated, if ESI is 0, then it means single Homed. But as i said earlier this Route is for Multi-homed cases.
Ethernet Tag ID (4 octets) Eth TAG ID is set to MAX-ET, in simple terms all FF. Ethernet Tag ID {0xFFFFFFFF} is known as MAX-ET
If you recall my earlier explanation, then you can relate that, Eth TAG ID is not needed at all, beacuse this Route is specifying some information of the ES, so not worried about the VLAN/Ethernet TAG.
MPLS label is 0
MPLS Label field is set to 0 for RT1-Per ESI route. The Other variant of this Route RT1-PER EVI uses this label field for sending Aliasing label in ELAN. ( i will try to talk aliasing separately).
Now, To share the Split horizon Label RT1-PER ESI is always tagged with extended community "ESI Label extended community"
ESI label extended community mainly express 2 things
- What is the Multi-homing type.(Single-active or active-active). Flags part of above encoding specifes this parameter. The Lower-order bit == 0,means Active-active, if == 1, means single-Active.
- What is the SHG label. ( specified by the ESI label field)
Sample snippet of a RT1-PER ESI :
Split Horizon Operation :
in EVPN MH case, DF is elected from RT4 exchange. Only DF is allowed to forward BUM traffic on the ES to CE. Now, assume a Case, where PE1 & PE2 are multihomed to CE & PE2 is DF for that service ( particularly for one VLAN).
PE1 Received a BUM packet from CE for that VLAN. So, PE1 will do a ingress replication, added the BUM label ( recieved via RT3), & send it to all EVPN end Points on that Bridge-domain ( after attaching the SR label). PE2 will receive the BUM packet from PE1. Now As PE2 is DF for that service, so PE2 will send the BUM packet back to the CE.So, a Loop happened. Now we need to stop it. How !!
Simple, in the MPLS world there is no shortage of MPLS label and stacking one more MPLS label is always the best option ( Think of Segment Routing-MPLS).
So, here also, during the set up process, PE2 will allocate an SHG label to PE1 via RT1-Per ESI ( i think i have wrote it 5 times already) & PE1 will send the BUM packet after adding the SHG label. If you want to visualise the stack, here it is !!
<< Label to Reach PE2>> ---> Known via ISIS/SR << BUM Label shared by PE2>> -- > Known via RT3 << SHG label shared by PE2 >> -- > Known via RT1-PER ESI
MAC Mass withdraw :
To achieve Fast convergence, Similar to a BGP PIC paradigm, when a MAC Mass withdraw update( MP_UNREACH_NLRI) is received from an advertising PE, then Receiving PE invalidates all MAC (RT2) routes that was previously learned from the Advertising PE. Taking an example, when PE1 detects that PE-CE link is down ( on which ES'x' is configured), immidiately it trigger's RT1-per ESI route to the remote PE's. Remote PE's then gets the indication that ES'x' is down behind PE1. so it invlaidate all MAC entries towards PE1 & start using other PE's who advertised ES'x' earlier.
Refer this for easy reference:
Ok, that's it for now. Hope this was helpfull, Cheer's.
System Test Engineer, Python Test Automation, L2/L3 Manual Testing And Automation Expert
2 年can you please make a post on split horizon label in active-active and active-standby mode? i am not able to find out the reason behind SH label of 0 in case of A-S role and a proper non-zero label value for SH label in A-A role.
.?|?.?|?. CCIE-SP #60582 | Network Consultant | Cloud Engineer | Solutions Architect | VCP-NV | DevNet
4 年Guillermo Mottura
IP/MPBN Engineer working for Vodafone Qatar
4 年Great post
.?|?.?|?. CCIE-SP #60582 | Network Consultant | Cloud Engineer | Solutions Architect | VCP-NV | DevNet
4 年Alejandro Martinelli