天天看點

VXLAN 概念(Part I) - 每天5分鐘玩轉 OpenStack(108)VXLAN 封裝和包格式VXLAN Tunnel Endpoint

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

overlay network 是指建立在其他網絡上的網絡。 該網絡中的節點可以看作通過虛拟(或邏輯)鍊路連接配接起來的。 overlay network 在底層可能由若幹實體鍊路組成,但對于節點,不需要關心這些底層實作。

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

目前 linux bridge 隻支援 vxlan,不支援 gre;open vswitch 兩者都支援。 vxlan 與 gre 實作非常類似,而且 vxlan 用得較多,是以本教程隻介紹 vxlan。

VXLAN 全稱 Virtual eXtensible Local Area Network。

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

支援更多的二層網段。 VLAN 使用 12-bit 标記 VLAN ID,最多支援 4094 個 VLAN,這對于大型雲部署會成為瓶頸。VXLAN 的 ID (VNI 或者 VNID)則用 24-bit 标記,支援 16777216 個二層網段。

能更好地利用已有的網絡路徑。 VLAN 使用 Spanning Tree Protocol 避免環路,這會導緻有一半的網絡路徑被 block 掉。VXLAN 的資料包是封裝到 UDP 通過三層傳輸和轉發的,可以使用所有的路徑。

避免實體交換機 MAC 表耗盡。 由于采用隧道機制,TOR (Top on Rack) 交換機無需在 MAC 表中記錄虛拟機的資訊。

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 使用 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 的支援。

本文轉自CloudMan6 51CTO部落格,原文連結:http://blog.51cto.com/cloudman/1869189

繼續閱讀