Re: [multipathtcp] High-level design decisions /architecture

Scott Brim <scott.brim@gmail.com> Tue, 03 November 2009 15:17 UTC

Return-Path: <scott.brim@gmail.com>
X-Original-To: multipathtcp@core3.amsl.com
Delivered-To: multipathtcp@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 1C65128C0F6 for <multipathtcp@core3.amsl.com>; Tue, 3 Nov 2009 07:17:48 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.551
X-Spam-Level:
X-Spam-Status: No, score=-2.551 tagged_above=-999 required=5 tests=[AWL=0.048, BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TC4K8M4jpPEQ for <multipathtcp@core3.amsl.com>; Tue, 3 Nov 2009 07:17:47 -0800 (PST)
Received: from mail-qy0-f203.google.com (mail-qy0-f203.google.com [209.85.221.203]) by core3.amsl.com (Postfix) with ESMTP id CD4953A659B for <multipathtcp@ietf.org>; Tue, 3 Nov 2009 07:17:46 -0800 (PST)
Received: by qyk41 with SMTP id 41so3011967qyk.29 for <multipathtcp@ietf.org>; Tue, 03 Nov 2009 07:18:04 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:cc:subject:references:in-reply-to :x-enigmail-version:content-type:content-transfer-encoding; bh=lDYQFvYIJMbyL+N36vlcYu6DwDFKUxBFd/NQk9IB1LY=; b=R9M/d+2rj4BT9ms80vwiW9DCsHX3BqDJYGiiHiuN7sHssGonloV8r6vjeQJyJgUFUl 8tc+pzTHx/5GhcaQ47HnGOpBxqFN9J2Pab87fsU/Zme6S1HHz20TPV0Do1v63ttC8o9F ShEQrvUWxTvwwAZFgUGykDuXtQZTnpSg0rlxg=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:x-enigmail-version:content-type :content-transfer-encoding; b=pMBcfEo3R4S+WPsxokVBXEda2FwMYtV4jyKOtnmhOcYAQeE2I0jtQYC2iI5mSrhezK v/8IaDetMBMiJB6VQa5GaQFsY4Yt96hZ+DbFyb0KK/CXS1EvHej6aKRGTU2u6enRZk/U QDA9+bMNhIPWFBwGXg6PE69yof2Llm026yAcw=
Received: by 10.224.44.77 with SMTP id z13mr58957qae.195.1257261484326; Tue, 03 Nov 2009 07:18:04 -0800 (PST)
Received: from sbrim-mbp.local (198-135-0-233.cisco.com [198.135.0.233]) by mx.google.com with ESMTPS id 20sm100982qyk.13.2009.11.03.07.18.02 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 03 Nov 2009 07:18:03 -0800 (PST)
Message-ID: <4AF049A8.2060501@gmail.com>
Date: Tue, 03 Nov 2009 10:18:00 -0500
From: Scott Brim <scott.brim@gmail.com>
User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812)
MIME-Version: 1.0
To: philip.eardley@bt.com
References: <4A916DBC72536E419A0BD955EDECEDEC06363A62@E03MVB1-UKBR.domain1.systemhost.net>
In-Reply-To: <4A916DBC72536E419A0BD955EDECEDEC06363A62@E03MVB1-UKBR.domain1.systemhost.net>
X-Enigmail-Version: 0.96.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Cc: multipathtcp@ietf.org
Subject: Re: [multipathtcp] High-level design decisions /architecture
X-BeenThere: multipathtcp@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Multi-path extensions for TCP <multipathtcp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/multipathtcp>, <mailto:multipathtcp-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/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: Tue, 03 Nov 2009 15:17:48 -0000

philip.eardley@bt.com allegedly wrote on 11/02/2009 12:47 PM:
> Protocol-related
> 
> ============
> 
>     * IPv4 & IPv6 will have the same high-level design
>           o [Comment: the Charter implies both v4 & v6 are in scope]
>     * The MPTCP connection is identified, from an apps perspective, by
>       the addresses associated with the original path (even if that
>       subflow /path closes)

... for a legacy API.  An up-to-date API, with extensions, MUST have a
way of identifying the connection which is independent of addresses.

>     * A SYN/ ACK exchange (on a single path) checks that both ends
>       support MPTCP, with automatic fall-back to TCP if not
>     * each MPTCP subflow looks exactly like an ordinary, semantically
>       independent TCP flow. MPTCP effectively runs on top. So
>       re-transmission, FINs etc are independent on each subflow

