Re: [multipathtcp] Multipath Address Family

"Laganier, Julien" <julienl@qualcomm.com> Wed, 25 November 2009 16:31 UTC

Return-Path: <julienl@qualcomm.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 69BF43A6A13 for <multipathtcp@core3.amsl.com>; Wed, 25 Nov 2009 08:31:49 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -103.706
X-Spam-Level:
X-Spam-Status: No, score=-103.706 tagged_above=-999 required=5 tests=[AWL=-1.107, BAYES_00=-2.599, USER_IN_WHITELIST=-100]
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 hIIK4WD1ihkr for <multipathtcp@core3.amsl.com>; Wed, 25 Nov 2009 08:31:48 -0800 (PST)
Received: from wolverine02.qualcomm.com (wolverine02.qualcomm.com [199.106.114.251]) by core3.amsl.com (Postfix) with ESMTP id 1E6E63A6AA3 for <multipathtcp@ietf.org>; Wed, 25 Nov 2009 08:31:48 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=qualcomm.com; i=julienl@qualcomm.com; q=dns/txt; s=qcdkim; t=1259166703; x=1290702703; h=from:to:cc:date:subject:thread-topic:thread-index: message-id:references:in-reply-to:accept-language: content-language:x-ms-has-attach:x-ms-tnef-correlator: acceptlanguage:content-type:content-transfer-encoding: mime-version:x-ironport-av; z=From:=20"Laganier,=20Julien"=20<julienl@qualcomm.com> |To:=20Pasi=20Sarolahti=20<pasi.sarolahti@iki.fi>,=20Will iam=20Herrin=20<bill@herrin.us>|CC:=20"multipathtcp@ietf. org"=20<multipathtcp@ietf.org>|Date:=20Wed,=2025=20Nov=20 2009=2008:31:26=20-0800|Subject:=20RE:=20[multipathtcp] =20Multipath=20Address=20Family|Thread-Topic:=20[multipat htcp]=20Multipath=20Address=20Family|Thread-Index:=20Acpt cfP9piGcxwa8SYGEiKKif1liCgAAu33A|Message-ID:=20<BF345F630 74F8040B58C00A186FCA57F1C65FB2A1B@NALASEXMB04.na.qualcomm .com>|References:=20<E9EE0C1A-C9D3-4EBC-97FD-E1B1628CD2E7 @iki.fi>=0D=0A=09<3c3e3fca0911090542h54e45784qbdbf1f338a4 c3e90@mail.gmail.com>=0D=0A=09<E03D46E1-51EA-4273-A8A7-4F 37F88B2E92@iki.fi>=0D=0A=09<20091123.092214.140617438.nis hida@sfc.wide.ad.jp>=0D=0A=09<48DA092B-F3BC-432E-A199-B26 5DDED39DA@iki.fi>=0D=0A=09<3c3e3fca0911240434p4d95ec7an34 615ae218faa4f@mail.gmail.com>=0D=0A=20<809D0BC9-83EC-4E42 -85DC-BCAB2905F403@iki.fi>|In-Reply-To:=20<809D0BC9-83EC- 4E42-85DC-BCAB2905F403@iki.fi>|Accept-Language:=20en-US |Content-Language:=20en-US|X-MS-Has-Attach: |X-MS-TNEF-Correlator:|acceptlanguage:=20en-US |Content-Type:=20text/plain=3B=20charset=3D"us-ascii" |Content-Transfer-Encoding:=20quoted-printable |MIME-Version:=201.0|X-IronPort-AV:=20E=3DMcAfee=3Bi=3D"5 400,1158,5813"=3B=20a=3D"28417791"; bh=23R5Z2VmcxE0itIPxV+IZO8rjcePMo9CUeUPTuyo5eY=; b=vfyiF65XF3x95RqG7JpitJ0kvoeg+tqw8pIetg5exLJIuo7JnfBzsvWc cmY5OCqf+q1OvjpErYzlkxpmElkgwouQd+PfViepq8cyiWOgG/NlyRfJr URx7ukoOVasS83t9FioJJQVK1l679+uaT7oHnuf4FktHJaSH4x68RC7jJ E=;
X-IronPort-AV: E=McAfee;i="5400,1158,5813"; a="28417791"
Received: from pdmz-ns-mip.qualcomm.com (HELO numenor.qualcomm.com) ([199.106.114.10]) by wolverine02.qualcomm.com with ESMTP; 25 Nov 2009 08:31:34 -0800
Received: from msgtransport03.qualcomm.com (msgtransport03.qualcomm.com [129.46.61.154]) by numenor.qualcomm.com (8.14.2/8.14.2/1.0) with ESMTP id nAPGVXeZ023683 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Wed, 25 Nov 2009 08:31:34 -0800
Received: from nasanexhub05.na.qualcomm.com (nasanexhub05.na.qualcomm.com [129.46.134.219]) by msgtransport03.qualcomm.com (8.14.2/8.14.2/1.0) with ESMTP id nAPGVTVl005112 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NOT); Wed, 25 Nov 2009 08:31:29 -0800
Received: from nalasexhc02.na.qualcomm.com (10.47.129.186) by nasanexhub05.na.qualcomm.com (129.46.134.219) with Microsoft SMTP Server (TLS) id 8.2.176.0; Wed, 25 Nov 2009 08:31:28 -0800
Received: from NALASEXMB04.na.qualcomm.com ([10.47.7.118]) by nalasexhc02.na.qualcomm.com ([10.47.129.186]) with mapi; Wed, 25 Nov 2009 08:31:28 -0800
From: "Laganier, Julien" <julienl@qualcomm.com>
To: Pasi Sarolahti <pasi.sarolahti@iki.fi>, William Herrin <bill@herrin.us>
Date: Wed, 25 Nov 2009 08:31:26 -0800
Thread-Topic: [multipathtcp] Multipath Address Family
Thread-Index: AcptcfP9piGcxwa8SYGEiKKif1liCgAAu33A
Message-ID: <BF345F63074F8040B58C00A186FCA57F1C65FB2A1B@NALASEXMB04.na.qualcomm.com>
References: <E9EE0C1A-C9D3-4EBC-97FD-E1B1628CD2E7@iki.fi> <3c3e3fca0911090542h54e45784qbdbf1f338a4c3e90@mail.gmail.com> <E03D46E1-51EA-4273-A8A7-4F37F88B2E92@iki.fi> <20091123.092214.140617438.nishida@sfc.wide.ad.jp> <48DA092B-F3BC-432E-A199-B265DDED39DA@iki.fi> <3c3e3fca0911240434p4d95ec7an34615ae218faa4f@mail.gmail.com> <809D0BC9-83EC-4E42-85DC-BCAB2905F403@iki.fi>
In-Reply-To: <809D0BC9-83EC-4E42-85DC-BCAB2905F403@iki.fi>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Cc: "multipathtcp@ietf.org" <multipathtcp@ietf.org>
Subject: Re: [multipathtcp] Multipath Address Family
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: Wed, 25 Nov 2009 16:31:49 -0000

