overlay網絡技術之VxLAN詳解


一、如何理解

overlay(又叫疊加網絡、覆蓋網絡)簡單理解就是把一個邏輯網絡建立在一個實體網絡之上。就好比C/S架構是overlay internet、最開始網絡overlay 電話網絡、現在語音通信overlay ip 網絡。我們現在說的overlay是將二層數據包重新封裝在UDP中。比如IPsec over GRE就是一種嵌入式封裝。

Overlay是vmware NSX主要運用的技術,已經被IETF收錄。

二、overlay種類:

  網絡overlay:主要針對物理服務器,物理交換機作為邊緣設備。(物理交換機為VTEP節點)

  主機overlay:針對虛擬化,vSwitch作為網絡邊緣設備。(vSwitch為VTEP節點)

  混合overlay:上面兩種的結合。(軟件VTEP和硬件VTEP之間需要標准協議互通)

三、現在主要的幾個overlay技術:

VXLAN:由cisco和vmware支持,L2 over UDP ,會增加50個字節的IP包頭。

NVGRE:由微軟支持,L2 over GRE ,會增加42字節的包頭長度。(缺點是需要網絡設備支持GRE)

STT:由VMware(Nicira)支持,L2 over TCP,會增加58+76字節。(需要修改TCP)

四、VxLAN主要解決的問題:

1、服務器虛擬化技術,允許在物理機上運行多個MAC地址各不相同的虛擬機,隨着數量的增加,交換機上的MAC地址表將劇烈膨脹,甚至需要MAC覆蓋。
   2、數據中心多以VLAN為虛擬機划分網絡,但是VLAN數量受制於VLAN(802.1Q)協議4096,這遠遠滿足不了現實的需求。
   3、多租戶環境的要求,其每個租戶都有自己隔離的網絡環境,導致物理網絡中每個租戶所分配的MAC地址和VLAN ID會存在重疊的可能。
   4、Spanning Tree Protocol (STP)算法會產生大量多路路徑冗余。
   5、支持遠距離虛擬機遷移,避免處理復雜的L2 (VLAN)網絡環境。
   6、ToR(Top of Rack) Switch鏈接着物理server,它記錄着各個server/VM相連的MAC地址映射表。當地址映射表滿時,ToR就會停止學習新的地址,這樣就會導致網絡泛洪,直到有記錄過期被換出,騰出空閑表項。

五、VxLAN術語介紹:

VTEP:用於建立VxLAN隧道的端點設備成為VTEP,封裝和解封裝在VTEP節點上進行。

VTEPs:表示一個VXLAN網絡內的所有VTEP。

VNI:VXLAN網絡標識符,占用VXLAN報頭的24位

六、overlay轉發機制介紹:

1、報文封裝格式: 

UDP端口使用目的4798

2、組播協議轉播MAC地址:

VXLAN網絡(表示一個VXLAN VNI,比如VLAN10、VLAN20屬於兩個VLAN網絡,這里一個VXLAN網絡指比如VXALN10)和MAC地址表有綁定關系,VNI和IP組播地址有映射。在一個VXLAN網絡中,每個VTEP成員都需要知道自己下連所有終端的MAC地址,同時需要知道其他所有VTEP成員下所有終端的MAC地址表,其他終端MAC地址表是通過底層物理網絡組播進行傳播,一個VXLAN網絡一個組播地址。由於VXLAN最多可以有16M個網絡,這就意為着對傳統網絡的組播條目數不斷增加有一定挑戰。不過已經有一些網絡廠商比如H3C,在SDN架構下有一個控制器,所有的VTEP把MAC地址都轉發給他,他再進行分發給需要的VTEP成員,所以在請求時只需要單播發送報文給控制器。

同樣,VXLAN也有學習的功能,收到一個報文時,會檢查自己有沒有相關信息,如果沒有就會記錄源VNI、源外層VTEPIP、源內層MAC地址。

3VXLAN三層互通:

在VXLAN網絡下的終端和其他VXLAN進行通信或者和遠端訪問時,VXLAN網關會對VXLAN報文剝離,重新封裝為傳統的IP數據包送入網絡。同樣,當遠端或者其他VXLAN成員訪問本VXLAN成員時,VXLAN根據目的IP查找所屬VXLAN和所屬的VTEP。重新封裝成VXLAN報文送入目的地。

4VXLAN二層互通:

在一些特定情況下,需要VXLAN網絡和傳統網絡在同一個二層網絡中時,VXLAN網絡用二層網關和傳統二層互通。當數據包到達VXLAN二層網關時,剝離VXLAN報文,重新打上目的網絡對應的VLAN 802.1Q 標記后送入目的網絡。反之,VXLAN通過VLAN編號獲取VXLAN編號,再根據MAC地址確定目的VTEP的IP。然后進行轉發。

  注意:如果VTEP收到的來自VXLAN報文中帶有VLAN ID的會給予丟棄,因為VLAN ID只是一個本地信息,轉發了沒有意義。所以連接VTEP的交換機端口需要設置成access模式,而不是TRUNK模式。

七、ARP請求流程:

    VM1——VTEP1——物理交換機——VTEP2——VM2

 

1、VM1使用廣播發送ARP請求查找VM2的MAC地址。

2、VTEP1收到VM1的廣播后,查找自己的MAC地址表,如果下聯終端沒有將封裝報文為VXLAN,內層VNI為100,外層目的地址為VXLAN組播地址,外層源IP為VTEP1地址。

3、通過多播組VTEP2接受到VTEP1的報文,解封裝后。記錄報文的內層VNI、外層源VTEP1的IP、內層MAC地址。

4、VTEP2通過廣播將數據包廣播到自己連接的終端下面。

5、VM2接受到ARP請求后,做出回應。

6、VTEP2接受到VM2的回應后,查找流表,發現需要發送給VTEP1,重新把數據包進行封裝為VXLAN並以單播的形式發送給VTEP1.

7、VTEP1收到回應后,記錄內層VNI、外層源VTEP2的IP、內層VM2的MAC地址。

8、VTEP1解封裝后轉發給VM1。至此VM1收到了VM2的MAC地址。

八、數據傳輸流程:

   VM1——VTEP1——物理交換機——VTEP2——VM2

1、VM1給VM2發送了一個TCP報文。

2、VTEP1收到報文后檢查VM1和VM2是否屬於一個VNI,(如果不屬於將轉發給VXLAN網關)檢查后屬於一個VNI,需要轉發給VTEP2。

3、VTEP1封裝VXLAN報文以單播的形式發送給VTEP2。

4、VTEP2收到報文后解封裝,查找流表。VM2是自己下聯終端。

5、VTEP2單播的形式發送給VM2,至此一個報文發送完畢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM