EVPN 在 vxlan 分布式網關場景中必選,在集中式網關場景中可選。
原創文章,轉載請注明出處。
EVPN(Ethernet Virtual Private Network 以太虛擬專用網)是一種用於二層網絡互聯的VPN技術。EVPN技術采用類似於BGP/MPLS IP VPN的機制,在BGP協議的基礎上定義了一種新的NLRI(Network Layer Reachability Information,網絡層可達信息)即EVPN NLRI,EVPN NLRI定義了幾種新的BGP EVPN(Type 2、3、5。1/4/6/7/8在vxlan中未使用)路由類型,用於處在二層網絡的不同站點之間的MAC地址學習和發布。
EVPN最初是為了解決運營商MPLS VPN的問題,由Juniper提出,如CE雙歸屬場景。由思科優化后,應用到VXLAN中。
原有的VXLAN實現方案沒有控制平面,是通過數據平面的流量泛洪進行VTEP發現和主機信息(包括IP地址、MAC地址、VNI、網關VTEP IP地址)學習的,這種方式導致數據中心網絡存在很多泛洪流量。為了解決這一問題,VXLAN引入了EVPN作為控制平面,通過在VTEP之間交換BGP EVPN路由實現VTEP的自動發現、主機信息相互通告等特性,從而避免了不必要的數據流量泛洪。
在BGP EVPN方式部署分布式網關的場景中:
- 控制平面的流程包括VXLAN隧道動態建立(VTEP發現)、MAC地址動態學習;
- 轉發平面的流程包括同子網已知單播報文轉發、同子網BUM報文轉發、跨子網報文轉發。
該方式實現的功能全面,支持主機IP路由通告、主機MAC地址通告、主機ARP通告,可以直接使能ARP廣播抑制功能。如果在VXLAN網絡中采用分布式網關,推薦使用此方式。
綜上所述,EVPN通過擴展BGP協議新定義了幾種BGP EVPN路由,這些BGP EVPN路由可以用於傳遞VTEP地址和主機信息,因此EVPN應用於VXLAN網絡中,可以使VTEP發現和主機信息學習從數據平面轉移到控制平面。
路由協議部署:Spine做為BGP EVPN RR路由反射器,Leaf做為反射器客戶端。
EVPN控制面表項同步:
- VM數據報文或ARP報文發送觸發NVE節點的MAC/ARP等轉發表項學習;
- NVE節點將學習到的轉發表項導入EVPN實例,形成EVPN協議的MAC/IP路由;
- NVE節點的BGP-EVPN協議將自己生成的MAC/IP路由信息向鄰居擴散;
- BGP-EVPN協議鄰居(NVE節點)收到MAC/IP路由信息后生成轉發表;
- BGP-EVPN協議通過擴散自己的MAC/IP路由信息、Segment Route路由信息等打通二三層轉發路徑。
evpn 負責生成(劉大偉總結):
- 動態學習表項:
- MAC表——leaf南向虛機的信息(type2傳遞);
- L3路由表——leaf南向虛機的信息(type2傳遞),外部網絡路由(type5傳遞);
- ARP廣播抑制表(type2實現,將ARP請求報文廣播地址替換為單播地址);見2.5 EVPN 集中式網關.note。
- BUM頭端復制列表(type3傳遞);
- 動態建立vxlan隧道(type3傳遞);
建議使用分布式網關,而不是集中式網關。分布式網關優點:
- 很好地解決了次優路徑問題。但租戶數量不多/單租戶內海量主機場景中,集中式網關仍可勝任【優勢是配置簡單】。
- 負載較為均衡,對spine的壓力比較小;
- 擴容更方便,因為leaf分擔了較多負載,增加leaf就能實現擴容。而擴spine難度較大;
但分布式網關配置復雜,需要做好規划。
分布式網關相對適合租戶數量多,單租戶內主機規模不大【主機規模過大時,對Leaf的性能要求明顯提高】。
一、IRB 綜合路由和橋接
IRB(Integrated Routing and Bridge 綜合路由和橋接,Type2)和IP前綴(Type5)兩種路由類型,可根據如下原則進行選擇:
IRB類型路由只能發布32位主機IP路由。由於IRB類型路由包含着ARP類型路由,因此選擇發布IRB類型路由后,可直接在Leaf節點上使能ARP廣播抑制功能,無需其他配置,同時也利於虛擬機的遷移(詳情可參見EVPN基本原理)。如果只需發布32位主機IP路由,建議選擇發布IRB類型路由。
IP前綴類型路由既能發布32位主機IP路由又能發布網段路由。但是,在發布32位主機IP路由時,需先將主機IP地址生成直連路由,這會影響虛擬機的遷移。因此,如果只需發布32位主機IP路由,不建議選擇IP前綴類型路由。只有需要發布網段路由時(場景見上文),才需選擇IP前綴類型路由。
非對稱型 IRB(可以只在數據層面實現,分布式網關不支持):
- 去程與回程數據包中的 VNI不對稱。源端使用目的端的VNI做封裝,目的端回程時,使用源端的VNI來封裝。如果其中一端沒有另一端的vbdif網關,就需要創建一個相同的vbdif,否則無法封裝和通信【配置較多,對設備壓力較大】。
- 源端Leaf先做路由再做橋接【如vbdif1路由到vtep1另一個vbdif2,vtep1 vbdif2再橋接到目的vtep2的vbdif2】,目的端Leaf只做橋接,源目Leaf的行為不對稱【往返通信時,源目各進行一次這樣的過程】。
對稱型 IRB(引入 BGP EVPN 作為控制平面,兩端對稱路由):
使用 BGP EVPN 主機路由,在不同的虛機間進行通信。
- 往返VNI一致(同VRF時),都是VRF下配置的VNI。優點:按需配置vbdif網關;
- 往返動作一致,都是查路由表轉發。兩端的網關MAC由type2下的Router's mac通告。優點:減少一次查表過程,對硬件芯片友好。

