VXLAN 或 Virtual Extended Local Area Network 是一種網絡虛擬化技術,廣泛應用于大型二層網絡。源網絡設備和目的網絡設備之間建立邏輯VXLAN隧道,采用UDP(User Datagram Protocol)封裝方式MAC,即將虛擬機發送的原始以太網報文完全封裝在UDP報文中,然后在層封裝物理網絡的IP包頭和以太網包頭。這樣,封裝后的報文就可以像普通的IP報文一樣通過路由網絡進行轉發。路由機翼將虛擬機從第 2 層和第 3 層網絡的結構限制中完全解放出來。
為什么需要 VXLAN?
為什么需要 VXLAN?這與服務器虛擬化的趨勢息息相關:一方面,虛擬機發生動態遷移,要求虛擬機的IP和MAC地址在遷移前后不能改變;
虛擬機的實時遷移
服務器虛擬化技術將物理服務器虛擬化為多個稱為虛擬機 (VM) 的邏輯服務器。服務器虛擬化可以有效提高服務器利用率,降低能耗,降低運營成本,因此虛擬化技術得到廣泛應用。
服務器虛擬化后,虛擬機的動態遷移就變得正常了,為了保證遷移過程中服務不中斷,不僅要保持虛擬機的IP地址不變,還要保持虛擬機的運行狀態machine 虛擬機遷移時的機器。它還必須保持相同的狀態(例如 TCP 會話狀態),以便動態虛擬機遷移只能在相同的第 2 層域中執行。但不能跨二層域遷移。
傳統的三層網絡架構限制了虛擬機的動態遷移范圍。如下圖所示,遷移只能在小范圍內進行,應用受到嚴重限制。
傳統的三層網絡架構限制了虛擬機的動態遷移范圍
為了打破這個限制,實現虛擬機的大規模甚至跨區域動態遷移,需要遷移中可能涉及的所有服務器都包含在同一個二層網絡域中,因此可以輕松地進行 VM 的大規模遷移。
眾所周知,同一個二層交換機可以實現連接的服務器之間的二層通信,當服務器從二層交換機的一個端口遷移到另一個端口時,IP地址可以保持不變。這樣可以滿足動態虛擬機遷移的需要。這就是 VXLAN 的設計理念和目標。
VXLAN提供了一種方法論:基于IP網絡,當源端和目的端之間有通信需求時,在IP網絡上創建虛擬隧道,透明轉發用戶數據。任何兩個點都可以通過 VXLAN 隧道進行通信,而忽略底層網絡的結構和細節。從服務器的角度來看,VXLAN為他們把整個骨干網虛擬成一個巨大的“二層交換機”,所有的服務器都連接到這個虛擬的二層交換機上。但是如何在基礎網絡中轉發是這個“巨無霸”內部的事情,服務器根本不用操心。
VXLAN將整個骨干網虛擬成一個巨大的“二層交換機”
基于這個“Layer 2 Switch”模型,很容易理解為什么VXLAN現在可以實現動態VM遷移:將虛擬機從“Layer 2 Switch”的一個端口交換到另一個端口,而無需更改IP地址全部。
租戶數量的增加需要能夠隔離大量租戶的網絡
在傳統的 VLAN 網絡中,標準定義支持的可用 VLAN 數量只有 4000 個左右。服務器虛擬化后,一臺物理服務器托管多個虛擬機,每個虛擬機都有獨立的 IP 地址和 MAC 地址,服務器對應的數量成倍增加。比如公有云或者其他大型虛擬化云數據中心,往往要容納數萬甚至更多的租戶,VLAN能力顯然是不夠的。
VXLAN如何解決以上問題? VXLAN在VXLAN幀頭中引入了一個類似于VLAN-ID的網絡標識符,稱為VXLAN網絡標識符VNI(VXLAN網絡ID)由24位組成,理論上最多可以支持1600萬個VXLAN網段,從而滿足大型和多樣化租戶之間的識別和隔離需求。
VXLAN 和 VLAN 有什么區別?
VLAN作為一種傳統的網絡隔離技術,標準定義的VLAN只有4000個左右,無法滿足大型二層網絡中租戶之間的隔離要求。此外,二層VLAN范圍一般較小且固定,無法支持虛擬機的大規模動態遷移。
VXLAN完美彌補了VLAN的上述不足。一方面,通過VXLAN中的24位VNI字段,提供高達1600萬租戶的識別能力,遠大于VLAN的4000;另一方面,VXLAN本質上是由兩臺交換機組成,在兩臺交換機之間建立了一條虛擬隧道,穿越基礎IP網絡,基礎IP網絡到一個巨大的“二層交換機”,即一個大的二層網絡被虛擬化了大規模動態虛擬機遷移的需求。
雖然 VXLAN 名義上是 VLAN 的擴展協議,但 VXLAN 建立虛擬隧道的能力與 VLAN 有很大的不同。
讓我們介紹一下VXLAN數據包是什么樣的。
VXLAN 數據包格式(例如,外部 IP 標頭為 IPv4 格式)
如上圖所示,VTEP對VM發送的原始以太網幀(原始L2幀)進行如下“包裝”:
VXLAN Header 添加一個 VXLAN 頭(8 字節),其中包含一個 24 位 VNI 字段,用于定義 VXLAN 網絡中的不同租戶。此外,它還包含 VXLAN 標志(8 位,值 00001000)和兩個保留字段(分別為 24 位和 8 位)。