Re: [multipathtcp] MPTCP implementation feedback for RFC6824bis

Alan Ford <alan.ford@gmail.com> Thu, 12 December 2019 21:19 UTC

Return-Path: <alan.ford@gmail.com>
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 3ACF61200F5 for <multipathtcp@ietfa.amsl.com>; Thu, 12 Dec 2019 13:19:29 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.998
X-Spam-Level:
X-Spam-Status: No, score=-0.998 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, FREEMAIL_REPLY=1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=no 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 O86JNttd_N8P for <multipathtcp@ietfa.amsl.com>; Thu, 12 Dec 2019 13:19:27 -0800 (PST)
Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) (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 26556120024 for <multipathtcp@ietf.org>; Thu, 12 Dec 2019 13:19:27 -0800 (PST)
Received: by mail-wr1-x432.google.com with SMTP id b6so4377137wrq.0 for <multipathtcp@ietf.org>; Thu, 12 Dec 2019 13:19:27 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=tXTnYwZ89wUrkKoLj3oCkCNTYfu7ENgxRSVi/S84lPs=; b=MAGziFJOCOAugZKd5ZeIgB6p+0lMOSaAXKKjZAdtE+d2FJb3YSMVyvrghjT4BNSpCY YISY2tbr/cwwxniY9V2eWYEH+qtAGsuAMWbNjY1RD2/Bqr5a7BTBE6HadptteCy4c5Pb 8CHLmymgEcMBo5JEsm3zHtclUXqdfAo60MC+dwKSOxbxA/suI7hARZxXPmJhVAhZ3+aj H2qcNVigf1zxbhlDekoZHviOF12fkDGIZ2mm15pTzgJrSeCruo0IjQ0ElJDyoe0k5ONP GE7GZMVzq9RTJPTyIkYkN+VHKmUsdFLveJ+a4dFh3JfeZRFj/jkWemZiLMIX75f0Z5rn 7QXA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=tXTnYwZ89wUrkKoLj3oCkCNTYfu7ENgxRSVi/S84lPs=; b=SsDUTVzhr+FTQ25fOBmuEGjJwPqmLBoDgFhAagtQU72TmVoq46EYc3e3GQLM3DqvyB r4t7bBY+xScFSmQ+zFALdEbdxkICN/ZAL/Q9xLplP7SRZsPcyYJi1ggyG11Dr5vHMABj q3DwCkrKShELbHvM8viNScEK+7tBqvYRW5nJJ8scafekAJcip8UvZXOaNu3C1+WGO1xP Dk+kR46JhSGxkROuH/dfVklS0EDknrRRik7UC/3s8pputWWXylKbFMy56mOTi4EG4/ms OwH2Q9E/7vwSwJ6sZvTIsZiWWFjoCxGNCC9mwpXASJ/31e7dEpceGBH/GVnMri7N8Q7g gQPA==
X-Gm-Message-State: APjAAAWB0YgemxWRLNTahB0wIPb/m2J/SS6knSZOERpBk2iGq4zrk0Gh oo8KNRh94KxfJim7u6mACQ8=
X-Google-Smtp-Source: APXvYqxbxNWYVDY+H108D0aKJlg9JVO3ZIHnTfC7OoiPA3zmf0B5w5wMtBwRJ28WmOxWBBnkFjTEtA==
X-Received: by 2002:a5d:4983:: with SMTP id r3mr8678306wrq.134.1576185565572; Thu, 12 Dec 2019 13:19:25 -0800 (PST)
Received: from alan-mbp.lan (93.118.208.46.dyn.plus.net. [46.208.118.93]) by smtp.gmail.com with ESMTPSA id a20sm7894141wmd.19.2019.12.12.13.19.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 12 Dec 2019 13:19:24 -0800 (PST)
From: Alan Ford <alan.ford@gmail.com>
Message-Id: <34FA5631-3ED2-4C12-A928-5BA8728CAC7E@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_FBFC5B72-346A-43FE-903D-2BADF5B06871"
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
Date: Thu, 12 Dec 2019 21:19:21 +0000
In-Reply-To: <2689B456-2B1C-4D84-B36E-74FA0FFD2E3B@apple.com>
Cc: 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>, Matthieu Baerts <matthieu.baerts@tessares.net>, Paolo Abeni <pabeni@redhat.com>
To: Christoph Paasch <cpaasch@apple.com>
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>
X-Mailer: Apple Mail (2.3445.9.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/multipathtcp/pU_yaOHkC52U46ANEZXjWOaWc_k>
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: Thu, 12 Dec 2019 21:19:29 -0000

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.

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 <mailto:alan.ford@gmail.com>> wrote:
>> 
>> Hi Yoshifumi,
>> 
>>> On 10 Dec 2019, at 05:30, Yoshifumi Nishida <nsd.ietf@gmail.com <mailto: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 <mailto: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
>> 
>> 
>