久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

VXLAN的原理和作用是什么

156次閱讀
沒有評論

共計 8190 個字符,預計需要花費 21 分鐘才能閱讀完成。

本篇文章為大家展示了 VXLAN 的原理和作用是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

什么是 VXLAN

VXLAN(Virtual eXtensible Local Area Network,虛擬擴展局域網),是由 IETF 定義的 NVO3(Network Virtualization over Layer 3)標準技術之一,是對傳統 VLAN 協議的一種擴展。VXLAN 的特點是將 L2 的以太幀封裝到 UDP 報文(即 L2 over L4)中,并在 L3 網絡中傳輸。

如圖 1 - 1 所示,VXLAN 本質上是一種隧道技術,在源網絡設備與目的網絡設備之間的 IP 網絡上,建立一條邏輯隧道,將用戶側報文經過特定的封裝后通過這條隧道轉發。從用戶的角度來看,接入網絡的服務器就像是連接到了一個虛擬的二層交換機的不同端口上(可把藍色虛框表示的數據中心 VXLAN 網絡看成一個二層虛擬交換機),可以方便地通信。

圖 1 -1 VXLAN 是一種隧道技術

VXLAN 已經成為當前構建數據中心的主流技術,是因為它能很好地滿足數據中心里虛擬機動態遷移和多租戶等需求。

為什么需要 VXLAN

為什么需要 VXLAN 呢?這和數據中心服務器側的虛擬化趨勢緊密相關,一方面服務器虛擬化后出現了虛擬機動態遷移,要求提供一個無障礙接入的網絡;另一方面,數據中心規模越發龐大,租戶數量激增,需要網絡提供隔離海量租戶的能力。采用 VXLAN 可以滿足上述兩個關鍵需求。

虛擬機動態遷移,要求提供一個無障礙接入的網絡

什么是服務器虛擬化技術?

傳統的數據中心物理服務器利用率太低,平均只有 10%~15%,浪費了大量的電力能源和機房資源,所以出現了服務器虛擬化技術。如圖 1 - 2 所示,服務器虛擬化技術是把一臺物理服務器虛擬化成多臺邏輯服務器,這種邏輯服務器被稱為虛擬機(VM)。每個 VM 都可以獨立運行,有自己的操作系統、APP,當然也有自己獨立的 MAC 地址和 IP 地址,它們通過服務器內部的虛擬交換機(vSwitch)與外部實體網絡連接。

圖 1 -2  服務器虛擬化示意

通過服務器虛擬化,可以有效地提高服務器的利用率,降低能源消耗,降低數據中心的運營成本,所以虛擬化技術目前得到了廣泛的應用。

什么是虛擬機動態遷移?

所謂虛擬機動態遷移,就是在保證虛擬機上服務正常運行的同時,將一個虛擬機系統從一個物理服務器移動到另一個物理服務器的過程。該過程對于最終用戶來說是無感知的,從而使得管理員能夠在不影響用戶正常使用的情況下,靈活調配服務器資源,或者對物理服務器進行維修和升級。

在服務器虛擬化后,虛擬機動態遷移變得常態化,為了保證遷移時業務不中斷,就要求在虛擬機遷移時,不僅虛擬機的 IP 地址不變,而且虛擬機的運行狀態也必須保持原狀(例如 TCP 會話狀態),所以虛擬機的動態遷移只能在同一個二層域中進行,而不能跨二層域遷移。

如圖 1 - 3 所示,傳統的二三層網絡架構限制了虛擬機的動態遷移范圍,遷移只能在一個較小的局部范圍內進行,應用受到了極大的限制。

圖 1 -3  傳統的二三層網絡架構限制了虛擬機的動態遷移范圍

為了打破這種限制,實現虛擬機的大范圍甚至跨地域的動態遷移,就要求把 VM 遷移可能涉及的所有服務器都納入同一個二層網絡域,這樣才能實現 VM 的大范圍無障礙遷移。

VXLAN 如何滿足虛擬機動態遷移時對網絡的要求?

眾所周知,同一臺二層交換機可以實現下掛服務器之間的二層通信,而且服務器從該二層交換機的一個端口遷移到另一個端口時,IP 地址是可以保持不變的。這樣就可以滿足虛擬機動態遷移的需求了。VXLAN 的設計理念和目標正是由此而來的。

從上一個小節我們可以知道,VXLAN 本質上是一種隧道技術,當源和目的之間有通信需求時,便在數據中心 IP 網絡之上創建一條虛擬的隧道,透明轉發用戶數據。而數據中心內相互通信的需求眾多,這種隧道的建立方式幾乎是全互聯形態才能滿足通信需求。

