一 VXLAN的原理
VXLAN(Virtual eXtensible LAN 可擴展虛擬局域網絡)是一種網絡虛擬化技術,底層基於IP網絡,採用"Mac In UDP"封裝形式的二層以太網交換技術。相對於VLAN,VXLAN具有以下優勢:
1) 應用靈活部署: 通過VXLAN封裝後的2層以太網幀可以跨3層網絡邊界,讓組網以及應用部署變得更加靈活,同時解決多租戶網絡環境中IP地址衝突問題。
2) 更好的擴展性: 傳統 VLANID字段爲12-bit,VLAN數量爲4096;VXLAN使用24-bit VNID (VXLAN network identifier),支持 16,000,000 邏輯網絡,解決了傳統二層網絡VLAN資源不足的問題。
3) 提高網絡利用率: 傳統以太網使用 STP預防環路, STP導致網絡冗餘路徑處於阻塞狀態, VXLAN報文基於 3層 IP報頭傳輸,能有效利用網絡路徑,支持 ECMP(equal-cost multipath )和鏈路聚合協議。
VXLAN的網絡模型如圖所示:
VXLAN技術將已有的三層物理網絡作爲Underlay網絡,在其上構建虛擬的二層網絡,即Overlay網絡。Overlay網絡通過封裝技術,利用Underlay網絡提供的三層轉發路徑,實現租戶二層報文跨越三層網絡在不同站點之間傳遞。對於租戶來說,Underlay網絡是透明的,同一租戶的不同站點就像工作在同一局域網中。
VXLAN的網絡模型包括以下幾個部分:
1) 用戶終端: 可以是PC機、無線設備、服務器上創建的VM等
2) VTEP(VXLAN Tunel End Point): VXLAN的邊緣設備,VXLAN的相關處理都在VTEP上進行,例如識別以太網數據幀所屬的VXLAN,報文的封裝與解封等
3) VXLAN隧道: 兩個VTEP設備之間的點到點邏輯隧道,用於傳輸VXLAN報文
4) 核心設備: 底層IP網絡中的設備,不參與VXLAN處理,僅根據VXLAN報文的目的地址進行三層轉發
5) VSI(Virtual Switch Instance 虛擬交換實例): VTEP上爲一個VXLAN提供二層交換服務的虛擬交換實例,可以看成是VTEP上一個基於VXLAN進行二層轉發的虛擬交換機
6) AC(Attachment Circuit 接入電路): VTEP上連接本地站點的物理電路或者虛擬電路,與VSI關聯的三層接口稱爲AC。
二 VXLAN網關
和VLAN類似,不同VNI之間的VXLAN,及VXLAN和非VXLAN之間不能直接相互通信。爲了使VXLAN之間,以及VXLAN和非VXLAN之間能夠進行通信,VXLAN引入了VXLAN網關。
VXLAN網關分爲:
1) 二層網關:用於解決租戶接入VXLAN虛擬網絡的問題,也可用於同一VXLAN虛擬網絡的子網通信。
2) 三層網關:用於VXLAN虛擬網絡的跨子網通信以及外部網絡的訪問。
根據三層網關部署方式的不同,VXLAN三層網關又可以分爲集中式網關和分佈式網關
集中式網關是指將三層網關集中部署在一臺設備上,所有跨子網的流量都經過三層網關進行轉發,實現流量的集中管理,如圖所示:
集中式網關部署簡單,但不同VXLAN的流量均由單一網關處理,使得其負載壓力較大。在分佈式網關中,每臺VTEP設備均可以作爲網關,緩解了網關的壓力,如圖所示:
分佈式網關中,Spine節點不感知VXLAN隧道,只作爲報文轉發的中間節點。
三、HCL搭建VXLAN示例
下面在HCL環境中搭建一個VXLAN的示例,加深對以上概念的理解。
如圖所示,RouterA與RouterB作爲VTEP設備,同時也作爲分佈式網關設備。RouterC作爲路由反射器,負責在集羣中反射BGP路由,這裏我們通過BGP路由完成RouterA與RouterB之間VXLAN隧道的建立,並使得客戶端之間可以彼此互通。
1) 在RouterA、RouterB、RouterC之間配置OSPF,使得彼此之間路由可達。注意這裏我們配置RouterA的Loopback0地址爲1.1.1.1作爲其vtep地址,配置RouterB的Loopback0地址爲2.2.2.2作爲其vtep地址。
查看RouterA的OSPF路由表:
2) 創建三層交換實例,配置其RD和RT
3) 創建VSI接口,並配置網關地址:
這裏我們在該接口中配置了2個分佈式網關,並且綁定了第二步創建的三層交換實例,同時爲了保證網關之間的三層互通,指定了l3-vni。
4) 創建VSI實例,並且關聯第三步創建的VSI接口
在該VSI實例中創建VXLAN通道。
5) 在RouterA的2/0/2接口上關聯第四步創建的VSI實例
以上完成了RouterA的配置,RouterB與RouterA的配置步驟相同。
到目前爲止,RouterA與RouterB之間的VXLAN隧道還沒有建立,我們需要配置BGP路由完成VXLAN隧道的自動創建。
6) 在配置BGP時,爲了避免BGP對等體之間建立full-mesh連接,將RouterC作爲路由反射器,RouterA與RouterB只與RouterC建立BGP連接即可
RouterA配置如下:
RouterB與RouterA配置相同
RouterC配置如下:
等RouterA、RouterB與RouterC之間的對等體建立好之後,查看BGP路由:
其中下發了二類、三類路由;二類路由是主機IP/MAC路由、三類路由是VTEP路由
查看VXLAN隧道,已經自動生成:
驗證下流量是否通,10.1.1.1 ping 20.1.1.2:
可見,不同網段的主機流量已經互通,下面來抓包驗證一下:
抓取10.1.1.1設備的1/0/1口、RouterA的2/0/1口、20.1.1.2的1/0/1口:
下圖是10.1.1.1設備1/0/1口的報文,封裝的ICMP報文中,src ip是10.1.1.1,dst ip 是20.1.1.2,src mac是虛機自身的mac,由於是跨網段互通,故dst mac是RouterA網關的mac
下圖是RouterA 2/0/1口的報文,可以看見,VTEP在ICMP報文外層又封裝了一層VXLAN,且src ip是1.1.1.1,即RouterA的VTEP ip,dst ip是2.2.2.2,即RouterB的VTEP ip,vxlan id是1000,即VSI中指定的l3-vni
下圖是20.1.1.2設備1/0/1口的報文,可見,RouterB對VXLAN報文進行了解封,此時報文中的src mac爲RouterB的網關mac,dst mac爲20.1.1.2設備的mac
通過以上的步驟,我們完成了搭建VXLAN的示例。