關於VLAN和VXLAN的理解

轉自:https://blog.csdn.net/octopusflying/article/details/77609199

    被公司調到新網路部門研究SDN,項目涉及到一些虛擬網絡的概念。初次接觸VLAN和VXLAN技術,特整理資料學習下。

VLAN

·概況 

    VLAN (Virtual Local Area Network)意爲虛擬局域網,是在交換機實現過程中涉及到的概念,由802.1Q標準所定義。由於交換機是工作在鏈路層的網絡設備,連接在同一臺交換機的終端處於同一個三層網中,同時也處於同一個廣播域。當交換機接入較多的終端時,任意一臺終端發送廣播報文時(例如:ARP請求),報文都會傳遍整個網絡。對於規模較大的組網場景,廣播報文的泛濫對於網絡通信將會造成較大的影響。VLAN技術爲這一問題提供瞭解決方案,VLAN將同一網絡劃分爲多個邏輯上的虛擬子網,並規定當收到廣播報文時,僅僅在其所在VLAN中進行廣播從而防止廣播報文氾濫。VLAN技術在鏈路層的層次中實現了廣播域的隔離。

·標準

    VLAN標準涉及到的RFC文獻有2個:rfc3069、rfc5517。rfc3069闡述了利用VLAN技術來優化子網劃分並節省IP地址數目的方案;rfc5517則給出了Cisco提出的私有VLAN的標準以滿足網絡安全方面的需求。
    802.1Q標準所定義的以太網幀格式在基於傳統以太網幀格式中添加了描述VLAN信息的字段,幀格式如下:

   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技術,因此對於VLAN的介紹不再詳述,詳細標準可參見rfc文檔。

VXLAN

·概況 

    VXLAN(Virtual eXtential LAN)意爲虛擬可拓展局域網。隨着大數據、雲計算技術的興起以及虛擬化技術的普及,VLAN技術的弊端逐漸顯現出來,具體表現爲如下3個方面:
    (1) 虛擬化技術的發展促使大數據、雲計算技術公司採用單個物理設備虛擬多臺虛擬機的方式來進行組網,隨着應用模塊的增加,對於支持VLAN數目的要求也在提升,802.1Q標準中的最多支持4094個VLAN的能力已經無法滿足當下需求。
    (2) 公有云提供商的業務要求將實體網絡租借給多個不同的用戶,這些用戶對於網絡的要求有所不同,而不同用戶租借的網絡有很大的可能會出現IP地址、MAC地址的重疊,傳統的VLAN僅僅解決了同一鏈路層網絡廣播域隔離的問題,而並沒有涉及到網絡地址重疊的問題,因此需要一種新的技術來保證在多個租戶網絡中存在地址重疊的情況下依舊能有效通信的技術。
    (3) 虛擬化技術的出現增加了交換機的負擔,對於大型的數據中心而言,單臺交換機必須支持數十臺以上主機的通信連接才足以滿足應用需求,而虛擬化技術使得單臺主機可以虛擬化出多臺虛擬機同時運行,而每臺虛擬機都會有其唯一的MAC地址。這樣,爲了保證集羣中所有虛機可以正常通信,交換機必須保存每臺虛機的MAC地址,這樣就導致了交換機中的MAC表異常龐大,從而影響交換機的轉發性能。
    基於以上需求,VXLAN技術被提出。
    VXLAN技術是網絡Overlay技術的一種實現,對於Overlay技術,筆者的理解是:在基於物理網絡拓撲的基礎上通過一定的技術來構建虛擬的、不同於物理網絡拓撲的邏輯網絡,而物理網絡的拓撲結構對於Overlay終端而言是透明的,終端不會感知到物理網絡的存在,而僅僅能感知到邏輯網絡結構。對於終端的視角,網絡的情況和直接通過物理設備實現邏輯拓撲的效果是相同的。VXLAN技術可以基於三層網絡結構來構建二層虛擬網絡,通過VLAN技術可以將處於不同網段網絡設備整合在同一個邏輯鏈路層網絡中,對於終端用戶而言,這些網絡設備似乎“真實地”部署在了同一個鏈路層網絡中。

