Re: What to do about multipath in QUIC

Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com> Thu, 12 November 2020 11:10 UTC

Return-Path: <mikkelfj@gmail.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CE4693A15CB for <quic@ietfa.amsl.com>; Thu, 12 Nov 2020 03:10:59 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.096
X-Spam-Level:
X-Spam-Status: No, score=-2.096 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, UNPARSEABLE_RELAY=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 5E-jjk086ylD for <quic@ietfa.amsl.com>; Thu, 12 Nov 2020 03:10:58 -0800 (PST)
Received: from mail-yb1-xb32.google.com (mail-yb1-xb32.google.com [IPv6:2607:f8b0:4864:20::b32]) (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 D07AC3A15CA for <quic@ietf.org>; Thu, 12 Nov 2020 03:10:57 -0800 (PST)
Received: by mail-yb1-xb32.google.com with SMTP id 2so4913971ybc.12 for <quic@ietf.org>; Thu, 12 Nov 2020 03:10:57 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:in-reply-to:references:mime-version:date:message-id:subject:to :cc; bh=c3nKzUJQ1szsMu3wF/WT5buLoWbBholkppHn4YGVdtQ=; b=bhfNd2JhWc6InTMsShuxLb//2xRcgiYfX+CvFWS1QZWaHkm/uu3xaWq1tqIHmYiuKE ZeDBNLOsO9HVzOQr0amV9zed/IiDS8aYg7p48CLKT0/ilv5OwFpS2XLRFqd6nTgWT+v5 uf3LYxfgxVWdyn54ZNW60gQW8Zmf0wMMqqAQfRsyxuZpO/W48pwX0352dCnc9K7aSpkJ 3ssW+lWYChk5fg5uOEvT/hF3CATHBTu5C61QVYXUCGE2ku818RKtc8Vsm+N8bzWaIQX5 1AhTSrC5nhpn7vpz44KI/5fN+2EQo1MLWYeWF99xStgcwbXHMlq4yswyQBOETmgCqUh7 vNbQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=c3nKzUJQ1szsMu3wF/WT5buLoWbBholkppHn4YGVdtQ=; b=Hk/TLaOwTK7HWF91F68cW0Bbjipk9M2xbrpLg8Mv17TU+5FN7+cefVc/bItHaM+EQS ad4G6WN/5VbdknPeEQnbrPokRRR8leX7CUmnAB4TU796z6eevsKR/CdGDxqGE2guI4Xj yPLwKR51UKCFeo24v3M8HWUqO/bRtItKnErk194rRhAeTeSkdwJ2KwCFTz8MU0uDujAl gELwPH1wNTVEmZYKWPXVtur02QsTHw9AJylOFhKdu/x3QQGi/epuaYsUWJQTiBhuIDjM gT0DFbNIWW0zedfsdn9aIjmQl2pG1xryDl9cYlxkvzNNQufPNncggfLRnJlWIU5mYPqB cLGw==
X-Gm-Message-State: AOAM530ZZN6GfoUrNLOpmrLxpDQ0r51mYBiK/FGzrooIpeiANl/l3ybu SBBYULHHnI4M/mn/Fnt20IXia5Yy470ZBgB4d+c=
X-Google-Smtp-Source: ABdhPJx2YJaGBm9wa0Wpjplaa7nDgjahiGqIrl0mSMPKDbE66eqmIb6wbTqZixscjH9T9pQu7aZYhZ312G13VgIBONI=
X-Received: by 2002:a25:7cc2:: with SMTP id x185mr39742866ybc.263.1605179457109; Thu, 12 Nov 2020 03:10:57 -0800 (PST)
Received: from 1058052472880 named unknown by gmailapi.google.com with HTTPREST; Thu, 12 Nov 2020 03:10:56 -0800
From: Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>
In-Reply-To: <538215d1-3b9e-4784-920d-03be4c3a503a.miaoji.lym@alibaba-inc.com>
References: <538215d1-3b9e-4784-920d-03be4c3a503a.miaoji.lym@alibaba-inc.com>
MIME-Version: 1.0
Date: Thu, 12 Nov 2020 03:10:56 -0800
Message-ID: <CAN1APddB4JDo281L0USsU7FSiQxRNi-LaB8ZS0a9kLAgeNJwrw@mail.gmail.com>
Subject: Re: What to do about multipath in QUIC
To: Yanmei Liu <miaoji.lym@alibaba-inc.com>, quic <quic@ietf.org>
Cc: "安勍(莳逸)" <anqing.aq@alibaba-inc.com>, healing4d <healing4d@gmail.com>, "Liu, Hongqiang(洪强)" <hongqiang.liu@alibaba-inc.com>, "Ma, Yunfei" <yunfei.ma@alibaba-inc.com>
Content-Type: multipart/alternative; boundary="0000000000005781b805b3e6f796"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/9MvCjaMqhxqWyTdFWTV_L_H5NOU>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 12 Nov 2020 11:11:00 -0000

Hi Yanmei Liu

I think this sounds like a good approach. It takes all the work an
application would otherwise have to do and hides the complexity, without
completely introducing a lot of new protocol complexity. This allows an
application to open a stream and keep working on it regardless of which
connections are currently alive.

I wonder if there are cases where this is a bit too heavy. For example
handshakes could perhaps be simpler on secondary connections.

Also I wonder about privacy. For example if it is easy to detect that to
concurrent connections belong to the same endpoint, fingerprinting might be
easier. I guess that would always be a problem for MP.

There are also subtleties such as idle-timeout. What if each connection has
a different timeout, is it only the sub connection that dies, or the entire
connection?  There could even be a case where connections remain alive
without any currently open sub-connection in order to deal with aggressive
NAT gateways etc.

If secondary handshakes get simplified, I suspect it is more of an
implementation whether to see it as sub-connections, or just protocol
messages on different paths.

- Mikkel

On 12 November 2020 at 11.48.50, Yanmei Liu (miaoji.lym@alibaba-inc.com)
wrote:

Hi Lucas,

> >
> > You are right, connection migration is the weakest form of multipath.
> >
>
> Thanks. We heard use cases that would like stronger forms. I think it will
> help continue to move the discussion forward if we can establish some
> common ground on terms and capabilities.

I
strongly agree that we need to establish some common ground on terms
and capabilities,
so I’d like to explain some design considerations in [draft-an-multipath-quic](
https://tools.ietf.org/html/draft-an-multipath-quic-00
), and we hope to get more feedbacks.

> >
> >     However, to the network layer, each MPTCP subflow looks
> >     like a regular TCP flow whose segments carry a new TCP option type.
> >     Multipath TCP manages the creation, removal, and utilization of these
> >     subflows to send data.  The number of subflows that are managed
> >     within a Multipath TCP connection is not fixed and it can fluctuate
> >     during the lifetime of the Multipath TCP connection.
> >
> > This is not really connection migration and MPTCP provides much more
> > multipath capabilities than connection migration.
> >
>
> Yeah I follow. As someone coming from QUIC, the first sentence is kind of
> easily negated (which is a benefit IIUC). I think the remainder of the
> paragraph is partially satisfied by QUIC v1 if we consider
> PATH_CHALLENGE/PATH_RESPONSE and NEW_CONNECTION_ID/RETIRE_CONNECTION_ID.
> But it starts to fall apart when you want to do more complicated things. I
> think understanding the gaps in the transport signalling would be useful to
> document in isolation to any specific solution.
> draft-deconinck-quic-multipath has done some of that work already but it
> gets a little too tied up with the solution IMO.

  1. We think QUICv1 has already laid down the foundation to build a
general-purpose multi-path since migration can be viewed as a special
type of multi-path. Therefore, we think one should reuse the design of
migration in QUIC-v1 as much as possible, along with the features such
as PATH_CHALLENGE/PATH_RESPONSE for path challenge and address
validation, and NEW_CONNECTION_ID/RETIRE_CONNECTION_ID for CID
renegotiation of new path(which is called Sub-connection in our
draft). Reusing these features of QUIC-v1 with small extensions has
enabled us to get general-purpose multi-path features with very little
efforts in
Alibaba’s XQUIC(an implementation of QUIC-v1).
  2. We find that the simplest way to add a second path is to use a
sub-connection. The concept of sub-connection is directly inherited
from connection in QUIC-transport, defined as the logic session of
each physical path. Similar to a connection, each sub-connection has
its own packet number space for the purpose of loss detection and
recovery.
  3. To merge the gap between migration and the general-purpose
multi-path, several new features need to be supported:
  - (1) how to manage the lifecycles of individual sub-connections.
  - (2) how to distinguish packets coming from different sub-connections.
  - (3) how to co-operate with a multi-path scheduler.

We would appreciate hearing any thoughts, comments and suggestions.


Thanks,
Yanmei