Re: [tcpm] [multipathtcp] Progressing the MPTCP proxy work

Olivier Bonaventure <Olivier.Bonaventure@uclouvain.be> Sun, 17 September 2017 20:24 UTC

Return-Path: <olivier.bonaventure@uclouvain.be>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C20A2133343; Sun, 17 Sep 2017 13:24:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.32
X-Spam-Level:
X-Spam-Status: No, score=-4.32 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=uclouvain.be
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 QrTZ7dDgK0ut; Sun, 17 Sep 2017 13:24:48 -0700 (PDT)
Received: from smtp1.sgsi.ucl.ac.be (smtp.sgsi.ucl.ac.be [130.104.5.67]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 21FB6133342; Sun, 17 Sep 2017 13:24:45 -0700 (PDT)
Received: from mbpobo.local (host-78-129-6-94.dynamic.voo.be [78.129.6.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: obonaventure@smtp1.sgsi.ucl.ac.be) by smtp1.sgsi.ucl.ac.be (Postfix) with ESMTPSA id B474C67DC38; Sun, 17 Sep 2017 22:24:29 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.9.2 smtp1.sgsi.ucl.ac.be B474C67DC38
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=uclouvain.be; s=selucl; t=1505679870; bh=FfVqVOsKbvTDmVjMw+gxo1B0gwc/DYXC8l+GlA8A9RI=; h=Reply-To:Subject:To:Cc:References:From:Date:In-Reply-To; b=H0zi98nTEg2y2+5HHfpu43ZeyQ74jfEXqlZ9UaVbHeA6PASSHzwuKNoFN2IkjZccb Dgkg4lp40p+yn4Wk1rItRSM6bxezjJcWEtVhnP4OvpFKzZjHd1xzE5eO8DnlF9t612 AwjycdxoArhp7Y48XzQsQ1mbiFQ5W6Ahtt3AfHjs=
X-Virus-Status: Clean
X-Virus-Scanned: clamav-milter 0.99.2 at smtp-1
Reply-To: Olivier.Bonaventure@uclouvain.be
To: Tom Herbert <tom@herbertland.com>, philip.eardley@bt.com
Cc: multipathtcp@ietf.org, tcpm@ietf.org, tsv-area@ietf.org
References: <2efd30edab0647dda78246734f89a3f1@rew09926dag03b.domain1.systemhost.net> <CALx6S352Ez=ZusXhb71MZYCr_7O6TUiB+P7QKwzX4=7uAEVSrw@mail.gmail.com>
From: Olivier Bonaventure <Olivier.Bonaventure@uclouvain.be>
Message-ID: <9ae40aa4-2780-a3ce-5b31-bafacf983730@uclouvain.be>
Date: Sun, 17 Sep 2017 22:24:29 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:52.0) Gecko/20100101 Thunderbird/52.3.0
MIME-Version: 1.0
In-Reply-To: <CALx6S352Ez=ZusXhb71MZYCr_7O6TUiB+P7QKwzX4=7uAEVSrw@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Language: fr-classic
Content-Transfer-Encoding: 7bit
X-Sgsi-Spamcheck: SASL authenticated,
X-SGSI-Information:
X-SGSI-MailScanner-ID: B474C67DC38.A5FD9
X-SGSI-MailScanner: Found to be clean
X-SGSI-From: olivier.bonaventure@uclouvain.be
X-SGSI-Spam-Status: No
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/GLUCVx1b56n9QuxGp-VFifgnXYc>
Subject: Re: [tcpm] [multipathtcp] Progressing the MPTCP proxy work
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpm/>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 17 Sep 2017 20:24:53 -0000

Tom,

Thanks for your comments.

> For #1 the assumption, the key assertion in the draft is "There are
> some situations where the transport stack used on clients (resp.
> servers) can be upgraded at a faster pace than the transport stack
> running on servers (resp. clients)."-- I think the reality of this is
> quite debatable. Major content provider providers that make up the
> bulk Internet traffic, such as Google and Facebook, upgrade their
> front end web server software at a much faster rate than clients
> typically do. 

Major content providers are one part of the Internet, but not the entire 
Internet. Many companies are still using old servers running Linux 2.x

> There a good examples, TFO for instance, where there was
> support for new TCP features on servers long before clients. 

Looking at TFO servers for example, a recent paper showed that TFO is 
enabled on only 0.1% of the web sites

https://irtf.org/anrw/2017/anrw17-final16.pdf

and 80% of these sites are part of Google's AS.

> The other
> part of this is that the solution assumes client support of MPTCP.
> AFAIK Android (which represents a huge number of clients) does not
> ship with an MPTCP implementation even though its been part of IOS
> since 2013. So, the real question that should be asked is why isn't
> MPTCP being deployed which leads to problem #2.

In Korea, Samsung and LG have deployed MPTCP on various types of Android 
smartphones.

> I suspect a major reason that MPTCP is not deployed in Android or
> servers is that fact that upstream Linux has not adopted the
> implementation. There was an effort a while back to get it into the
> stack, however there was pushback because of the invasiveness of the
> code (it was 1000's of lines of core TCP code change). Unfortunately,
> the developers didn't followup and continue working on reducing the
> complexity of implementation. I think with enough persistence in
> addressing the feedback the code would eventually make it in. 

I agree, there is engineering effort to bring MPTCP in the mainline 
Linux kernel, but this is outside the scope of IETF.

> Even so,
> acceptance into Linux is not a requirement for deployment. Google and
> Facebook could be running MPTCP on their servers, and Android could
> shipped with MPTCP support. I suspect the reason they're not doing
> that is motivation. If they were convinced that MPTCP is a great value
> to users, they can make deployment happen quickly.

Apple is using MPTCP on both their clients and their servers. Starting 
with iOS11, all applications will be able to use MPTCP. This is a 
reasonable deployment AFAIK. Korea is another example.
> 
> For #3, the problems of the interim solution need to be elaborated.
> TCP is an end to end protocol, and we know that whenever a middlebox
> attempts to transparently process TCP some things will break. As
> section 5 states "The Converter protocol was designed to be used in
> networks that do not contain middleboxes that interfere with TCP." --
> the irony of this statement is that the converter itself becomes a
> middlebox that interferes with TCP. The converter has many of the same
> issues of other middlebox solutions (proxies, firewalls) in the
> network that are invasive at the transport layer. 

Agreed, but note that the converter was designed to enable the client to 
detect when the server supports the required extension (e.g. MPTCP) so 
that it can stop using the converter to reach this particular server. 
This means that as a particular extension gets deployed, the utilisation 
of the converter will diminish.

> For instance E2E
> security (e.g. TCP-AO) is likely broken. 

If a client requests TCP-AO, then it's clear that this TCP connection 
should not go through a converter.

> Also, I have to wonder about
> the case where the client and server support an option that is unknown
> to the converter-- say for instance that an experimental option is
> being used for a new feature such as we did with TFO. In this case I
> don't see how the converter can deal with the option, passing it
> through between MPTCP and non-MPTCP may or may not be correct. So
> probably the only reasonable behavior is to drop unknown options. 

The client can detect which options are supported by the converter. If 
the client wants to use an option that is not supported by a specific 
converter, it should not use this particular converter.

> But,
> then that means the endpoints would be bound to using only TCP options
> that the converter supports, so ultimately the converter is an
> obstacle not a facilitator for deploying new options. 

No because the client can decide to not use the converter.

> Perhaps the
> biggest irony of this proposal is that the converter is stateful for a
> connection, so all packets must flow through a single point in the
> network. Like stateful firewalls, this inevitably becomes a bottleneck
> and a single point of failure. 

This is a drawback of using a converter, but one needs to compare this 
drawback with the benefits of using the option on a part of the 
end-to-end path.

> I believe that is nearly the exact
> opposite of what MPTCP endeavors to provide.

It depends where the converter is located. If you consider a smartphone 
use case, a converter placed in an ISP backbone could enable its users 
to combine WiFi and 4G to reach any server with MPTCP. There is a real 
benefit in doing this as shown by the deployments in Korea, Turkey or 
Thailand. Hybrid access networks that combine xDSL and LTE are another 
example where the client benefits from combining different networks with 
MPTCP.

> A few comments about the text:
> 
> In several places the term "TCP extensions" is used, I think "TCP
> options" is the more correct term.

Thanks, I will reread the document again to catch those.

> In Section 2.1:
> 
> The arguments that SOCKS can't be used are not entirely convincing to me.
> 
> "the converter protocol leverages the TFO option [RFC7413] to place
> all its control information inside the SYN and SYN+ACK packets."
> 
> I'm not sure what "control information" means here. Is this referring
> to TCP options, an inband control protocol, or something else?

This relates to the TLV messages of the converter protocol.
> 
> It seems to me that support for SOCKS to use TFO should be
> straightforward, in fact the draft even states that has been proposed
> for SOCKS.
> 
> "A second difference is that the converter protocol takes the TCP
> extensions explicitly into account."
> 
> Per #3 above, the converter can only take into account TCP options
> that it understands and it can't deal with options like TCP-AO that
> must be truly end to end. Given these limitations, and the fact that a
> SOCKS should be running on an modern TCP stack that supports all the
> common options, I'm not sure how much tangible value there is in this
> difference.

The converter enables the client to detect which options are supported 
by the final server so that the client can bypass the converter if the 
server supports the required options.
> 
> The third argument may have merit, but I would point out that this
> difference applies to all proxies and they are ubiquitous in
> deployment. Also, we are adding kProxy (in kernel proxy) for the Linux
> stack which actually would allow SYN forwarding in proxies without
> finishing client side connection establishment to give the same effect
> of the solution in the draft.

Excellent


Thanks


Olivier