[Babel-users] [babel] RFT: Babel RTT extension in Bird

Juliusz Chroboczek jch at irif.fr
Fri Apr 22 19:06:24 BST 2022


> That seems like an interesting idea, especially for things like
> automatically switching between multiple Wireguard tunnel concentrators.

That's exactly the application that it was designed for.  For some
background, please see

  https://arxiv.org/pdf/1403.3488.pdf

(I never managed to publish this paper, and rightly so -- it's not a very
good paper, since I don't fully understand why the smoothing+hysteresis
works as well as it does.)

> Did not yet checked the code how smoothing is done here, but seems to me
> that considering:
> 
> 1) There is baseline RTT from distance / speed of propagation
> 2) There is one-side noise from congestion
> 3) The metric should be based on 1) and suppress effects of 2)
> 
> It would make sense to use something like running minimum instead of
> running average.

Yes, it would make sense.  The reason why we calculate an exponential
average is that it is cheaper to compute, and works quite well in
practice.  The goal here is not to compute an accurate metric, it is to
reliably choose the best route: the metric only needs to be accurate
enough to ensure that the right route is being picked.

I agree that we should compare with a running average.  I might do so if
I ever decide to revive that paper.

> There is one thing that is IMHO a bit strange, type wired/wireless/tunnel
> option is just an indirect way of set k-from-j / ETX / RTT-based cost
> algorithm.

[...]

> But RTT-based cost have applications that are unrelated to tunnels.

I'd be very interested if you could give me some examples, in case
I decide to revive the paper above.

> Seems to me that it would make sense to have a direct option to set the
> cost algorithm (and just that), while the 'type' option would provide
> reasonable default for that (and possibly other options).

In babeld (the standalone implementation of Babel, the interface type is
a macro that sets both the base metric and the metric algorithm; the two
can be set separately if desired by the user.  However, we have found that
the "interface type" abstraction is easier to get right for our users.

-- Juliusz




More information about the Babel-users mailing list