On 26. 07. 22 23:13, Suzanne Woolf wrote:
Dear colleagues,
This message starts the Working Group Last Call for
draft-ietf-dnsop-avoid-fragmentation
(https://datatracker.ietf.org/doc/draft-ietf-dnsop-avoid-fragmentation/). The
requested status is BCP.
Since we're starting the Last Call during the IETF week, and many folks are on
holidays in the next few weeks, the WGLC will end in three weeks (instead of
the usual two), on August 16.
Substantive comments to the list, please. It’s fine for minor edits to go
direct to the authors. We need to hear positive support to advance it, or your
comments on what still needs to be done.
Given the fact that most open-source implementations already avoid
fragmentation in one way or another, there is no harm in publishing
"don't fragment" as a RFC, but there is also only limited benefit.
Attacks and problems were years ahead and implementers had to patch
software years ago.
After a quick re-read I agree with the idea but there are implementation
details which are not as simple as laid out in the current text.
This document proposes to set IP_DONTFRAG / IPV6_DONTFRAG in DNS/UDP
messages in order to avoid IP fragmentation, and describes how to
avoid packet losses due to IP_DONTFRAG / IPV6_DONTFRAG.
IP_DONTFRAG and its interaction with networking stack and socket
interface is complex and possibly OS-dependent.
I don't remember all the gory details but BIND went through several
iterations of this and currently we use:
- IP_DONTFRAG - socket option disabled (i.e. fragmentation allowed)
- IP_MTU_DISCOVER = IP_PMTUDISC_OMIT (which is woefully undocumented in
man pages, see https://lists.openwall.net/netdev/2014/02/26/4)
State in other resolvers is somewhat summarized here:
- https://github.com/PowerDNS/pdns/pull/7410/files#r250252209
- https://www.yadifa.eu/archives/yadifa-users/2019-March/000133.html
(From a quick glance it seems we all do the same, or at least try.)
IIRC this was needed to protect from attacks using spoofed Path MTU.
This risk really should be mentioned in the document and discussed. RFC
8201 section 6 is not theoretical, we have seen weird things happen in
real networks. CVE-2021-25218 is my witness :-)
Maybe the currently empty section 8. Security Considerations needs to
copy RFC 8201 section 6 and then conclude that it is insecure anyway, so
don't do it?
I'm not sure how to proceed. On one hand IP_DONTFRAG sounds like a good
idea. On the other hard it does weird things when combined with
IP_MTU_DISCOVER IP_PMTUDISC_OMIT/_DONT. Maybe DNS is even the right
place to start and we should be poking OS people to fix/improve it? I
don't know.
Except for the fundamental problem mentioned above I have just smaller
things:
3.2. Recommendations for UDP requestors > * DNS responses may be dropped
by IP fragmentation. Upon a timeout,
UDP requestors may retry using TCP or UDP, per local policy.
To avoid name resolution fails, UDP requestors need to retry using
TCP, or UDP with smaller maximum DNS/UDP payload size.
The last sentence does not have a normative language and which is IMHO
good, but it slightly errs on side of working around brokenness. ("need
to retry ...")
I think the document should not have the last sentence at all and leave
it with up to implementations to do handle timeouts as they like it.
4. Incremental deployment
I'm not sure if it belongs here to a new "Implementation Status"
section, but I think it's worth mentioning that this document is almost
no-op after https://dnsflagday.net/2020/ .
The default EDNS buffer size have been changed to, sometimes, even lower
values so the fragmentation should not happen anymore.
6.1. Protocol compliance
+1 (or all votes I can possibly hands on!)
--
Petr Špaček
_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop