Faster internet

Broadband internet is on the rise, the amount of money we pay per kbps is slowly shrinking. However, for a lot of people, bandwidth limitation is still  a problem. Internet browsing can be boosted by caching a couple of information on your home network or LAN, if you maintain a cache of DNS entries and previously visited websites on your LAN, your Internet browsing can be greatly improved.

You will get your hands dirty on this one, as it will require you to reconfigure your LAN just a little bit. There are great choices of DNS servers on either UNIX or Linux side (even Windows have their own DNS server), in this guide, I will use dnsmasq, which is an excellent DNS Server and DHCP server.

This guide will benefit people who use the Internet to view webpages. If you watch a lot of YouTube vids, use peer to peer file sharing or download lots of torrent, this guide will not make your internet any faster (a little maybe, but not enough to make this guide worth your while), you can stop reading now. However, if you use the Internet to browse webpages, then this guide will benefit you tremendously. More and more people are having broadband Internet installed in their houses and/or small offices. However, for a lot of people, bandwidth limitation is still a reality. How can we really speed up Internet? In this guide, we will talk about 3 steps that you can do to speed up your Internet access. I have searched, tried and evaluated some of the solutions that I found on the Internet, and only a few them, I could say feels right to me. Just to be clear on where I am coming from, I have been a network admin before, hence, what feels right for me, might be different from yours.  Web interactions operate on 2 basic activities, requesting a web resource from somewhere, then waiting for that web resource to load up in your browser. The more we know about how this is done, the higher our chances of introducing improvements, where they matter most. I will not disagree that tweaking your registry, adjusting browser settings and defragging your hard drive will yield improvements, however, these are the not areas that I feel impact your web experience in a big way. The drawing here is simplified, but I hope it delivers the basic idea of how a web page is delivered to your browser.

Simple anatomy of a web request

Simple anatomy of a web request


When you type a URL on your browser, say http://www.kindawannadothat.com , your browser does not go directly to that site. Instead, it tries to contact your DNS (Domain Name Service) server first, to find out the real address of kindawannadothat.com. It tries to “resolve the IP address” for kindawannadothat.com.

I’ll sidetrack a bit to explain briefly what a DNS server is, then I’ll go back to our main point. Think of a DNS server like a phone book, it operates on the basic principle of – if you give me the name of who you are looking for, I’ll give you his phone number, I may even give you his address – that is basically what a DNS server does. If you give it a domain name, it gives you back the IP address, the real address of the domain name. In network admin speak, if you supply a domain name to a DNS server, it will resolve the IP address for you. How would you know that you have a DNS server? When you subscribe to an Internet service, the DNS server address is either given to you via DHCP (Dynamic Host Control Protocol), or they will explicitly inform you of such address. If your Internet service involves DHCP, it means you don’t need to do much to get connected to the Internet, all you have to ensure is that the computer, which you connect to the modem, is set to acquire its IP address via DHCP.

Going back on track now, your designated DNS server could be anywhere; it could be a block away from your house, a state away, or even half way around the globe. DNS servers are not exactly special computers, they’re just that, computers, which means, the speed of each DNS server can vary depending on many factors such as, the number of request that a DNS server responds to, the speed of the machine, etc. This might be trivial, but I will point out that, a DNS server that responds to a lot request from a lot of people is not necessarily bad. It might sound counter intuitive now, if a DNS gets queried by a lot of people, it means it also has a lot of cache IP information inside of it, which is good for DNS resolution.

At this point, it is clear that the faster our request gets responded to by the DNS server, the quicker we can move on to the next step, which is talking to the real server, in our example, it’s http://www.kindawannadothat.com. You might think that the name resolution is an activity that needs to happen only once; at the time you typed the URL in your browser, that is not quite the case. We will try to dig in a bit on the structure of HTML files, so that we can see a bit of its structure, and how it affects web page loading, I’ll explain this in a little while. In the mean time, here are the 3 things which you can do the speed up Internet.

  1. Change the DNS server settings
  2. Change the location of your DNS server, build one inside your LAN
  3. Install a web proxy server.

There are other ways to speed your up internet, the most obvious would probably be to increase your bandwidth, which means you need to shell out more cash for the bigger pipe, or get another pipe (another internet service, in addition to your existing internet service) and have them load balanced. I will cover this on another guide. There are quite a few more that you can do actually, but I feel that these 3 things will really give us the most bang.

You do not need to do all three tips to experience a boost in your Internet experience, if you do only tip #1, you might sense some marginal improvements. If you do tip #1 and tip#2, or just tip #2 alone, you will see drastic improvements in terms of Internet speed. If you do all 3 tips, well, I’ll leave you to it to pass judgment.

