net: Exempt multicast addresses from five-second neighbor lifetime
authorJeff Dike <jdike@akamai.com>
Fri, 13 Nov 2020 01:58:15 +0000 (20:58 -0500)
committerJakub Kicinski <kuba@kernel.org>
Fri, 13 Nov 2020 22:24:39 +0000 (14:24 -0800)
commit8cf8821e15cd553339a5b48ee555a0439c2b2742
tree13666363e35caf4ee8c97d7f765d55ea9062f32d
parent2b5668733050fca85f0ab458c5b91732f9496a38
net: Exempt multicast addresses from five-second neighbor lifetime

Commit 58956317c8de ("neighbor: Improve garbage collection")
guarantees neighbour table entries a five-second lifetime.  Processes
which make heavy use of multicast can fill the neighour table with
multicast addresses in five seconds.  At that point, neighbour entries
can't be GC-ed because they aren't five seconds old yet, the kernel
log starts to fill up with "neighbor table overflow!" messages, and
sends start to fail.

This patch allows multicast addresses to be thrown out before they've
lived out their five seconds.  This makes room for non-multicast
addresses and makes messages to all addresses more reliable in these
circumstances.

Fixes: 58956317c8de ("neighbor: Improve garbage collection")
Signed-off-by: Jeff Dike <jdike@akamai.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Link: https://lore.kernel.org/r/20201113015815.31397-1-jdike@akamai.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/neighbour.h
net/core/neighbour.c
net/ipv4/arp.c
net/ipv6/ndisc.c