vxlan報文和基本組網

1. 爲什麼需要Vxlan

  普通的VLAN數量只有4096個,無法滿足大規模雲計算IDC的需求,而IDC爲何需求那麼多VLAN呢,因爲目前大部分IDC內部結構主要分爲兩種L2,L3。L2結構裏面,所有的服務器都在一個大的局域網裏面,TOR透明L2,不同交換機上的服務器互通靠MAC地址,通信隔離和廣播隔離靠的vlan,網關在內網核心上。而L3結構這是從TOR級別上就開始用協議進行互聯,網關在TOR上,不同交換機之間的互通靠IP地址。

  在雲計算IDC裏,要求服務器做到虛擬化,原來這個服務器掛在TOR A上,我可以隨意把它遷移到TOR B上,而不需要改變IP地址,這個有點就是L2網路的特長,因爲我這個虛擬服務器和外界(網關之外)通信還靠L3,但是我網關內部互訪是走L2的,這個在L3裏是無法做到的。因爲L3裏每個IP都是唯一的,地址也是固定位置的,除非你整網段物理搬遷。因此如何在L3網絡裏傳輸L2數據呢,這就是overlay技術。

  因此VXLAN(Virtual eXtensible LAN可擴展虛擬局域網)誕生了,基於IP網絡之上,採用的是MAC in UDP技術,本來OSI7層模型裏就是一層疊一層的,這種和GRE/IPSEC等tunnel技術是不是很像,這種封裝技術對中間網絡沒有特殊要求,只要你能識別IP報文即可進行傳送。

好了,解釋清楚了,那麼現在總結爲何需要Vxlan:

  1. 虛擬機規模受到網絡規格的限制,大L2網絡裏,報文通過查詢MAC地址轉發,MAC表容量限制了虛擬機的數量。
  2. 網絡隔離的限制,普通的vlan和VPN配置無法滿足動態網絡調整的需求,同時配置複雜
  3. 虛擬器搬遷受到限制,虛擬機啓動後假如在業務不中斷基礎上將該虛擬機遷移到另外一臺物理機上去,需要保持虛擬機的IP地址和MAC地址等參數保持不變,這就要求業務網絡是一個二層的網絡。

 


2. Vxlan報文格式

 Outer UDP端口使用4798,但可以修改

Outer IP頭封裝:源IP爲發送報文的虛擬機所屬的VTEP的IP地址,目的IP爲目的虛擬機所屬的VTEP IP地址。

Outer的目的IP地址可以是單播和組播地址,單播的情況下,目的IP爲VTEP(Vxlan Tunnel End Point)的IP地址,在多播的情況下引入VXLAN的管理層,利用VNI和IP多播組的映射來確定VTEP。

當目的IP爲接收端的VTEP的IP時,假如不知道這個IP地址,則需要執行ARP請求來獲取,步驟如下:

1.  目標IP被替換成與源虛擬機具有相同VNI的多播組IP地址;

2. 所有VTEP端都接收該多播報文,VTEP查找所在主機上的全部虛擬機來匹配源虛擬機的Inner 目的MAC。
3. 目標VTEP的虛擬機會迴應該多播包,從而獲得目標VTEP的IP地址。

4. 發送端VTEP添加VNI-VTEP-虛擬機MAC的映射關係到自己的VXLAN表中,以避免再次組播學習。

 

Outer 以太封裝:SA爲發送報文的虛擬機所屬的VTEP MAC地址,DA爲目的虛擬機所屬的VTEP上路由表中下一跳MAC地址。


 

3. VXLAN網絡結構

 NVE(Network Virtrualization Edge網絡虛擬邊緣節點)是實現網絡虛擬化的功能實體,VM裏的報文經過NVE封裝後,NVE之間就可以在基於L3的網絡基礎上建立起L2虛擬網絡。網絡設備實體以及服務器實體上的VSwitch都可以作爲NVE。

