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

William Herrin <bill@herrin.us> Tue, 10 November 2009 22:12 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 215C23A68E4 for <multipathtcp@core3.amsl.com>; Tue, 10 Nov 2009 14:12: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 EvyiIlg0Ejib for <multipathtcp@core3.amsl.com>; Tue, 10 Nov 2009 14:12:21 -0800 (PST)
Received: from mail-ew0-f207.google.com (mail-ew0-f207.google.com [209.85.219.207]) by core3.amsl.com (Postfix) with ESMTP id 6AF563A680B for <multipathtcp@ietf.org>; Tue, 10 Nov 2009 14:12:20 -0800 (PST)
Received: by ewy3 with SMTP id 3so556365ewy.37 for <multipathtcp@ietf.org>; Tue, 10 Nov 2009 14:12:43 -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=5aDY0pS5L/4IFDwlngwzTC2J+hDrqLgHQv91JsDQEMI=; b=exs4M+0VP7IU/7Y4BZ7dadZIm8tkak80xaDwblGAqQo/CDl7JotcoPvbXv97VOuRE4 I7ZA39XD6X7t71Jv+zOJLwmKxeqdFb6KQ1aNZfimxg9uVcFGeAXO+aYnqEmAlZKQMhYT qkQaskvJukARNxuCfvfCMjVNS3bslsYF+Y+zA=
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=GSPdUnHFWFzf9Rmz7aYRobQaXXS0WMUjSPylp3EVPiAzys0Letz2ZPCqADi44Xg2Ro plvaG80N3nR17vW/UFqEv3AgsDipcdcw/pau5nFkpxgb5yBk+H4QgL0EfNoO5tAYDlu7 GLRdlTRiFd1emIysupMuuir/YSHx5n9uIYdrc=
MIME-Version: 1.0
Sender: wherrin@gmail.com
Received: by 10.216.91.5 with SMTP id g5mr219772wef.168.1257891163820; Tue, 10 Nov 2009 14:12:43 -0800 (PST)
In-Reply-To: <4AF9D747.5080707@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> <3c3e3fca0911101245y7db0aa21wab41a66834feef19@mail.gmail.com> <4AF9D747.5080707@isi.edu>
Date: Tue, 10 Nov 2009 17:12:43 -0500
X-Google-Sender-Auth: d4a3a610ebf0c27b
Message-ID: <3c3e3fca0911101412m78a9b95ay1b10e0a9787f200f@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 22:12:22 -0000

On Tue, Nov 10, 2009 at 4:12 PM, Joe Touch <touch@isi.edu> wrote:
> William Herrin wrote:
>> On Mon, Nov 9, 2009 at 10:27 PM, Joe Touch <touch@isi.edu> wrote:
>>> Right. How do you bury that handshake in an unordered, unreliable stream
>>> without halting it, though?
>>
>> 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?

Hi Joe,

Retransmit as originally sent. Otherwise you could have two very
different packets show up for the same segment. Set X1 only on packets
whose first transmission comes after option X accepted.


>> 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?

As I mentioned: constraint on the option in this exchange in that it
can't impact the handling of the sequence number. ACK is handling the
sequence number.

> Or the order in which they're sent to the app?

You mean like URG data? I'm surprised URG hasn't been deprecated given
the inconsistent implementations.

So, I gather we'd have to add a constraint that the use of URG or
reordering options is incompatible with the use of a
post-syn-negotiated stateful option.

Otherwise, there's no ordering problem, right? The stack delivers data
to the app in order by sequence number and will have made all the data
in segments before the first X1 available to the app before the sender
sends the first X2.


>> 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.

Excepting any late arriving duplicates (where the data will be
discarded), there's no way for the receiver to get a packet that was
sent before X was set at the source. The source confirmed that by
switching to setting X2 only after everything up to and including the
first X1 packet was acked.


>> 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.

By the way, I appreciate you bouncing this back and forth with me. I
don't doubt your conclusions but I find that trying to poke holes in a
conclusion is one of the more effective ways to learn the underlying
issues that brought it about.

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