美文网首页
【MTU】flanneld flannel0 MTU

【MTU】flanneld flannel0 MTU

作者: Bogon | 来源:发表于2023-06-21 01:02 被阅读0次

    Flannel是一种容器网络解决方案,它使用overlay网络模型来连接不同的容器和主机。
    MTU(最大传输单元)是网络中能够通过的最大数据包大小。

    36fb01226198bfd468783299acb39347_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

    从flannel0读取数据的buffer缓冲区大小defaultMTU是1472,为什么是1472而不是默认的1500呢?

    原因是flanneld从flannel0收到数据后会封装成UDP数据,发出去的UDP数据包会增加一个IP头(20字节)和一个UDP头(8)字节。
    如果flannel0的MTU继续设置1500,加上IP和UDP头的28字节数据,到达宿主机eth0的时候最大报文会超过eth0的MTU,eth0会把该数据包丢弃。

    对于Flannel网络,通常建议将MTU设置为1450或更小。
    这是因为Flannel使用了额外的封装层来实现容器之间的通信,这些封装层会增加数据包的大小。
    在一些网络环境中,如果MTU设置过大,可能会导致数据包被分片,从而引起性能问题。
    因此,将MTU设置为1450或更小可以确保数据包不会被分片,从而提高网络性能。

    请注意,具体的MTU设置可能因网络环境而异,建议根据实际情况进行调整。

    如果多个节点相互通信,flanneld是怎么确定数据包该发往哪台主机呢?
    其实很简单,我们可以借助etcd维护网段与节点IP的关系,flanneld收到数据包后,解析出报文中的目的IP,再与etcd中的维护的网段做计算,就可以得到目标宿主机的IP。

    主机间通信使用“不可靠”的UDP协议?
    flanneld是把收到的数据包以UDP的形式发到其它机器,UDP协议不是“不可靠”协议吗?如果数据包丢了怎么办?
    其实 flanneld在这里充当的是链路层的角色,是允许丢包的,而丢包重传是上层该考虑的事情。
    举个例子,比如文章中的1.1.1.2与1.1.2.2建立的是TCP连接,在某个数据报文中flanneld发出去的报文丢了,此时TCP协议会有重传机制。

    相关文章

      网友评论

          本文标题:【MTU】flanneld flannel0 MTU

          本文链接:https://www.haomeiwen.com/subject/peikydtx.html