[babel] route expiry timers for rebroadcast?

Dave Taht <dave.taht@gmail.com> Sun, 19 February 2017 16:05 UTC

Return-Path: <dave.taht@gmail.com>
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 3ED821294D0 for <babel@ietfa.amsl.com>; Sun, 19 Feb 2017 08:05:43 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 lU60-iCs96Na for <babel@ietfa.amsl.com>; Sun, 19 Feb 2017 08:05:41 -0800 (PST)
Received: from mail-qk0-x22c.google.com (mail-qk0-x22c.google.com [IPv6:2607:f8b0:400d:c09::22c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 97A44129704 for <babel@ietf.org>; Sun, 19 Feb 2017 08:05:41 -0800 (PST)
Received: by mail-qk0-x22c.google.com with SMTP id x71so12670148qkb.3 for <babel@ietf.org>; Sun, 19 Feb 2017 08:05:41 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to :content-transfer-encoding; bh=WUVFPaIhTWvMAzi0LrN2dW7Ys4PnSqREHoP+jAZCDU4=; b=JQW9xBCjQ/GHyGsqOOgxjc8v9IqEodITZP4tXF3/jn1C9j0mQRrXY4m+KmtgOfQPKk 9VXdRP5aAb9XZfzaGnTdT+gs20HTK6OjaEmNPQyy+bjPzRM06rJsF0qtsJRHcxFy0RFL M2rMp+IqFECz9VThEbcFJEk5TCx872nmWpkLacpj5VyARERrrnQ6gfrwne1QqQKfptvd KQO4O9BsRplPNBkLo1w6qlKK1BW+PltC+ts7GdIoCMfPj6/s2Yey3q1dlOJ57KA6N5h1 eFCj7M/peX42vtp8c8wxA1fHv27CY59R3QeslzvCpucH0GMt/r5CGU0cJZZSY+qN1mtr wo/Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to :content-transfer-encoding; bh=WUVFPaIhTWvMAzi0LrN2dW7Ys4PnSqREHoP+jAZCDU4=; b=M8FRS+z7L3ZEwaYZy9ymJVUc17yV+CXBGwV8bxgr6fG4aDxZdusR7N+osZbjVeUbDs HQeJDcc6PkiZsXw+6K4IPBEnrrISp1T3vcXNS4TTIfdkPhu1vRCKcG/LDFtE24gDYwYQ VAywS0/NuxrHlcAOxwFDVgT3RJ334gzGKzZD+KIyXUi6cSBHf9B/7PJjNS2LXP67Loyy uj1D+rrUcTXY3Sy2s3wo9U7avm0nntvx9+zZ/AijJAlXHM87o6nisMy11mJoB43DlHGz nzms7ivJh6wxPAWjmqZ7sUlFUiCFnBNua7wQUaoC7ucf+efos8KmmTrEaCS5sSGHTtJT YvZw==
X-Gm-Message-State: AMke39kOqOFSkK7GJCS2+5Rj7j5e19qELDOeCdZsp379me+wEzY96Koat632ey63MWg8oOMyZsjdq8iuovAq4A==
X-Received: by 10.55.20.200 with SMTP id 69mr18170671qku.59.1487520340584; Sun, 19 Feb 2017 08:05:40 -0800 (PST)
MIME-Version: 1.0
Received: by 10.12.142.132 with HTTP; Sun, 19 Feb 2017 08:05:40 -0800 (PST)
From: Dave Taht <dave.taht@gmail.com>
Date: Sun, 19 Feb 2017 08:05:40 -0800
Message-ID: <CAA93jw7eXu0xze=wZY0EzhV5Y0SMqcYPC4kxoPqJpgUdXnwUgw@mail.gmail.com>
To: Babel at IETF <babel@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/babel/1zrigojHqMoB_xwvsvwXrswgsMY>
Subject: [babel] route expiry timers for rebroadcast?
X-BeenThere: babel@ietf.org
X-Mailman-Version: 2.1.17
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: Sun, 19 Feb 2017 16:05:43 -0000

There is a possible hole in the spec here in that it doesn't clearly
describe what should be done with forwarding route expiry timers.

https://tools.ietf.org/html/rfc6126#section-3.5.4

   When a route's expiry timer triggers, the behaviour depends on
   whether the route's metric is finite.  If the metric is finite, it is
   set to infinity and the expiry timer is reset.  If the metric is
   already infinite, the route is flushed from the route table.

   After the routing table is updated, the route selection procedure
   (Section 3.6) is run.

The corresponding 3.7 section for advertisment says:

"   If an update is for a route learned from another Babel speaker, the
   router-id and sequence number are copied from the routing table
   entry, and the metric is computed as specified in Section 3.5.2."

where it would make some sense to also bound the client router's
recieving that update to rebroadcast advertising the interval field to
some amount less than the received interval, or to the actual
bandwidth available on an interface, but still broadcast as
catch-can...

...

I ran into this issue while trying to distribute 20,000 routes over
1Mbit multicast to a dozen routers - don't do that on a production
network!

http://www.taht.net/~d/gentleremindertogetridoftheinfinitemcastqueueinlinux80211.png

Incast burp. Consider yourself warned! but "an" answer to that is to
start spreading the expiry interval out as you carry more routes than
available bandwidth and update interval can take.

Although the reference implementation lets you modify the hello
interval, it always derives the expiry timer directly from that,
rather than based on the load.


-- 
Dave Täht
Let's go make home routers and wifi faster! With better software!
http://blog.cerowrt.org