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

Joe Touch <touch@ISI.EDU> Tue, 03 November 2009 15:55 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 E97323A69CE for <multipathtcp@core3.amsl.com>; Tue, 3 Nov 2009 07:55:31 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level:
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, J_CHICKENPOX_21=0.6]
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 AZ2hsavcc4lh for <multipathtcp@core3.amsl.com>; Tue, 3 Nov 2009 07:55:31 -0800 (PST)
Received: from vapor.isi.edu (vapor.isi.edu [128.9.64.64]) by core3.amsl.com (Postfix) with ESMTP id 1ED243A69B7 for <multipathtcp@ietf.org>; Tue, 3 Nov 2009 07:55:31 -0800 (PST)
Received: from [75.213.246.17] (17.sub-75-213-246.myvzw.com [75.213.246.17]) (authenticated bits=0) by vapor.isi.edu (8.13.8/8.13.8) with ESMTP id nA3FtTol000360 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Tue, 3 Nov 2009 07:55:32 -0800 (PST)
Message-ID: <4AF05270.1050501@isi.edu>
Date: Tue, 03 Nov 2009 07:55:28 -0800
From: Joe Touch <touch@ISI.EDU>
User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)
MIME-Version: 1.0
To: Scott Brim <scott.brim@gmail.com>
References: <4A916DBC72536E419A0BD955EDECEDEC06363A62@E03MVB1-UKBR.domain1.systemhost.net> <4AEF781E.4070009@isi.edu> <4AF04C00.10504@gmail.com>
In-Reply-To: <4AF04C00.10504@gmail.com>
X-Enigmail-Version: 0.96.0
Content-Type: text/plain; charset="UTF-8"
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, 03 Nov 2009 15:55:32 -0000

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



Scott Brim wrote:
> Joe Touch allegedly wrote on 11/02/2009 7:23 PM:
>>> (even if that
>>>       subflow /path closes)
>> Yes, although, as noted, if the IP address goes away altogether, then
>> IMO the connection needs to be terminated.
> 
> 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.  The scenario where a
> new node gets an IP address that an old node was just using is only
> relevant if the connection is maintained using IP addresses ... which it
> isn't.

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.

>>>     * the protocol involves an MPTCP stack at both ends of the MPTCP
>>>       connection
>>>           o [Comment: this is in our charter]
>> Agreed (as per the charter), but seriously this begs the question of
>> what is "TCP" about the result. I don't like the idea of doing this all
>> inside TCP solely as NAT camouflage.
> 
> Why not?  NAT is now architecture, and we have to deal with it.  You
> could just as easily say we should be able to run lots of protocols over
> the Internet but we have to put things in IP as "router camouflage".

Inside TCP, vs. inside SCTP or a new transport - one that would interact
poorly with NATs. IP is more than a way to interact with routers; it's a
uniform end-to-end multiplexing unit, it allows e2e transport security
while allowing router interaction, etc.

NATs may be ubiquitous, but they are NOT part of the 'architecture'.
They violate what little of the architecture is specified (RFCs 1122,
1123, 1812).

Architecture is deliberate, not de-facto; the latter applies to
implementations.

>>>     * There is an optional, extended API
>>>           o [Question: would both ends need the extended API, with a
>>>             fall-back if not?]
>> Seems like one end could want the extended API for explicit control of
>> flows, but the other end doesn't need to care.
> 
> Agree.  The API is to access controls for the endpoint's implementation
> of the protocol.  How an endpoint implements its APIs is independent of
> the protocol.

Whoa on two counts.

First, *IF*, as you say, "NAT is now architecture", then the API affects
nodes inside the network, not just at the endpoints.

Second, the API is two things - an abstract specification and an
implementation. Consider TCP, which has OPEN, CLOSE, STATUS, READ,
WRITE. Those are part of the *specification*. There's also the Un*x
"open()" call, which implements part of what OPEN specifies (arguably,
in Un*x, this also includes listen(), connect(), and bind()).

My claim here is that the API can be asymmetric, i.e., extended on one
side and not the other. That's just claiming that all extensions are
optional on both sides, and not coordinated.

Joe

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

iEYEARECAAYFAkrwUnAACgkQE5f5cImnZru5RgCg5DcydBItssvuc5QtwECzd5hl
Ya0AoNvUj276M8fkBMqaE1bEviY0nZFT
=ozlV
-----END PGP SIGNATURE-----