VXLAN 可以提供一套方法論,在數據中心 IP 網絡基礎上,構建一張全互聯的二層隧道虛擬網絡,保證任意兩點之間都能通過 VXLAN 隧道來通信,并忽略底層網絡的結構和細節。從服務器的角度看,VXLAN 為它們將整個數據中心基礎網絡虛擬成了一臺巨大的“二層交換機”,所有服務器都連接在這臺虛擬二層交換機上。而基礎網絡之內如何轉發都是這臺“巨大交換機”內部的事情,服務器完全無需關心。

圖 1 -4 VXLAN 將整個數據中心基礎網絡虛擬成了一臺巨大的“二層交換機”

數據中心租戶數量激增,要求提供一個可隔離海量租戶的網絡

眾所周知,在傳統的 VLAN 網絡中,標準定義所支持的可用 VLAN 數量只有 4000 個左右。服務器虛擬化后,一臺物理服務器中承載了多臺虛擬機,每個虛擬機都有獨立的 IP 地址和 MAC 地址,相當于接入數據中心的服務器成倍擴大了。另外,公有云或其它大型虛擬化云數據中心動輒需容納上萬甚至更多租戶,VLAN 的能力顯然已經力不從心。

VXLAN 如何來解決上述問題呢?VXLAN 在 VXLAN 幀頭中引入了類似 VLAN ID 的網絡標識,稱為 VXLAN 網絡標識 VNI(VXLAN Network ID),由 24 比特組成,理論上可支持多達 16M 的 VXLAN 段,從而滿足了大規模不同網絡之間的標識、隔離需求。下文我們會介紹 VNI 的詳細作用。

VXLAN 與 VLAN 之間有何不同

VLAN 作為傳統的網絡隔離技術,在標準定義中 VLAN 的數量只有 4000 個左右,無法滿足大型數據中心的租戶間隔離需求。另外,VLAN 的二層范圍一般較小且固定,無法支持虛擬機大范圍的動態遷移。

VXLAN 完美地彌補了 VLAN 的上述不足,一方面通過 VXLAN 中的 24 比特 VNI 字段(如圖 1 - 5 所示),提供多達 16M 租戶的標識能力,遠大于 VLAN 的 4000;另一方面,VXLAN 本質上在兩臺交換機之間構建了一條穿越數據中心基礎 IP 網絡的虛擬隧道,將數據中心網絡虛擬成一個巨型“二層交換機”,滿足虛擬機大范圍動態遷移的需求。

雖然從名字上看,VXLAN 是 VLAN 的一種擴展協議,但 VXLAN 構建虛擬隧道的本領已經與 VLAN 迥然不同了。

下面就讓我們來看下,VXLAN 報文到底長啥樣。

圖 1 -5 VXLAN 報文格式(以外層 IP 頭為 IPv4 格式為例)

如上圖所示,VTEP 對 VM 發送的原始以太幀(Original L2 Frame)進行了以下“包裝”:

VXLAN Header

增加 VXLAN 頭(8 字節),其中包含 24 比特的 VNI 字段,用來定義 VXLAN 網絡中不同的租戶。此外,還包含 VXLAN Flags(8 比特,取值為 00001000)和兩個保留字段(分別為 24 比特和 8 比特)。

UDP Header

VXLAN 頭和原始以太幀一起作為 UDP 的數據。UDP 頭中,目的端口號(VXLAN Port)固定為 4789,源端口號(UDP Src. Port)是原始以太幀通過哈希算法計算后的值。

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 隧道的建立過程,并在這個過程中更好地理解 VXLAN 的工作原理。

什么是 VXLAN 中的 VTEP 和 VNI

下面讓我們來進一步了解 VXLAN 的網絡模型以及一些常見的概念。如圖 1 - 6 所示,兩臺服務器之間通過 VXLAN 網絡進行通信。

圖 1 -6 VXLAN 網絡模型示意

從上圖中可以發現,VXLAN 在兩臺 TOR 交換機之間建立了一條隧道,將服務器發出的原始數據幀加以“包裝”,好讓原始報文可以在承載網絡(比如 IP 網絡)上傳輸。當到達目的服務器所連接的 TOR 交換機后,離開 VXLAN 隧道,并將原始數據幀恢復出來,繼續轉發給目的服務器。

另外,VXLAN 網絡中出現了一些傳統數據中心網絡中沒有的新元素,如 VTEP、VNI 等,它們的作用是什么呢?下面將向您介紹這幾個新元素。

