OpenMPTCProuter: True Bonding of 2 WAN connections for cheap!

OpenMPTCProuter: True Bonding of 2 WAN connections for cheap!


This post is a follow-up to my previous post “Increase Internet speed by load-balancing two WAN connections with WR740N and OpenWRT”, published in 2018.

(I may have overdid it with the thumbnail, sorry! 😄)

It has long been the “holy grail” of people with high speed Internet needs, but with only low speed “supply”, to bond two Internet connections together and achieve aggregate bandwidth on a single connection.

Load Balancing is easy to achieve, and will speed up multithreaded downloading, with tools such as Internet Download Manager, and torrents, but will not help with single threaded downloads, and also with uploads, which is very important for content creators.

True Bonding was unachievable to mere mortals - those unwilling to pay hundreds of dollars/euros for specialized hardware and a monthly subscription from companies dedicated to selling bonding solutions for the broadcast industry. However, that changes NOW!


In this post I show you how to install the excellent OpenMPTCProuter software, made by Yannick Chabanois, which has truly changed the way I use Internet! But first, I will explain a bit about the setup, and the components that are needed.

OpenMPTCProuter Network Diagram

I will not go into details about the technology of Multipath TCP, that is left for another time.

Ingredients

  • Intel/AMD-based Mini PC with Gigabit Ethernet, at least 1 GB of RAM, and a 8 GB or larger USB flash drive OR Raspberry Pi 4B* with those same specs and an microSD card
  • 5 port Gigabit switch (of the “dumb” - non-managed, non-VLAN - variety)
  • 4 Ethernet cables with 4 pairs (8 wires, Cat 5/5e or better)
  • 2 Internet connections - and modems (can be DSL, cable, 4G, fiber, WISP, or whatever…) **
  • Cloud VPS with 1 GB of RAM and at least 1 vCore, as closest to you as possible (ping time matters!), with network speed greater than 120% of what you expect to achieve ***

* Note: You cannot use a Raspberry Pi 3B or less, unless you have less than 90 Mb/s of total Internet speed available, as the Ethernet port of the Pi 3B is limited to 100 Mbps total. Additionally, the Pi 3B’s CPU is slower which can cause problems with the bonding and trigger packet loss or cause the Pi to crash.

** Note: You cannot use a FTTB deployment where you are provided only an Ethernet cable to your apartment that you plug into a router! Only ISPs which provide a CPE (modem/router) can be used!

*** Explanation: If you have 2x 50 Mbps connections that you want to bond into a 100 Mbps connection, your VPS should have at least 120 Mb/s network speed limit to account for protocol overheads. Actual results may vary. Ping from your home to the VPS should be less than 15ms.

Setup part 1: The server

Warning: This server can ONLY be used for terminating OpenMPTCProuter connections! You cannot host a website or run apps on it! You should only attempt this on a CLEAN INSTALL! KVM is required! OpenVZ is not supported and WILL NOT WORK!

Obtain a VPS, with Ubuntu 20.04 x64 installed, with at least 1 GB RAM and 1 vCore. Make sure the network speed of the server is satisfactory, as that will be the maximum bonded speed you can achieve, and make sure the ping from your home connection is low (20ms or lower). It is best to pick a server in a datacenter in the same country as you. Note the server’s IP address.

Run the following commands: (don’t paste them all at once, copy one by one!)

sudo su
apt update -y
apt install -y screen
systemctl unmask systemd-networkd.service
systemctl unmask systemd-networkd.socket
systemctl unmask systemd-networkd-wait-online.service 
systemctl enable systemd-networkd.socket
systemctl enable systemd-networkd.service
systemctl enable systemd-networkd-wait-online.service 
systemctl start systemd-networkd.service

Reboot the server, then SSH into it and run the following commands:

sudo su
screen
wget -O - https://www.openmptcprouter.com/server/ubuntu20.04-x86_64.sh | sh

Wait patiently for the install to end (it can last up to 30 minutes). When it is done, press CTRL + A then D (to detach the screen), then copy the contents of /root/openmptcprouter_config.txt to your local PC. This is very important!

After you have installed the script, reboot the server. This is absolutely required!

Note: The SSH port will be changed to 65222, so use that to connect via SSH from now on.

Full instructions can be found on the GitHub page.

Setup part 2: The router image

The hard part is done, what’s left is to install the system image on the router. OpenMPTCProuter image is a fork of OpenWrt with added elements necessary to enable true WAN Bonding. Download images HERE.

