Re: [multipathtcp] Multipath Address Family

Michael Tüxen <Michael.Tuexen@lurchi.franken.de> Fri, 27 November 2009 16:58 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 752A73A6924 for <multipathtcp@core3.amsl.com>; Fri, 27 Nov 2009 08:58:39 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 2.038
X-Spam-Level: **
X-Spam-Status: No, score=2.038 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, HOST_EQ_DIP_TDIAL=2.144, HOST_MISMATCH_NET=0.311, MIME_8BIT_HEADER=0.3, RCVD_IN_PBL=0.905, RCVD_IN_SORBS_DUL=0.877, RDNS_DYNAMIC=0.1]
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 xbFLXz5UaRIp for <multipathtcp@core3.amsl.com>; Fri, 27 Nov 2009 08:58:38 -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 62A9B3A684C for <multipathtcp@ietf.org>; Fri, 27 Nov 2009 08:58:37 -0800 (PST)
Received: from [192.168.1.100] (p508FDA12.dip.t-dialin.net [80.143.218.18]) by mail-n.franken.de (Postfix) with ESMTP id 442BC1C0B4049; Fri, 27 Nov 2009 17:58:28 +0100 (CET)
Mime-Version: 1.0 (Apple Message framework v1077)
Content-Type: text/plain; charset="iso-8859-1"
From: Michael Tüxen <Michael.Tuexen@lurchi.franken.de>
In-Reply-To: <BF345F63074F8040B58C00A186FCA57F1C65FB2A32@NALASEXMB04.na.qualcomm.com>
Date: Fri, 27 Nov 2009 17:58:27 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <D0D843DB-75B8-4D2E-8151-15DCF5242DCC@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> <3c3e3fca0911240434p4d95ec7an34615ae218faa4f@mail.gmail.com> <C622F375-EE67-46AE-AC28-6617CFEF6D12@lurchi.franken.de> <BF345F63074F8040B58C00A186FCA57F1C65FB29B9@NALASEXMB04.na.qualcomm.com> <50B8B7D8-A0D3-4BFC-9471-F0929A19569D@lurchi.franken.de> <BF345F63074F8040B58C00A186FCA57F1C65FB2A32@NALASEXMB04.na.qualcomm.com>
To: "Laganier, Julien" <julienl@qualcomm.com>
X-Mailer: Apple Mail (2.1077)
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: Fri, 27 Nov 2009 16:58:39 -0000

On Nov 25, 2009, at 7:38 PM, Laganier, Julien wrote:

> Michael Tüxen wrote:
>> 
>> On Nov 24, 2009, at 11:32 PM, Laganier, Julien wrote:
>> 
>>> Stuart Cheshire had a nice talk at IETF 72 on the drawbacks of the
>>> current getaddrinfo() + connect() model w.r.t. to IPv6 transition,see
>>> http://www.stuartcheshire.org/IETF72/. (Somebody already mentioned that
>>> on the list I think.)
>>> 
>>> A connect_to_name() calls that hides all of the address family
>>> subtleties under the hood does not have such drawbacks. So if we're
>>> going to change the API anyway, this looks like a good occasion to 
>>> fix that issue too, no?
>> 
>> I'm interested in the userland/kernel boundary, the system calls, not
>> any kind of library calls.
> 
> Good for you.
> 
> I'm not talking about any kind of library call, I'm talking about an API, which is what I think the WG is chartered to work on. 
Sorry, I was not clear enough. What I meant was that it is important where the
API you are thinking about should be implemented.
If it is at the kernel/userland boundary, like the socket calls, there might be
other restrictions as when you are considering library calls.

