Re: [babel] RFT: Babel RTT extension in Bird
Toke Høiland-Jørgensen <toke@toke.dk> Sat, 23 April 2022 21:30 UTC
Return-Path: <toke@toke.dk>
X-Original-To: babel@ietfa.amsl.com
Delivered-To: babel@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 00D7B3A1536 for <babel@ietfa.amsl.com>; Sat, 23 Apr 2022 14:30:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.109
X-Spam-Level:
X-Spam-Status: No, score=-2.109 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=toke.dk
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YQIGLMZKOdL7 for <babel@ietfa.amsl.com>; Sat, 23 Apr 2022 14:30:30 -0700 (PDT)
Received: from mail.toke.dk (mail.toke.dk [IPv6:2a0c:4d80:42:2001::664]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id CED8D3A1532 for <babel@ietf.org>; Sat, 23 Apr 2022 14:30:28 -0700 (PDT)
From: Toke Høiland-Jørgensen <toke@toke.dk>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=toke.dk; s=20161023; t=1650749424; bh=6rb7xPOuITKg7iurHI+NkBcYKkQ9rIkhAiauUOZZOfA=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=fmVXegR8MXB6JJ/q34IewfEX2thicC8Rl4k87i8CEwl5PEledYYRQRyaF0v8m7IOO vuEkOrc/2PDNltO3BjiONK2wWtZRV7RcGjjRsuu9xfydKhej0AZXkypq+9k67972sO BE1d2ZlkYIGjER6ZHhf5ZrRx5VspzEXvHAMumETPFW6i/tJTnMaHlvbiPaAdxs4k7e lT/rjEbg77KbNqilkhCoWRk6a4iWmZ3efPT3dxTckiEjgZONy4OKBlUYLsyIaxgs24 EMz0xTIFqvbV3eUjJkeGD3GxRlst9URcXPmRhuO8D6fzgYLTc+hKNf8IH1lV4Yq/T7 ViUpS79eBDPMw==
To: Juliusz Chroboczek <jch@irif.fr>, Ondrej Zajicek <santiago@crfreenet.org>
Cc: bird-users@network.cz, babel-users@alioth-lists.debian.net, babel@ietf.org
In-Reply-To: <87tualat7j.wl-jch@irif.fr>
References: <87y1zyf15t.fsf@toke.dk> <YmLLO1sZMpg+SM/N@feanor.crfreenet.org> <87tualat7j.wl-jch@irif.fr>
Date: Sat, 23 Apr 2022 23:30:24 +0200
X-Clacks-Overhead: GNU Terry Pratchett
Message-ID: <871qxncwsv.fsf@toke.dk>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/babel/tcmiohxm6pFK6VzVJgvTUu7egHQ>
Subject: Re: [babel] RFT: Babel RTT extension in Bird
X-BeenThere: babel@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "A list for discussion of the Babel Routing Protocol." <babel.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/babel>, <mailto:babel-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/babel/>
List-Post: <mailto:babel@ietf.org>
List-Help: <mailto:babel-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/babel>, <mailto:babel-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 23 Apr 2022 21:30:35 -0000
Juliusz Chroboczek <jch@irif.fr> writes: >> 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.) I'd be delighted to hear the (real?) explanation for that! >> 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. Juliusz, I also seem to recall you mentioning to me at some point that the RTT increasing due to congestion actually makes the RTT extension useful as a way of picking the least-congested route as well (as a kind of unintentional side effect due to exactly what Ondrej mentioned above). Or am I misremembering? > I agree that we should compare with a running average. I might do so if > I ever decide to revive that paper. I assume you meant 'running minimum' here? >> 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. Note that the RTT-based cost algorithm doesn't replace the ETX/k-from-j, it just adds an additional configurable penalty on top. >> 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. I implemented the RTT extension the same way in Bird: The 'tunnel' interface type just sets a default RTT cost or 96 (and is otherwise identical to 'wired'), and there's a separate config option to explicitly set the RTT cost. In fact, I just mirrored all the babeld config options related to RTT, just adapted to Bird syntax :) However, there is no explicit config option in Bird for the metric computation algorithm (i.e., ETX/k-from-j). I guess we should add one :) BTW, I'm also planning to add some infrastructure to Bird to automatically guess the interface type, and have Babel use that to set a reasonable default. I believe babeld has something similar (although I seem to recall something about the wireless detection having bitrotted slightly? Or was that only the channel information?). -Toke
- [babel] RFT: Babel RTT extension in Bird Toke Høiland-Jørgensen
- Re: [babel] RFT: Babel RTT extension in Bird Ondrej Zajicek
- Re: [babel] RFT: Babel RTT extension in Bird Juliusz Chroboczek
- Re: [babel] RFT: Babel RTT extension in Bird Toke Høiland-Jørgensen
- Re: [babel] RFT: Babel RTT extension in Bird Ondrej Zajicek
- Re: [babel] RFT: Babel RTT extension in Bird Juliusz Chroboczek