Monday, November 3, 2008

Development of the Domain Name System

This paper outlines the process of designing the Domain Name System as the Internet grew to a size that made a centralized name-to-IP address mapping impossible. As a result, designers attempted to create a distributed database that is decentralized and performant enough to scale to large numbers of names. Reflecting the direction that the network was taking, the DNS system was designed in a hierarchical manner where organizations are responsible for their own subset of the naming world.

In addition, DNS was supposed to be extensible to cover more than just name-to-IP mappings. As far as I know, the only areas where this was successful was for MX mappings and reverse DNS; as the paper points out, because creating new mappings require agreement between the community to give semantics to the new mapping. The most difficult part is community-centric work, not anything technical.

DNS has clearly been successful for email and for name resolution. However, in terms of the extensibility, I would say that the difficulties outlined in the paper still exist and have not been resolved. In addition, the caching, although it is important to obtain decent performance (or, as the paper says, "tolerable performance") I am not convinced that the caching actually helps for most cases: since DNS has become a mechanism for load balancing, the most popular sites will have low TTL values to ensure proper load balance between actual machines; in addition, these are the same names that could benefit from caching.

The paper touches slightly on the security issues, but caching necessarily can cause problems due to spoofing; if someone spoofs a name server and separately ensures that a query is cached at a local name server with a high TTL, they can nearly permanently override the proper owners; I believe similar attacks have occurred in practice. To address this, I believe security has been added through DNSSEC although I'm not familiar with how it works.

One interesting thing in the paper was that they envisioned the DNS also being used for things like having a universal address for files; I think this basically came about through the URI scheme which leverages naming from DNS without having to add another record type; names map to IP addresses and the path in the rest of the URI results in a protocol-specific path on the server. Still, this was an interesting forward-thinking item that did not happen due to the problems outlined above in defining a well-understood semantic meaning to the mapping in the DNS database records.

No comments: