Re: [multipathtcp] High-level design decisions /architecture
Joe Touch <touch@ISI.EDU> Tue, 10 November 2009 21:12 UTC
Return-Path: <touch@ISI.EDU>
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 D6A9C28C1EC for <multipathtcp@core3.amsl.com>; Tue, 10 Nov 2009 13:12:45 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[AWL=0.000, BAYES_00=-2.599]
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 GlXaPiuSMkNV for <multipathtcp@core3.amsl.com>; Tue, 10 Nov 2009 13:12:44 -0800 (PST)
Received: from vapor.isi.edu (vapor.isi.edu [128.9.64.64]) by core3.amsl.com (Postfix) with ESMTP id 88A523A68A2 for <multipathtcp@ietf.org>; Tue, 10 Nov 2009 13:12:44 -0800 (PST)
Received: from [133.93.113.124] (host-113-124.meeting.ietf.org [133.93.113.124]) (authenticated bits=0) by vapor.isi.edu (8.13.8/8.13.8) with ESMTP id nAALCepD009972 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Tue, 10 Nov 2009 13:12:43 -0800 (PST)
Message-ID: <4AF9D747.5080707@isi.edu>
Date: Tue, 10 Nov 2009 13:12:39 -0800
From: Joe Touch <touch@ISI.EDU>
User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)
MIME-Version: 1.0
To: William Herrin <bill@herrin.us>
References: <4A916DBC72536E419A0BD955EDECEDEC06363A62@E03MVB1-UKBR.domain1.systemhost.net> <3c3e3fca0911021328h2ef65493v9f0290f384f7b800@mail.gmail.com> <2181C5F19DD0254692452BFF3EAF1D6808C85178@rsys005a.comm.ad.roke.co.uk> <4AF09EA5.9030308@isi.edu> <3c3e3fca0911041219o5ddea192h297afa82882992e3@mail.gmail.com> <4AF8B70E.90908@isi.edu> <3c3e3fca0911091918l27562923j5b1b7fd15461c04f@mail.gmail.com> <4AF8DDA7.9030108@isi.edu> <3c3e3fca0911101245y7db0aa21wab41a66834feef19@mail.gmail.com>
In-Reply-To: <3c3e3fca0911101245y7db0aa21wab41a66834feef19@mail.gmail.com>
X-Enigmail-Version: 0.96.0
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-ISI-4-43-8-MailScanner: Found to be clean
X-MailScanner-From: touch@isi.edu
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, 10 Nov 2009 21:12:45 -0000
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 William Herrin wrote: > On Mon, Nov 9, 2009 at 10:27 PM, Joe Touch <touch@isi.edu> wrote: >> That requires that options are processed on the data after ordered, as >> you note. However, TCP is an unordered protocol. >> >>> My first thought would be a three-part handshake. Request option X, >>> option X accepted, option X in effect. Requires that the receiver >>> understand that order is important after sending X accepted though. >> Right. How do you bury that handshake in an unordered, unreliable stream >> without halting it, though? > > Hi Joe, > > How about a 4-step handshake like this: > > Request option X, option X accepted, option X in effect (1), option X > in effect (2). > > When you receive X accepted, attach X1 to *every* outgoing packet > until you get an ack for everything up to and including the first X1 > packet. What happens to retransmitted packets that were first sent before you decided to set X? > Then start sending X2 in every outgoing packet until you get > an ack for any X2 packet. Then stop sending the X option on any packet > that isn't a retransmission of one where X1 or X2 was sent. > > At the receiver end: until you receive a packet with X2, only packets > with X1 or X2 have option X in effect. So now you have a problem. Some packets are handled as if option X is in effect, and some are not. These could arrive in any order. What if the option has something to do with the order in which the packets are ACKd? Or the order in which they're sent to the app? You now have essentially two separate data streams, so you need to reimplement buffering to handle the old stream as it was, and the new stream treats the option exchange as a SYN-SYN/ACK-ACK exchange. The issue is that the receiver cannot act on X until the handshake completes (it gets X2). None of the data with X1 in it can be processed until X2 is received. But this "processing" could mean ACKing too - you can't even ACK the data because the option could mean "ACK every four" or something like that. > After you see any packet with > X2, all subsequent packets have option X in effect regardless of the > presence of X1 or X2. Not packets sent before X was set at the source. Again, you have two separate streams now - the one before X, and the one after X2. The first is your current connection, which is essentially draining out. The second is your new connection - with X set - that is basically starting anew. At that point, it's going to be a LOT simpler to just treat this as a CLOSE and subsequent OPEN than to do this all inside a single connection. > Nobody pauses. Disagree - see above. > Options are processed in the order received. Disagree - see above. They can't be. > And you're > dealing with pretty trivial state changes on each end. Disagree - you now need another 11-state machine to talk about all the possible ways in which the "set X" operation can fail, and to avoid trying to negotiate another option while the first negotiation is going on. > One concern that jumps to mind is if the receiver gets a late copy of > an already received and acked segment where option X is not in effect. > What will the receiver do with the late packet? Let me narrow that a > bit: assuming option X does not affect the use of the TCP sequence > number in any way, what will the receiver do with a late copy of an > already received packet where it thinks X is in effect but in reality > X was not requested? I think at best that there would need to be a LOT of constraints on what the option could do. But I'm not sure there's a useful way even if that's true to make this work. > On the other hand, if option X has some other intrinsic value (such > has holding the multipath TCP connection ID for middleboxes to decode) > then you can just keep sending it in every packet which uses it for > the remainder of the connection instead of the fancy handshake. Options can add asynchronous information - which is how they're used now. They simply cannot add synchronized info - which is why they can't be used to negotiate new options - AFAICT. Joe -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (MingW32) iEYEARECAAYFAkr510cACgkQE5f5cImnZrtlpgCg7q4Dm/RtIcnNOfTkpPWlzini JVcAn0zJpg/7Nxgx+IPTucWKqr9R7llX =20o5 -----END PGP SIGNATURE-----
- [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