summaryrefslogtreecommitdiff
path: root/bgpd/bgp_evpn.h
diff options
context:
space:
mode:
authorRajasekar Raja <rajasekarr@nvidia.com>2024-11-27 00:04:51 -0800
committerRajasekar Raja <rajasekarr@nvidia.com>2024-12-09 08:46:16 -0800
commit0f2cb2731053a678c85115abda008dc1d012e591 (patch)
treebcfbe52b31f60d814bc2a406319bf58dafba4354 /bgpd/bgp_evpn.h
parent07a80709c728d87abc2d15393a719d4232b1f33b (diff)
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>
Diffstat (limited to 'bgpd/bgp_evpn.h')
-rw-r--r--bgpd/bgp_evpn.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/bgpd/bgp_evpn.h b/bgpd/bgp_evpn.h
index 75dde616ce..8bbc5d3c37 100644
--- a/bgpd/bgp_evpn.h
+++ b/bgpd/bgp_evpn.h
@@ -201,4 +201,5 @@ int uninstall_evpn_route_entry_in_vrf(struct bgp *bgp_vrf, const struct prefix_e
struct bgp_path_info *parent_pi);
extern void bgp_zebra_evpn_pop_items_from_announce_fifo(struct bgpevpn *vpn);
extern int install_uninstall_routes_for_vni(struct bgp *bgp, struct bgpevpn *vpn, bool install);
+extern int install_uninstall_routes_for_vrf(struct bgp *bgp_vrf, bool install);
#endif /* _QUAGGA_BGP_EVPN_H */