Linux arp缓存超时值

Modified on: Sat, 31 Aug 2019 05:00:02 +0800

我正在尝试为Linux内核arp缓存超时配置合理的值,但我无法找到有关它们如何在任何地方工作的详细说明。即使是kernel.org文档也没有给出很好的解释,我只能找到推荐的值来缓解溢出。

以下是我拥有的值的示例:

net.ipv4.neigh.default.gc_thresh1 = 128
net.ipv4.neigh.default.gc_thresh2 = 512
net.ipv4.neigh.default.gc_thresh3 = 1024

现在,从我到目前为止收集到的内容:

  • gc_thresh1是垃圾收集器开始删除任何条目之前允许的arp条目数。

  • gc_thresh2是软限制,它是垃圾收集器主动删除arp条目之前允许的条目数。

  • gc_thresh3是硬限制,其中积极删除此数字以上的条目。

现在,如果我理解正确的话,如果arp条目的数量超过gc_thresh1但仍然低于gc_thresh2,那么将通过gc_interval设置的间隔定期删除多余的条件。

我的问题是,如果条目数超过gc_thresh2但低于gc_thresh3,或者数字超出gc_thresh3,那么条目是如何删除的?
换句话说,“主动”和“积极”删除的内容究竟是什么意思?我认为这意味着它们比gc_interval中定义的更频繁地删除,但我找不到多少。

作者:Jak

最佳答案

每当有强制垃圾收集条目时,last_flush字段在邻居表中更新,neigh_table

如果满足以下条件之一,则会发生条目的强制垃圾收集:

  • 表中的条目数大于gc_thresh3
  • 表中的条目数大于gc_thresh2,自last_flush以来的时间大于或等于5 HZ

当请求强制垃圾收集条目时,将丢弃满足以下条件的条目:

  • 没有人提到条目
  • 参赛不是永久性的

定期工作,如果条目总数大于neigh_periodic_workgc_thresh1会尝试释放未引用的条目。

来源: Linux内核源码,neighbour.c


相关问答

添加新评论