Linux and Multiple Internet Uplinks: a New Tool
New submitter Alessandro Zarrilli writes: Linux has been able do multipath routing for a long time: it means being able to have routes with multiple gateways and to use them in a (weighted) round-robin fashion. But Linux is missing a tool to actively monitor the state of internet uplinks and change the routing accordingly. Without it, from a LAN perspective, it's like having a RAID-0: just one uplink goes down and all of your LAN-to-WAN traffic goes down too. Documentation and examples on the subject are lacking; existing solutions are few and deeply integrated in firewall/routing specific distributions. To address these issues, a new standalone tool was just released: Fault Tolerant Router. It also includes a complete (iptables + ip policy routing) configuration generator.
Strange.
I was using routing patches to Linux nearly 7 years ago to do this (admittedly it wasn't in the stock kernel, but the patches weren't huge)... you were able to specify multipath and multiple gateways and if one route went down, the others were prioritised and would take over, and also your upstream etc. were balanced properly and took account of failing routes automatically without any kind of daemon etc. running.
I ran a school off multiple ADSL and even 3G connections with it - the only manual maintenance I ever had to do was to put the ADSL modems onto a SMS-controlled relay (SMS came in on the same 3G stick!) because our ISP would often give us "dead" sessions if they'd had problems (where you'd get PPP and an IP and a remote gateway but couldn't do anything across them) and we were then able to manually reset if necessary. My bursar and I used the system for five years like that, only ever resetting it to enable VPN when all the upstream routes had got dead sessions, and that less than once or twice a year.
And, no, we didn't have to do much. It was a stock Slackware install with one set of patches to a (2.6?) kernel to enable the multipath routing etc. Pretty well advertised at the time, one plain page of simple patches (I remember porting them myself to a newer kernel version, just before the new diffs came out), I'll try and dig it up.
And "RAID-0 for upstream"? Bollocks. It "just worked" whatever interfaces were up (proven by it would even include the 3G PPP interface whenever it came up, and that only came up when we manually instructed it to connect as it cost money).
Not saying this isn't good software, but it's by far not the problem the summary purports it to be, not a first by any means, and certainly not "new".
Actually, the analogy is quite apt.
As TFS talked about configuring it (load sharing with no monitoring), they would be getting twice the bandwidth, with the same drawbacks as RAID0: If either connection goes down, you have a (mostly) unusable system (because with no monitoring , half your packets are still going out the broken link).
>RAID 0 has zero redundancy.
That's what he said.
"just one uplink goes down and all of your LAN-to-WAN traffic goes down too."
I do not want to install Ruby on my firewall/gateway along with all of its douchebaggy dependencies and gems/crystals/unicorns/whatever-the-fuck-they're-called. This is networking, not some hipster web 2.0 app.
I am unclear if this would work for a "single stream" like a video webcast source in a remote location using multiple cellular links like jetpacks. I can easily see how any given network request would go to one link or another depending on availability, but I'm assuming that this would not be able to take a network video stream and parse out portions of it to the various uplinks and then at the far end put the stream back together (in order to get either extra bandwidth or extra reliability) to forward on to a server. Teradek and other companies have specific hardware & software to do this. Can this fault tolerant router be made to do something like this, either with or without additional software?
I would be happy enough if I figured out how to mark the packets so that my routing actually works. I already have a shell script to switch connection from fiber to 3g, but incoming connections only work on one at a time. However, I'm not willing to run Ruby on my router to solve that issue...
That's one of the points of zebra and the suite of tools that it brings to the table.
The kernel shouldn't do more than it already does unless you want to move the kernel into systemd as well.
http://en.wikipedia.org/wiki/G...
Zebra is not, by any means, new.
Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
But hey, it hasn't been on Github until now. Why the hell is this news?
OpenWRT package mwan3 has similar functionality without the complication of multipath.
http://wiki.openwrt.org/doc/ho...
Oh just please SHUT THE HELL UP. I'm no fan of systemd and i wont use it for foreseeable future (i will actively avoid it for now) But stop injecting this trollish behavior. It adds nothing and convinces noone.
but as a network engineer, this snippet is painful to read. Inaccurate to say the very least.
will work for dragon quest localization
There's a lot of multipath-related work being done right now, at the IETF, within OpenWRT, and independently.
We've been working on providing multiple routes automatically (disclaimer -- I'm a co-author). As to actually making use of the multiple routes, the solution that currently works best is MP-TCP, a set of kernel patches that allows TCP to use multiple routes simultaneously, with no modification to applications. Other solutions are SHIM6, which works below the transport layer, and Multipath Mosh, which works at the application layer.
I'm pretty confident we'll be able to have most of this stuff enabled by default in mainstream Linux distributions by the end of the year.
There is a small shell script called gwping, which can be used to do the exactly same thing, easier and simpler. It's ~150 lines (with comments and everything) and takes 10-20 minutes to setup with the policy routing and everything, we don't need an overbloated runtime to do something so simple.
I recommend you follow your own advice. Stop feeding the trolls.
How can we continue to believe in a just universe and freedom to eat crackers if we have no ale?
i think emacs has a macro for that
rewriting history since 2109
As much as it's medium rare steak compatible. They're compatible in the fact that they're completely independent (and unrelated) of one another.
dualgate_multinet.sh supports dual-gateways and multiple subnet vlans.
https://github.com/sodonnell/b...
This script can easily be extended to support more than (2) gateways, and can support various VLAN/subnet configurations and isolation.
the only permanence in existence, is the impermanence of existence.
We've had a functionally equivalent capability with Shorewall + LSM (Link Status Monitor) for years now. Setup (2) ISP connections, route a proportion of your traffic to each one and when the link goes down, all traffic goes to the other link.
The hard part of the equation is your public DNS records that need to change to whichever IP address is "active" (or round-robin between the two). But most DNS service providers have a solution for that as well.
Naturally, it's not as seamless as multi-path, but it works without needing a BGP entry or your own IP address block in the public routing tables.
Wolde you bothe eate your cake, and have your cake?
Iproute2 has worked out very well for me for a quite a long time and I have no need to run any additional routing daemons.
Pity it's written in ruby, that's a bit too heavy for most small routers...
http://spamdecoy.net - free throwaway anonymous email - avoid spam!
Indeed, I have many times run a linux router by doing nothing but installing quagga, Net-SNMP, ipt_netflow, and I've got a lower end equivalent to some of the highest end commercial networking equipment.
Both OSPF and BGP provide the tools you need for policy based routing to various degrees, and quagga gives you that. The rest is just icing on the cake.