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.hinclude/linux/tcp.hinclude/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_subflowsBuild 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=512Run apps/server on the Server machine:
LD_PRELOAD=../smkex/libsmkex.so ./server -i 0.0.0.0 -f smallfile.datRun 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