[babel] Summary of the top-secret unicast Hellos meeting

Juliusz Chroboczek <jch@irif.fr> Wed, 19 July 2017 16:10 UTC

Return-Path: <jch@irif.fr>
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 99FF3131686 for <babel@ietfa.amsl.com>; Wed, 19 Jul 2017 09:10:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
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 kSSyEJWwMd3a for <babel@ietfa.amsl.com>; Wed, 19 Jul 2017 09:10:41 -0700 (PDT)
Received: from korolev.univ-paris7.fr (korolev.univ-paris7.fr [IPv6:2001:660:3301:8000::1:2]) (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 4DB6E124234 for <babel@ietf.org>; Wed, 19 Jul 2017 09:10:41 -0700 (PDT)
Received: from potemkin.univ-paris7.fr (potemkin.univ-paris7.fr [IPv6:2001:660:3301:8000::1:1]) by korolev.univ-paris7.fr (8.14.4/8.14.4/relay1/56228) with ESMTP id v6JGAdbY005756 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for <babel@ietf.org>; Wed, 19 Jul 2017 18:10:39 +0200
Received: from mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [81.194.30.253]) by potemkin.univ-paris7.fr (8.14.4/8.14.4/relay2/56228) with ESMTP id v6JGAdVM003013 for <babel@ietf.org>; Wed, 19 Jul 2017 18:10:39 +0200
Received: from mailhub.math.univ-paris-diderot.fr (localhost [127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTP id 7C2ECEB342 for <babel@ietf.org>; Wed, 19 Jul 2017 18:10:39 +0200 (CEST)
X-Virus-Scanned: amavisd-new at math.univ-paris-diderot.fr
Received: from mailhub.math.univ-paris-diderot.fr ([127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id mCKXsLLjwOny for <babel@ietf.org>; Wed, 19 Jul 2017 18:10:38 +0200 (CEST)
Received: from ijon.irif.fr (dhcp-8e8a.meeting.ietf.org [31.133.142.138]) (Authenticated sender: jch) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTPSA id C5880EB36A for <babel@ietf.org>; Wed, 19 Jul 2017 18:10:37 +0200 (CEST)
Date: Wed, 19 Jul 2017 18:10:46 +0200
Message-ID: <87mv80xv95.wl-jch@irif.fr>
From: Juliusz Chroboczek <jch@irif.fr>
To: babel@ietf.org
User-Agent: Wanderlust/2.15.9
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: text/plain; charset="US-ASCII"
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (korolev.univ-paris7.fr [IPv6:2001:660:3301:8000::1:2]); Wed, 19 Jul 2017 18:10:39 +0200 (CEST)
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (potemkin.univ-paris7.fr [194.254.61.141]); Wed, 19 Jul 2017 18:10:39 +0200 (CEST)
X-Miltered: at korolev with ID 596F847F.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)!
X-Miltered: at potemkin with ID 596F847F.002 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)!
X-j-chkmail-Enveloppe: 596F847F.000 from potemkin.univ-paris7.fr/potemkin.univ-paris7.fr/null/potemkin.univ-paris7.fr/<jch@irif.fr>
X-j-chkmail-Enveloppe: 596F847F.002 from mailhub.math.univ-paris-diderot.fr/mailhub.math.univ-paris-diderot.fr/null/mailhub.math.univ-paris-diderot.fr/<jch@irif.fr>
X-j-chkmail-Score: MSGID : 596F847F.000 on korolev.univ-paris7.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000
X-j-chkmail-Score: MSGID : 596F847F.002 on potemkin.univ-paris7.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000
X-j-chkmail-Status: Ham
X-j-chkmail-Status: Ham
Archived-At: <https://mailarchive.ietf.org/arch/msg/babel/opXEV_QnoCtQ1wcLkeKm6IKgaVI>
Subject: [babel] Summary of the top-secret unicast Hellos meeting
X-BeenThere: babel@ietf.org
X-Mailman-Version: 2.1.22
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: Wed, 19 Jul 2017 16:10:44 -0000

Dear all,

TL;DR version: we keep unicast Hellos but make them optional.  We write
this up in the rfc6126bis draft, and see how well it reads.  We then
request feedback on the list.

You may now skip the rest of this mail.

First, some background.  Hellos in Babel carry a monotonically increasing
sequence number (seqno) which must be synchronised between sender and
receiver.  Since there is a single seqno per outgoing interface, every
Hello MUST be sent to all neighbours on each interface -- either over
multicast (RFC 6126) or over exhaustive unicast (allowed in rfc6126bis,
insight due to Margaret).  There is some desire -- expressed most vocally
by David and Toke -- to send Hellos over unicast to different neighbours
at different times, which requires either getting rid of the seqno or
adding a per-neighbour outgoing counter in addition to the per-interface
counter.

Russ White sent me a series of (private) mails that gave some insight into
the issue.  In general, the Babel protocol specifies only very loose
coupling between sender and receiver, which makes the protocol easy to
evolve in a compatible manner.  Not so with the Hello sub-protocol: the
sender and receiver seqnos are tightly coupled, which makes this
sub-protocol difficult to evolve.  I think this analysis is spot on.

We started the meeting with me giving some background into the problem
(roughly speaking the two paragraphs above).  We then did some
brainstorming about what solutions we see: a new type of "unicast" Hello
(David and Toke's proposal, in the current version of the draft).  A new
type of seqno-less Hello (my proposal, but it has a serious flaw -- Hello
and seqno-less Hello would support different sets of sub-TLVs).  Removing
the seqno from Hellos and bumping the protocol version number to 3
(Matthieu's proposal, rejected since we're happy with version 2).  As well
as some more convoluted ideas (names of the authors withheld in order to
protect the guilty, but I'll be happy to gossip over a beer).

During this discussion, there were a few interesting insights.  Margaret
expressed some doubts about the usefulness of different Hello intervals
for different neighbours.  She noted that our intuition that one should
reduce the Hello interval for marginal neighbours might be incorrect:
quite the opposite, since with a shorter interval short-term outages might
be spuriously detected as link drops.  Agreed, although the length of the
window is not necessarily related to the interval.  More experimentation
and experience is needed.

David expressed some ideas about using driver data instead of Hello drop
rate.  We agreed that this might be mentioned in Appendix C, but is only
reasonable for implementors that control the whole OS.  (I wonder who that
can be.)

Matthieu suggests that we might want to test both multicast and unicast
reachability before using a neighbour for routing, since unicast-only link
failures happen sometimes.  David noticied that IHU does that.  Matthieu
noticed that IHU can be sent over multicast too (and is in the reference
implementation, ndlr).

IHU with AE 0 is used by David over unicast only.  He's in favour of
leaving it in the protocol, but forbidding it for multicast.  I disagree,
I'll write that up on the list.

At this point, the discussion was moving away from the Unicast hellos, so
we decided that we don't have an idea that is significantly better than
the current David-Toke proposal (there was one dissenting voice).  We went
back to my mail of yesterday evening, and there was clear consensus on the
following two points:

  - we leave unicast Hellos in (no to proposal 1);
  - we don't delegate them to a future ducument (no to proposal 2).

Right now, the document contains a mild contradiction: you MUST be able to
parse unicast Hellos, but you are allowed to essentially ignore them.  We
have agreed that we're going to tweak the document to make unicast Hellos
more optional, and see whether we can make it so it gives more convincing
advice to the implementor.

Therefore, we'll try to write up proposal 3 -- keep the packet format, but
make it somewhat more optional.  The actual protocol will remain mostly
unchanges, only the level of MUST-ness will shift.

Thanks to everyone,

-- Juliusz