-
Notifications
You must be signed in to change notification settings - Fork 447
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
'adj-rib out' is incorrect after reloading configuration with an offline router #1126
Comments
This behaviour is indeed unintuitive and a side effect of the code design (I would have to check to be 100% sure), but there is a reason for it, and as changing it would change current users' expectations. I will look at possibly changing it in master (or documenting it) but probably not in the 4.x releases. Currently, routes can be accepted via the API or the command line. We are unfortunately not "tagging" the source. SIGNAL control of ExaBGP was designed before we decided that we should really control the program via the API and it has seen no work since, as otherwise other daemons, such as BIRD, are way more capable. So the focus is on programmatic change. |
Thanks. I guess what I'm not following is why the router being offline would affect the behavior if this is caused by the intrinsic handling of API vs configuration routes. |
Sorry, I misread the information when first replying, and agree that it is not right. Please discard my answer above. |
I think the problem is that this code in peer.py is never run to action the configuration changes if the neighbor is offline:
I thought I'd tried reconnecting the neighbor and this didn't resolve the RIB, but the code looks like it should. |
Porting the patch to the main branch does cause a regression with the test suite there, so I can not close this issue or release a new 4.2 version until it can be investigated. |
Bug Description
When a neighbor is unavailable during configuration changes, we have noticed that the adj-rib may contain routes which have been removed from the configuration. These remain even when the neighbor becomes available again.
All route changes are performed by updating exabgp.conf and issuing a reload.
To Reproduce
I have 2 configuration files (contained in exabgp.conf.zip):
I run commands to set the configuration to empty, restart, add the routes, reload, remove routes, reload
It can be seen that the neighbor which is not available has an incorrect entry in the RIB.
If I repeat the test with both neighbors connected, then there is no issue.
Expected behavior
After removing all routes I would expect there to be no entries when I run 'adj-rib out' command.
Environment (please complete the following information):
Additional context
Here are the logs from a reproduction - exabgp.log:
The text was updated successfully, but these errors were encountered: