Flannel Vxlan原理
2025-11-10 11:39:00 0 举报
Flannel VXLAN是一种Kubernetes网络插件,设计用于在多个主机之间提供一致的Pod-to-Pod网络通讯。其核心思想是将容器网络封装在VXLAN(虚拟可扩展局域网)数据包中,实现跨不同主机节点的通信。利用标准的3层IP网络作为底层传输,VXLAN在L2网络上为每个Pod构建一个"覆盖网络",利用UDP封装,分配一个唯一的VNI(虚拟网络标识),通过VXLAN隧道将网络数据从一个主机的Pod传送到另一个主机的Pod。这种设计不仅能够实现网络的隔离和扩展,还支持跨物理服务器的容器间通信,是构建大规模、高密度容器集群的关键组件。文件类型:网络配置说明。修饰语:高效的、虚拟化的、跨主机的、大规模的。
作者其他创作
大纲/内容
VTEP 解包
10.42.1.97/24
Outer IP 头部
Node1 MAC
Node1 IP
SRC_MAC:32:88:da:ae:3d:ac
10.0.1.223/2400:0c:29:23:ce:27
DST_IP:10.42.2.62
route -n
Node1主机路由
10.42.0.0 lladdr 1e:c4:84:83:09:47 PERMANENT 10.42.2.0 lladdr be:2f:6f:c6:f6:cf PERMANENT
Destination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 10.42.2.1 0.0.0.0 UG 0 0 0 eth010.42.0.0 10.42.2.1 255.255.0.0 UG 0 0 0 eth010.42.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
cni0
Node1 Pod-1 IP地址
Vxlan Udp:8472
eth0
Data
DST_MAC:be:2f:6f:c6:f6:cf
Destination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 10.42.1.1 0.0.0.0 UG 0 0 0 eth010.42.0.0 10.42.1.1 255.255.0.0 UG 0 0 0 eth010.42.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Destination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 10.0.1.2 0.0.0.0 UG 100 0 0 ens16010.0.1.0 0.0.0.0 255.255.255.0 U 100 0 0 ens16010.42.0.0 10.42.0.0 255.255.255.0 UG 0 0 0 flannel.110.42.1.0 0.0.0.0 255.255.255.0 U 0 0 0 cni010.42.2.0 10.42.2.0 255.255.255.0 UG 0 0 0 flannel.1172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
ip neighbor show dev flannel.1
Node1 flannel.1 MAC
DST_MAC:00:0c:29:23:ce:27
:8472
10.42.1.96/24
Pod-1路由
Node2 MAC
原始数据包 Original L2 Frame
读取ARP和FBD
设置/更新
veth2
VXLAN 头部VNI 1
Pod-2路由表
10.42.2.61/24
Node1路由表
4
原始数据包 Original L2 Frame
Inner IP 头部
10.42.1.0 lladdr 32:88:da:ae:3d:ac PERMANENT 10.42.0.0 lladdr 1e:c4:84:83:09:47 PERMANENT
Node2 IP
veth1
10.0.1.222/2400:0c:29:da:c7:3a
flannel.1
ARP表存储VETP IP和MAC映射关系
Node-2路由表
Destination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 10.0.1.2 0.0.0.0 UG 100 0 0 ens16010.0.1.0 0.0.0.0 255.255.255.0 U 100 0 0 ens16010.42.0.0 10.42.0.0 255.255.255.0 UG 0 0 0 flannel.110.42.1.0 10.42.1.0 255.255.255.0 UG 0 0 0 flannel.110.42.2.0 0.0.0.0 255.255.255.0 U 0 0 0 cni0172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
2
FDB表存储VETP MAC和Node映射关系
10.42.1.1/24
Node2 flannel.1 MAC
UDP 头部
通过Node1 VTEP封好的包
1
Node2
10.42.2.1/24
flanned
VTEP 封包
Pod-1路由表
Node1
Pod-2路由
be:2f:6f:c6:f6:cf dst 10.0.1.223 self permanent1e:c4:84:83:09:47 dst 10.0.1.221 self permanent
3
1e:c4:84:83:09:47 dst 10.0.1.221 self permanent32:88:da:ae:3d:ac dst 10.0.1.222 self permanent
Pod-2
Node2 Pod-2 IP地址
10.42.2.0/32be:2f:6f:c6:f6:cf
DST_MAC:32:88:da:ae:3d:ac
SRC_IP:10.42.1.96
DST_PORT:8472
Node2主机路由
bridge fdb show dev flannel.1
SRC_MAC:00:0c:29:da:c7:3a
Pod-1
SRC_IP:10.0.1.222
DST_IP:10.0.1.223
SRC_PORT:随机端口
10.42.1.0/3232:88:da:ae:3d:ac
Router
Outer Ethernet 头部
Inner Mac 头部
10.42.2.62/24
UDP Data
收藏
0 条评论
下一页