retransmission must be sub-flow specific for the moment but we know that
can slow things down so we should actively investigate ways of
retransmitting on any sub-flow.

>     * control of the MPTCP connection (as opposed to the subflows) is
>       carried in TCP options, eg DATA FIN for closing an MPTCP connection
>     * the protocol involves an MPTCP stack at both ends of the MPTCP
>       connection
>           o [Comment: this is in our charter]
>     * Either end of the MPTCP connection can add or remove paths to/from
>       the MPTCP connection
>           o [Comment / Question: this seemed a bit unclear in the
>             protocol i-d, but is presumably required?]

Yes, the protocol must support this.  However, as a meta-issue ... I
suggest that "path" is good for marketing but not technically exact.  An
endpoint can even have multiple addresses associated with a single
interface.  Both of them can.  We should figure out how to restrict the
use of "path" to contexts where its use is accurate.

>     * Subflow end point definition
>           o [Question: Should we allow subflows in a single MPTCP
>             connection to have different ports?]

Don't know.

> Congestion algorithm
> 
> ===============
> 
>     * the goals are: [1] MPTCP is at least as good as TCP would be on
>       the best subflow path; 

This is a hard one.  One use for multipath transport is in environments
where the network situation is (ahem) "dynamic", so it is difficult to
maintain a connection using a single src/dst address pair.  In this
case, if there are problems then multipath transport is certainly
better, but if one of the paths is clean, then just using that path for
a simple TCP gets better goodput then MPTCP would, trying to use that
path plus some poor ones in addition.

Let's try to find some better wording at the meeting.

>       [2] on any path, an MPTCP connection uses
>       less (or the same) capacity as a TCP connection would do; [3]
>       MPTCP moves traffic off more congested paths and onto less
>       congested ones
>     * increases in the congestion windows of the subflows are coupled;
>       for decreases in the congestion windows, each subflow does new
>       reno independently (ie they are not coupled)
>     * slow start, fast re-transmit and fast recovery are the same as
>       RFC5681
> 
> API
> ===
> 
>     * no changes to existing apps are needed to use MPTCP; MPTCP uses
>       the unaltered TCP socket API
>     * There is an optional, extended API
>           o [Question: would both ends need the extended API , with a
>             fall-back if not?]
>           o [Comment: presumably the actual features of the extended API
>             are outside the initial high-level design decisions]

Agree with all.

>     * congestion control state is shared among application-visible
>       transport instances (eg multiple HTTPs between the same pair of
>       hosts)

How do you arrange for this?  Currently, if a single app has multiple
HTTPs running, each one has independent congestion control state.  HTTP
in this case is the "client layer" of transport, so each HTTP would be
an independent client, each getting its own independent MPTCP state.  No?

>     * 3 application profiles are mentioned (Bulk data transport,
>       Latency-sensitive transport with overflow, Latency-sensitive
>       transport with hot stand by)
>           o [Question: how are these supported? Is a negotiation
>             mechanism needed?]            
> 
> Security
> 
> ======
>     * exchange a token in the initial SYN for the MPTCP connection, and
>       include the token when subflows /paths are added to the connection
>           o [Question: Is the same token used whether the sender or
>             receiver (of the MPTCP connection) adds the subflow? Is the
>             same technique used for removing subflows? And closing
>             connections, ie DATA FIN?]
>     * security mechanisms will not interfere with end-to-end
>       authentication etc and will be compatible with legacy middleboxes

The last bullet is difficult because some legacy middleboxes will not
allow unknown TCP options.

I don't know anything about modularity :-)

Thanks ... Scott


> Modularity
> 
> ========
> 
> ·          the architecture has 2 components, multipath scheduler & path
> manager – meaning that improved /different modules of each can be
> slotted in
> 
> o         [Comment: it is unclear from the Architecture i-d how the
> congestion control & protocol i-ds map to these components; some of the
> text (strangely?) appears in a section about implementation]
> 
> o         [Question: what are the mechanisms for evolvability? How is it
> negotiated which new module (for congestion control or path manager) to
> use?]
> 
> o         [Question: this would seem to imply we need to define an
> interface between the modules?]
> 
> ·          there is a default path manager module, meaning it is the
> MUST fall-back option                                                
> 
> o         [Comment: the charter restricts us - the path manager we work
> on will distinguish paths by multiple addresses]