First part, the obligatory prologue where I explain why I needed it and what were my options in general.
Skip this part if you are not interested in random rants and baseless assumptions.
I live in Italy, In suburban area of Milan which is considered the industrial capital of the country and overall the most developed city. Italy is certainly not the most digitally aware country in Europe but this way or another people can get a broadband connection almost everywhere.
Within Milan there is fiber to the building and as of recently 100Mbps connections can be bought by normal people too. As soon as you leave the city, however, the situation starts to degrade. For starters you only have three options of getting a broadband as a B2C client:
- Wifi (802.11a/b/g/n)
- HSDPA(and recently LTE, but the coverage is very limited at the moment)
Now what is broadband in 2013, in Italy? Theoretically the majority of the copper lines are terminated on ADSL2+ capable DSLAMs which can get you as far as 24Mbps/1Mbps connection if you are lucky to have your CPE within less than a kilometer area from the local exchange. After 1km the theoretical speeds start to degrade exponentially and the reliability of the connection goes the same way. Downhill. Despite the fact that the ISP business was de-monopolized a decade ago, the last mile is still owned by the same old Telecom Italia which is in no rush to shorten the distances using new exchanges or repeaters as far as clients have no choice. I can also understand the official explanation that ADSL is a dead technology that isn’t worth investing into, and that is fine. But it’s 2013 and the top they have to offer is a VDSL at 30Mbps/3Mbps in major cities. And that is investing into something already outdated (2004-2006 standardized, 2007 first deployments) and is being phased out by fiber-to-something in more digitally savvy countries. But it keeps the copper in game and gives profit so it makes sense for them. This is in a country that has pioneered FTTP based services back in 2001.
On the other hand there are wireless ISPs in the area, more precisely there is only one that can theoretically give me an acceptable signal here in 802.11n. The packages they offer range from 10Mbps/1Mbps to 50Mbps/20Mbps. And the prices are 2-3 times higher than average ADSL. And there are also the installation costs that depend on the location and the landscape between it and the closest antenna of the ISP. As an example, I would have to install a 4m pole on a shared roof, buy equipment and do the cabling.
The third option I’ve included is there just for fun as it is absolutely unreliable, and capped to 10-20GB/month. Though you can sometimes get a 10Mbps out of it with a 300ms latency.
The most annoying detail of the broadband connections though is that all of them are asynchronous. See, I often work from home and when it comes to uploading files (mind you, work, not the pictures to facebook) the progress bars are my worst foes. I hate them.
Anyway, these are the options and I have to deal with it for the next decade or so. There is a plenty of dark fiber right under my kitchen window but I doubt it will be of any use to me yet for a long time.
And so I was using my ADSL line for about four years since I’ve moved in. I’ve bought a good CPE (DrayTek Vigor 2700), hooked up to the less trafficked network in the area (Wind/Infostrada) and was satisfied for the most part. Until around December 2012.
In a shiny winter day I was working from home when suddenly the ADSL connection was gone. The modem could sniff nothing on the other end of the line. Nobody home. I waited for about ten minutes and switched to a mobile connection while checking periodically if the DSLAM is back from vacation. He didn’t come back till the morning of the next day. When it did it was a different story. The line started to drop once every 40 minutes. And if you SSH with a dynamic IP you can understand the pain it causes you to re-login 10 shell sessions or restart uploads, or just plainly wait for the browser to come back to his wits and refresh a page. I’ll spare you the conversations with the customer service about the issue just summing it up to “The lines are owned by Telecom Italia, this is not our fault. Besides, connection drops every forty minutes is not a disaster at all”. So I was in search of options at this point.
The first goal was to get the reliability. As it goes, I am 2.5km from the exchange which by itself is on the limits of what I call good coverage. Add to the distance the awful quality of rural copper and you get connection drops every half an hour if you don’t invest into a capable CPE.
The first thing that came to my mind was to just route all over a VPN to a remote server so when the connection goes down I still have a few minutes of the session to recover. That proved a cumbersome solution after a week. Timeouts were sometimes longer than TCP would expect and sometimes it did not recover at all. Also, the checking of the connection status every 20 seconds started to be annoying. So I thought to add a mobile connection to the “router” and switch to it whenever the ADSL went off. This is a good option to keep your facebook timeline from disappearing but the IP addresses are different so anything within the same connection will be dropped. Like SSH sessions or 100+ MB uploads. So there has to be a VPN to a remote location to NAT the traffic over it while hoping that VPN software is smart and agile enough to reestablish the connection using the backup line and while it is on it the TCP sessions will not expire. Sounds painful to me.
The next logical step is to have two VPNs and switch the traffic on the “router”. This is certainly a step forward but after doing some research I’ve come to think that it will be either too much scripting to implement or I’ll have to go back in time and relearn about dynamic routing protocols. What one does to avoid routing ? Go down one level and switch the frames instead. So If I can add some Ethernet-over-IP, then bond a pair of virtual interfaces I can have some reliability with an algorithm even as simple as round robin. If one of the lines goes down, the TCP starts to retransmit and I only get 50% packet loss but sessions are running and upload is progressing. So, roll the sleeves up and do some practical tests.
The first experiment was to bond my ADSL with HSDPA modem and try to round robin two VPNs on it. This brings us to the second part.