Re: [multipathtcp] New Version Notification for draft-paasch-mptcp-loadbalancer-00.txt

Costin Raiciu <c.raiciu@cs.ucl.ac.uk> Wed, 18 November 2015 09:08 UTC

Return-Path: <c.raiciu@cs.ucl.ac.uk>
X-Original-To: multipathtcp@ietfa.amsl.com
Delivered-To: multipathtcp@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0498E1B2A94 for <multipathtcp@ietfa.amsl.com>; Wed, 18 Nov 2015 01:08:55 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.185
X-Spam-Level:
X-Spam-Status: No, score=-4.185 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, J_CHICKENPOX_66=0.6, RCVD_IN_DNSWL_MED=-2.3, RP_MATCHES_RCVD=-0.585] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id czCGXHys9ajB for <multipathtcp@ietfa.amsl.com>; Wed, 18 Nov 2015 01:08:52 -0800 (PST)
Received: from bells2.cs.ucl.ac.uk (bells2.cs.ucl.ac.uk [128.16.5.33]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E946F1B2A7E for <multipathtcp@ietf.org>; Wed, 18 Nov 2015 01:08:51 -0800 (PST)
Received: from [141.85.37.157] (helo=[10.0.0.110]) by bells2.cs.ucl.ac.uk with esmtpsa (TLSv1:AES256-SHA:256) (C.Raiciu authenticated) (Exim 4.54) id 1ZyyjK-000Al2-UZ; Wed, 18 Nov 2015 09:08:43 +0000
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2070.6\))
From: Costin Raiciu <c.raiciu@cs.ucl.ac.uk>
In-Reply-To: <20150910144318.GH69323@Chimay.local>
Date: Wed, 18 Nov 2015 11:08:40 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <33067B42-9794-4E87-8237-F9AF9230291E@cs.ucl.ac.uk>
References: <20150908035557.GB73228@Chimay.local> <55F098DB.8020201@uclouvain.be> <20150910022151.GF42530@Chimay.local> <55F15586.3000003@uclouvain.be> <20150910144318.GH69323@Chimay.local>
To: Christoph Paasch <cpaasch@apple.com>
X-Mailer: Apple Mail (2.2070.6)
Archived-At: <http://mailarchive.ietf.org/arch/msg/multipathtcp/AsNsXFLMvsVUmD6xGrRhd5E-GUU>
Cc: MultiPath WG <multipathtcp@ietf.org>
Subject: Re: [multipathtcp] New Version Notification for draft-paasch-mptcp-loadbalancer-00.txt
X-BeenThere: multipathtcp@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Multi-path extensions for TCP <multipathtcp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/multipathtcp>, <mailto:multipathtcp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/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, 18 Nov 2015 09:08:55 -0000

Christoph,

First, I’d like to say that solving the loadbalancer issue is very important. I have spoken to Microsoft people that said that can’t use MPTCP because it doesn’t work through their loadbalancers.

I have finally had a careful look at your draft. I find the second proposed solution, the one that changes the token derivation algorithm, to be very interesting. I fully support it, and I think we should mandate it is 6824bis, even if this increases the MPTCP version number.

Here at UPB we are actively working on a scalable load balancer for MPTCP - we’ll keep you posted once we have something to show.

Cheers.
Costin




