VXLAN(虛擬可延伸區域網路)
/ VEE-ex-lan /
假設你想寄一張明信片,但你和朋友之間的郵政系統只處理標準密封信封、不收裸明信片。簡單的解法:把明信片放進一個寫著朋友郵局地址的信封裡,讓郵政系統照常路由這個信封,再請朋友打開信封拿回明信片。VXLAN 對網路訊框就是這麼做:它把一個乙太網路訊框放進一個普通的 IP/UDP 封包裡,讓它能像一般流量那樣穿越一個有路由的資料中心網路。
具體來說,VXLAN(虛擬可延伸區域網路)是多數資料中心覆疊所用的封裝協定。一個叫 VTEP(VXLAN 通道端點)的裝置——通常是 hypervisor 內的虛擬交換器——接過租戶的乙太網路訊框並把它包起來:先加上一個含 24 位元 VXLAN 網路識別碼(VNI)的 VXLAN 標頭,再加一個 UDP 標頭,再加一個從某實體伺服器寄往另一台的外層 IP 標頭。24 位元的 VNI 允許約 1,600 萬個獨立虛擬網路——遠超過舊有 12 位元 VLAN 上限的 4,094 個,這正是 VXLAN 存在的主要理由。接收端的 VTEP 剝掉外層標頭,把原始訊框交給目的地虛擬機器,而它從不知道自己曾被打通道(tunnel)。
為什麼重要:VXLAN 讓單一實體葉脊結構能承載龐大數量的隔離租戶網路,也讓虛擬機器在遷移到位於不同 IP 子網路的機架後,仍保有它的第二層相鄰性(待在同一個區域網路的錯覺)。因為外層封包是純 IP/UDP,底層就用一般的 ECMP 來路由與負載平衡它。誠實的提醒:額外約 50 位元組的標頭縮小了可用酬載,所以營運者必須提高底層的 MTU(常到 9000 位元組的巨型訊框)以避免分段與有效傳輸量損失;而且 VXLAN 本身提供的是隔離、不是安全——它不加密任何東西,所以機密性仍得靠 IPsec 或 TLS。
伺服器 A(10.1.1.5)上的一台 VM 送一個訊框給伺服器 B 上的一台 VM。A 上的虛擬交換器把它包起來:外層 IP 從 A 的實體位址到 B 的、一個 UDP 標頭、再加上 VNI 為 50000 的 VXLAN。葉脊結構把它當成任何 IP/UDP 封包來路由。伺服器 B 的虛擬交換器看到 VNI 50000,剝掉外包裝,把內層訊框交給正確的租戶 VM。
一個乙太網路訊框被打通道包進 IP/UDP 裡,並標上一個 VNI。
VXLAN 提供的是隔離、不是機密性——它帶著租戶標籤,卻不加密任何東西。此外,它約 50 位元組的負擔,在底層 MTU 未調高時可能造成無聲的分段或丟封包,這是資料中心神祕效能問題的經典來源。