go-any-proxy icon indicating copy to clipboard operation
go-any-proxy copied to clipboard

MPTCP (Multipath TCP) support/testing

Open dumblob opened this issue 7 years ago • 3 comments

Any Proxy seems to be a good piece for the following puzzle.

In a datacenter there is a server S with a high-speed connection directly to the internet. Somewhere else is my notebook N with several UMTS/LTE usb modems connected and running (i.e. through each modem I can access the internet). On N and on S is a Linux kernel supporting MPTCP. I would like to stream all TCP traffic (that includes also all higher layers like HTTP, HTTPS, FTP, etc.) and if possible also DNS traffic (but that's just a nice-to-have as it could be solved using some tricks like DNS with multihomed-routing) between S and N (of course both ways).

Naive possible solution: To leverage MPTCP, we need something like a peer-to-peer connection (e.g. any tunnel like VPN or SOCKS or just some proxy protocol - e.g. the one squid uses) and then a corresponding configuration on S and N which directs all data through the "p2p tunnel".

What everything do you think would be needed for this use case from the any_proxy point of view?

dumblob avatar Jun 29 '17 21:06 dumblob

Sorry for the delay; GitHub didn't email me when you opened this issue. If the kernel on N just needs to open a TCP socket to S for each path, then you could set up a vyatta machine running any_proxy that serves as the default gateway for N and it should work. But do you need any_proxy? It's intended for giving machines access to the internet that don't have a direct route. This is common in large corporations where they don't allow machines to make connections directly to the internet; instead, they force machines to connect through a proxy server like squid.

ryanchapman avatar Jul 11 '17 05:07 ryanchapman

But do you need any_proxy?

In principle not. The question starts to get interesting though once you're moving all the time in the whole continent with the notebook and can't have any other box with vyatta running on it (well, the virtual appliance, which could run directly on the notebook, is also an extreme overkill).

Proxies in general are built around a highly efficient bidirectional reliable communication between two network nodes. So I just wanted to know, whether any_proxy would support MPTCP. This usually requires some work as MPTCP extends the standard unix sockets - see ftp://ftp.fu-berlin.de/doc/rfc/authors/rfc6897.xml#rfc.section.3.2.2 and ftp://ftp.fu-berlin.de/doc/rfc/authors/rfc6897.xml#sec_query_addr (IPs may be added and removed dynamically very often) and ftp://ftp.fu-berlin.de/doc/rfc/authors/rfc6897.xml#sec_basic_sockets (new API supporting the dynamics of addition and removal of subflows).

dumblob avatar Jul 26 '17 17:07 dumblob

TODO for anyone wanting to send in a PR: look into feasibility of MPTCP within any-proxy

ryanchapman avatar Jul 06 '18 02:07 ryanchapman