关于免费arp的一般使用场景: https://baike.baidu.com/item/gratuitous%20ARP/5635432
![](https://img.haomeiwen.com/i8091046/539c24de1edf0109.png)
可以看到 ipvlan配置好cni后,需要基于广播来获取mac地址,获取的mac地址是pod ipvlan子接口所依赖的父网卡的mac地址
![](https://img.haomeiwen.com/i8091046/a43b7caf3f751b1a.png)
那么这个广播其实是可以优化的,在cni配置前,可以直接触发daemon对所有node发送免费arp(广播),更新pod ip对应的mac
毕竟node cni daemon来做这件事更为方便.
关于免费arp的实现可以直接参考 metallb的应用代码:
![](https://img.haomeiwen.com/i8091046/073ad962553710e0.png)
![](https://img.haomeiwen.com/i8091046/28629093fa7f0870.png)
以及kube-vip arp模式相关的代码
![](https://img.haomeiwen.com/i8091046/8e8d11fde74fdf48.png)
其他的比如keepalived的切换vip时候,源码中也会触发免费arp
关注问题: 免费arp 是否会过期,是否需要周期性触发免费arp广播?
在matallb中看起来免费arp生成的记录并不会有过期问题,不需要周期性的触发arp广播,只需要在1100 ms内(多次)触发免费arp,自此之后只要vip没发生切换便不再需要继续触发arp,而且将该ip 从免费arp列表中移除。
在kubevip的逻辑中,每隔3s都会触发一次免费arp广播,也就是说arp应该是会过期的。
![](https://img.haomeiwen.com/i8091046/bf9c3ce77a12ff57.png)
最后再看下arp的状态机:
![](https://img.haomeiwen.com/i8091046/5b5f2251fcda486c.png)
网友评论