diff options
author | Donald Sharp <sharpd@cumulusnetworks.com> | 2015-05-20 02:40:33 +0200 |
---|---|---|
committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2015-05-20 02:40:33 +0200 |
commit | f188f2c424e8cf37517e68c09ca93329aa4297aa (patch) | |
tree | 645f84ac58504781ccbb89af8f4c5874e3d24052 /bgpd/bgp_packet.h | |
parent | bgpd: bgpd-restart-bit-fix.patch (diff) | |
download | frr-f188f2c424e8cf37517e68c09ca93329aa4297aa.tar.xz frr-f188f2c424e8cf37517e68c09ca93329aa4297aa.zip |
bgpd: bgpd-update-delay.patch
COMMAND:
'update-delay <max-delay in seconds> [<establish-wait in seconds>]'
DESCRIPTION:
This feature is used to enable read-only mode on BGP process restart or when
BGP process is cleared using 'clear ip bgp *'. When applicable, read-only mode
would begin as soon as the first peer reaches Established state and a timer
for <max-delay> seconds is started.
During this mode BGP doesn't run any best-path or generate any updates to its
peers. This mode continues until:
1. All the configured peers, except the shutdown peers, have sent explicit EOR
(End-Of-RIB) or an implicit-EOR. The first keep-alive after BGP has reached
Established is considered an implicit-EOR.
If the <establish-wait> optional value is given, then BGP will wait for
peers to reach establish from the begining of the update-delay till the
establish-wait period is over, i.e. the minimum set of established peers for
which EOR is expected would be peers established during the establish-wait
window, not necessarily all the configured neighbors.
2. max-delay period is over.
On hitting any of the above two conditions, BGP resumes the decision process
and generates updates to its peers.
Default <max-delay> is 0, i.e. the feature is off by default.
This feature can be useful in reducing CPU/network used as BGP restarts/clears.
Particularly useful in the topologies where BGP learns a prefix from many peers.
Intermediate bestpaths are possible for the same prefix as peers get established
and start receiving updates at different times. This feature should offer a
value-add if the network has a high number of such prefixes.
IMPLEMENTATION OBJECTIVES:
Given this is an optional feature, minimized the code-churn. Used existing
constructs wherever possible (existing queue-plug/unplug were used to achieve
delay and resume of best-paths/update-generation). As a result, no new
data-structure(s) had to be defined and allocated. When the feature is disabled,
the new node is not exercised for the most part.
Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com>
Reviewed-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com>
Dinesh Dutt <ddutt@cumulusnetworks.com>
Diffstat (limited to 'bgpd/bgp_packet.h')
-rw-r--r-- | bgpd/bgp_packet.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/bgpd/bgp_packet.h b/bgpd/bgp_packet.h index 8f0ebe318..79390ec8a 100644 --- a/bgpd/bgp_packet.h +++ b/bgpd/bgp_packet.h @@ -53,5 +53,7 @@ extern void bgp_default_update_send (struct peer *, struct attr *, extern void bgp_default_withdraw_send (struct peer *, afi_t, safi_t); 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 *); #endif /* _QUAGGA_BGP_PACKET_H */ |