mirror_frr/bgpd
Rajasekar Raja 07a80709c7 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>
2024-12-09 08:46:16 -08:00
..
rfapi bgpd: workaround clang-sa for set but not used value 2024-10-29 16:03:45 -04:00
rfp-example *: Convert struct event_master to struct event_loop 2023-03-24 08:32:17 -04:00
.gitignore
bgp_addpath_types.h bgpd: Implement neighbor X addpath-tx-best-selected command 2023-06-07 22:27:29 +03:00
bgp_addpath.c *: Allow 16 bit size for nexthops 2024-10-08 09:26:57 -04:00
bgp_addpath.h *: Allow 16 bit size for nexthops 2024-10-08 09:26:57 -04:00
bgp_advertise.c bgpd: fix labels in adj-rib-in 2024-06-05 13:11:29 +02:00
bgp_advertise.h bgpd: fix label in adj-rib-out 2024-06-05 13:11:29 +02:00
bgp_aspath.c bgpd: Store aspath count after aspath has changed 2024-10-24 21:01:26 -04:00
bgp_aspath.h bgpd: Store aspath count after aspath has changed 2024-10-24 21:01:26 -04:00
bgp_attr_evpn.c bgpd: changes for code maintainability 2024-09-18 11:24:19 +05:30
bgp_attr_evpn.h bgpd: Move evpn_overlay to a pointer 2024-08-11 13:59:13 +03:00
bgp_attr.c bgpd: Further extend show bgp attribute-info 2024-10-29 14:11:06 -04:00
bgp_attr.h bgpd: Check for the extended community size before setting the flag 2024-10-22 09:01:04 +03:00
bgp_bfd.c bgpd: Allow bfd to work if peer known but interface address not yet 2024-11-20 16:13:42 -05:00
bgp_bfd.h *: Convert struct event_master to struct event_loop 2023-03-24 08:32:17 -04:00
bgp_bmp.c bgpd: fix peer up message for loc-rib not sent 2024-12-05 15:42:10 +01:00
bgp_bmp.h bgpd: bmp loc-rib peer up/down for vrfs 2024-10-11 15:14:12 +02:00
bgp_btoa.c bgpd: changes for code maintainability 2024-09-18 11:24:19 +05:30
bgp_clist.c bgpd: bgp_clist.c does not need jhash.h 2024-12-02 10:33:57 -05:00
bgp_clist.h bgpd: Treat numbered community-list only if it's in a range 1-500 2024-10-30 10:45:28 +02:00
bgp_community_alias.c bgpd: Optimize the way parsing communities if no community alias exists 2024-11-18 23:29:53 +02:00
bgp_community_alias.h bgpd: Optimize the way parsing communities if no community alias exists 2024-11-18 23:29:53 +02:00
bgp_community.c bgpd: changes for code maintainability 2024-09-10 10:37:04 +05:30
bgp_community.h bgpd: Remove deprecated COMMUNITY_INTERNET community 2023-08-03 17:12:19 +03:00
bgp_conditional_adv.c bgpd: Add back pointer to source (from) peer in bgp_path_info struct 2024-09-27 22:53:46 +03:00
bgp_conditional_adv.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_damp.c bgpd: VRF-Lite fix default bgp delete 2024-09-18 18:03:10 +03:00
bgp_damp.h bgpd: Pass the right reuse_list when handling it via bgp_reuse_timer thread 2024-05-03 09:30:33 +03:00
bgp_debug.c bgpd: Print ipv6 extended communities if debug updates is turned on 2024-10-22 09:01:04 +03:00
bgp_debug.h bgpd: store number of labels with 8 bits 2024-06-05 13:11:29 +02:00
bgp_dump.c *: remove sys/stat.h from zebra.h 2024-01-09 12:39:23 -05:00
bgp_dump.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_ecommunity.c bgpd: Use tmp_as when parsing color extended community 2024-11-15 08:16:10 +02:00
bgp_ecommunity.h bgpd:support of color extended community color-only types 2024-11-07 19:02:11 +08:00
bgp_encap_tlv.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_encap_tlv.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_encap_types.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_errors.c Revert "bgpd: store bgp link-state prefixes" 2023-10-10 16:45:00 -04:00
bgp_errors.h Revert "bgpd: store bgp link-state prefixes" 2023-10-10 16:45:00 -04:00
bgp_evpn_mh.c bgpd: fix evpn mh esi flap remove local routes 2024-10-14 10:09:57 -07:00
bgp_evpn_mh.h bgpd: fix evpn mh esi flap remove local routes 2024-10-14 10:09:57 -07:00
bgp_evpn_private.h bgpd: backpressure - Optimize EVPN L2VNI remote routes processing 2024-12-09 08:46:16 -08:00
bgp_evpn_vty.c bgpd: EVPN fix per rd specific type-2 json output 2024-09-24 20:10:59 -07:00
bgp_evpn_vty.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_evpn.c bgpd: backpressure - Optimize EVPN L2VNI remote routes processing 2024-12-09 08:46:16 -08:00
bgp_evpn.h bgpd: backpressure - Optimize EVPN L2VNI remote routes processing 2024-12-09 08:46:16 -08:00
bgp_filter.c bgpd: fix "bgp as-pah access-list" with "set aspath exclude" set/unset issues 2024-05-16 17:49:42 +02:00
bgp_filter.h bgpd: fix "bgp as-pah access-list" with "set aspath exclude" set/unset issues 2024-05-16 17:49:42 +02:00
bgp_flowspec_private.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_flowspec_util.c bgpd: changes for code maintainability 2024-09-26 14:53:54 +05:30
bgp_flowspec_util.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_flowspec_vty.c bgpd: fix use single whitespace when displaying flowspec entries 2024-11-26 14:22:13 +01:00
bgp_flowspec.c bgpd: Move evpn_overlay to a pointer 2024-08-11 13:59:13 +03:00
bgp_flowspec.h bgpd: Treat withdraw variable as a bool 2023-04-06 17:41:32 -04:00
bgp_fsm.c bgpd: peer_active is connection oriented, make it so 2024-11-26 11:59:39 -05:00
bgp_fsm.h bgpd: Fix wrong pthread event cancelling 2024-10-24 21:01:26 -04:00
bgp_io.c bgpd: hide read() call from clang-SA 2024-10-16 13:30:25 +02:00
bgp_io.h bgpd: Convert bgp_io.c to take struct peer_connection 2023-08-18 09:29:04 -04:00
bgp_keepalives.c bgpd: make bgp_keepalives_on|off connection oriented 2023-09-10 08:31:25 -04:00
bgp_keepalives.h bgpd: make bgp_keepalives_on|off connection oriented 2023-09-10 08:31:25 -04:00
bgp_label.c bgpd: fix allocating uninitialized bgp_labels 2024-10-22 18:24:04 +02:00
bgp_label.h bgpd: move labels from extra to extra->labels 2024-06-05 13:11:29 +02:00
bgp_labelpool.c bgpd: bgp_sync_label_manager failure case 2024-01-06 20:26:14 -05:00
bgp_labelpool.h bgpd: Use synchronous way to get labels from Zebra 2023-06-20 20:50:10 +03:00
bgp_lcommunity.c bgpd: Fix lcom->str string length to correctly cover aliases 2023-04-20 16:51:56 -04:00
bgp_lcommunity.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_mac.c bgpd: fix labels static-analyser 2024-08-26 10:29:12 +02:00
bgp_mac.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_main.c bgpd: backpressure - Optimize EVPN L2VNI remote routes processing 2024-12-09 08:46:16 -08:00
bgp_memory.c bgpd: Move evpn_overlay to a pointer 2024-08-11 13:59:13 +03:00
bgp_memory.h bgpd: Move evpn_overlay to a pointer 2024-08-11 13:59:13 +03:00
bgp_mpath.c bgpd: Print debug message about reaching maximum allowed multi paths 2024-10-03 09:20:40 +03:00
bgp_mpath.h bgpd: Remove unused bgp_mp_dmed_deselect function 2024-10-02 10:55:32 -04:00
bgp_mplsvpn_snmp.c bgpd, doc: add bgp snmp traps rfc4382 command 2024-08-11 19:28:50 +00:00
bgp_mplsvpn_snmp.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_mplsvpn.c Merge pull request #16990 from lsang6WIND/label-per-nexthop 2024-10-29 10:05:37 -04:00
bgp_mplsvpn.h bgpd: Make sid_register() non-static 2024-09-05 10:59:59 +02:00
bgp_network.c bgpd: peer_active is connection oriented, make it so 2024-11-26 11:59:39 -05:00
bgp_network.h bgpd: bgp_getsockname should use connection 2024-11-26 11:59:33 -05:00
bgp_nexthop.c bgpd: peer_active is connection oriented, make it so 2024-11-26 11:59:39 -05:00
bgp_nexthop.h bgpd: Remove unused BGP_NEXTHOP_CONNECTED_CHANGED flag for nexthop 2024-10-15 12:43:38 +03:00
bgp_nhg.c bgpd: move l3nhg functions in separate bgp_nhg.[ch] file 2023-12-11 21:03:33 +01:00
bgp_nhg.h bgpd: move l3nhg functions in separate bgp_nhg.[ch] file 2023-12-11 21:03:33 +01:00
bgp_nht.c bgpd: fix use real SID in BGP nexthop tracking 2024-11-28 09:13:53 +01:00
bgp_nht.h bgpd: move l3nhg functions in separate bgp_nhg.[ch] file 2023-12-11 21:03:33 +01:00
bgp_open.c bgpd: Print errors as error not as information when parsing OPEN message 2024-09-01 22:42:54 +03:00
bgp_open.h bgpd: Add sanity check for capability lengths before processing them 2024-05-24 10:35:42 +03:00
bgp_packet.c bgpd: bgp_getsockname should use connection 2024-11-26 11:59:33 -05:00
bgp_packet.h bgpd: bmp loc-rib peer up/down for vrfs 2024-10-11 15:14:12 +02:00
bgp_pbr.c bgpd: changes for code maintainability 2024-10-03 16:32:31 +05:30
bgp_pbr.h *: Let's use the native IFNAMSIZ instead of INTERFACE_NAMSIZ 2023-11-21 08:08:29 -05:00
bgp_rd.c Merge pull request #12248 from pguibert6WIND/bgpasdot 2023-02-21 08:01:03 -05:00
bgp_rd.h bgpd: Optimize memory for rd_ip struct 2024-01-31 11:29:30 +02:00
bgp_regex.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_regex.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_route.c bgpd: fix version attribute is an int, not a string 2024-11-26 11:01:57 +01:00
bgp_route.h Merge pull request #16946 from opensourcerouting/fix/match_src-peer 2024-10-16 07:51:20 -04:00
bgp_routemap_nb_config.c bgpd: Implement match src-peer ... command 2024-09-27 23:01:06 +03:00
bgp_routemap_nb.c bgpd: Implement match src-peer ... command 2024-09-27 23:01:06 +03:00
bgp_routemap_nb.h bgpd: Implement match src-peer ... command 2024-09-27 23:01:06 +03:00
bgp_routemap.c bgpd: Use int, not long long for route-map action in Lua script 2024-11-18 17:25:09 +02:00
bgp_rpki.c bgpd: Remove deprecated RPKI command 2024-09-17 23:04:30 +03:00
bgp_rpki.h bgpd: create cache server socket in vrf 2024-01-18 13:22:19 +01:00
bgp_script.c bgpd: Convert struct peer_connection to dynamically allocated 2023-08-18 09:29:04 -04:00
bgp_script.h bgpd: remove bgpd.h from bgp script header 2024-09-17 08:26:04 -04:00
bgp_snmp_bgp4.c Revert "bgpd: fix pointer arithmetic in bgp snmp module" 2024-04-23 11:39:29 +02:00
bgp_snmp_bgp4.h bgpd: add snmp traps for bgp4-mibv2 2023-10-24 17:16:47 +02:00
bgp_snmp_bgp4v2.c bgpd: fix crash when polling bgp4v2PathAttrTable 2024-10-25 22:25:35 +02:00
bgp_snmp_bgp4v2.h bgpd: add snmp traps for bgp4-mibv2 2023-10-24 17:16:47 +02:00
bgp_snmp.c bgpd, doc: add bgp snmp traps rfc4382 command 2024-08-11 19:28:50 +00:00
bgp_snmp.h bgpd: add [no] bgp snmp traps bgp4-mibv2 command 2023-10-24 17:16:47 +02:00
bgp_table.c bgpd: When using dev build add pointer information to %pBD 2024-03-14 09:45:09 +00:00
bgp_table.h bgpd : backpressure - Handle BGP-Zebra(EPVN) Install evt Creation 2024-04-08 10:51:43 -07:00
bgp_trace.c *: Add missing SPDX-License-Identifier for some .c/.h files 2024-03-21 16:46:58 +02:00
bgp_trace.h bgpd: lttng tp add ethtag to macip zebra send 2023-12-27 18:01:50 -08:00
bgp_updgrp_adv.c bgpd: Set MED using a helper bgp_attr_set_med() 2024-10-15 17:36:50 +03:00
bgp_updgrp_packet.c bgpd: fix AIGP calculation in route advertisement 2024-10-21 18:03:08 -07:00
bgp_updgrp.c bgpd: split nexthop-local unchanged peer subgroup 2024-10-11 14:07:46 +02:00
bgp_updgrp.h bgpd: Drop periodic merge check functions 2024-03-20 16:44:13 +02:00
bgp_vnc_types.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_vpn.c bgpd: Fix display when using missing-as-worst 2024-04-15 12:33:53 -04:00
bgp_vpn.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_vty.c bgpd: fix unconfigure asdot neighbor 2024-12-04 21:29:34 +01:00
bgp_vty.h bgpd: Convert int to enum peer_asn_type 2024-07-04 23:07:01 +03:00
bgp_zebra.c bgpd: backpressure - Optimize EVPN L2VNI remote routes processing 2024-12-09 08:46:16 -08:00
bgp_zebra.h bgpd: backpressure - Optimize EVPN L2VNI remote routes processing 2024-12-09 08:46:16 -08:00
bgpd.c bgpd: backpressure - Optimize EVPN L2VNI remote routes processing 2024-12-09 08:46:16 -08:00
bgpd.h bgpd: backpressure - Optimize EVPN L2VNI remote routes processing 2024-12-09 08:46:16 -08:00
Makefile
subdir.am bgpd: move l3nhg functions in separate bgp_nhg.[ch] file 2023-12-11 21:03:33 +01:00