·標準

    文檔rfc7348詳細地介紹了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地址,協議的其餘部分和傳統網絡相同。

·通信過程

    下面簡要說明VXLAN網絡中的通信過程。對於處於同一個VXLAN的兩臺虛擬終端,其通信過程可以概括爲如下的步驟:

① 發送方向接收方發送數據幀,幀中包含了發送方和接收方的虛擬MAC地址。

② 發送方連接的VTEP節點收到了數據幀,通過查找發送方所在的VXLAN以及接收方所連接的VTEP節點,將該報文添加VXLAN首部、外部UDP首部、外部IP首部後,發送給目的VTEP節點。

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

④ 目的VTEP節點接收到報文後,拆除報文的外部IP首部和外部UDP首部,檢查報文的VNI以及內部數據幀的目的MAC地址,確認接收方與本VTEP節點相連後,拆除VXLAN首部,將內部數據幀交付給接收方。

⑤ 接收方收到數據幀,傳輸完成。

    通過以上的步驟可以看出:VXLAN的實現細節以及通信過程對於處於VXLAN中的發送方和接收方是不可見的,基於發送方和接收方的視角,其通信過程和二者真實處於同一鏈路層網絡中的情況完全相同。 
    以上通信方式可以用下圖來描述:

其中VTEP2中收到的報文和VTEP1中發送的報文相同,接受者收到的報文和發送者發出的報文也完全相同,這裏爲了便於描述,圖中將其略去。
    需要說明的是,VTEP1同樣需要將上述封裝好的IP報文封裝在以太網幀中才能進行傳輸,這裏稱之爲“外層以太網幀(Outer Ethernet Frame)”,外層以太網幀中數據字段值取決於實際物理網絡的實現,因此筆者爲在圖中給出。在VXLAN的實際實現中,VTEP1和VTEP2可以處於不同的物理網絡中,只要保證VTEP1和VTEP2可以通信即可,而對於二者通信所經過的路徑,我們不必關心。

 

