LWN.net Logo

Fundamentally modifications to TCP are necessary

Fundamentally modifications to TCP are necessary

Posted Mar 30, 2013 20:25 UTC (Sat) by giraffedata (subscriber, #1954)
In reply to: Fundamentally modifications to TCP are necessary by paulj
Parent article: Multipath TCP: an overview

There is no way in IP to treat multiple IP addresses as one logical IP [address]

The MPTCP alternative I'm thinking about wouldn't do that. The client would use one IP address and the overall IP network would route via either the 3G or wifi network based on its own policies.

For example, the handset has IP address 1.2.3.4 on the wifi network and 4.3.2.1 on the 3G network. All outgoing packets from the handset bear source IP address 1.2.3.4. All packets the server sends to the handset bear destination IP address 1.2.3.4. The server's routing table (or the routing table in its default router) shows that in addition to the normal routes, 4.3.2.1 is a route to 1.2.3.4.

Does that work?


(Log in to post comments)

Fundamentally modifications to TCP are necessary

Posted Mar 30, 2013 20:39 UTC (Sat) by dlang (✭ supporter ✭, #313) [Link]

The problem is that when the other side needs to reply to you, it sends packets out with a destination of your 1.2.3.4 IP address

every router along the way will have one best path to get to 1.2.3.4, and so all the traffic will go down that path.

It's this best path priority routing that lets the Internet work as well as it does, but it means that if you have two completely different connections, and you want to use them both, you have to split the traffic between two different IP addresses, one for each connection, so that the traffic to you will get split between those connections.

The nice thing with multipath TCP is that it can do this under the covers (in a library or in the kernel).

With multipath TCP widely available, you could even have this implemented in a router. The router would have multiple connections, and proxy the TCP connection into multipath TCP, utilizing the multiple connections that it has completely transparently to the endpoint machine.

Fundamentally modifications to TCP are necessary

Posted Mar 30, 2013 20:42 UTC (Sat) by dlang (✭ supporter ✭, #313) [Link]

Clarifying one point that I skipped

Routing on the Internet is done one hop at a time.

your default routers don't talk directly to the server, they talk to other routers that talk to other routers.... that talk to the server.

It's common to have 10-20 routers in the path for some connections (do a traceroute to the server to see the routers that your traffic to the server goes through, and keep in mind that the traffic from the server back to you may go through a different series of routers)

Fundamentally modifications to TCP are necessary

Posted Mar 31, 2013 1:01 UTC (Sun) by giraffedata (subscriber, #1954) [Link]

Thanks; that explains it. I forgot that every router along the way would be independently choosing a route to the destination.

Fundamentally modifications to TCP are necessary

Posted Mar 30, 2013 22:30 UTC (Sat) by paulj (subscriber, #341) [Link]

So does the intermediary node with the "4.3.2.1 is also a destination for 1.2.3.4" routing entry also send copies of the packet to 4.3.2.1? Or just to 1? If copies, what happens if the copies also go through intermediaries that create copies?

Is this more efficient than just letting the end-stations create additional flows between any additional IP addresses? If yes, how?

Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds