Re: [multipathtcp] Multipath Address Family

Michael Tüxen <Michael.Tuexen@lurchi.franken.de> Tue, 24 November 2009 21:05 UTC

Return-Path: <Michael.Tuexen@lurchi.franken.de>
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 D46383A68D5 for <multipathtcp@core3.amsl.com>; Tue, 24 Nov 2009 13:05:20 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.175
X-Spam-Level:
X-Spam-Status: No, score=-0.175 tagged_above=-999 required=5 tests=[AWL=-2.125, BAYES_00=-2.599, HOST_MISMATCH_COM=0.311, MIME_8BIT_HEADER=0.3, RCVD_IN_PBL=0.905, RCVD_IN_XBL=3.033]
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 qNI9zRvKcopS for <multipathtcp@core3.amsl.com>; Tue, 24 Nov 2009 13:05:17 -0800 (PST)
Received: from mail-n.franken.de (drew.ipv6.franken.de [IPv6:2001:638:a02:a001:20e:cff:fe4a:feaa]) by core3.amsl.com (Postfix) with ESMTP id 875A83A6819 for <multipathtcp@ietf.org>; Tue, 24 Nov 2009 13:05:16 -0800 (PST)
Received: from [192.168.20.2] (tmo-109-243.customers.d1-online.com [80.187.109.243]) by mail-n.franken.de (Postfix) with ESMTP id 52D1D1C0B4042; Tue, 24 Nov 2009 22:05:03 +0100 (CET)
Mime-Version: 1.0 (Apple Message framework v1077)
Content-Type: text/plain; charset="us-ascii"
From: Michael Tüxen <Michael.Tuexen@lurchi.franken.de>
In-Reply-To: <48DA092B-F3BC-432E-A199-B265DDED39DA@iki.fi>
Date: Tue, 24 Nov 2009 22:04:53 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <151407D2-293C-4B4A-845C-0DAE958CD347@lurchi.franken.de>
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>
To: Pasi Sarolahti <pasi.sarolahti@iki.fi>
X-Mailer: Apple Mail (2.1077)
Cc: 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: Tue, 24 Nov 2009 21:05:20 -0000

On Nov 23, 2009, at 10:40 PM, Pasi Sarolahti wrote:

> Hi,
> 
> (changed the topic line, it was earlier "API: which address to use". I'm responding to Yoshifumi below, but first wanted to post a general note.)
> 
> I wrote down some further thinking about the idea of multipath address family in the form of Internet-Draft, which I thought to be better than a long Email to the list. The draft is available at http://tools.ietf.org/html/draft-sarolahti-mptcp-af-multipath-00 and I'd be happy to hear further comments about it.
> 
> I think a new address family would be a minimal needed change to the current socket API, without extending the API with new operations, but yet provide an interface to handle multiple addresses in a socket. One potentially useful characteristic would be that this would allow name resolver to return multiple IPv4 and/or IPv6 addresses from the name server as a single sockaddr structure, that could be directly given as a parameter to a connect call, which would lead to trying which of the addresses are reachable for the MPTCP session. Traditionally this has been done in the applications, by cycling through the returned addresses from resolver one by one, until connect is successful. Especially dual-stack IPv6/IPv4 hosts should find such feature useful.
There is one thing that I do not understand. Currently there is no way a DNS
server resolves a name indicating that all addresses belong to the same host.
You just get a list of addresses. They might belong to one host or not.

At least for SCTP this is important and makes it impossible to use DNS to
resolve a name to multiple addresses belonging to the same host.

Best regards
Michael
> 
> Yoshifumi- thanks for your comments! Some responses inline below.
> 
> On Nov 22, 2009, at 4:22 PM, Yoshifumi Nishida wrote:
> 
>> I like the idea.
>> But I have several questions. I think there might be an alternative: having
>> SOCK_MULTISTREAM or using a combination socket type like SOCK_STREAM | SOCK_MULTIPATH
>> from the following reasons.
> 
> I have thought the 'type' parameter in the socket call to specify the semantics of the socket functions such as read and write. To my understanding the purpose of the MPTCP exercise is to maintain similar read/write semantics to TCP, so if successful in this goal, the socket behavior should be equal to SOCK_STREAM. Or to put it differently, MPTCP is not a new protocol, it is just a (fairly large) modification to TCP.
> 
>> Strictly speaking, AF_MULTIPATH is not a new address type.
> 
> I see it as a kind of a super - address family: union of existing address families. But I think that would still fit under a definition of "address family". I understand that there might be different interpretations of what "address family" means, but if there is one specified & correct definition, I'd like to learn about it.
> 
>> SCTP socket can be created with AF_INET or AF_INET6, but the socket can
>> support multiple addresses. It's a bit orthgonal behavior from AF_MULTIPATH
> 
> Yes, earlier protocols have done something different for their API. But I'd be interested to learn if there is something why the earlier protocols couldn't begin using something like multipath address family.
> 
>> If the main point of having AF_MULTIPATH is to distinguish between the current
>> TCP socket and multipath TCP socket, using SOCK_MULTISTRAM is not a problem.
> 
> In my opinion, the main purpose is to be able to present multiple addresses associated with the same TCP socket. But different address family could be used to distinguish between multi- and singlehomed operations, too.
> 
>> we might support one-ended approach with the same API.
> 
> Yep, and that should be possible with AF_MULTIPATH, by having just one address in the address list. I think there might be cases where even single-homed TCP connections might benefit from multiaddress API, even if they ended up using just one of the given addresses at both ends (referring to the name resolver example above).
> 
>> Also, in my feeling, we will need new bind(), connect() to specify multiple
>> addresses. just like sctp_bindx(), sctp_connectx().
> 
> I think that adding completely new operations to the good old socket API might be problematic, and would lead to a more updating / maintenance burden in different systems and applications than a new address family would do. But I might be missing something in the required complexity of adding a new address family.
> 
> - Pasi
> 
> _______________________________________________
> multipathtcp mailing list
> multipathtcp@ietf.org
> https://www.ietf.org/mailman/listinfo/multipathtcp
>