flannel使用的vxlan和calico使用的IPIP对比

本文对比了k8s中Flannel的vxlan与Calico的IPIP隧道技术。Flannel的vxlan使用MACinUDP,增加50字节开销,而Calico的IPIP仅增加20字节,因此在性能上Calico更优。Flannel支持多种后端模式,vxlan模式下,数据通过vtep设备封装成vxlan报文进行跨节点通信。VXLAN优点在于扩充了二层网段数量,提高了灵活性,但报文封装解封装影响了转发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简述

k8s常用的两大网络插件Flannel和Calico都支持隧道技术,其中Calico支持IPinIP和BGP两种模式,IPIP模式中用到了隧道技术。但是Flannel和Calico使用的隧道技术是有区别的,Flannel使用的是vxlan技术,这种封包技术是MACinUDP的方式,因此Vxlan报文比原始报文多出了50个字节(8个vxlan协议相关字节,8个UDP头部字节

20个IP头部和14个MAC头部字节),这降低了网络线路传输有效数据得的比例,特别是小包。而Calico的IPinIP的封装方法只是在原始报文上添加了新的IP Header只多了20个字节。因此同样是隧道模式但是Calico的IPIP比Flannel的vxlan的网络性能更好。

其实,flannal支持多种后端模式,推荐使用的有三种:VXLAN,host-gw(损耗较少,但因路由设置的原因只适合小型网络)和UDP(一般用于不支持vxlan的内核或者实验),另外还有实验后端例如AliVPC、Alloc等。这里仅介绍vxlanl模式。

flannel的vxlan模式

flannel网络架构

cni0是一个网桥,pod-veth-port on bridge cni0,跨节点通信通过路由到vtep设备flannel.1上,flannel.1给数据封包成vxlan报文,通过flannel.1设置的对外通信网卡(可指定,如果未指定的话是默认路由对应的网卡)把数据包发出去。vtep(VXLAN Tunnel EndPoint)是直接与终端连接的设备,负责原始以太报文的VXLAN封装和解封装.

其中flanneld的主要作用是:

  • UDP封包解包,之所以用UDP是因为该协议头包含5-Tuple(五元组即srcIP、dstIP、srcPort、dstPort和protocol)可用于交换机通信时的面对多条等价路由的HASH计算等因此不能用IP包封装。TCP可有五元组但它是面向连接的有三次握手不利于快速通信,而vxlan报文的可靠性可以通过上层应用来保证。
  • 节点上的路由表的动态更新

flannel网络通信实例

  1. 首先flannel插件管理的容器内部通过路由到达cni0(10.244.1.1/24,集群内每个cni0IP地址各不相同):
[root@cluster-master-2 ~]# kubectl 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值