Secure Multipath Communication Protocols
Download the patched MultipathTCP kernel from https://github.com/scrye/mptcp.
Compile the kernel with MPTCP support and the fullmesh path manager.
The following headers have changed and need to be copied in the include path:
include/asm-generic/poll.h
include/linux/tcp.h
include/x86_64-linux-gnu/bits/poll.h
The connection between client and server must have exactly two subflows (including the master subflow). Between a single pair of IP addresses you can configure the mptcp_fullmesh path manager on the client machine to open two subflows:
echo '2' > /sys/module/mptcp_fullmesh/parameters/num_subflows
Build the binaries using make
.
apps/client
connects to apps/server
and downloads a single file, passed as argument, over an encrypted multipath connection. To run the test, first create a new file for transfer:
dd if=/dev/urandom of=smallfile.dat bs=1 count=512
Run apps/server
on the Server machine:
LD_PRELOAD=../smkex/libsmkex.so ./server -i 0.0.0.0 -f smallfile.dat
Run apps/client
on the Client machine, replacing 192.168.241.2
with the IP of the Server machine:
LD_PRELOAD=../smkex/libsmkex.so ./client -i 192.168.241.2 -p 1337 -f recv.dat