Re: [multipathtcp] MPTCP implementation feedback for RFC6824bis

Matthieu Baerts <matthieu.baerts@tessares.net> Fri, 13 December 2019 00:10 UTC

Return-Path: <matthieu.baerts@tessares.net>
X-Original-To: multipathtcp@ietfa.amsl.com
Delivered-To: multipathtcp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C54DB12012E for <multipathtcp@ietfa.amsl.com>; Thu, 12 Dec 2019 16:10:38 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.889
X-Spam-Level:
X-Spam-Status: No, score=-1.889 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_REMOTE_IMAGE=0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=tessares-net.20150623.gappssmtp.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 WXmm-O5qhi3e for <multipathtcp@ietfa.amsl.com>; Thu, 12 Dec 2019 16:10:36 -0800 (PST)
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com [IPv6:2a00:1450:4864:20::22e]) (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 69A7B120090 for <multipathtcp@ietf.org>; Thu, 12 Dec 2019 16:10:35 -0800 (PST)
Received: by mail-lj1-x22e.google.com with SMTP id s22so633183ljs.7 for <multipathtcp@ietf.org>; Thu, 12 Dec 2019 16:10:35 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares-net.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Bte0iKRgEl/alaxWbLMAleh5HKu7zjMGGLHg/0o0H+o=; b=xuyeqJe82TyozEU6YT6rrELTDiKo4+mQPnnxzfUfO0R4ak1zJctAm6tKd1jB7WEJ3F J+8Zpxr16gMBDTac6m4/6v4d4puRx49Il519YfwvY68PuI9LA0ev3JvwWCZ1pDXmdCyd +QrMQA1ezHvsTLzuvSHfBMSLmiYixLooqIkJTqVFC44dSrgsoo0UAevwRDqFAvChjBBE jIGVlIucaOW8j6e5yUPlEciOfDnCOlszX5TcwF1v8qG4Lz7CL5piJ1pnjskbkx5QN/q/ a3BPWMbnX3QK8IsPXcuFkQYNXAMs/BSh/l8YqalE6N9/UiuGeZI8q+hBSfg2901A7HxL qHxg==
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=Bte0iKRgEl/alaxWbLMAleh5HKu7zjMGGLHg/0o0H+o=; b=pLYCNKJXUFW2qRz04sUhu7brJ3Jzh9pd0hp1h3LGVETdjjbJuvnyrAIJj1vQc83M6I ahediGFETxqktznifOmDPB0vYakx28febKHgdn9ekzRgK6z/BhFJ9MRY5SHmZOAbD03X 5+zwTxllS2fQW71/m5p1cfhUUPY79XRr2kv5iUK4YwmyxhCL7MTMSZ65mjSn1YPETlNb j3Ndk9dwAxbriDb3orYfdG9yBqALhV78iGZ/O70BMyuabwkcIVf8k+qPIk9GaM3kWBl0 QvIZjp5dGBfoUVuzmGHwDWaSzM8r7ffv/2i9WwoihIp9pbQM/mTowCB5o2Zqg80Tth2Z StkQ==
X-Gm-Message-State: APjAAAVZs8hOvJTqGKoWsH5U+E67AJiTgMih4uz5JU5OQfapk816HlNN r9R2Gxp7tMhUA1NvymFp0va9UkyyfPqu3CoAMdc8Xg==
X-Google-Smtp-Source: APXvYqxc2hOPqFAPDBTF4ZC7ptnS2TJ+udCSFesRgopVZbyPsVgZepdPWTCb98N7iNurkCGS9QbtwZbUs2LxF3ab0IQ=
X-Received: by 2002:a2e:6c06:: with SMTP id h6mr7334247ljc.246.1576195833502; Thu, 12 Dec 2019 16:10:33 -0800 (PST)
MIME-Version: 1.0
References: <17233788-D98B-4484-B785-2F58D43EA7CA@apple.com> <D070F2D5-6E8C-4551-86DD-E50B4ADF11B7@gmail.com> <3F1F1135-D2C0-48E2-9B6E-A83DDC11DF4F@apple.com> <83BFBFD6-255E-4022-96D4-BE183B709CB2@gmail.com> <20191202172757.GA84163@MacBook-Pro-64.local> <CF3EBAFD-E24E-4233-8FCE-775396E747A2@gmail.com> <D784F90C-5027-4753-9088-00CF25D22DFD@apple.com> <3278EB11-686A-4E0F-9DE4-321B239F8913@gmail.com> <DEE3E51B-373C-40BE-A296-8517FB23A7B7@apple.com> <6978C97F-24D5-4CF0-8CEB-2F58BE26D174@gmail.com> <CAAK044RLUJSZEcyuv1FmPGmOA0pCMKLBD8EzXZn9h23ZCfaYWA@mail.gmail.com> <63E04612-7410-4E38-BE19-F2351C23C7F7@gmail.com> <2689B456-2B1C-4D84-B36E-74FA0FFD2E3B@apple.com> <34FA5631-3ED2-4C12-A928-5BA8728CAC7E@gmail.com>
In-Reply-To: <34FA5631-3ED2-4C12-A928-5BA8728CAC7E@gmail.com>
From: Matthieu Baerts <matthieu.baerts@tessares.net>
Date: Fri, 13 Dec 2019 01:10:22 +0100
Message-ID: <CAKuKrBmpqv026QaKnYirTgpXmmjoyorbLAUOkF7KJbpofHEgQA@mail.gmail.com>
To: Alan Ford <alan.ford@gmail.com>
Cc: Christoph Paasch <cpaasch@apple.com>, Yoshifumi Nishida <nsd.ietf@gmail.com>, MultiPath TCP - IETF WG <multipathtcp@ietf.org>, Philip Eardley <philip.eardley@bt.com>, Mirja Kuehlewind <ietf@kuehlewind.net>, mptcp Upstreaming <mptcp@lists.01.org>, Paolo Abeni <pabeni@redhat.com>
Content-Type: multipart/alternative; boundary="000000000000c0b78d05998ab003"
Archived-At: <https://mailarchive.ietf.org/arch/msg/multipathtcp/HFNnVsl4ZiiXGP48FMCGDDNnC5c>
Subject: Re: [multipathtcp] MPTCP implementation feedback for RFC6824bis
X-BeenThere: multipathtcp@ietf.org
X-Mailman-Version: 2.1.29
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: Fri, 13 Dec 2019 00:12:19 -0000

Hi Alan,


On Thu, Dec 12, 2019 at 10:19 PM Alan Ford <alan.ford@gmail.com> wrote:

> Hi Christoph (and Matthieu & Pablo),
>
> WRT checksums, we do say:
>
>    For example,
>    if the initiator sets A=0 in the SYN but the responder sets A=1 in
>    the SYN/ACK, checksums MUST be used in both directions, and the
>    initiator will set A=1 in the ACK.
>
>    If A=1 is received by a host that does not
>    want to use checksums, it MUST fall back to regular TCP by ignoring
>    the MP_CAPABLE option as if it was invalid.
>
> Which would seem to cover all these eventualities. The “C” bit is purely
> an indicator, and the crypto negotiation is clearly specified too.
>

Thank you for your answer, that's clearer for the A bit.
Our concern was mainly about the version. How should we react if, as a
server supporting only v1, we have this sequence:

SYN (MP_CAPABLE: v2)  →
←  SYN+ACK (MP_CAPABLE: v1)
ACK (MP_CAPABLE v2) →

In other words, the server told the client that the maximum version it
supports is v1. But in the ACK+MP_CAPABLE, the client sends v2 again.

According to the RFC, the negotiation is done in the SYN and SYN+ACK. How
do we react if the following ACK is sending a version (e.g. v2) which is
not the expected one (e.g. v1)?

For the moment in our implementation, we fallback to regular TCP.
It means that future versions of MPTCP have to set the proper version in
the 3rd ACK -- the negotiated one -- and not a copy of what has been sent
in the SYN.

Should we add a clarification for that?

Best regards,
Matthieu


>
> Best regards,
> Alan
>
> On 11 Dec 2019, at 19:28, Christoph Paasch <cpaasch@apple.com> wrote:
>
> Hello Alan,
>
> there is one more thing that came up from the implementation experience
> (thanks to Matthieu & Paolo in CC).
>
> It is unclear in the draft (or at least, I didn't find the text ;-) ),
> what to do when the flags & version in the third ACK + MP_CAPABLE are
> inconsistent with what was negotiated in the SYN-SYN/ACK exchange.
>
> It would be good to spell this out and say that if there are any
> inconsistencies, a host should simply fallback to regular TCP.
>
>
> Christoph
>
> On Dec 10, 2019, at 8:09 AM, Alan Ford <alan.ford@gmail.com> wrote:
>
> Hi Yoshifumi,
>
> On 10 Dec 2019, at 05:30, Yoshifumi Nishida <nsd.ietf@gmail.com> wrote:
>
> Hi Alan,
>
> The texts look fine to me, but I have a few questions on them.
>
> On Fri, Dec 6, 2019 at 7:58 AM Alan Ford <alan.ford@gmail.com> wrote:
>
>> Hi all,
>>
>> Following on from the discussion of implementation feedback with
>> Christoph, I propose the following edits to RFC6824bis - which is currently
>> in AUTH48 - as clarifications.
>>
>> ADs, please can you confirm you consider these edits sufficiently
>> editorial to fit into AUTH48.
>>
>> WG participants, please speak up if you have any concerns.
>>
>>
>> *Edit 1, clarifying reliability of MP_CAPABLE*
>>
>> Change the sentence reading:
>>
>>    The SYN with MP_CAPABLE occupies the first octet of data sequence
>> space, although this does not need to be acknowledged at the connection
>> level until the first data is sent (see Section 3.3).
>>
>> To:
>>
>>    The SYN with MP_CAPABLE occupies the first octet of data sequence
>> space, and this MUST be acknowledged at the connection level at or before
>> the time the first data is sent or received (see Section 3.3).
>>
>
> What implementations should do when they receive the first data before
> MP_CAPABLE is acked?
> They should terminate the connection or discard the data?
>
>
> By asking this question you have made me realise that this text is in fact
> incompatible with the case when A (the initiator) is also the first sender
> of data.
>
> Given the problem is only with B sending data first, let us forget this
> change, and revert to Christoph’s original problem text, and use only the
> below change:
>
> Change the sentence reading:
>>
>>    If B has data to send first, then the reliable delivery of the ACK +
>> MP_CAPABLE can be inferred by the receipt of this data with an MPTCP Data
>> Sequence Signal (DSS) option (Section 3.3).
>>
>> To:
>>
>>    If B has data to send first, then the reliable delivery of the ACK +
>> MP_CAPABLE is ensured by the receipt of this data with an MPTCP Data
>> Sequence Signal (DSS) option (Section 3.3) containing a DATA_ACK for the
>> MP_CAPABLE (which is the first octet of the data sequence space).
>>
>
> This will resolve the ambiguity in the case of B sending first.
>
> In my personal opinion either one of these edits would be sufficient for
>> making the point, however clearly this has caused some confusion amongst
>> the implementor community so making both these changes should make it
>> absolutely clear as to the expected behaviour here.
>>
>>
>> *Edit 2, mapping constraint*
>>
>> Change the sentence reading:
>>
>>    A Data Sequence Mapping does not need to be included in every
>> MPTCP packet, as long as the subflow sequence space in that packet
>> is covered by a mapping known at the receiver.
>>
>> To:
>>
>>    A Data Sequence Mapping MUST appear on a TCP segment which is covered
>> by the mapping. It does not need to be included in every MPTCP packet, as
>> long as the subflow sequence space in that packet is covered by a mapping
>> known at the receiver.
>>
>>
> What implementations should do when a Data Sequence Mapping doesn't cover
> the TCP segment that carries this option?
>
>
> There are a number of cases where the MUST does not have a consequence; it
> should be obvious from the text for similar failures that it can close it
> with a RST.
>
> BTW, This is not a strong opinion, but I may prefer a text like: "A Data
> Sequence Mapping MUST provide the mapping for the segment that carries this
> option.”
>
>
> OK how about: "A Data Sequence Mapping MUST provide the mapping which
> includes the segment that carries this option.”
>
> Regards,
> Alan
>
>
>
>
>

-- 
[image: Tessares SA] <http://www.tessares.net> Matthieu Baerts | R&D
Engineer
matthieu.baerts@tessares.net
Tessares SA | Hybrid Access Solutions
www.tessares.net
1 Avenue Jean Monnet, 1348 Louvain-la-Neuve, Belgium

Disclaimer: https://www.tessares.net/mail-disclaimer/