Re: [PATCH net-next 3/6] bridge: Add selective forwarding of gratuitous neighbor announcements
Nikolay Aleksandrov <[email protected]> Mon, 4 May 2026 10:41:57 +0300
| Newsgroups | dev.linux.lists.bridge,org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest,org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
On 03/05/2026 10:35, Danielle Ratson wrote: > The existing neighbor suppression unconditionally suppresses gratuitous > ARPs and unsolicited Neighbor Advertisements, which prevents fast > mobility of hosts between VTEPs. > > Add the neigh_forward_grat option to allow selective control of gratuitous > neighbor announcements. When neigh_suppress is enabled but > neigh_forward_grat is disabled (default), gratuitous announcements are > suppressed. When neigh_forward_grat is enabled, gratuitous announcements > are forwarded while regular neighbor discovery remains suppressed. > > The implementation provides per-output-port control by: > 1. Adding a 'grat_arp' flag to BR_INPUT_SKB_CB to mark gratuitous ARPs and > unsolicited NAs. > 2. Setting both grat_arp and proxyarp_replied flags in > br_do_proxy_suppress_arp() and br_do_suppress_nd() when gratuitous > packets are detected. > 3. Checking neigh_forward_grat per output port during flooding: > - For gratuitous ARPs/NAs: suppress unless the output port has > neigh_forward_grat enabled. > - For regular ARPs/NDs: maintain existing behavior. > > This allows gratuitous announcements from any input port to be selectively > forwarded based on each output port's individual neigh_forward_grat > setting, enabling gratuitous neighbor announcements to be flooded to the > VXLAN fabric. > > Regular neighbor discovery (ARP requests, NS queries, solicited replies) > remains controlled by neigh_suppress and is unaffected. > > Signed-off-by: Danielle Ratson <[email protected]> > Reviewed-by: Ido Schimmel <[email protected]> > Reviewed-by: Petr Machata <[email protected]> > --- > net/bridge/br_arp_nd_proxy.c | 22 ++++++++++++++++++++++ > net/bridge/br_forward.c | 15 +++++++++++---- > net/bridge/br_private.h | 2 ++ > 3 files changed, 35 insertions(+), 4 deletions(-) > Acked-by: Nikolay Aleksandrov <[email protected]>