·VTEP節點工作機制

    通過以上通信步驟的描述可以看到,VTEP節點在VXLAN網絡通信中起到了至關重要的作用。在VXLAN網絡通信中,VTEP節的職責主要有3項:
    (1) 將虛擬網絡通信的數據幀添加VXLAN頭部和外部UDP和IP首部。
    (2) 將封裝好的數據包轉發給正確的VTEP節點。
    (3) 收到其他VTEP發來的VXLAN報文時,拆除外部IP、UDP以及VXLAN首部,然後將內部數據包交付給正確的終端。
    對於功能(1)和(3)只要按照上文中給出的封裝和拆解規則進行處理即可,這裏主要說明功能(2)的實現,即VXLAN數據包的轉發過程。當VTEP節點收到一個VXLAN數據包時,需要根據內部以太網幀的目的MAC地址找到與擁有該目的地址的終端直接相連的VTEP地址,因此,這裏需要一個目的MAC地址和VTEP節點IP地址的映射關係,VTEP節點利用一個轉發表來存儲此映射關係。轉發表的格式爲:<VNI, Inner Dst MAC, VTEP IP>,即給定VNI和目的MAC地址後映射到一個VTEP IP地址。
    需要說明的是,映射VTEP節點IP地址時,之所以需要VNI的信息,是因爲當存在多租戶的情況下,各個租戶將會獨立組網,此時,多個租戶設定的MAC地址有一定的概率會出現重疊,此時我們必須保證每個租戶的網絡都能獨立地正常通信,因此,在爲每個租戶配置唯一的一個VNI的情況下,給定VNI和目的MAC地址,唯一確定一個VTEP地址。
    下圖是一個樣例,對於下圖中的網絡拓撲,分別給出了兩個VTEP節點的轉發表:

    

    上圖中給出了6個終端,分別屬於2個租戶,其中,終端T1、T2和T4屬於租戶1,分配VNI爲1,終端T3、T5和T6屬於租戶2,分配VNI爲2,兩個VTEP節點的轉發表已在圖中給出。
    每一個VTEP節點都必須擁有完整的轉發表纔可以正確地進行轉發的功能,轉發表的學習過程可以基於這樣一種簡單的策略:通過ARP報文學習,當收到終端發送的數據幀時,首先根據收到數據的端口判定數據發送方的VNI值,根據VNI和數據幀中的目的MAC查找對應的VTEP節點,如果查找成功,則轉發,否則,在當前VXLAN網絡中廣播ARP請求報文,這樣,連接目的MAC終端的VTEP節點就會發送ARP回答報文,這樣就學習到了新的轉發表項。
   需要說明的是,在多租戶的環境下,基於信息安全等因素,各個租戶的流量必須實現隔離,因此在發送廣播ARP請求報文時,不可以直接在多租戶的環境中廣播,必須保證只有當前VXLAN網絡的終端可以收到廣播報文,因此,和物理網絡中的ARP廣播請求的實現有所不同,這裏需要通過IP組播機制來模擬廣播,IGMP等相關組播協議這裏會用到。
   因此,VTEP節點還需要保存對應於每個租戶的VNI值的組播域,即對於每一個VNI值,存儲包含當前VXLAN網絡中終端的所有VTEP節點的IP,用於ARP廣播時的組播操作。對於上文中的網絡拓撲,兩個VTEP的廣播表如下圖:

   

    最後,當一個VTEP節點收到其他VTEP節點的ARP請求報文時,需要在自己連接的虛擬網絡中發送,此時,僅僅發送給當前VNI對應的終端,因此,VTEP中還需要保存當前接入設備的VXLAN網絡情況,因此,上圖中還給出了每個VTEP節點的設備表,該表中記錄了每個VNI對應的設備。這樣,當需要廣播ARP請求時,首先根據設備表將ARP請求報文發送給VNI值對應的設備,然後根據廣播表,將ARP請求發給VNI值對應的VTEP節點;而當收到其他VTEP節點發來的ARP請求時,根據設備錶轉發給對應的終端即可。這樣就實現了基於ARP請求的VTEP轉發的學習。而對於廣播表,在VTEP配置組網時可以完成設置,對於設備表,則在終端接入VTEP時可以完成配置,得到廣播表和設備表後,轉發表可以基於ARP的通信中逐步學習和構建。

·VXLAN網關

    接下來簡要說明一下VXLAN網關節點。VXLAN網關節點適用於這樣一種應用場景:當一臺處於VXLAN網絡中的終端要和一臺處於非VXLAN網絡中的節點進行通信時,由於VXLAN網絡中的終端使用的都是虛擬網絡地址,而非VXLAN中的設備使用的是實際的物理地址,此時,VXLAN網關將起到地址轉換的作用,通信時,臨時將VXLAN終端的虛擬地址轉換爲物理地址,然後再與外網進行通信。地址轉換的方式可基於NAT機制。關於網VXLAN網關的實現詳細細節,筆者暫不明白,因此,這裏僅簡要描述。

·VXLAN技術的優勢和侷限性

    相比VLAN技術,VXLAN技術具有以下的優勢:
    (1) 24位長度的VNI字段值可以支持更多數量的虛擬網絡,解決了VLAN數目上限爲4094的侷限性的問題。
    (2) VXLAN技術通過隧道技術在物理的三層網絡中虛擬二層網絡,處於VXLAN網絡的終端無法察覺到VXLAN的通信過程,這樣也就使得邏輯網絡拓撲和物理網絡拓撲實現了一定程度的解耦,網絡拓撲的配置對於物理設備的配置的依賴程度有所降低,配置更靈活更方便。
    (3) VLAN技術僅僅解決了二層網絡廣播域分割的問題,而VXLAN技術還具有多租戶支持的特性,通過VXLAN分割,各個租戶可以獨立組網、通信,地址分配方面和多個租戶之間地址衝突的問題也得到了解決。
    爲了保證VXLAN機制通信過程的正確性,rfc7348標準中規定,涉及到VXLAN通信的IP報文一律不允許分片,這就要求物理網絡的鏈路層實現中必須提供足夠大的MTU值,保證VXLAN報文的順利傳輸,這一點可以理解爲當前VXLAN技術的侷限性。  

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