Daniel Gröber <d...@darkboxed.org> writes: > Hi, > > On Sun, Feb 26, 2023 at 11:10:03PM +0100, Toke Høiland-Jørgensen via > Bird-users wrote: >> Note that this series conflicts with Daniel's patches for moving the >> route selection into the Bird nest. Figured I'd send them now so this can >> be part of the discussion of that other patch (and also Daniel is one of >> the current users of this extension so I expect he'd be interested in >> having the two be compatible). > > Indeed I've been using these patches for a while, but I've had to switch to > babeld due to lack of proper route filtering ;) Still consider this > > Tested-By: Daniel Gröber <d...@darkboxed.org> > > To clarify: it's really only the metric smoothing patch that's in conflict > with my patch. I would advocate for merging only the other two patches for > now while we figure out how to rework the smoothing on top of my patch. I'm > happy to do the rework we just need to come up with a plan for that :)
Hmm, I think the way to handle this is basically: - Add the smoothed metric as a new route attribute (so it's also available to filters) - Change babel_rte_better() to incorporate the smoothed metric (from the attribute) in its comparison - Change the decay logic to be timer-based instead of calculating the smoothed metric on demand That last bit is probably the biggest change. We can't really do the cached on-demand calculation of the smoothed metric if we're sticking it in an attribute. So instead, we'll have to set a periodic timer that re-announces the route with a new smoothed metric at an interval. Doing this as part of babel_expire_routes() would be the logical place, I suppose (and the interval fits with the current BABEL_SMOOTHING_STEP). I'm not sure what impact this would have in terms of runtime overhead, but I think it might actually simplify the code (no need for the babel_update_smoothed_metric()/babel_smoothed_metric() split). -Toke