Re: [multipathtcp] High-level design decisions /architecture

Joe Touch <touch@ISI.EDU> Tue, 10 November 2009 00:43 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 21A3E3A69A4 for <multipathtcp@core3.amsl.com>; Mon, 9 Nov 2009 16:43:34 -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=[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 lDqaQ0rzKLqm for <multipathtcp@core3.amsl.com>; Mon, 9 Nov 2009 16:43:33 -0800 (PST)
Received: from nitro.isi.edu (nitro.isi.edu [128.9.208.207]) by core3.amsl.com (Postfix) with ESMTP id 3FF8B3A6999 for <multipathtcp@ietf.org>; Mon, 9 Nov 2009 16:43:33 -0800 (PST)
Received: from [133.93.24.140] (host-24-140.meeting.ietf.org [133.93.24.140]) (authenticated bits=0) by nitro.isi.edu (8.13.8/8.13.8) with ESMTP id nAA0gsW6019677 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Mon, 9 Nov 2009 16:42:56 -0800 (PST)
Message-ID: <4AF8B70E.90908@isi.edu>
Date: Mon, 09 Nov 2009 16:42:54 -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>
In-Reply-To: <3c3e3fca0911041219o5ddea192h297afa82882992e3@mail.gmail.com>
X-Enigmail-Version: 0.96.0
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-MailScanner-ID: nAA0gsW6019677
X-ISI-4-69-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 00:43:34 -0000

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi, Bill,

Sorry; this appears to have found a dusty corner of my mailbox. Here's a
late reply...

William Herrin wrote:
> On Tue, Nov 3, 2009 at 5:20 PM, Joe Touch <touch@isi.edu> wrote:
>> TCP negotiates all options during the SYN - that's the only 'handshake'
>> there is. TCP does not define option negotiation after connection
>> establishment.
>>
>> I.e., you can decide to start the separate connections later, but you
>> need to negotiate support for the option during the SYN.
> 
> Hi Joe,
> 
> I assume that's a convention rather than a hard protocol requirement.
> Something previous folks working in the space have deemed a "wise
> idea" rather than a "all these things will break if we don't" kind of
> thing, yes?

It's an artifact of how TCP works.

> Is there a good discussion on this somewhere so I can read up on the
> rationale that brought it into being?

Since it's an artifact, I don't think there is. The issue is that
unknown options are ignored (as per RFC1122). The only time when you can
find out if an option is supported in a way that you know will preceded
all other segments is to put it in the SYN.

If you put it in a later segment, you don't know when the segment will
be received. Here's the problem, when A sends to B (assuming the
connection is already open):

	A sends segment #223 with option X
		presuming this is the first segment A sends
		with option X

Does A stop sending segments beyond 223 until option X is ACK'd? This
violates window processing. If A sends segment 224 with option X, and B
receives segment 224 before 223, it MUST ignore option X.

So you can't put in a new option that has a required effect or is
confirmed; there's no way to 'stop the stream' until the endpoints sync.
The only times the endpoints sync is during the SYN.

Joe
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)

iEYEARECAAYFAkr4tw4ACgkQE5f5cImnZrtwUQCePEad3ORuBWIHvD4BX60FbwIC
k2QAnAm1YF4AQj0C627K0T58UMmH/Po+
=w476
-----END PGP SIGNATURE-----