Vxlan學習筆記 原理

2021-08-18 22:26:09 字數 3696 閱讀 9810

普通的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:

虛擬機器規模受到網路規格的限制,大l2網路裡,報文通過查詢mac位址**,mac表容量限制了虛擬機器的數量。

網路隔離的限制,普通的vlan和vpn配置無法滿足動態網路調整的需求,同時配置複雜

虛擬器搬遷受到限制,虛擬機器啟動後假如在業務不中斷基礎上將該虛擬機器遷移到另外一台物理機上去,需要保持虛擬機器的ip位址和mac位址等引數保持不變,這就要求業務網路是乙個二層的網路。

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位址。

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統一為二層子介面,用於接入資料報文。為二層子介面配置不同的流封裝,可實現不同的資料報文接入不同的二層子介面。

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報文進入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學習筆記 原理

普通的vlan數量只有4096個,無法滿足大規模雲計算idc的需求,而idc為何需求那麼多vlan呢,因為目前大部分idc內部結構主要分為兩種l2,l3。l2結構裡面,所有的伺服器都在乙個大的區域網裡面,tor透明l2,不同交換機上的伺服器互通靠mac位址,通訊隔離和廣播隔離靠的vlan,閘道器在內...

Vxlan學習筆記 原理

普通的vlan數量只有4096個,無法滿足大規模雲計算idc的需求,而idc為何需求那麼多vlan呢,因為目前大部分idc內部結構主要分為兩種l2,l3。l2結構裡面,所有的伺服器都在乙個大的區域網裡面,tor透明l2,不同交換機上的伺服器互通靠mac位址,通訊隔離和廣播隔離靠的vlan,閘道器在內...

Vxlan學習筆記 原理

普通的vlan數量只有4096個,無法滿足大規模雲計算idc的需求,而idc為何需求那麼多vlan呢,因為目前大部分idc內部結構主要分為兩種l2,l3。l2結構裡面,所有的伺服器都在乙個大的區域網裡面,tor透明l2,不同交換機上的伺服器互通靠mac位址,通訊隔離和廣播隔離靠的vlan,閘道器在內...