【龍田百科】VXLAN隧道(dào)技術詳解
發(fā)布時間:2023-12-13
VXLAN即虛拟擴展局域網,是大二層網絡中廣泛使用的網絡虛拟化技術。在源網絡設備與目的網絡設備之間建立一條邏輯VXLAN隧道(dào),采用MAC in UDP(User Datagram Protocol)封裝方式,即,將(jiāng)虛拟機發(fā)出的原始以太報文完整的封裝在UDP報文中,然後(hòu)在外層使用物理網絡的IP報文頭和以太報文頭封裝,這(zhè)樣(yàng),封裝後(hòu)的報文就(jiù)像普通IP報文一樣(yàng),可以通過(guò)路由網絡轉發(fā),這(zhè)就(jiù)像給二層網絡的虛拟機插上了路由的翅膀,使虛拟機徹底擺脫了二、三層網絡的結構限制。
爲什麼(me)需要VXLAN
與服務器的虛拟化趨勢緊密相關,一方面(miàn)虛拟機動态遷移,要求虛拟機在遷移前後(hòu)的IP和MAC地址不能(néng)改變;另一方面(miàn),租戶數量激增,需要網絡提供隔離海量租戶的能(néng)力。
虛拟機動态遷移
服務器虛拟化技術是把一台物理服務器虛拟化成(chéng)多台邏輯服務器,這(zhè)種(zhǒng)邏輯服務器被(bèi)稱爲虛拟機(VM)。通過(guò)服務器虛拟化,可以有效地提高服務器的利用率,降低能(néng)源消耗,降低運營成(chéng)本,所以虛拟化技術目前得到了廣泛的應用。
在服務器虛拟化後(hòu),虛拟機動态遷移變得常态化,爲了保證遷移時業務不中斷,就(jiù)要求在虛拟機遷移時,不僅虛拟機的IP地址不變,而且虛拟機的運行狀态也必須保持原狀(例如TCP會(huì)話狀态),所以虛拟機的動态遷移隻能(néng)在同一個二層域中進(jìn)行,而不能(néng)跨二層域遷移。
傳統的三層網絡架構限制了虛拟機的動态遷移範圍,遷移隻能(néng)在一個較小的局部範圍内進(jìn)行,應用受到了極大的限制。
爲了打破這(zhè)種(zhǒng)限制,實現虛拟機的大範圍甚至跨地域的動态遷移,就(jiù)要求把VM遷移可能(néng)涉及的所有服務器都(dōu)納入同一個二層網絡域,這(zhè)樣(yàng)才能(néng)實現VM的大範圍無障礙遷移。
衆所周知,同一台二層交換機可以實現下挂服務器之間的二層通信,而且服務器從該二層交換機的一個端口遷移到另一個端口時,IP地址是可以保持不變的。這(zhè)樣(yàng)就(jiù)可以滿足虛拟機動态遷移的需求。VXLAN的設計理念和目标正是由此而來的。
VXLAN提供一套方法論,在IP網絡基礎上,當源和目的之間有通信需求時,便在IP網絡之上創建一條虛拟的隧道(dào),透明轉發(fā)用戶數據。任意兩(liǎng)點之間都(dōu)能(néng)通過(guò)VXLAN隧道(dào)來通信,忽略底層網絡的結構和細節。從服務器的角度看,VXLAN爲它們將(jiāng)整個基礎網絡虛拟成(chéng)了一台巨大的“二層交換機”,所有服務器都(dōu)連接在這(zhè)台虛拟二層交換機上。

