Re: [multipathtcp] High-level design decisions /architecture
"Ford, Alan" <alan.ford@roke.co.uk> Tue, 03 November 2009 18:35 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 61DF128C182 for <multipathtcp@core3.amsl.com>; Tue, 3 Nov 2009 10:35:33 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.196
X-Spam-Level:
X-Spam-Status: No, score=-3.196 tagged_above=-999 required=5 tests=[AWL=0.402, BAYES_00=-2.599, HTML_MESSAGE=0.001, 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 JW6j1KQ6G4Kc for <multipathtcp@core3.amsl.com>; Tue, 3 Nov 2009 10:35:22 -0800 (PST)
Received: from rsys002x.roke.co.uk (rsys002x.roke.co.uk [193.118.201.109]) by core3.amsl.com (Postfix) with ESMTP id DCB4028C137 for <multipathtcp@ietf.org>; Tue, 3 Nov 2009 10:35:20 -0800 (PST)
Received: from rsys005a.comm.ad.roke.co.uk ([193.118.193.85]) by rsys002x.roke.co.uk (8.13.1/8.13.1) with ESMTP id nA3JZWag001104; Tue, 3 Nov 2009 19:35:32 GMT
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01CA5CB4.721D1B1D"
Date: Tue, 03 Nov 2009 18:35:40 -0000
Message-ID: <2181C5F19DD0254692452BFF3EAF1D6808C85177@rsys005a.comm.ad.roke.co.uk>
In-Reply-To: <4A916DBC72536E419A0BD955EDECEDEC06363A62@E03MVB1-UKBR.domain1.systemhost.net>
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Thread-Topic: [multipathtcp] High-level design decisions /architecture
Thread-Index: Acpb5JtVyCJMgKRdQLqhkxWfqx2wUQAybiqw
References: <4A916DBC72536E419A0BD955EDECEDEC06363A62@E03MVB1-UKBR.domain1.systemhost.net>
From: "Ford, Alan" <alan.ford@roke.co.uk>
To: philip.eardley@bt.com, multipathtcp@ietf.org
X-roke-co-uk-MailScanner-ID: nA3JZWag001104
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
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:35:33 -0000
Hi Phil, all, Some comments inline. Thing is, there are quite a large scope of topics ranging from "architecture" to "high-level design decisions". It is quite feasible to have fixed architectural components while high-level design can be flexible. This not necessarily the same as "detailed design"! From: multipathtcp-bounces@ietf.org [mailto:multipathtcp-bounces@ietf.org] On Behalf Of philip.eardley@bt.com Sent: 02 November 2009 17:48 To: multipathtcp@ietf.org Subject: [multipathtcp] High-level design decisions /architecture Hi In order to help the process of reaching consensus on the high-level design decisions /architecture, we have gone through the current set of I-Ds to identify items that seem like they may fall into the category of high-level design decisions - see below. Note: this list is not to meant to imply our support or non-support of these items (except where our charter requires our support!); the purpose is to identify what needs to be discussed. Please shout if there's something we misunderstood or missed. Please let the WG know your opinions on these items - especially if your disagree with any, have a potential alternative, or think something is part of 'detailed design' and not 'high-level design'. Thanks Phil & Yoshifumi Protocol-related ============ * IPv4 & IPv6 will have the same high-level design * [Comment: the Charter implies both v4 & v6 are in scope] [Alan: Agreed] * The MPTCP connection is identified, from an apps perspective, by the addresses associated with the original path (even if that subflow /path closes) [Alan: This is still a contentious issue. If the new MPTCP API is in use, this issue - as a concept - does not really exist. There is a connection identifier, there are sets of addresses, etc. This is talking about the legacy case, and what happens if an application later queries a socket (getsockname and getpeername). I can see Bill's and Joe's arguments here of where problems could occur. I think, however, that the problems that may occur with returning the original addresses are less than any other way.] * 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 [Alan: Yes, I think this is an important high-level decision] * 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 * [Comment: this is in our charter] * Either end of the MPTCP connection can add or remove paths to/from the MPTCP connection * [Comment / Question: this seemed a bit unclear in the protocol i-d, but is presumably required?] [Alan: Yes, absolutely. Adding paths and signalling new addresses are also potentially separate to permit flexibility with middleboxes/firewalls/etc.] * Subflow end point definition * [Question: Should we allow subflows in a single MPTCP connection to have different ports?] [Alan: Yes. By default I would expect implementations to go for the same ports so as to maximise the chances of getting through firewall/middleboxes, but there is no technical reason why it could not be used between any ports. The draft specifies the mapping that an endpoint must have.] 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 * 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 * [Question: would both ends need the extended API, with a fall-back if not?] [Alan: No, the extended API is about signalling preferences to, and getting information from, the local implementation. If it did involve anything happening on the wire, this would simply be triggering the operation of existing features.] * [Comment: presumably the actual features of the extended API are outside the initial high-level design decisions] [Alan: Yes, although the use cases that drive the API decisions may also help at a high level.] * congestion control state is shared among application-visible transport instances (eg multiple HTTPs between the same pair of hosts) [Alan: Huh?] * 3 application profiles are mentioned (Bulk data transport, Latency-sensitive transport with overflow, Latency-sensitive transport with hot stand by) * [Question: how are these supported? Is a negotiation mechanism needed?] [Alan: TBD ;-) The sender can control much of this; expressing policy to/from the receiver is one of the key open issues.] Security ====== * exchange a token in the initial SYN for the MPTCP connection, and include the token when subflows /paths are added to the connection * [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?] [Alan: in the current design (very much open to input of course), the sender and the receiver both have independent, locally unique tokens. Aside from the initial handshake, where the local token is used, all future token uses (currently limited to opening new subflows) are the remote token. Removing subflows is just a FIN on the subflow, or signalled via options if the address is lost. Closing connections also does not use tokens. We are clear that this is a very minimal handshake mechanism, simply seeking to be no worse than regular TCP. More secure mechanisms are FFS.] * security mechanisms will not interfere with end-to-end authentication etc and will be compatible with legacy middleboxes Modularity ======== * the architecture has 2 components, multipath scheduler & path manager - meaning that improved /different modules of each can be slotted in [Alan: This seems to be causing some concern with people as to whether this belongs in an "architecture" document. Personally, I see it as part of the "framework" through which the relevant components of any Multipath TCP could be implemented. It is a way of thinking about the functional separation required to allow modularity.] 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] [Alan: Will be ironed out in due course - although the congestion control clearly lives in the scheduler, there are also some protocol components there.] o [Question: what are the mechanisms for evolvability? How is it negotiated which new module (for congestion control or path manager) to use?] [Alan: I would have thought that kind of decision is entirely out of scope for a high-level framework, and even for detailed API decisions. This is intended entirely as implementation guidance and was not written with the intent for people to plug-and-play different modules.] 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] [Alan: Sure, but that doesn't prevent us designing an evolvable framework so that different path managers could be used with much of the rest of the protocol having minimal changes.]
- [multipathtcp] High-level design decisions /archi… philip.eardley
- Re: [multipathtcp] High-level design decisions /a… marcelo bagnulo braun
- Re: [multipathtcp] High-level design decisions /a… William Herrin
- Re: [multipathtcp] High-level design decisions /a… marcelo bagnulo braun
- Re: [multipathtcp] High-level design decisions /a… William Herrin
- Re: [multipathtcp] High-level design decisions /a… Joe Touch
- Re: [multipathtcp] High-level design decisions /a… Joe Touch
- Re: [multipathtcp] High-level design decisions /a… Mark Handley
- Re: [multipathtcp] High-level design decisions /a… Joe Touch
- Re: [multipathtcp] High-level design decisions /a… Lars Eggert
- Re: [multipathtcp] High-level design decisions /a… Yoshifumi Nishida
- [multipathtcp] This shim6 part of the answer (was… marcelo bagnulo braun
- [multipathtcp] The MPTCP part (was Re: High-level… marcelo bagnulo braun
- Re: [multipathtcp] High-level design decisions /a… marcelo bagnulo braun
- Re: [multipathtcp] High-level design decisions /a… Scott Brim
- Re: [multipathtcp] High-level design decisions /a… Scott Brim
- Re: [multipathtcp] High-level design decisions /a… Scott Brim
- Re: [multipathtcp] High-level design decisions /a… Joe Touch
- Re: [multipathtcp] High-level design decisions /a… Joe Touch
- Re: [multipathtcp] High-level design decisions /a… Joe Touch
- Re: [multipathtcp] High-level design decisions /a… Costin Raiciu
- Re: [multipathtcp] High-level design decisions /a… Joe Touch
- Re: [multipathtcp] High-level design decisions /a… Mark Handley
- Re: [multipathtcp] High-level design decisions /a… Costin Raiciu
- Re: [multipathtcp] High-level design decisions /a… Costin Raiciu
- Re: [multipathtcp] High-level design decisions /a… Ford, Alan
- Re: [multipathtcp] High-level design decisions /a… Ford, Alan
- Re: [multipathtcp] High-level design decisions /a… Ford, Alan
- Re: [multipathtcp] High-level design decisions /a… Scott Brim
- Re: [multipathtcp] High-level design decisions /a… marcelo bagnulo braun
- Re: [multipathtcp] High-level design decisions /a… William Herrin
- Re: [multipathtcp] High-level design decisions /a… Joe Touch
- Re: [multipathtcp] High-level design decisions /a… Joe Touch
- Re: [multipathtcp] High-level design decisions /a… Yoshifumi Nishida
- Re: [multipathtcp] High-level design decisions /a… Joe Touch
- Re: [multipathtcp] High-level design decisions /a… Joe Touch
- Re: [multipathtcp] High-level design decisions /a… Joe Touch
- Re: [multipathtcp] High-level design decisions /a… Mark Handley
- Re: [multipathtcp] High-level design decisions /a… Ford, Alan
- Re: [multipathtcp] High-level design decisions /a… Ford, Alan
- Re: [multipathtcp] High-level design decisions /a… Yoshifumi Nishida
- Re: [multipathtcp] High-level design decisions /a… Costin Raiciu
- Re: [multipathtcp] High-level design decisions /a… philip.eardley
- Re: [multipathtcp] High-level design decisions /a… Lars Eggert
- Re: [multipathtcp] High-level design decisions /a… William Herrin
- Re: [multipathtcp] High-level design decisions /a… Yoshifumi Nishida
- Re: [multipathtcp] High-level design decisions /a… Scott Brim
- Re: [multipathtcp] High-level design decisions /a… Costin Raiciu
- Re: [multipathtcp] High-level design decisions /a… Yoshifumi Nishida
- Re: [multipathtcp] High-level design decisions /a… Joe Touch
- Re: [multipathtcp] High-level design decisions /a… William Herrin
- Re: [multipathtcp] High-level design decisions /a… Joe Touch
- Re: [multipathtcp] High-level design decisions /a… William Herrin
- Re: [multipathtcp] High-level design decisions /a… Joe Touch
- Re: [multipathtcp] High-level design decisions /a… William Herrin
- Re: [multipathtcp] High-level design decisions /a… Joe Touch