Re: [apps-discuss] AD Fail - MPTCP API
John Leslie <john@jlc.net> Sat, 17 November 2012 04:30 UTC
Return-Path: <john@jlc.net>
X-Original-To: apps-discuss@ietfa.amsl.com
Delivered-To: apps-discuss@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 94B7C21F86CE for <apps-discuss@ietfa.amsl.com>; Fri, 16 Nov 2012 20:30:30 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -106.364
X-Spam-Level:
X-Spam-Status: No, score=-106.364 tagged_above=-999 required=5 tests=[AWL=0.235, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id E89gBUjVrBQZ for <apps-discuss@ietfa.amsl.com>; Fri, 16 Nov 2012 20:30:30 -0800 (PST)
Received: from mailhost.jlc.net (mailhost.jlc.net [199.201.159.4]) by ietfa.amsl.com (Postfix) with ESMTP id 97C0721F84E2 for <apps-discuss@ietf.org>; Fri, 16 Nov 2012 20:30:28 -0800 (PST)
Received: by mailhost.jlc.net (Postfix, from userid 104) id B1FA733D2A; Fri, 16 Nov 2012 23:30:28 -0500 (EST)
Date: Fri, 16 Nov 2012 23:30:28 -0500
From: John Leslie <john@jlc.net>
To: Marc Blanchet <marc.blanchet@viagenie.ca>
Message-ID: <20121117043028.GK72469@verdi>
References: <50A411A3.6060600@qti.qualcomm.com> <01OMMH6GA83U00008S@mauve.mrochek.com> <50A4631D.2060606@qti.qualcomm.com> <01OMMYVTHCB000008S@mauve.mrochek.com> <50A507F9.4070103@qti.qualcomm.com> <ACE405AE-04E7-42CA-909E-B85A8D2F5DC5@viagenie.ca>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <ACE405AE-04E7-42CA-909E-B85A8D2F5DC5@viagenie.ca>
User-Agent: Mutt/1.4.1i
Cc: IETF Apps Discuss <apps-discuss@ietf.org>
Subject: Re: [apps-discuss] AD Fail - MPTCP API
X-BeenThere: apps-discuss@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: General discussion of application-layer protocols <apps-discuss.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/apps-discuss>, <mailto:apps-discuss-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/apps-discuss>
List-Post: <mailto:apps-discuss@ietf.org>
List-Help: <mailto:apps-discuss-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/apps-discuss>, <mailto:apps-discuss-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 17 Nov 2012 04:30:30 -0000
Marc Blanchet <marc.blanchet@viagenie.ca> wrote: > > to me, it remains to be seen how the interaction of: > - happy eyeballs > - IPv4 vs IPv6 address family preference > - application using a non-80 port and then falling back to port > 80/443 because of outgoing port blocking in some access networks > (I wrote a draft on that) > - multiple interfaces which are pretty common these days, such as > wifi and cell data-3G-LTE-... > > all of those are common cases today, many with specific APIs. > Then you add MP-TCP on top of that. > > I fail to see how those interactions will work. Each of them, taken > separately, does a good job for its own purpose. but the common case > shall include all of these. Not sure the underlying OS could do all > the job for the APP, too. > > so, no clear suggestion, but a concern about complexity of apps and > how well these techniques will interact and work each other. I think this deserves some discussion (and I was hoping someone else would start it. ;^) Understand, first, that MPTCP can only use multiple paths if - one TCP connection is established with MP_CAPABLE negotiated by three-way handshake with the MP_CAPABLE TCP option (this presumably will be quite common, eventually); - at least one endpoint originates another TCP connection with MP_JOIN (instead of MP_CAPABLE) negotiated by three-way handshake with the MP_JOIN TCP option. (i.e. without three MP_CAPABLE TCP options, followed by three MP_JOIN options, there can be no multiple paths involved.) The MP_CAPABLE handshake exchanges keys. If for any reason the MP_JOIN reaches a different endpoint, the keys will not match. In the simple case, the host originating the MP_JOIN will send it to the same remote address, but from a different interface using a different source IP address. But there's also a way to advise the other endpoint of another local address, using ADD_ADDR. With ADD_ADDR it is possible to enable multiple paths using both IPv4 and IPv6, as well as different ports, though some implementations may not support this, and even if supported by the endpoints, things can go wrong in the middle. So, let me try to chip away at the cases Marc asked about... > - happy eyeballs Happy eyeballs is implemented in different ways, but generally overlaps an attempt to establish an IPv6 connection with an attempt to establish an IPv4 connection, discarding the one which doesn't complete first. Both attempted connections are likely to carry the MP_CAPABLE option, and may or may not succeed in negotiating it. But only one will be used. Attempting an MP_JOIN must happen later, though I suppose ADD_ADDRs could be exchanged so that the other IP version could be tried for a secondary path -- that probably won't be common -- and even with that there would be no re-use of the connection which finished second. > - IPv4 vs IPv6 address family preference Same as "happy eyeballs". (Note that ADD_ADDRs would need to be exchanged to make use of both address families.) > - application using a non-80 port and then falling back to port > 80/443 because of outgoing port blocking in some access networks Really the same, also; though different ports within the same address families are easier to implement. > - multiple interfaces which are pretty common these days, such as > wifi and cell data-3G-LTE-... It would be quite practical to establish the initial TCP connection on a more expensive service; then do MP_JOINs on the less expensive service, essentially dropping the more expensive service so long as the less expensive one keeps working. Note also that MPTCP _intends_ to keep the same MPTCP connection (group) functioning as an interface gets different IP addresses. ==== (I have only answered for what the protocol allows for. YMMV with differing implementations.) The draft named in this thread covers only a basic API, which could give the endpoint application(s) better control over various tradeoffs involved in the internals of an MPTCP implementation. The protocol itself is found in draft-ietf-mptcp-multiaddressed, which is already approved for publication as an Experimental track RFC. -- John Leslie <john@jlc.net>
- [apps-discuss] AD Fail - MPTCP API Pete Resnick
- Re: [apps-discuss] AD Fail - MPTCP API Ned Freed
- Re: [apps-discuss] AD Fail - MPTCP API Pete Resnick
- Re: [apps-discuss] AD Fail - MPTCP API Ned Freed
- Re: [apps-discuss] AD Fail - MPTCP API Pete Resnick
- Re: [apps-discuss] AD Fail - MPTCP API Marc Blanchet
- Re: [apps-discuss] AD Fail - MPTCP API Ned Freed
- Re: [apps-discuss] AD Fail - MPTCP API Dave Crocker
- Re: [apps-discuss] AD Fail - MPTCP API Claudio Allocchio
- Re: [apps-discuss] AD Fail - MPTCP API John Leslie