什么是 VXLAN VTEP

如圖 1 - 6 所示,VTEP(VXLAN Tunnel Endpoints,VXLAN 隧道端點)是 VXLAN 網絡的邊緣設備,是 VXLAN 隧道的起點和終點,VXLAN 對用戶原始數據幀的封裝和解封裝均在 VTEP 上進行。

VTEP 是 VXLAN 網絡中絕對的主角,VTEP 既可以是一 ** 立的網絡設備(比如華為的 CloudEngine 系列交換機),也可以是在服務器中的虛擬交換機。源服務器發出的原始數據幀,在 VTEP 上被封裝成 VXLAN 格式的報文,并在 IP 網絡中傳遞到另外一個 VTEP 上,并經過解封轉還原出原始的數據幀,最后轉發給目的服務器。

VTEP 在 VXLAN 隧道的建立和轉發過程中的詳細工作,可以參見下文的 VXLAN 隧道是如何建立的

什么是 VXLAN VNI

前文提到,以太網數據幀中 VLAN 只占了 12 比特的空間,這使得 VLAN 的隔離能力在數據中心網絡中力不從心。而 VNI 的出現,就是專門解決這個問題的。

如圖 1 - 6 所示,VNI(VXLAN Network Identifier,VXLAN 網絡標識符),VNI 是一種類似于 VLAN ID 的用戶標識,一個 VNI 代表了一個租戶,屬于不同 VNI 的虛擬機之間不能直接進行二層通信。如圖 1 - 5 所示,VXLAN 報文封裝時,給 VNI 分配了 24 比特的長度空間,使其可以支持海量租戶的隔離。

VNI 在 VXLAN 隧道的建立和轉發過程中的詳細工作,可以參見下文的 VXLAN 隧道是如何建立的

另外,在分布式網關部署場景下,VNI 還可分為二層 VNI 和三層 VNI,它們的作用不同:

二層 VNI 是普通的 VNI,以 1:1 方式映射到廣播域 BD,實現 VXLAN 報文同子網的轉發(詳情可參見下文的什么是“同一大二層域”)。

三層 VNI 和 VPN 實例進行關聯,用于 VXLAN 報文跨子網的轉發(三層 VNI 的工作詳情將在另外一篇 EVPN 相關的文檔中展開描述)。

哪些 VTEP 之間需要建立 VXLAN 隧道

一條 VXLAN 隧道是由兩個 VTEP 來確定建立的。數據中心網絡中存在很多個 VTEP,如圖 1 - 7 所示,那么哪些 VTEP 間需要建立 VXLAN 隧道呢?

圖 1 -7  建立 VXLAN 隧道示意圖(1)

如前所述,通過 VXLAN 隧道,“二層域”可以突破物理上的界限,實現大二層網絡中 VM 之間的通信。所以,連接在不同 VTEP 上的 VM 之間如果有“大二層”互通的需求,這兩個 VTEP 之間就需要建立 VXLAN 隧道。換言之,同一大二層域內的 VTEP 之間都需要建立 VXLAN 隧道。

例如,假設圖 1 - 7 中 VTEP_1 連接的 VM、VTEP_2 連接的 VM 以及 VTEP_3 連接的 VM 之間需要“大二層”互通,那 VTEP_1、VTEP_2 和 VTEP_3 之間就需要兩兩建立 VXLAN 隧道,如圖 1 - 8 所示。

圖 1 -8  建立 VXLAN 隧道示意圖(2)

什么是“同一大二層域”

上文提到的“同一大二層域”,就類似于傳統網絡中 VLAN(虛擬局域網)的概念,只不過在 VXLAN 網絡中,它有另外一個名字,叫做 Bridge-Domain,簡稱 BD。

我們知道,不同的 VLAN 是通過 VLAN ID 來進行區分的,那不同的 BD 是如何進行區分的呢?其實前面已經提到了,就是通過 VNI 來區分的。對于 CloudEngine 系列交換機而言,BD 與 VNI 是 1:1 的映射關系,這種映射關系是通過在 VTEP 設備上配置命令行建立起來的,配置樣例如下:

bridge-domain 10 // 表示創建一個“大二層廣播域”BD,其編號為 10
 vxlan vni 5000 // 表示在 BD 10 下,指定與之關聯的 VNI 為 5000
#

VTEP 設備會根據以上配置生成 BD 與 VNI 的映射關系表,該映射表可以通過命令行查看,如下所示:

HUAWEI  display vxlan vniNumber of vxlan vni : 1 
VNI BD-ID State 
--------------------------------------- 
5000 10 up