Raspberry Pi 3B / 3B+

Download Raspberry PI 3/3B+ (64-bits) ext4-factory image, which is a .tar.gz file.

Extract the file (you need to use WinRar or gunzip on Linux, and not 7zip - it has a bug and cannot extract any of the archives, but they are valid!) and write it to the SD card with Balena Etcher or Win32DiskImager. Insert the microSD card into the Raspberry Pi and proceed with the next step.

Raspberry Pi 4B

Download Raspberry PI 4B (64-bits) ext4-factory image, which is a .img.gz file.

Extract the file (you need to use WinRar or gunzip on Linux, and not 7zip - it has a bug and cannot extract any of the archives, but they are valid!) and write it to the SD card with Balena Etcher or Win32DiskImager. Insert the microSD card into the Raspberry Pi and proceed with the next step.

Intel/AMD PC architecture (x86 / x86_64)

Note: You will need a 8 GB or larger USB Flash drive. I recommend you a large and high quality USB 3 model, as the workload is intensive and cheap USB Flash drives are known to fail quickly (some barely last a day!).

Download x86-64 (64-bits) non-EFI EXT4 image (ext4-combined), which is a .img.gz file. Extract the file (you need to use WinRar or gunzip on Linux, and not 7zip - it has a bug and cannot extract any of the archives, but they are valid!) and write it to the USB Flash drive with Balena Etcher or Win32DiskImager. Insert the USB Flash drive into the PC, set the boot order to first boot from USB, remove all hard drives and SSDs from the device, and proceed with the next step.

Full instructions can be found on the GitHub page.

Download links can be found on the official website.

Setup part 3: Prepare the modems

Note: During this step, you will not have Internet access! It is recommended you create a hotspot on your phone to be able to lookup information in case of problems.

To prepare the modems, you need to do the following:

  1. Set the modems’ LAN IP addresses to 192.168.10.1 for the first and 192.168.11.1 for the second modem
  2. Turn off the modems’ DHCP server. This is very important.

The exact ways to do this vary wildly depending on the model of your modem, but it is important to first change the IPs, and THEN disable DHCP. Failure to do so properly means you have to factory reset the modem or configure a static IP address on your PC to access the web UI of the modem.

It is very important to disable the DHCP server on the modems!

Setup part 4: The wiring

The wiring is actually super simple in this case, in contrast with the load balancing setup.

Take the Gigabit Ethernet switch, and plug into it the two modems, the router (Raspberry Pi or Mini PC) and your own PC. Make sure all cables are functioning to spec, to avoid any problems.

Here is a sample wiring diagram:

OpenMPTCProuter Wiring Diagram

Setup part 5: The configuration

Power on the switch and the modems, and then power on the PC or plug in the power cable into the Raspberry Pi.

Connect your PC to the switch, and wait for the DHCP server to grant you an IP address. The default IP range is 192.168.100.0/24, I strongly recommend that you do not change this.

Open http://192.168.100.1/ and log in with the username root (there is no password, leave it empty).

Sample openmptcprouter_config.txt file

Open the openmptcprouter_config.txt file and copy the “OpenMPTCProuter Server Key” value:

OpenMPTCProuter Server Setup

Go to System > OpenMPTCProuter > Setup Wizard, and enter the Server Key and the VPS IP address.

OpenMPTCProuter WAN Setup

Scroll down to the two predefined interfaces, wan1 and wan2. Enter the labels, and the parameters as follows:

For WAN1: Protocol - Static address, IPv4 address - 192.168.10.100, Subnet mask - 255.255.255.0, IPv4 Gateway - 192.168.10.1

For WAN2: Protocol - Static address, IPv4 address - 192.168.11.100, Subnet mask - 255.255.255.0, IPv4 Gateway - 192.168.11.1

(the only difference is the IP subnet 192.168.10.0 and 192.168.11.0, as you configured in step 3.)

Click SAVE & APPLY, and after a few seconds you will be redirected to the Status page. If everything is OK, it should look like this:

OpenMPTCProuter Status Page

That’s it!

Testing

Dual-WAN Bonded SpeedTest

This is a sample of a bonded VDSL2 connection with 50/8 Mbps and LTE Advanced with ∞/10 Mbps speed (upload is limited to 10 Mbps).

If you have any questions or need help, don’t hesitate to contact me. You’re invited to share your SpeedTests in the comments 😊 Make sure to include the before & after pics 😉

0
❤️
0
👍
0
😲
0
😢
0
😠
0

Loading...

Scroll to top