> On 17 Oct 2023, at 12:33, Gorry Fairhurst <go...@erg.abdn.ac.uk> wrote:
> 
> On 17/10/2023 12:05, Roy Arends wrote:
>> Thanks Gorry,
>> 
>> Comments inline.
> See a quicjk response as GF:
>>> On 17 Oct 2023, at 10:22, Gorry Fairhurst via Datatracker 
>>> <nore...@ietf.org> wrote:
>>> 
>>> Reviewer: Gorry Fairhurst
>>> Review result: Not Ready
>>> 
>>> This document has been reviewed as part of the transport area review team's
>>> ongoing effort to review key IETF documents. These comments were written
>>> primarily for the transport area directors, but are copied to the document's
>>> authors and WG to allow them to address any issues raised and also to the 
>>> IETF
>>> discussion list for information.
>>> 
>>> When done at the time of IETF Last Call, the authors should consider this
>>> review as part of the last-call comments they receive. Please always CC
>>> tsv-...@ietf.org if you reply to or forward this review.
>>> 
>>> Thank you for a well written document, and it's description of the service 
>>> to
>>> be provided.
>>> 
>>> This is proposed as a "lightweight" reporting mechanism.
>>> 
>>> The method states it can be used over TCP. In this case, TCP provides the
>>> necessary congestion control, flow control and segmentation. I did not see
>>> additional transport concerns.
>>> 
>>> The method also states it can be used over UDP - which is equally 
>>> recommended.
>>> However, the specification for use over UDP is incomplete and raises some
>>> transport concerns:
>> I want to stress here that the reporting mechanism is using DNS.
>> 
>> Subsequently, it relies on existing methods of transport that DNS relies on. 
>> As an application that uses DNS to send a report, additional requirements 
>> such as mechanisms for flow control, segmentation, fragmentation, packet 
>> reassembly, order, congestion control, buffering, etc, feel like a layer 
>> violation.
>> 
>> With that in mind, I suggest the following:
>> 
>>> 1. There is a recommendation to use DNS COOKIEs [RFC7873] over UDP (PS), 
>>> but no
>>> statement about how to mitigate the effects when these are not used.
>> There is a statement in the security section:
>> 
>> "The monitoring agent SHOULD respond to queries received over UDP that have 
>> no DNS COOKIE set with a response that has the truncation bit (TC bit) set 
>> to challenge the resolver to re-query over TCP.”
>> 
>> Let me know if that is sufficient.
> GF: I think it might be wise to include this in the body, so it is not 
> overlooked?

Good point. I’ve added that to the reporting resolver specification section, 
and the monitoring agent specification section, respectively.

I’ll leave it in the security section as well.


>>> 3. I think this method can in some uses could generate a stream of reports 
>>> at a
>>> rate that could be more than a few UDP datagrams per RTT, (e.g., if 
>>> implement
>>> automated responses). In this case, I think method would need to provide 
>>> some
>>> basic rate limiting or implement a form of congestion control.
>> DNS software have mitigations for these kind of streams. DNS is a well known 
>> method to be abused for DDoS purposes, and mitigation strategies have been 
>> wide and far. Any rate limiting methods in this document would require 
>> special casing in the DNS software to deal with error reporting. This is 
>> wholly unnecessary. As far as the transport and application layers are 
>> concerned, this is just a DNS query going out.
>>> I understand the rate is usually "damped" by caching to one message/TTL per
>>> report, but I am unsure this is sufficient to mitigate any congestion 
>>> control
>>> concerns.
>>> 
>>> One potential remedy could be to require/recommend use over a
>>> congestion-controlled transport (such as TCP) when using an Internet path;  
>>> an
>>> alternative would be to be define appropriate mechanisms to provide at least
>>> starvation prevention for UDP services. See RFC 8085 section 3.1.
>> We simply can’t. It would require special casing: a DNS query that happens 
>> to contain a DNS-error-report in its QNAME, should now only be send over 
>> TCP. An application that asks a stub resolver can’t do this. It would 
>> require a full “DNS-stack” that makes sure that these reports go over TCP.
> GF: I think you likely undertand the gist of my review point 3. Generally -  
> there would be a problem in repeatedly sending with a UDP transport (i.e. for 
> something that is more than a query/response protocol), which results in 
> multiple packets per RTT.

I understand what you are referring to. The bulk of resolver implementations 
have implemented query-deduplication to upstream servers. This specifically 
targets the case where you have multiple packets per RTT. In addition, standard 
DNS caching will deal with multiple queries for the same qname/qtype/qclass 
tuple per (DNS) TTL.

> Now it might be also that I simply don't fully understand the expected 
> interaction, in which case, it might also be easy to  add a little to help 
> avoid this line of questions....

I have added the following line to -07 abstract per request of Warren Kumari:

"The error is encoded in the QNAME, thus the very act of sending the query is 
to report the error.”

Thanks Gorry! 

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

Reply via email to