Re: [multipathtcp] Submitted drafts

Alan Ford <alan.ford@gmail.com> Wed, 22 July 2015 15:33 UTC

Return-Path: <alan.ford@gmail.com>
X-Original-To: multipathtcp@ietfa.amsl.com
Delivered-To: multipathtcp@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4001F1A1B1C for <multipathtcp@ietfa.amsl.com>; Wed, 22 Jul 2015 08:33:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level:
X-Spam-Status: No, score=-1.999 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, HTML_MESSAGE=0.001, SPF_PASS=-0.001] autolearn=ham
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 n7acogrHUBQD for <multipathtcp@ietfa.amsl.com>; Wed, 22 Jul 2015 08:33:47 -0700 (PDT)
Received: from mail-yk0-x236.google.com (mail-yk0-x236.google.com [IPv6:2607:f8b0:4002:c07::236]) (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 003AD1A1B84 for <multipathtcp@ietf.org>; Wed, 22 Jul 2015 08:33:16 -0700 (PDT)
Received: by ykax123 with SMTP id x123so196051957yka.1 for <multipathtcp@ietf.org>; Wed, 22 Jul 2015 08:33:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=U6UyG1aBpWeS4qmqj0LRwQzL2xNbVFhuMQjvCIhbcQc=; b=onyfOdKEDucB5PavvjQu81avrjIrfo6x+E1H/hV198WedrM/USbFp6BY1se4bPwtUW p4yGvtCKWAVDlrhO3ucFYlyPi4zgdRWJYpoV6pWajVOwKT0tVAnlL4TIlc/Sem6M7AfD fR0wbOf4mPz7hlBhm1wi07qJITWBEW4gaHOwZ62lFd9KKK9Y3zVwx/E4ZbCGKSL7fpV2 io0Y2x8ppRFbVqjNTUegNPi0wBnllggiDOC+YPgaJP5d1IWbazH8rPe1ica1mcCC85ao xiJueTb/qRVZeirfnwvrd1MIee94K+j0/l2Mqo3cSFwlEzjPA8JY6UuhuYR2IAJbLvpC J0LQ==
MIME-Version: 1.0
X-Received: by 10.170.196.4 with SMTP id n4mr2995646yke.127.1437579196336; Wed, 22 Jul 2015 08:33:16 -0700 (PDT)
Received: by 10.129.119.9 with HTTP; Wed, 22 Jul 2015 08:33:16 -0700 (PDT)
In-Reply-To: <55A031A1.90703@uclouvain.be>
References: <559E8D85.2060603@uclouvain.be> <cdbfab2b826949a5bf4f824358a995dc@rew09926dag03b.domain1.systemhost.net> <559F65C6.8030305@uclouvain.be> <20150710173600.GO1144@Chimay.local> <55A031A1.90703@uclouvain.be>
Date: Wed, 22 Jul 2015 16:33:16 +0100
Message-ID: <CAOs_kTbXA0kq6xMZQTAG4Q5EYcN6uE7xdSoU9YhPepeUnbREwA@mail.gmail.com>
From: Alan Ford <alan.ford@gmail.com>
To: Olivier Bonaventure <Olivier.Bonaventure@uclouvain.be>
Content-Type: multipart/alternative; boundary="001a113979b055937b051b787d6d"
Archived-At: <http://mailarchive.ietf.org/arch/msg/multipathtcp/R2b8_Cm09g_2PpW2GbPzD8S9MRc>
Cc: "multipathtcp@ietf.org" <multipathtcp@ietf.org>
Subject: Re: [multipathtcp] Submitted drafts
X-BeenThere: multipathtcp@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Multi-path extensions for TCP <multipathtcp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/multipathtcp>, <mailto:multipathtcp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/multipathtcp/>
List-Post: <mailto:multipathtcp@ietf.org>
List-Help: <mailto:multipathtcp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/multipathtcp>, <mailto:multipathtcp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Jul 2015 15:33:50 -0000

Hi all,

On 10 July 2015 at 21:57, Olivier Bonaventure <
Olivier.Bonaventure@uclouvain.be> wrote:

> Christoph,
>
> * https://www.ietf.org/internet-drafts/draft-bonaventure-mptcp-addr-
>>>>> 00.txt
>>>>>
>>>>
>>> This draft includes a slight modification of the handling of the address
>>> identifier for the initial subflow. Comments from other implementors
>>> would
>>> be useful on this draft.
>>>
>>
>> I agree with section 2.1 that having a different address-ID for the
>> initial subflow is very cumbersome. An implementation has to store the
>> local
>> address-id's within the state-machine of each subflow. It would be much
>> easier if we could have a fully global address-table.
>>
>>
This issue puzzles me, is this really such a big issue? I haven't
implemented this myself of course, but as I understand it, you just want to
use a single table for all address-to-addressID mappings.

OK, fine. But you already have connection-level state (for the key etc), so
is it really too complex to e.g. have a single byte in your
connection-level state that points to the index on your global mapping
table? That seems much more simple and much more reliable than a
potentially unreliable signal!


> However, I'm not sure whether it is good to solve it through an empty
>> ADD_ADDR-option. Because, the option is not sent reliably. Even if it gets
>> combined with data, we have an issue with unidirectional streams. And
>> communicating this ADD_ADDR-option reliably to the peer is here in this
>> case
>> even more important than for the "regular" ADD_ADDR option.
>>
>> It would be better if we could put the address-ID inside the MP_CAPABLE.
>> Maybe we can use 8 bits of the key?
>>
>
> Then the entropy for the key is lower because it is reduced to 56 bits.
>
>
Definitely thumbs-down for that I'm afraid!


> (also, a little nit: Adding the IPVer within this ADD_ADDR-option is not
>> necessary and will bring issues in NAT64-environments).
>>
>
> Agreed.
>
> An alternative is to use the same approach as in
>
> https://www.ietf.org/internet-drafts/draft-bonaventure-mptcp-exp-option-00.txt
>
> to make ADD_ADDR reliable
>
> We can remove the IPVer from ADD_ADDR2 that AFAIK nobody has implemented
> and replace it with a set of flags.
>
>                           1                   2                   3
>        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
>       +---------------+---------------+-------+-------+---------------+
>       |     Kind      |     Length    |Subtype| ABCD  |  Address ID   |
>       +---------------+---------------+-------+-------+---------------+
>       |          Address (IPv4 - 4 octets / IPv6 - 16 octets)         |
>       +-------------------------------+-------------------------------+
>       |   Port (2 octets, optional)   |                               |
>       +-------------------------------+                               |
>       |                      Truncated HMAC (8 octets)                |
>       |                               +-------------------------------+
>       |                               |
>       +-------------------------------+
>
>
>
> For example, the A flag could be set to zero when a host announces a new
> address. The host that receives an ADD_ADDR2 with the A flag set to zero
> must set the A flag to one and  return it to acknowledge it.
>
> A host should retransmit the ADD_ADDR2 option up to n times if it wants to
> ensure that the ADD_ADDR2 option is delivered reliably.
>
> This would work for the ADD_ADDR2 option that does not contain any address
> and has thus a total length of 32 bits.


That seems an interesting idea. We can certainly remove IPVer (as you say
it's implied by length now). It was only relevant when we could put
multiple addresses in one option - before we had the HMAC. Having flags
could be useful - I like to idea of reliability like this. We could use the
same trick on REMOVE_ADDR.

Incidentally, if we end up bumping the MPTCP version for the syncookies
support (and I think this is a good idea - I'm awaiting an updated draft to
comment in more detail on this one), then we can also put ADD_ADDR2 back to
its rightful place as ADD_ADDR :)

Regards,
Alan