Re: [multipathtcp] potential MPTCP proxy charter item

Alan Ford <> Wed, 09 November 2016 13:39 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 4EF5C1294FB for <>; Wed, 9 Nov 2016 05:39:02 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id gSpYQ2fObude for <>; Wed, 9 Nov 2016 05:38:59 -0800 (PST)
Received: from ( [IPv6:2a00:1450:4010:c07::232]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 10B5E12998C for <>; Wed, 9 Nov 2016 05:38:55 -0800 (PST)
Received: by with SMTP id t196so164984423lff.3 for <>; Wed, 09 Nov 2016 05:38:54 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20120113; h=mime-version:subject:from:in-reply-to:date:cc:message-id:references :to; bh=im1B07b9ZvESnRlDcLyRBsRB+kDdisc9AwFdPEtfbFA=; b=USkhgFv7OQWsfDsSG+Sy1CGyNattKqN8JEMAuyfW5hFib7U3l4Eal5ago5+E+CPu9b /x/lgKd2XjjdR6vY4Y/qzkQHrLXCM4HpVXNYd+sH3Ass17V8yHlFMQ8tY1rYuB4bXA9Y CjzENHoEBqMuUb75wyuOElwSF9779OjJqbFCpiC919vmQFJVm669SN88PW0w7Fm/0WUo /UFmPvBj/MYfqg05iJ0pxw72SNlxVxrE+T8EqOuCT4LzD10Z/a6UM32mFnBQJXMPl0RF Nw+QABe+t/IzARvQTQX4d6SWYB+IW3Swxl/74gLU1QTPbRZLlAViCyVIEx6pmUKrCOQ1 fy6g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20130820; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :message-id:references:to; bh=im1B07b9ZvESnRlDcLyRBsRB+kDdisc9AwFdPEtfbFA=; b=lYpr0j73Btvq1ov9v0LQqAVOGZ/h+W6slFwijqzVTh8kRzBfeBaADhtfHOwAyMfd00 9OuaQpSF534u7Hs2R9XmJXTK9WH2kfWUBOKxYHvHFiPZ1wt8/Y9mgUtQdZrhJmK50phs 3pbwbwBTBbW3tN29AMaH9CFDtj1j2tE8JgNOsu6/2pkG9pQYEfnmw85BfH87SGn+v7Sv Ity7gvXbN09quE7RxRJBVd2xSNPyzof69uwh3fY2qjH82fr0l8yCK6WlKl14BUNeoldh jF4IhkBTCp+XOKgY0ODKS5p/Zp8WxtVKIBR7lu+HsaaLiCtqd07VTU/EqaEIcheTplPD g4rQ==
X-Gm-Message-State: ABUngve8Spq5V5JUR50FDOyQdsYDsE5VSXFugb2s/bLOj0QzDR7av8QqZluv4J8NZcp0jQ==
X-Received: by with SMTP id c204mr8704754lfg.70.1478698733062; Wed, 09 Nov 2016 05:38:53 -0800 (PST)
Received: from ([]) by with ESMTPSA id 33sm4227991lfy.44.2016. (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 09 Nov 2016 05:38:52 -0800 (PST)
Content-Type: multipart/alternative; boundary="Apple-Mail=_234B9550-3A4E-4585-B2E1-9925E3068F04"
Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
From: Alan Ford <>
In-Reply-To: <787AE7BB302AE849A7480A190F8B933009DAE7DC@OPEXCLILMA3.corporate.adroot.infra.ftgroup>
Date: Wed, 09 Nov 2016 13:38:51 +0000
Message-Id: <>
References: <> <> <787AE7BB302AE849A7480A190F8B933009D9577B@OPEXCLILMA3.corporate.adroot.infra.ftgroup> <22907_1476946228_58086934_22907_5464_1_a7bca8d2-7656-4ff0-9f01-cf307f017148@OPEXCLILM42.corporate.adroot.infra.ftgroup> <> <> <b8bfd5c6-21eb-4c4f-879a-851c3a71792a@OPEXCLILM31.corporate.adroot.infra.ftgroup> <> <787AE7BB302AE849A7480A190F8B933009D9CA84@OPEXCLILMA3.corporate.adroot.infra.ftgroup> <> <787AE7BB302AE849A7480A190F8B933009DAAA88@OPEXCLILMA3.corporate.adroot.infra.ftgroup> <> <> <> <> <787AE7BB302AE849A7480A190F8B933009DAE3A6@OPEXCLILMA3.corporate.adroot.infra.ftgroup> <> <787AE7BB302AE849A7480A190F8B933009DAE743@OPEXCLILMA3.corporate.adroot.infra.ftgroup> <> <787AE7BB302AE849A7480A190F8B933009DAE7DC@OPEXCLILMA3.corporate.adroot.infra.ftgroup>
X-Mailer: Apple Mail (2.3124)
Archived-At: <>
Cc: "" <>
Subject: Re: [multipathtcp] potential MPTCP proxy charter item
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Multi-path extensions for TCP <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 09 Nov 2016 13:39:02 -0000

Hi Med,


> On 9 Nov 2016, at 09:45, wrote:
>> -----Message d'origine-----
>> De : Alan Ford []
>> Envoyé : mercredi 9 novembre 2016 09:04
>> Cc : Mirja Kühlewind;;
>> Objet : Re: [multipathtcp] potential MPTCP proxy charter item
>> Hi Med,
>> Thanks for providing some scenarios. Comments inline…
>>> On 9 Nov 2016, at 06:41, wrote:
>>> Hi Alan,
>>> Below some examples to illustrate the problem I'm talking about.
>>> (1) Private IPv4 addresses or RFC6598 Shared Address space
>>> Let's consider this configuration (reusing the same topology in this
>> thread):
>>> laptop <-----------+
>>>                  | (Public IPv4@)
>>> smartphone <----> cpe <----FIXED------> mcp <------> server
>>>    +             +
>>> cellular1     cellular2
>>>               (Private IPv4)
>>> In this example, the multipath CPEs gets a public IPv4 address from the
>> fixed network and a private IPv4 address (or an address from RFC6598
>> range) from the mobile network (cellular2).
>>> Consider the server is MPTCP-capable.
>>> The first subflow can be placed using the fixed line. Fine.
>>> The MCP will remove itself from the connection because the server is
>> MPTCP-capable. Cool!
>>> The second subflow that will use cellaulr2 cannot be established because
>> of a basic forwarding problem: packets sourced with private IPv4 addresses
>> cannot be forwarded over the public Internet.
>> Presumably cellular2 goes through a NAT in order to talk to anything in
>> the public Internet. So it can be addressed to the server, and work like
>> any other MPTCP subflow behind a NAT would work today.
> [Med] You are assuming that the same Internet APN will be used for the hybrid access. This is not a valid assumption. Some deployment are considering dedicated APN for this service to avoid additional public IPv4 address are assigned to this service and also to avoid overload the service function at the Gi interface with traffic that will be routed to the backbone of the same provider.

Regrettably I’m not familiar with all these 3GPP terms here, however are you saying that cellular2 would not be able to have external, public, IP connectivity? If not, what’s the point of that interface? I was assuming that it would, and therefore would be able to talk direct to the server.

>> What am I missing? Why is this any different to today with a MPTCP end
>> host with private IP addresses?
> [Med] The difference is that there is no NAT in the path before the MCP. The MCP has the role to use the IP address assigned by the fixed line when forwarding the secondary subflow. 

I wasn’t talking before the MCP; in this scenario we are talking that the MCP gets out of the path - so what cellular2 needs to do is reach the server to open the second subflow.

>> The smartphone does not have knowledge of cellular2, presumably… So the
>> CPE would have to do something funky with the traffic to split it over
>> fixed and cellular2
> [Med] This is a proxy function (MCP) in the CPE! I didn't focused on that part of the flow because there are other problems there. If the CPE does not embed an MCP, an MPTCP capable host (laptop of smartphone) may not be able to aggregate the resources of multiple access links. Going native will lead to less QoE compared to involving the MCP located in the CPE. 
> - but it could still establish the subflow towards the
>> server on cellular2, without any knowledge of the smartphone or the
>> network.
>>> (2) IPv6-only access network
>>> Lets' consider this configuration:
>>> laptop <-----------+
>>>                  | (Public IPv4@
>>> smartphone <----> cpe <----FIXED------> mcp <------> server
>>>    +              +                                IPv4-only
>>> cellular1     cellular2
>>>               (IPv6-only prefix)
>>> In this example, the multipath CPEs gets a public IPv4 address from the
>> fixed network and an IPv6 prefix from the mobile network (cellular2).
>>> Consider the server is MPTCP-capable, but IPv4-only.
>>> The first subflow can be placed using the fixed line. Fine.
>>> The MCP will remove itself from the connection because the server is
>> MPTCP-capable. Cool!
>>> The second subflow that will use cellaulr2 cannot be added because the
>> remote server does not support IPv6.
>> So in this case, if the MCP was on-path, it could be dual-stack and could
>> add its IPv6 address to the subflows.
> [Med] Yes. 
>> If the MCP knew the connection was being proxied, would this help? Since
>> as you’ve already defined, the MCP <—> server path would then be TCP. If
>> the MCP stayed on-path, you could do multi path towards the MCP but then
>> lose MPTCP capabilities to the server.
> [Med] The MCP can do the following:
> * It removes itself from the connection, then the connection will be e2e MPTCP... but only one access network will be used at the client side.
> * The MCP may decide the stay in the connection to glue two adjacent MPTCP connections. Doing so, we benefit from both MPTCP capabilities at the client and servier side. 
> The exact behavior should IMHO be configurable. 

So the desire is for the CPE to make this choice, based on some internal logic, and without having a MCP address to explicitly communicate with?

>> Or alternatively, the MCP could always stay on-path but only add IPv6
>> addresses if it somehow had knowledge that was required based on the
>> source or destination address. Does it need to know by a flag? Would there
>> actually be any harm by maintaining itself on the path anyway?
> [Med] I don't see a harm in doing so (see above), but those who want to have an e2e MPTCP connection may see something bad in that design. I though they wanted to completely remove the MCP from the path when both the client and server are MPTCP-capable. 

That would certainly be desirable, yes. But if not possible, then there’s not much harm with always sitting on the path - it’s a bit like a NAT.

> It’s not
>> like it’s doing anything other than packet forwarding on the initial
>> subflow, and just adds its IPv6 addresses to the initial exchanges in case
> [Med] It needs to terminate the MPTCP connections, mange them, etc. This is exactly the MCP job. 
>> it would be useful - and if it receives traffic to the relevant
>> address/port, it can start forwarding it to the far end too (possibly over
>> a second IPv4 subflow). Again, no need or any explicit signalling to make
>> this work.
> [Med] We are not discussing about any explicit signaling her, Alan. We are discussing the implications on removing the MCP from the path based on SYN/ACK that will carry an MP_CAPABLE option!

My hypothesis here is that an explicit signal is not required if you choose to sit on the path or not based on the presence of MP_CAPABLE in the SYN/ACK.

>>> I can share other examples where problems arise when the proxy is
>> blindly removed from the connection based on the presence of MP_CAPABLE in
>> If it would help to clarify, please do! Since I don’t see a problem in
>> (1), and whilst I can see a potential problem in (2) above, I am not sure
>> how you are resolving it. Any other examples very welcome!
> [Med] Happily. You can consider a homenet architecture where MPTCP-capable hosts may not be aware of the presence of multiple paths (see this simple topology).  The use of a proxy will to deterministically make use of the path diversity.

Great! So the CPE can act as a MCP here, and optionally there could be a secondary MCP in the path to terminate paths for the far ends that do not support MPTCP (i.e. sitting on the path if the SYN/ACK does not contain MPTCP capability, and could advertise its own address in an ADD_ADDR). So why do you need an explicit signal in this case?