Vxlan為何采用UDP封裝,而不是TCP或者IP?


1. OSI七層模型

    OSI七層模型自1979年正式提出以來,歷經計算機網絡40年的發展,非但沒有被淘汰,反而歷久彌新,為互聯網的發展提供了強勁的動力。

    下圖主要展示OSI七層模型中的代表協議,我們可以看到IP協議位於網絡層,而TCP和UDP則位於傳輸層。

    用戶數據包在OSI七層模型中的封裝與解封裝過程如下圖,用戶數據發送的過程中,會依次經歷四層的tcp/udp封裝,然后在三層經歷IP封裝,二層加上MAC頭,在物理層被翻譯成01,接收的過程正好相反。

 

2.Vxlan封裝

    目前Vxlan采用的如下圖的MAC in UDP的封裝格式:其封裝思維是將原始數據報文當做用戶數據包,VTEP當做大二層接入,那么VTEP會依次進行傳輸層封裝,網絡層封裝,以太網頭部封裝,如果直接進行IP封裝則跳過了傳輸層的封裝過程,會在傳輸的過程中遇到一些困難。

3. IP協議

    從上面可以看出,如果我們單純的采用IP進行Vxlan封裝,可以降低數據報文的開銷,但是會面臨一些其他的問題,我們看一下IP協議的封裝格式,可以看到網絡層的封裝不涉及端口號,在很多數據中心里都會有大量的冗余鏈路,交換機面對多條等價路徑時會進行基於五元組進行HASH,此時會出現問題;其次,在遇到NAT設備時,無法穿透也會造成影響。

4.TCP協議

    那么,為什么不采用同為傳輸層協議的TCP協議進行封裝呢?我們看下TCP封裝的頭部格式和UDP封裝的頭部格式,可以看到TCP頭部最少占用20個字節,而UDP頭部只占用8個字節,使用UDP封裝開銷比較小。

 

    其次TCP是一種面向連接的傳輸層協議,比較可靠,但是帶來的問題就是,在傳輸的過程中需要先建立連接,由此造成傳輸速度減慢,這也是采用UDP進行封裝的一大原因。

 

 

轉載自:http://www.subtime.cn/article/whyudp/


免責聲明!

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



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