[dns-operations] Using all the addresses of every name server? (Was: ANY efforts at taking additional responses more compact?

Paul Vixie paul at redbarn.org
Sun Sep 11 19:43:35 UTC 2016



Stephane Bortzmeyer wrote:
> On Wed, Sep 07, 2016 at 05:33:48PM +0900,
>   Paul Vixie<paul at redbarn.org>  wrote
>   a message of 30 lines which said:
>
>> but the non-unrolling behaviour is reasonable and it is compliant
>
> Really? I read RFC 1035, section 4.2.1, and specially 7.2, as saying
> that a resolver must (not RFC 2119 MUST, RFC 1035 was written before)
> try all IP addresses of an authoritative name server. RFC 1034,
> section 5.3.3 is even clearer "The strategy is to cycle around all of
> the addresses for all of the servers with a timeout between each
> transmission.  In practice it is important to use all addresses of a
> multihomed host [...]"

for the purpose of determining which address is closest, it's certainly 
necessary to try every address. not all DNS resolvers do this; i'm aware 
of one who always tries a-root first and never tries any other server 
unless a-root doesn't answer.

in the general case of multihoming not just for DNS but for all 
services, error conditions share fate differently. ICMP Type 3 
(Destination unreachable) divides up into subtypes 0 (network), 1 
(host), 2 (protocol), 4 (fragmentation needed) and 5 (source route 
failed) which are per-address, vs. subtype 3 (port) which is per-host.

note: i realize that modern DNS servers have one listening socket per 
address, due to limitations of the BSD Sockets API; however, those are 
implementation specific and a multihomed DNS server listening on 
INADDR_ANY (0.0.0.0) can exist in principle, and more will exist in the 
future as the industry moves beyond the BSD Sockets API.

> [Which does not mean it is properly implemented by everyone, of
> course.]

of course. but when revising a specification, what's important is 
potentially reasonable assumptions made by previous implementors. for 
example, when BIND4 could not understand multiple RR's per message in an 
AXFR, this wasn't consindered reasonable, BIND4 was declared buggy, we 
all worked around it for a few years, and then we declared it dead.

that won't happen for implementors who treat ICMP type 3 subtype 3 as an 
excuse to skip the other addresses attached to a multihomed host, 
because their expectations aren't unreasonable.

-- 
P Vixie



More information about the dns-operations mailing list