Monday, January 4, 2016

MultiPath TCP (MPTCP) for OpenWRT

The goal of this post is to describe how to test MultiPath TCP (https://multipath-tcp.org) with OpenWRT (https://openwrt.org/).
The starting point for this page is https://wiki.openwrt.org/doc/uci/mptcp.

You can see how to test MPCTP with OpenWRT here:
http://mytechpg.blogspot.com/2016/01/multipath-tcp-how-to-test-mptcp-with.html

Here you can see how to build MPTCP for Raspberry PI with Yocto
MPTCP, Raspberrry PI and Yocto

How to build OpenWRT with MPTCP 0.90 support

I have created a patch for kernel 3.18.20 adding MPTCP 0.90 functionalities.
It is possible to download the patch from GitHub, with the command

git clone -b linux_3.18.20-mptcp_0.90      https://github.com/mytechpg/mptcp-kernel-patch.git

Then you can change the name to the mptcp_linux_kernel.patch file and copy inside the OpenWRT tree (in the target/linux directory).

To simplify this procedure, I have prepared a script to prepare OpenWRT 15.05 environment.
You can download with this command:

git clone -b patches_0.90  https://github.com/mytechpg/mptcp_openwrt.git

Then you can enter in the mptcp_openwrt directory and execute:

./prepare_openwrt.sh

The script will download OpenWRT and the kernel patch. Then it will apply the kernel patch and also other patches to iproute2 and add MPTCP util (the moment iproute2 patch is not aligned with MPTCP 0.90).

How to build OpenWRT with MPTCP support

First you have to configure your environment with

make menuconfig

Then, you can enable MPTCP in the kernel with:

make kernel_menuconfig

You can find MPTCP options under

Networking Support -> Networking options 


My suggestion is to enable also other path-managers and schedulers, to select your optimal configuration via software.

Next step: testing MPTCP

http://mytechpg.blogspot.com/2016/01/multipath-tcp-how-to-test-mptcp-with.html