二、BGP EVPN 的 NLRI
EVPN Type 1(Ethernet Auto-Discovery) 以太自動發現路由。用於兩個不同的功能:快速收斂(批量撤銷)和別名。EVPN快速收斂允許PE更改與特定以太網段關聯的所有MAC地址的下一跳鄰接。EVPN別名允許流量在多個出口點之間負載均衡。用在MPLS CE多歸屬場景。
EVPN Type 4(Ethernet Segment Route) 以太網段路由,PE連接CE的鏈路稱為以太網段,ESI(Ethernet Segment ID)用來區分CE到PE的多歸屬鏈路。用於在MPLS CE多歸屬場景中選擇指定轉發器,指定轉發器負責將BUM流量發送到特定以太網段中的CE。VXLAN場景中ESI為0。
1、4在vxlan場景中用不到。
2.1 Type 2 MAC/IP地址通告路由
MAC advertisement Route:MAC/IP地址通告路由。
關注4處(1-4構成 IRB 路由,1-3構成 ARP 路由):
- MAC地址;
- IP地址;
- MPLS Label1對應的二層VNI(BD中定義);
- MPLS Label2對應的三層VNI(VRF中定義)。


- Route Distinguisher:EVPN實例下設置的RD值。
- Ethernet Segment Identifier:當前設備與對端連接定義的唯一標識,用來區分同一個CE多歸上連PE的多條鏈路。vxlan環境中保留,抓包中全0;
- Ethernet Tag ID:當前設備上實際配置的VLANID。華為不支持多個BD綁定一個EVI,所以該字段無意義,抓包中全0;
- MAC Address Length:此路由攜帶的主機MAC地址的長度。
- MAC Address:此路由攜帶的主機MAC地址,由BD下的mac地址表中提取。
- IP Address Length:此路由攜帶的主機IP地址的掩碼長度。
- IP Address:此路由攜帶的主機IP地址,由VRF下的arp表中提取。
- MPLS Label1:此路由攜帶的二層VNI【一比一對應BridgeDomain、二層VXLAN網絡。二層VNI編號與三層VNI編號不能重復,編號空間共有16M。相同的L2vni代表一個大的邏輯廣播域,如畫圖中的vni 2010】。在華為SDN控制器上,要手動分別定義L2及L3的vni范圍。
- MPLS Label2:此路由攜帶的三層VNI【一比一對應VPN實例、三層VRF網絡。相同的L3vni代表一個大的邏輯路由器,如畫圖中的vni 3000】。
mac-route路由表中--同時含有mac和ip信息,且下一跳為0.0.0.0的路由,是本機產生的。
路徑屬性的擴展團體屬性下還有:RT、encapsulation封裝方式【tunnel type值為8,即vxlan】、Router’s mac【含IP信息時。注意MLAG成員設備vtep mac要一致】、MAC Mobility【如vm遷移通告。Sticky/Static MAC;SN序列號信息(VM遷移后生成的type2路由,SN會增加1,以區分新舊)】。
Router’s mac:mlag的兩個設備都出現在ip fabric上,vtep ip是一樣的。兩個設備上都有nve接口,這個nve接口相當於L2 tunnel的隧道接口。L2接口它有自己的mac,就是我們提到的router mac;nve把報文推到vxlan網絡上和從vxlan網絡上收報文都通過這個L2 tunnel接口來完成,推到網絡上mac幀用相應的tunnel接口的router mac當源mac;反之,設備收到vxlan報文時也要從這個tunnel接口進來,這個vxlan報文中的目標router mac要匹配tunnel接口的mac。所以當ip fabric轉發vxlan報文時可能會轉發到兩個mlag設備的任何一個,如果報文中的router mac不匹配tunnel接口的mac,報文會被drop掉。所以兩個一樣vtep ip的設備,他們的router mac要一樣。router mac僅在跨網段訪問時才用,不跨網段訪問時使用終端的mac。
VRF虛擬路由器(由各個Leaf上相同的三層VNI來區分),該VRF下所有的二層VNI VXLAN網絡就像連接到此虛擬路由器的各個直連網絡。


生成條件:
以下為AC下發的vbdif配置之一,獲取到主機arp/mac/ip信息后,會生成Type 2路由:
interface Vbdif1002 ip binding vpn-instance vdc01(9878-VPCA-4018 ip address 192.168.10.1 255.255.255.0 arp distribute-gateway enable mac-address 0000-5e00-0102 arp collect host enable bridge-domain #之下配置vni和evpn實例后,BD、vni、evpn RT建立關聯。 interface nve 1 #之下配置vni head-end peer-list之后,能發送type2路由給鄰居。 bgp l2vpn evpn地址族下,配置向鄰居通告irb路由。
2.1.1 MAC/IP 路由在 VXLAN 控制平面中的作用
- 主機 MAC通告(MAC add/add-length)。要實現同子網主機的二層互訪,兩端VTEP需要相互學習主機MAC。
- 主機 ARP通告(MAC/IP),主要用於以下兩種場景:
- ARP廣播抑制【集中式網關場景】。當三層網關學習到其子網下的主機ARP時,生成主機信息(包含主機IP地址、主機MAC地址、二層VNI、網關VTEP IP地址),然后通過傳遞ARP類型路由將主機信息同步到二層網關上。這樣當二層網關再收到ARP請求時,先查找是否存在目的IP地址對應的主機信息,如果存在,則直接將ARP請求報文中的廣播MAC地址替換為目的單播MAC地址,實現廣播變單播,達到ARP廣播抑制的目的。
- [bd10]arp broadcast-suppress enable #在Leaf的BD下啟用arp廣播抑制;
- dis arp broadcast-suppress user bridge-domain 10
- 分布式網關場景下的虛擬機遷移。當一台虛擬機從當前網關遷移到另一個網關下之后,新網關學習到該虛擬機的ARP(一般通過虛擬機發送免費ARP實現),並生成主機信息(包含主機IP地址、主機MAC地址、二層VNI、網關VTEP IP地址。且SN增加1),然后通過傳遞ARP類型路由將主機信息發送給虛擬機的原網關。原網關收到后,感知到虛擬機的位置發生變化,觸發ARP探測,當探測不到原位置的虛擬機時,發送撤銷報文撤銷原位置虛擬機的ARP和主機路由。其它設備收到撤銷報文后,才會更新evpn路由表。
- 主機 IP路由通告(IRB)。在分布式網關場景中,要實現跨子網主機的三層互訪,兩端VTEP(作為三層網關)需要互相學習主機IP路由。作為BGP EVPN對等體的VTEP之間通過交換MAC/IP路由,可以相互通告已經獲取到的主機IP路由(信息來自於VRF的ARP表)。其中,IP Address Length和IP Address字段為主機IP路由的目的地址,同時MPLS Label2字段必須攜帶三層VNI【用於跨子網通信(同VPC,跨VPC用靜態路由)。分布式網關場景下能實現ARP路由的功能,可以取代ARP路由】。
- 以上信息由所在leaf本地的mac、arp表生成,如果leaf中沒有對應的mac或arp信息,那么就不會生成對應的type2路由。
說明:IRB類型路由包含着ARP類型路由,不僅可以用於主機IP路由通告,也能用於主機ARP通告。BGP路由攜帶的下一跳為vtep的IP,可以和建立BGP鄰居的IP不同。
ARP類型路由攜帶的有效信息:主機MAC+主機IP+二層VNI【BD/Vxlan。如果有VNI對應的BD,那么MAC地址會被記錄在對應BD的MAC地址表中】;
IRB類型路由攜帶的有效信息:主機MAC+主機IP+二層VNI+三層VNI【租戶VRF。主機路由會被記錄在對應的VRF路由表中,實際是由RT(vpn-target,在bgp擴展團體屬性中)決定是否接收。MAC地址處理方式與ARP類型一致】。
2.1.2 數據轉發過程,及二層VNI、三層VNI、RT 的作用
L2 VNI。不同Leaf 同網段的虛機轉發數據時(假設知道對端的ARP信息),由Leaf下BD中的MAC表【由evpn傳遞的type2 NLRI生成】直接查到對應vxlan隧道的vtep地址,進行vxlan封裝(L2 VNI)和轉發。
L2 VNI總結:用以對應生成各leaf上BD中的mac表,包括mac、vtep、L2 vni的對應關系,用以在同網段跨leaf通信時使用。
參考
泰克2. Vxlan理論.note 中mac表的組成。
L3 VNI。不同Leaf 跨網段的虛機轉發數據時:
- 虛機封裝‘[SIP-DIP][Smac-GWmac網關mac]’轉發數據幀到網關。
- 網關【Leaf上的vbdif,並進入關聯的VRF】剝離二層頭,根據DIP查找vrf路由表【由evpn傳遞的type2 NLRI生成】,目的L3 VNI通過源leaf的VRF路由表確認。DIP為evpn鄰居送來的主機路由。網關進行vxlan封裝‘[原始數據包]【源VRFmac(即nve的mac,由bgp傳遞的Router-mac)-目VRFmac】[目的L3 VNI][UDP][SvtepIP-DvtepIP]’,並轉發數據包到目的NVE【其中L3vni是目的leaf上對應的L3vni】。
- 到達目的NVE后,根據VNI,區分是訪問L3 VRF或是L2 BD(VRF和BD的vni不同)。在進入目標VRF之后,根據目的網段,路由進入對應的三層vBDif,並查找arp表,找到目標主機並轉發(有可能還要查找mac表,來找到對應的二層接口)。
L3 VNI總結:在目標leaf上根據數據平面vxlan頭中的L3 VNI來識別目標VRF,在跨網段互訪時使用。一個 vpn-instance 對應一個L3vni。
下圖中Router's MAC是NVE接口下配置的MAC地址。


Vxlan路由,會在BGP擴展屬性中攜帶RT信息,用以控制路由的導入導出。
問:VNI 及 RT 的區別?
- VNI 是數據平面的,存在於每一個數據報文中的 vxlan 頭部;及 BGP evpn Type2 NLRI 的label字段中。決定數據報文封裝時對應的字段,並不影響路由控制。
- vpn-target(RT)是控制平面的:控制 BGP evpn 路由收發,在配置章節中介紹。
<HUAWEI> display arp
ARP Entry Types: D - Dynamic, S - Static, I - Interface, O - OpenFlow
EXP: Expire-time VLAN:VLAN or Bridge Domain
IP ADDRESS MAC ADDRESS EXP(M) TYPE/VLAN INTERFACE VPN-INSTANCE
---------------------------------------------------------------------------
192.168.149.254 0000-5e00-0102 I Vbdif13 vdc-manage-vpc_012-10014
<HUAWEI> display arp openflow
Total number of hosts: 43
-------------------------------------------------------------
VniId IP Address MAC Address VtepIP
-------------------------------------------------------------
5000 10.1.1.48 0001-0203-0405 10.2.2.2
問:EVPN 場景下,租戶間可以相互學習對方路由嗎?
1,數據平面能否訪問通,依賴於L2 MAC表或L3 VRF中是否命中mac或IP。
2,接收EVPN路由時,根據RT來決定是否接收路由, 決定路由進到哪個租戶的哪張表。所以需要互通的VRF在配置RT時,import RT要有對照關系。BGP RR要配置undo policy vpn-target。
3,數據平面靠 VNI來識別選擇VRF(IP VRF or MAC VRF)。
4,控制平面靠 RT來決定MAC/IP路由進IP VRF or MAC VRF。
問:虛機漂移后,新的路由信息如何通告?
由漂移后的leaf發送新的type2路由update(僅路由目的vtep改變,IP/MAC/vni均不變)通告到相應的vrf中。此條路由更新中的SN序列號,要比原來通告的SN+1,標識這是一條更新的路由信息。
漂移前的leaf收到此type2路由更新,會觸發ARP探測,在發現南向虛機消失后,更新本地的bgp evpn路由表,並發送BGP update報文撤銷自己之前發送的type2路由【如不撤銷,原來的BGP路由會一直存在,這是BGP的特性】。