Re: [DNSOP] Working Group Last call for draft-ietf-dnsop-dns-error-reporting

Roy Arends <roy@dnss.ec> Mon, 10 July 2023 21:28 UTC

Return-Path: <roy@dnss.ec>
X-Original-To: dnsop@ietfa.amsl.com
Delivered-To: dnsop@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 15A01C14CE52 for <dnsop@ietfa.amsl.com>; Mon, 10 Jul 2023 14:28:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.096
X-Spam-Level:
X-Spam-Status: No, score=-7.096 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=dnss.ec
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3NXpB3d0R1Dt for <dnsop@ietfa.amsl.com>; Mon, 10 Jul 2023 14:27:59 -0700 (PDT)
Received: from mail-qk1-x732.google.com (mail-qk1-x732.google.com [IPv6:2607:f8b0:4864:20::732]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DC80BC151061 for <dnsop@ietf.org>; Mon, 10 Jul 2023 14:27:58 -0700 (PDT)
Received: by mail-qk1-x732.google.com with SMTP id af79cd13be357-7659dc74da1so476273085a.3 for <dnsop@ietf.org>; Mon, 10 Jul 2023 14:27:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dnss.ec; s=google; t=1689024478; x=1691616478; h=to:references:message-id:content-transfer-encoding:date:in-reply-to :from:subject:mime-version:from:to:cc:subject:date:message-id :reply-to; bh=KxaJcWqgSCFkhZuAh3jsPwykhrFyB8sKmj4PoDsX+7s=; b=cKscFJ1GARHWVZfnCPL3tLDt770tiEbllO8Nxg5hBwgwWmm2vDNsQHORLCLE+zHH75 eyVMNzJngScSAhpoIu/hSNtpouGUn0MpuYF4SQrVyzGx2R60WgASJMda5so9LQwDierx krSW7A+s3o99DH/2JDjPYR6lHNii3bAszdrTI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689024478; x=1691616478; h=to:references:message-id:content-transfer-encoding:date:in-reply-to :from:subject:mime-version:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=KxaJcWqgSCFkhZuAh3jsPwykhrFyB8sKmj4PoDsX+7s=; b=PwdPKpqc9kdmhD2Wzr4eVKBLGAMoE/EWNYhVPRICd11avDk/1+X8zQk7m34KXp7mxO HVlbHSBIHR1EXAmfqhOkD9Xqz6KgBya0Niv8MNKUvSARhdtwzyZXCOLmCUl7wqAivIKi 5Uyv7TiDTvj14XKHBc4EgLiKnwCvz9JFarQoEfzrCbA340vR9bVMn8gVj/3CBmNdlP2z pm01cJ4FE4sFrfLESYegnm/MCT2ja1andC7u10eYTNV6c1sALH5orMw/ctWOpgOOFuG/ /1e5micXISFWfR0V2YX08Zn/50smRREYkeRCgZK3z5mixHhEJsft9lS9YbY0jt2qOmx9 uXqw==
X-Gm-Message-State: ABy/qLYV68HF0YBf/pZ1W9gHPnVSxQMuqUJT/JD26neY2M4R1q97k3q+ sNz10CuUYmVLUY8hfbVP2QbhGKncSANvtmCfH62Vqg==
X-Google-Smtp-Source: APBJJlH5V1GZa7sUuiB/TaSt7VMF3tsKMx4WOpQl73vqKBlTJ6DJNFxX4UT8h8mAGIRDXKyzGbgP+w==
X-Received: by 2002:a05:620a:4402:b0:767:1b91:1344 with SMTP id v2-20020a05620a440200b007671b911344mr16694119qkp.76.1689024477756; Mon, 10 Jul 2023 14:27:57 -0700 (PDT)
Received: from smtpclient.apple ([89.33.15.144]) by smtp.gmail.com with ESMTPSA id j14-20020a05620a000e00b00767ce8e6d7fsm262422qki.57.2023.07.10.14.27.56 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Jul 2023 14:27:57 -0700 (PDT)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.600.7\))
From: Roy Arends <roy@dnss.ec>
In-Reply-To: <ZKw40DEHBUfBEoUI@straasha.imrryr.org>
Date: Mon, 10 Jul 2023 22:27:45 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <1583409F-8F04-4172-B9A1-94D9900402AB@dnss.ec>
References: <ZJn_cwWWOKIn1wbq@straasha.imrryr.org> <76E9FBC8-9F6D-4050-9C6F-E92A2CBEB326@dnss.ec> <ZKw40DEHBUfBEoUI@straasha.imrryr.org>
To: dnsop@ietf.org
X-Mailer: Apple Mail (2.3731.600.7)
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnsop/DgHdlMYk4oPpYhe6WrWxVF0QMcI>
Subject: Re: [DNSOP] Working Group Last call for draft-ietf-dnsop-dns-error-reporting
X-BeenThere: dnsop@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: IETF DNSOP WG mailing list <dnsop.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnsop>, <mailto:dnsop-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnsop/>
List-Post: <mailto:dnsop@ietf.org>
List-Help: <mailto:dnsop-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnsop>, <mailto:dnsop-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 10 Jul 2023 21:28:04 -0000

Hi Viktor,

Again, thank you for your detailed, in-depth and insightful response. My comments are inline, and I’ve removed the parts in agreement.

> On 10 Jul 2023, at 17:58, Viktor Dukhovni <ietf-dane@dukhovni.org> wrote:
> 
> On Wed, Jul 05, 2023 at 12:17:34PM +0100, Roy Arends wrote:
> 
>>> The proposed qname structure is suboptimal:
>>> 
>>>   - There is insufficient justification for the "_er" labels
>>>     at either end of the error report qname.
>>> 
>>>       o  If the monitoring agent wants to see some particular prefix,
>>>          (perhaps even periodically rotated to quickly drop stale
>>>          junk) the authoritative server can vend the prefix with the
>>>          agent domain.  So the "most-significant" parent "_er" is
>>>          IMNHSO redundant.
>> 
>> The monitoring agent has to determine where the QNAME ends, and the
>> agent domain starts. If you assume that a monitoring agent only uses a
>> single agent domain for all its reports, then sure, the _er_ label
>> between the strings is redundant.
>> 
>> If however, the monitoring agent has domains in use, where the least
>> significant labels collide with existing top level domains, it needs
>> to determine heuristically where the agent domain starts. This is IMHO
>> suboptimal.
> 
> Right, but surely the monitoring agent can decide whether to solicit
> such a prefix label or not.  That is whether an "_er" prefix label is
> signalled is a *local matter* betweent the authoritative server
> signalling the option and the monitoring agent.

I agree that a monitoring agent can specify a domain that may include a separator as the least significant label. However, it also requires the monitoring agent to understand that it should sometimes include this separator, and that it may be redundant at other times. It assumes that those running the authoritative server that returns the agent domain and those that run the reporting agent are in sync. Those are a lot of assumptions.

>  Why should resolvers
> have to be responsible for this?

Because this separating label is trivial to include and avoids a lot of hassle.

>  If a given monitoring agent does
> not need such signalling, what value does it add?

It may need this signalling in the future, when it adds new costumers (new domains to monitor) to its portfolio. If there is a collision, it needs to update its entire user-base to avoid it.

>>>       o The leading "least-significant" "_er" is likewise (see below)
>>>         not adequately justified.
>> 
>> The sole purpose of the leading “least-significant” “_er” is to
>> distinguish between qname-minimized queries (for lack of a better
>> term) and “full” queries. I understand that you argue that a
>> monitoring agent can determine this without the _er labels (as
>> described below), but that seem suboptimal to me.
> 
> The qname minimised query (whether or not a dedicated qtype is used)
> will be for "A" or "NS" records, not TXT or the dedicated qtype, so
> there's no need for "_er" in the first label, the qtype is sufficient.

RFC9156 contains no hard requirement to use A/NS. So I’m not confident that all current and future qname-minimisation implementations use A/NS. 


