Re: [multipathtcp] A proposal for MPTCP Robust session Establishment (MPTCP RobE)

Yoshifumi Nishida <nishida@sfc.wide.ad.jp> Mon, 30 October 2017 01:27 UTC

Return-Path: <nishida@sfc.wide.ad.jp>
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 08D9313F605 for <multipathtcp@ietfa.amsl.com>; Sun, 29 Oct 2017 18:27:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.399
X-Spam-Level:
X-Spam-Status: No, score=-1.399 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SORBS_SPAM=0.5, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no 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 VId0Vyhzn1e5 for <multipathtcp@ietfa.amsl.com>; Sun, 29 Oct 2017 18:27:13 -0700 (PDT)
Received: from mail.sfc.wide.ad.jp (shonan.sfc.wide.ad.jp [203.178.142.130]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 59F7B13DC3B for <multipathtcp@ietf.org>; Sun, 29 Oct 2017 18:27:13 -0700 (PDT)
Received: from mail-wr0-f172.google.com (mail-wr0-f172.google.com [209.85.128.172]) by mail.sfc.wide.ad.jp (Postfix) with ESMTPSA id 31139278617 for <multipathtcp@ietf.org>; Mon, 30 Oct 2017 10:27:11 +0900 (JST)
Received: by mail-wr0-f172.google.com with SMTP id w105so11028031wrc.0 for <multipathtcp@ietf.org>; Sun, 29 Oct 2017 18:27:11 -0700 (PDT)
X-Gm-Message-State: AMCzsaXBvi32GzgurtF9ge0FrXKWCFAwpake0lWBc22xh0b+ed7DwGJ5 2uZPhgRiMHTsVZNi3zZQLVrmqs2O+CC5M/QDdbo=
X-Google-Smtp-Source: ABhQp+TEoKAQAWLV60+6lWTsBIncqEYSAkhX7IlrX+fGW7xTf80yHgoe8wSN/7V6ywY8g9OE0ytaAV6r/rrlC9b/iCA=
X-Received: by 10.223.184.205 with SMTP id c13mr5439554wrg.268.1509326829030; Sun, 29 Oct 2017 18:27:09 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.223.141.148 with HTTP; Sun, 29 Oct 2017 18:27:08 -0700 (PDT)
In-Reply-To: <a9ba162ce384447596fef2de3d0fd984@HE105686.emea1.cds.t-internal.com>
References: <64f1b27aee214f6b99b5c474158d7426@HE105686.emea1.cds.t-internal.com> <e51005d7-23dd-d10e-9c8f-27ef155461b1@uclouvain.be> <79ac6cb307784db3a6d8ae1550a49573@HE105686.emea1.cds.t-internal.com> <272695de663e4adca1930203b32f44e7@HE105686.emea1.cds.t-internal.com> <CAO249yc4P9-NsHvwxAUBEQprtOXRTh5jChpOcZ=37hzMKj+h8Q@mail.gmail.com> <a9ba162ce384447596fef2de3d0fd984@HE105686.emea1.cds.t-internal.com>
From: Yoshifumi Nishida <nishida@sfc.wide.ad.jp>
Date: Sun, 29 Oct 2017 18:27:08 -0700
X-Gmail-Original-Message-ID: <CAO249ycGKFjuQ0WwUa2GC83Ko8_hb4WLXVK4GKU-8R_z1hMV9Q@mail.gmail.com>
Message-ID: <CAO249ycGKFjuQ0WwUa2GC83Ko8_hb4WLXVK4GKU-8R_z1hMV9Q@mail.gmail.com>
To: Markus.Amend@telekom.de
Cc: Yoshifumi Nishida <nishida@sfc.wide.ad.jp>, multipathtcp <multipathtcp@ietf.org>
Content-Type: multipart/alternative; boundary="f403045f508a7e9132055cb989de"
Archived-At: <https://mailarchive.ietf.org/arch/msg/multipathtcp/wwR79IH8p_gQSV611ahuq0tH3bM>
Subject: Re: [multipathtcp] A proposal for MPTCP Robust session Establishment (MPTCP RobE)
X-BeenThere: multipathtcp@ietf.org
X-Mailman-Version: 2.1.22
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: Mon, 30 Oct 2017 01:27:16 -0000

Hi Markus,

Thanks for the response. Some points became clearer to me.

On Wed, Oct 25, 2017 at 5:08 AM, <Markus.Amend@telekom.de> wrote:

> Dear Yoshi,
>
> see inline
>
> > -----Original Message-----
> > From: Yoshifumi Nishida [mailto:nishida@sfc.wide.ad.jp]
> > Sent: Mittwoch, 4. Oktober 2017 09:53
> > To: Amend, Markus <Markus.Amend@telekom.de>
> > Cc: multipathtcp <multipathtcp@ietf.org>
> > Subject: Re: [multipathtcp] A proposal for MPTCP Robust session
> > Establishment (MPTCP RobE)
> >
> > Hi Markus,
> >
> > I still need to think about it a bit more, but here's my current
> thoughts.. Sorry
> > for slow response.
> >
> > 1: I am guessing we cannot use this approach with TFO yet. But, if TFO
> cannot
> > be used, it might affect the latency of some apps.
> >
> We assume, RobE can incorporate TFO. Therefore we have different solutions
> in mind. But first we need an aligned understanding of TFO. There is one
> aspect, which isn't fully clear for me or respectively from my view not
> specified explicitly in RFC7413.
> TFO allows payload in a SYN and in case of a valid TFO cookie, this is
> directly delivered to receivers application. Now the question:  Is the
> sender allowed to proceed directly after sending the SYN with further data
> packets or is a SYN/ACK response required?
> By investigating current Linux TFO implementation it seems, sender first
> wait for the SYN/ACK before sending further data packets. But what shall we
> assume? At the end this is pretty important for a possible RobE<->TFO
> integration.
>

Well, I'm not worry very much about whether the sender wait for SYN ACK
before proceed.
Please let me explain...
When you use TFO, I guess you'll send the same payload P in two SYN
segments.
Then, both P payloads can be delivered to application sockets.
In this case, I'm still now sure how we can combine two sockets (on both
sender and receiver side)
For example, should the sender presume that two P have been received by the
receiver and advanced seq no by 2*P?
When I think about these kinds of situations, I thought it might be complex.


> > 3: I guess we'll need another step after SA6.2 to verify the response
> from
> > host B.
>
> no, we don't. data can be sent together with the MP_JOIN_CAP and
> immediately afterwards. if it is not successful, either we receive a RST
> (standard case) or we run into a timeout (error case). In both cases a
> retransmit over the first path is done.
>
> >     Also, MP_JOIN_CAP will require extra RTTs when the other end doesn't
> > support it. (because it will need to send RST and MP_JOIN to establish a
> > subflow)
> >
> yes, indeed this is a problem. there are several possibilities to address
> that problem:
> a) modify the MP_CAPABLE, adding an extra bit in syn/syn-ack. (e.g. one of
>    the A-H bits).
>    however this violates the standard, and thus will be incompatible with
>    existing implementations - unless it is introduced together with
>    ver. 1 - which already is incompatible, so it doesn't matter.
> b) if introduced together with ver. 1 - we know that the server supports
>    it if it supports ver. 1 - however it still might be deactivated.
> c) add an extra MPTCP-option.
>    in version 0, this can exhaust the tcp option space.
>    in version 1, (due to missing key info) this is feasible, if TFO
>    is not active. with TFO we already have that info, an extra option
>    is not necessary.
> d) cache that information, so only the first try adds an extra rtt.
>    later on (until cache expiration) we don't try fast-join again.
> e) sending an MP_JOIN_CAP + sending an MP_JOIN (note the join is a
>    new connection request (SYN), but can be associated with the
>    MP_JOIN_CAP by the key/token).
>    - In case the MP_JOIN_CAP succeeds, the MP_JOIN is ignored.
>    - In case it fails, the join is initiated before the RST arrives
>      on sender site. Avoiding the extra RTT, with the cost of
>      extra packets on the wire.
>    - The problem with reordering on the wire (MP_JOIN arrives before
>      MP_JOIN_CAP), can be avoided using one of the three reserved bits
>      in the MP_JOIN. These should be ignored by current implementations.
> f) a combination of those above.
>
> > 4: I tend to prefer just sending MP_JOIN after SA6.1 for simplicity so
> far. We
> > might be able to do everything in a shim layer.
> >
> Of course it is possible to do it in two steps. First only robustness and
> later on extend it with the fast-join approach.
> But why a shim-layer, do you suspect some incompatibility issues? Or do
> you just want to keep it out of MPTCP?
> But then note: Even that shim-layer needs a path-management. Either MPTCP
> has to provide a standard API to access the path-management from the
> outside world.
>

There's no big reasons for a shim layer approach.
I just thought we might be able to do most of the things without changing
MPTCP, although I miss something.
If doing it in kernel has some advantages, it may be a different story.
I am not sure yet if the shim layer approach will require a path
management.
It looks to me just creating a subflow of the MPTCP session through an API.

Thanks,
--
Yoshi