-
Notifications
You must be signed in to change notification settings - Fork 66
Linux mptcp with libos
You may want to use Multipath TCP, but you can't, or don't want to replace your host kernel.
This is a wiki for you.
firstly you need to clone libos repository.
git clone https://github.com/libos-nuse/net-next-nuse.git
this repository contains pre-patched Multipath TCP branch so check it out.
git checkout mptcp_trunk_libos
then configure options for multipath tcp.
make menuconfig ARCH=lib
you may need to enable appropriate options like
Networking support => Networking options => MPTCP protocol
then, build it
make library ARCH=lib
you may see liblinux-4.1.0.so at the top directory and libnuse-linux-4.1.0.so at arch/lib/tools
directory.
Now you're ready to go :)
With built library files, you're now ready to use Multipath TCP protocol stack without replacing your host kernel.
To start it, you can use a wrapper script nuse
(which is located under arch/lib/tools) to do this magic with your application.
cd arch/lib/tools/
sudo NUSECONF=nuse.conf ./nuse iperf -c multipath-tcp.org
You need to prepare a config file (nuse.conf): the following is an example of the configuration.
interface eno16777736
address 10.10.0.12
netmask 255.255.255.0
macaddr 00:01:01:01:01:02
viftype RAW
route
network 0.0.0.0
netmask 0.0.0.0
gateway 10.10.0.1
At the time of writing this wiki (Nov.7, 2015), the above iperf sometimes fails with a core dump (not kernel panic/crash, which is cool isn't it ?). But the iperf surely MPTCP enabled !
You can see mptcp capable option in the following captured pcap file.