Mukund-san,

Thanks very much.

I updated my local version.
  http://member.wide.ad.jp/~fujiwara/avoid-fragmentation.html

--
Kazunori Fujiwara, JPRS <fujiw...@jprs.co.jp>

> From: Mukund Sivaraman <m...@mukund.org>
> Fujiwara-san, Vixie-san,
> 
> On Thu, Jan 19, 2023 at 12:13:02AM -0800, internet-dra...@ietf.org wrote:
>> 
>> A New Internet-Draft is available from the on-line Internet-Drafts 
>> directories.
>> This draft is a work item of the Domain Name System Operations WG of the 
>> IETF.
>> 
>>         Title           : Fragmentation Avoidance in DNS
>>         Authors         : Kazunori Fujiwara
>>                           Paul Vixie
>>   Filename        : draft-ietf-dnsop-avoid-fragmentation-11.txt
>>   Pages           : 10
>>   Date            : 2023-01-19
>> 
>> Abstract:
>>    EDNS0 enables a DNS server to send large responses using UDP and is
>>    widely deployed.  Large DNS/UDP responses are fragmented, and IP
>>    fragmentation has exposed weaknesses in application protocols.  It is
>>    possible to avoid IP fragmentation in DNS by limiting response size
>>    where possible, and signaling the need to upgrade from UDP to TCP
>>    transport where necessary.  This document proposes techniques to
>>    avoid IP fragmentation in DNS.
> 
> Is there still time to mention some editorial nits? If so, please see
> the following; I am sorry I did not review the recent revision earlier.
> 
> 
>> 1.  Introduction
> 
>>    DNS has an EDNS0 [RFC6891] mechanism.  It enables a DNS server to
>>    send large responses using UDP.  EDNS0 is now widely deployed, and
>>    DNS (over UDP) relies on on IP fragmentation when the EDNS buffer
> 
> I suggest removing the brackets around "(over UDP)", and fix the typo of
> two "on"s:
> 
> i.e, write it as "... and DNS over UDP relies on IP fragmentation..."
> 
>>    This document proposes that implementations set the "Don't Fragment
>>    (DF) bit" [RFC0791] on IPv4 and not using the "Fragment header"
> 
> "... and not use the \"Fragment header\"..."
> 
>>    [RFC8200] on IPv6 in DNS/UDP messages in order to avoid IP
>>    fragmentation, and describes how to avoid packet losses due to DF bit
> 
> "... fragmentation. It also describes..."
> 
>> 2.  Terminology
> 
>>    "Requestor" refers to the side that sends a request.  "Responder"
>>    refers to an authoritative, recursive resolver or other DNS component
> 
> "... to an authoritative server, recursive resolver or..."
> 
>> 3.  Proposal to avoid IP fragmentation in DNS
> 
>>    These recommendations are intended for nodes with global IP addresses
>>    on the Internet.  Private networks or local networks are out of the
>>    scope of this document.
> 
>>    The methods to avoid IP fragmentation in DNS are described below:
> 
>> 3.1.  Recommendations for UDP responders
> 
>>    *  UDP responders SHOULD send DNS responses without "Fragment header"
>>       [RFC8200] on IPv6.
> 
>>    *  UDP responders are RECOMMENDED to set IP "Don't Fragment flag (DF)
>>       bit" [RFC0791] on IPv4.
> 
> I suggest using the RFC 2119 term SHOULD here as well (synonymous with
> RECOMMENDED), so that when reading the text, the recommendation doesn't
> appear of a different severity from the other items.
> 
> "UDP responders SHOULD set the IP \"Don't Fragment flag (DF)..."
> 
>>    *  UDP responders SHOULD compose response packets that fit in both
> 
> "both" implies 2, whereas there are 3 things suggested. I suggest
> deleting the word "both" and keeping the rest of the text.
> 
>>       the offered requestor's maximum UDP payload size [RFC6891], the
>>       interface MTU, and the RECOMMENDED maximum DNS/UDP payload size
>>       1400.
> 
>>    *  If the UDP responder detects an immediate error that the UDP
> 
> "... immediate error indicating that the..."
> 
>>       packet cannot be sent beyond the path MTU size (EMSGSIZE), the UDP
>>       responder MAY recreate response packets fit in path MTU size, or
>>       TC bit set.
> 
> "... recreate response packets to fit in the path MTU size, or with the
> TC bit set."
> 
>>    *  UDP responders SHOULD limit response size when UDP responders are
> 
> "... SHOULD limit the response size..."
> 
>>       located on small MTU (<1500) networks.
> 
>> 3.2.  Recommendations for UDP requestors
> 
>>    *  UDP requestors SHOULD limit the requestor's maximum UDP payload
>>       size to the RECOMMENDED size of 1400 or smaller size.
> 
> "... or a smaller size."
> 
>>    *  UDP requestors MAY drop fragmented DNS/UDP responses without IP
>>       reassembly to avoid cache poisoning attacks.
> 
>>    *  DNS responses may be dropped by IP fragmentation.  Upon a timeout,
>>       to avoid name resolution fails, UDP requestors MAY retry using TCP
> 
> "... to avoid resolution failures, ..."
> 
>>       or UDP with a smaller requestor's maximum UDP payload size per
> 
> "... smaller EDNS requestor's maximum UDP payload size..."
> 
>>       local policy.
> 
> 
>> 4.  Recommendations for zone operators and DNS server operators
> 
>>    Large DNS responses are the result of zone configuration.  Zone
>>    operators SHOULD seek configurations resulting in small responses.
>>    For example,
> 
>>    *  Use a smaller number of name servers (13 may be too large)
> 
> Haha :)
> 
>>    *  Use a smaller number of A/AAAA RRs for a domain name
> 
>>    *  Use 'minimal-responses' configuration: Some implementations have a
>>       'minimal responses' configuration that causes DNS servers to make
> 
> "Use minimal responses configuration: Some implementations have a
> "minimal-responses" configuration option that..."
> 
>>       response packets smaller, containing only mandatory and required
>>       data (Appendix C).
> 
>>    *  Use a smaller signature / public key size algorithm for DNSSEC.
>>       Notably, the signature sizes of ECDSA and EdDSA are smaller than
>>       those for RSA.
> 
> "... those usually used for RSA."
> 
>> 7.  Security Considerations
> 
>>    If a UDP respone packet is dropped (for any reason), it increases the
> 
> s/respone/response/
> 
>>    attack window for poisoning the requestor's cache.
> 
> 
>> Appendix A.  Weaknesses of IP fragmentation
> 
>>    A DNS message receiver cannot trust fragmented UDP datagrams
>>    primarily due to the small amount of entropy provided by UDP port
>>    numbers and DNS message identifiers, each of which being only 16 bits
>>    in size, and both likely being in the first fragment of a packet, if
>>    fragmentation occurs.  By comparison, TCP protocol stack controls
>>    packet size and avoid IP fragmentation under ICMP NEEDFRAG attacks.
> 
> s/avoid/avoids/
> 
>>    In TCP, fragmentation should be avoided for performance reasons,
>>    whereas for UDP, fragmentation should be avoided for resiliency and
>>    authenticity reasons.
> 
>> Appendix B.  Details of requestor's maximum UDP payload size discussions
> 
>>    There are many discussions for default path MTU size and requestor's
>>    maximum UDP payload size.
> 
>>    *  The minimum MTU for an IPv6 interface is 1280 octets (see
>>       Section 5 of [RFC8200]).  Then, we can use it as the default path
> 
> s/Then,/So,/
> 
>>       MTU value for IPv6.  The corresponding minimum MTU for an IPv4
>>       interface is 68 (60 + 8) [RFC0791].
> 
> 
>>    *  In order to avoid IP fragmentation, [DNSFlagDay2020] proposed that
>>       the UDP requestors set the requestor's payload size to 1232, and
>>       the UDP responders compose UDP responses fit in 1232 octets.  The
> 
> "... compose UDP responses so they fit in 1232 octets."
> 
>>       size 1232 is based on an MTU of 1280, which is required by the
>>       IPv6 specification [RFC8200], minus 48 octets for the IPv6 and UDP
>>       headers.
> 
>>    *  [Huston2021] analyzed the result of [DNSFlagDay2020] and reported
>>       that their measurements suggest that in the interior of the
>>       Internet between recursive resolvers and authoritative servers the
>>       prevailing MTU is at 1,500 and there is no measurable signal of
>>       use of smaller MTUs in this part of the Internet, and proposed
>>       that their measurements suggest setting the EDNS0 Buffer size to
> 
> Here, does "EDNS Buffer size" mean the EDNS requestor's UDP payload size
> (RFC 6891 section 6.2.3) or EDNS UDP response datagram's size?
> 
>>       IPv4 1472 octets and IPv6 1452 octets.
> 
> " .. 1472 octets for IPv4, and 1562 octets for IPv6.
> 
> 
>> Appendix C.  Minimal-responses
> 
>>    Some implementations have a 'minimal responses' configuration that
> 
> "... have a \"minimal-responses\" configuration setting/option..."
> 
>>    causes a DNS server to make response packets smaller, containing only
>>    mandatory and required data.
> 
>>    Under the minimal-responses configuration, A DNS server composes the
> 
> s/A/a/
> 
>>    response message using only the RRSet corresponding to the query.  In
> 
> This is not exactly correct (consider a CNAME response). It's better to
> write it as:
> 
> "... a DNS server composes responses containing only necessary RRs."
> 
>>    the case of delegation, see [I-D.ietf-dnsop-glue-is-not-optional].
> 
> s/In the case of delegation, see.../For delegations, see .../
> 
>>    In case of a non-existent domain name or non-existent type, the
>>    authority section will contain an SOA record and the answer section
>>    is empty. (defined in Section 2.1 and 2.2 of [RFC2308]).
> 
> "... is empty (defined in..." (remove period after empty)
> 
>               Mukund

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

Reply via email to