您好,登錄后才能下訂單哦!
本篇文章為大家展示了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可以滿足上述兩個關鍵需求。
虛擬機動態遷移,要求提供一個無障礙接入的網絡
傳統的數據中心物理服務器利用率太低,平均只有10%~15%,浪費了大量的電力能源和機房資源,所以出現了服務器虛擬化技術。如圖1-2所示,服務器虛擬化技術是把一臺物理服務器虛擬化成多臺邏輯服務器,這種邏輯服務器被稱為虛擬機(VM)。每個VM都可以獨立運行,有自己的操作系統、APP,當然也有自己獨立的MAC地址和IP地址,它們通過服務器內部的虛擬交換機(vSwitch)與外部實體網絡連接。
圖1-2 服務器虛擬化示意
通過服務器虛擬化,可以有效地提高服務器的利用率,降低能源消耗,降低數據中心的運營成本,所以虛擬化技術目前得到了廣泛的應用。
所謂虛擬機動態遷移,就是在保證虛擬機上服務正常運行的同時,將一個虛擬機系統從一個物理服務器移動到另一個物理服務器的過程。該過程對于最終用戶來說是無感知的,從而使得管理員能夠在不影響用戶正常使用的情況下,靈活調配服務器資源,或者對物理服務器進行維修和升級。
在服務器虛擬化后,虛擬機動態遷移變得常態化,為了保證遷移時業務不中斷,就要求在虛擬機遷移時,不僅虛擬機的IP地址不變,而且虛擬機的運行狀態也必須保持原狀(例如TCP會話狀態),所以虛擬機的動態遷移只能在同一個二層域中進行,而不能跨二層域遷移。
如圖1-3所示,傳統的二三層網絡架構限制了虛擬機的動態遷移范圍,遷移只能在一個較小的局部范圍內進行,應用受到了極大的限制。
圖1-3 傳統的二三層網絡架構限制了虛擬機的動態遷移范圍
為了打破這種限制,實現虛擬機的大范圍甚至跨地域的動態遷移,就要求把VM遷移可能涉及的所有服務器都納入同一個二層網絡域,這樣才能實現VM的大范圍無障礙遷移。
眾所周知,同一臺二層交換機可以實現下掛服務器之間的二層通信,而且服務器從該二層交換機的一個端口遷移到另一個端口時,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的詳細作用。
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的網絡模型以及一些常見的概念。如圖1-6所示,兩臺服務器之間通過VXLAN網絡進行通信。
圖1-6 VXLAN網絡模型示意
從上圖中可以發現,VXLAN在兩臺TOR交換機之間建立了一條隧道,將服務器發出的原始數據幀加以“包裝”,好讓原始報文可以在承載網絡(比如IP網絡)上傳輸。當到達目的服務器所連接的TOR交換機后,離開VXLAN隧道,并將原始數據幀恢復出來,繼續轉發給目的服務器。
另外,VXLAN網絡中出現了一些傳統數據中心網絡中沒有的新元素,如VTEP、VNI等,它們的作用是什么呢?下面將向您介紹這幾個新元素。
如圖1-6所示,VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端點)是VXLAN網絡的邊緣設備,是VXLAN隧道的起點和終點,VXLAN對用戶原始數據幀的封裝和解封裝均在VTEP上進行。
VTEP是VXLAN網絡中絕對的主角,VTEP既可以是一**立的網絡設備(比如華為的CloudEngine系列交換機),也可以是在服務器中的虛擬交換機。源服務器發出的原始數據幀,在VTEP上被封裝成VXLAN格式的報文,并在IP網絡中傳遞到另外一個VTEP上,并經過解封轉還原出原始的數據幀,最后轉發給目的服務器。
VTEP在VXLAN隧道的建立和轉發過程中的詳細工作,可以參見下文的VXLAN隧道是如何建立的
前文提到,以太網數據幀中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相關的文檔中展開描述)。
一條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呢?
這里要先澄清下,VTEP只是交換機承擔的一個角色而已,只是交換機功能的一部分。也就是說,并非所有進入到交換機的報文都會走VXLAN隧道(也可能報文就是走普通的二三層轉發流程)。所以,我們在回答“如何確定報文屬于哪個BD”之前,必須先要回答“哪些報文要進入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啦!
比如圖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隧道的源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隧道的建立需要借助于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的原理和作用是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。