網路常用技術VXLAN詳解

1。 VXLAN 簡介

VXLAN 全稱是

Virtual eXtensible Local Area Network

,虛擬可擴充套件的區域網。它是一種 overlay 技術,透過三層的網路來搭建虛擬的二層網路。每一個技術出來都有它要解決的問題 VXLAN 也不例外,那麼我們先看看 VXLAN 到底要解決哪些問題。

▶ 虛擬化(虛擬機器和容器)的興起使得一個數據中心會有成千上萬的機器需要通訊,而傳統的 VLAN 技術只能支援 4096 個網路上限,已經滿足不了不斷擴充套件的資料中心規模

▶ 越來越多的資料中心(尤其是公有云服務)需要提供多租戶的功能,不同使用者之間需要獨立地分配 ip 和 MAC 地址,如何保證這個功能的擴充套件性和正確性也是一個待解決的問題

▶ 雲計算業務對業務靈活性要求很高,虛擬機器可能會大規模遷移,並保證網路一直可用也就是大二層的概念。解決這個問題同時保證二層的廣播域不會過分擴大,也是雲計算網路的要求

傳統二層+三層的網路在應對這些要求時變得力不從心,雖然很多改進型的技術比如堆疊、SVF、TRILL 等能夠增加二層的範圍,努力改進經典網路,但是要做到對網路改動的同時保證靈活性高卻非常困難。

為了解決這些問題,有很多方案被提出來,vxlan 就是其中之一。vxlan 是 VMware、Cisco 等一眾大型企業共同推出的,目前標準文件在 RFC7348。

2。 VXLAN 模型

vxlan 這類隧道網路的一個特點是對原有的網路架構影響小,原來的網路不需要做任何改動,在原來網路基礎上架設一層新的網路。

vxlan 自然會引入一些新的概念,這部分就講講它們。下面這張圖 是 vxlan 的工作模型,它建立在原來的 IP 網路(三層)上,只要是三層可達(能夠透過 IP 互相通訊)的網路就能部署 vxlan。在每個端點上都有一個 vtep 負責 vxlan 協議報文的封包和解包,也就是在虛擬報文上封裝 vtep 通訊的報文頭部。物理網路上可以建立多個 vxlan 網路,這些 vxlan 網路可以認為是一個隧道,不同節點的虛擬機器能夠透過隧道直連。每個 vxlan 網路由唯一的 VNI 標識,不同的 vxlan 可以不相互影響。

網路常用技術VXLAN詳解

▶ VTEP(VXLAN Tunnel Endpoints):vxlan 網路的邊緣裝置,用來進行 vxlan 報文的處理(封包和解包)。vtep 可以是網路裝置(比如交換機),也可以是一臺機器(比如虛擬化叢集中的宿主機)

▶ VNI(VXLAN Network Identifier):VNI 是每個 vxlan 的標識,是個 24 位整數,一共有 2^24 = 16,777,216(一千多萬),一般每個 VNI 對應一個租戶,也就是說使用 vxlan 搭建的公有云可以理論上可以支撐千萬級別的租戶

▶ Tunnel:隧道是一個邏輯上的概念,在 vxlan 模型中並沒有具體的物理實體相對應。隧道可以看做是一種虛擬通道,vxlan 通訊雙方(圖中的虛擬機器)認為自己是在直接通訊,並不知道底層網路的存在。從整體來說,每個 vxlan 網路像是為通訊的虛擬機器搭建了一個單獨的通訊通道,也就是隧道。

3. VXLAN部署

(1) 純VXLAN部署場景

對於連線到VXLAN內的虛擬機器,由於虛擬機器的VLAN資訊不再作為轉發的依據,虛擬機器的遷移也就,不再受三層閘道器的限制,可以實現跨越三層閘道器的遷移。

(2) VXLAN與VLAN混合部署

為了實現VLAN和VXLAN之間互通,VXLAN定義了VXLAN閘道器。VXLAN閘道器上同時存在兩種型別的埠:VXLAN埠

和普通埠。

當收到從VXLAN網路到普通網路的資料時,VXLAN閘道器去掉外層包頭,根據內層的原始幀頭轉發到普通埠上;當有資料

從普通網路進入到VXLAN網路時,VXLAN閘道器負責打上外層包頭,並根據原始VLAN ID對應到一個VNI,同時去掉內層包頭

的VLAN ID資訊。相應的如果VXLAN閘道器發現一個VXLAN包的內層幀頭上還帶有原始的二層VLAN ID,會直接將這個包丟棄。

之所以這樣,是VLAN ID是一個本地資訊,僅僅在一個地方的二層網路上起作用,VXLAN是隧道機制,並不依賴VLAN ID進行

轉發,也無法檢查VLAN ID正確與否。因此,VXLAN閘道器連線傳統網路的埠必須配置ACCESS口,不能啟用TRUNK口。