【重識雲原生】第四章雲網絡4.3.10.3節——VXLAN隧道機制 3 VXLAN隧道機制 參考鏈接

 《重識雲原生系列》專題索引: 

  1. 第一章——不謀全局不足以謀一域
  2. 第二章計算第1節——計算虛擬化技術總述
  3. 第三章雲存儲第1節——分佈式雲存儲總述
  4. 第四章雲網絡第一節——雲網絡技術發展簡述
  5. 第四章雲網絡4.2節——相關基礎知識準備
  6. 第四章雲網絡4.3節——重要網絡協議
  7. 第四章雲網絡4.3.1節——路由技術簡述
  8. 第四章雲網絡4.3.2節——VLAN技術
  9. 第四章雲網絡4.3.3節——RIP協議
  10. 第四章雲網絡4.3.4節——OSPF協議
  11. 第四章雲網絡4.3.5節——EIGRP協議
  12. 第四章雲網絡4.3.6節——IS-IS協議
  13. 第四章雲網絡4.3.7節——BGP協議
  14. 第四章雲網絡4.3.7.2節——BGP協議概述
  15. 第四章雲網絡4.3.7.3節——BGP協議實現原理
  16. 第四章雲網絡4.3.7.4節——高級特性
  17. 第四章雲網絡4.3.7.5節——實操
  18. 第四章雲網絡4.3.7.6節——MP-BGP協議
  19. 第四章雲網絡4.3.8節——策略路由
  20. 第四章雲網絡4.3.9節——Graceful Restart(平滑重啓)技術
  21. 第四章雲網絡4.3.10節——VXLAN技術
  22. 第四章雲網絡4.3.10.2節——VXLAN Overlay網絡方案設計
  23. 第四章雲網絡4.3.10.3節——VXLAN隧道機制
  24. 第四章雲網絡4.3.10.4節——VXLAN報文轉發過程
  25. 第四章雲網絡4.3.10.5節——VXlan組網架構
  26. 第四章雲網絡4.3.10.6節——VXLAN應用部署方案
  27. 第四章雲網絡4.4節——Spine-Leaf網絡架構
  28. 第四章雲網絡4.5節——大二層網絡
  29. 第四章雲網絡4.6節——Underlay 和 Overlay概念
  30. 第四章雲網絡4.7.1節——網絡虛擬化與卸載加速技術的演進簡述
  31. 第四章雲網絡4.7.2節——virtio網絡半虛擬化簡介
  32. 第四章雲網絡4.7.3節——Vhost-net方案
  33. 第四章雲網絡4.7.4節vhost-user方案——virtio的DPDK卸載方案
  34. 第四章雲網絡4.7.5節vDPA方案——virtio的半硬件虛擬化實現
  35. 第四章雲網絡4.7.6節——virtio-blk存儲虛擬化方案
  36. 第四章雲網絡4.7.8節——SR-IOV方案
  37. 第四章雲網絡4.7.9節——NFV
  38. 第四章雲網絡4.8.1節——SDN總述
  39. 第四章雲網絡4.8.2.1節——OpenFlow概述
  40. 第四章雲網絡4.8.2.2節——OpenFlow協議詳解
  41. 第四章雲網絡4.8.2.3節——OpenFlow運行機制
  42. 第四章雲網絡4.8.3.1節——Open vSwitch簡介
  43. 第四章雲網絡4.8.3.2節——Open vSwitch工作原理詳解
  44. 第四章雲網絡4.8.4節——OpenStack與SDN的集成
  45. 第四章雲網絡4.8.5節——OpenDayLight
  46. 第四章雲網絡4.8.6節——Dragonflow

3 VXLAN隧道機制

3.1 VXLAN網絡模型簡介

