root name server and traffic

Jim Reid jim at rfc1035.com
Mon Sep 25 09:49:58 UTC 2000


>>>>> "Alex" == Alex Shi <chpshi at connection.com> writes:

    Alex> Let's start with an example. A name server NS1 received a
    Alex> query for www.abc.com. NS1 does not know www.abc.com so it
    Alex> send a query to root name server. The root name server will
    Alex> tell NS1 which name server takes care of www.abc.com. Let's
    Alex> say that NS2 knows www.abc.com.

Actually the root server would return a referral to the .com servers:
a list of the names and addresses of the .com name servers. The server
would then query one of the .com servers, which would return a
referral to the abc.com servers. One of them would the be queried to
get the answer for www.abc.com. Your server will also have cached the
referral answers, so if it gets another query for a .com or abc.com
name server, it can go direct to those servers instead of querying the
root name servers.

    Alex> To my understanding, the root name server must maintain a
    Alex> record to answer this query. And this record must tell the
    Alex> querier that "NS2 knows www.abc.com". Why not directly tell
    Alex> the querier the IP address of www.abc.com? It seems to me
    Alex> that a distributed DNS dababase does not reduce much traffic
    Alex> and storage, but doubles them.

Your questions are based on a false premise. Sure, the root servers
could know the names and addresses of everything in the DNS. Well in
theory anyway. However that doesn't scale. I doubt if anyone makes a
computer big enough to hold the entire DNS name space, let alone
answer for it. [And let's just acknowledge the sheer logistical
impossibility of keeping the data on that massive server up to date.]
In fact the scaling problems of having one single database in one
place for all the hosts on the ARPAnet was the reason why DNS was
invented on the first place.

And your thoughts about saving bandwidth are not properly thought
out. Yes, there could be fewer query and answer packets if the root
servers knew everything. But how would everyone get the data for their
own DNS zones to those servers? And how would that data transfer be
authenticated? And how often would it be loaded into the (one?) master
server and transferred to the others? How much traffic would that
generate? And why should someone have to send a DNS query to a server
on the other side of the world to get the IP address of the print
server on the office LAN? How much WAN bandwidth would get wasted on
lookups for local names? FYI, I have seen computers in Taiwan and
Singapore send hundreds of thousands of queries a day - for a
non-existent local name! - to a name server in N. America.

BTW, in this case doubling storage is a Good Thing. It means there's
no single point of failure because the DNS data can be stored in >1
place. All that's required is a data replication/synchronisation
protocol. Surprise, surprise the DNS has that.



More information about the bind-users mailing list