VXLAN 三層的網絡來搭建虛擬的二層網絡



一、VXLAN概述

1. 什麼是 VXLAN

VXLAN(Virtual Extensible LAN)虛擬可擴展局域網,是一種 overlay 網絡技術,將原始2層以太網幀進行UDP封裝  (MAC-in-UDP),增加8字節 VXLAN頭部,8字節 UDP頭部, 20字節 IP 頭部和14字節以太網頭部,共50字節。

2. VXLAN優點

VXLAN與VLAN相比能夠提供更好的擴展性和靈活性,主要有以下特點:

  • 應用靈活部署: 通過VXLAN封裝後的2層以太網幀可以跨3層網絡邊界,讓組網以及應用部署變得更加靈活,同時解決多租戶網絡環境中IP地址衝突問題。

  • 更好的擴展性: 傳統 VLANID字段爲12-bit,VLAN數量最大爲4096;VXLAN使用24-bit VNID (VXLAN network  identifier),最大支持 16,000,000 邏輯網絡。

  • 提高網絡利用率: 傳統以太網使用 STP預防環路, STP導致網絡冗餘路徑處於阻塞狀態, VXLAN報文基於 3層 IP報頭傳輸,能有效利用網絡路徑,支持  ECMP(equal-cost multipath )和鏈路聚合協議。

(1) 應用靈活部署

如圖 1-1 所示,在 VXLAN環境中應用部署不受物理位置和3層網絡邊界限制,例如某應用的地址段爲  192.168.1.0/24,在傳統網絡中所有該應用服務器或者虛擬機必須在同一 3層網絡內部署,否則會產生路由或者地址衝突問題。

(2) 更好的擴展性

傳統網絡通過 VLAN將客戶網絡邏輯隔離, VLAN ID字段爲 12-bit ,VLAN數量最大爲 4096;VXLAN使用 24-bit VNID (  VXLAN network identifier ),最大支持16,000,000 邏輯網絡,擴展性得到極大增強。

(3) 提高網絡利用率

使用 VXLAN 後使用三層接口互聯消除生成樹阻塞端口

圖 1-3 使用 VXLAN 後使用三層接口互聯消除生成樹阻塞端口

傳統以太網幀無法穿越三層網絡,部署 VXLAN後, VTEP之間數據基於三層尋址,網絡互聯接口不再是二層接口,   可以將交換機之間互聯接口部署爲三層模式,消除生成樹阻塞端口,提高網絡利用率,支持 ECMP(equal-cost multipath )和鏈路聚合協議。

二、VXLAN術語

1. VTEP

VXLAN

Tunnel Endpoint   (VTEP)。VXLAN使用VTEP設備對VXLAN報文進行封裝與解封裝,包括ARP請求報文和正常的VXLAN數據報文,VTEP將原始以太網幀通過VXLAN封裝後發送至對端  VTEP設備,對端VTEP接收到 VXLAN報文後解封裝然後根據原始 MAC進行轉發,VTEP可以是物理交換機、物理服務器或者其他支持   VXLAN的硬件設備或軟件來實現。

2. VNI

Virtual Network ID ( VNI), VNI封裝在 VXLAN頭部,共 24-bit ,最大支持16,000,000 邏輯網絡。

3. VXLAN 網關

VXLAN網關用於連接 VXLAN網絡和傳統 VLAN網絡,VXLAN網關實現 VNI和VLAN ID 之間的映射, VXLAN 網關實際上也是一臺  VTEP設備。

4. 組播組

VTEP設備要加入相同的組播組,主要用於控制平面地址學習。

三、VXLAN封裝

VXLAN使用 UDP封裝完整的以太網幀 (MAC-in-UDP),共 50 字節的封裝報文頭。具體的報文格式如下:

1. Inner MAC

Inner MAC,內層 MAC是原始以太網幀的 MAC地址。

2. VXLAN Header

共 8 個字節,目前使用的是 Flags 中的一個 8bit 的標識位和 24bit 的VNI(Vxlan Network identifier)  ,其餘部分沒有定義,但是在使用的時候必須設置爲 0x0000。

3. Outer UDP Header

共8個字節,IANA分配的標準目的端口使用 4798,但是各廠商可以根據需要進行修改,同時UDP的校驗和必須設置成全 0。

4. Outer IP Header

共20個字節,目的IP地址可以是單播地址,也可以是多播地址。 單播情況下,目的IP地址是目的VTEP的  IP地址;當用於VXLAN控制平面時會使用多播地址。

