Ed,

I'm having trouble understanding your specific concerns.

There is a clear semantic difference between NXDOMAIN and NOERROR/NODATA.
The first indicates that the name does not exist (and could not have been
synthesized by a wildcard). The second indicates that the name exists (or
was synthesized by a wildcard), but has no data associated with the
specific record type that was queried, and has either data associated with
other types, or in the case of empty non-terminals, has descendent names
that own data. This distinction may not be particularly relevant to an
enduser application directly, but it certainly is for name resolution APIs
and resolvers they use. For example non-existence of a name will suppress
subsequent queries for other types (e.g. in the dual stack behavior of
getaddrinfo() and cousins), and resolvers implementing aggressive negative
caching will further use the type bitmap in the NSEC record to determine
what data types exist or not. By eliminating the NXDOMAIN signal, Compact
DoE has a direct impact on such things, which is one of the things we are
trying to repair in the spec.

Shumon.

On Wed, Aug 9, 2023 at 12:46 PM Edward Lewis <edward.le...@icann.org> wrote:

> >Note however that Cloudflare quite deliberately implemented this
> differential behavior (to preserve NXDOMAIN visibility for pre DNSSEC
> clients I suspect). Some other implementations of Compact DoE return a
> uniform (NOERROR) RCODE for either case.
>
>
>
> The trouble I have, thinking about the difference between NXDOMAIN,
> NoError/NoData, and empty non-terminals is wondering about the impact of
> the difference between them.
>
>
>
> The reason that existence of a name is (redefined) in “The Role of
> Wildcards in the Domain Name System” (RFC 4592) is that, in classical DNS,
> the only time whether a name existed or didn’t came during the process of
> synthesizing a response.  Whenever a query for a “name, class, type”
> discovered there was no matching data, it didn’t really matter whether it
> was the inability to match a name or, when a name matched, an inability to
> match a data set, unless it became a question for whether an answer could
> be synthesized.  Within the protocol, and hence as a DNS protocol engineer,
> the difference between NXDOMAIN and NoError/NoData doesn’t seem terribly
> important.
>
>
>
> I ought to stop and observe that I am reluctant to say whether a name
> exists or not, instead I qualify a name as having descendants or associated
> data.  The reason is that a non-existent name may still return a response
> for data while an existing name may not return a response for data, and
> this confuses the issue.  A non-existent name (no descendent, no data) may
> be matched by a source of synthesis (wildcard) and appear to the querier
> has having an answer and therefore, in some sense “existing.”  Meanwhile an
> empty non-terminal may appear to not exist to a querier because it has no
> data to return.  This is what makes this topic really confusing.  What’s
> sufficient for the DNS protocol is at odds with how other protocols rely
> upon the data in the DNS.
>
>
>
> When I mentioned “classical DNS” I meant to exclude the “minimal queries”
> approach.  (I haven’t given minimal queries much thought.). For now, I’ll
> assume that this adequately handled elsewhere and skip this.
>
>
>
> What I’m driving at is this is a case where, if we solve for the needs of
> the DNS protocol, problems with other applications may arise.  For the most
> part, if there is no data to match a query, it doesn’t matter if it is
> NXDOMAIN or NoError/NoData to the DNS.  The question is how does it matter
> for other applications, especially if Compact Denial of Existence changes
> the way things are now - in any direction - will it upset other
> applications?
>
_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop

Reply via email to