Hello dnsop folks,

Discussion with Manu Bretelle in the other thread got me thinking about the subset of codes operators want to hear about. Let's think a bit about this part of spec:

On 09. 11. 21 23:59, internet-dra...@ietf.org wrote:
        Filename        : draft-ietf-dnsop-dns-error-reporting-01.txt
6.1.1.  Constructing the Reporting Query

   The QNAME for the reporting query is constructed by concatenating the
   following elements, appending each successive element in the list to
   the right-hand side of the QNAME:

   o  A label containing the string "_er".

   o  The Extended DNS error, presented as a decimal value, in a single
      DNS label.

   o  The QTYPE that was used in the query that resulted in the extended
      DNS error, presented as a decimal value, in a single DNS label.

   o  The QNAME that was used in the query that resulted in the extended
      DNS error.  The QNAME may consist of multiple labels and is
      concatenated as is, i.e. in DNS wire format.

   o  A label containing the string "_er".

   o  The reporting agent domain.  The reporting agent domain consists
      of multiple labels and is concatenated exactly as received in the
      EDNS option sent by the authoritative server.

4.2.  Example
   _er.7.1.broken.test._er.a01.reporting-agent.example

Using RFC 8020 ("there's nothing below NXDOMAIN") or RFC 8198 (DNSSEC aggressive cache) an operator can effectively cut out some parts of the "reporting subtree" and dampen queries for it. This enables various tricks, depending on how we construct the query name:

_er.<ede code>.<qname>._er.<reporting agent domain>
_er.<qname>.<ede code>._er.<reporting agent domain>


A) Variant A (current draft):
- I'm operating domain "petrs.example"
- subtree "dnssec-failed.petrs.example" is a playground which intentionally fails DNSSEC validation (sorry Manu :-))
- error reporting agent domain is "agent.test"

I use domain dnssec-failed.petrs.example in a piece of Javascript which renders "DNSSEC validation does (not) work" text on my web front page page, so it gets queried fairly often, and I do not want to hear about failures in this subtree.

Within the current draft it can be done with agent.test zone file like this:
$ORIGIN _er.agent.test.
* TXT "tell me!"
dnssec-failed.petrs.example TXT "silence"

Wildcard expansion rules & RFC 8020 & query name minimization will cut out the whole subtree, saving traffic and also noise in data received by the reporting agent.


B) Variant B:
- My domain "petrs.example" hosts a really nasty political satire, and it gets censored a lot - I don't care about reports of EDE "Censored" because there is nothing I can do about them anyway
- I still _do_ care about technical issues.

To make use of the same technique as in the previous example (wildcard), we would have to switch order of elements in the reporting query to:

_er.<qname>.<ede code>._er.<reporting agent domain>

This structure allows to use the same trick on per-EDE code basis:

$ORIGIN _er.agent.test.
* TXT "tell me!"
16 TXT "silence"  ; 16 = EDE Censored



The question is: Which variant is better?

I don't remember from our previous discussions if the current ordering in draft was a conscious choice or not, sorry if I forgot.

Have a great weekend everyone!

--
Petr Špaček

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

Reply via email to