1. 程式人生 > >趣談網路協議---雲中網路的隔離GRE、VXLAN:雖然住一個小區,也要保護隱私

趣談網路協議---雲中網路的隔離GRE、VXLAN:雖然住一個小區,也要保護隱私

VLAN 只有 12 位,共 4096 個,對於雲平臺的隔離問題,不夠用。

所以,要擴充套件 VLAN 協議,在原來的包的格式的基礎上擴展出一個頭,裡面包含用於區分租戶的 ID,外層的包的和格式儘量和傳統一樣,很像隧道協議。

底層的物理網路裝置組成的網路為 Underlay 網路,用於虛擬機器和雲中的技術組成的網路為 Overlay 網路。

兩個 Overlay 技術:GRE 和 VXLAN,可解決雲端計算中的 VLAN 限制。

GRE Generic Routing Encapsulation,IP-over-IP 的隧道技術,將 IP 包封裝在 GRE 包裡,外加 IP 頭,在隧道的一端封裝資料包,並在通路上傳輸,到另外一端解封裝。

1、GRE 頭 在這裡插入圖片描述

  • GRE 頭中,前 32 位固定,後面可選。
  • 4 位標識位,標識後面是否有可選項。
  • 32 位 key 欄位,區分使用者的 Tunnel ID,遠大於 VLAN ID 數。
  • 下方的格式是專門用於網路虛擬化的 GRE 包頭格式,稱為 NVGRE,網路 ID 24 位,遠大於 VLAN ID 數。

路由器需要有封裝和解封裝 GRE 包的能力。

2、使用 GRE 隧道傳輸過程 在這裡插入圖片描述

  • IP 為 192.168.1.102 的主機 A 要訪問 IP 為 192.168.2.102 的主機 B,因跨網段,先發給預設閘道器,即路由器 192.168.1.1。

  • 路由表發現去網段 192.168.2.0/24 應該走 GRE 隧道,從隧道一端的網絡卡 Tunnel0 進入隧道。

  • Tunnel 隧道的端點進行包的封裝,在內部 IP 頭外加 GRE 頭。對於 NVGRE,是在 MAC 頭外加 GRE 頭,然後加上路由器的外網 IP 地址。源 IP 172.17.10.10,目標 IP 172.16.11.10,然後從 E1 的物理網絡卡傳送到公網。

  • 在公網,全部按公網 IP 地址沿著路由器一跳跳走。

  • 網路包到達對端的 Tunnel0,解封裝,取下外層 IP 頭,根據路由表,從 E3 口轉發到伺服器 B。

3、GRE 不足

  • Tunnel 數量問題。GRE 是一種點對點隧道,如果網路數目增多,隧道數目會呈指數性增長。
  • GRE 不支援組播。
  • 目前還有很多防火牆和三層網路裝置無法解析 GRE。

VXLAN

GRE 是在三層外再套三層,VXLAN 則從二層外就套了一個 VXLAN 頭,包含的 VXLAN ID 為 24 位,同樣遠大於 VLAN ID 數。VXLAN 頭外還封裝了 UDP、IP,及外層 MAC 頭。

在這裡插入圖片描述 對 VXLAN 的包封裝和解封裝的功能點為 VTEP(VXLAN Tunnel Endpoint)。VTEP 相當於虛擬網路管家。每臺物理機上都有 VTEP,虛擬機器啟動時向其註冊。

不同於 GRE,VXLAN 支援組播。當一個 VTEP 啟動時,通過 IGMP 協議加入一個組播組。

在這裡插入圖片描述

通訊過程:

  • 虛擬機器 1、2、3 屬於雲中同一個使用者的虛擬機器,因而分配相同的 VXLAN ID = 101。
  • 虛擬機器 1 傳送 ARP 廣播,請求虛擬機器 2 的 MAC 地址。
  • ARP 請求到底 VTEP1 時, VTEP1 知道虛擬機器 2 不歸自己管,將 ARP 請求封裝在 VXLAN 中,組播出去。
  • VTEP2、VTEP3 都收到訊息,都會解開 VXLAN 包,裡面有 ARP。
  • VTEP3 在本地廣播,無機器回覆自己的 MAC;VTEP2 在本地廣播,虛擬機器 2 回覆自己的 MAC。
  • VTEP2 學到虛擬機器 1 歸 VTEP1 管,將 ARP 回覆封裝在 VXLAN 中,單播給 VTEP1。
  • VTEP1 解開 VXLAN 包,發現 ARP 回覆,傳送給虛擬機器 1。
  • VTEP1 也學到虛擬機器 2 歸 VTEP2 管,下次直接發給 VTEP2 即可。

如何將 GRE 和 VXLAN 融入雲平臺? 建立一個網路拓撲結構: 在這裡插入圖片描述 三臺物理機,每臺上有兩臺虛擬機器,分屬兩個不同的使用者,不互相通訊,因而 VLAN tag 不同。但不同物理機上的相同使用者,可通過 GRE 隧道相互通訊。

為什麼多一個 br1 虛擬交換機?可將虛擬機器直接的互聯和物理機之間的互聯分兩層設計,這樣就可使用不同種隧道,OpenvSwitch 支援三類隧道:GRE、VXLAN、IPsec_GRE。

Flow Table 規則都設定在 br1 上,每個 br1 都有 3 個網絡卡,網絡卡 1 對內,網絡卡 2、3 對外。

Flow Table 的設計: 在這裡插入圖片描述