Last weekend it peaked to about 36C here in Vancouver! So how did I spend such a beautiful hot summer weekend? I made my Telus highspeed go 3x faster by changing my DNS servers from Telus’ defaults to the ones provided by OpenDNS.
I’ve always hated Telus’ DNS servers. They are pitifully slow and this weekend I got around to checking out OpenDNS’s public resolvers. You can read all about their anti-phishing, spell checking and other features here. The only thing that matters to me is speed and their resolvers are fast. So how does changing DNS resolvers make Telus highspeed 3x faster?
Well perceived speed is more than just the maximum rate that you can download data. Let’s consider something to be fast by the time it takes from when a link is clicked to when the page finishes loading. To me, fast would be < 2 seconds. The problem is that Telus’ DNS servers add upwards of 4 to 5 seconds to a request resolving each domain name. Only after all the resolving can I start downloading data. For a modern web page, where stuff comes from multiple domains, that meant a lot of pages took upwards of 15 to 20 seconds to load!
By switching over to OpenDNS’s servers my overall browsing experience hugely improved. Since this is MostlyGeek, I wrote a yummy shell script to test the speed differences.
For this test I used randomly generated hostnames to prevent caching to see how long each system would take to resolve a domain it has never encoutered. The primary DNS is my control as nothing should resolve faster than that because there would be no recursion.
I tested OpenDNS’s, Verizon’s public DNS, the CityTel DNS (in Prince Rupert, my hometown), against Telus’. From the result above we can see just how slow the Telus servers are. Wow, almost 8 to 9 times slower.
The other tests I ran were for cached domains: yahoo.com, myspace.com, etc. The results were essentially the same as above. From results, I think the problem with Telus’ resolvers is that the cache is way too small! They have so many people resolving domains off those servers and the cache turn over is so high that nothing stays in the cache for very long.
Also many requests fail and an IP address is never returned! I was nice in my tests that I set timeouts to only 3 seconds (see shell script) and no retries. By default the timeout (before a retry) is around 5 to 10 seconds. So this could mean that either the page doesn’t load or you have to waste upwards of 10 seconds for a DNS request that may never get a response. Very bad. Very unstable servers.
For those that do not trust the rewriting done by OpenDNS, the Verizon servers were a very nice discovery. They are in the range of 188.8.131.52 to 184.108.40.206, and they are extremely fast! Plus the IP addresses are very easy to remember. A very simple change (hack?) with huge return on investment.
On a closing note, if you are or know who administers Telus’ DNS resolvers, please tell them to get their systems spiffed up, or to talk to me. I’ve always wanted to try implementing this!