Subject: [multipathtcp] MPTCP vs Rehash (was TCPM WG status update)

From: Costin Raiciu <[email-masked]>
Date: Tue, 16 Nov 2010 11:21:27 +0200

Bruno,

I've read your draft too and I agree with Richard, it seems to support a subset of what MPTCP does, only focusing on connection mobility. 
On top of that MPTCP allows connections to use multiple paths in parallel (providing reordering, congestion control, etc). 

Re-hash's aim seems to be increasing robustness for mobile client applications. I personally think multipath TCP is a better solution than re-hash because it can probe multiple paths in parallel and literally get the best service at any time. In contrast, re-hash allows connections to use a single address (e.g. 3g/wifi) at any time; this will give significantly worse performance when devices are truly mobile and link properties change quickly e.g. people driving or walking (this is a handwaving argument, we have not run any tests to prove this).

More importantly, I'd like to point out that this type of connection mobility is already implemented in mobile devices as far as I understand: the stack forcibly terminates all connections when their interface goes down and a new one is available, and the applications  reopen connections which will use the new interface. The apps have already been changed to support this. The apps that haven't been changed already probably don't care about this type of robustness that much. With this in mind, I reluctantly admit that MPTCP itself will bring little improvement to apps robustness; re-hash will bring none.

As a clarifying note to richard's comment earlier: MPTCP does support break-before-make mobility, as long as the new subflow is opened while both endpoints have state about the connection (i.e. the original subflow has not reach max timeouts). In practice, this means that if a client is mobile, loses its address and gains a new one in a reasonable amount of time, it will be able to add a subflow to the existing connection, hence supporting break-before-make mobilty.  As rehash, MPTCP does not support simultaneous mobility.

Cheers,
Costin

On 15 Nov 2010, at 12:27, Bruno Mongazon-Cazavet wrote:

> Dear Richard;
> 
> Thank you for looking at TCP-Rehash.
> Please see my comments inline.
> 
> Regards,
> Bruno Mongazon
> 
> Le 10/11/2010 13:51, Scheffenegger, Richard a écrit :
>> Hi Bruno,
>> 
>> After a casual look, it appears to me that a lightweight implementation of MP-TCP can have the same benefits, but does not require the opaque exchange of IPv4 addresses...
> 
> Yes an idea would be to have TCP-Rehash == lightweigth MPTCP
> There are a few design diffferences that need to be looked at.
> 
>> Your use case - that the old L3 address is already no longer available at the time of the rehash - may need to be looked at in MPTCP though (iirc, they do a graceful session setup first (thus can work with NAT mostly), and move data transport only after the successful establishment of the 2nd L3 connectivity, and only then tear down the original L3 connectivity).
> 
> Right but... there is no real constraint on old address availability, thus the old address might still be available.
> A key difference between TCP-Rehash and MPTCP is the session setup. With TCP-Rehash there is no setup, it is a straight move. If it fails, the connection is broken, this would happen anyway if L3 address changes and there is no "move" mechanism. Doing so is just opportunistic but deterministic. MPTCP is more complex since a new connection is setup before the old connection is being "moved".
> From design perspective, would it be that complex for MPTCP to handle rehash design ?
> 
> NAT is a different story (orthogonal i would say) and issue.
> 
>> Perhaps the effort would be better placed on making sure that such light-weight MPTCP implementations remain feasible, instead of defining an alternate method that is addressing only this one aspect, but incompatible with MPTCP otherwise?
> 
> To be honest i have both TCP-Rehash and MPTCP linux kernel source code... my intention is not to define an alternate method ! Rather i posted the TCP-Rehash draft with the intention to provide some additional work on the topic. Convergence and collaboration is of course to be considered. I think my work, although it was not disclosed, started sometimes ago, almost at early MPTCP.
> 
> Please let me know, if from the design point of view, the WG would consider the opportunity to have a lightweight MPTCP that would look like TCP-Rehash.
> 
>> Richard Scheffenegger
>> 
>> 
>> 
>>> -----Original Message-----
>>> From: Bruno Mongazon-Cazavet
>>> [mailto:[email-masked]]
>>> Sent: Mittwoch, 10. November 2010 08:54
>>> To: Eddy, Wesley M. (GRC-MS00)[ASRC AEROSPACE CORP]
>>> Cc: [email-masked]
>>> Subject: Re: [tcpm] WG status update
>>> 
>>> 
>>>   Le 10/11/2010 01:54, Eddy, Wesley M. (GRC-MS00)[ASRC
>>> AEROSPACE CORP] a écrit :
>>>> Hi, for those of you who aren't in Beijing, here's a
>>> snapshot of the TCPM WG status.
>>> 
>>> Hi,
>>> 
>>> I have posted a 00 draft that might be of interest for your working
>>> group. I don't see any mention in your snapshot.
>>> http://www.ietf.org/id/draft-mongazon-tcpm-tcp-rehash-00.txt
>>> 
>>> I will not be in Beijing to present it but i hope to be in
>>> Prague to do so.
>>> I would appreciate the working group can look at it and let
>>> me know if
>>> it could be of any interest and how i shall pursue my contribution.
>>> 
>>> I have done a Linux kernel implementation of the draft and be
>>> ready for
>>> a demo in Prague.
>>> 
>>> Best Regards,
>>> Bruno.
>>> _______________________________________________
>>> tcpm mailing list
>>> [email-masked]
>>> https://www.ietf.org/mailman/listinfo/tcpm
>>> 
> 
> _______________________________________________
> tcpm mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/tcpm

