02.27 「乾貨」五分鐘!簡單瞭解VXLAN技術

VXLAN 通信過程

對於處於同一個VXLAN的兩臺虛擬終端,其通信過程可以概括為如下的步驟:

1. 發送方向接收方發送數據幀,幀中包含了發送方和接收方的虛擬MAC地址。

2. 發送方連接的VTEP節點收到了數據幀,通過查找發送方所在的VXLAN以及接收方所連接的VTEP節點,將該報文添加VXLAN首部、外部UDP首部、外部IP首部後,發送給目的VTEP節點。

3. 報文經過物理網絡傳輸到達目的VTEP節點。

4. 目的VTEP節點接收到報文後,拆除報文的外部IP首部和外部UDP首部,檢查報文的VNI以及內部數據幀的目的MAC地址,確認接收方與本VTEP節點相連後,拆除VXLAN首部,將內部數據幀交付給接收方。

5. 接收方收到數據幀,傳輸完成。

VXLAN網絡模型

「乾貨」五分鐘!簡單瞭解VXLAN技術

從圖中可以發現,VXLAN網絡中出現了以下傳統數據中心網絡中沒有的新元素:

VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端點)

VXLAN網絡的邊緣設備,是VXLAN隧道的起點和終點,VXLAN報文的相關處理均在這上面進行。總之,它是VXLAN網絡中絕對的主角。

VTEP既可以是獨立的網絡設備(比如華為的CE系列交換機),也可以是虛擬機所在的服務器。那它究竟是如何發揮作用的呢?答案稍候揭曉。

VNI(VXLAN Network Identifier,VXLAN 網絡標識符)

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

VNI是一種類似於VLAN ID的用戶標示,一個VNI代表了一個租戶,屬於不同VNI的虛擬機之間不能直接進行二層通信。VXLAN報文封裝時,給VNI分配了足夠的空間使其可以支持海量租戶的隔離。詳細的實現,我們將在後文中介紹。


VXLAN隧道

“隧道”是一個邏輯上的概念,它並不新鮮,比如大家熟悉的GRE。說白了就是將原始報文“變身”下,加以“包裝”,好讓它可以在承載網絡(比如IP網絡)上傳輸。


從主機的角度看,就好像原始報文的起點和終點之間,有一條直通的鏈路一樣。而這個看起來直通的鏈路,就是“隧道”。顧名思義,“VXLAN隧道”便是用來傳輸經過VXLAN封裝的報文的,它是建立在兩個VTEP之間的一條虛擬通道。


RFC7348中規定的VXLAN內部的載荷報文必須是以太網報文,這就限制了VXLAN協議的使用範圍。為了讓VXLAN能夠更廣泛的支持其他協議報文的Overlay傳輸,RFC草案正在探索VXLAN Generic Protocol Encapsulation (GPE)即VXLAN通用協議封裝。


「乾貨」五分鐘!簡單瞭解VXLAN技術

GPE封裝使用了原FRC7348中規定的一些保留位。

• Version(Ver):指示VXLAN GPE協議版本。初始值為0。

• Next Protocol Bit (P bit): 如果P位為1,則Next Protocol域有效。

• BUM Traffic Bit (B bit): 如果B位為1,則表示VXLAN內部的封裝報文為BUM報文。

• OAM Flag Bit (O bit): 如果O位為1,則表示VXLAN內部的封裝報文為OAM報文。

• Next Protocol: 8位。表示VXLAN內部的封裝報文的協議格式。

BUM(Broadcast, Unknown-unicast, Multicast)即廣播、未知單播、組播流量。根據對泛洪流量的複製方式不同可分為單播路由方式(頭端複製)和組播路由方式(核心複製)兩種。

在頭端複製方式下,VTEP負責複製報文,採用單播方式將複製後的報文通過本地接口發送給本地站點,並通過VXLAN隧道發送給VXLAN內的所有遠端VTEP。遠端VTEP收到VXLAN報文後,解封裝報文,將原始數據在本地站點的VXLAN內泛洪。

為避免環路,遠端VTEP從VXLAN隧道上接收到報文後,不會再將其泛洪到其他的VXLAN隧道。


VXLAN三層網關


VXLAN三層網關提供了VXLAN的三層轉發功能,通過將VXLAN關聯VSI虛接口(VXLAN虛接口)的方式實現,在VSI虛接口指定IP地址作為VXLAN內所有虛擬機的網關。


VXLAN三層網關的主要功能:

• 實現VXLAN內虛擬機與非VXLAN網絡的互訪

• 完成跨VXLAN的虛擬機互訪

VXLAN三層網關根據其部署方式不同,有集中式和分佈式兩種。

集中式網關,即網關都集中在Spine設備。所有跨VXLAN的流量,VXLAN與非VXLAN的互訪流量都需要經過Spine。集中式網關的優點是流量均會經過Spine設備,能比較容易實現流量控制、自動引流等功能。缺點是Spine設備壓力過大,不利於大規模部署。

在分佈式VXLAN 三層網關方案中,每臺VTEP設備都可以作為VXLAN IP網關,對本地站點的流量進行三層轉發。分佈式三層網關可以很好地解決流量集中而導致Spine設備壓力過大的問題,在組網上也可以做到靈活擴展。在分佈式網關組網中,Spine設備一般不是VTEP,僅為Underlay網絡的一部分,承擔普通IP報文的轉發功能。

VXLAN由於其簡單的數據平面,良好的兼容性,已經成為了當下SDN Overlay技術的最好選擇,但VXLAN未來還有很長的路要走。

比如探索VXLAN GPE封裝是一個方向,解決VXLAN隧道的QoS也是一個方向。而控制平面要做的更多,如何更好的實現按需定製,如何實現智能流量調整,如何更好的兼容異構設備等等。相信未來會給我們一個更好的答案。


分享到:


相關文章: