This is the repository for the NorNet Multi-Path TCP (MPTCP) kernel package repository for:
Add signature key:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 21412672518D8B2D1862EFEF5CD5D12AA0877B49
Add repository (add to /etc/apt/sources.list):
# Thomas Dreibholz's MPTCP kernel repository:" deb [arch=amd64] https://packages.nntb.no/nornet-kernel/ubuntu/ <CODENAME> main deb-src [arch=amd64] https://packages.nntb.no/nornet-kernel/ubuntu/ <CODENAME> main
Replace <CODENAME> by the codename of your distribution, i.e. jammy, focal, bionic, xenial, buster, bullseye, testing!
Update package lists:
sudo apt update
List available packages:
apt-cache search linux | grep "^linux-" | grep "mptcp-"
Install desired kernel and headers:
sudo apt install -y linux-image-<VERSION>-mptcp-<VARIANT> linux-headers-<VERSION>-mptcp-<VARIANT>
Recommended kernel settings (add to /etc/sysctl.conf) for MPTCP usage:
# ------ Custom settings ---------------------------------------------------- # Enable ECN: net.ipv4.tcp_ecn=1 # ------ TCP settings ------------------------------------------------------- # Turn off auto-tuning of the TCP receive buffer size: net.ipv4.tcp_moderate_rcvbuf=0 net.netfilter.nf_conntrack_icmp_timeout=60 net.core.rmem_default=212992 net.core.rmem_max=134217728 net.core.wmem_default=212992 net.core.wmem_max=134217728 net.ipv4.tcp_rmem='4096 87380 134217728' net.ipv4.tcp_wmem='4096 16384 134217728' net.ipv4.tcp_mem='134217728 134217728 134217728' net.ipv4.route.flush=1 net.ipv6.route.flush=1 # ----- MPTCP settings ------------------------------------------------------ net.mptcp.mptcp_enabled=1 net.mptcp.mptcp_path_manager=fullmesh
Reboot with the newly installed kernel. After that, you can test MPTCP with NetPerfMeter:
Server side:
netperfmeter 9000
Client side:
netperfmeter <SERVER>:9000 -control-over-tcp -tcp const0:const1400:const0:const1400:cmt=mptcp,pathmgr=fullmesh
The -control-over-tcp option is only necessary over firewalls/NAT, where SCTP gets blocked. By default, NetPerfMeter uses SCTP for a control connection to the server.
The image builder scripts can be found in https://github.com/simula/nornet-control. The images in this repository have been generated by the script build-kernels.
The NorNet kernel configuration can be found in https://github.com/dreibh/planetlab-kernel. The configuration changes in addition to a regular Ubuntu/Debian kernel are in the file config-planetlab.
The NorNet kernel configuration can be found in https://github.com/dreibh/mptcp, forked from upstream https://github.com/multipath-tcp/mptcp. The relevant branches for the packages in this repository are td-socketoptions-<MTPCP_VERSION>-<KERNEL_VERSION>.
02.03.2022 Thomas Dreibholz