From 56841eecbc8e7fd8bf873ad5d2deac21d122c0c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= Date: Mon, 18 Apr 2022 01:03:01 +0200 Subject: [PATCH] babel: Add support for the RTT extension MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds support to the Babel protocol for the RTT extension specified in draft-ietf-babel-rtt-extension. While this extension is not yet at the RFC stage, it is one of the more useful extensions to Babel[0], so it seems worth having in Bird as well. The extension adds timestamps to Hello and IHU TLVs and uses these to compute an RTT to each neighbour. An extra per-neighbour cost is then computed from the RTT based on a minimum and maximum interval and cost value specified in the configuration. The primary use case for this is improving routing in a geographically distributed tunnel-based overlay network. The implementation follows the babeld implementation when picking constants and default configuration values. It also uses the same RTT smoothing algorithm as babeld, and follows it in adding a new 'tunnel' interface type which enables RTT by default. [0] https://alioth-lists.debian.net/pipermail/babel-users/2022-April/003932.html Signed-off-by: Toke Høiland-Jørgensen --- doc/bird.sgml | 51 ++++++++++++++--- proto/babel/babel.c | 85 ++++++++++++++++++++++++++-- proto/babel/babel.h | 24 ++++++++ proto/babel/config.Y | 25 ++++++++- proto/babel/packets.c | 126 ++++++++++++++++++++++++++++++++++++++++-- 5 files changed, 292 insertions(+), 19 deletions(-) diff --git a/doc/bird.sgml b/doc/bird.sgml index 1580facd..30bc1cdb 100644 --- a/doc/bird.sgml +++ b/doc/bird.sgml @@ -1866,7 +1866,7 @@ protocol babel [] { ipv6 [sadr] { }; randomize router id ; interface { - type ; + type ; rxcost ; limit ; hello interval