Ted Lemon wrote:
On Saturday, March 12, 2016 01:58, Paul Vixie wrote:
Ted, I think you're reading it wrong. The implementation doesn't matter
at all. As Co-Chair Woolf kindly and classily 2x4'd me last year, an RFC
should be of the form "if you want to do X, here's a way to do it
interoperably."

With all due respect, Paul, it is you who are reading it wrong, because the 
spec doesn't do what you say Supreme Co-Chair Woolf said, to wit:

This specification should express the basic idea that after an NXDOMAIN
has been received from an authority server for name X, then the receiver
of that NXDOMAIN is allowed to (note: "allowed to"; this is optional,
and is just an optimization) treat it as also applying to any name that
is in-bailiwick for X. (Sometimes that will be expressed as "at or below
X" or "a subdomain of X".)

This is what the specification _should_ say, not what it _does_ say.

you've caught me out as to not having read drafts after -00. what i did read was this:

http://tools.ietf.org/html/draft-vixie-dnsext-resimprove-00

which says:

3. Stopping Downward Cache Search on NXDOMAIN

   3.1. In virtually all existing resolvers, a cached NXDOMAIN is not
   considered "proof" that there can be no child domains underneath.
   This is due to an ambiguity in RFC 1034 that failed to distinguish
   empty nonterminal domain names from nonexistent names.  For DNSSEC,
   the IETF had to distinguish this case, but the implication on non-
   DNSSEC resolvers wasn't fully realized.

   3.2. When searching downward in its cache, an iterative caching DNS
   resolver should stop searching if it encounters a cached NXDOMAIN.
   The response to the triggering query should be NXDOMAIN.

   3.3. When an iterative caching DNS resolver stores an NXDOMAIN in its
   cache, all names and RRsets at or below that node should be deleted
   since they will have become unreachable.

   3.4. By implication, a stream of queries FOO.TLD, BAR.FOO.TLD where
   FOO.TLD does not exist would normally cause both queries to be
   forwarded to TLD's nameservers. Following this recommended practice,
   the second query and indeed any other query for names at or below
   FOO.TLD would not be forwarded.

my reason for quoting this here will be apparent below.


Like all other forms of negative caching, this is just a speedup, and if
a cache is implemented in a way that makes "is there a negative cache
element for whose owner name this qname is in-bailiwick?" too expensive,
then that negative caching implementation will probably not perform this
optimization.

If it's a speed hack, there shouldn't be any normative language
associated with implementing it. I'm objecting to the normative
language, not the clarification that allows the speed hack. I agree with
the clarification.

i argue that in resimprove-00 (which is superceded by the bortzmeyer nxdomain work, as to this nxdomain topic), we ought to have written "can be deleted" rather than "should be deleted", since deletion is a storage optimization that has no on-the-wire effect.

as to the word "downward" in the face of modern caches which aren't nec'ily hierarchical, i think i chose the right word, since 1034+1035 describe system properties by use of phrases like "search downward". the hierarchical nature of the cache is not a necessary property of actual caches, but the responder's behaviour is described that way. to fix this would be awkward:

3.3 When searching its cache, an iterative caching DNS resolver should discover any cached NXDOMAIN for which the QNAME is in-bailiwick, and in this case, the response should be NXDOMAIN, even if there are other data stored in the cache at owner subdomains of the cached NXDOMAIN.

what i'm urging here is great caution both for the authors and the reviewers. improving the readability of this topic over what we wrote in resimprove-00 seems necessary but is not a simple proposition.

--
P Vixie

_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop

Reply via email to