[PATCH v3] Babel: Replace internal route selection by bird's nest

dxld at darkboxed.org dxld at darkboxed.org
Tue Jan 31 19:49:03 CET 2023


Hi Ondrej,

On Tue, Jan 31, 2023 at 06:35:27PM +0100, Ondrej Zajicek wrote:
> There are some corner cases where the behavior may be different - e.g.,
> if one has Babel and BGP with add-path enabled connected to one table,
> then all Babel routes would be propagated with BGP. Or if you have a pipe
> to another table that would filter best route but not others, then
> protocols in other table will use non-best route. But these are rather
> artificial cases
> 
> One can of worms would be ECMP. On one side, we get (local) ECMP for
> almost no additional work (with kernel 'merge paths' option), on the
> other side, 

Right, I hadn't even considered that. Nice.

> we could not create regular ECMP routes (one route with multiple next
> hops) like it is done in OSPF and RIP.

Hmm, that might actually be enough of a reason for keeping the internal
route selection. I'll have to think about that. I'd like to have the option
to only have the best route be a multi-NH one but still have all the
non-best routes exported too.

> > Couple of comments on the code below:
> > 
> > > Changes in v3:
> > >  - Subsume FIB_RESTART v2 patch: instead of restarting FIB iteration
> > >    we keep lists of actions to perform after FIB iteration is finished.
> 
> Could this be a part of separate patch, applied after the primary change?
> Doing it together rather complicates reviewing these changes, and there
> may be different considerations for both changes.

I merged them quite on purpose because the changes in the main patch
allowed making the code in expire_routes significantly less hairy.

If indeed FIB_ITERATE_START resumes from the last position (I haven't
convinced myself that this is true yet) then all this can be dropped anyway.

--Daniel


More information about the Bird-users mailing list