局域網SDN技術硬核內幕 二 雲網CP的日常恩愛——硬件VXLAN轉發平面

局域網SDN技術硬核內幕 二 雲網CP的日常恩愛——硬件VXLAN轉發平面

在大家的祝福之下,雲和網絡經歷了紅娘撮合(EVPN信令平面)、領證(層次化端口綁定),終於要過上幸福的小日子了——也就是業務轉發。
我們知道,交換機作爲VXLAN網關的硬件VXLAN,和前面我們提到的OVS作爲VXLAN網關的軟件VXLAN,轉發平面的差異主要就是讓交換機專用硬件(ASIC)接管了OVS進行VXLAN的處理,從而大大提升網絡轉發平面工作效率。
讓我們看一看,交換機專用硬件具體是如何處理虛擬化網絡數據轉發的呢?
首先,讓我們看最簡單的情況——同一個OVS下的二層轉發。
在這裏插入圖片描述
如圖,由於VM100和VM200在同一個網段,都連接在OVS上,OVS可以直接轉發兩個VM之間的數據通信。在有了DPDK的條件下,這種二層轉發效率還是比較高的,不需要在VM和宿主機之間進行數據拷貝。

那麼,如果VM100和VM200屬於不同的網段呢?
在這裏插入圖片描述
如圖,VM 100和VM 200分別在VLAN 100和VLAN 200內,它們的默認網關分別是VLAN 100和VLAN 200的VLAN Interface IP地址。
OVS會將來自VM 100的數據包打上VLAN Tag,發送到硬件交換機,硬件交換機的VLAN Interface收到這個數據包,做三層跨VLAN轉發,送回到OVS。OVS剝離VLAN Tag後,將數據包發送到VM 200。

大家發現,這和園區網中的跨VLAN三層轉發工作原理完全相同,並不涉及VXLAN。
什麼情況會涉及VXLAN呢?
讓我們回憶一下,硬件VXLAN與軟件VXLAN實現的最大區別是——
對了,是硬件交換機作爲VXLAN網關(VTEP),也就是說,只有跨TOR交換機的數據轉發,纔會涉及VXLAN!

我們先看看跨TOR交換機的虛擬機二層互通——
在這裏插入圖片描述

哈哈,這個圖是不是很複雜?那好吧,讓我們細細分解——

首先,來自VM的數據包,在VLAN 100中,被OVS打上了VLAN 100的VLAN TAG。TOR交換機收到這個數據包以後,首先,會按照目的MAC地址查找轉發表。
由於這個數據包是跨交換機轉發的,顯然,目的MAC在VXLAN隧道的另一端。交換機的MAC表項中,出方向接口是VXLAN的VSI接口,又叫Tunnel口。交換機會對所有從VXLAN Tunnel口發送的數據包進行VXLAN封裝。
VXLAN封裝用的外層源IP和目的IP是哪裏來的呢?源IP很好理解,是VSI接口自身的IP地址,而目的IP用對端VTEP的IP地址就行了。

由於同一個網段的虛擬機,有可能位於多個VTEP下面,所以,理論上如果有n個VTEP,那麼,每個VTEP上會有n-1個屬於該網段(VXLAN ID)的VXLAN隧道。怎麼樣確定這個數據包應當被送到哪個VXLAN隧道呢?
我們回想一下EVPN一節中學到的內容。對端的VM上線的時候,VTEP可以獲取到它的IP地址和MAC地址,並通過EVPN通告給網絡中其他VTEP,其他VTEP收到相關信息以後,就會建立相關的MAC表項,將這個MAC地址的出接口,指向去往它所在的VTEP的隧道。

當目的VM所在的VTEP收到VXLAN數據包之後,它也會查找VXLAN隧道內部的MAC地址,發現它的出方向接口之後,會轉換爲對應的VLAN,併發送到宿主機,由OVS負責將數據包送到VM。我們管剝離VXLAN數據包頭後的出方向接口,叫做VXLAN AC(Attach Circult)口。

是不是很神奇?

別急,我們還有更神奇的。
對於跨網段跨VTEP的轉發,也就是VXLAN三層路由,實現方式是什麼樣的呢?
在這裏插入圖片描述
如圖,我們回憶一下OVS實現的分佈式任意播網關下,三層VXLAN路由的實現
在這裏插入圖片描述
看,VXLAN 8100還是那個VXLAN 8100,兩個OVS下的VM也還是那兩個屬於VLAN 100和VLAN 200的VM。唯一不一樣的,是OVS和TOR之間爲VLAN。
在VXLAN三層路由場景,TOR收到來自VM100的數據包,發現它的MAC地址指向自身VXLAN VSI接口。TOR會根據目的IP查找關聯的對端VTEP,並將數據包封裝兩端VTEP的IP地址作爲源IP和目的IP——
等等,少了什麼?
對了,VLAN 100是如何映射到VXLAN 8100的?
——TOR會根據目的IP查找關聯的對端VTEP……
這條表項中,也記錄了三層互通用的VXLAN 8100啊!

目的IP關聯的VTEP,以及需要轉換的VXLAN ID (8100),這些信息是哪來的呢?對,就是由對端VTEP通過EVPN昭告天下的。

好了,讓我們小結一下今天的收穫:

  1. 交換機作爲VXLAN網關時,有兩類接口:Attached Circult口和Tunnel口(或VSI口),從前者進後者出時,封裝進入VXLAN隧道,反之,剝離VXLAN隧道;
  2. 交換機做二層VXLAN轉發時,查找的是目的MAC地址,做三層VXLAN路由時,先查找目的MAC地址對應接口(指向本地VSI口),再通過IP地址查找VXLAN隧道的目的地址,進行VXLAN封裝;
  3. 來自VXLAN隧道的數據包,在交換機上進行解封裝,查找目的IP/MAC地址,從AC口發送到本地的OVS,最後送到VM;
  4. 所有隧道遠端的VM的MAC/IP信息,均來自遠端EVPN通告。
    5. 再好的CP,過日子也要明算賬。層次化端口綁定和EVPN讓所有VTEP表項和雲平臺同步,才能讓雲與網絡這對CP天長地久。

今天大家不但學到了SDN,還學到了人生哲學。明天我們將解決一個挖了很久的坑——怎麼樣讓數據包走出數據中心網絡呢?

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