Pasi Sarolahti wrote:
> 
> On Nov 24, 2009, at 4:34 AM, William Herrin wrote:
> 
> > It seems like you want to preserve the connect() call's parameters by
> > altering the definition of sockaddr so that it can contain multiple
> > addresses.
> >
> > But functionally, what we really want to do is pass an array of
> > sockaddrs to connect().
> >
> > Stupid question time: what makes redefining sockaddr superior to an
> > extended API call that supplants connect() and accepts an array of
> > sockaddrs?
> 
> Another question: is it better to have a compile-time error (or
> segmentation fault) or run-time error code, if application was built
> with multi-address support, but system was not?

Hmm. Neither =)

I think if we want to bind or connect an MPTCP connection to multiple addresses, we want to have new systems calls, in a fashion similar to what was done with sctp_connectx().
 
> Even if we had a new mptcp_connectx, bindx, etc. calls, the problem
> still remains what to do with the old socket operations that assume
> only single address per endpoint. A new address family would be one
> (unfortunately non-backwards compatible) way to address that problem
> (possibly with the cost of introducing new problems).

The "old" socket can have its semantic preserved by exposing through it only the initial address-port pair in use. 

   - connect() will connect to one address-port
   - bind() will bind to one address:port
   - getsockname() will return the address-port to which the socket was first bound
   - getpeername() will return the address-port from which the connection with the peer was initially established. 
 
> I think there is a certain elegancy in having a minimal socket API
> with just a small basic set of operations. Until now the same socket
> API has provided to be flexible enough to support many uses over time
> (Unix domain sockets that take pathname as sockaddr, IPsec PF_KEY
> sockets, netlink sockets, ...). I'm not yet ready to buy it that we
> have come to a point that the old API is not sufficient anymore, if
> the same functionality could be implemented by specifying a couple of
> new socket parameters for a feature that is supported by just some of
> the protocols under the API.

AFAICS all uses of the socket API so far had the property that a socket is bound to a _single_ and _constant_ name (e.g., address, pathname), or in other words, there's no more than one name, and the name doesn't change. 

This property is no longer true with MPTCP because a socket can be bound to multiple and changing addresses. So if we're to design an API that exposes that, extending an API that assumed exactly the contrary is IMHO the wrong way to go.

--julien