I didn't found how check and change the default arp cache timeout on Linux. I using debian with kernel 3.x (but I supposed it same with older kernels)
2 Answers
I acknowledge that as I write this, this is a three year old question. But I came across this question while researching the same subject, and in the process of corroborating watchmansky's answer (https://serverfault.com/a/684381/188907), I learned a bit more about the situation, at least as it exists today.
According to https://linux.die.net/man/7/arp, the setting
gc_stale_time
effects how often the ARP cache is checked for stale entries. (Or garbage collected, hence the "gc_" at the start of the setting name.)
Meanwhile, the value
base_reachable_time_ms
actually controls how long an ARP cache entry is valid, and it defaults to 30000 milliseconds. But each new ARP cache entry will actually receive a time to live value randomly set somewhere between base_reachable_time_ms / 2 and 3*base_reachable_time_ms / 2
*.
This means each new cached ARP entry will have a starting timeout between 15 and 45 seconds, unless the value of base_reachable_time_ms
is changed.
This assumes that the current timeout value for a cached ARP entry is validated before use, and that the garbage collection rate does not influence the effective validity of the cache entries.
(*Confirmed by reading the code at https://elixir.bootlin.com/linux/v4.17.11/source/net/core/neighbour.c#L115)
![](../../users/profiles/188907.webp)
- 171
- 1
- 2
-
1Something to note as well is that GC doesn't happen until the number of entries exceeds the threshold set by /proc/sys/net/ipv4/neigh/default/gc_thresh1 which defaults to 128. https://elixir.bootlin.com/linux/v5.12/source/net/core/neighbour.c#L912 – Mike Shlanta Jun 15 '21 at 17:17
60 seconds
you can check it with:
cat /proc/sys/net/ipv4/neigh/ethX/gc_stale_time
and change it with
echo timeout > /proc/sys/net/ipv4/neigh/ethX/gc_stale_time
timeout is new value
![](../../users/profiles/253048.webp)
- 749
- 4
- 9
- 16