Skip site navigation (1)Skip section navigation (2)
Date:      Mon,  7 Dec 1998 19:04:38 -0600 (CST)
From:      Tony Kimball <alk@pobox.com>
To:        net@FreeBSD.ORG
Subject:   Re: resolver behaviour
Message-ID:  <13932.30101.788469.964960@avalon.east>
References:  <alk@pobox.com> <199812080031.QAA10114@salsa.gv.tsc.tdk.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Quoth Don Lewis on Mon, 7 December:
: So if you discover that one of netscape.com's servers is broken, you're
: going to add a non-broken server to for netscape.com to your /etc/resolv.conf?
: Then when you find another broken server, you'll add another entry to
: /etc/resolv.conf, etc.

My expectation, on the basis of anecdotal experience, is that
two should be quite sufficient, if chosen well.  Name servers
at widely separated locations in the DNS graph rarely (if ever!
for I have never seen it happen) suffer common corruption.  

: NXDOMAIN replies are issued by servers that have been configured to
: be authoritative for the zone in which the name resides and that name
: is not listed in the zone file.

...and by servers which have been misconfigured, or are plain buggy,
and all those who rely upon those servers.

Quoth Mike Jenkins on Mon, 7 December:
: So the new resolver algorithm would sort of look like this?
: 
: 	for i in nameserver-list
: 	do
: 		answer=query $i
: 		case answer in
: 		timeout)  ;; # try next nameserver
: 		NXDOMAIN) ;; # try next nameserver
: 		*) break  ;; # got answer
: 		esac
: 	done
: 	return answer

Thanks.  This is what happens in practice today, only the looping is
done by hand by the end-user, instead of in the library.  I think such
an algorithm introduces too much latency into bad requests (i.e. ones
for which NXDOMAIN is correct), though.  When a person does it
manually, they do it because they *know* the request is valid, and the
server is broken.

read nameserver-list
set alarm at timeout
pausetime = timeout / N
nx = null
select-list = null

trap eintr {
  if nx == null return timeout
  else return nx
}

for i in nameserver-list
do
  query i 
  push i select-list
  select on select-list for pausetime
  for answer in pending replies
  do
    case postive(answer):
       return answer
    case NXDOMAIN:
       nx = answer
       continue
  done
end loop





  







To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?13932.30101.788469.964960>