Linux arp 缓存超时值

Linux arp 缓存超时值

我正在尝试为 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 中定义的频率要高,但我找不到具体是多少。

答案1

每次强制对条目进行垃圾收集时,last_flush邻居表中的字段都会更新neigh_table

如果满足以下条件之一,就会强制对条目进行垃圾收集:

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

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

  • 没有人提到条目
  • 入场不是​​永久的

定期工作,neigh_periodic_work如果条目总数大于,则尝试释放未引用的条目gc_thresh1

来源:Linux 内核源代码,邻居.c

相关内容