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網絡中出現了以下傳統數據中心網絡中沒有的新元素:
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通用協議封裝。
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也是一個方向。而控制平面要做的更多,如何更好的實現按需定製,如何實現智能流量調整,如何更好的兼容異構設備等等。相信未來會給我們一個更好的答案。
閱讀更多 SPOTO—思科華為培訓 的文章