Andrew Sullivan wrote:
Hi,
On Mon, Nov 13, 2017 at 08:14:14AM -0800, Paul Vixie wrote:
If I ask the authoritative server for example.com about a name
label.example.net, in a graph-theoretic sense the NS RRset for the
root zone is clearly closer to label.example.net than anything else I
can give.
dns is not that kind of graph.
...
Obviously. But your example is still on the current tree, just not
immediately below. The example I gave is in a completely different
section of the tree, and my point is that none of the text you quoted
shows why "." isn't the "closer server" that an authoritative server
somewhere beneath com. can give in response to a qname that is
somewhere beneath net. We might think today that is a misfeature in
STD13, but I don't think it's a misinterpretation of what STD13 says.
I don't know what kind of graph would make that false.
actually, i had misread you (com vs net). i apologize. let me re-answer.
there is no reason for an authority server to know who the root name
servers are. so, there can be no expectation that it would know any
"closer" name server set than the one at its zone bottom.
since RFC 1034 talks about zone bottoms, and "closest enclosing", and
its algorithm speaks specifically of a referral being generated by
copying non-authoritative NS RRs from the zone bottom into the answer,
there is no reasonable interpretation of "closer" other than an NS RRset
which is closer, along the path from the zone apex to the qname, than
the zone apex was. in fact, from that algorithm, there is no way to
generate a referral other than by copying along-the-path data into an
answer.
any attempt to interpret "closer" in an off-the-path way is a clear
misinterpretation of RFC 1034. we are only on "the current tree" here.
as i wrote during the SOPA wars, REFUSED has been widely used as an
administrative denial, and repurposing it would not be effective at this
late date.
This, too, seems to be a claim that is at best poorly justified. It
might be that it is how BIND interprets the RCODE, but it's not what
it is defined to be.
it's defined as "administrative denial" not merely "widely interpreted
as administrative denial" as i wrote above.
... I'm anyway not sure your description in the circleid piece (or
elsewhere) is inconsistent with the RFC 1035 definition of RCODE 5:
"The name server refuses to perform the specified operation for
policy reasons." Refusing to respond to this or that IP address is a
policy, and refusing to perform upwardreferrals is also a policy, no?
"no." the client isn't asking for an upward referral, it's asking for an
answer, and is expecting either an answer (positive or negative or
empty) or an on-the-path referral copied from the non-authoritative data
at the bottom of the authority zone. it is not expecting its query to be
interpreted as a request for an upward referral, so, it cannot treat
REFUSED as an administrative denial of that upward referral.
the rest of the text of the definition of REFUSED makes this clearer:
<<For example, a name server may not wish to provide the information to
the particular requester, or a name server may not wish to perform a
particular operation (e.g., zone transfer) for particular data.>>
the word "particular" appears four times.
as witnessed in discussions of the u.s. constitutions and the christian
bible, arguments about the literal intent of the authors are interesting
mostly to scholars, whereas our concern should be with the actions taken
by the far end given the data pattern we transmit and the circumstances
as we know them.
while specific guidance was not given as to resolver action in response
to each possible authority RCODE, i have both witnessed and implemented
full resolvers which treated REFUSED as a permanent failure whereas
SERVFAIL was a temporary failure. that is, receipt of a REFUSED from any
authority consulted during iteration would cause a final error code
(assuming no other authority gave a more useful answer) of NO_RECOVERY,
whereas if only timeouts and SERVFAILs were heard, the final error code
would be TRY_AGAIN. (these are BSD h_errno values, but modern API's have
equivalents.)
---
treating "i don't have the zone configured" as a REFUSED condition,
while treating "i can't write the secondary zone" or "i can't read the
primary zone" as SERVFAIL conditions, adds no value, but does subtract
it. usually when i don't have a zone configured that is delegated to me,
it's because i have not caught up with my inbox, or i have FUBAR'd my
configuration file using "git" or similar. in those cases, the name
being looked up _might exist_ and retrying later _might succeed_.
i have heard a number of folks argue that this logic is common, but i
have heard noone argue that it is superior to known alternatives. can we
hear someone who is in favour of this for reasons beyond "five million
frenchmen cannot be wrong"?
--
P Vixie
_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop