VXLAN 概念(Part I) - 天天5分鐘玩轉 OpenStack(108)

除了前面討論的 local, flat, vlan 這幾類網絡,OpenStack 還支持 vxlan 和 gre 這兩種 overlay network。linux

overlay network 是指創建在其餘網絡上的網絡。 該網絡中的節點能夠看做經過虛擬(或邏輯)鏈路鏈接起來的。 overlay network 在底層可能由若干物理鏈路組成,但對於節點,不須要關心這些底層實現。網絡

例如 P2P 網絡就是 overlay network,隧道也是。 vxlan 和 gre 都是基於隧道技術實現的,它們也都是 overlay network。spa

目前 linux bridge 只支持 vxlan,不支持 gre;open vswitch 二者都支持。 vxlan 與 gre 實現很是相似,並且 vxlan 用得較多,因此本教程只介紹 vxlan。教程

VXLAN 全稱 Virtual eXtensible Local Area Network。路由

正如名字所描述的,VXLAN 提供與 VLAN 相同的以太網二層服務,可是擁有更強的擴展性和靈活性。與 VLAN 相比,VXLAN 有下面幾個優點:部署

  1. 支持更多的二層網段。 VLAN 使用 12-bit 標記 VLAN ID,最多支持 4094 個 VLAN,這對於大型雲部署會成爲瓶頸。VXLAN 的 ID (VNI 或者 VNID)則用 24-bit 標記,支持 16777216 個二層網段。虛擬機

  2. 能更好地利用已有的網絡路徑。 VLAN 使用 Spanning Tree Protocol 避免環路,這會致使有一半的網絡路徑被 block 掉。VXLAN 的數據包是封裝到 UDP 經過三層傳輸和轉發的,可使用全部的路徑。it

  3. 避免物理交換機 MAC 表耗盡。 因爲採用隧道機制,TOR (Top on Rack) 交換機無需在 MAC 表中記錄虛擬機的信息。擴展

VXLAN 封裝和包格式

VXLAN 是將二層創建在三層上的網絡。 經過將二層數據封裝到 UDP 的方式來擴展數據中心的二層網段數量。 VXLAN 是一種在現有物理網絡設施中支持大規模多租戶網絡環境的解決方案。 VXLAN 的傳輸協議是 IP + UDP。配置

VXLAN 定義了一個 MAC-in-UDP 的封裝格式。 在原始的 Layer 2 網絡包前加上 VXLAN header,而後放到 UDP 和 IP 包中。 經過 MAC-in-UDP 封裝,VXLAN 可以在 Layer 3 網絡上創建起了一條 Layer 2 的隧道。

VXLAN 包的格式以下:

如上圖所示,VXLAN 引入了 8-byte VXLAN header,其中 VNI 佔 24-bit。 VXLAN 和原始的 L2 frame 被封裝到 UDP 包中。

這 24-bit 的 VNI 用於標示不一樣的二層網段,可以支持 16777216 個 LAN。

VXLAN Tunnel Endpoint

VXLAN 使用 VXLAN tunnel endpoint (VTEP) 設備處理 VXLAN 的封裝和解封。 每一個 VTEP 有一個 IP interface,配置了一個 IP 地址。VTEP 使用該 IP 封裝 Layer 2 frame,並經過該 IP interface 傳輸和接收封裝後的 VXLAN 數據包。

下面是 VTEP 的示意圖:

VXLAN 獨立於底層的網絡拓撲; 反過來,兩個 VTEP 之間的底層 IP 網絡也獨立於 VXLAN。 VXLAN 數據包是根據外層的 IP header 路由的,該 header 將兩端的 VTEP IP 做爲源和目標 IP。

下節咱們經過例子進一步理解 VXLAN 封裝和轉發包的過程,並探討 Linux 對 VXLAN 的支持。

 

blob.png

相關文章
相關標籤/搜索