Measurement methodology

To enable smartphone to use Multipath TCP, the device must have a Multipath TCP capable kernel.
However, today only few servers are Multipath TCP capable.
Moreover, it is difficult to collect both WiFi and cellular traces without cooperation from an ISP.
To overcome these issues, we set up a Multipath TCP SOCKS proxy and relayed the TCP traffic to it.
Details to achieve these objectives are shown in the following sections.

Installing the proxy

We set up a machine with Debian Wheezy and applied Multipath TCP v0.89.5 (kernel available here).
To run services like ShadowSocks on it, we rely on Docker.
In particular, we set up a Dockerfile to build a ShadowSocks server here.
Relative to the default configuration provided in config.json, we advise you to set the listening port to a well-used one (like 443 or 80) to avoid firewall and other middlebox interferences.
To limit the overhead of SOCKS, you can also change the encryption method to the table one, which is the lowest one.
Notice that at the time of the writing, ShadowSocks does still not support IPv6, so you will collect only IPv4 traces.
Finally, to collect traces, you can launch tcpdump.

Multipath TCP on smartphones

We conducted experiments on rooted Nexus 5 devices with version 3.4 of the Linux kernel.
To make them Multipath TCP capable, one needs to backport the wanted version of Multipath TCP to this kernel.
For the Nexus 5 running of Android AOSP 4.4.2, a boot.img of Multipath TCP version 0.86.7 is available here.
Once flashed, the device is able to start Multipath TCP connections.

However, smartphones with Android 4.4 assume that only one wireless interface is active at a time.
This means that when such a device switches from cellular interface to WiFi one, it automatically resets all existing TCP connections by using Android specific functions.
To overcome this issue, we installed a special Android application managing the utilization of the cellular and WiFi interfaces that enables both interfaces simultaneously.
Notice that this application requires root.

To relay the TCP traffic to the SOCKS proxy, the ShadowSocks Android client is installed on smartphones.
In our experiments, we relayed the DNS traffic over TCP, and thus to the SOCKS proxy.
To ensure that users will stay connected to the proxy even if their device reboots, the option "Auto Connect" can be checked.