zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    javascript小记
    好看的echart的词云效果(wordCloud)
    工作中经常用到的git的简单操作记录
    积累就是提升之浅谈分时函数
    有意思的面试小试题
    分享张鑫旭大神的,纯css打字小技巧,我顺便收藏一下
    模仿也是提高,纯css小技巧实现头部进度条
    推荐好用的css调试工具,两个
    There appears to be trouble with your network connection. Retrying
    Enter passphrase for key ‘/root/.ssh/id_rsa’ : git push 重复输入密码的问题
  • 原文地址:https://www.cnblogs.com/dier-gaohe/p/14435879.html
Copyright © 2011-2022 走看看