[babel] RFT: Babel RTT extension in Bird

Toke Høiland-Jørgensen <toke@toke.dk> Thu, 21 April 2022 23:48 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 3CD353A1159 for <babel@ietfa.amsl.com>; Thu, 21 Apr 2022 16:48:58 -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 0r_hjpugneFa for <babel@ietfa.amsl.com>; Thu, 21 Apr 2022 16:48:52 -0700 (PDT)
Received: from mail.toke.dk (mail.toke.dk [45.145.95.4]) (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 A63C73A1153 for <babel@ietf.org>; Thu, 21 Apr 2022 16:48:51 -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=1650584928; bh=OYXL1sAMDn07i/TNX79qTE8kFE+DVvXtDdEfDoCiUqU=; h=From:To:Subject:Date:From; b=SCgolg9ERaNkl+K0dugunZ1AExAkDmg3PDnIbUGUo+FNsqUpmGMo1LaPx+K8mWDxo EXH4q/CR4KwTgmZXAqPHgSIhmvl81R6QrrEoE1JGiOmHy4Ry6dcfKL0uyj1l8DPNQU frb2Px4EunUoCWgKTic43gP/3l9u+LbdbzcbFvpS+Mahu9hYq+aDghtl3lRhG7iJ+g //a7lhxSXQvaRiOwCzMDo/PPBIjyn0op7vLxVjrnomcbANmvZiwqnrdKtrSOYl/mQW AHgnA7IfoJq3zK7aQEdw/gxCunR7agdpVLPgVo9H3uN+hoiydC9lHJQAIDABSLawuW eFK9l1zYQYDdg==
To: babel@ietf.org, babel-users@alioth-lists.debian.net, bird-users@network.cz
Date: Fri, 22 Apr 2022 01:48:46 +0200
X-Clacks-Overhead: GNU Terry Pratchett
Message-ID: <87y1zyf15t.fsf@toke.dk>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/babel/2hbmjI9_OcMHU6FKZouVbsW3Obg>
Subject: [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: Thu, 21 Apr 2022 23:48:58 -0000

Hi everyone

I've implemented the Babel RTT extension specified in
draft-ietf-babel-rtt-extension in Bird. I've tested that it talks to
babeld on a single link and that the two implementations agree on each
others' (smoothed) RTT values. However, I'd like to subject the code to
some more tortured testing before submitting it to upstream Bird. So I'm
sending this note as a request for testing.

The code currently lives here:

https://github.com/tohojo/bird/tree/babel-rtt-01

To compile it, do:

 git clone -b babel-rtt-01 https://github.com/tohojo/bird
 cd bird && autoreconf && ./configure && make

To run it, create a config file enabling the RTT extension; the simplest
way to do this is to set the interface type to 'tunnel'. A sample
minimal config is included below (just change the interface name from
"veth0"). Save this and run Bird in the foreground in debug mode like:

  ./bird -c sample.conf -d

Any feedback (successes or failures) greatly appreciated!

-Toke



debug protocols all;
router id 1.2.3.4;
ipv4 table master4;
ipv6 table master6;

protocol device {
	scan time 10;
}

protocol kernel kernel4 {
        learn;
	ipv4 {
		export all;
		import all;
	};
}

protocol kernel kernel6 {
        learn;
	ipv6 {
		import all;
		import all;
	};
}


protocol babel {
	ipv4 {
		import all;
                export all;
	};

	ipv6 {
		import all;
                export all;
	};

        interface "veth0" {
          type tunnel;
        };
}