vxlan和vlan資料報文

2022-01-30 15:42:45 字數 2977 閱讀 6637

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首部後,封裝在物理網路中的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位址,協議的其餘部分和傳統網路相同。

vxlan網路中的通訊過程。對於處於同乙個vxlan的兩台虛擬終端,其通訊過程可以概括為如下的步驟:

① 傳送方向接收方傳送資料幀,幀中包含了傳送方和接收方的虛擬mac位址。

② 傳送方連線的vtep節點收到了資料幀,通過查詢傳送方所在的vxlan以及接收方所連線的vtep節點,將該報文新增vxlan首部、外部udp首部、外部ip首部後,傳送給目的vtep節點。

③ 報文經過物理網路傳輸到達目的vtep節點。

④ 目的vtep節點接收到報文後,拆除報文的外部ip首部和外部udp首部,檢查報文的vni以及內部資料幀的目的mac位址,確認接收方與本vtep節點相連後,拆除vxlan首部,將內部資料幀交付給接收方。

⑤ 接收方收到資料幀,傳輸完成。

通過以上的步驟可以看出:vxlan的實現細節以及通訊過程對於處於vxlan中的傳送方和接收方是不可見的,基於傳送方和接收方的視角,其通訊過程和二者真實處於同一鏈路層網路中的情況完全相同

通過以上通訊步驟的描述可以看到,vtep節點在vxlan網路通訊中起到了至關重要的作用。在vxlan網路通訊中,vtep節的職責主要有3項:

(1) 將虛擬網路通訊的資料幀新增vxlan頭部和外部udp和ip首部。

(2) 將封裝好的資料報**給正確的vtep節點。

(3) 收到其他vtep發來的vxlan報文時,拆除外部ip、udp以及vxlan首部,然後將內部資料報交付給正確的終端。

接下來簡要說明一下vxlan網關節點。vxlan網關節點適用於這樣一種應用場景:當一台處於vxlan網路中的終端要和一台處於非vxlan網路中的節點進行通訊時,由於vxlan網路中的終端使用的都是虛擬網路位址,而非vxlan中的裝置使用的是實際的實體地址,此時,vxlan閘道器將起到位址轉換的作用,通訊時,臨時將vxlan終端的虛擬位址轉換為實體地址,然後再與外網進行通訊。位址轉換的方式可基於nat機制。關於網vxlan閘道器的實現詳細細節,筆者暫不明白,因此,這裡僅簡要描述。

詳細鏈結

TCP IP資料報文長度

tcp報文是tcp層傳輸的資料單元,也叫報文段。1 埠號 用來標識同一臺計算機的不同的應用程序。1 源埠 源埠和ip位址的作用是標識報文的返回位址。2 目的埠 埠指明接收方計算機上的應用程式介面。tcp報頭中的源埠號和目的埠號同ip資料報中的源ip與目的ip唯一確定一條tcp連線。2 序號和確認號 ...

報文 分組 幀 資料報和信元

報文 分組 幀 資料報和信元 許多聯網技術是基於分組交換的,分組交換涉及建立在網路上傳送的小塊資料。儘管分組看起來就是以這種方法命名的,但是聯網裝置之間傳送的資料更一般會被稱為報文。分組是一些類似詞彙中的乙個,這些詞彙被用於不同的環境中,以指從一台裝置傳送給另一台裝置的報文。在一些情況下,不同的術語...

cap資料報檔案解析

windows下的wireshark和linux下的tcpdump所抓的包為同樣的cap檔案的格式,sniffer軟體所抓的包副檔名也是.cap,但格式卻不太一樣。本文主要說明ethereal和tcpdump抓包產生的.cap檔案的格式。其實,要獲得pcap檔案的格式,除了直接開啟.cap檔案來分析...