Re: [multipathtcp] AD Review: draft-ietf-mptcp-architecture-03
"Ford, Alan" <alan.ford@roke.co.uk> Tue, 11 January 2011 10:57 UTC
Return-Path: <prvs=699273c739=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 A595928C26E for <multipathtcp@core3.amsl.com>; Tue, 11 Jan 2011 02:57:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.395
X-Spam-Level:
X-Spam-Status: No, score=-3.395 tagged_above=-999 required=5 tests=[AWL=0.204, 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 GI0XiPwh+1gz for <multipathtcp@core3.amsl.com>; Tue, 11 Jan 2011 02:57:17 -0800 (PST)
Received: from gse-mta-29.emailfiltering.com (gse-mta-29-tx.emailfiltering.com [194.116.198.160]) by core3.amsl.com (Postfix) with ESMTP id 9564828C100 for <multipathtcp@ietf.org>; Tue, 11 Jan 2011 02:57:16 -0800 (PST)
Received: from salt-ext.roke.co.uk ([109.207.29.2]) by gse-mta-29.emailfiltering.com with emfmta (version 4.6.0.72) vanilla id 254135784 for multipathtcp@ietf.org; a788f95d8b4e9062; Tue, 11 Jan 2011 10:59:32 +0000
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Tue, 11 Jan 2011 10:59:30 -0000
Message-ID: <2181C5F19DD0254692452BFF3EAF1D680BF532BD@rsys005a.comm.ad.roke.co.uk>
In-Reply-To: <01157F64-007A-4D31-8C5D-2119BD701A2E@nokia.com>
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Thread-Topic: [multipathtcp] AD Review: draft-ietf-mptcp-architecture-03
Thread-Index: Acud4mZPuFgqb0b/S7u3hMMPARdX+wTmmL4Q
References: <01157F64-007A-4D31-8C5D-2119BD701A2E@nokia.com>
From: "Ford, Alan" <alan.ford@roke.co.uk>
To: Lars Eggert <lars.eggert@nokia.com>, multipathtcp@ietf.org
Subject: Re: [multipathtcp] AD Review: draft-ietf-mptcp-architecture-03
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, 11 Jan 2011 10:57:18 -0000
Thanks for your comments, Lars. A new version addressing them is available at: http://www.ietf.org/id/draft-ietf-mptcp-architecture-04.txt Details of changes inline... > -----Original Message----- > From: multipathtcp-bounces@ietf.org [mailto:multipathtcp-bounces@ietf.org] On > Behalf Of Lars Eggert > Sent: 17 December 2010 12:02 > To: multipathtcp@ietf.org Mailing List > Subject: [multipathtcp] AD Review: draft-ietf-mptcp-architecture-03 > > Summary: good to go. > > I'll start the IETF last call. Please take the comments below as last-call > comments. I will make this last call longer than normal, due to the holiday > season. > > Lars > > > Section 1., paragraph 2: > > By the application of resource pooling[3], these available resources > > Nit: s/pooling[3]/pooling [3]/ (also check other reference citations > for a missing space before them) All fixed I think. > Section 1.2., paragraph 0: > > 1.2. Terminology > > I'd be somewhat useful to reorder the terms such that definitions > appear before they are used, as much as possible. This is slightly tricky due to interdependence, but "Multipath TCP" moved to the top. > Section 1.2., paragraph 2: > > Path Identifier: Within the context of a multi-addressed multipath > > TCP, a path is defined by the source and destination (address, > > port) pairs (i.e. a 4-tuple). > > Why is a Path identified by something that includes port numbers? > Because of ECMP? Yes, this is explained in Section 5.5. Quite why this definition was still there I don't know, I've removed it - it adds nothing to clarity being this early. > Section 1.2., paragraph 6: > > Subflow: A flow of TCP packets operating over an individual path, > > which forms part of a larger Multipath TCP connection. > > s/packet/segment/ (please check this throughout the document, "packet" > is often used where "segment" is meant) All changed where appropriate. > Section 1.3., paragraph 5: > > Furthermore, the paths through > > the Internet may be interrupted by any number of middleboxes > > including NATs and Firewalls. > > Middleboxes don't really "interrupt" a path. Maybe rephrase with "are > present"? Difficult wording to get right... text changed to: Furthermore, the paths through the Internet often do not provide a pure end-to-end service, and instead may be affected by middleboxes such as NATs and Firewalls. > Section 1.3., paragraph 6: > > Finally, although the diagram refers > > to the Internet, Multipath TCP may be used over any network where > > there are multiple paths that could be used concurrently. > > Not sure if there is much value in mentioning this. (Plus, we do > assume an _IP_ network.) Removed. > Section 2.2.1., paragraph 3: > > A multipath-capable equivalent of TCP SHOULD retain backward > > compatibility with existing TCP APIs, so that existing applications > > can use the newer transport merely by upgrading the operating systems > > of the end-hosts. > > Any reason why this is not a MUST? I think this is critical; otherwise > we'd already have seen widespread use of SCTP. Only compatibility with the most commonly used features is really required. Anyway, text changed. > Section 2.2.2., paragraph 1: > > In the traditional Internet architecture, network devices operate at > > the network layer and lower layers, with the layers above the network > > layer instantiated only at the end-hosts. While this architecture, > > shown in Figure 2, was initially largely adhered to, this layering no > > longer reflects the "ground truth" in the Internet with the > > proliferation of middleboxes[8]. Middleboxes routinely interpose on > > the transport layer; sometimes even completely terminating transport > > connections, thus leaving the application layer as the first real > > end-to-end layer, as shown in Figure 3. > > And even application level protocols often define roles for > intermediaries, e.g., SIP and HTTP. These are application-level intermediaries, however, which is a bit out of scope for MPTCP. The section is concentrating on middleboxes that exist at the transport layer. I couldn't find an appropriate way of inserting this into this section without going off on a non-MPTCP-relevant tangent; I hope you're ok with it still left out. > Section 5.2., paragraph 6: > > Therefore, to provide a fully robust multipath TCP solution, MPTCP > > SHOULD feature explicit connection-level acknowledgements, in > > After all of this argumentation in the previous paragraphs, why is > this not a MUST? Esp. since in the first paragraph you already say > "MPTCP features..." which in essence is a MUST. It doesn't need to be a MUST if the implementation can be sure of behaviour of the network and endpoints. So I've changed it to: "MPTCP for use on the public Internet MUST feature explicit connection-level acknowledgements". > Section 5.3., paragraph 6: > > The resulting buffer size should be small enough for practical use. > > However, there may be extreme cases where fast, high throughput paths > > (e.g. 100Mb/s, 10ms RTT) are used in conjunction with slow paths > > (e.g. 1Mb/s, 1000ms RTT). In that case the required receive buffer > > would be 12.5MB, which is likely too big. In these cases a Multipath > > TCP scheduler SHOULD use only the fast path, potentially falling back > > to the slow path if the fast path fails. > > Please rephrase the last sentence so that it not specific to the > example given, since we're trying to state a general rule here. Maybe: > "it may be prudent to only use some of the fastest available paths for > the MPTCP connection" or something like that Now reads: In extreme cases such as this example, it may be prudent to only use some of the fastest available paths for the MPTCP connection, potentially using the slow path(s) for backup only. > Section 5.4., paragraph 3: > > The MPTCP protocol design will, however, use TCP Options for this > > additional signalling. This has been chosen as the mechanism most > > fitting in with the goals as specified in Section 2. > > Aside: Instead of using several different TCP Option numbers, I wonder > if we can use one TCP Option Number for MPTCP and disambiguate based > on the Length field what kind of MPTCP option we have? (Assuming all > our different option kinds have different lengths...) Seb's already answered that one - it's a bit limiting. However, to save on option numbers, a sub-code could be used (at the cost of an additional octet). But this is out of scope for the architecture, anyway (it only says that Options will be used, not how they'll be used). > Section 5.5., paragraph 1: > > Currently, the network does not expose multiple paths between hosts. > > This isn't really capturing it. The network *does* expose this, *if* > the paths begin and end at different IP addresses. I think you mean > that the network doesn't expose the availability of path diversity *in > the network* for paths between the same two IP addresses. Now reads: Currently, the network does not expose path diversity between pairs of IP addresses. In order to achieve path diversity from today's IP networks, in the typical case MPTCP uses multiple addresses at one or both hosts to infer different paths across the network. > Section 5.5., paragraph 4: > > Multiple different (source, destination) address pairs will thus be > > used as path selectors in most cases. Each path will be identified > > by a TCP 4-tuple (i.e. source address, destination address, source > > port, destination port), however, which can allow the extension of > > MPTCP to use such 4-tuples as path selectors. This will allow hosts > > to use MPTCP to load balance to different ports, for example if the > > network routes different ports over different paths (which may be the > > case with technologies such as Equal Cost MultiPath (ECMP) routing > > [16]). > > So actually, you use a five-tuple, it's just that the protocol number > component is always 6 (TCP) in our case. There are ECMP schemes where > the resulting paths are different when only the protocol number > component is different. I'd prefer if we could talk about five-tuples > and path IDs, since paths are not usually something that is specific > to one transport protocol. (And you actually do already talk about > five-tuples in the next section...) Fair enough... All changed to "five-tuple". > Section 5.5., paragraph 6: > > The modularity of path management will permit alternative mechanisms > > to be employed if appropriate in the future. > > What modularity of path management? Nothing in this section so far > talks about modularity. Suggest to drop this paragraph. I was going to drop it, but then thought it makes an important point, just badly worded. Now reads: The path management is a separate function from the packet scheduling, subflow interface, and congestion control functions of MPTCP, as documented in Section 4. As such it would be feasible to replace this IP-address-based design with an alternative path selection mechanism in the future, with no significant changes to the other functional components. > Section 5.8., paragraph 11: > > > o The desire to support a 'break-before-make' (as well as a 'make- > > before-break') approach to adding subflows implies that a host > > cannot rely on using a pre-existing subflow to support the > > addition of a new one. > > But I don't think we want to support "unlimited" break-before-make, > i.e., just because we had the connection up yesterday doesn't mean I > should still be able to join a new first flow into it today. In other > words, we want to support break-before-make for some limited amount of > break time only. I've added "time-limited", but of course it's entirely up to implementations, just like retaining TCP state today. However long it is, it doesn't change the implication that's stated. > Section 12.2., paragraph 7: > > [9] Carpenter, B., "Internet Transparency", RFC 2775, > > February 2000. > > Unused Reference: '9' is defined on line 1108, but no explicit > reference was found in the text I think the nits tool is broken :) (Adding spaces fixed that one, it's always been there on Page 8). I've also addressed Cullen's two minor comments by adding the following to "Network Compatibility": Middleboxes may also cause some TCP features to be able to exist on one subflow but not another. Typically these will be at the subflow level (such as SACK [10]) and thus do not affect the connection-level behaviour. In the future, any proposed TCP connection-level extensions should consider how they can co-exist with MPTCP. And the following to Interactions with Applications: TCP features the ability to send out-of-band ("Urgent") data. Although the use of Urgent data is not recommended (see [20]), MPTCP SHOULD still support this feature if requested by an application. An MPTCP implementation SHOULD send the Urgent data on one subflow of the MPTCP connection; it MAY choose this to be the best performing subflow. Thanks, Alan
- [multipathtcp] AD Review: draft-ietf-mptcp-archit… Lars Eggert
- Re: [multipathtcp] AD Review: draft-ietf-mptcp-ar… Sébastien Barré
- Re: [multipathtcp] AD Review: draft-ietf-mptcp-ar… Lars Eggert
- Re: [multipathtcp] AD Review: draft-ietf-mptcp-ar… Ford, Alan