Re: [multipathtcp] High-level design decisions /architecture
William Herrin <bill@herrin.us> Tue, 03 November 2009 19:28 UTC
Return-Path: <wherrin@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 1F9003A68C8 for <multipathtcp@core3.amsl.com>; Tue, 3 Nov 2009 11:28:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.977
X-Spam-Level:
X-Spam-Status: No, score=-1.977 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622]
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 pKcTVGbZd3ZR for <multipathtcp@core3.amsl.com>; Tue, 3 Nov 2009 11:28:11 -0800 (PST)
Received: from ey-out-2122.google.com (ey-out-2122.google.com [74.125.78.26]) by core3.amsl.com (Postfix) with ESMTP id 842603A68A0 for <multipathtcp@ietf.org>; Tue, 3 Nov 2009 11:28:10 -0800 (PST)
Received: by ey-out-2122.google.com with SMTP id 25so728288eya.51 for <multipathtcp@ietf.org>; Tue, 03 Nov 2009 11:28:26 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:received:in-reply-to :references:date:x-google-sender-auth:message-id:subject:from:to :content-type; bh=REVz0qrESm0RVXHCcjxxERg4K2ZTHTfffSYHMMN0NcQ=; b=TMhS6TZ694Wje83K2spKeiRRduBRE7k/rOgIKV9+t24JMij4YCVcahPCq8Y4tX95m3 CiqoFESbaf/hKFnfdiIpIB0YIyqcgM5HdSZ/hwnjCNvom+5UFQVnequ2pywK0OvKFu3p 7KfmZvzS4P58x5DQSBoQjGWEbClZMQ5zsObFg=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:content-type; b=kRFj3emvBW0267ohYpqz8+gICYsBZEbzqJNdgZSQsHI89nmCONnqiHlZvrUuhv7cpK TvFU06RbT5iiXiFKbFJA1dTIIr+3ac5Qr6bC898WzuFrgB2Ri/LWAlAbT0/IuovAeDId 7j9i84QierSgTIxpZNxuO7gLTPpy1aDC9Zsk4=
MIME-Version: 1.0
Sender: wherrin@gmail.com
Received: by 10.216.90.65 with SMTP id d43mr164255wef.41.1257276506712; Tue, 03 Nov 2009 11:28:26 -0800 (PST)
In-Reply-To: <4AF04585.2050700@gmail.com>
References: <4A916DBC72536E419A0BD955EDECEDEC06363A62@E03MVB1-UKBR.domain1.systemhost.net> <3c3e3fca0911021328h2ef65493v9f0290f384f7b800@mail.gmail.com> <4AF04585.2050700@gmail.com>
Date: Tue, 03 Nov 2009 15:28:26 -0400
X-Google-Sender-Auth: 96ed2722ff7af73f
Message-ID: <3c3e3fca0911031128j4ae1b0a1vcc73f370ebb7d773@mail.gmail.com>
From: William Herrin <bill@herrin.us>
To: multipathtcp@ietf.org
Content-Type: text/plain; charset="ISO-8859-1"
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 19:28:12 -0000
On Tue, Nov 3, 2009 at 11:00 AM, Scott Brim <scott.brim@gmail.com> wrote: > William Herrin allegedly wrote on 11/02/2009 4:28 PM: >>> 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 >> >> I'm almost sold on the idea of subflows. Can you give me a run down on >> the pros and cons, particularly the cons? > > 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? 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. 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. On Tue, Nov 3, 2009 at 3:54 AM, Yoshifumi Nishida <nishida@sfc.wide.ad.jp> wrote: > From: William Herrin <bill@herrin.us> >>>> The MPTCP connection is identified, from an apps perspective, by the >>>> addresses associated with the original path (even if that subflow /path >>>> closes) > > I'm concerned about this idea. > > If the answer is C, protocols like FTP which initiate multiple TCP > > connections to the same IP address fail once an endpoint gives up its > > original address. That'll also impact web browsers which employ dns > > pinning. > > In case of ftp, the choice would be something like this? > > 1: we don't support this case. ftp will fail. > 2: ftp client/server performs getsockname() before port/pasv > to check its own active IP address. (But, we need to > define getsockname() should return active IP address instead > of original IP) > 3: Develop new ftp for MPTCP (using new API etc..) > > I personally prefer 1.. then might do 3 later.. Hi Yoshifumi, 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. > In case of dns pinning, I don't see any issues. DNS pinning means that the browser will indefinitely refuse to try a different IP address for new TCP connections to a server that it's running javascript for. This means that although the individual connections will succeed on the changed addresses, the web session overall will still fail. Not TCP's problem strictly speaking, but if we want MPTCP to be useful at a practical level we should consider how the dozen most common application categories (like browsers using HTTP and mail servers using SMTP) will interact with it. 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. 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. >> 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. 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. Regards, Bill Herrin -- William D. Herrin ................ herrin@dirtside.com bill@herrin.us 3005 Crane Dr. ...................... Web: <http://bill.herrin.us/> Falls Church, VA 22042-3004
- [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