summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_packet.h
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2015-05-20 02:58:12 +0200
committerDonald Sharp <sharpd@cumulusnetworks.com>2015-05-20 02:58:12 +0200
commitd889623f1ac5e14d761a0cb7896d33cfdc4f3615 (patch)
treed4c718a71ec390cf20557ccf3e7929ee7f3042b4 /bgpd/bgp_packet.h
parentClarify the different permutations of soft clearing a peer (diff)
downloadfrr-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.h9
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 */