---

From: Bruno Mongazon-Cazavet <[email-masked]>
Date: Tue, 16 Nov 2010 12:26:29 +0100

Costin,

Thanks for having read the draft.
I did not want to go into MPTCP vs Rehash considerations (and that's the 
reason i posted in TCPM wg) but it seems ineluctable.
So let's go deeper and please see inline.

I would also be interested to have additional opinions from wg members.

Regards,
Bruno

> I've read your draft too and I agree with Richard, it seems to support a subset of what MPTCP does, only focusing on connection mobility.

[bm] Yes. But connection mobility in the wide sense, including mobility 
and load-balancing.

> On top of that MPTCP allows connections to use multiple paths in parallel (providing reordering, congestion control, etc).

[bm] Yes. MPTCP relies on the "path" and "parallelism" concepts. 
TCP-Rehash excludes these concepts from the beginning of design. In 
particular, TCP-Rehash has not been designed according to a rule which 
states that a TCP connection can get benefits in using multiple paths in 
parallel. Moreover i would say that TCP-Rehash has been designed with 
exactly the reverse opinion in mind (philosophy): We don't know if and 
how we can take advantage using parallelism, so just provide a simple 
and lightweight mechanism to allow each TCP connection to be migrated on 
both ends agreement.

> Re-hash's aim seems to be increasing robustness for mobile client applications. I personally think multipath TCP is a better solution than re-hash because it can probe multiple paths in parallel an…

[bm] Right, MPTCP provide more functionnalities. However there is a cost 
(probing, TCP options overhead on all data). TCP-Rehash only aims to 
provide the minimal capability at the minimal cost. I personally think 
that providing alternatives is always a good option. As far as 
performance are concerned we probably need a closed look. I would not 
bet TCP-Rehash is not suited fro "truly mobile", since connection rehash 
involves only sending a TCP option in a outgoing packet.

> More importantly, I'd like to point out that this type of connection mobility is already implemented in mobile devices as far as I understand: the stack forcibly terminates all connections when their interface goes down and a new one is available, and the applications  reopen connections which will use the new interface. The apps have already been changed to support this.

[bm] TCP-Rehash is exactly done to avoid this by bringing the capability 
at transport level to the benefit of all applications. There are still a 
bunch of applications that do not implement such behavior, why should they ?

>   The apps that haven't been changed already probably don't care about this type of robustness that much. With this in mind, I reluctantly admit that MPTCP itself will bring little improvement to apps robustness; re-hash will bring none.

[bm] I disagree. Applications do care about robustness. Most of them 
need to handle socket() errors and in most case they fall into 
unavailability or interruption. With either MPTCP or TCP-Rehash they 
could keep the same code but just do not execute it because the 
transport has been improved. So MPTCP could bring minimal to high 
improvement and TCP-Rehash only minimal (but essential?) improvement.

> As a clarifying note to richard's comment earlier: MPTCP does support break-before-make mobility, as long as the new subflow is opened while both endpoints have state about the connection (i.e. the…

[bm] TCP-Rehash can be synced with address management in different and 
open manners. What could trigger an individual connection rehash is 
outside the scope of my draft. Trigger can be the address change of a 
single interface or additional interface(s) addition. There is no 
restriction although there might be strategies of common sense. For 
example i tried rehash in the following situations:

-pure handoff
-offloading some connections when multiple interfaces are available

Both rely on the same TCP enhancements (rehash) but the music is played 
in a different way. Just a matter of the director. In all cases, you 
cannot say Rehash does not support simultaneous mobility.

Regards,
Bruno.