The point I wanted to make is that doing DNS lookups in a userland library is simple,
doing it in the kernel is a different story. That is why I wanted to figure out
where you think you API is located at.
> 
>> So are you suggesting to do the DNS name lookups in the kernel? This
>> would mean that you want to implement DLS in the kernel. I'm not sure if I really like
>> that...
>> We had^H^H^H have a feature in SCTP which also requires DNS lookups
>> right from the
>> kernel and no-one implemented it.
> 
> I'm suggesting to do DNS lookups as a result of the connect_to_name() API call, nothing more.
But my point is if it will be in the kernel (if you think your connect_to_name() call
is a system call) or if it is in a library. If it is in the library you still must be able
to implement it using existing system calls.
> 
> --julien
> 
>> I think Stuart was referring to some stuff in CoreFoundation, which are
>> library calls, I think.
>> 
>> Best regards
>> Michael
>>> 
>>> --julien
>>> 
>>>> -----Original Message-----
>>>> From: multipathtcp-bounces@ietf.org [mailto:multipathtcp-
>>>> bounces@ietf.org] On Behalf Of Michael Tüxen
>>>> Sent: Tuesday, November 24, 2009 1:08 PM
>>>> To: William Herrin
>>>> Cc: multipathtcp@ietf.org
>>>> Subject: Re: [multipathtcp] Multipath Address Family
>>>> 
>>>> Dear all,
>>>> 
>>>> just one note:
>>>> In SCTP we use sctp_connectx() to connect to multiple addresses.
>>>> Kacheong pointed a couple of years ago out that a more generic
>>>> connectx() would make sense to other protocols supporting
>> multihoming
>>>> as well (but there were no).
>>>> 
>>>> So you might want to look at sctp_connectx() which the SCTP socket
>> API
>>>> uses to handle the problem.
>>>> 
>>>> Best regards
>>>> Michael
>>>> 
>>>> On Nov 24, 2009, at 1:34 PM, William Herrin wrote:
>>>> 
>>>>> On Mon, Nov 23, 2009 at 4:40 PM, Pasi Sarolahti
>>>> <pasi.sarolahti@iki.fi> wrote:
>>>>>> 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.
>>>>> 
>>>>> Hi Pasi,
>>>>> 
>>>>> 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?
>>>>> 
>>>>> Poking around linux's include files (netinet/in.h, bits/socket.h) I
>>>>> notice that they go to a lot of trouble to make all sockaddrs come
>>>> out
>>>>> to exactly the same number of bytes. Won't a variable length
>> sockaddr
>>>>> that holds a variable number of addresses make a mess of that?
>>>>> 
>>>>> 
>>>>>>> SOCK_MULTISTREAM or using a combination socket type like
>>>> SOCK_STREAM |
>>>>>>> SOCK_MULTIPATH
>>>>>>> from the following reasons.
>>>>> 
>>>>> Found a quote I think bears on the topic at
>>>>> http://lkml.indiana.edu/hypermail/linux/net/9904.2/0091.html :
>>>>> 
>>>>>> The AF_ prefix stands for "address family" and the PF_prefix
>> stands
>>>> for
>>>>>> "protocol family". Historicly, the intent was that a single
>> protocol
>>>> family
>>>>>> might support multiple address families and that the PF_ value was
>>>> used to
>>>>>> create the socket and the AF_ value was used in socket address
>>>> structures.
>>>>>> But in actuality, a protocol family supporting multiple address
>>>> families has
>>>>>> never been supported and the <sys/socket.h> header defines the PF_
>>>> value
>>>>>> for a given protocol to be equal to the AF_ value for that
>> protocol.
>>>>> 
>>>>> I think when we discuss allowing multipath TCP to use IPv4 and IPv6
>>>>> addresses interchangeably, we're talking about one protocol family
>>>>> using multiple address families, are we not?
>>>>> 
>>>>> 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
>>>>> _______________________________________________
>>>>> multipathtcp mailing list
>>>>> multipathtcp@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/multipathtcp
>>>>> 
>>>> 
>>>> _______________________________________________
>>>> multipathtcp mailing list
>>>> multipathtcp@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/multipathtcp
>>> 
> 
>