Dual Path TCP: An application for dual path TCP
Dual-Path at here means the packet will be ensure by double transmit.
As the dp-tcp started, it will create a network interface for proxy real data packet. At the above image, packet from blue network interface to green network interface is doing packet duplication, and the packet from green network interface to blue network interface is doing packet elimination.
For duplication, it just duplicates the packet read from blue network interface and write to both TCP links.
For elimination, dp-tcp used a hashmap to store packet record. This map is efficient and safe for doing concurent map read/write. The record stored in the map is not the original raw packet since it may be very large. dp-tcp used xxhash, a quick hash function, for hashing the packet into an uint64 value, which makes it easy stored.
With using hashmap and xxhash, this dp-tcp is achieve a very efficient way to manage packets and connection reliable.
git clone [email protected]:Alonza0314/dp-tcp.git
cd dp-tcp
make-
Server
sudo ./build/dp-tcp server -c config/server.yaml
-
Client
sudo ./build/dp-tcp client -c config/client.yaml
After starting, user can used the created network interface to do your own application. But dp-tcp will not set the IP route rule. This can be customizd by your own.
-
Clone and make
git clone [email protected]:Alonza0314/dp-tcp.git cd dp-tcp make
-
Start and enter namespace
-
ncat test
- "github.com/songgao/water": used to bring up network device.
- "github.com/cornelk/hashmap": safe concurrent map.
- "github.com/cespare/xxhash/v2": quick hash for operating packet hashing


