Re: [multipathtcp] High-level design decisions /architecture
"Ford, Alan" <alan.ford@roke.co.uk> Tue, 03 November 2009 22:03 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 8376328B56A for <multipathtcp@core3.amsl.com>; Tue, 3 Nov 2009 14:03:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.398
X-Spam-Level:
X-Spam-Status: No, score=-3.398 tagged_above=-999 required=5 tests=[AWL=0.201, 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 chEnMW-mDcBD for <multipathtcp@core3.amsl.com>; Tue, 3 Nov 2009 14:03:46 -0800 (PST)
Received: from rsys001x.roke.co.uk (rsys001x.roke.co.uk [193.118.201.108]) by core3.amsl.com (Postfix) with ESMTP id A0ECE3A6831 for <multipathtcp@ietf.org>; Tue, 3 Nov 2009 14:03:45 -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 nA3N3p8L018595; Tue, 3 Nov 2009 23:03:51 GMT
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, 03 Nov 2009 22:03:56 -0000
Message-ID: <2181C5F19DD0254692452BFF3EAF1D6808C8517F@rsys005a.comm.ad.roke.co.uk>
In-Reply-To: <3c3e3fca0911031128j4ae1b0a1vcc73f370ebb7d773@mail.gmail.com>
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Thread-Topic: [multipathtcp] High-level design decisions /architecture
Thread-Index: Acpcu+OTMGXXzzykQ3m97i5oNo3VEQAE+pow
References: <4A916DBC72536E419A0BD955EDECEDEC06363A62@E03MVB1-UKBR.domain1.systemhost.net><3c3e3fca0911021328h2ef65493v9f0290f384f7b800@mail.gmail.com><4AF04585.2050700@gmail.com> <3c3e3fca0911031128j4ae1b0a1vcc73f370ebb7d773@mail.gmail.com>
From: "Ford, Alan" <alan.ford@roke.co.uk>
To: William Herrin <bill@herrin.us>, multipathtcp@ietf.org
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 22:03:47 -0000
Hi Bill, all, > On Tue, Nov 3, 2009 at 11:00 AM, Scott Brim <scott.brim@gmail.com> wrote: > > My biggest con is if your destination is multiply connected behind two > > non-synchronized intrusion prevention devices. > > Hi Scott, > > I thought that was one of the pros of subflows? Since each subflow is > its own 2-way TCP connection between two specific addresses they can > interact with middleboxes independently without requiring the > middleboxes to talk to each other? > > Or am I missing something? I think Scott's concern is with an IDS that may look at traffic which does not behave maliciously until it is spread across multiple subflows, thus requiring the IDS to do some correlation between (what it sees as) multiple traffic flows. But I'm sure Scott can be more specific... > On Tue, Nov 3, 2009 at 11:55 AM, Joe Touch <touch@isi.edu> wrote: > > Scott Brim wrote: > >> Joe, that's just not necessary except for legacy endpoint stacks. See > >> the iPhone and "connectByName". If the API revolves around a connection > >> ID, regardless of underlying addresses, then IP addresses can come and > >> go as they with as long as the transport layer has some mechanism of > >> maintaining session authenticity and continuity. > > > > This is fine if you're defining a new transport protocol. TCP *defines* > > a connection by the socket pair. If that socket pair disappears and you > > keep the connection up, I would argue you need to use a different > > protocol number because you've seriously changed the semantics. > > Hi Joe, > > I'll stake out a middle ground on this one. > > On the one hand, this entire exercise is academic if we don't keep the > connection up when the original address pair fails. The high-level > purpose of something like MPTCP is to break TCP's dependence on IP > address stability. So, you're right: we've seriously changed the > semantics of the TCP connection. > > On the other hand, the vast majority of TCP applications won't care > about the change in semantics. If it's possible to improve these apps' > capability without requiring the developers to touch them again, > that's a plus that's hard to argue against. I'd definitely agree with those two points. > If you accept the preceding two points, it leaves an open question: > what do we do about the apps which *do* depend on the non-MP > semantics? My druthers here are: first and foremost be honest, and > second: do what I say; don't try to guess what I mean. > > Where the old API can't accurately present what's going on, it should > offer a "no information" response, not an approximate response. [snip] > I tend to think that has to be the result as well. But if so then we > should avoid offering faulty information via the APIs. That is, don't > identify the connection by it's original IP address pair. If an > old-api application cares what the address pair is but has been > incompatibly instructed to use MPTCP, help it fail quickly rather than > giving it a stochastic success rate. > > This means that explicitly binding the local address should implicitly > turn MPTCP off. It also means calls like getpeername and getsockname > should return an error or zeroed values when MPTCP is enabled so that > we explicitly notify the application that we can't provide accurate > information. I agree with the principle behind all of that. However, I do have a concern that recommending APIs return a null value in such a case may itself be overloading an error signal to an application. I would hope that applications should be able to cope with such a return value, but it is unlikely that all will. It may be the lesser of all evils, however. > On Tue, Nov 3, 2009 at 2:37 PM, Ford, Alan <alan.ford@roke.co.uk> wrote: > >> What's wrong > >> with starting all TCP connections in non-MP mode and allowing the > >> connection's initiator to request MPTCP starting with any packet that > >> expects an ACK? > > > > I'm intrigued with your suggestion, though. I see your point that there > > may not be any critical reason why this information should be known at > > the beginning of a session. I can't immediately think of any technical > > reason why doing it later in a session wouldn't work. But it would need > > further thought. > > Hi Alan, > > My druthers would be for an API and/or system tunable delay before > MPTCP starts up so that very short lived TCP connections don't suffer > any new overhead. That's a very good point, actually. One of my long-standing concerns has been how to best cope with applications that only need short-lived sessions, and don't have the extended API to express it. Another alternative could be a system-wide threshold for traffic before kicking in multipath. > The only downside that jumps out at me is that if a connection is > eligible for MPTCP we can't report to the application that the > connection definitely isn't MPTCP. Yes. And it also takes the initial decision to use MPTCP away from the initiating endpoint (not necessarily a bad idea, just something that changes what one may expect a transport protocol's behaviour to be). > >> 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] > > Whoops, missed this one on the first read through. > > Retransmit is a problem. If retransmit is strictly independent then > the unexpected collapse of any subflow kills the entire connection. > That reduces overall TCP reliability to the product of each path's > reliability. Ah, I may have read that point wrong. What we have in the design as it stands is that, once a segment of data is transmitted on a subflow, that segment of subflow sequence space must only be used for that data. That does not, however, preclude also sending the same data on another subflow. The data-level sequence numbering will permit correct reassembly at the receiver, and this will ensure reliability and survivability over failure. > Even if we don't withdraw a segment from a subflow once it has been > assigned, we need to be able to send another copy in a different > subflow should the first subflow stall. Whole can of worms waiting for > us there. Ah, well, that's kinda what I was describing above. What does your can of worms contain? Regards, Alan
- [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