圖3-1 VXLAN網絡模型圖

        從上圖中可以發現,VXLAN網絡中出現了以下傳統數據中心網絡中沒有的新元素:

  • VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端點)

        VXLAN網絡的邊緣設備,是VXLAN隧道的起點和終點,VXLAN報文的相關處理均在這上面進行。總之,它是VXLAN網絡中絕對的主角。VTEP既可以是一個獨立的網絡設備(比如華爲的CE系列交換機),也可以是虛擬機所在的服務器。

  • VNI(VXLAN Network Identifier,VXLAN 網絡標識符)

        前文提到,以太網數據幀中VLAN只佔了12比特的空間,這使得VLAN的隔離能力在數據中心網絡中力不從心。而VNI的出現,就是專門解決這個問題的。VNI是一種類似於VLAN ID的用戶標示,一個VNI代表了一個租戶,屬於不同VNI的虛擬機之間不能直接進行二層通信。VXLAN報文封裝時,給VNI分配了足夠的空間使其可以支持海量租戶的隔離。

        VNI還可分爲二層VNI和三層VNI,它們的作用不同,二層VNI是普通的VNI,用於VXLAN報文同子網的轉發;三層VNI和VPN實例進行關聯,用於VXLAN報文跨子網的轉發。

  • VXLAN隧道

        “隧道”是一個邏輯上的概念,它並不新鮮,比如大家熟悉的GRE。說白了就是將原始報文“變身”下,加以“包裝”,好讓它可以在承載網絡(比如IP網絡)上傳輸。從主機的角度看,就好像原始報文的起點和終點之間,有一條直通的鏈路一樣。而這個看起來直通的鏈路,就是“隧道”。顧名思義,“VXLAN隧道”便是用來傳輸經過VXLAN封裝的報文的,它是建立在兩個VTEP之間的一條虛擬通道

  • VXLAN的網關

        和VLAN類似,不同VNI之間的主機,以及VXLAN網絡和非VXLAN網絡中的主機不能直接相互通信。爲了滿足這些通信需求,VXLAN引入了VXLAN網關的概念。VXLAN網關分爲二層網關和三層網關,VXLAN二層網關用於終端接入VXLAN網絡,也可用於同一VXLAN網絡的子網通信;VXLAN三層網關用於VXLAN網絡中跨子網通信以及訪問外部網絡。

        根據三層網關部署方式的不同,VXLAN三層網關又可以分爲集中式網關和分佈式網關。

3.2 建立VXLAN隧道

3.2.1 哪些VTEP間需要建立VXLAN隧道

圖3-2 建立VXLAN隧道示意圖

        如圖3-2所示,網絡中存在多個VTEP,那麼這其中哪些VTEP間需要建立VXLAN隧道呢?

        如前所述,通過VXLAN隧道,“二層域”可以突破物理上的界限,實現大二層網絡中VM之間的通信。所以,連接在不同VTEP上的VM之間如果有“大二層”互通的需求,這兩個VTEP之間就需要建立VXLAN隧道。換言之,同一大二層域內的VTEP之間都需要建立VXLAN隧道。

        例如,假設圖3-2中VTEP_1連接的VM、VTEP_2連接的VM以及VTEP_3連接的VM之間需要“大二層”互通,那VTEP_1、VTEP_2和VTEP_3之間就需要兩兩建立VXLAN隧道,如圖3-3所示。

圖3-3 建立VXLAN隧道示意圖

3.2.2 什麼是“同一大二層域”

        前面提到的“同一大二層域”,就類似於傳統網絡中VLAN(虛擬局域網)的概念,只不過在VXLAN網絡中,它有另外一個名字,叫做Bridge-Domain,簡稱BD。

        我們知道,不同的VLAN是通過VLAN ID來進行區分的,那不同的BD是如何進行區分的呢?其實前面已經提到了,就是通過VNI來區分的。對於CE系列交換機而言,BD與VNI是1:1的映射關係,這種映射關係是通過在VTEP上配置命令行建立起來的。配置如下:

bridge-domain 10 //表示創建一個“大二層廣播域”BD,其編號爲10

