一:Cailico ipip 抓包记录
跨节点两个pod互ping
对相应的包进行详细拆解:
外层为宿主机ip,内层为podip
内层报文协议:实际ping包协议 icmp
外层报文协议:ipip
前12个字节为两个mac头:
第22-23字节为source的宿主机地址,24-25为dest 宿主机地址;
第48-49字节为source的pod地址,50.51为dest pod地址;
25-48中间22个字节为协议实现;
二:Cailico vxlan抓包记录
修改vxlan模式,需要注意配置文件的几处地方;可以下在calico-vxlan.yaml模板部署;
查看calico-config
Node status 对比;
Ipip模式如下:
跨机从node3中podsrc 10.233.92.9 ping node7 10.233.95.8
抓包分析:
外层IP依然为虚拟机ip;
往中间层走可以看到协议为vxlan,vni=4096;
在pod 外层为一层mac地址;在往内层为实际pod地址;
Vxlan模式封包如下:
对比协议封包格式,可以看到字节可以对协议字节匹配上;
三:问题和后续
通过两种模式的抓包对比,对于协议涉及到的报文格式有了进一步的了解,下一步准备从报文传输路径、涉及到的内核协议栈做进一步分析,力争把calico插件问题全部挖掘完。