I wish I would have written this up when I thought about it last week. It would have been cooler then posting it after the problem came up on Slashdot today.
While in the shower last week and not thinking of anything in particular a thought popped into my head regarding use of a non-incumbent DNS server and distributed content services like Akami.
Let me start by loosely explaining the Akami service. Akami makes many of your Internet experiences faster by pushing content that is frequently downloaded closer to the end user. They do this by placing content servers strategically connected the Internet all over the World. Now you might be thinking “that is fine here are these servers filled with data connected directly to my ISP – and just a few hopes away – but how do I talk to them”, and that is where the rub occurs regarding centralized DNS servers.
Akami’s system works by providing a different server IP address for the data you are asking about depending on your perceived location on the Internet. The issue is that you (your computer or router) never actually asked Akami directly for the IP address. You asked the DNS server so Akami gave an answer based on the location of the DNS server and not your computer. When you use your ISP’s default DNS server everything works as it should because you and the DNS server are both on your ISP’s network and thus Akami correctly hands out the IP address of the Akami server connected on or near your ISP’s network. When you use a centralized DNS service (Google DNS or OpenDNS) the DNS server and you are most likely not on the same network and possibly very far way in terms of Internet connectivity. Thus when Akami makes an assumption about your location and decides which content server to send you to they may make a poor choice and your download will be much slower than expected.
Got it? Maybe not, let me try to explain in a non-computer way.
For the sake of this example let’s set out some rules:
1) There a pizza company called Hot Pies that has pizza stores all over the entire country
2) Each Hot Pies store will take an order over the phone and deliver to anywhere in the country – no matter the distance.
3) Every home in this country has a phone and the prefix of the number represents the town the phone is located (think area code and exchange – like our current system before number portability)
3) Hot Pies corporate has an 800 (toll free) line that you call and then are connected to the closest Hot Pies to place your order.
4) The toll free line does not ask you what town you are but instead uses Caller ID to see what number you are calling from and then makes an assumption about your location given your phone number’s prefix.
When you call from your own home phone the 800 number service correctly figures out your location and connects you to the Hot Pies store that can best fill your pizza cravings in a timely manor. Everything works out, the pizza is delivered fresh and hot satiating your appetite for the night.
What happens if you have some forward your call to the 800 service. Let’s say the 8 on your phone is broke, so you call a friend whose phone number contains no 8s and ask him to transfer your call to the 800 number. He says no problem and takes care of it – you are delivered to the Hot Pies location service and forwarded to a store to place your order. Hours go by and your pizza finally arrives cold and rubbery. What could have happened? You ask the driver where he has been and to your surprise he drove from a town 75 miles away. How did this happen? As the driver leaves grumbling about your bad tip you realize the store the pizza came from is pretty close to where your friend that forwarded the call lives. It dawns on you that the Hot Pie corporate line made their decision on which store to send you to based on your friend’s phone number and not yours.
And that is what is happening to some people using streaming services like AppleTV and others while using a centralized DNS server