有了映射表后,進入 VTEP 的報文就可以根據自己所屬的 BD 來確定報文在進行 VXLAN 封裝時,該添加哪個 VNI 標識。那么,報文根據什么來確定自己屬于哪個 BD 呢?

如何確定報文屬于哪個 BD

這里要先澄清下,VTEP 只是交換機承擔的一個角色而已,只是交換機功能的一部分。也就是說,并非所有進入到交換機的報文都會走 VXLAN 隧道(也可能報文就是走普通的二三層轉發流程)。所以,我們在回答“如何確定報文屬于哪個 BD”之前,必須先要回答“哪些報文要進入 VXLAN 隧道”。

哪些報文要進入 VXLAN 隧道?

回答這個問題之前,不妨先讓我們回想一下 VLAN 技術中,交換機對于接收和發送的報文是如何進行處理的。報文要進入交換機進行下一步處理,首先得先過接口這一關,可以說接口掌控著對報文的“生殺大權”。傳統網絡中定義了三種不同類型的接口:Access、Trunk、Hybrid。這三種類型的接口雖然應用場景不同,但它們的最終目的是一樣的:一是根據配置來檢查哪些報文是允許通過的;二是判斷對檢查通過的報文做怎樣的處理。

其實在 VXLAN 網絡中,VTEP 上的接口也承擔著類似的任務,只不過在 CloudEngine 系列交換機中,這里的接口不是物理接口,而是一個叫做“二層子接口”的邏輯接口。類似的,二層子接口主要做兩件事:一是根據配置來檢查哪些報文需要進入 VXLAN 隧道;二是判斷對檢查通過的報文做怎樣的處理。在二層子接口上,可以根據需要定義不同的流封裝類型(類似于傳統網絡中不同的接口類型)。CloudEngine 系列交換機目前支持的流封裝類型有 dot1q、untag、qinq 和 default 四種類型:

dot1q:對于帶有一層 VLAN Tag 的報文,該類型接口只接收與指定 VLAN Tag 匹配的報文;對于帶有兩層 VLAN Tag 的報文,該類型接口只接收外層 VLAN Tag 與指定 VLAN Tag 匹配的報文。

untag:該類型接口只接收不帶 VLAN Tag 的報文。

qinq:該類型接口只接收帶有指定兩層 VLAN Tag 的報文。

default:允許接口接收所有報文,不區分報文中是否帶 VLAN Tag。不論是對原始報文進行 VXLAN 封裝,還是解封裝 VXLAN 報文,該類型接口都不會對原始報文進行任何 VLAN Tag 處理,包括添加、替換或剝離。

除二層子接口外,還可以將 VLAN 作為業務接入點。將 VLAN 綁定到廣播域 BD 后,加入該 VLAN 的接口即為 VXLAN 業務接入點,進入接口的報文由 VXLAN 隧道處理。

將二層子接口加入 BD

現在我們再來回答“如何確定報文屬于哪個 BD”就非常簡單了。其實,只要將二層子接口加入指定的 BD,然后根據二層子接口上的配置,設備就可以確定報文屬于哪個 BD 啦!

比如圖 1 - 9 所示的組網,一臺虛擬化服務器中有兩個不同 VLAN 的虛擬機 VM1(VLAN 10)和 VM2(VLAN 20),它們與其他虛擬機通信時需要接入 VXLAN 網絡。此時我們可以分別在 VTEP 的物理接口 10GE 1/0/ 1 上,分別針對 VM1 和 VM2 封裝不同的二層子接口,并將其分別加入不同的 BD。這樣后續 VM1 和 VM2 的流量將會進入不同的 VXLAN 隧道繼續轉發。

在這個舉例中,vSwitch 的上行口配置成 Trunk 模式,且 PVID 為 20。這樣 vSwitch 發給 VTEP 的報文中,既有帶 tag 的 VM1 流量,又有 untag 的 VM2 流量,此時在 VTEP 的接入口上創建兩個二層子接口,分別配置為 dot1q 和 untag 的封裝類型。

圖 1 -9  將二層子接口加入 BD

下面就基于上圖,結合 CloudEngine 交換機上的配置舉例進行說明。

在 CloudEngine 交換機的接入物理接口 10GE 1/0/ 1 上,分別創建二層子接口 10GE 1/0/1.1 和 10GE 1/0/1.2,并分別配置其流封裝類型為 dot1q 和 untag。

interface 10GE1/0/1.1 mode l2 // 創建二層子接口 10GE1/0/1.1
 encapsulation dot1q vid 10 // 只允許攜帶 VLAN Tag 10 的報文進入 VXLAN 隧道
 bridge-domain 10 // 指定報文進入的是 BD 10
interface 10GE1/0/1.2 mode l2 // 創建二層子接口 10GE1/0/1.2
 encapsulation untag // 只允許不攜帶 VLAN Tag 的報文進入 VXLAN 隧道
 bridge-domain 20 // 指定報文進入的是 BD 20
#

VXLAN 隧道是怎么建立的

現在,我們可以來看下 VXLAN 隧道是怎么建立起來的。一般而言,隧道的建立不外乎手工方式和自動方式兩種。

手工方式建立 VXLAN 隧道

這種方式需要用戶手動指定 VXLAN 隧道的源 IP 為本端 VTEP 的 IP、目的 IP 為對端 VTEP 的 IP,也就是人為地在本端 VTEP 和對端 VTEP 之間建立靜態 VXLAN 隧道。

對于 CloudEngine 系列交換機,以上配置是在 NVE(Network Virtualization Edge)接口下完成的,配置舉例如下:

interface Nve1 // 創建邏輯接口 NVE 1
 source 1.1.1.1 // 配置源 VTEP 的 IP 地址(推薦使用 Loopback 接口的 IP 地址) vni 5000 head-end peer-list 2.2.2.2
 vni 5000 head-end peer-list 2.2.2.3
#

其中,vni 5000 head-end peer-list 2.2.2.2 和 vni 5000 head-end peer-list 2.2.2.3 的配置,表示屬于 VNI 5000 的對端 VTEP 有兩個,IP 地址分別為 2.2.2.2 和 2.2.2.3。根據這兩條配置,VTEP 上會生成如下所示的一張表:

HUAWEI  display vxlan vni 5000 verbose
 BD ID : 10
 State : up
 NVE : 288
 Source Address : 1.1.1.1
 Source IPv6 Address : -
 UDP Port : 4789
 BUM Mode : head-end
 Group Address : -
 Peer List : 2.2.2.2 2.2.2.3
 IPv6 Peer List : -

根據上表中的 Peer List,本端 VTEP 就可以知道屬于同一 BD(或同一 VNI)的對端 VTEP 都有哪些,這也就決定了同一大二層廣播域的范圍。當 VTEP 收到 BUM(Broadcast Unknown-unicast Multicast,廣播 未知單播 組播)報文時,會將報文復制并發送給 Peer List 中所列的所有對端 VTEP(這就好比廣播報文在 VLAN 內廣播)。因此,這張表也被稱為“頭端復制列表”。當 VTEP 收到已知單播報文時,會根據 VTEP 上的 MAC 表來確定報文要從哪條 VXLAN 隧道走。而此時 Peer List 中所列的對端,則充當了 MAC 表中“出接口”的角色。

在后面的報文轉發流程中,你將會看到頭端復制列表是如何在 VXLAN 網絡中指導報文進行轉發的。

自動方式建立 VXLAN 隧道

自動方式下 VXLAN 隧道的建立需要借助于 EVPN(Ethernet VPN)協議,這部分內容請參見《什么是 EVPN》。

如何確定報文要進哪條隧道?

屬于同一 BD 的 VXLAN 隧道可能不止一條,比如上文的頭端復制列表中,同一個源端 VTEP(1.1.1.1)對應了兩個對端 VTEP(2.2.2.2 和 2.2.2.3)。那就帶來了另一個問題,報文到底應該走哪一條隧道呢?

我們知道,基本的二三層轉發中,二層轉發依賴的是 MAC 表,如果沒有對應的 MAC 條目,則主機發送 ARP 廣播報文請求對端的 MAC 地址;三層轉發依賴的是 FIB 表。在 VXLAN 中,其實也是同樣的道理。

上述內容就是 VXLAN 的原理和作用是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-04發表,共計8190字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 崇文区| 平乐县| 霍邱县| 凯里市| 桓台县| 道孚县| 咸丰县| 桐柏县| 溧水县| 商洛市| 岳阳市| 奉化市| 读书| 长兴县| 石渠县| 武川县| 都昌县| 盐津县| 五家渠市| 东山县| 元朗区| 乌审旗| 交城县| 西乌珠穆沁旗| 景泰县| 法库县| 手机| 辽宁省| 来安县| 肇源县| 林西县| 安顺市| 永清县| 聂荣县| 昆明市| 烟台市| 丹凤县| 金坛市| 安岳县| 台安县| 罗平县|