Subject: [DNSOP] changes to extended errors based on your comments

From: Wes Hardaker <[email-masked]>
Date: Fri, 09 Aug 2019 22:30:14 -0700

Thanks for your feedback about the extended errors draft.  Below are
responses to some of your previously raised points in email to dnsop:

8.4 Ralph Dolmans
~~~~~~~~~~~~~~~~~

  I made an Extended DNS Errors implementation in Unbound during the
  IETF104 hackathon. Implementing the code that handles the errors was
  rather straightforward, the difficult part is (as Stéphane already
  pointed out) finding the right locations in the code for the
  individual errors. Some remarks regarding the draft:

8.4.1 NOCHANGE Since it is possible to have multiple extended error options, is it
----------------------------------------------------------------------------------

  expected to return all errors that match the result, or only the most
  specific one? For example: if a DNSSEC signatures is expired should
  both the "DNSSEC bogus" (SERVFAIL/Extended error 1) and the "Signature
  expired" (SERVFAIL/Extended error 2) be returned?

  + Response: I'd return what seems to be the most appropriate set,
    given the situation.  I think both of the above seem to apply so the
    question is, would it be confusing to ever return "too much".  I'm
    not sure we want to over-specify and implementations should be free
    to pick what debugging/info-codes they think is best to return.

    IMHO, personally, I think sig expired is sufficient because it
    implies the BOGUS code already.

8.4.2 DONE I am not sure whether linking the info code to the rcode is a good idea.
-----------------------------------------------------------------------------------

  Some info codes can happen for different rcodes. It is in Unbound for
  example possible to block a domain by sending a REFUSED rcode, while
  the document list blocking only for the NXDOMAIN rcode. If the
  rcode/info-code coupling will remain then I would like to have the
  same info code for a specific error under different rcodes, for
  example always use info-code 1 for blocking.

  + Response: Per discussion at IETF105, the linking is now dropped.

8.4.3 NOCHANGE Since EDNS is hop-by-hop, only error information from the resolver you
-------------------------------------------------------------------------------------

  are talking to is returned. There are cases when the interesting
  information is not in the first resolver. For example: if a resolver
  forwards queries to another one and the last one does DNSSEC
  validation then the resolver you are talking to does not generate the
  interesting information. Is it maybe an idea to add some text stating
  that extended error-aware resolvers should forward the received EDNS
  option?

  + We sort of discussed this at one point in various venues (both
    physical and electronic).  I think the resolution was "lets leave
    that for an update once we get more experience".  I think picking
    when to forward and when it's meant "just for you" becomes complex
    and harder to specify.

8.4.4 DONE I think having the extra information provided by this document is useful
-----------------------------------------------------------------------------------

  for debugging, and only for that. This extra information should not be
  used to make any DNS resolving decision, which makes the retry flag a
  bad idea. At the moment I don't have to trust all my secondaries as
  long as my zone is DNSSEC signed. The worst thing they can do is not
  return my data or tamper with it, in which case the validating
  resolver will ignore it and try another nameserver. Giving a
  nameserver the power to instruct a resolver to not try at another
  nameserver gives them the power to make my zone unavailable. This
  completely changes the current trust model. Please remove the retry
  flag from the document.

  + The R bit has been removed in the latest flag, due to your and other
    people's requests :-)

-- 
Wes Hardaker
USC/ISI