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

William Herrin <bill@herrin.us> Tue, 10 November 2009 20:45 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 4284C3A67E4 for <multipathtcp@core3.amsl.com>; Tue, 10 Nov 2009 12:45:22 -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 E77b4598qznT for <multipathtcp@core3.amsl.com>; Tue, 10 Nov 2009 12:45:21 -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 E0FE63A690C for <multipathtcp@ietf.org>; Tue, 10 Nov 2009 12:45:20 -0800 (PST)
Received: by ey-out-2122.google.com with SMTP id 9so100398eyd.51 for <multipathtcp@ietf.org>; Tue, 10 Nov 2009 12:45:42 -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:cc :content-type; bh=Wq1ouUUyVpchucaoRBgCFkk6mFU7NTdvGpAWvU+7tVI=; b=fUBEZ61j/20lMkZqqp4NAJKOoQ5UEJL2lwLGpHAYu/hk9ejTHyOtZSCWmKUYdzXNVf GDm/kC17vbgLpU6mklqHYM24pWpc/TEDMN8yN8d/Evmv6ypbxqt7MaubREtxogNwID+p v/ynLOosUX7vJDIOSRYZvaMyZ1LVFaVqAbuGU=
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:cc:content-type; b=d/xAZU6FwfYAk98n8s0CgJEx72B2QolS2z/2ctqzA8WE1td9XBYzaml/sUnUJUb8wa RThgoRm1AOLagFN4Jo42Nf8f5D0s8fo2FJxokq4dviGdkmhisoZvAn1kHfI6g8dja8xN HEI3/GvdZCl6+jRdHwYiOPDYExK+ZWl2fU1F4=
MIME-Version: 1.0
Sender: wherrin@gmail.com
Received: by 10.216.89.8 with SMTP id b8mr173227wef.180.1257885942653; Tue, 10 Nov 2009 12:45:42 -0800 (PST)
In-Reply-To: <4AF8DDA7.9030108@isi.edu>
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>
Date: Tue, 10 Nov 2009 15:45:42 -0500
X-Google-Sender-Auth: 68126215f049b44a
Message-ID: <3c3e3fca0911101245y7db0aa21wab41a66834feef19@mail.gmail.com>
From: William Herrin <bill@herrin.us>
To: Joe Touch <touch@isi.edu>
Content-Type: text/plain; charset="ISO-8859-1"
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 20:45:22 -0000

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. 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. After you see any packet with
X2, all subsequent packets have option X in effect regardless of the
presence of X1 or X2.

Nobody pauses. Options are processed in the order received. And you're
dealing with pretty trivial state changes on each end.

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?


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.

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