]> git.puffer.fish Git - matthieu/frr.git/commit
bgpd: backpressure - Optimize EVPN L2VNI remote routes processing
authorRajasekar Raja <rajasekarr@nvidia.com>
Wed, 28 Aug 2024 18:38:53 +0000 (11:38 -0700)
committerRajasekar Raja <rajasekarr@nvidia.com>
Mon, 9 Dec 2024 16:46:16 +0000 (08:46 -0800)
commit07a80709c728d87abc2d15393a719d4232b1f33b
tree34610db5e50238d833373ba4e0b0c8511261e903
parent8c713609dda6e71890fd61556ee7654170680ccd
bgpd: backpressure - Optimize EVPN L2VNI remote routes processing

Anytime BGP gets a L2 VNI ADD from zebra,
 - Walking the entire global routing table per L2VNI is very expensive.
 - The next read (say of another VNI ADD) from the socket does
   not proceed unless this walk is complete.

So for triggers where a bulk of L2VNI's are flapped, this results in
huge output buffer FIFO growth spiking up the memory in zebra since bgp
is slow/busy processing the first message.

To avoid this, idea is to hookup the VPN off the bgp_master struct and
maintain a VPN FIFO list which is processed later on, where we walk a
chunk of VPNs and do the remote route install.

Note: So far in the L3 backpressure cases(#15524), we have considered
the fact that zebra is slow, and the buffer grows in the BGP.

However this is the reverse i.e. BGP is very busy processing the first
ZAPI message from zebra due to which the buffer grows huge in zebra
and memory spikes up.

Ticket :#3864372

Signed-off-by: Rajasekar Raja <rajasekarr@nvidia.com>
bgpd/bgp_evpn.c
bgpd/bgp_evpn.h
bgpd/bgp_evpn_private.h
bgpd/bgp_main.c
bgpd/bgp_zebra.c
bgpd/bgp_zebra.h
bgpd/bgpd.c
bgpd/bgpd.h