本文主要是介绍ARP表项老化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/proc/sys/net/ipv4/neigh/default目录下的变量:
gc_thresh1:触发垃圾回收机制的表项个数
ARP 相关参数调优对比
--------------------------------------------------------------------------------------------------------------------
默认参数
net.ipv4.conf.all.arp_ignore=0 0(默认)响应任意网卡上接收到的对本机IP地址的arp请求(包括环回网卡上的地址),而不管该目的IP是否在接收网卡上。响应找我的同时也响应本机其他网卡的。
net.ipv4.conf.default.arp_ignore = 0
net.ipv4.conf.all.arp_announce=0 0 (默认)允许使用任意网卡上的IP地址作为arp请求的源IP,通常就是使用数据包的源IP。
net.ipv4.conf.default.arp_announce = 0
调优参数
net.ipv4.conf.all.arp_ignore=1 1 只响应目的IP地址为接收网卡上的本地地址的arp请求。只响应找我的,找本机其他网卡的不回应。
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.all.arp_announce=2 2 忽略IP数据包的源IP地址,选择该发送网卡上最合适的本地地址作为arp请求的源IP地址。
net.ipv4.conf.default.arp_announce = 2
ARP 缓存垃圾回收机制 参数调优对比
-------------------------------------------------------------------------------------------------------------------------
默认参数
net.ipv4.neigh.default.gc_thresh1= 128
net.ipv4.neigh.default.gc_thresh2= 512
net.ipv4.neigh.default.gc_thresh3= 1024
net.ipv4.neigh.default.gc_interval= 30
net.ipv4.neigh.default.gc_stale_time=60
调优参数
net.ipv4.neigh.default.gc_thresh1= 2048 少于这个值,gc 不会启动
net.ipv4.neigh.default.gc_thresh2= 4096 ARP表的最多纪录的软限制
net.ipv4.neigh.default.gc_thresh3= 8192 ARP表的最多纪录的硬限制,大于该数目,Gc立即启动,并强制回收
net.ipv4.neigh.default.gc_interval= 60 Gc 启动的周期时间
net.ipv4.neigh.default.gc_stale_time= 120 Stale 状态过期时间,无效的arp地址回收时间
- arp 表项数量 < gc_thresh1,不启动。
- gc_thresh1 =< arp 表项数量 <= gc_thresh2,按照 gc_interval 定期启动
- gc_thresh2 < arp 表项数量 <= gc_thresh3,5秒后启动
- arp 表项数量 > gc_thresh3,立即启动
可以通过命令 ip neigh 来查看arp gc 状态。
以上五个参数是 arp 缓存的 gc 阀值,相比默认值提高了,当内核维护的 arp 表过于庞大时候,可以考虑优化下,避免在某些场景下arp缓存溢出导致网络超时,参考:https://k8s.imroc.io/avoid/cases/arp-cache-overflow-causes-healthcheck-failed
这篇关于ARP表项老化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!