Shane Kerr wrote:
> I wrote a quick draft to specify that answers returned should be returned in
> a random order:
> 
> https://datatracker.ietf.org/doc/draft-kerr-everybodys-shuffling/
> 
> This comes out of recent experience we had where a customer saw significant
> bias in how their servers were used until we randomized the order where
> returned our answers. I confirmed that in many cases neither authority
> servers nor recursive resolvers shuffle the answers; customer reports
> indicate that the actual clients just use the first answer returned.

Hi, Shane:

Anecdotally we have also seen load balancing bias when address record
sets are returned in a fixed order, with very even distributions when
RRsets are rotated (what you call "just rotating" in Section 3.3.1).

While I think it's a good idea for servers to return address RRsets
in such a way that clients don't glom onto one of the addresses and
cause load imbalances, I'm not sure it should rise to the level of a
MUST.

The title is a little inaccurate: "DNS Servers MUST Shuffle Answers".
You have four recommendations in Section 2, but only one of them is a
MUST, and only some of them apply to servers. And the recommendation
that authoritative nameservers perform randomization is only a SHOULD.

I'm also a little bit confused about the use of RFC 2119 normative
language ("SHOULDs" and "MUSTs") in an Informational document. Also,
don't these requirements update STD 13?

Regarding the recommendation for applications ("Applications SHOULD
use RR within an RRset in random order"). How does this interact with
RFC 6724 ("Default Address Selection for Internet Protocol Version 6
(IPv6)") Section 6 ("Destination Address Selection"), which specifies
rules for ordering the list of destination addresses to connect to? It
seems to me that an application that takes a list of addresses produced
by a stub resolver that implements RFC 6724 Section 6 and randomizes
it is effectively ignoring the ordering performed by that algorithm.
Is your recommendation that applications should simply ignore the RFC
6724 algorithm? If so, wouldn't it be better to work on updating RFC
6724?

You refer to applications that use RFC 8305 ("Happy Eyeballs") as
"sophisticated" applications and seem to imply that maybe they don't
need to randomize answers since it's the "naive" applications that
benefit from randomizing:

    Whether or not an application stores results is less important than
    how the application uses the results. A sophisticated application
    may use several of the IP addresses for a given name concurrently,
    for example using Happy Eyeballs [RFC8305]. However a naive
    application may simply pick the first IP address that it gets back
    from the DNS; such applications will benefit from using a resolver
    that randomizes answers.

But RFC 8305 (and its successor draft-pauly-v6ops-happy-eyeballs-v3)
require sorting per the RFC 6724 Section 6 algorithm. So it seems like
if there does need to be a normative requirement for applications to
randomize addresses that overrides RFC 6724 it should also apply to
Happy Eyeballs?

There is no Implementation Status section. Looking at a couple of
implementations (BIND and Unbound), I think both of these servers would
violate your MUST ("DNS Recursive Resolvers MUST return RR within an
RRset in random order.") BIND permits configuring per-RRset ordering
policy ("fixed", "random", "cyclic", and "none") but I believe only
one of those options ("random") are compatible with your MUST. Unbound
implements two policies at a global level ("rrset-roundrobin: yes" and
"rrset-roundrobin: no") which I believe control whether rotation is
done, which is what your document calls "just rotating" and also
wouldn't conform to your MUST.

Overall I think it might make sense to have an informational document
that describes the problem, the mechanisms that could be used in the
DNS to address that problem (various kinds of reordering at different
points in the stack, etc.), makes operational recommendations and
encourages implementers to adopt those recommendations as good defaults,
but I don't think it makes sense to try to enforce a new, normative
protocol requirement like this on DNS servers or applications.

-- 
Robert Edmonds

_______________________________________________
DNSOP mailing list -- dnsop@ietf.org
To unsubscribe send an email to dnsop-le...@ietf.org

Reply via email to