-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GR fails due to bgp route-map delay-timer behavior #10756
Comments
Additional notes:
|
karampok
added a commit
to karampok/frr-k8s
that referenced
this issue
Oct 28, 2024
When the default value of 5 seconds is being used, Graceful-Restart can break momentarily on reconnect of BGP peering. The restarter FRR when that timeout expires and the route-maps have not been processed, denies the routes, and therefore are removed. ``` DEBUG #bgpd[45]: Route-map: null, prefix: 99.0.0.0/24, result: deny DEBUG #bgpd[45]: 10.0.64.1 [Update:SEND] 99.0.0.0/24 is filtered by route-map ``` FRRouting/frr#10757 FRRouting/frr#10756 Signed-off-by: karampok <karampok@gmail.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Describe the bug
The behavior of
bgp route-map delay-timer
at the very beginning of bgp startup seems incorrect and can cause GR to fail.This timer has a default value of 5 secs (btw, the comment “disabled by default” is not true). We don’t have this command in our use case, so the default takes effect.
What is weird to me is that, the timer kicks in at the very beginning of bgp startup when the configured route-maps are read. More specifically,
bgp_route_map_add()
is called and thenbgp_route_map_mark_update()
starts the timer.As a result, within 5 secs, bgp rejects all incoming routes and denies all outgoing updates, because inbound/outbound route-maps are not ready.
This is causing GR to fail in restart bgp case. Basically the restarting bgp speaker drops all incoming routes, accepts all EORs, runs best-path selection and then sends out EORs (with no routes) to all GR helpers, who end up purging all stale routes…
To Reproduce
route-map delay-timer
accordingly such that the routes are exchanged before delay-timer fires).Expected behavior
Ideally the delay-timer shouldn’t apply at initial config load, but only be used on subsequent route-map add/delete/change.
Versions
Additional context
I was testing with small scale, so everything happened within 5 secs (sessions established, updates exchanged). After 5 secs, soft-in/out would take place once route-maps are ready, but there certainly would be traffic loss. Some bgp/zebra logs attached as follows:
The text was updated successfully, but these errors were encountered: