<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tojens-dnsop-do-not-accommodate-udp53-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title>Do Not Accommodate Classic DNS over UDP</title>
    <seriesInfo name="Internet-Draft" value="draft-tojens-dnsop-do-not-accommodate-udp53-00"/>
    <author fullname="Tommy Jensen">
      <organization/>
      <address>
        <email>tojens.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="July" day="06"/>
    <keyword>Classic DNS</keyword>
    <keyword>DNS over TCP</keyword>
    <keyword>DNS over UDP</keyword>
    <abstract>
      <?line 25?>

<t>Protocols that rely on Classic DNS have to account for considerations that only
apply to UDP, such as message fragmentation. However, DNS implementations are
already required to support both TCP and UDP, and using TCP would alleviate
these considerations. This document specifies that new protocols with a 
dependency on Classic DNS do not need to account for the limitations of Classic
DNS over UDP and can instead expect implementations to use Classic DNS over TCP.</t>
    </abstract>
  </front>
  <middle>
    <?line 35?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Many uses of the DNS require message sizes larger than common path MTUs. This
poses problems for Classic DNS over UDP by requiring peers to handle message
fragmentation. This is usually addressed by requiring peers to set the trucation
bit and repeat the query using Classic DNS over TCP, which wastes a round trip,
introducing delay in the network traffic that depends on the DNS data retrieval.</t>
      <t>However, there are also worse implications, such as requiring IoT devices to do
polling <xref section="3.1" sectionFormat="of" target="RFC9726"/>, additional recommendations for avoiding IP
fragmentation <xref target="RFC9715"/> placing transport-like burdens on DNS implementors,
and normative requirements that exist only to deter the attack described in the
DNS threat analysis <xref target="RFC3833"/>, such as having to consciously control source
port selection when initializing a DNS resolver with priming queries
<xref target="RFC9609"/>.</t>
      <t>These complications can be avoided by assuming Classic DNS over TCP is the only
form of Classic DNS that new protocols need to accommodate. The Implementation
Requirements for Classic DNS over TCP <xref target="RFC7766"/> already require
DNS implementations to support Classic DNS over TCP wherever they support
Classic DNS over UDP and to treat TCP as a first-class transport rather than
only a fallback option from UDP. Therefore, it is safe to require protocols to
assume Classic DNS is always available over TCP without some specific scenario
limitations being defined.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>This document reuses terms defined in DNS Terminology <xref target="RFC9499"/>, including
"Classic DNS".</t>
    </section>
    <section anchor="requirements-for-new-protocols">
      <name>Requirements for new protocols</name>
      <t>This document does not directly define new normative requirements for DNS
implementations. Instead, it defines requirements that apply to new documents
produced by the IETF.</t>
      <t>Authors of new IETF documents <bcp14>SHOULD NOT</bcp14> add normative requirements that are
only necessary to accommodate Classic DNS over UDP that are not necessary to
accommodate Classic DNS over TCP without sufficient explaination for why UDP is
a preferable transport to TCP (which would deviate from the Implementation
Requirements for Classic DNS over TCP <xref target="RFC7766"/>).</t>
      <t>Authors of new IETF documents <bcp14>SHOULD</bcp14> direct implementations to use Classic
DNS over TCP first by default instead of Classic DNS over UDP if the document
defines any usage of Classic DNS that is expected to need message truncation.
This will avoid a wasted round trip to switch from UDP to TCP. This requirement
does not in any way affect preference between Classic DNS and encrypted DNS.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Discouraging protocols from accommodating Classic DNS over UDP provides a
non-zero security benefit by defending against the attack described in the DNS
threat analysis <xref section="2.2" sectionFormat="of" target="RFC3833"/>.</t>
      <t>Increasing usage of Classic DNS using TCP will increase maintained state, but
this is not concerning because encrypted DNS protocols already require
connection maintenance and usage of Classic DNS over TCP is already common due
to increasing message sizes.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3833">
          <front>
            <title>Threat Analysis of the Domain Name System (DNS)</title>
            <author fullname="D. Atkins" initials="D." surname="Atkins"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <date month="August" year="2004"/>
            <abstract>
              <t>Although the DNS Security Extensions (DNSSEC) have been under development for most of the last decade, the IETF has never written down the specific set of threats against which DNSSEC is designed to protect. Among other drawbacks, this cart-before-the-horse situation has made it difficult to determine whether DNSSEC meets its design goals, since its design goals are not well specified. This note attempts to document some of the known threats to the DNS, and, in doing so, attempts to measure to what extent (if any) DNSSEC is a useful tool in defending against these threats. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3833"/>
          <seriesInfo name="DOI" value="10.17487/RFC3833"/>
        </reference>
        <reference anchor="RFC7766">
          <front>
            <title>DNS Transport over TCP - Implementation Requirements</title>
            <author fullname="J. Dickinson" initials="J." surname="Dickinson"/>
            <author fullname="S. Dickinson" initials="S." surname="Dickinson"/>
            <author fullname="R. Bellis" initials="R." surname="Bellis"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <author fullname="D. Wessels" initials="D." surname="Wessels"/>
            <date month="March" year="2016"/>
            <abstract>
              <t>This document specifies the requirement for support of TCP as a transport protocol for DNS implementations and provides guidelines towards DNS-over-TCP performance on par with that of DNS-over-UDP. This document obsoletes RFC 5966 and therefore updates RFC 1035 and RFC 1123.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7766"/>
          <seriesInfo name="DOI" value="10.17487/RFC7766"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9499">
          <front>
            <title>DNS Terminology</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>The Domain Name System (DNS) is defined in literally dozens of different RFCs. The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has changed in the decades since the DNS was first defined. This document gives current definitions for many of the terms used in the DNS in a single document.</t>
              <t>This document updates RFC 2308 by clarifying the definitions of "forwarder" and "QNAME". It obsoletes RFC 8499 by adding multiple terms and clarifications. Comprehensive lists of changed and new definitions can be found in Appendices A and B.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="219"/>
          <seriesInfo name="RFC" value="9499"/>
          <seriesInfo name="DOI" value="10.17487/RFC9499"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9726">
          <front>
            <title>Operational Considerations for Use of DNS in Internet of Things (IoT) Devices</title>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="March" year="2025"/>
            <abstract>
              <t>This document details considerations about how Internet of Things (IoT) devices use IP addresses and DNS names. These concerns become acute as network operators begin deploying Manufacturer Usage Descriptions (MUD), as specified in RFC 8520, to control device access.</t>
              <t>Also, this document makes recommendations on when and how to use DNS names in MUD files.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="241"/>
          <seriesInfo name="RFC" value="9726"/>
          <seriesInfo name="DOI" value="10.17487/RFC9726"/>
        </reference>
        <reference anchor="RFC9715">
          <front>
            <title>IP Fragmentation Avoidance in DNS over UDP</title>
            <author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/>
            <author fullname="P. Vixie" initials="P." surname="Vixie"/>
            <date month="January" year="2025"/>
            <abstract>
              <t>The widely deployed Extension Mechanisms for DNS (EDNS(0)) feature in the DNS enables a DNS receiver to indicate its received UDP message size capacity, which supports the sending of large UDP responses by a DNS server. Large DNS/UDP messages are more likely to be fragmented, and IP fragmentation has exposed weaknesses in application protocols. It is possible to avoid IP fragmentation in DNS by limiting the response size where possible and signaling the need to upgrade from UDP to TCP transport where necessary. This document describes techniques to avoid IP fragmentation in DNS.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9715"/>
          <seriesInfo name="DOI" value="10.17487/RFC9715"/>
        </reference>
        <reference anchor="RFC9609">
          <front>
            <title>Initializing a DNS Resolver with Priming Queries</title>
            <author fullname="P. Koch" initials="P." surname="Koch"/>
            <author fullname="M. Larson" initials="M." surname="Larson"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="February" year="2025"/>
            <abstract>
              <t>This document describes the queries that a DNS resolver should emit to initialize its cache. The result is that the resolver gets both a current NS resource record set (RRset) for the root zone and the necessary address information for reaching the root servers.</t>
              <t>This document obsoletes RFC 8109.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="209"/>
          <seriesInfo name="RFC" value="9609"/>
          <seriesInfo name="DOI" value="10.17487/RFC9609"/>
        </reference>
      </references>
    </references>
    <?line 125?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Many thanks for constructive feedback on this document to TBD.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
SaLsUDdwwf84HYv/ABj52w/5EQAA

-->

</rfc>
