forwarding algorithm and timeouts

Bob Vance bobvance at alumni.caltech.edu
Tue Mar 27 23:51:51 UTC 2001


Thanks, Brad.

>Classicly, if the first nameserver that a Microsoft OS contacts does not
>respond, then that machine thinks that all the nameservers are dead
>and it gives up.

Actually, I just tested Win95 OSR2, with Winsock2, and it, at least, does a
good job of falling thru the entire list.
I had 3 nameservers listed and took the first one down, then the second and
in both cases it still resolved.  It appears that it also dynamically moves
the last one that responded to the top of its list, so that after a
fallover, subsequent requests go immediately to the last one that was
"up" -- a good thing :)

It looks like its initial delay is also ~5 seconds.  I can't take down the
3rd server, so I'll have to re-config and do some tracing to see how it
*re*-cycles thru the list (as soon as I get BIND9 working :).

Since there appears to be no standard, I guess this is a pretty worthless
piece of sleuthing, although I've learned something.




-----------------------------------------------
Tks          |  BVance at sbm.com
BV           |  BobVance at alumni.caltech.edu
Sr. Tech. Consultant,    SBM
Vox 770-623-3430         11455 Lakefield Dr.
Fax 770-623-3429         Duluth, GA 30097-1511
===============================================

-----Original Message-----
From: Brad Knowles [mailto:brad.knowles at skynet.be]
Sent: Tuesday, March 27, 2001 4:21 PM
To: bvance at sbm.com; sbm-BIND-L (E-mail)
Subject: RE: forwarding algorithm and timeouts


At 1:59 PM -0500 3/27/01, Bob Vance wrote:

>  Of course, here I was talking about the resolver routine searching its
>  nameserver list -- do Win9x and Mac clients follow the same resolver
>  algorithm laid out in 'DNS and BIND' for the Unix resolver.

	I don't think that they do, at least not in Windows.  Classicly,
if the first nameserver that a Microsoft OS contacts does not
respond, then that machine thinks that all the nameservers are dead
and it gives up.  It doesn't matter how many nameservers you list,
only the first one is ever used.

	On the Macintosh, at least with more recent releases of
OpenTransport, I believe that they more closely follow the algorithms
mentioned in the book, although I do not believe that they are in
100% compliance -- I've raked Garry Hornbuckle (Product Manager for
Open Transport) over the coals for this on a number of occasions.

>  1) for forwarding nameservers, what is the timeout used when trying each
>  server in the forwarders list?

	It depends on the version of BIND you're talking about.  For
older versions, they follow the older algorithm where they simply
contact the first one on the list, wait a while, and if they haven't
gotten an answer back yet then they proceed on to the next one in the
list.

	For newer versions (e.g., BIND 8.2.3-REL and BIND 9), they use
the standard RTT algorithm for determining which of the forwarding
servers appears to be "closest" (i.e., it consistently responds more
quickly), and they'll use whichever one that is.

	In either case, they only ever use a single forwarding
nameserver, regardless.  What changes is their method of falling back
to a different nameserver that they will exclusively use, if the
first one appears to be dead.

>  2) do all resolvers tend to follow the resolver algorithm in "the Book"
and
>  is there any discussion of this in the RFCs?

	See above, but the answer is no.  Unfortunately, I don't believe
that this gets any discussion in any RFC or other document I know of.

--
Brad Knowles, <brad.knowles at skynet.be>

/*        efdtt.c  Author:  Charles M. Hannum <root at ihack.net>          */
/*       Represented as 1045 digit prime number by Phil Carmody         */
/*     Prime as DNS cname chain by Roy Arends and Walter Belgers        */
/*                                                                      */
/*     Usage is:  cat title-key scrambled.vob | efdtt >clear.vob        */
/*   where title-key = "153 2 8 105 225" or other similar 5-byte key    */

dig decss.friet.org|perl -ne'if(/^x/){s/[x.]//g;print pack(H124,$_)}'



More information about the bind-users mailing list