VTEP爲VXLAN隧道的端點,封裝在NVE中,用於VXLAN報文的封裝和解封裝。VTEP與物理網絡相連,分配的地址爲物理網絡IP地址。VXLAN報文中源IP地址爲本節點的VTEP地址,VXLAN報文中目的IP地址爲對端節點的VTEP地址,一對VTEP地址就對應着一個VXLAN隧道。

VNI(VXLAN Network Identifier):VXLAN網絡標識VNI類似VLAN ID,用於區分VXLAN段,不同VXLAN段的虛擬機不能直接二層相互通信。一個VNI表示一個租戶,即使多個終端用戶屬於同一個VNI,也表示一個租戶。VNI由24比特組成,支持多達16M((2^24-1)/1024^2)的租戶。

VAP(Virtual Access Point):虛擬接入點VAP統一爲二層子接口,用於接入數據報文。爲二層子接口配置不同的流封裝,可實現不同的數據報文接入不同的二層子接口。

 

Vxlan網關

VM之間的通信模式主要有3種:同VNI下的不同VM(分佈在同一實體和不同實體兩種),不同VNI下的跨網訪問,VXLAN和非VXLAN之間的訪問。

VXLAN網關分爲:

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

1. MAC地址爲BUM(broadcast&unknown-unicast&multicast)地址,按照 BUM報文轉發流程進行處理

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

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

VXLAN二層網關:

L2網關主要解決的就是同一VNI下的VM之間的互訪。

VXLAN 三層網關:

L3網關解決的就是不同VNI以及VXLAN和非VXLAN之間的互訪。L3網關分爲集中式網關和分佈式網關,這2者的主要區別就在於L3網關是在leaf上還是在spine上。

 

 如上圖所示,集中式L3 GW在spine上,而分佈式則是L2,L3 GW都在leaf上。當網絡規模較大時,需採用分佈式網關,因集中式spine的ARP表項瓶頸,並且子網流量轉發繞遠。分佈式網關時,VTEP在leaf上。spine節點不感知VXLAN隧道。

需要注意的是當VM1和VM2在同一子網,但是掛在不同leaf上時,他們的三層網關需要配置相同的網關IP地址和MAC地址,當租戶的VM位置移動時,不需要更改網關任何配置。

BUM報文轉發流程

當BUM報文進入VXLAN隧道時,接入端VTEP採用頭端複製方式(接口收到BUM報文後本地VTEP通過控制平面獲取同一VNI的VTEP列表,將收到的BUM報文根據VTEP列表進行復制併發送給屬於同一VNI的所有VTEP))進行報文的VXLAN封裝,BUM出VXLAN隧道時,出口端VTEP對報文解封裝,

綜述:VXLAN網絡結構定義完了,這裏用通俗易懂的話解釋一遍:在一臺實體服務器上可以虛擬出一個交換機來,這個交換機就是VSwitch,而這個VSwitch下掛的不再是實體服務器,而是一個個VM,一個VM其實就是一個租戶租用的服務器,不同租戶之間肯定是不能互訪的,要不然租戶數據的安全性如何保障,這個隔離就是靠的VNI這個ID,其實這個你可以向下VLAN是如何隔離的,目的就是爲了隔離租戶。我一個租戶有2個VM的話,那麼我這2個之間應該可以互訪吧。所以說基於VNI定義的租戶,而非基於VM。內部的結構說清楚了再來說上行如何訪問,在一個L2交換機你要跨網訪問必然要經過網關,這個網關的IP地址就是VTEP IP,在網絡上有個概念叫arp-proxy,一般用途是爲了保護內部私有網絡,外界的所有應答都有網關來代替回答(可以理解爲門衛)。在這裏外界只需要你的VTEP IP即可,對端報文到達VTEP這個網關後自己在內部走L2進行轉發。因此VXLAN報文中的目的IP就是對端的網關(VTEP IP),而源地址自然也是自己的網關(VTEP IP)。而對於不同leaf上的同一VNI的VM來說,他們的VTEP IP肯定要配置相同,想下同一vlan下的服務器的網關是如何配置的就明白了。



此處爲vxlan學習筆記整理而來

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