Daniel Gröber <dxld@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 <dxld@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