Re: [babel] Babel v4-over-v6 extension

David Schinazi <dschinazi.ietf@gmail.com> Fri, 13 March 2020 18:32 UTC

Return-Path: <dschinazi.ietf@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 96D7C3A088F for <babel@ietfa.amsl.com>; Fri, 13 Mar 2020 11:32:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 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, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, 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 Rfln9jyJylQy for <babel@ietfa.amsl.com>; Fri, 13 Mar 2020 11:32:31 -0700 (PDT)
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com [IPv6:2a00:1450:4864:20::234]) (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 3285D3A088D for <babel@ietf.org>; Fri, 13 Mar 2020 11:32:30 -0700 (PDT)
Received: by mail-lj1-x234.google.com with SMTP id 19so11617318ljj.7 for <babel@ietf.org>; Fri, 13 Mar 2020 11:32:30 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=r3FbdJy8pYP6j2m/uyPYiJMayMG8LcL1hU4wY153xos=; b=e4E94bBBQQ9tmnGxtvVu+O9aWOc+OlwUxdwcY9unAlkTt+fZEGevvF7I6OaEEUnqm9 DTL8dezD2a2DnRHQg0NxQt2nKrvB8wS1CEiHvbtDqoRHJWFGzT2ImG0tCBv6UQ6Ao+1X Kb5fiw2l3pH+LEjxigd+aPUym6U3Cj4DC3mdQ0F6exaBGVyfxzDAQm0PTEPc88sIeFs6 LJiutZSrbteTFBTAop2ZIp2KKiij7dv6X0GqZ3JI+bcvzDgqMFPp7i7PqKvIu9DMG+Bg EOWfk+N6S0rz70FFobH7mdTcd2LNLY5NhwyuM7td6uhGFvM87VNfHctuBlQ09W/H57/7 riYA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=r3FbdJy8pYP6j2m/uyPYiJMayMG8LcL1hU4wY153xos=; b=KyPZethLh09XMSqlr32t3RGV6hNnMeEtIwE+1z/FJ+GEWeJL/ivGYgS/zst73Hbf5r 5/fmlMtV3BNM3IE3ZVNBx1oRlMOViMF3Y+kOh8IUm34aDmW2KW0l8OwznKC/TgtaudYO /h1ndLsKiGBlHKazu+vHlovdj9l1gUDJYLlrmYF/7SolspedC3Xujh5xxNtbbv5AjBRp iXxxobcfn6B9j6xtlmgwk8ElFLgNqsgQf7zUD0pKFKWJTGkSE04zZObYwnc4x26b1M6L esu3Lgghf28sdhR2T/NFZa8jxTqqHsW9Wr1z/yrtNzOD1J++e6VbFtfLTPm/LBAEQjoW 2krA==
X-Gm-Message-State: ANhLgQ3DsBqMSTvBpF3Gitw1N9Z0kDUfQhhOjjouFW41mZYHDTfnUscK 9VIt7A3WL/13c5DKNgwCYtoOO3VphyMb8G6P4vk=
X-Google-Smtp-Source: ADFU+vtNUGs019Knq3DgIwSqtsZtq+dcWyJHJhgRY4UUDvonx942e6cZctx7NSjJ6csOa2Q6Hj4n0A1Htv+pAAzcg4o=
X-Received: by 2002:a2e:a58c:: with SMTP id m12mr8222307ljp.141.1584124349014; Fri, 13 Mar 2020 11:32:29 -0700 (PDT)
MIME-Version: 1.0
References: <df08cb39-04b9-dd13-4af6-8d8803cc71ad@ens.fr>
In-Reply-To: <df08cb39-04b9-dd13-4af6-8d8803cc71ad@ens.fr>
From: David Schinazi <dschinazi.ietf@gmail.com>
Date: Fri, 13 Mar 2020 11:32:18 -0700
Message-ID: <CAPDSy+4BC+9P=Pu9LmC16c1MycF0ZQBH_=WB072Mu5t+zbrXTw@mail.gmail.com>
To: Théophile Bastian <theophile.bastian@ens.fr>
Cc: Babel at IETF <babel@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000001a65c905a0c0b154"
Archived-At: <https://mailarchive.ietf.org/arch/msg/babel/wuYPLO5HO7hlvO8EJo7OpC_giJs>
Subject: Re: [babel] Babel v4-over-v6 extension
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: Fri, 13 Mar 2020 18:32:35 -0000

Nice work, and welcome to Babel, Théophile!

I think I also have a slight preference for (iii), as it's
easier to reason about and to prove that it won't cause
issues for nodes that don't support this feature.

David

On Fri, Mar 13, 2020 at 1:09 AM Théophile Bastian <theophile.bastian@ens.fr>
wrote:

> Dear all,
>
> I am a new intern working with Juliusz on Babel.
>
> My goal at the moment is to implement v6-over-v4 routing in Babel, that
> is, using an IPv6 address as a next hop for an IPv4 packet. This
> would allow, for instance, a router without IPv4 address to be used as
> a next hop for an IPv4 packet, since this feature was recently
> introduced in the Linux kernel [1].
>
> I have so far experimentally implemented this feature in a fork of
> babeld [here](https://github.com/tobast/babeld). This code is NOT
> production-ready, and needs to be mostly re-written. It does not
> reflect the exact changes we propose either yet.
>
> We have considered three options to design this extension:
>
> (i) One possibility, due to Toke, is to add a v4-over-v6 route whenever
>    a router receives an UPDATE for a v4 prefix without a preceding v4 NH
>    TLV. The next hop would then be the latest v6 NH TLV, if any, or the
>    link-local address of the neighbour announcing the update otherwise —
>    just as it would be done for a v6 UPDATE.
>
> * Another possibility is to introduce a new AE for v4-over-v6. This AE
>    would behave in the same way as AE 1 (IPv4) in all contexts except
>    NH — in which case it would behave as AE 2 (non-link-local IPv6).
>
>    In this case, we have to consider the state of the protocol.
>
>    When parsing an IPv4 address, if `omitted != 0`, we use a stored
>    prefix from previous TLVs for compression. This prefix cannot be
>    reused with this new AE to preserve backwards compatibility. Indeed,
>    a v4-over-v6 TLV might change the v4 compression prefix. Yet, this
>    TLV will be ignored by any older implementation of babel, thus
>    breaking the protocol state.
>
>    However, we see no such argument that would prevent us from reusing
>    the AE 2 (IPv6) next-hop. We this have two options:
>
>    (ii)  either we use as a next-hop the address from the latest AE 2 NH
>          TLV, if any, or the link-local address of the neighbour
>          otherwise;
>    (iii) or we use a distinct state to store NH TLVs for this new AE: we
>          use as a next-hop the address from the latest NH TLV with this
>          new AE, if any, or the link-local address of the neighbour
>          otherwise.
>
> Here, backwards compatibility is especially important to take into
> account, since we are not only considering the case where a router is
> using an old version of Babel, but also the case in which the host
> system of a router does not support v6-over-v4 routes.
>
> So far, we are more inclined to choose option (iii).
>
> We prefer (ii/iii) over (i), because option (i) does not signal clearly
> in any way that an extension of the protocol is being used, and might
> confuse older versions. We also believe it is easier to understand,
> debug and trace, and comes at a price of only a small overhead wrt.
> (i).
>
> Between (ii) and (iii), Juliusz is in favour of (iii), since option
> (ii) mixes reuse and separate state in a weird way, and might be
> confusing. I do not have yet a clear opinion on this, but I am inclined
> to agree with him.
>
> Any opinion on this choice is appreciated!
>
>
> In the current experimental version, I implement this using AE 4, but I
> will change it very soon to AE 240 to ensure this experimental version
> does not break any future production implementation if this ID is fine
> for everyone — see the previous mail from Juliusz regarding this.
>
>
> [1]
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d15662682db232da77136cd348f4c9df312ca6f9
>
> Best regards,
> -- Théophile
>
> _______________________________________________
> babel mailing list
> babel@ietf.org
> https://www.ietf.org/mailman/listinfo/babel
>