diff options
author | Donald Sharp <sharpd@cumulusnetworks.com> | 2015-05-20 02:58:12 +0200 |
---|---|---|
committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2015-05-20 02:58:12 +0200 |
commit | d889623f1ac5e14d761a0cb7896d33cfdc4f3615 (patch) | |
tree | d4c718a71ec390cf20557ccf3e7929ee7f3042b4 /bgpd/bgp_packet.h | |
parent | Clarify the different permutations of soft clearing a peer (diff) | |
download | frr-d889623f1ac5e14d761a0cb7896d33cfdc4f3615.tar.xz frr-d889623f1ac5e14d761a0cb7896d33cfdc4f3615.zip |
Changes to improve BGP convergence time:
- Schedule write thread for advertisements and withdraws only if corresponding
FIFOs are growing and/or upon work_queue getting fully processed.
- Set non-default yield time for the main work_queue, as the default value
of 10ms results in yielding after processing very few nodes.
- Remove unnecessary scheduling of write thread when update packet is formed.
- If MRAI is 0, don't start a timer unnecessarily, directly schedule write
thread.
- Some debugs.
Diffstat (limited to 'bgpd/bgp_packet.h')
-rw-r--r-- | bgpd/bgp_packet.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/bgpd/bgp_packet.h b/bgpd/bgp_packet.h index fe3917f92..18b0024a7 100644 --- a/bgpd/bgp_packet.h +++ b/bgpd/bgp_packet.h @@ -26,6 +26,12 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #define BGP_UNFEASIBLE_LEN 2U #define BGP_WRITE_PACKET_MAX 10U +/* Size of FIFOs upon which write thread is triggered. Note that write + * thread is also triggered upon BGP work-queue completion. + */ +#define BGP_ADV_FIFO_QUANTA 500 +#define BGP_WD_FIFO_QUANTA 200 + /* When to refresh */ #define REFRESH_IMMEDIATE 1 #define REFRESH_DEFER 2 @@ -57,4 +63,7 @@ extern int bgp_capability_receive (struct peer *, bgp_size_t); extern void bgp_update_restarted_peers (struct peer *); extern void bgp_update_implicit_eors (struct peer *); extern void bgp_check_update_delay (struct bgp *); +extern int bgp_peer_wd_fifo_exists (struct peer *); +extern int bgp_peer_adv_fifo_exists (struct peer *, int); +extern void bgp_peer_schedule_updates(struct peer *peer); #endif /* _QUAGGA_BGP_PACKET_H */ |