Introduction
This project intends to make a high-bandwidth, low-latency, roaming-capable connection between two computers utilizing multiple computers.
Problems
Unstable Internet connection
This is inevitable and self-evident in some regions.
different ISPs
A Computer have access to different gateways of different ISPs at the same time or may switch at different time. We want to aggregate their bandwidth and / or achieve fault-tolerant / roaming capability.
Asymmetric routing
Different ISPs have m different bi-directional routing quality to n different machines on the global Internet. So there will be m \times n different routes, with each one perhaps having a asymmetric inbound and outbound route (data packets passing through different physical link).
For example, traceroute
between a computer with China Mobile (CMCC) carrier and a sever in Amazon Seoul DC shows CMCC → Seuol packets go through Equinix Japan, while Seuol → CMCC packets will go through Korea Telecom directly to China, which means lower latency. There are more problems to consider such as packet dropping rate, bandwidth and QoS.
A charming problem
Can we force the traffic travel in the optimal route, to meet specific requirements such as least congestion or lowest latency, by making use of different ISPs and different servers around the globe?
We may need to build upon existing tools such as GeoDNS, CDN, Multi-path TCP , Multi-path QUIC, WireGuard, Cassandra.
high bandwidth utilization
The request to download a large file is split to multiple fragments on different servers, then proxy-passed to the destination. All pieces of data are concatenated together. After a while, some low-bandwidth connections may be terminated to avoid slow downloading of file tail. It is kind of like a round-robin style proxy in proxychains
.
robust and low latency
A robust and low-latency connection is idea for an SSH / VNC session. It is extremely annoying to manage a remote server in a high congestion(high packet loss) and high latency network environment.
Every request is passed to all servers, traffic pulled back from all servers and once the first one arrive and integrity is proved, packets from other servers will be of no use.