MP-BGP EVPN方式部署Vxlan分布式網關


在BGP EVPN方式部署分布式網關的場景中,控制平面的流程包括VXLAN隧道建立、MAC地址動態學習;轉發平面的流程包括同子網已知單播報文轉發、同子網BUM報文轉發、跨子網報文轉發。該方式實現的功能全面,支持主機IP路由通告、主機MAC地址通告、主機ARP通告,可以直接使能ARP廣播抑制功能。如果在VXLAN網絡中采用分布式網關,推薦使用此方式。
1.VXLAN隧道建立
VXLAN隧道由一對VTEP IP地址確定,創建VXLAN隧道實際上是兩端VTEP獲取對端VTEP IP地址的過程,只要對端VTEP IP地址是三層路由可達的,VXLAN隧道就可以建立成功。通過BGP EVPN方式動態建立VXLAN隧道,就是在兩端VTEP之間建立BGP EVPN對等體,然后對等體之間利用BGP EVPN路由來互相傳遞VNI和VTEP IP地址信息,從而實現動態建立VXLAN隧道。
在分布式網關的場景中,Leaf同時作為二層網關和三層網關,Spine節點不感知VXLAN隧道,只作為VXLAN報文的轉發節點。控制平面只需在Leaf之間建立VXLAN隧道,如 圖1所示,Leaf1與Leaf2之間建立VXLAN隧道用於Host1和Host2、Host3和Host2之間的通信。對於Host1和Host3之間的通信,由於都屬於Leaf1,所以互訪的流量只需在Leaf1上處理,無需通過VXLAN隧道轉發。
圖1 VXLAN隧道示意圖
在分布式網關場景中,通過BGP EVPN方式動態建立VXLAN隧道有以下兩種情況:
1.1 同子網-建立vxlan隧道:通過type3路由
圖2所示,當處於同一子網的Host3與Host2互通時,只需要進行二層轉發。通過BGP EVPN方式建立VXLAN隧道的過程如下:
圖2 動態建立VXLAN隧道示意圖-1
預先配置:
(1)在Leaf1和Leaf2之間建立BGP EVPN對等體。
(2)在Leaf1和Leaf2上分別創建EVPN實例,配置二層VNI,RD、出方向VPN-Target(ERT)、入方向VPN-Target(IRT)。
1.Leaf1和Leaf2會生成BGP EVPN路由並發送給對端, 該路由攜帶本端EVPN實例的出方向VPN-Target和BGP EVPN協議新定義的Type3路由即Inclusive Multicast路由。其中,Inclusive Multicast路由如 圖3所示,由 前綴和PMSI屬性組成, VTEP IP地址存放在前綴的Originating Router's IP Address字段中, 二層VNI存放在PMSI屬性的MPLS Label字段中。
 
2、Leaf1和Leaf2在收到對端發來的BGP EVPN路由后,首先檢查該路由攜帶的EVPN實例的出方向VPN-Target,如果與本端EVPN實例的入方向VPN-Target相等,則接收該路由,否則丟棄該路由。在接收該路由后,Leaf1和Leaf2將獲取其中攜帶的對端VTEP IP地址和二層VNI,如果 對端VTEP IP地址是三層路由可達的,則建立一條到對端的VXLAN隧道;同時,如果對端 二層VNI與本端相同,則創建一個 頭端復制表,用於后續BUM(Broadcast&Unknown-unicast&Multicast)報文轉發。
1.2 不同子網建立vxlan隧道
當處於不同子網的Host1與Host2互通時,需要進行三層轉發,因此在通過BGP EVPN方式建立VXLAN隧道的過程中,網關Leaf1和Leaf2需要發布下屬主機的IP路由。一般情況下,這里發布的是32位主機IP路由,因為在VXLAN網絡中,不同的Leaf節點可能連接着相同的網段,所以如果Leaf節點發布的是下屬主機IP所在的網段路由,則可能與其他Leaf節點發布的網段路由沖突,進而導致某些Leaf節點的下屬主機不可達。
建立VXLAN隧道之前,需要在Leaf1和Leaf2上進行如下配置准備:
配置任務
作用
創建二層廣播域(BD),並在二層廣播域下配置關聯的 二層VNI
創建VXLAN網絡轉發數據報文的實體。
在Leaf1和Leaf2之間建立BGP EVPN對等體。
用於交換BGP EVPN路由。
在二層廣播域下創建EVPN實例,配置 EVPN實例的RD、出方向VPN-Target(ERT)、入方向VPN-Target(IRT)
用於生成BGP EVPN路由。
不同租戶建L3VPN實例,將L3VPN實例綁定到指定二層廣播域的VBDIF接口上。
用於區分和隔離不同租戶的IP路由表。
為L3VPN實例指定關聯的三層VNI。
用於Leaf節點在收到數據報文時判斷使用哪個L3VPN實例的路由表指導轉發。
配置L3VPN實例到EVPN實例的出方向VPN-Target(eERT),以及從EVPN實例到L3VPN實例的入方向VPN-Target(eIRT)。
用於控制本端L3VPN實例與對端EVPN實例之間BGP EVPN路由的發布和接收。
配置Leaf1和Leaf2之間發布的路由類型。
用於發布Host1和Host2的主機IP路由。這里有IRB(Integrated Routing and Bridge)和IP前綴兩種路由類型,可根據如下原則進行選擇:
IRB類型路由只能發布32位主機IP路由。由於IRB類型路由包含着ARP類型路由,因此選擇發布IRB類型路由后,可直接在Leaf節點上使能ARP廣播抑制功能,無需其他配置,同時也利於虛擬機的遷移(詳情可參見 EVPN基本原理)。如果只需發布32位主機IP路由,建議選擇發布IRB類型路由。
IP前綴類型路由既能發布32位主機IP路由又能發布網段路由。但是,在發布32位主機IP路由時,需先將主機IP地址生成直連路由,這會影響虛擬機的遷移。因此,如果只需發布32位主機IP路由,不建議選擇IP前綴類型路由。只有需要發布網段路由時(場景見上文),才需選擇IP前綴類型路由。
 
根據主機IP路由發布方式的不同,動態建立VXLAN隧道的過程有以下兩種:
1.2.1通過IRB類型路由發布主機IP路由(如圖4所示)
圖4 動態建立VXLAN隧道示意圖-2

1.Host1首次與Leaf1通信時,通過動態ARP報文,Leaf1學習到Host1的ARP表項。同時,Leaf1根據Host1所在的二層廣播域找到綁定VBDIF接口的 L3VPN實例,獲取關聯的 三層VNILeaf1上的EVPN實例根據上述信息生成 IRB類型路由,如 圖2-29所示。其中,主機IP地址存放在IP Address Length和IP Address字段中,三層VNI存放在MPLS Label2字段中。
圖2-29  IRB類型路由
2.Leaf1上的 EVPN實例從IRB類型路由中獲取Host1的主機IP地址、三層VNI, 發給本端L3VPN實例,L3VPN實例在其路由表中 保存Host1的主機 IP路由,如 圖2-30所示。
圖2-30  本端主機IP路由
3.Leaf1向Leaf2發送BGP EVPN路由, 該路由攜帶 本端EVPN實例的ERT、擴展團體屬性、路由下一跳屬性以及IRB類型路由。其中,擴展團體屬性攜帶的是隧道類型(取值是VXLAN隧道)、本端VTEP的MAC地址;路由下一跳屬性攜帶的是本端的VTEP IP地址。
4.Leaf2收到Leaf1發來的BGP EVPN路由后,同時進行如下處理:
      • 檢查該路由攜帶的ERT,如果與本端EVPN實例的IRT相同,則接收該路由,否則丟棄該路由。EVPN實例獲取到IRB類型路由后,還能提取到其中包含的ARP類型路由,用於主機ARP通告。
      • 檢查該路由攜帶的ERT,如果與本端L3VPN實例的IRT相同,則接收該路由,否則丟棄該路由。然后,L3VPN實例獲取到該路由攜帶的IRB類型路由,從中提取Host1的主機IP地址、三層VNI,在其路由表中保存Host1的主機IP路由,並將路由的下一跳迭代出接口設置為VXLAN隧道接口,如圖2-31所示。

                               圖2-31  遠端主機IP路由

                             

      • 在通過EVPN實例或L3VPN實例接收該路由后,Leaf2通過下一跳屬性獲取Leaf1的VTEP IP地址,如果該VTEP IP地址是三層路由可達的,則建立一條到Leaf1的VXLAN隧道。
