-
Notifications
You must be signed in to change notification settings - Fork 99
Added id to input filter #113
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
Conversation
|
|
Added more code that allows the socket config to change a redistribute route metric allowing to retract or reannounce a route. Example: Retract: Reannounce: |
|
There appears to be multiple (related?) functionalities in this pull request, and I'm not quite sure what problems each of those is solving. I'd be grateful if you could squash related functionality into a single patch. For example, the two Here's a first review (just having a quick look):
I haven't reviewed the remaining patches, since I don't understand what problem you're trying to solve. |
|
Ok I will on Monday The context is: Goal is to keep connectivity even in case one ISP connection fails Problem 1:
Problem 2: I am not sure it is the best way, but this is how I made work the use case I was modeling: Solution 1a: Solution 1b: Solution 2a: Solution 2b: |
This one is actually easy, and requires no new mechanism. On each of your edge routers, install a fake default route with low priority: Then redistribute this route, but don't redistribute the real default route: Now when connectivity fails, remove the redistributed route: and add it back when connectivity resumes. You may use babel-pinger in order to handle the fake route automatically. |
|
Interesting, I'll test the default route + babel-ping and clean the commits for the id and newpref_src |
No, I don't think I have. Either we reinstate source-specific routing for IPv4 (which I removed because it was complex code and I thought nobody was using it), or we implement your solution. I'll wait until you've had the opportunity clean up your patches, and think about it some more. Let me know if you want me to set up a git repository for babel-pinger, it could do with some tweaking (in particular, it's almost completely undocumented). As to check_xroute, I really think the xroute check should be trigerred automatically, I'd rather not expose this implementation detail in the UI. |
The router id allows to assign origin-based pref-src. A use case is, when installing default routes originated by two edge routers with different subnets, and the client has 2 ips matching the separate subnets install ip 0.0.0.0/0 eq 0 id 00:02:00:00:00:00:1d:01 pref-src 66.199.5.163 install ip 0.0.0.0/0 eq 0 id 00:02:00:00:00:00:1d:00 pref-src 12.144.66.186
When two similar routes with pref-src were switched, the pref-src was not updated to the new one. With this fix, switch_routes passes the new->src to change_route, which is used to reapply the install_filter and retrieve the newpref_src from the filter_result. kernel_route for netlink has been updated to support the newpref_src on ROUTE_MODIFY
|
I reduced for now the patches to only install filter id and newpref_src fix ( 3 commits ). I gave a quick look to babel-pinger, I noticed it uses only IPv4 addresses and routes. I'll think more about the patch to change live the redistribute metric, I recognize it was more pervasive and I don't know if it can have an use ( pops to my mind some form of dynamic multipath when using multiple upstream routers with prefix aggregation which is the next thing I want to simulate ) For the install source specific I have a simple but hacky idea to test for default routes |
|
At first sight, this looks very good. It's late now, so I may be saying something stupid, but shouldn't kernel_route take a prefsrc in all cases, not just in the change case? |
|
For add and flush there is only one prefsrc anyway, and only one set of route parameters. For change_route_metric, it recreates the route but the prefsrc does not change, thus by default newprefsrc = prefsrc Then in kernel_route the field is passed separately to ensure that the recursive calls on modify work correctly in all cases, removing the old route with the old prefsrc and creating the new with the newprefsrc |
|
Pull is part of #114 |
This allows to have pref-src set by router id, for example to have source routing for IPv4