Linux

預設 arp 記憶體超時

  • July 30, 2018

我沒有找到如何檢查和更改 Linux 上的預設 arp 記憶體超時。我使用帶有核心 3.x 的 debian(但我認為它與舊核心相同)

60 秒

你可以檢查它:

cat /proc/sys/net/ipv4/neigh/ethX/gc_stale_time

並改變它

echo timeout > /proc/sys/net/ipv4/neigh/ethX/gc_stale_time

超時是新值

我承認,在我寫這篇文章時,這是一個三年前的問題。但是我在研究同一主題時遇到了這個問題,並且在證實 watchmansky 的答案(https://serverfault.com/a/684381/188907)的過程中,我對這種情況有了更多的了解,至少在它存在的情況下今天。

根據https://linux.die.net/man/7/arp,設置

gc_stale_time

影響 ARP 記憶體檢查陳舊條目的頻率。(或垃圾收集,因此設置名稱開頭的“gc_”。)

同時,價值

base_reachable_time_ms

實際上控制了一個 ARP 記憶體條目的有效期,預設為 30000 毫秒。但是每個新的 ARP 記憶體條目實際上會收到一個隨機設置在base_reachable_time_ms / 2 and 3*base_reachable_time_ms / 2*.

這意味著每個新的記憶體 ARP 條目將具有 15 到 45 秒之間的開始超時,除非base_reachable_time_ms更改 的值。

這假設記憶體的 ARP 條目的目前超時值在使用前已經過驗證,並且垃圾收集率不會影響記憶體條目的有效有效性。

(*通過閱讀https://elixir.bootlin.com/linux/v4.17.11/source/net/core/neighbour.c#L115上的程式碼確認)

引用自:https://serverfault.com/questions/684380