802.1Q標准的以太網幀格式增加了802.1Q字段,該字段包含了Type、PRI、CFI和VID 4個部分,各個部分的含義如下:
·Type:長度為2 bytes,表示幀類型,802.1Q tag幀中Type字段取固定值0x8100,如果不支持802.1Q的設備收到802.1Q幀,則將其丟棄。
·PRI:priority字段,長度為3 bit,表示 以太網幀的優先級,取值范圍是0~7,數值越大,優先級越高。當交換機/路由器發生傳輸擁塞時,優先發送優先級高的數據幀。
·CFI:Canonical Format Indicator,長度為1bit,表示MAC地址是否是經典格式。CFI為0說明是經典格式,CFI為1表示為非經典格式。該字段用於區分以太網幀、FDDI幀和令牌環網幀,在以太網幀中,CFI取值為0
·VID:VLAN ID,長度為12 bit,取值范圍是0~4095,其中0和4095是保留值,不能給用戶使用。
這里需要關注的是VID字段,該字段唯一標識了一個VLAN,12bit長度的VID可以表示4096個不同的值,除去兩個保留值,一個以太網最多可以划分為4094個VLAN。
VXLAN
VXLAN是一種隧道技術。通過將虛擬網絡中的數據幀封裝在實際物理網絡中的報文中進行傳輸。具體實現方式為:將虛擬網絡的數據幀添加VXLAN首部后,封裝在物理網絡中的UDP報文中,然后以傳統網路絡的通信方式傳送該UDP報文,到達目的主機后,去掉物理網絡報文的頭部信息以及VXLAN首部,將報文交付給目的終端。整個通信過程目的終端不會感知到物理網絡的存在。
利用VXLAN技術組網的方法可以用下圖來描述:

圖中兩台終端T1和T2位於不同的網絡中,二者通過路由器來實現互通,通過VXLAN可以使得這兩台終端在“邏輯上”位於“同一個”鏈路層網絡中而與兩台終端直接相連的路由器也在邏輯上構建了一條在虛擬鏈路中的通道vxlan tunnel,這樣的路由器我們稱之為“vxlan隧道終端”(VXLAN Tunnel End Point, VTEP)。在包含VXLAN的網絡中,VXLAN的實現機制僅僅對VTEP節點可見。
需要說明的是,VTEP節點可以由實現了VXLAN功能的交換機、路由器等硬件設備充當,但在更多的基於虛擬化技術實現的網絡拓撲的應用中,VTEP節點的角色更多由部署了多台虛擬機的主機中的hypervisor進程來擔任,如下圖:

接下來介紹VXLAN的通信原理。VXLAN通過將邏輯網絡中通信的數據幀封裝在物理網絡中進行傳輸,封裝和解封裝的過程由VTEP節點完成。VXLAN將邏輯網絡中的數據幀添加VXLAN首部后,封裝在物理網絡中的UDP報文中傳送,VXLAN首部的格式如下:

VXLAN首部由8個字節組成,第1個字節為標志位,其中標志位I設為1表示是一個合法的VXLAN首部,其余標志則保留,在傳輸過程中必須置為0;第2-4字節為保留部分,第5-7字節為VXLAN標識符,用來表示唯一的一個邏輯網絡;第8個字節同樣為保留字段,暫未使用。
VXLAN傳輸過程中,將邏輯鏈路網絡的數據幀添加VXLAN首部后,依次添加UDP首部,IP首部,以太網幀首部后,在物理網絡中傳輸,數據幀的封裝格式可以用下圖來描述:

需要注意的是,外部UDP首部的目的端口號為4789,該數值為默認VXLAN解析程序的端口,外層IP首部中的源IP和目的IP地址均填寫通信雙方的VTEP地址,協議的其余部分和傳統網絡相同。
① 發送方向接收方發送數據幀,幀中包含了發送方和接收方的虛擬MAC地址。② 發送方連接的VTEP節點收到了數據幀,通過查找發送方所在的VXLAN以及接收方所連接的VTEP節點,將該報文添加VXLAN首部、外部UDP首部、外部IP首部后,發送給目的VTEP節點。③ 報文經過物理網絡傳輸到達目的VTEP節點。④ 目的VTEP節點接收到報文后,拆除報文的外部IP首部和外部UDP首部,檢查報文的VNI以及內部數據幀的目的MAC地址,確認接收方與本VTEP節點相連后,拆除VXLAN首部,將內部數據幀交付給接收方。⑤ 接收方收到數據幀,傳輸完成。
VTEP節點工作機制
通過以上通信步驟的描述可以看到,VTEP節點在VXLAN網絡通信中起到了至關重要的作用。在VXLAN網絡通信中,VTEP節的職責主要有3項:(1) 將虛擬網絡通信的數據幀添加VXLAN頭部和外部UDP和IP首部。
(2) 將封裝好的數據包轉發給正確的VTEP節點。
(3) 收到其他VTEP發來的VXLAN報文時,拆除外部IP、UDP以及VXLAN首部,然后將內部數據包交付給正確的終端。