diff options
| author | Rajasekar Raja <rajasekarr@nvidia.com> | 2024-11-27 00:04:51 -0800 |
|---|---|---|
| committer | Rajasekar Raja <rajasekarr@nvidia.com> | 2024-12-09 08:46:16 -0800 |
| commit | 0f2cb2731053a678c85115abda008dc1d012e591 (patch) | |
| tree | bcfbe52b31f60d814bc2a406319bf58dafba4354 /bgpd/bgp_evpn.h | |
| parent | 07a80709c728d87abc2d15393a719d4232b1f33b (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.h | 1 |
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 */ |
