Skip to content

Instantly share code, notes, and snippets.

@Speedy1991
Last active January 10, 2017 20:15
Show Gist options
  • Save Speedy1991/8917de138b00705a9231c1e1c51608d0 to your computer and use it in GitHub Desktop.
Save Speedy1991/8917de138b00705a9231c1e1c51608d0 to your computer and use it in GitHub Desktop.
Set up Raspberrypi3 with MPTCP
References:
[1] https://www.raspberrypi.org/documentation/linux/kernel/building.md
[2] https://www.raspberrypi.org/downloads/raspbian/
[3] https://www.raspberrypi.org/documentation/linux/kernel/patching.md
[4] https://wiki.ubuntuusers.de/Kernel/Kompilierung/#Konfigurations-Werkzeuge
[5] https://multipath-tcp.org/pmwiki.php/Users/DoItYourself
[6] https://github.com/multipath-tcp/iproute-mptcp.git
[7] https://multipath-tcp.org/pmwiki.php/Users/Tools
[8] http://mytechpg.blogspot.de/2016/07/mptcp-raspberrry-pi-and-yocto.html
[9] https://github.com/mytechpg/meta-mytechpg.git
I AM NOT RESPONSIBLE FOR ANY DEMAGES TO YOUR DEVICES. FOLLOW THESE INSTRUCTIONS ON YOUR OWN RISC
Compiling mptcp into a default raspbian kernel on a Raspberrypi3
dd the downloaded Raspian from:
https://www.raspberrypi.org/downloads/raspbian/
The Lite version is enough
(Advised by [1], dunno if its rly needed)
sudo apt-get install bc
Get the MPTCP patch from Andrea: (Credits: http://mytechpg.blogspot.de/2016/07/mptcp-raspberrry-pi-and-yocto.html)
git clone https://github.com/mytechpg/meta-mytechpg.git
(The file we want is https://github.com/mytechpg/meta-mytechpg/blob/master/recipes-kernel/linux/files/6001_mptcp_4.1.21.patch if u dont want to clone the whole repo)
(yes you also can compile with yocto, but its bit complicated to get apt, iproutepatch, etc. working)
Get Kernel Sources and patch:
git clone https://github.com/raspberrypi/linux
cd linux
git checkout rpi-4.1.y
KERNEL=kernel7
cat $PATCHFILE | patch -p1
make bcm2709_defconfig
We have now a default config for our Kernel without any enabled MPTCP
For configuration i prefer make nconfig (sudo apt-get install libncurses5-dev) [4]
Next step is enable MPTCP in the kernel config:
make nconfig
Follow the steps mentioned in https://multipath-tcp.org/pmwiki.php/Users/DoItYourself
CARE: You have to enable IPV6, module is NOT enough!!! If you dont change it, the MPTCP entry wont show up and is hidden!
("You cannot set IPv6 as a module. Either compile it into the kernel, or disable it"[5])
after saving with f9:
make -j4 zImage modules dtbs
sudo make modules_install
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
sudo scripts/mkknlimg arch/arm/boot/zImage /boot/$KERNEL.img
[1]
reboot and u are finished :)
check it with e.g.: sysctl net.mptcp.mptcp_enabled
To control MPTCP we could need some useful tools:
git clone https://github.com/multipath-tcp/iproute-mptcp.git
cd iproute-mptcp
To build this we need some packages:
sudo apt-get install bison flex libdb-dev
Now we can build:
make
Here are some examles how to use them:
https://multipath-tcp.org/pmwiki.php/Users/Tools
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment