Surviving The Internet on Low Speed DSL

wake-me-up-when-facebook-loads-picardIn March 2013, my family moved from the center of a small town, where 35mbps cable was available, to the outskirts where the best DSL speed is 1.5mbps. We traded the noise and hubbub of town center for the peace and quiet that comes with living out in the sticks. There are more details of this in This Post. We basically went from high speed to high latency. The second hop on a traceroute out the other end of the DSL line, is 60ms away all by itself. Pinging Google is around 80ms! Contrast this to when we were on Cable- the first hop was only 10ms, and Google was 20-30ms. We have come up with some ways to make this workable though!

Believe it or not we can watch Hulu and Netflix at the same time, even as I am working at my job from home, ¬†although Hulu does have issues here and there. It isn’t perfect by any means. But rather than tell you all about each thing in gory detail, I’m going to outline the tools we’ve used to make it possible to get by.

1) Asus RT-N16 router. This single $80 investment is by far the most important part of the equation. By itself its a good router, but add Tomato USB to it with its QOS features, and you have something powerful on your hands. I use the Toastman builds and it works great. There’s a lot of reading to do to make it work correctly but it is well worth it. With our 1.5mbps, I limit everything to 1100kbps or less, and give my own computer priority so that when my PC needs bandwidth (since I work from home) it gets it. The Bandwidth Monitor is also great for finding out who’s hogging all the bandwidth! Sometimes somebody will be doing a big download (perhaps an update) and not even realize it. This helps me manage it better, too. This might be replaced with pfSense on my Linux box in the future.

2) AdBlock Plus. Why would an ad blocker matter? Less advertisements means less bandwidth used, which in turn means lower page load times and more bandwidth available for others. It is a minor thing but it does matter.

3) Linux servers, both on the local home network and my VPS at A Small Orange.

A) I don’t always download huge fildownload-big-fileses, but when I do, I use my VPS to download them quickly, and then I¬† use cron to schedule a wget of the file from my own server at something like 3 or 4 in the morning. Yes, it means waiting the next day to get bigger files but I do get them. Patience! It would probably be easier to use a Download Scheduler addon such as this one for Firefox.

B) I also use my VPS to browse remotely at times when I need to use a GUI to download a big file that can’t be gotten with a simple wget command (behind a session-based user/password, for example). For this I use a VNC server as outlined here.

C) Private DNS server. My local Debian Linux server also runs DNS for our house. Because it caches DNS, the lookups are almost always faster than if the lookups had to be done over my DSL line every time. The result? “Snappier” page loads.

4) Lowered expectations. Lets get real here for a moment. It’s 1.5mbps DSL. It isn’t going to be fast. There’s nothing you can do but work around it and not try to make it something it isn’t.

All in all, it works fine most of the time. We’re not breaking any speed records, but living out in the peace and quiet of the woods is worth the sacrifice. On the plus side, my wife has been doing more of her Amazing Cooking, I’ve learned how to chop wood, and we have clean air and can see the stars at night.

There’s more to life than high bandwidth. Most of the time!

Print Friendly
Updated: December 17, 2013 — 7:23 pm

51 Comments