VXLAN將(jiāng)整個基礎網絡虛拟成(chéng)了一台巨大的“二層交換機”
基于這(zhè)種(zhǒng)“二層交換機”的模型,就(jiù)很容易理解爲什麼(me)VXLAN可以實現VM動态遷移了:將(jiāng)虛拟機從“二層交換機”的一個端口換到另一個端口,完全無需變更IP地址。
租戶數量激增
在傳統的VLAN網絡中,标準定義所支持的可用VLAN數量隻有4000個左右。服務器虛拟化後(hòu),一台物理服務器中承載了多台虛拟機,每個虛拟機都(dōu)有獨立的IP地址和MAC地址,相當于服務器成(chéng)倍擴大。例如,公有雲或其它大型虛拟化雲數據中心動辄需容納上萬甚至更多租戶,VLAN顯然無法支撐大量的租戶。
針對(duì)以上問題,VXLAN在幀頭中引入了類似VLAN ID的網絡标識,稱爲VXLAN網絡标識VNI(VXLAN Network ID),由24比特組成(chéng),理論上可支持多達16M的VXLAN段,從而滿足了大規模不同租戶之間的标識、隔離需求。
VXLAN與VLAN之間有何不同
VLAN作爲傳統的網絡隔離技術,在标準定義中VLAN的數量隻有4000個左右,無法滿足大二層網絡的租戶間隔離需求。另外,VLAN的二層範圍一般較小且固定,無法支持虛拟機大範圍的動态遷移。
VXLAN完美地彌補了VLAN的上述不足,一方面(miàn)通過(guò)VXLAN中的24比特VNI字段,提供多達16M租戶的标識能(néng)力,遠大于VLAN的4000;另一方面(miàn),VXLAN本質上在兩(liǎng)台交換機之間構建了一條穿越基礎IP網絡的虛拟隧道(dào),將(jiāng)IP基礎網絡虛拟成(chéng)一個巨型“二層交換機”,即大二層網絡,滿足虛拟機大範圍動态遷移的需求。
雖然從名字上看,VXLAN是VLAN的一種(zhǒng)擴展協議,但VXLAN構建虛拟隧道(dào)的本領已經(jīng)與VLAN迥然不同。
VXLAN報文格式(以外層IP頭爲IPv4格式爲例)
如上圖所示,VTEP對(duì)VM發(fā)送的原始以太幀(Original L2 Frame)進(jìn)行了以下“包裝”:
-
VXLAN Header增加VXLAN頭(8字節),其中包含24比特的VNI字段,用來定義VXLAN網絡中不同的租戶。此外,還(hái)包含VXLAN Flags(8比特,取值爲00001000)和兩(liǎng)個保留字段(分别爲24比特和8比特)。
-
UDP HeaderVXLAN頭和原始以太幀一起(qǐ)作爲UDP的數據。UDP頭中,目的端口号(VXLAN Port)固定爲4789,源端口号(UDP Src. Port)是原始以太幀通過(guò)哈希算法計算後(hòu)的值。
-
Outer IP Header封裝外層IP頭。其中,源IP地址(Outer Src. IP)爲源VM所屬VTEP的IP地址,目的IP地址(Outer Dst. IP)爲目的VM所屬VTEP的IP地址。
-
Outer MAC Header封裝外層以太頭。其中,源MAC地址(Src. MAC Addr.)爲源VM所屬VTEP的MAC地址,目的MAC地址(Dst. MAC Addr.)爲到達目的VTEP的路徑中下一跳設備的MAC地址。VXLAN如何工作
VXLAN中的VTEP和VNI
兩(liǎng)台服務器之間通過(guò)VXLAN網絡進(jìn)行通信,在兩(liǎng)台TOR交換機之間建立了一條VXLAN隧道(dào),TOR交換機將(jiāng)服務器發(fā)出的原始數據幀加以“包裝”,讓原始報文可以在承載網絡(比如IP網絡)上傳輸。當到達目的服務器所連接的TOR交換機後(hòu),離開(kāi)VXLAN隧道(dào),并將(jiāng)原始數據幀恢複出來,繼續轉發(fā)給目的服務器。
什麼(me)是VXLAN VTEN
VTEP(VXLAN Tunnel Endpoints,VXLAN隧道(dào)端點)是VXLAN網絡的邊緣設備,是VXLAN隧道(dào)的起(qǐ)點和終點,源服務器發(fā)出的原始數據幀,在VTEP上被(bèi)封裝成(chéng)VXLAN格式的報文,并在IP網絡中傳遞到另外一個VTEP上,并經(jīng)過(guò)解封轉還(hái)原出原始的數據幀,最後(hòu)轉發(fā)給目的服務器。
什麼(me)是VXLAN VNI
VNI還(hái)可分爲二層VNI和三層VNI,它們的作用不同,二層VNI是普通的VNI,用于VXLAN報文同子網的轉發(fā);三層VNI和VPN實例進(jìn)行關聯,用于VXLAN報文跨子網的轉發(fā)。
VXLAN的網關
根據三層網關部署方式的不同,VXLAN三層網關又可以分爲集中式網關和分布式網關。
- VXLAN集中式網關 -
集中式網關是指將(jiāng)三層網關集中部署在一台設備上,如下圖所示,所有跨子網的流量都(dōu)經(jīng)過(guò)這(zhè)個三層網關轉發(fā),實現流量的集中管理。

VXLAN集中式網關組網圖
部署集中式網關的優點和缺點如下:
-優點:
-
對(duì)跨子網流量進(jìn)行集中管理,網關的部署和管理比較簡單。
-缺點:
-
轉發(fā)路徑不是最優:同一二層網關下跨子網的三層流量都(dōu)需要經(jīng)過(guò)集中三層網關繞行轉發(fā)(如圖中藍色虛線所示)。
-
ARP表項規格瓶頸:由于采用集中三層網關,通過(guò)三層網關轉發(fā)的終端的ARP表項都(dōu)需要在三層網關上生成(chéng),而三層網關上的ARP表項規格有限,限制了網絡的擴展。
- VXLAN分布式網關 -
通過(guò)部署分布式網關可以解決集中式網關部署的缺點。VXLAN分布式網關是指在典型的“Spine-Leaf”組網結構下,將(jiāng)Leaf節點作爲VXLAN隧道(dào)端點VTEP,每個Leaf節點都(dōu)可作爲VXLAN三層網關(同時也是VXLAN二層網關),Spine節點不感知VXLAN隧道(dào),隻作爲VXLAN報文的轉發(fā)節點。如下圖所示,Server1和Server2不在同一個網段,但是都(dōu)連接到同一個Leaf節點。Server1和Server2通信時,流量隻需要在該Leaf節點上轉發(fā),不再需要經(jīng)過(guò)Spine節點。
部署分布式網關時:
Spine節點:
-
關注于高速IP轉發(fā),強調的是設備的高速轉發(fā)能(néng)力。
Leaf節點:
-
作爲VXLAN網絡中的二層網關設備,與物理服務器或VM對(duì)接,用于解決終端租戶接入VXLAN虛拟網絡的問題。
-
作爲VXLAN網絡中的三層網關設備,進(jìn)行VXLAN報文封裝/解封裝,實現跨子網的終端租戶通信,以及外部網絡的訪問。