>>> Also, qtypes are cheap, and I rather think that a dedicated qtype (one
>>> that a supporting resolver might refuse to accept in queries from
>>> clients for example) makes sense here.  There's no need to overload
>>> TXT here.
>> 
>> This seems counter intuitive to me. A qtype that a supporting resolver
>> might refuse to accept in queries from clients is either a temporary
>> state (it may be accepted in the near future when this qtype will be
>> implemented), or it needs to be specified that this qtype should not
>> be accepted in queries from clients, which makes this qtype not cheap
>> (that is, we won’t be able to simply use the template to request one,
>> as it requires additional work). 
> 
> There's no need to require that it not be accepted from clients, but
> it is easier to do that with a dedicated qtype.  It can be added to:
> 
>    - RRSIG (semantically vacuous sans the associated RRset)
>    - NSEC3 (not part of the zone's qname namespace).
>    - ANY (if that's what the resolver chooses to do).
> 
> However, to avoid forwarding junk reports to the monitoring agent, a
> resolver may well sensibly choose to not forward such queries, and
> only source them internally.

I’m not following.

> The specification might also recommend that "stub" resolvers that
> forward most queries to a "full service" resolver, should send error
> reports *directly* to the monitoring agent.  And, of course, "full
> service" resolvers MUST NOT *forward* the monitoring agent OPTION to
> clients, if they send such an option, it should be locally generated
> to signal the monitoring agent for the resolver itself.

I’m not following. 

> 
>> Allocating a new QTYPE for this purpose just seems redundant. 
> 
> It is not.  This is not a normal query, it is an error report.

However, it is a normal query though. All the intermediates (forwarders, caches, authoritivate servers) have no idea that this query is any different than others. There is nothing special in this query. I really want to avoid OPCODE subtyping by qtype.

> 
>>>> This document gives no guidance on the content of the TXT resource
>>>> record RDATA for this record.
>>> 
>>> The dedicated qtype should have an empty payload.
>> 
>> We can require that the returned TXT record should record have an
>> empty payload. 
> 
> I would strongly prefer a dedicated qtype (with support from Puneet
> Sood).  However, if the WG consensus is TXT, we'll grudginly cope.
> Would it make sense to raise this narrow question by the chairs as a
> consensus call?

To me, a dedicated qtype vs TXT seems like bike-shedding. 

This is not your typical “overloading an RRTYPE coz it’s difficult to allocate a new one”. 

I’m well aware that allocating a new RRTYPE is a trivial exercise (I’m one of the RFC6895 expert reviewers) as long as they don’t require any special processing. If it does require any special processing, then we’re doing it wrong IMHO.

However, we’re not overloading the TXT record IMHO. We had to pick one. One that can have an empty RDATA. One that can be cached. One that works with all well known implementations. And there is one that does the trick already: TXT.

It seems really late in the process to now be changing RRTYPE.


>>> As mentioned above, making the "info-code" more significant than the
>>> domain gets in the way here.
> 
> I did not see a response to the point about moving the info code to the
> least-significant label in the query (first or right after the leading
> "_er" if despite my exhortations that's retained).

The purpose of keeping the info code right before the separating _er label is that it helps to separate incoming reports by “severeness”, as in “lame delegation” reports go here,  “expired RRSIG” reports go there. This can all be delegated nicely by the monitoring agent.

>>> Instead, note that qname minimised queries will not have the same qtype
>>> (be it TXT or dedicated).  Instead they'll typically be "A" or "NS",
>>> and also the reporting resolve should avoid all qname minimisation
>>> below the agent domain, unasking the question.
>> 
>> Viktor, your optimisations (removing the _er labels) are premature as
>> it turns a deterministic process at the monitoring agent into a
>> heuristic process. 
> 
> I don't see how it becomes heuristic.  The dedicated qtype signals an
> complete error reporting query, other qtypes are minimised variants.

Again, there is no guarantee that a minimised variant does not use the dedicated qtype. It is simply easier to recognise a minimised variant by checking if the QNAME starts with _er. This is far more reliable than assuming a dedicated QTYPE is not minimised.

Warmly,

Roy