Is your internet connection fast enough ? Want more ? While you can’t necessarily make one connection much faster, you can however aggregate or bond multiple connections together. Guys, this is not a scam video like so many “get faster internet connections” videos here on YouTube – this is a working technical solution.
Aggregating or bonding multiple internet connections into one faster connection nearly always follows the same scheme: you buy multiple connections such as DOCSIS, DSL, Starlink or 4G (so it’s not for free) and you rent a virtual server in the internet which you connect to with these various lines and they are then aggregated over there back into a fast line.
I showed you how to use VPN bonding or Multipath TCP in order to glue multiple slower internet lines together into a faster one. French Software developer Yannick Chabanois, known as Ycarus or by its anagram Ysurac made a great project which is called OpenMPTCPRouter that does exactly that. Today, we will install OpenMPTCPRouter – or let’s call it OMR – in a test lab environment on Proxmox. But first – what is OMR?
Well, the name suggests it all. OMR is open, that means it is open source and free. Free like in freedom but also like in free beer. It’s actually based on OpenWrt. Second, it’s using MPTCP, so Multipath TCP in order to create multiple connections to the internet. Why is that a good thing ? Because MPTCP will be included in the Linux kernel in the future, so it will be free as well, wide spread and here to stay.
Third, it’s a router. Why would you bother ? Well, rather than installing a proprietary software on your PC or on your mobile, it can run transparently in the basement or in a closet on router hardware or on a raspberry pi or – like we do today – in a virtual machine on Proxmox and provide faster internet not only to one device but to the entire household. Now that sounds promising, doesn’t it?
Free, here to stay, transparent – amazing. So what do you need to install and run this ? First let’s see what you need in real life, in the physical word and then let’s see how I built this in a test lab on Proxmox. In real life, we would first need some hardware to run it on. Yannick has made installer images available for a wide variety of hardware already.
Router boards like the banana pi R2 and R64 are here, images for the raspberry pi or the Linksys WRT3200ACM as well as generic images for X86 hardware and even ready-made virtual machines. Perfect. So we would need some supported hardware. Next, we would need a VPS – a virtual private server or server or whatever you want to call it. Basically a server that you rent in the internet.
And of course we need at least two connections to the internet. Be it a 4G router or a DSL or DOCSIS router or Starlink or anything else. In my Proxmox test environment I have mocked this up the following way: I am simulating three internet lines with these three Linux LXC containers. The OpenMPTCPRouter (OMR) image will run on a virtual machine here.
And the VPS will run on another Virtual machine here. Either before or after my perimeter router which is actually OpenWrt from one of my previous. All this is running on a little Intel i5 mini PC that is running Proxmox. There is also a video available on that I will give you a detailed description on how to build this lab environment in thenext episode.
I might also do further episodes on how to install OMR on different hardware. Great, so now let’s first download one of these images. As I will run it in a virtual machine I take that VMDK image here which I then import into my virtual machine on Proxmox using the qm import disk command. In Virtualbox or VMWare you could use this image directly as a disk.
Just keep in mind that when you run OpenWrt or OpenMPTCPRouter in a virtual machine then the first network interface you give it needs to be the router’s LAN adapter. All the following adapters will be the various WAN adapters which we will then aggregate later. Guys, I will not go too much into detail on how to define these network adapters etc.
If you want to run this in Virtualbox then watch this video here or if you want to run it in the same environment like I do then please get a Proxmox Installation ready until the next episode. Cool, our OpenMPTCPRouter (OMR) boots and is ready for use. Before we start using and configuring it, we need to get the other endpoint ready and this is the VPS.
In my environment this is just another Virtual Machine. It can’t be a container because it will need its own kernel. So really a VM. Let’s check on Yannick’s GitHub. First I want to point out that Yannick is really working hard on this. See ? There were more than a thousand contributions on his Github the last 12 months. If you compare this to my Github then you can see that I have barely made a hundred. So I am a lazy bug compared to Yannick.
But enough with the sucking up. Let’s check his openmptcprouter-vps repository and there is actually an installation script for Debian 10 or Ubuntu 20 which we may use and which installs everything for us. The main things that the script does are: First it checks for a supported Linux version, then it installs the required software package repositories.
It then installs an MPTCP enabled Kernel, activates all needed modules, builds all required software components such as Shadow socks and vray2 and optional VPNs such as Glorytun and OpenVPN, and displays a summary at the end that contains all the necessary access keys. Cool, so let’s log into that virtual VPS and run the script. Takes a couple of seconds or minutes even. While this installation goes on, we will quickly have a short break to allow YouTube to show some ads.
If you see some ads during the next couple of seconds please lean back and relax and maybe use the time to quickly click on that “like” button if you like the episode so far and maybe subscribe to my channel. I’ll be back. Guys, thanks for your patience and most of all thanks for supporting this channel. Ads are an important part of what keeps this channel alive.
So many thanks for your support. Back to our installation. The installation is finished and then as expected prints the necessary keys. You may want to copy paste this into a text file on a USB stick because we need it in the next step where we actually connect the Router and the VPS. So let’s go back to the OMR. In the virtual environment you need to define a machine here that can show a web browser in order to do that.
I have already done that so let me launch that machine and open a Firefox browser. I browse to 192.168.100.1 which is OMR’s default IP. Under System-OpenMPTCPRouter there is a settings wizard that asks for the VPS Server IP, the username and the Server Key. That’s the key which we got from the output during the VPS installation.
The default username here is openmptcprouter. In the physical world, this would be the IP address of the VPS. In my Proxmox environment it’s of course a private IP address. Further down we can set the parameters for the network interfaces. I leave the LAN interface as is and just add the three additional interfaces here which in my case are eth1, eth2 and eth3. That’s actually it. Once we click on Save and Apply then we can go to the Status tab here and OMR nicely show us the network layout.
Awesome. Let’s run some tests. Let me run iperf3 from the client to a machine outside of the virtual World. At the same time we will monitor the three shaper machines in order to see if it is really using all interfaces and – yes it is – and the performance is good, all interfaces are used. Perfect. Cool, so as we could see it is actually quite easy to set up OMR. Just need that VPS and run the installation script there. Then need to provide the Access key and the IP of the VPS to OMR and it connects automatically. Really well done Yannick! Lot of hard work has gone into this since I had a look at it as the last time a couple of months ago. Amazing!
Just some remarks on the VPS installation implications. OMR changes your ssh port from 22 to 65222. It installs shore wall firewall on the VPS, locks down unused ports and also installs needed software components such as shadow socks and various VPN software. We can see these changes here – I installed Webmin on the VPS to show them in a slightly more appealing way than just on the console. Here are the shore wall rules it added. I have added another three here for iperf3 testing and Webmin – you would probably not want to do this if the VPS was in the internet, but in the Proxmox lab it’s OK and helpful. We may also see the various zones which it added to the firewall. Here we can see the changed port for ssh.
Last but not least if we look into the startup configuration, then we notice that a lot of services have been added to the machine. Shore wall, OpenVPN, Glorytun and its very own omr-service which is in fact a watchdog script that checks every 10 seconds in order to make sure that the tunnels are up and running. You might say that OMR is actually taking control over the VPS.
So if you already have a VPS which you use for other stuff then you might want to first test this in the lab before you deploy. If – on the other hand – you are looking for a VPS just for this purpose then you might want to consider some additional factors. Like for many other solutions, the main limiting factor here is often the speed from your home to the VPS.
Not all providers actually guarantee speed figures. That means you might have a 100 Mbit connection at home but only get 10 or 20 to the VPS. If you buy from the three big ones, namely Microsoft Azure, Amazon AWS or Google Cloud then you can get these without any problems but it will have a corresponding price tag. From what I have heard, OVH cloud seems to be the preferred solution here because unlike many others they actually guarantee bandwidth and also they are not expensive.
There are entry level offerings around 5 Euros per month but I am sure that if you look out for special offers you might even get it a bit cheaper. Actually, Yannick has a page on his Wiki where he lists the providers which have been tested. There is also a page in the Wiki that outlines the changes to the VPS which I had just spoken about. Perfect – so what’s the use case for a solution like OMR?
Obviously, increasing the bandwidth (so increase the throughput of your line) to the internet, is one use case. Another reason why you might want to use this is latency optimization – so tell the system to always use the line with the best ping time. The gamers will be happy to hear about this. A third important use case, especially if you are working remotely from home, would be to increase the availability of the line, so better uptime of your internet connection for example.
The VPS does not necessarily need to reside in a provider’s data center, but it could also be a PC or Raspberry Pi or virtual machine hosted by a friend or at your home. Amazing. That’s all I wanted to show you today. In the next episode I will explain the setup of my Proxmox test lab – actually, I have written a little Web interface to the Linux quality of service interface, that means that we can turn those three lines here into bad lines – very much like you would have on
a mobile connection. So you could use this Proxmox lab to test OMR or any other solution under real life conditions by adding latency and transmission errors or by simply reducing the upload or download speed here. Until then, many thanks for watching,
Comments
Post a Comment