如果说flannel UDP模式是IP in UDP(IP数据包封装在UDP数据包中,也就是三层网络的基础上构建一个虚拟的三层网络),那么flannel vxlan模式就是MAC in UDP(链路层数据封装在UDP数据包中,也就是三层网络的基础上构建一个虚拟的二层网络)。
udp模式:



发送: 用户态 ---> 内核态 ---> 用户态 ---> 内核态 ---> 物理网卡--->外界网络
接收: 用户态 <--- 内核态 <--- 用户态 <--- 内核态 <--- 物理网卡<--外界网络
vxlan模式:




发送:用户态 ---> 内核态 --->物理网卡--->外界网络
接收: 用户态 <---内核态 <---物理网卡<--外界网络
总结
Flannel UDP模式和VXLAN模式在内核态和用户态切换次数上存在一些差异,这会对性能产生影响。
在Flannel UDP模式中,容器的网络数据包经过内核进行封装和解封装,并通过UDP协议进行传输。这意味着每个数据包都需要经过内核态和用户态之间的切换,从而增加了内核态和用户态切换的次数,这些切换可能会引入一定的性能开销。
而在VXLAN模式中,数据包的封装和解封装是在内核中完成的,并且使用硬件加速技术(如硬件VTEP)来提高网络传输的效率。因此,相对于Flannel UDP模式,VXLAN模式通常具有更少的内核态和用户态切换次数,从而在性能上表现更好。
无论是Flannel UDP模式还是VXLAN模式,它们都使用UDP协议来封装和传输容器的网络数据包。
不同的是,VXLAN模式在封装和解封装时还会添加额外的VXLAN头部信息,以实现虚拟局域网的扩展。
网友评论