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

"Ford, Alan" <alan.ford@roke.co.uk> Tue, 03 November 2009 18:37 UTC

Return-Path: <alan.ford@roke.co.uk>
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 0D85F3A6A4A for <multipathtcp@core3.amsl.com>; Tue, 3 Nov 2009 10:37:37 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.297
X-Spam-Level:
X-Spam-Status: No, score=-3.297 tagged_above=-999 required=5 tests=[AWL=0.302, BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
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 5-APMNlTyCqk for <multipathtcp@core3.amsl.com>; Tue, 3 Nov 2009 10:37:36 -0800 (PST)
Received: from rsys001x.roke.co.uk (rsys001x.roke.co.uk [193.118.201.108]) by core3.amsl.com (Postfix) with ESMTP id 93E4E3A6A48 for <multipathtcp@ietf.org>; Tue, 3 Nov 2009 10:37:35 -0800 (PST)
Received: from rsys005a.comm.ad.roke.co.uk ([193.118.193.85]) by rsys001x.roke.co.uk (8.13.1/8.13.1) with ESMTP id nA3Jbl7l031542; Tue, 3 Nov 2009 19:37:47 GMT
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
Date: Tue, 03 Nov 2009 18:37:56 -0000
Message-ID: <2181C5F19DD0254692452BFF3EAF1D6808C85179@rsys005a.comm.ad.roke.co.uk>
In-Reply-To: <4AEF781E.4070009@isi.edu>
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Thread-Topic: [multipathtcp] High-level design decisions /architecture
Thread-Index: AcpcHAjjtWotvElJTYmfoF5NK2atlAAl06BQ
References: <4A916DBC72536E419A0BD955EDECEDEC06363A62@E03MVB1-UKBR.domain1.systemhost.net> <4AEF781E.4070009@isi.edu>
From: "Ford, Alan" <alan.ford@roke.co.uk>
To: Joe Touch <touch@ISI.EDU>, philip.eardley@bt.com
X-roke-co-uk-MailScanner: Found to be clean
X-roke-co-uk-MailScanner-SpamCheck:
X-roke-co-uk-MailScanner-From: alan.ford@roke.co.uk
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 18:37:37 -0000

Hi Joe, all,

> >     * control of the MPTCP connection (as opposed to the subflows) is
> >       carried in TCP options, eg DATA FIN for closing an MPTCP connection
> 
> I disagree. The option stream is neither reliable or ordered, and so
> it's a bad idea to put state management there. If you want a control
> channel, open a separate connection IMO.

The current proposal contains quite a lot to meet the limitations of options. Specifically: Data Sequence Mapping is done so that a data-level sequence number does not have to appear exactly at the correct point; address management has no requirement to be reliable or in-order; and DATA FIN is applied to a FIN only.

> >     * 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?]
> 
> Depends on when the paths are created.
> 
> If they are created at SYN time, then it's OK IMO to develop support
> asymmetrically.
> 
> If they can be created once open, AFAICT TCP is memoryless w.r.t. who
> opened the connection, so I can't see why either side would have
> privileged rights (or could even tell).

Yes, indeed (from the TCP level). Plus, the idea of who opens the subflow (i.e. sends the SYN) may not be the same endpoint who has requested this to happen (see address management stuff). 

> >     * Subflow end point definition
> >           o [Question: Should we allow subflows in a single MPTCP
> >             connection to have different ports?]
> 
> Seems like you'd have to - or you have to coordinate port use on
> different addresses at a single endpoint constantly.

Yes, and we have a demuxing value (the token) anyway. However, for optimality it is proposed that the same ports are used on the same (and maybe different) addresses per connection.

> > Congestion algorithm
> >
> > ===============
> >
> >     * the goals are: [1] MPTCP is at least as good as TCP would be on
> >       the best subflow path; [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
> 
> These sound OK, though it might be useful to consider that [1] and [2]
> are requirements (IMO), where [3] is an optimization goal, and thus OK
> to break.

Interesting point - a narrow distinction but a valid one. There is certain linkage between [2] and [3], however, in that while it may be okay to break [3] you can't do it to the detriment of other users ([2]).

> > API
> >
> > ===
> >
> >     * no changes to existing apps are needed to use MPTCP; MPTCP uses
> >       the unaltered TCP socket API
> 
> I would say this in a way that flows into the next idea below better,
> e.g., "no changes are required to use MPTCP in its simplest mode".

Agreed.

> >     * There is an optional, extended API
> >           o [Question: would both ends need the extended API, with a
> >             fall-back if not?]
> 
> Seems like one end could want the extended API for explicit control of
> flows, but the other end doesn't need to care.

Yep.

> >           o [Comment: presumably the actual features of the extended API
> >             are outside the initial high-level design decisions]
> >     * congestion control state is shared among application-visible
> >       transport instances (eg multiple HTTPs between the same pair of
> >       hosts)
> 
> IMO (RFC2140, e.g.), yes ;-)
> 
> >     * 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?]
> 
> Seems at odds with the claims above for [1],[2],[3]. I.e., bulk
> transport seems compatible with all three, but latency-sensitive seems
> like it might not be compatible with any of these.

Latency-sensitive would still be compatible with [1] and [2] but is not so concerned with congestion sharing. Having said that, it would be likely that the least congested path is optimal for most cases of latency-sensitive transport!

Regards,
Alan