VXLAN分布式網關示意圖
特點:
-
同一個Leaf節點既可以做VXLAN二層網關,也可以做VXLAN三層網關,部署靈活。
-
Leaf節點隻需要學(xué)習自身連接服務器的ARP表項,而不必像集中三層網關一樣(yàng),需要學(xué)習所有服務器的ARP表項,解決了集中式三層網關帶來的ARP表項瓶頸問題,網絡規模擴展能(néng)力強。
VXLAN隧道(dào)建立标準
“大二層網絡”可以突破物理上的界限,實現“大二層網絡”中VM之間的通信,同一“大二層網絡”内的VTEP之間都(dōu)需要建立VXLAN隧道(dào)。VTEP_1連接的VM、VTEP_2連接的VM以及VTEP_3連接的VM之間需要“大二層”互通,那VTEP_1、VTEP_2和VTEP_3之間就(jiù)需要兩(liǎng)兩(liǎng)建立VXLAN隧道(dào)。
VXLAN隧道(dào)的建立
VXLAN隧道(dào)由一對(duì)VTEP IP地址确定,創建VXLAN隧道(dào)實際上是兩(liǎng)端VTEP獲取對(duì)端VTEP IP地址的過(guò)程,隻要對(duì)端VTEP IP地址是三層路由可達的,VXLAN隧道(dào)就(jiù)可以建立成(chéng)功。
VXLAN隧道(dào)的建立分爲靜态方式和動态方式兩(liǎng)種(zhǒng):
-
靜态方式沒(méi)有控制平面(miàn),用戶通過(guò)手動指定VXLAN隧道(dào)的源IP爲本端VTEP的IP、目的IP爲對(duì)端VTEP的IP,建立VXLAN隧道(dào)。靜态方式手工配置工作量大,靈活性較差,不适合大規模的組網場景。
-
動态方式的VXLAN隧道(dào)的建立借助VXLAN EVPN協議作爲VXLAN的控制平面(miàn),在兩(liǎng)端VTEP之間建立BGP EVPN對(duì)等體,然後(hòu)對(duì)等體之間利用VXLAN EVPN路由實現VTEP的自動發(fā)現、主機信息相互通告等,從而實現動态建立VXLAN隧道(dào)。數據平面(miàn)則依據控制平面(miàn)建立的轉發(fā)表項執行報文的轉發(fā)。動态方式靈活性高,适合大規模的VXLAN組網場景。
VXLAN網絡中的報文如何轉發(fā)
集中式VXLAN中同子網互通流程

同子網VM互通組網圖
VM_A、VM_B和VM_C屬于同網段。此時,VM_A想與VM_C進(jìn)行通信,首次進(jìn)行通信,報文進(jìn)行如下處理:
-
VM_A上沒(méi)有VM_C的MAC地址,所以會(huì)發(fā)送ARP廣播報文請求VM_C的MAC地址。
-
VTEP_1收到ARP請求後(hòu),先進(jìn)行VXLAN封裝,然後(hòu)將(jiāng)VXLAN報文複制多份分别發(fā)送給所有的對(duì)端VTEP。
-
報文到達VTEP_2和VTEP_3後(hòu),VTEP對(duì)報文進(jìn)行解封裝,得到VM_A發(fā)送的原始報文。VTEP_2和VTEP_3在對(duì)應的二層域内廣播。
-
當VM_C收到該請求報文後(hòu),發(fā)現目的IP與本機IP相同,因此VM_C將(jiāng)進(jìn)行ARP應答。而其他VM收到該請求報文會(huì)丢棄。
經(jīng)過(guò)上述過(guò)程,VM_A和VM_C均已學(xué)習到了對(duì)方的MAC地址。之後(hòu),VM_A和VM_C將(jiāng)采用單播方式進(jìn)行通信。
集中式VXLAN中跨子網互通流程
不同子網VM互通流程示意
跨子網報文轉發(fā)需要通過(guò)三層網關實現。如上圖所示,VM_A、VM_B屬于不同網段。VM_A與VM_B進(jìn)行通信的報文處理過(guò)程如下:
-
VM_A先將(jiāng)數據報文發(fā)送給VTEP_1。
-
VTEP_1收到後(hòu)進(jìn)行VXLAN封裝,然後(hòu)將(jiāng)VXLAN報文發(fā)送給對(duì)端VTEP_3。
-
VTEP_3收到VXLAN報文後(hòu)進(jìn)行解封裝,發(fā)現目的MAC是三層網關接口BDIF的MAC地址MAC_10,而目的IP地址爲IP_B(10.1.20.1),因此需要進(jìn)行三層轉發(fā)。
-
VTEP_3根據路由表查找到IP_B的下一跳,發(fā)現出接口爲BDIF 20,VTEP_3將(jiāng)報文重新進(jìn)行VXLAN封裝,然後(hòu)將(jiāng)VXLAN報文發(fā)送給對(duì)端VTEP_2。
-
報文到達VTEP_2後(hòu),VTEP_2對(duì)報文進(jìn)行解封裝,并將(jiāng)其發(fā)送給VM_B。
*注:本文素材來自華爲,版權歸作者所有