Outer IP: 外層IP地址是經過VTEP封裝後的3層IP地址,源IP是本端VTEP設備IP,用於控制平面時目的 IP  可以是多播地址,用於轉發平面時目的 IP是遠端 VTEP設備 IP。

5. Outer Ethernet Header

共計14個字節,外層以太網幀頭部。Outer MAC,外層 MAC是經過 VTEP封裝後的二層 MAC,源 MAC是本端 VTEP設備MAC,目的  MAC可以是遠端 VTEP設備MAC或者傳輸路徑中間 3 層網絡設備 MAC。

四、VXLAN數據轉發

1. 控制平面

在 VXLAN的實現中, 當通過組播實現控制平面路徑發現時, VTEP設備之間使用無狀態 tunnel ,VTEP設備之間不會維持狀態化的長連接。  VXLAN需要通過控制平面學習遠端設備地址信息, 在本地構建控制平面表項。 控制平面表項由 VNI、Inner Source MAC 、Outer Source  IP 三元組組成。

2. 轉發平面

控制平面學習地址映射信息後, 轉發平面負責實際數據的轉發。 VTEP爲原始數據幀增加 UDP報頭,新的報頭到達目的  VTEP後纔會被去掉,中間路徑的網絡設備只會根據外層包頭內的目的地址進行數據轉發。

3. VXLAN ARP請求

如上圖所示,終端設備 A需要和終端設備 B通信, ARP請求過程如下:

  • 終端設備 A 發送 ARP請求,請求終端設備 B 的 MAC地址;

  • VTEP-1收到終端設備 A發送的 ARP請求,此時 VTEP-1還沒有終端設備 B對應的地址映射表項, VTEP-1將 ARP請求進行  VXLAN封裝, VNI 設置爲10,outer-src-ip 是 VTEP-1的 IP ,outer-dst-ip 是加入的組播組地址,封裝完成後轉發至  VXLAN組播組;

  • VTEP-2、VTEP3加入相同的組播組,所有組成員都會收到 VTEP-1發送的組播報文,解封裝後檢查 VNI 與本地 VNI 是否匹配,如匹配將  ARP請求發送至本地網絡,同時記錄 VNI、inner MAC、outer IP 的對應關係,構建控制平面地址映射表項。如 VNI 不匹配則丟棄數據包。

  • 終端設備 B 收到 ARP請求後以單播方式發送 ARP響應;

  • VTEP-2收到終端設備 B 的 ARP響應後進行 VXLAN封裝,此時 VTEP-2已經構建控制平面地址映射表項,通過   VXLAN封裝後以單播方式發送。Outer-src-ip 是 VTEP-2的 IP 地址,outer-dst-ip 是 VTEP-1的 IP 地址;

  • VTEP-1收到封裝後的 ARP響應後,解封裝比對 VNI,如匹配將 ARP響應發送至終端設備 A,同時記錄 VNI、inner MAC、 outer  IP 的對應關係,構建控制平面表項;

  • 此時 VTEP-1、VTEP-2均已成功構建控制平面地址映射信息,後續 VXLAN數據使用單播在 VTEP-1和 VTEP-2之間傳輸。

4. VXLAN 數據傳輸

  • ARP請求完成後,終端設備 A 向終端設備 B 發送數據, VTEP-1收到數據中查找地址映射表項,將原始數據進行 VXLAN封裝後轉發至  VTEP-2;

  • VTEP-2收到 VXLAN數據包後檢查 VNI 是否與本地 VNI 匹配, 如匹配則解封裝後將原始以太網幀轉發至終端設備 B。

五、VXLAN部署

六、補充:

  • 在進行 ARP處理時,爲了將廣播通過多播進行傳輸,必須要設置VNI 到多播組的映射,這種映射屬於管理層,用於建立VTEP之間的管理通道。未知的目的  MAC(unknown MAC destination )同樣會進行組播封裝,處理方式和廣播相同。

  • VXLAN報文不能進行分片處理,中間的設備可能會將 VXLAN報文分片,但是VTEP會將分片後的報文丟棄,爲了確保  VXLAN報文不被分片處理,需要修改沿途所以設備的 MTU。RFC文檔沒有闡述爲什麼 VTEP必須丟棄分片後的報文。

  • 在封裝和解封裝時 VLAN TAG信息都會被剝離,除非另有特殊配置。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章