]> git.puffer.fish Git - mirror/frr.git/commit
bgpd: backpressure - Optimize EVPN L3VNI remote routes processing
authorRajasekar Raja <rajasekarr@nvidia.com>
Wed, 27 Nov 2024 08:04:51 +0000 (00:04 -0800)
committerRajasekar Raja <rajasekarr@nvidia.com>
Mon, 9 Dec 2024 16:46:16 +0000 (08:46 -0800)
commit0f2cb2731053a678c85115abda008dc1d012e591
treebcfbe52b31f60d814bc2a406319bf58dafba4354
parent07a80709c728d87abc2d15393a719d4232b1f33b
bgpd: backpressure - Optimize EVPN L3VNI remote routes processing

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

So for triggers where a bulk of L3VNI'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 BGP-VRF off the struct bgp_master
and maintain a struct bgp FIFO list which is processed later on, where
we walk a chunk of BGP-VRFs and do the remote route install/uninstall.

Ticket :#3864372

Signed-off-by: Rajasekar Raja <rajasekarr@nvidia.com>
bgpd/bgp_evpn.c
bgpd/bgp_evpn.h
bgpd/bgp_main.c
bgpd/bgp_vty.c
bgpd/bgp_zebra.c
bgpd/bgp_zebra.h
bgpd/bgpd.c
bgpd/bgpd.h
tests/topotests/evpn_type5_test_topo1/test_evpn_type5_chaos_topo1.py
tests/topotests/evpn_type5_test_topo1/test_evpn_type5_topo1.py