vxlan vni 5000 //表示在BD 10下,指定與之關聯的VNI爲5000

        VTEP會根據以上配置生成BD與VNI的映射關係表,該映射表可以通過命令行查看,如下所示:

<HUAWEI> display vxlan vni

Number of vxlan vni : 1

VNI         BD-ID             State

----------------------------------

5000         10                 up

        有了映射表後,進入VTEP的報文就可以根據自己所屬的BD來確定報文封裝時該添加哪個VNI。那麼,報文根據什麼來確定自己屬於哪個BD呢?

3.2.3 如何確定報文屬於哪個BD

        這裏要先澄清下,VTEP只是交換機承擔的一個角色而已,只是交換機功能的一部分。也就是說,並非所有進入到交換機的報文都會走VXLAN隧道(也可能報文就是走普通的二三層轉發流程)。所以,我們在回答“如何確定報文屬於哪個BD”之前,必須先要回答“哪些報文要進入VXLAN隧道”。

3.2.3.1 哪些報文要進入VXLAN隧道

        回答這個問題之前,不妨先讓我們想下VLAN技術中,交換機對於接收和發送的報文是如何進行處理的。我們知道,報文要進入交換機進行下一步處理,首先得先過接口這一關,可以說接口掌控着對報文的“生殺大權”。傳統網絡中定義了三種不同類型的接口:Access、Trunk、Hybrid。這三種類型的接口雖然應用場景不同,但他們的最終目的是一樣的:一是根據配置來檢查哪些報文是允許通過的;二是判斷對檢查通過的報文進行怎樣的處理。

        其實在VXLAN網絡中,VTEP上的接口也承擔着類似的任務,只不過在CE系列交換機中,這裏的接口不是物理接口,而是一個叫做“二層子接口”的邏輯接口。類似的,二層子接口主要做兩件事:一是根據配置來檢查哪些報文需要進入VXLAN隧道;二是判斷對檢查通過的報文進行怎樣的處理。下面我們就來看下,二層子接口是如何完成這兩件事的。

        在二層子接口上,可以根據需要定義不同的流封裝類型(類似於傳統網絡中不同的接口類型)。CE系列交換機目前支持三種不同的流封裝類型,分別是dot1q、untag和default,它們各自對報文的處理方式如表3-1所示。有了這張表,你就能明白哪些報文要進VXLAN隧道了。

表3-1 不同流封裝類型的接口對報文的處理方式

流封裝類型

允許進入VXLAN隧道的報文類型

報文進行封裝前的處理

收到VXLAN報文並解封裝後的處理

dot1q

只允許攜帶指定VLAN Tag的報文進入VXLAN隧道。(這裏的“指定VLAN Tag”是通過命令進行配置的)

進行VXLAN封裝前,先剝掉原始報文的外層VLAN Tag。

進行VXLAN解封裝後:若內層原始報文帶有VLAN Tag,則先將該VLAN Tag替換爲指定的VLAN Tag,再轉發;若內層原始報文不帶VLAN Tag,則先將其添加指定的VLAN Tag,再轉發。

untag

只允許不攜帶VLAN Tag的報文進入VXLAN隧道。

進行VXLAN封裝前,不對原始報文做處理,即不添加任何VLAN Tag。

進行VXLAN解封裝後,若內層原始報文帶有vlan tag,則先將該vlan tag 剝掉,再轉發;若內層原始報文不帶vlan tag,則直接轉發

default

允許所有報文進入VXLAN隧道,不論報文是否攜帶VLAN Tag。

進行VXLAN封裝前,不對原始報文做處理,即不添加/不替換/不剝掉任何VLAN Tag。

進行VXLAN封裝後,不對原始報文做處理,即不添加/不替換/不剝掉任何VLAN Tag。

        VXLAN隧道兩端二層子接口的配置並不一定是完全對等的。正因爲這樣,纔可能實現屬於同一網段但是不同VLAN的兩個VM通過VXLAN隧道進行通信。

3.2.3.2 二層子接口加入BD

        看了上面的描述,再來回答“如何確定報文屬於哪個BD”就非常簡單了。其實,只要將二層子接口加入指定的BD,然後根據二層子接口上的配置,就可以確定報文屬於哪個BD啦!

        比如圖3-4所示的組網,我們可以分別在VTEP的兩個物理接口10GE 1/0/1和10GE 1/0/2上配置不同流封裝類型的二層子接口並將其分別加入不同的BD。

圖3-4 二層子接口加入BD

        基於二層物理接口10GE 1/0/1,分別創建二層子接口10GE 1/0/1.1和10GE 1/0/1.2,且分別配置其流封裝類型爲dot1q和untag。配置如下:

interface 10GE1/0/1.1 mode l2 //創建二層子接口10GE1/0/1.1

  encapsulation dot1q vid 10 //只允許攜帶VLAN Tag 10的報文進入VXLAN隧道

  bridge-domain 10 //報文進入的是BD 10

interface 10GE1/0/1.2 mode l2 //創建二層子接口10GE1/0/1.2

  encapsulation untag //只允許不攜帶VLAN Tag的報文進入VXLAN隧道

  bridge-domain 20 //報文進入的是BD 20

        基於二層物理接口10GE 1/0/2,創建二層子接口10GE 1/0/2.1,且流封裝類型爲default。配置如下:

interface 10GE1/0/2.1 mode l2 //創建二層子接口10GE1/0/2.1

  encapsulation default //允許所有報文進入VXLAN隧道

  bridge-domain 30 //報文進入的是BD 30

        此時你可能會有這樣的疑問,爲什麼要在10GE 1/0/1上創建兩個不同類型的子接口?是否還可以繼續在10GE 1/0/1上創建一個default類型的二層子接口?換句話說,用戶應該如何選擇配置哪種類型的二層子接口?三種類型的二層子接口之間,是否存在配置約束關係?

3.1.3.3 各類型二層子接口的應用場景

        我們先來解答下是否可以在10GE 1/0/1上再創建一個default類型的二層子接口。答案是不可以。其實根據表3-1的描述,這一點很容易理解。因爲default類型的二層子接口允許所有報文進入VXLAN隧道,而dot1q和untag類型的二層子接口只允許某一類報文進入VXLAN隧道。這就決定了,default類型的二層子接口跟其他兩種類型的二層子接口是不可以在同一物理接口上共存的。否則,報文到了接口之後如何判斷要進入哪個二層子接口呢。所以,default類型的子接口,一般應用在經過此接口的報文均需要走同一條VXLAN隧道的場景,即下掛的VM全部屬於同一BD。例如,圖3-3中VM3和VM4均屬於BD 30,則10GE 1/0/2上就可以創建default類型的二層子接口。

        再來看下爲什麼可以在10GE 1/0/1上分別創建dot1q和untag類型的二層子接口。如圖3-3所示,VM1和VM2分別屬於VLAN 10和VLAN 20,且分別屬於不同的大二層域BD 10和BD 20,顯然他們發出的報文要進入不同的VXLAN隧道。如果VM1和VM2發出的報文在到達VTEP的10GE 1/0/1接口時,一個是攜帶VLAN 10的Tag的,一個是不攜帶VLAN Tag的(比如二層交換機上行連接VTEP的接口上配置的接口類型是Trunk,允許通過的VLAN爲10和20,PVID爲VLAN 20),則爲了區分兩種報文,就必須要在10GE 1/0/1上分別創建dot1q和untag類型的二層子接口。所以,當經過同一物理接口的報文既有帶VLAN Tag的,又有不帶VLAN Tag的,並且他們各自要進入不同的VXLAN隧道,則可以在該物理接口上同時創建dot1q和untag類型的二層子接口。

        當然,現網中可能存在各種不同的組網,小編也不可能一一列舉出來。所以在實際應用中,請務必根據組網需求,結合表3-1,合理規劃二層子接口的流封裝類型。

