Re: [multipathtcp] Multipath Address Family

Michael Tüxen <Michael.Tuexen@lurchi.franken.de> Fri, 27 November 2009 17:07 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 680DC3A69C3 for <multipathtcp@core3.amsl.com>; Fri, 27 Nov 2009 09:07:01 -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 VX2gJGrH9sow for <multipathtcp@core3.amsl.com>; Fri, 27 Nov 2009 09:07:00 -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 29D033A6978 for <multipathtcp@ietf.org>; Fri, 27 Nov 2009 09:07:00 -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 B4FA21C0B4044; Fri, 27 Nov 2009 18:06:52 +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: <20091126.041514.183027096.nishida@sfc.wide.ad.jp>
Date: Fri, 27 Nov 2009 18:06:51 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <4DA55308-08B9-442D-AA0B-37975B816E47@lurchi.franken.de>
References: <C622F375-EE67-46AE-AC28-6617CFEF6D12@lurchi.franken.de> <20091125.091414.57515028.nishida@sfc.wide.ad.jp> <A4C2D3B1-B24B-464D-B7C0-D5D7498F6566@lurchi.franken.de> <20091126.041514.183027096.nishida@sfc.wide.ad.jp>
To: Yoshifumi Nishida <nishida@sfc.wide.ad.jp>
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: Fri, 27 Nov 2009 17:07:01 -0000

On Nov 25, 2009, at 8:15 PM, Yoshifumi Nishida wrote:

> 
> Hello Michael, 
> 
> From: Michael Tüxen <Michael.Tuexen@lurchi.franken.de>
> Subject: Re: [multipathtcp] Multipath Address Family
> Date: Wed, 25 Nov 2009 19:20:56 +0100
> Message-ID: <A4C2D3B1-B24B-464D-B7C0-D5D7498F6566@lurchi.franken.de>
> 
>>>> 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).
>>> 
>>> Just curiosity, do you know the reason why generic connectx() doesn't exist? 
>>> it make sense to me since the call looks independent from sctp.
>> Because we were not sure what the right semantic would be:
>> 1. For SCTP (or other protocols supporting multihoming), we wanted something
>>   like "establish a transport connection with the peer having *all* given addresses.
>> 2. For TCP (or other protocols not supporting multihoming), we though something
>>   like "establish a transport connection with a peer having *one* of the given addresses.
>> This is very different. We also assume that if the user provides multiple address,
>> all the addresses belong the the *same* host. This makes it impossible to use
>> DNS for getting them...
> 
> Thanks for the clarification. But, I still have a question... Do we have to
> connect all given addresses?
You do not have to do anything right now, since it is not defined yet.
The situation for us was the following:
We know the peer has addr1, ... , addrn and we want to establish an SCTP association.
We do not want to test addr1 first, wait until the setup fails and then test addr2,
and so on. We want to setup an association in a fast way not being delayed because
addr1 currently fails. We have not specified if you send INITs to all addresses
simultaneously or send the first INIT to addr1 and the retransmission to addr2, or
in an other way. That is implementation specific. But do no want to wait for the
association setup to addr1 to fail (after several retransmissions) before trying
alternate addresses.
We can not do this with the existing system calls and introduced therefore the
sctp_connectx() system call. 
> If connectx() sends multiple SYNs simultaneously to the multiple destinations,
> it will be problematic. But, if connectx() has the following logic,
>  it tries to send a SYN one-by-one to each destination
>  it gets SYN-ACK, it stops to send a SYN and return.
But then it can take long until you setup you transport connection.
The application could just run a loop over the peer addresses and call connect()
to it, see if it works. If it fails try the next. This might take a long time
you you have a lot of addresses to try and some of them are not working.
> I don't see a big issue in the logic. It may be slow in some cases, though. 
> I mean, connectx() is used only to find one primary destination. Other destinations
> will be found during negotiations in the transport protocol. Not from connectx().
> --
> Yoshifumi Nishida
> nishida@sfc.wide.ad.jp
>