[dns-operations] Query merging and/or prefetching [was: Re: Who Ignores TTLs ?]

Paul Vixie vixie at isc.org
Sun Feb 27 17:17:36 UTC 2011

> From: Simon Leinen <simon.leinen at switch.ch>
> Date: Sun, 27 Feb 2011 17:00:57 +0100
> So, which recursive name server implementations *do* perform such
> merging/collapsing? (And if so, how? :-)

hopefully all of them, since not doing it makes the cache far more

> Should this optimization be avoided when the outstanding query has been
> outstanding for too long? I'd probably issue a new query anyway if the
> old query has been outstanding for more than a second or so, just
> because "things may have changed" and it seems harmless to send an extra
> query every second.

i agree that once a second would be harmless wrt poison, but since
this would raise the load on an authority at *precisely* the time
when an authority's capacity is reduced by some outside cause, it's
not a good overall system design.

noting: to the best of my knowledge no existing rdns works this way.

> ...
> On the other hand, it may be that most of the potential benefits of this
> "query merging" could be achieved by the recursive nameserver
> prefetching such "really popular names" before they expire.  Of course
> this potentially creates extra traffic, but is simpler to implement;

to get the poisoning safety you'd still have to merge queries that come
in during the prefetch process.

> Olaf mentioned in <A80A7B02-4782-4D80-B654-7ADC4325AE10 at NLnetLabs.nl>
> how Unbound does it.  Sounds simple and effective!

thinking about how we did the timers for NOTIFY, i have to agree (again)
that the prefetch idea is good as long as it's tied to actual queries and
not merely to the TTL (which is what olaf explained, so it's all good.)

More information about the dns-operations mailing list