Distributed Systems : Homework 3

Return a PDF document. If you use references, and please do, put the page number in to the citation. That is, do not assume that we are willling to read through the whole reference to verify your claim. Submissions are done using Moodle.

The Domain Name System (DNS) as a distributed system

As supporting material, you can read chapter 5.3.4 (Tanenbaum & van Steen 2nd
ed.), titled "Example: The Domain Name System", or any equivalent/better source
for an overview of how DNS works. For example the following resources may come
in handy:

http://en.wikipedia.org/wiki/Domain_Name_System
http://tools.ietf.org/html/rfc1035
http://tools.ietf.org/html/rfc1034

DNS is a key part of the infrastructure of the Internet. It has been in
operation for 30 years and has scaled up to both handle a massive increase in
users and the introduction of new kinds of use/misuse patterns, such as
attackers trying to overwrite DNS records or bring down the entire system. It
also represents a massive international agreement on how to manage a system that
spans over country borders. As such, it makes for an interesting example in many
contexts and its basics are even on the course prerequisite knowledge list.

Reflect this example system on what you have learned so far on this course. Use
the course learning objective matrix to get an overview of the theoretical content.

The goal of this exercise is to help you build a summary of a notable chunk of
the key topics of the course through a relevant real-world example, and support
using the DNS system as a familiar and proven point of comparison for elaborate
future distributed system proposals.

The task at hand is as follows:

Write an educative summary for a fellow student on what DNS is and how it works
as a distributed system, focusing on the point of the learning goals of the
course.

Cover at least the following topics - in whatever order seems most natural (they
do not need to be covered under these titles explicitly, or given equal weight
in the discussion, this is just a checklist to expand your mind):

1. Horizontal and vertical distribution.

Explain how the DNS service is distributed from the point of view of
a) vertical distribution (zone delegation, i.e. separation of concerns), and
b) horizontal distribution (particularly caching and the root servers, see
e.g. http://en.wikipedia.org/wiki/Root_nameserver ).

What are the main benefits of these design choices - why do you think they were made?

2. Management of replicas.

Explain how DNS name resolving (essentially) works; use as an example a
situation where you want to get to a web page URL http://www.baidu.com.cn/ [1]
from your handheld device connected to the university network. What are the key
differences between recursive and iterative name lookup here, and given a
choice, which one would you recommend to yourself in this case?

How is a DNS entry updated? How is the update propagated, and what about caches?
What kinds of name conflicts or other surprises are possible and what are
avoided by design? How does DNS handle consistency, i.e. ensure that the user
gets the correct information? Explain the use of the TTL value of a DNS record
in this context. [2]

3. Fault tolerance.

DNS servers are regularly attacked and will need regular maintenance
occasionally as well. How does the DNS system handle server failures of
different kinds?

Bring the different topics together to summarize how the DNS distribution and
replication design choices have contributed towards making the system scale to
millions of leaf node servers in the tree. (Feel free to apply big-O-notation
for complexity here as a shorthand - this is one of the better examples where
attention to complexity classes makes all the difference.)

If you feel up to it, consider the political significance of the agreements
behind DNS as well. This is not on the explicit course learning objectives, but
distributed systems often span multiple domains of control and therefore
considering the realism of the world we deploy our systems in is a valuable
skill.
 

Feel free to criticize the solutions taken as well, wherever appropriate.

[1] Currently shorter versions of the URL work as well, as USA and China have
agreed on Chinese access to the .com namespace, but the longer URLs are an
interesting artifact of the whole international agreement over namespace
management not being *entirely* seamless. And they are more fun as educational
examples; Europeans may find for example ".co.uk" a familiar equivalent
combination as well.

[2] I generally disapprove of dumping raw abbreviations on anyone, but TTL is
one of the more useful ones to just memorize. Hidden teaching agenda. ;)