VXLAN介紹——網絡技術

讀者的約束:需要讀者對TCP/IP有較深入的理解。

爲什麼要VXLAN?

●  虛擬機規模受網絡規格限制虛擬機規模受網絡規格限制

在大二層網絡環境下,數據報文是通過查詢MAC地址表進行二層轉發,而MAC地址表的容量限制了虛擬機的數量。

●  網絡隔離能力限制

當前主流的網絡隔離技術是VLAN或***(Virtual Private Network),在大規模的虛擬化網絡中部署存在如下限制:

─  由於IEEE 802.1Q中定義的VLAN Tag域只有12比特,僅能表示4096個VLAN,無法滿足大二層網絡中標識大量用戶羣的需求。

─  傳統二層網絡中的VLAN/***無法滿足網絡動態調整的需求。

●  虛擬機遷移範圍受網絡架構限制

虛擬機啓動後,可能由於服務器資源等問題(如CPU過高,內存不夠等),需要將虛擬機遷移到新的服務器上。爲了保證虛擬機遷移過程中業務不中斷,則需要保證虛擬機的IP地址、MAC地址等參數保持不變,這就要求業務網絡是一個二層網絡,且要求網絡本身具備多路徑的冗餘備份和可靠性。


VXLAN解決的問題

●  針對虛擬機規模受網絡規格限制

VXLAN將虛擬機發出的數據包封裝在UDP中,並使用物理網絡的IP/MAC地址作爲外層頭進行封裝,對網絡只表現爲封裝後的參數。因此,極大降低了大二層網絡對MAC地址規格的需求。

●  針對網絡隔離能力限制

VXLAN引入了類似VLAN ID的用戶標識,稱爲VXLAN網絡標識VNI(VXLAN Network ID),由24比特組成,支持多達16M((2^24-1)/1024^2)的VXLAN段,從而滿足了大量的用戶標識。

●  針對虛擬機遷移範圍受網絡架構限制

通過VXLAN構建大二層網絡,保證了在虛擬遷移時虛擬機的IP地址、MAC地址等參數保持不變。


什麼是VXLAN?

VXLAN-Virtual eXtensible Local Area Network(虛擬化可擴展局域網)

VXLAN是NVO3(Network Virtualization over Layer3)中的一種網絡虛擬化技術,通過將VM或物理服務器發出的數據包封裝在UDP中,並使用物理網絡的IP/MAC作爲報文頭進行封裝,然後在IP網絡上傳輸,到達目的地後由隧道終結點解封裝並將數據發送給目標虛擬機或物理服務器。

NVE-Network Virtual Endpoint

網絡虛擬邊緣節點NVE,是實現網絡虛擬化功能的網絡實體。報文經過NVE封裝轉換後,NVE間就可基於三層基礎網絡建立二層虛擬化網絡。

VTEP-VXLAN Tunnel Endpoints

VTEP是VXLAN隧道端點,封裝在NVE中,用於VXLAN報文的封裝和解封裝。

VNI-VXLAN Network Identifier

VXLAN網絡標識VNI類似VLAN ID,用於區分VXLAN段,不同VXLAN段的虛擬機不能直接二層相互通信。

一個VNI表示一個租戶,即使多個終端用戶屬於同一個VNI,也表示一個租戶。VNI由24比特組成,支持多達16M((2^24-1)/1024^2)的租戶。


數據報文轉發

Vxlan網關

VM之間的通信模式主要有3種:同VNI下的不同VM,不同VNI下的跨網訪問,VXLAN和非VXLAN之間的訪問。如下VXLAN 網關示意圖。

VXLAN網關分爲二層網關和三層網關。

位於同一網段的終端用戶通信,二層網關收到用戶報文後,根據報文中包含的目的MAC類型,報文轉發流程分爲:

●  MAC地址爲BUM(broadcast&unknown-unicast&multicast,廣播&未知單播&組播)地址,按照 BUM報文轉發流程進行處理。

●  MAC地址爲已知單播地址,按照已知單播報文轉發流程進行處理。

三層網關,用於非同一網段的終端用戶通信或VXLAN和非VXLAN用戶間的通信。


二層網關

VXLAN二層網關工作流程

VXLAN二層網關工作流程分爲BUM 報文轉發工作流程和VXLAN已知單播轉發工作流程。

1.  VXLAN BUM報文轉發工作流程

當BUM報文進入VXLAN隧道,接入端VTEP採用頭端複製方式進行報文的VXLAN封裝。BUM報文出VXLAN隧道,出口端VTEP對報文解封轉。BUM報文具體轉發流程如下圖所示。

頭端複製:接口收到BUM(Broadcast&Unknown-unicast&Multicast)報文,本地VTEP通過控制平面獲取屬於同一個VNI的VTEP列表,將收到的BUM報文根據VTEP列表進行復制併發送給屬於同一個VNI的所有VTEP。

通過頭端複製完成BUM報文的廣播,不需要依賴組播路由協議。

1)  Switch_1收到來自終端A的報文,根據報文中接入的端口和VLAN信息獲取對應的二層廣播域,並判斷報文的目的MAC是否爲BUM MAC。

●  是,在對應的二層廣播域內廣播,並跳轉到2)。

●  不是,通過已知單播報文轉發流程。

2)  Switch_1上VTEP根據對應的二層廣播域獲取對應VNI的頭端複製隧道列表,依據獲取的隧道列表進行報文複製,並進行VXLAN封裝。基於每個出端口和VXLAN封裝信息封裝VXLAN頭和外層IP信息,並從出端口轉發。

3)  Switch_2/Switch_3上VTEP收到VXLAN報文後,根據UDP目的端口號、源/目的IP地址、VNI判斷VXLAN報文的合法有效性。依據VNI獲取對應的二層廣播域,然後進行VXLAN解封裝,獲取內層二層報文,判斷報文的目的MAC是否爲BUM MAC。

●  是,在對應的二層廣播域內非VXLAN側進行廣播處理。

●  不是,再判斷是否是本機MAC。

─  是,上送主機處理。

─  不是,在對應的二層廣播域內查找出接口和封裝信息,並跳轉到4)。

4)  Switch_2/Switch_3根據查找到的出接口和封裝信息,爲報文添加VLAN Tag,轉發給對應的終端B/C。

終端B/C迴應終端A的消息,按照已知單播報文轉發流程進行轉發。

2.  VXLAN已知單播轉發工作流程

已知單播報文具體轉發流程如下圖所示。

1)  Switch_1收到來自終端A的報文,根據報文中接入的端口和VLAN信息獲取對應的二層廣播域,並判斷報文的目的MAC是否爲已知單播MAC。

●  是,再判斷是否是本機MAC。

─  是,上送主機處理。

─  不是,在對應的二層廣播域內查找出接口和封裝信息,並跳轉到2)。

●  不是,在對應的二層廣播域內廣播,並跳轉到2)。

2)  witch_1上VTEP根據查找到的出接口和封裝信息進行VXLAN封裝和報文轉發。

3)  Switch_2上VTEP收到VXLAN報文後,根據UDP目的端口號、源/目的IP地址、VNI判斷VXLAN報文的合法有效性。依據VNI獲取對應的二層廣播域,然後進行VXLAN解封裝,獲取內層二層報文,判斷報文的目的MAC是否爲已知單播報文MAC。

●  是,在對應的二層廣播域內查找出接口和封裝信息,並跳轉到4)。

●  不是,再判斷是否是本機MAC。

─  是,上送主機處理。

─  不是,通過BUM報文轉發流程。

4)  Switch_2根據查找到的出接口和封裝信息,爲報文添加VLAN Tag,轉發給對應的終端B。

三層網關

不同網段的VXLAN間通信,及VXLAN和非VXLAN的通信,需要通過IP路由實現。

在三層網關上創建BD,將VNI以1:1方式映射到BD,基於BD創建BDIF接口,通過BDIF接口配置IP地址實現不同網段的VXLAN間,及VXLAN和非VXLAN的通信。

BDIF接口類似VLANIF接口。

三層網關分類

L3網關分爲集中式網關和分佈式網關。

集中式網關,南北向/東西向的流量都需要經過網關,本地跨子網流量也通過集中式網關進行轉發,流量迂迴。

分佈式網關,跨子網流量也是最優路徑轉發,只有南北向的流量壓力,沒有東西向的流量壓力。

分佈式網關分爲軟件分佈式網關和硬件分佈式網關,其中軟件分佈式網關位於vSwitch, vSwitch實現VXLAN封裝和解封裝,通過DVR實現跨子網東西向流量轉發。硬件分佈式網關位於硬件網絡邊緣設備,由硬件網絡設備做VXLAN封裝和解封裝。

報文轉發流程

VXLAN二層網關工作流程分爲BUM 報文轉發工作流程和VXLAN已知單播轉發工作流程。

不同網段的VXLAN網絡之間通信,以及不同網段VXLAN網絡和非VXLAN網絡的通信,需要通過VXLAN三層網關實現,VXLAN三層網關工作流程如下:

三層網關通信具體實現過程如下:

1.  作爲VXLAN二層網關的Switch_4收到VXLAN報文後進行解封裝,確認內層報文中的DMAC是否是本網關接口的MAC地址。

●  是,轉給對應目的網段的三層網關處理,並跳轉2。

●  不是,在對應的二層廣播域內查找出接口和封裝信息。

2.  作爲VXLAN三層網關的Switch_4剝除內層報文的以太封裝,解析目的IP。根據目的IP查找ARP表項,確認DMAC、VXLAN隧道出接口及VIN等信息。

●  沒有VXLAN隧道出接口及VIN信息,進行三層轉發。

●  有VXLAN隧道出接口及VIN信息,跳轉3。

3.  作爲VXLAN二層網關的Switch_4重新封裝VXLAN報文,其中內層報文以太頭中的SMAC是網關接口的MAC地址。

Switch_4與其他Switch之間的通信,請參見二層網關實現原理。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章