3.2.4 VXLAN隧道怎麼建

        現在,我們可以來看下VXLAN隧道是怎麼建立起來的了。一般而言,隧道的建立不外乎手工方式和自動方式兩種。

  • 手工方式

        這種方式需要用戶手動指定VXLAN隧道的源和目的IP地址分別爲本端和對端VTEP的IP地址,也就是人爲的在本端VTEP和對端VTEP之間建立靜態VXLAN隧道。

        對於CE系列交換機,以上配置是在NVE(Network Virtualization Edge)接口下完成的。配置過程如下:

interface Nve1 //創建邏輯接口NVE 1

  source 1.1.1.1 //配置源VTEP的IP地址(推薦使用Loopback接口的IP地址)

  vni 5000 head-end peer-list 2.2.2.2

  vni 5000 head-end peer-list 2.2.2.3

        其中,vni 5000 head-end peer-list 2.2.2.2和vni 5000 head-end peer-list 2.2.2.3的配置,表示屬於VNI 5000的對端VTEP有兩個,IP地址分別爲2.2.2.2和2.2.2.3。根據這兩條配置,VTEP上會生成如下所示的一張表:

<HUAWEI> display vxlan vni 5000 verbose

BD ID : 10

State : up

NVE : 288

Source : 1.1.1.1

UDP Port : 4789

BUM Mode : head-end

Group Address : -

Peer List : 2.2.2.2 2.2.2.3

        根據上表中的Peer List,本端VTEP就可以知道屬於同一BD(或同一VNI)的對端VTEP都有哪些,這也就決定了同一大二層廣播域的範圍。當VTEP收到BUM(Broadcast&Unknown-unicast&Multicast,廣播&未知單播&組播)報文時,會將報文複製併發送給Peer List中所列的所有對端VTEP(這就好比廣播報文在VLAN內廣播)。因此,這張表也被稱爲“頭端複製列表”。當VTEP收到已知單播報文時,會根據VTEP上的MAC表來確定報文要從哪條VXLAN隧道走。而此時Peer List中所列的對端,則充當了MAC表中“出接口”的角色。在後面的報文轉發流程中,你將會看到頭端複製列表是如何在VXLAN網絡中指導報文進行轉發的。

  • 自動方式

        自動方式下VXLAN隧道的建立需要藉助於其他的協議,例如BGP。CE系列交換機中,自動方式建立VXLAN隧道主要應用在EVN(Ethernet Virtual Network)和VXLAN的分佈式網關場景中。本文不對該方式進行詳細講述,具體實現可參考EVN的相關資料

3.2.5 如何確定報文要進哪條隧道

        從前面的描述我們知道,屬於同一BD的VXLAN隧道可能不止一條,比如前面的頭端複製列表中,同一個源端VTEP(1.1.1.1)對應了兩個對端VTEP(2.2.2.2和2.2.2.3)。那就帶來了另一個問題,報文到底應該走哪一條隧道呢?

        我們知道,基本的二三層轉發中,二層轉發依賴的是MAC表,如果沒有對應的MAC表,則主機發送ARP廣播報文請求對端的MAC地址;三層轉發依賴的是FIB表。在VXLAN中,其實也是同樣的道理。下面就讓我們來看下,VXLAN網絡中報文的轉發流程。相信看完下面的內容,關於“如何確定報文要進哪條隧道”的疑惑也就迎刃而解了。

參考鏈接

VXLAN介紹

VXLAN基本概述

兩種Overlay技術:NVGRE和VXLAN

解讀VXLAN

什麼是 VxLAN ?它的優點有哪些?

深度:什麼是VxLAN?

關於VLAN和VXLAN的理解

VXlan 技術實現原理

最好的vxlan介紹

VXLAN:雲時代的虛擬化數據中心網絡

本文由[mdnice](https://mdnice.com/?platform=6)多平臺發佈
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章