Tip #1 Change your DNS entries. When you subscribed to an internet service, they gave you the IP address of a DNS server, most likely, your internet provider also runs these DNS server, and it’s likely also, that they are run well. Quick thing you can do is to replace the DNS server that your provider gave with a better DNS server, there are a couple of DNS servers out there, but I tend to favor OpenDNS. There is a free service that OpenDNS extends to the public, they also offer paid solutions (which of course would contain their bells and whistles), but hey, I’ll take what I can get for free. Just replace your DNS entries with that of OpenDNS. If you are a Windows XP user, the instruction is here. For Vista Users, the instruction is here , OSX Leopard users, instruction is here .  If your workstation is behind a router-firewall, there are instructions here .

I won’t list all the possible scenarios in this guide, besides, OpenDNS has done a great job documenting the step-by-step instruction for a lot of scenarios, hence, for all the others whose situation I have not covered, i.e. if you already are using a DNS server, or you are using a different version of OSX (Tiger perhaps), or your machine is running Windows 2000, you can visit https://www.opendns.com/smb/start/

Tip #2 build your own local caching DNS Server, right into your LAN. After changing your DNS entries to OpenDNS (and hopefully, that improved your situation already, even just a little bit), you can further cut down the travel time – latency, in tech speak – of your web request further. OpenDNS is already doing a good job of finding the best possible, shortest route for you, but it’s server is still not within your LAN, you are still 200ms away from the DNS server (200ms plus plus is an approximation, this is the value you get when you try to ping a web url, it’s the average time that your ping takes, from the time of ping to the time the ping was responded to, we won’t talk about ping here, but I’ll try to cover this in another guide).  You can build your own DNS server inside your LAN; its purpose is to serve queries from your own LAN only. There are a couple of ways of doing this, depending on your background and inclination. Here’s some I’ve taken a look at:

  1. Windows 2008 Server – It includes a DNS server, but I thought it was too pricey for a small home solution.
  2. SOHO DNS appliance – gadgets like Bubba, here’s the link http://www.excito.com/bubba/technical-specifications.html
  3. Use Linux or BSD UNIX for the server – This is what I like the most. Old workstations, old laptops, or even netbooks that are unused, will satisfy most Linux or BSD requirements. Then install dnsmasq, djbdns or BIND as the DNS server and DHCP server. I will write a guide for a step-by-step instruction on how to do this.


Now your web browsing speed should improve in a big way, because the latency of IP resolutions is greatly reduced, the resolution of IP happens locally, in your own LAN. Let’s take a closer look at the anatomy of a web page to better understand how an efficient, local DNS server is making your Internet faster. Visit your favorite site; type it in your browser. When it loads up, view the source code of the HTML. If you’re using Windows XP or Vista, just right-click on any page area of your browser, and choose “View Source” (works for IE, Firefox and Google Chrome), if you are using OSX, just CTRL Click on any page area, then choose “View Source”

Now that the innards of an HTML page is exposed to you, look for words like <img src=http://www.somedomain.com/img/1.png> or something similar, I bet the page is peppered with those markups. When your browser receives the request from the web server, it renders the HTML page, render means that, it reads the HTML markups, and the browser displays accordingly. If there are 20 markups which says <img src=..> then it means that your browser will have 20 trips to DNS server, resolve the IP, then go to the actual server, only after that will you see the results in your browser. This is where the benefit of a local DNS server comes to play, every time your browser needs to resolve an IP, it doesn’t travel for 200ms plus plus, it travels less than 10ms (maybe less depending on your LAN speed, and routing setup, but we won’t discuss this topic) The reason why torrents, YouTube vids, limewire and other peer-to-peer users will not benefit much from DNS improvements is that, they don’t have a big need for IP resolution, they make very few requests from a DNS server; However, if you use the internet for web browsing, this can work wonders for you.


Tip #3 Install a proxy server A proxy server is a piece of software that you put in between your browser and the target web server. The basic idea can be summarized into these steps:

  1. You type http://www.kindawannadothat.com, for example, your web browser doesn’t not make the request directly against the server, which hosts KindaWannaDothat.com, and instead it makes the request against your installed web proxy.
  2. Your installed web proxy, in turn, makes the request to http://www.kindawannadothat.com, receives the html pages, and serve it up to your browser.
  3. Your web proxy does not discard the web pages that it served you, it will store these pages in its cache database, so that when another workstation within your LAN makes another request to http://www.kindawannadothat.com, it will no longer have to make the whole round trip over again, it will serve up the web pages coming from its cache, so you will be viewing web pages served up from your local LAN. The web proxy will attempt to update its cache database from time to time to keep the information current.

There are plenty of options if you want to install a web proxy, here are 2 that I can recall.

Proxy servers actually serve other purposes, the main one would be to block unwanted sites so that it doesn’t show up in your browser (or in your children’s browser), but you can use it for web caching as well.




Post navigation
(previous post)
| | | | .

{0 Comments ..

Sorry, the comment form is closed at this time.