【k8s】k8s flannel vxlan模式原理
VXLAN (Virtual Extensible LAN)是一种网络虚拟化技术,它使用一种隧道协议,将二层以太网帧封装在四层UDP报文中,通过三层网络传输,组成一个虚拟大二层网络。
flannel会操作三个表: 路由表,arp表和二层转发表fdb。
flanneld中维护了这两部分信息:
- flannel.1的ip与mac地址对应关系,通过flannel.1的ip可以查询到flannel.1 的mac地址
- flannel.1的mac地址及其所在node ip对应关系,通过flannel.1的mac地址可以查询到node ip
Flannel 最主要的两个组件便是 flanneld 跟 flannel.1:
- flanneld:控制面,运行在用户态,负责为宿主机分配子网,并监听 etcd,维护宿主机的 FDB/ARP 跟路由表
- flannel.1:数据面,运行在内核态,作为 VTEP,VXLAN 数据包的封包跟解包
Flannel的VXLAN模式通过静态配置路由表,ARP表和FDB表的信息,结合VXLAN虚拟网卡 flannel.1 ,实现了一个所有Pod同属一个大二层网络的VXLAN网络模型。
FDB表(Forwarding database)用于保存二层设备中MAC地址和接口的关联关系,就像交换机中的MAC地址表一样。在二层设备转发二层以太网帧时,根据FDB表项来找到对应的接口。例如cni0网桥上连接了很多veth pair网卡,当网桥要将以太网帧转发给Pod时,FDB表根据Pod网卡的MAC地址查询FDB表,就能找到其对应的veth网卡,从而实现联通。
flannel本身只是用了vxlan的一部分功能,而且用法跟传统的网络,云计算等方面的用法也不太一样,并且只有一个vni,本质上只是为了用vxlan的内核封包解包作用,没有二层方面的交换学习,都是flannel自动配置的。
Flannel的VXLAN原理
https://www.kancloud.cn/pshizhsysu/network/2202538
![](https://img.haomeiwen.com/i12979420/1f279bd4895c1fae.png)
![](https://img.haomeiwen.com/i12979420/32457e29c6d0ce8e.png)
![](https://img.haomeiwen.com/i12979420/ef39ef7ad6dcb7a3.png)
![](https://img.haomeiwen.com/i12979420/1e35dd0a3d07246c.png)
![](https://img.haomeiwen.com/i12979420/9f31d1c5d0d7d679.png)
![](https://img.haomeiwen.com/i12979420/ba216599a0100424.png)
![](https://img.haomeiwen.com/i12979420/1c0bca8d5d362675.png)
![](https://img.haomeiwen.com/i12979420/16a2f1bc2564252c.png)
![](https://img.haomeiwen.com/i12979420/7a6dc4eed7fc8967.png)
Flannel的两种模式解析(VXLAN、host-gw)
https://www.cnblogs.com/cheyunhua/p/15241291.html
Linux 上实现 vxlan 网络
https://cizixs.com/2017/09/28/linux-vxlan/
VXLAN报文封装格式
http://zh-cjh.com/luyoujiaohuan/1016.html
Flannel Vxlan封包原理剖析
https://izsk.me/2022/03/25/Kubernetes-Flannel-Vxlan/
flannel使用的vxlan和calico使用的IPIP对比
https://www.cnblogs.com/janeysj/p/14291537.html
剖析容器网络 Flannel VXLAN 模式工作原理
https://xie.infoq.cn/article/cc4d7525be875292ad3aa298d
kubernetes Flannel网络剖析
https://plantegg.github.io/2022/01/19/kubernetes_Flannel%E7%BD%91%E7%BB%9C%E5%89%96%E6%9E%90/
tcpdump抓包拆解flannel vxlan模式下的容器跨主机通信流程
https://www.modb.pro/db/149337
什么是VXLAN?
https://support.huawei.com/enterprise/zh/doc/EDOC1100087027#ZH-CN_TOPIC_0254803582