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

你可能感兴趣的:(java,网络,开发语言)