Linux arp 缓存超时值

Jak*_*Jak 6 linux arp kernel

我正在尝试为 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
Run Code Online (Sandbox Code Playgroud)

现在,从我迄今为止收集到的:

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

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

  • gc_thresh3 是硬限制,高于此数字的条目将被积极删除。

现在,如果我理解正确的话,如果 arp 条目的数量超过 gc_thresh1 但仍低于 gc_thresh2,则超出部分将定期删除,间隔由 gc_interval 设置。

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

小智 2

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

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

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

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

  • 没有人提及该条目
  • 入境不是永久的

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

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