Thursday, November 5, 2009

The Development of the Domain Name System

Summary
This paper describes the design of DNS, which was needed as the old hosts.txt way of doing name resolution was becoming unwieldy. A decision was made to keep the new system simple (rather than a full ACID distributed DB) as the designers felt this would ease adoption.

In DNS each name is associated with a group of resource records with known types (today I imagine everything is IP). To find these records there are resolvers and name servers. Resolvers know how to query the system to resolve a name, name servers store the actual data.

DNS forms a tree, with the root nameservers at the root(s). This tree can be split into zones, where zones are usually simple subtrees in the overall structure. The administration of the tree starts at the top (so with root admins) and then at the 'root' of a zone, admin responsibilities change.

Comments
I enjoyed this paper. The authors give a good description of the system, and the rational behind it. However, the focus on keeping things simple doesn't really seem to have done so, and DNS today is actually quite complex and error prone. Perhaps a more robust structure at design time would have slowed adoption, but given the inevitability of a distributed name service it might have been worth having a system that would be easier to administer.

I also found it interesting that in 1983 each root server only handled about 1 query per second. This is an absurdly low query rate, and it actually reflects well on the DNS design that it can still work today with much much higher query rates.

No comments:

Post a Comment