> On 10 Sep 2015, at 17:43, Christoph Paasch <cpaasch@apple.com> wrote:
> 
> On 10/09/15 - 12:03:50, Olivier Bonaventure wrote:
>>> I really like this idea.
>>> 
>>> Very often, IP-in-IP encapsulation is done from the loadbalancer to the
>>> server. Thus, the key could even be placed in an IP-option. As everything is
>>> local to the data-center there shouldn't be an issue with adding a new
>>> IP-option.
>>> 
>>> 
>>> But as you point out in the other mail, when multiple loadbalancers are
>>> being used we have an issue again. Maybe, there is a way to generate the key
>>> in such a way that we can guarantee uniqueness across the loadbalancers?
>>> 
>> 
>> This is one possibility, but I'm not sure that we need to specify that
>> unless we want load balancers from different vendors to cooperate.
> 
> I was more thinking of it in case we do not modify anything in the
> MPTCP-handshake. In that case, the different loadbalancers will be
> generating the keys independently. The loadbalancers can easily
> make sure that they generate different keys, however because the token is a
> hash of the key, collisions are possible.
> 
> Thus, we would need a way to guarantee uniqueness of the token across the
> loadbalancers.
> 
>> The load balancing problem could be an opportunity to rethink the three-way
>> handshake used by Multipath TCP so that it can work well with tomorrow's
>> target protocol stack, likely HTTP/2 / TLS / MPTCP / IPv6
> 
> +1 on TLS
> 
> For IPv6 I'm a bit concerned because we are yet far away from full IPv6
> deployment and IPv4 is proably never going away.
> 
>> To deal with security issues, we have included keys in clear inside the SYN
>> and SYN+ACK segments. Then the limited TCP option space has forced us to use
>> hash functions to compute the IDSN and the tokens. Using a hash to compute
>> the tokens creates difficulties when one wants to coordinate token
>> allocations between a set of load balancers.
>> 
>> I wonder whether we should not explore again the work documented in
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__tools.ietf.org_html_draft-2Dpaasch-2Dmptcp-2Dlowoverhead-2D00&d=BQIC-g&c=eEvniauFctOgLOKGJOplqw&r=fSuJ9mpJ1IB1Lz-sIp_MCe23kZIFT6UKt4EhsewNEmA&m=d1DAUSnnbQyUTC9DUvPR9YgBw1illvfDq55MXrewq0M&s=2Xd614qho-KOJFy_LZtqx000U8div7FG31UhLM9V6WY&e=
>> and
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__tools.ietf.org_html_draft-2Dpaasch-2Dmptcp-2Dssl-2D00&d=BQIC-g&c=eEvniauFctOgLOKGJOplqw&r=fSuJ9mpJ1IB1Lz-sIp_MCe23kZIFT6UKt4EhsewNEmA&m=d1DAUSnnbQyUTC9DUvPR9YgBw1illvfDq55MXrewq0M&s=SiCZMS9Xpc2g-z1tPdqDgzwTK2evfjTpi-2OBM4Z9R4&e=
>> 
>> 
>> Let us first ignore the security issues and make the toke explicit in the
>> handshake.
>> 
>> 
>>               Host A                               Host B
>>              ----------                           ----------
>>              Address A1                           Address B1
>>              ----------                           ----------
>>                  |                                    |
>>                  |  SYN+MP_CAPABLE(Token-A)           |
>>                  |----------------------------------->|
>>                  |                                    |
>>                  |SYN/ACK+MP_CAPABLE(Token-B)         |
>>                  |<-----------------------------------|
>>                  |                                    |
>>                  |  ACK+MP_CAPABLE(Token-A, Token-B)  |
>>                  |----------------------------------->|
>> 
>> 
>> It might also be possible to remove Token-A from the initial SYN since there
>> is little benefit from the server to know this token at this stage.
> 
> Yes, if the MP_CAPABLE becomes reliable in the third ACK, we can probably
> remove the token from the SYN (although we have to be creative for TFO in
> that case).
> 
>> The IDSN
>> could be derived as TokenA|TokenB in one direction and TokenB|TokenA in the
>> other or better a hash of these values.
>> 
>> The benefit of this approach is that the Token chosen by the server is not
>> explicitelt sent in the SYN/ACK. Load balancers can coordinate to have one
>> pool of tokens for each LB and pass them to the servers.
>> 
>> The next step is to authenticate the establishment of subflows. The best
>> approach with HTTP/2 / TLS  is clearly to derive MPTCP keys from the master
>> TLS key and use them to authenticate the subflows with the HMAC mechanism
>> already defined. With this, we leverage the security properties of TLS and
>> do not anymore depend on "keys" that are sent in clear in the SYN segments
>> and consume precious option space. Of course, a drawback of this approach is
>> that you cannot create a subflow until the end of the TLS handshake, but TLS
>> is moving towards faster handshakes.
> 
> I think this is the best way to go (if the working-group is fine with
> introducing a rather big change to RFC6824bis).
> 
> It frees up space in the handshake, enables MPTCP behind loadbalancers
> (independent of IPv4 or IPv6) and also gives incentives to enable TLS/SSL.
> Additionally to that, it enables low-overhead deployments of MPTCP for
> data-center environments.
> 
> 
> Christoph
> 
> _______________________________________________
> multipathtcp mailing list
> multipathtcp@ietf.org
> https://www.ietf.org/mailman/listinfo/multipathtcp