Add a Comment
  1. I moved from the Seattle area, with 50mbit/20mbit cable to a large RV and hit the road. From that point on, we (Wife and I) have used nothing but hotspots for internet. 1x/3g when in transit. Now, we live in the middle of NO-WHERE Oklahoma, and got lucky. The only tower is using the same carrier I subscribe too, and is a 4G LTE relay. Also one of the few in the area who use data, as it’s ranch land. I get around 20mb/10mb, but my latency is around 80ms to Google as well.

    1. That’s not half bad! Unfortunately where we currently live, we get reception from no towers. In fact I don’t even bother having a mobile phone. The most you can do out here is text, there’s not even enough signal for a phone call. It’s pretty stone-ages out here!

  2. 1.5MBps is not slow DSL – In Germany this is a good average DSL – I live on 384KBit/s with 64KBit/s uplink. There is no point in QoS because whenever you open a webpage your link is saturated yo no interactive work.

    1. I feel your pain! QoS can still make a difference though. It will allow your most important things to still work even when other things are going on.

    2. If you read it correctly, the author is using 1.5mbps, NOT 1.5MBps.

      1.5mbps equates to 187.5KBps, which is HALF the speed you get.

      So yeah, it’s slow. Imagine having your speed cut in twain.

      1. I think everybody was referring to bps as bits per second.
        In South Africa most DSL users was on 384 kbps until recently and my have been upgraded to 512kbps or 1mbps. I pay for 10mbps but my line can only sync at 6mbps.

  3. I can’t agree enough with running a local dns recursion server. I actually have two at my house (one on my pfSense router, and one on another Linux server as a backup). ISP DNS servers, and even worse, public DNS servers like google’s or level3′s, can be very slow. Which is, of course relative when you’re talking in terms of milliseconds, but having a local recursion server helps a lot. It also means you can manually clear the cache if you ever need to. It also means that you can setup a local DNS domain for your local network (I use a subdomain of my public domain personally) and that you can override authoritative records from the internet should you wish to redirect traffic or block a given hostname.

  4. I would add in a squid/proxy server in the mix. Set it up correctly and you can save a decent amount of bandwidth. I have a decent line in the mix and it on average gives me a 3-4% speed boost. You already have linux boxes in the mix. You have already rooted the router so you can do transparent proxy too.

    1. We actually used a squid proxy server for about a month. It didn’t do anything to speed things up, because there weren’t enough users for it. I eventually shut it down, as the cache hits were dismal and there were no real benefits to it.

      1. Try it out again and make sure that it’s set up to transparently proxy all http without configuration required by the clients. It helps a LOT with stuff like phones and tablets that don’t keep huge local caches themselves.

        I used to be on 1.5mbit myself. I’ve since managed to get someone who has access to the local DSLAM to bump me up and after some fiddling I can maintain sync at a bit over 6mbit with a ridiculously long loop length of 17000ft. So, there is hope…

      2. Caching to disk isn’t enabled by default, but as you observe hit ratio is highly dependent on use case. For most web browsing it should provide a measurable benefit, however it might take time for the cache to ‘soak’.

    1. For casual use, that’s true, but for as much as we rely on the Internet, 1.5mbps has been very limiting for us. It’s taken some getting used to.

  5. I spent over 10 years at 1.5Mbit/s, the last few years typically using 150 to 200GByte/month. With a stay at home wife, 2 teenagers, a near teen and a little girl that likes to stream videos, plus a college student who visits at least once per week, my internet connection gets a lot of use. A few weeks ago (just before Thanksgiving) Centurylink finally enabled me to upgrade. Now at 20Mbit I have a lot to be thankful for! :) (They still won’t sell me upload faster than 890Kbit/s and they soft-cap at 250GByte/month so it’s not perfect.)

    I was doing most of what you describe, but since my 1.5Mbit was SOLID I pushed the qos limit on downloads up to nearly the entire 1536kbit/second my line would do. Usually I limited it to 1450, but nearly all of the time even 1500 worked fine.

    I also ran squid as mentioned in another comment, along with some simple squidguard filters so the phones and tablets and visitors also skipped most ads.

    1. I might have to give Squid another go, transparent proxy as mentioned before. I am considering moving to pfsense as a firewall/qos anyway, and adding squid to the mix should be easy. Thanks for the comment!

  6. I use the YesScript firefox plugin to selectivly disable javascript. (I also have a 1.5Mbps DSL.) When a site is slow or annoying, I click an icon to disable javascript, in many cases avoiding loading 1.5MB of unwanted bloat.

    1. Yep! Move out to the country to get away from the city and the noise and the smog and the light pollution. Not to get away from anything more specific than that though.

  7. Please consider changing your background or the color of your text. It’s impossible to read and you have some interesting stuff to say!!

  8. Curious why you would want to limit yourself to 1.5mbps when 35mbps is available. Go get yourself a pair of Nanostation M5 radios over at ubnt.com and set up your own wireless trunk.

    I live in an area that doesn’t have DSL/Cable but I set up my own wireless trunk to an area that has fiber a few miles away. 30mbps service (can go up to 70), 10ms ping to google. Link has been rock solid for the better part of a year.

    1. At some point you have to subscribe to something and need a place to connect your device (the one that isn’t local). How do you deal with that issue? Don’t you also need a direct line of sight or something?

      1. In this case, find a location the has clear line of sight, if not, a place that can be reached with minimal hops in a ptmp config. Make friends with the property owner, subscribe to the cable service so you have your own dedicated line, install the equipment and you’re good to go!

        It was pretty easy to set up – equipment only took a couple of hours to install.

        1. That is a possibility, and I have looked into it extensively. The issue there is that I currently live in a rental. I’m not going to fork out that money for a place I might not be in a year from now.

          1. Just throwing this out there, but it doesn’t have to be expensive.

            We ended up hooking up a friend who lives 30 KM out of town using about $250 worth of ubiquiti radios and $98 antennas, all we did was checked out to see who was in LOS of both his location and somewhere with high speed (25mbps)once we found the area, we basically just went up to their door and said “hey, do you want free internet in trade for putting an antenna up so we can also get fast internet?” and that was that.

            The link has been up for 3 years or so now, without problems other then really nasty fog/snow that craps the connection out about twice a winter – we’re even using a poorly designed antenna (both links are right near the ocean, and they have both rusted) still getting -68DB and getting full speed out of the connection.

  9. For bidirectional synchronization of files between your virtual server and home, check out Unison ( http://www.cis.upenn.edu/~bcpierce/unison/ and also in the apt tree ). It should make your queued download setup a bit friendlier, and I’m sure you can find plenty of other uses for it.

    And slow DSL is nothing – I’ve lived off tethered 3G cell service for months at a time!

  10. How about bonding? It’s probable that your ISP doesn’t support MLPPP like mine does, but you can do bonding through your VPS, or via a service like Connectify Dispatch. With a bonding solution combining two DSL lines, you could double your speed (albeit at double the cost), and support that speed for any individual connection, which means as far as Netflix is concerned, you’re on a 3 meg connection, not a 1.5 meg connection.

    1. Maybe because they don’t like GNU/Linux and Mac users? It looks like a pretty bad solution anyway. Better to have a router do that sort of thing if at all possible and spread the bandwidth over the entire house.

    2. I own a Peplink (http://wwww.peplink.com) Balance 30 to bond 3 connections, as well as a 4th USB modem for failover and have been extremely satisfied. It’s easy to set up, feature rich, and support is very responsive. A 2 connection model (the Balance 20) is available from Amazon for $288. Amazon also has a similar router from TP-LINK for significantly less, but I haven’t used it.

  11. We have a even slower connection, and two additional things I do is
    1)Use a transparent proxy (squid) with a huge cache, and
    2)Use Opera with “turbo” mode, which routes all data through their servers and compresses it.

  12. Hey, Alex from Connectify here. Adam is right, you should check out our new bonding service, Connectify Switchboard. It lets you combine multiple DSL lines, or a DSL line and a tethered cell phone into one faster Internet connection. Switchboard really does combine them at a per packet level, so you can even watch Netflix over the bonded connection: http://www.connectify.me/switchboard/

    Shoot me an email and I’ll help you get set up.

  13. I was born at just the right time that when I went to college my roomates and I were exposed to what was for the time ‘high speed’ internet via the ethernet connections in our dorm room. Later when we got an apartment it was another year before cable modems were available, even longer for DSL. It was back to 56k dialup or nothing.

    Home routers were kind of unheard of then too but at least hubs were available. I set up a Windows box (hey, I was still learning) in the living room and ethernet from that to each of our bedrooms. I found a NAT/Proxy Server called WinGate to run on that livingroom computer. (this was also before Windows had Interner Connection Sharing built in). That worked great! I had it set to not cache the html files but to cache everything else. If a roomate had been to a page earlier it would load pretty much instantly. But.. since images and such rarely get updated without changing the html we rarely found stale content.

    These days if I were stuck somewhere with only a slow connection I would do the same thing only using Linux and Squid rather than WinGate.

  14. The fun part is that the best connection you can get in Greece (a whopping 24MBps DSL that never reaches that potential), normally pings Google at ~100-120ms…

  15. You’ve avoided a big chunk of the problem by setting the link speeds to your slowest device, the DSL, but you can get rid of more sloth by applying fq_codel, one of the newer tools for “bufferbloat”.

    Large buffers in devices between slow and fast links can and do artificially drag interactive performance into the weeds. I gave a short talk on it at http://gtalug.org/wiki/Meetings:2013-06 and one of my colleagues went off to try it. The next day he wrote back to the group to say he was amazed at the improvement.

    –dave

  16. So maybe this is an obvious question but why ad-blocking software over a custom hosts file? That’s what I use (and put on my all my family PCs as well). No software to configure or worrying about using a different browser or a new browser version breaking something…just works. Also, nice to see there’s an other fan of the N16 as that’s also my favorite router :-)

  17. We’re going to need some more information on how you configured your QoS settings. I’ve found that cable modems, DSL modems disregard whatever I set them to. DSL is particularly bad with multiple downloads, but cable wasn’t so bad. Now with FiOS there’s no point to bother with QoS, but I’m curious how you set it up and what parameters you used. That would be really helpful.

  18. What about bouncing your traffic off a cloud host (e.g. amazon EC2 free/micro instance) and then hauling it back across the low bandwidth link on an SSH tunnel with compression turned on .. For example, set up a caching squid proxy at your house and for all cache misses point it at a SOCKS proxy on the loopback interface which is serviced by an ssh pipe e.g. “ssh -N -C -D localhost:1080 my_remote_host” (make it turnkey with ssh keys etc.)

    And don’t forget to tune your TCP window timing on your squid box .. latency has more effect than bandwidth on total throughput.

  19. Agree using adblock is key, also recommend Ghostery to take care of all the trackers (which also add a ton of superfluous hits per pageview)

  20. Another tip that might be useful: use a Firefox plugin, like GoMobile, to load the mobile version of sites. Most of the time they’re cleaner, leaner and meaner :) In the other hand, sometimes they’re crippled, but then you can switch quickly back to a desktop browser.

  21. Your intuition in point #1 is great! That’s a huge improvement because you’re moving the bufferbloat problem closer to you where you can mitigate it!

    You can do even better though:
    1. See if your device supports latest OpenWRT so that you can enable fq_codel – this, even under heavy traffic with many streams should allow an even distribution and fairly low latency of all streams (as in: those tons of js facebook is being loaded, images, other interactive web chatter, etc)
    2. Web traffic is very chatty nowadays. You could blacklist things like trackers and ad network domains in dnsmasq or DNS server of your choice – or use ghostery to block that at browser level

    Great intuition!
    Regards,
    Maciej

  22. I can suggest a couple more things that have worked well for me on a cell-phone Internet link for the last 5 years…

    - well tuned Squid caching HTTP proxy (min. 50% hit rate) setup as a transparent proxy, use proxy autoconfig or manual proxy settings for better performance ie. to remove client DNS lookups all together!
    - there’s some neat youtube caching scripts as well.

    - good router firewall rules, blocking unnecessary ‘crap’. I used iptables on a Linux router.

    - browser add-ons like AdBlockPlus and BetterCache (now defunct I think)

    - use a ziproxy compressing proxy located on a VPS and locally to deliver clean/compressed/transcoded content. amazing tool. http://en.wikipedia.org/wiki/Ziproxy you can parent your local squid cache thru a ziproxy pair.

    - Pdnsd caching DNS server, persistent over reboots, http://en.wikipedia.org/wiki/Pdnsd
    dns poisioning for silly things like the microsoft “am i online” lookups.

  23. DNS caching helps alot with page load times.
    The down-side is that your dns-server is doing the lookup directly to ROOT-servers (if
    setup this way).
    So if the 3-letter agency is monitor traffic to-and-from ROOT dns servers (sure!), then
    they can just query their database for “what domain names has your ip looked up” and they get a (very) good idea about what your dns-server has queried and you subsequently have visited. DNS traffic is easy to sniff!

    If you would like to fix this, then run a small-bandwidth tor-relay and enable DNS-functionality on it. Set your caching DNS-server to query your tor-relay which will then forward your request thru the tor network.
    In this case the 3-letter agency (sniffing @ ROOT dns servers) will see dns-lookup request for “www.donkeylovers.com” *wink* come from a random tor-exit-node.

  24. It would be great if the community could put together a VM image with everything setup for specifically this case. I live on a boat and have the same issues, but don’t have the time to configure a router to do QoS, transparent squid w/ ad blocking, etc.

  25. Hey, thanks for sharing.

    I was even on something recently, just about 560 kbps – yes kb! It was a pain. Before they gave me then 1120 I did the following things – all on a linux server:

    * transparent proxy with squid
    When I was downloading sometimes .pdf via commandline I got this pretty 12MBps, wha??? Ah, just my proxy kicking in.
    * local DNS server with local domain for mail delivery
    Not much to say here.
    * DNSMASQ with *lots* of domains pointing back to my firewall:
    * http://pgl.yoyo.org/adservers/
    * http://mirror1.malwaredomains.com/
    This helped to keep the traffic low, Windows machine fairly secure and hardly any banner ads.

    Last but not least, I was using aria2 as a downloadmanager in servermode. As a frontend I was using YAAW or webui-aria2 – I don’t remember which one exactly. Then I usually fed the aria2 server with URL and cronjobs unpaused aria2, and paused it again when kids were home from school. I also setup notifications via email on that when something was downloaded… *

    Luckily we moved recently and now we are much better off with cable. But all of that above is still in place – but I am not using aria2 anymore.

    If you want I can share the stuff I did with DNSMASQ, send you over the config/scripts and such. Just shoot me an email to thomas@preissler.CU (replace CU with co.uk, thanks spammers).

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© Ryan's Techs Tidbits