[Babel-users] Babel: Clarifications on seqno request handling in bird

Maria Matejka maria.matejka at nic.cz
Sun Feb 26 19:34:06 CET 2023


Hello!

On 2/26/23 19:17, dxld at darkboxed.org wrote:
> Hi Ondrej, Toke, Juliusz and lists,
> 
> I'm working on v4 of my bird route selection patch[1] and I just have a
> couple babel spec and bird implementation questions.
> 
> [1]: http://trubka.network.cz/pipermail/bird-users/2023-January/016621.html
> 
> Just a quick recap for anyone not following my "Replace internal route
> selection" patch: the idea is to install every feasible route into the bird
> core and let it give us a callback (rt_notify) with the optimal route it
> picked instead of doing this in the babel protocol.
> 
> As Toke noted up to my v3 patch I break sending seqno requests when we
> loose the last feasible route (RFC8966 section 3.8.2.1.) because I
> accidentally removed the code which deals with that together with the
> babel_select_route function.
> 
> To fix this I tried to move that code to our rt_notify callback instead. In
> testing I've found a major problem with this approach however. Say the
> babel proto is currently exporting a route to the core, then a more
> preferred route is exported by some other protocol (say "static") and then
> the babel route expires.
> 
> In this case we ought to send a seqno request when the babel routes go away
> but rt_notify doesn't get called since the selected (static) route didn't
> change at all.
> 
> I don't think RFC8966 is really framed in bird's "multi protocol" mindset
> so it's unclear to me whether this is something we have to fix or
> not. Section 3.8.2.1. says:
> 
>> A node that has lost all feasible routes to a given destination but still
>> has unexpired unfeasible routes to that destination MUST send a seqno
>> request;
> 
> I could for example read this as the above mentioned static route
> constituting a feasible route received from a bird "internal" babel
> neighbour which would make the behaviour described above perfectly fine,
> no?

 From my point of view, this is perfectly fine.

> @Bird folks: can anyone think of a way to be notified of any and all
> changes in rt_notify? I assume it's not possible from some light reading of
> the nest code but figured I might as well ask.

You may set channel ra_mode to RA_ANY, getting called rt_notify() for 
all route updates.

Or in BIRD 3, you can override the channel logic at all and if you don't 
mind calling your filters yourself, you can just request "on any change, 
give me all the routes for one prefix at once" and do whatever you want 
with the routes. Yet these changes most probably won't get backported to 
BIRD 2.

Maria


More information about the Bird-users mailing list