Leaf1建立到Leaf2的VXLAN隧道的過程與上述相同,這里不再贅述。

1.2.2 通過IP前綴類型路由發布主機IP路由(如圖2-32所示)
 
1.3 MAC地址動態學習
在VXLAN網絡中,為了實現終端租戶的互通,支持MAC地址動態學習,不需要網絡管理員手工維護,大大減少了維護工作量。在分布式網關場景中,跨子網互通需要進行三層轉發,MAC地址學習只在本端主機和網關之間通過動態ARP報文實現,這里不再詳述。下面結合 圖12,詳細介紹一下 同子網主機互通時,MAC地址動態學習的過程:
圖12 MAC地址動態學習
 
 
1、Host3首次與Leaf1通信時,通過動態ARP報文,Leaf1學習到Host3的MAC地址、BDID(二層廣播域標識)和報文入接口(即二層子接口對應的物理接口Port1)的對應關系,並在 本地MAC表中生成Host3的MAC表項,其出接口為Port1。同時,Leaf1 根據Host3的ARP表項生成BGP EVPN路由並發送給對等體Leaf2,該路由攜帶本端EVPN實例的出方向VPN-Target、路由下一跳屬性以及BGP EVPN協議新定義的 Type2路由即MAC/IP路由。其中,路由下一跳屬性攜帶的是本端VTEP IP地址;Host3的MAC地址存放在MAC Address Length和MAC Address字段中,二層VNI存放在MPLS Label1字段中。
 
2、Leaf2收到Leaf1發來的BGP EVPN路由后,首先檢查該路由攜帶的EVPN實例的出方向VPN-Target,如果與本端EVPN實例的入方向VPN-Target相等,則接收該路由,否則丟棄該路由。在接收該路由后,Leaf2獲得Host3的MAC地址、BDID和Leaf1上VTEP IP地址(下一跳屬性)的對應關系,並在本地的 MAC表中生成Host3的MAC表項,其出接口需根據下一跳進行迭代,最終迭代結果是指向Leaf1的VXLAN隧道
Leaf1學習Host2的主機MAC的過程與上述過程相同,這里不再贅述。
 
1.4 報文轉發
1.4.1 同子網報文轉發
1.轉發已知單播流量:查mac表
2.轉發BUM流量:頭端復制
1.4.2 不同子網報文轉發
跨子網報文轉發需要通過三層網關實現。在分布式網關場景中,跨子網報文轉發的流程如 圖17所示。
圖17 跨子網報文轉發示意圖
  1. Leaf1收到來自Host1的報文,檢測到報文的目的MAC是網關接口MAC,判斷該報文需要進行三層轉發
  2. Leaf1根據報文的入接口找到對應的二層廣播域,然后找到綁定該廣播域VBDIF接口的L3VPN實例。根據報文的目的IP地址,查找該L3VPN實例下的路由表(如圖18所示),獲取該路由對應的三層VNI,以及下一跳地址。再根據出接口是VXLAN隧道,判斷需要進行VXLAN封裝:
    • 根據VXLAN隧道的目的IP和源IP地址,獲取對應的MAC地址,並將內層目的MAC和源MAC替換。
    • 將三層VNI封裝到報文中。
    • 外層封裝VXLAN隧道的目的IP和源IP地址,源MAC地址為Leaf1的NVE1接口MAC地址,目的MAC地址為網絡下一跳的MAC地址。
圖18 L3VPN實例下的主機路由
3、封裝后的報文根據外層MAC和IP信息在IP網絡中傳輸,送達Leaf2。
4、Leaf2收到VXLAN報文后進行解封裝,檢測到報文的目的MAC是自己的MAC地址,判斷該報文需要進行三層轉發。
5、Leaf2根據報文攜帶的三層VNI找到對應的L3VPN實例,通過查找該L3VPN實例下的路由表(如 圖19所示),獲取 報文的下一跳是網關接口地址,然后將目的MAC地址 替換為Host2的MAC地址,源MAC地址替換為Leaf2的MAC地址,轉發給Host2。
圖19 L3VPN實例下的主機路由
Host2向Host1發送報文的過程類似,這里不再贅述。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM