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。.net
VXLAN是一種隧道技術。經過將虛擬網絡中的數據幀封裝在實際物理網絡中的報文中進行傳輸。具體實現方式爲:將虛擬網絡的數據幀添加VXLAN首部後,封裝在物理網絡中的UDP報文中,而後以傳統網路絡的通訊方式傳送該UDP報文,到達目的主機後,去掉物理網絡報文的頭部信息以及VXLAN首部,將報文交付給目的終端。整個通訊過程目的終端不會感知到物理網絡的存在。orm
利用VXLAN技術組網的方法能夠用下圖來描述:blog
圖中兩臺終端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首部,將內部數據幀交付給接收方。⑤ 接收方收到數據幀,傳輸完成。