<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902" docName="draft-ietf-opsawg-mud-iot-dns-considerations-19" number="9726" category="bcp" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" xml:lang="en" updates="" obsoletes="" submissionType="IETF" prepTime="2025-03-31T12:27:27" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-opsawg-mud-iot-dns-considerations-19" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9726" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="DNS in IoT Devices">Operational Considerations for Use of DNS in Internet of Things (IoT) Devices</title>
    <seriesInfo name="RFC" value="9726" stream="IETF"/>
    <seriesInfo name="BCP" value="241" stream="IETF"/>
    <author initials="M." surname="Richardson" fullname="Michael Richardson">
      <organization showOnFrontPage="true">Sandelman Software Works</organization>
      <address>
        <email>mcr+ietf@sandelman.ca</email>
      </address>
    </author>
    <author initials="W." surname="Pan" fullname="Wei Pan">
      <organization showOnFrontPage="true">Huawei Technologies</organization>
      <address>
        <email>william.panwei@huawei.com</email>
      </address>
    </author>
    <date month="03" year="2025"/>
    <area>OPS</area>
    <workgroup>opsawg</workgroup>
    <keyword>DNS</keyword>
    <keyword>MUD</keyword>
    <keyword>round-robin</keyword>
    <keyword>tailored response</keyword>
    <keyword>DNSSEC</keyword>
    <keyword>IoT security</keyword>
    <keyword>Device Identity</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">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 indent="0" pn="section-abstract-2">Also, this document makes recommendations on when and how to use DNS
      names in MUD files.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This memo documents an Internet Best Current Practice.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further information
            on BCPs is available in Section 2 of RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9726" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2025 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-a-model-for-mud-controller-">A Model for MUD Controller Mapping of DNS Names to Addresses</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-non-deterministic-mappings">Non-Deterministic Mappings</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-dns-and-ip-anti-patterns-fo">DNS and IP Anti-Patterns for IoT Device Manufacturers</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-use-of-ip-address-literals">Use of IP Address Literals</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-use-of-non-deterministic-dn">Use of Non-Deterministic DNS Names in Protocols</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-use-of-a-too-generic-dns-na">Use of a Too Generic DNS Name</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-dns-privacy-and-outsourcing">DNS Privacy and Outsourcing versus MUD Controllers</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-recommendations-to-iot-devi">Recommendations to IoT Device Manufacturers on MUD and DNS Usage</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-consistently-use-dns">Consistently Use DNS</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-use-primary-dns-names-contr">Use Primary DNS Names Controlled by the Manufacturer</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.3">
                <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-use-a-content-distribution-">Use a Content Distribution Network with Stable DNS Names</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.4">
                <t indent="0" pn="section-toc.1-1.6.2.4.1"><xref derivedContent="6.4" format="counter" sectionFormat="of" target="section-6.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-do-not-use-tailored-respons">Do Not Use Tailored Responses to Answer DNS Names</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.5">
                <t indent="0" pn="section-toc.1-1.6.2.5.1"><xref derivedContent="6.5" format="counter" sectionFormat="of" target="section-6.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-prefer-dns-servers-learned-">Prefer DNS Servers Learned from DHCP/Router Advertisements</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-interactions-with-mdns-and-">Interactions with mDNS and DNS-SD</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-privacy-considerations">Privacy Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.11.2">
              <li pn="section-toc.1-1.11.2.1">
                <t indent="0" pn="section-toc.1-1.11.2.1.1"><xref derivedContent="11.1" format="counter" sectionFormat="of" target="section-11.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.11.2.2">
                <t indent="0" pn="section-toc.1-1.11.2.2.1"><xref derivedContent="11.2" format="counter" sectionFormat="of" target="section-11.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-a-failing-strategy-anti-pat">A Failing Strategy: Anti-Patterns</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.12.2">
              <li pn="section-toc.1-1.12.2.1">
                <t indent="0" pn="section-toc.1-1.12.2.1.1"><xref derivedContent="A.1" format="counter" sectionFormat="of" target="section-appendix.a.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-too-slow">Too Slow</xref></t>
              </li>
              <li pn="section-toc.1-1.12.2.2">
                <t indent="0" pn="section-toc.1-1.12.2.2.1"><xref derivedContent="A.2" format="counter" sectionFormat="of" target="section-appendix.a.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-reveals-patterns-of-usage">Reveals Patterns of Usage</xref></t>
              </li>
              <li pn="section-toc.1-1.12.2.3">
                <t indent="0" pn="section-toc.1-1.12.2.3.1"><xref derivedContent="A.3" format="counter" sectionFormat="of" target="section-appendix.a.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mappings-are-often-incomple">Mappings Are Often Incomplete</xref></t>
              </li>
              <li pn="section-toc.1-1.12.2.4">
                <t indent="0" pn="section-toc.1-1.12.2.4.1"><xref derivedContent="A.4" format="counter" sectionFormat="of" target="section-appendix.a.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-forward-dns-names-can-have-">Forward DNS Names Can Have Wildcards</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.13">
            <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-contributors">Contributors</xref></t>
          </li>
          <li pn="section-toc.1-1.14">
            <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1"><xref target="RFC8520" format="default" sectionFormat="of" derivedContent="RFC8520"/> provides a standardized way to describe how
      a device with a specific purpose makes use of Internet resources.  Access
      Control Lists (ACLs) can be defined in a Manufacturer Usage Description
      (MUD) file <xref target="RFC8520" format="default" sectionFormat="of" derivedContent="RFC8520"/> that permits a
      device to access Internet resources by their DNS names or IP
      addresses.</t>
      <t indent="0" pn="section-1-2">The use of a DNS name rather than an IP address in an ACL has many
      advantages: Not only does the layer of indirection permit the mapping of
      a name to IP addresses to be changed over time, but it also generalizes
      automatically to IPv4 and IPv6 addresses as well as permits a
      variety of load-balancing strategies, including multi-CDN deployments
      wherein load-balancing can account for geography and load.</t>
      <t indent="0" pn="section-1-3">However, the use of DNS names has implications on how ACLs are
      executed at the MUD policy enforcement point (typically, a firewall).
      Concretely, the firewall has access only to the Layer 3 headers of the
      packet.  This includes the source and destination IP addresses and, if not
      encrypted by IPsec, the destination UDP or TCP port number present in
      the transport header.  The DNS name is not present!</t>
      <t indent="0" pn="section-1-4">So, in order to implement these name-based ACLs, there must be a
      mapping between the names in the ACLs and IP addresses.</t>
      <t indent="0" pn="section-1-5">In order for manufacturers to understand how to configure DNS
      associated with name-based ACLs, a model of how the DNS resolution will
      be done by MUD controllers is necessary.  <xref target="mapping" format="default" sectionFormat="of" derivedContent="Section 3"/>
      models some good strategies that could be used.</t>
      <t indent="0" pn="section-1-6">This model is non-normative but is included so that IoT device
      manufacturers can understand how the DNS will be used to resolve the
      names they use.</t>
      <t indent="0" pn="section-1-7">There are some ways of using DNS that will present problems for MUD
      controllers, which <xref target="dns-anti-p" format="default" sectionFormat="of" derivedContent="Section 4"/> explains.</t>
      <t indent="0" pn="section-1-8"><xref target="sec-priv-out" format="default" sectionFormat="of" derivedContent="Section 5"/> details how current trends in DNS
      resolution such as public DNS servers, DNS over TLS (DoT) <xref target="RFC7858" format="default" sectionFormat="of" derivedContent="RFC7858"/>, DNS over HTTPS (DoH) <xref target="RFC8484" format="default" sectionFormat="of" derivedContent="RFC8484"/>, or
      DNS over QUIC (DoQ) <xref target="RFC9250" format="default" sectionFormat="of" derivedContent="RFC9250"/> can cause problems with the
      strategies employed.</t>
      <t indent="0" pn="section-1-9">The core of this document is <xref target="sec-reco" format="default" sectionFormat="of" derivedContent="Section 6"/>, which makes a
      series of recommendations ("best current practices") for manufacturers
      on how to use DNS and IP addresses with IoT devices described by MUD.</t>
      <t indent="0" pn="section-1-10"><xref target="sec-privacy" format="default" sectionFormat="of" derivedContent="Section 9"/> discusses a set of privacy issues that
      encrypted DNS (for example, DoT and DoH) are frequently used to deal
      with.  How these concerns apply to IoT devices located within a
      residence or enterprise is a key concern.</t>
      <t indent="0" pn="section-1-11"><xref target="sec-security" format="default" sectionFormat="of" derivedContent="Section 10"/> also covers some of the negative outcomes should MUD/firewall managers and IoT manufacturers choose not to cooperate.</t>
    </section>
    <section anchor="Terminology" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-terminology">Terminology</name>
      <t indent="0" pn="section-2-1">This document makes use of terms defined in <xref target="RFC8520" format="default" sectionFormat="of" derivedContent="RFC8520"/>
      and <xref target="RFC9499" format="default" sectionFormat="of" derivedContent="RFC9499"/>.</t>
      <t indent="0" pn="section-2-2">The term "anti-pattern" comes from agile software design literature,
      as per <xref target="antipattern" format="default" sectionFormat="of" derivedContent="antipattern"/>.</t>
      <t indent="0" pn="section-2-3">"CDNs" refers to Content Distribution Networks, such as those described in
      <xref section="1.1" sectionFormat="comma" target="RFC6707" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6707#section-1.1" derivedContent="RFC6707"/>.</t>
    </section>
    <section anchor="mapping" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-a-model-for-mud-controller-">A Model for MUD Controller Mapping of DNS Names to Addresses</name>
      <t indent="0" pn="section-3-1">This section details a strategy that a MUD controller could take.
      Within the limits of the DNS use detailed in <xref target="sec-reco" format="default" sectionFormat="of" derivedContent="Section 6"/>,
      this process could work.  The methods detailed in <xref target="failingstrategy" format="default" sectionFormat="of" derivedContent="Appendix A"/> just will not work.</t>
      <t indent="0" pn="section-3-2">The simplest successful strategy for a MUD controller to translate
      DNS names is to do a DNS lookup on the name (a forward lookup) and then
      use the resulting IP addresses to populate the actual ACLs.</t>
      <t indent="0" pn="section-3-3">There are a number of possible failures, and the goal of this section is
      to explain how some common DNS usages may fail.</t>
      <section anchor="non-deterministic-mappings" numbered="true" removeInRFC="false" toc="include" pn="section-3.1">
        <name slugifiedName="name-non-deterministic-mappings">Non-Deterministic Mappings</name>
        <t indent="0" pn="section-3.1-1">Most importantly, the mapping of the DNS names to IP addresses
        could be non-deterministic.</t>
        <t indent="0" pn="section-3.1-2"><xref target="RFC1794" format="default" sectionFormat="of" derivedContent="RFC1794"/> describes the very common mechanism that
        returns DNS A (or reasonably AAAA) records in a permuted order.  This
        is known as "round-robin DNS" and has been used for many decades.  The
        historical intent is that the requestor will tend to use the first IP
        address that is returned.  As each query results in addresses being in a
        different order, the effect is to split the load among many
        servers.</t>
        <t indent="0" pn="section-3.1-3">This situation does not result in failures as long as all possible
        A/AAAA records are returned.  The MUD controller and the device get a
        matching set, and the ACLs that are set up cover all
        possibilities.</t>
        <t indent="0" pn="section-3.1-4">There are a number of circumstances in which the list is not
        exhaustive.  The simplest is when the round-robin DNS does not return
        all addresses.  This is routinely done by geographical DNS
        load-balancing systems: Only the addresses that the balancing system
        wishes to be used are returned.</t>
        <t indent="0" pn="section-3.1-5">Failure can also occur if there are more addresses than what will
        conveniently fit into a DNS reply.  The reply will be marked as
        truncated.  (If DNSSEC resolution will be done, then the entire RR
        must be retrieved over TCP (or using a larger EDNS(0) size) before
        being validated.)</t>
        <t indent="0" pn="section-3.1-6">However, in a geographical DNS load-balancing system, different
        answers are given based upon the locality of the system asking.  There
        may also be further layers of round-robin indirection.</t>
        <t indent="0" pn="section-3.1-7">Aside from the list of records being incomplete, the list may have
        changed between the time that the MUD controller did the lookup and
        the time that the IoT device did the lookup, and this change can
        result in a failure for the ACL to match.  If the IoT device did not
        use the same recursive servers as the MUD controller, then tailored
        DNS replies and/or truncated round-robin results could return a
        different and non-overlapping set of addresses.</t>
        <t indent="0" pn="section-3.1-8">In order to compensate for this, the MUD controller performs
        regular DNS lookups in order to never have stale data.  These lookups
        must be rate-limited to avoid excessive load on the DNS servers, and
        it may be necessary to avoid local recursive resolvers.  A MUD
        controller that incorporates its own recursive caching DNS client will
        be able to observe the TTL on the entries and cause them to expire
        appropriately.  This cache will last for at least some number of
        minutes and up to some number of days (respecting the TTL), while the
        underlying DNS data can change at a higher frequency, providing
        different answers to different queries!</t>
        <t indent="0" pn="section-3.1-9">A MUD controller that is aware of which recursive DNS server the
        IoT device will use can instead query that server on a periodic basis.
        Doing so provides three advantages:</t>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-3.1-10">
	  <li pn="section-3.1-10.1" derivedCounter="1.">
            <t indent="0" pn="section-3.1-10.1.1">Any geographic load-balancing will base the decision on the
            geolocation of the recursive DNS server, and the recursive name
            server will provide the same answer to the MUD controller as to
            the IoT device.</t>
          </li>
          <li pn="section-3.1-10.2" derivedCounter="2.">
            <t indent="0" pn="section-3.1-10.2.1">The resulting mapping (of name to IP address) in the recursive
            name server will be cached and will remain the same for the entire
            advertised TTL reported in the DNS query return.  This
            also allows the MUD controller to avoid doing unnecessary
            queries.</t>
          </li>
          <li pn="section-3.1-10.3" derivedCounter="3.">
            <t indent="0" pn="section-3.1-10.3.1">If any addresses have been omitted in a round-robin DNS
            process, the cache will have the same set of addresses that were
            returned.</t>
          </li>
        </ol>
        <t indent="0" pn="section-3.1-11">The solution of using the same caching recursive resolver as the
        target device is very simple when the MUD controller is located in a
        residential Customer Premises Equipment (CPE) device.  The device is usually also the
        policy-enforcement point for the ACLs, and a caching resolver is
        typically located on the same device.  In addition to convenience,
        there is a shared fate advantage: As all three components are running
        on the same device, if the device is rebooted (which clears the cache),
        then all three components will get restarted when the device is
        restarted.</t>
        <t indent="0" pn="section-3.1-12">The solution is more complex and sometimes more fragile when the
        MUD controller is located elsewhere in an enterprise or remotely in a
        cloud, such as when a Software-Defined Network (SDN) is used to manage
        the ACLs.  The DNS servers for a particular device may not be known to
        the MUD controller, and the MUD controller may not even be permitted
        to make recursive queries to that server if it is known.  In this
        case, additional installation-specific mechanisms are probably needed
        to get the right view of the DNS.</t>
        <t indent="0" pn="section-3.1-13">A critical failure can occur when the device makes a new DNS
        request and receives a new set of IP addresses, but the MUD
        controller's copy of the addresses has not yet reached their TTL.  In that case, the MUD controller still has the old addresses
        implemented in the ACLs, but the IoT device has a new address not
        previously returned to the MUD controller.  This can result in a
        connectivity failure.</t>
      </section>
    </section>
    <section anchor="dns-anti-p" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-dns-and-ip-anti-patterns-fo">DNS and IP Anti-Patterns for IoT Device Manufacturers</name>
      <t indent="0" pn="section-4-1">In many design fields, there are good patterns that should be
      emulated, and often there are patterns that should not be emulated.  The
      latter are called anti-patterns, as per <xref target="antipattern" format="default" sectionFormat="of" derivedContent="antipattern"/>.</t>
      <t indent="0" pn="section-4-2">This section describes a number of things that IoT manufacturers have
      been observed to do in the field, each of which presents difficulties for
      MUD enforcement points.</t>
      <section anchor="inprotocol" numbered="true" removeInRFC="false" toc="include" pn="section-4.1">
        <name slugifiedName="name-use-of-ip-address-literals">Use of IP Address Literals</name>
        <t indent="0" pn="section-4.1-1">A common pattern for a number of devices is to look for firmware
        updates in a two-step process.  An initial query is made (often over
        HTTPS, sometimes with a POST, but the method is immaterial) to a
        vendor system that knows whether an update is required.</t>
        <t indent="0" pn="section-4.1-2">The current firmware model of the device is sometimes provided, and
        then the vendor's authoritative server provides a determination if a
        new version is required and, if so, what version.  In simpler cases,
        an HTTPS endpoint is queried, which provides the name and URL of the
        most recent firmware.</t>
        <t indent="0" pn="section-4.1-3">The authoritative upgrade server then responds with a URL of a
        firmware blob that the device should download and install.  Best
        practice is that either firmware is signed internally <xref target="RFC9019" format="default" sectionFormat="of" derivedContent="RFC9019"/> so that it can be verified, or a hash of the blob
        is provided.</t>
        <t indent="0" pn="section-4.1-4">An authoritative server might be tempted to provide an IP address
        literal inside the protocol.  An argument for doing this is that it
        eliminates problems with firmware updates that might be caused by a
        lack of DNS or by incompatibilities with DNS.  For instance, a bug
        that causes interoperability issues with some recursive servers would
        become unpatchable for devices that were forced to use that recursive
        resolver type.</t>
        <t indent="0" pn="section-4.1-5">But, there are several problems with the use of IP address literals
        for the location of the firmware.</t>
        <t indent="0" pn="section-4.1-6">The first is that the update service server must decide whether to
        provide an IPv4 or an IPv6 literal, assuming that only one URL can be
        provided.  A DNS name can contain both kinds of addresses and can
        also contain many different IP addresses of each kind.  An update
        server might believe that if the connection were on IPv4, then an IPv4
        literal would be acceptable. However, due to NAT64 <xref target="RFC6146" format="default" sectionFormat="of" derivedContent="RFC6146"/>, a device with only IPv6 connectivity will often be
        able to reach an IPv4 firmware update server by name (through DNS64
        <xref target="RFC6147" format="default" sectionFormat="of" derivedContent="RFC6147"/>) but not be able to reach an arbitrary IPv4
        address.</t>
        <t indent="0" pn="section-4.1-7">A MUD file for this access would need to resolve to the
        set of IP addresses that might be returned by the update server.  This
        can be done with IP address literals in the MUD file, but this may
        require continuing updates to the MUD file if the addresses change
        frequently.  A DNS name in the MUD could resolve to the set of all
        possible IPv4 and IPv6 addresses that would be used, with DNS
        providing a level of indirection that obviates the need to update the
        MUD file itself.</t>
        <t indent="0" pn="section-4.1-8">A third problem involves the use of HTTPS.  It is often more
        difficult to get TLS certificates for an IP address, and so it is less
        likely that the firmware download will be protected by TLS.  Even if an IP address literal was placed in the TLS ServerNameIndicator
   <xref target="RFC6066" format="default" sectionFormat="of" derivedContent="RFC6066"/>, against the advice of that document, it still would not provide enough
   context for a web server to distinguish which of the (potentially
   many) tenants the client wishes to reach.
   This drives the use of an IP address per tenant, and for
        IPv4 (at least), this is no longer a sustainable use of IP
        addresses.</t>
        <t indent="0" pn="section-4.1-9">Finally, it is common in some CDNs
        to use multiple layers of DNS CNAMEs in order to isolate the content
        owner's naming system from changes in how the distribution network is
        organized.</t>
        <t indent="0" pn="section-4.1-10">When a name or address is returned within an update protocol for
        which a MUD rule cannot be written, then the MUD controller is unable
        to authorize the connection.  In order for the connection to be
        authorized, the set of names returned within the update protocol needs
        to be known ahead of time and must be from a finite set of
        possibilities.  Such a set of names or addresses can be placed into
        the MUD file as an ACL in advance, and the connections can be
        authorized.</t>
      </section>
      <section anchor="use-of-non-deterministic-dns-names-in-protocols" numbered="true" removeInRFC="false" toc="include" pn="section-4.2">
        <name slugifiedName="name-use-of-non-deterministic-dn">Use of Non-Deterministic DNS Names in Protocols</name>
        <t indent="0" pn="section-4.2-1">A second pattern is for a control protocol to connect to a known
        HTTP endpoint.  This is easily described in MUD.  References within
        that control protocol are made to additional content at other URLs.
        The values of those URLs do not fit any easily described pattern and
        may point to arbitrary DNS names.</t>
        <t indent="0" pn="section-4.2-2">Those DNS names are often within some third-party CDN system or may
        be arbitrary DNS names in a cloud-provider storage system (e.g., <xref target="AmazonS3" format="default" sectionFormat="of" derivedContent="AmazonS3"/> or <xref target="Akamai" format="default" sectionFormat="of" derivedContent="Akamai"/>).  Some of the name
        components may be specified by the third-party CDN provider.</t>
        <t indent="0" pn="section-4.2-3">Such DNS names may be unpredictably chosen by the CDN and not the
        device manufacturer and therefore impossible to insert into a MUD
        file.  Implementation of the CDN system may also involve HTTP
        redirections to downstream CDN systems.</t>
        <t indent="0" pn="section-4.2-4">Even if the CDN provider's chosen DNS names are deterministic, they
        may change at a rate much faster than MUD files can be updated.</t>
        <t indent="0" pn="section-4.2-5">This situation applies to firmware updates but also applies to many
        other kinds of content: video content, in-game content, etc.</t>
        <t indent="0" pn="section-4.2-6">A solution may be to use a deterministic DNS name within the
        control of the device manufacturer.  The device manufacturer is asked
        to point a CNAME to the CDN, to a name that might look like
        "g7.a.example", with the expectation that the CDN provider's DNS will do
        all the appropriate work to geolocate the transfer.  This can be fine
        for a MUD file, as the MUD controller, if located in the same
        geography as the IoT device, can follow the CNAME and collect the set
        of resulting IP addresses along with the TTL for each.  Then, the MUD
        controller can take charge of refreshing that mapping at intervals
        driven by the TTL.</t>
        <t indent="0" pn="section-4.2-7">In some cases, a complete set of geographically distributed servers
        may be known ahead of time (or that it changes very slowly), and the
        device manufacturer can list all those IP addresses in the DNS for the
        name that it lists in the MUD file.  As long as the active set of
        addresses used by the CDN is a strict subset of that list, then the
        geolocated name can be used for the content download itself.</t>
      </section>
      <section anchor="use-of-a-too-generic-dns-name" numbered="true" removeInRFC="false" toc="include" pn="section-4.3">
        <name slugifiedName="name-use-of-a-too-generic-dns-na">Use of a Too Generic DNS Name</name>
        <t indent="0" pn="section-4.3-1">Some CDNs make all customer content available at a single URL (such
        as "s3.example.com").  This seems to be ideal from a MUD point of
        view: a completely predictable URL.</t>
        <t indent="0" pn="section-4.3-2">The problem is that a compromised device could then connect to the
        contents of any bucket, potentially attacking the data from other
        customers.</t>
        <t indent="0" pn="section-4.3-3">Exactly what the risk is depends upon what the other customers are
        doing: It could be limited to simply causing a distributed
        denial-of-service attack resulting in high costs to those customers,
        or such an attack could potentially include writing
        content.</t>
        <t indent="0" pn="section-4.3-4">Amazon has recognized the problems associated with this practice
        and aims to change it to a virtual hosting model, as per <xref target="awss3virtualhosting" format="default" sectionFormat="of" derivedContent="awss3virtualhosting"/>.</t>
        <t indent="0" pn="section-4.3-5">The MUD ACLs provide only for permitting endpoints (hostnames and
        ports) but do not filter URLs (nor could filtering be enforced within
        HTTPS).</t>
      </section>
    </section>
    <section anchor="sec-priv-out" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-dns-privacy-and-outsourcing">DNS Privacy and Outsourcing versus MUD Controllers</name>
      <t indent="0" pn="section-5-1"><xref target="RFC7858" format="default" sectionFormat="of" derivedContent="RFC7858"/> and <xref target="RFC8094" format="default" sectionFormat="of" derivedContent="RFC8094"/> provide for DoT
      and DoH.  <xref target="RFC9499" format="default" sectionFormat="of" derivedContent="RFC9499"/> details the terms.  But, even with
      the unencrypted DNS (a.k.a. Do53), it is possible to outsource DNS
      queries to other public services, such as those operated by Google,
      CloudFlare, Verisign, etc.</t>
      <t indent="0" pn="section-5-2">For some users and classes of devices, revealing the DNS queries to
      those outside entities may constitute a privacy concern.  For other
      users, the use of an insecure local resolver may constitute a privacy
      concern.</t>
      <t indent="0" pn="section-5-3">As described in <xref target="mapping" format="default" sectionFormat="of" derivedContent="Section 3"/>, the MUD controller
      needs to have access to the same resolver or resolvers as the IoT device.  If the
      IoT device does not use the DNS servers provided to it via DHCP or
      Router Advertisements, then the MUD controller will need to be told
      which servers will in fact be used.  As yet, there is no protocol to do
      this, but future work could provide this as an extension to MUD.</t>
      <t indent="0" pn="section-5-4">Until such time as such a protocol exists, the best practice is for
      the IoT device to always use the DNS servers provided by DHCP or Router
      Advertisements.</t>
    </section>
    <section anchor="sec-reco" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-recommendations-to-iot-devi">Recommendations to IoT Device Manufacturers on MUD and DNS Usage</name>
      <t indent="0" pn="section-6-1">Inclusion of a MUD file with IoT devices is operationally quite
      simple.  It requires only a few small changes to the DHCP client code to
      express the MUD URL.  It can even be done without code changes via the
      use of a QR code affixed to the packaging (see <xref target="RFC9238" format="default" sectionFormat="of" derivedContent="RFC9238"/>).</t>
      <t indent="0" pn="section-6-2">The difficult part is determining what to put into the MUD file
      itself.  There are currently tools that help with the definition and
      analysis of MUD files; see <xref target="mudmaker" format="default" sectionFormat="of" derivedContent="mudmaker"/>.  The remaining
      difficulty is the actual list of expected connections to put in the
      MUD file.  An IoT manufacturer must spend some time reviewing the
      network communications by their device.</t>
      <t indent="0" pn="section-6-3">This document discusses a number of challenges that occur relating to
      how DNS requests are made and resolved, and the goal of this section is
      to make recommendations on how to modify IoT systems to work well with
      MUD.</t>
      <section anchor="consistently-use-dns" numbered="true" removeInRFC="false" toc="include" pn="section-6.1">
        <name slugifiedName="name-consistently-use-dns">Consistently Use DNS</name>
        <t indent="0" pn="section-6.1-1">For the reasons explained in <xref target="inprotocol" format="default" sectionFormat="of" derivedContent="Section 4.1"/>, the most
        important recommendation is to avoid using IP address literals in any
        protocol.  DNS names should always be used.</t>
      </section>
      <section anchor="use-primary-dns-names-controlled-by-the-manufacturer" numbered="true" removeInRFC="false" toc="include" pn="section-6.2">
        <name slugifiedName="name-use-primary-dns-names-contr">Use Primary DNS Names Controlled by the Manufacturer</name>
        <t indent="0" pn="section-6.2-1">The second recommendation is to allocate and use DNS names within
        zones controlled by the manufacturer.  These DNS names can be
        populated with an alias (see <xref target="RFC9499" section="2" sectionFormat="comma" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9499#section-2" derivedContent="RFC9499"/>) that points to the production system.
        Ideally, a different name is used for each logical function, allowing
        different rules in the MUD file to be enabled and disabled.</t>
        <t indent="0" pn="section-6.2-2">While it used to be costly to have a large number of aliases in a
        web server certificate, this is no longer the case.  Wildcard
        certificates are also commonly available; they allow for an infinite
        number of possible DNS names.</t>
      </section>
      <section anchor="use-content-distribution-network-with-stable-dns-names" numbered="true" removeInRFC="false" toc="include" pn="section-6.3">
        <name slugifiedName="name-use-a-content-distribution-">Use a Content Distribution Network with Stable DNS Names</name>
        <t indent="0" pn="section-6.3-1">When aliases point to a CDN, give preference to stable DNS names
        that point to appropriately load-balanced targets.  CDNs that employ
        very low TTL values for DNS make it harder for the MUD
        controller to get the same answer as the IoT device.  A CDN that
        always returns the same set of A and AAAA records, but permutes them to
        provide the best one first, provides a more reliable answer.</t>
      </section>
      <section anchor="tailorednames" numbered="true" removeInRFC="false" toc="include" pn="section-6.4">
        <name slugifiedName="name-do-not-use-tailored-respons">Do Not Use Tailored Responses to Answer DNS Names</name>
        <t indent="0" pn="section-6.4-1"><xref target="RFC7871" format="default" sectionFormat="of" derivedContent="RFC7871"/> defines the edns-client-subnet (ECS) EDNS0
        option and explains how authoritative servers sometimes answer queries
        differently based upon the IP address of the end system making the
        request.  Ultimately, the decision is based upon some topological
        notion of closeness.  This is often used to provide tailored responses
        to clients, providing them with a geographically advantageous
        answer.</t>
        <t indent="0" pn="section-6.4-2">When the MUD controller makes its DNS query, it is critical that it
        receives an answer that is based upon the same topological decision as
        when the IoT device makes its query.</t>
        <t indent="0" pn="section-6.4-3">There are probably ways in which the MUD controller could use the
        edns-client-subnet option to make a query that would get the same
        treatment as when the IoT device makes its query.  If this worked,
        then it would receive the same answer as the IoT device.</t>
        <t indent="0" pn="section-6.4-4">In practice it could be quite difficult if the IoT device uses a
        different Internet connection, a different firewall, or a different
        recursive DNS server.  The edns-client-subnet option might be ignored or
        overridden by any of the DNS infrastructure.</t>
        <t indent="0" pn="section-6.4-5">Some tailored responses might only reorder the replies so that the
        most preferred address is first.  Such a system would be acceptable if
        the MUD controller had a way to know that the list was complete.</t>
        <t indent="0" pn="section-6.4-6">But, due to the above problems, a strong recommendation is to avoid
        using tailored responses as part of the DNS names in the MUD file.</t>
      </section>
      <section anchor="prefer-dns-servers-learned-from-dhcprouter-advertisements" numbered="true" removeInRFC="false" toc="include" pn="section-6.5">
        <name slugifiedName="name-prefer-dns-servers-learned-">Prefer DNS Servers Learned from DHCP/Router Advertisements</name>
        <t indent="0" pn="section-6.5-1">The best practice is for IoT devices to do DNS with the
        DHCP-provided DNS servers or with DNS servers learned from Router
        Advertisements <xref target="RFC8106" format="default" sectionFormat="of" derivedContent="RFC8106"/>.</t>
        <t indent="0" pn="section-6.5-2">The Adaptive DNS Discovery (ADD) Working Group has written <xref target="RFC9462" format="default" sectionFormat="of" derivedContent="RFC9462"/> and <xref target="RFC9463" format="default" sectionFormat="of" derivedContent="RFC9463"/> to provide information to end devices on how to
        find locally provisioned secure/private DNS servers.</t>
        <t indent="0" pn="section-6.5-3">Use of public resolvers instead of the locally provided DNS
        resolver, whether Do53, DoQ, DoT, or DoH, is discouraged.</t>
        <t indent="0" pn="section-6.5-4">Some manufacturers would like to have a fallback to using a public
        resolver to mitigate against local misconfiguration.  There are a
        number of reasons to avoid this, detailed in <xref target="tailorednames" format="default" sectionFormat="of" derivedContent="Section 6.4"/>.  The public resolver might not return the
        same tailored names that the MUD controller would get.</t>
        <t indent="0" pn="section-6.5-5">It is recommended that non-local resolvers are only used when
        the locally provided resolvers provide no answers to any queries at
        all and do so repeatedly.  The status of the operator-provided
        resolvers needs to be re-evaluated on a periodic basis.</t>
        <t indent="0" pn="section-6.5-6">Finally, if a device will ever attempt to use non-local resolvers,
        then the addresses of those resolvers need to be listed in the MUD
        file as destinations that are to be permitted. This needs to include
        the port numbers (i.e., 53, 853 for DoT, 443 for DoH) that will be
        used as well.</t>
      </section>
    </section>
    <section anchor="interactions-with-mdns-and-dnssd" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-interactions-with-mdns-and-">Interactions with mDNS and DNS-SD</name>
      <t indent="0" pn="section-7-1">Unicast DNS requests are not the only way to map names to IP
      addresses.  IoT devices might also use Multicast DNS (mDNS) <xref target="RFC6762" format="default" sectionFormat="of" derivedContent="RFC6762"/>,
      both to be discovered by other devices and also to discover other
      devices.</t>
      <t indent="0" pn="section-7-2">mDNS replies include A and AAAA records, and it is conceivable that
      these replies contain addresses that are not local to the link on which
      they are made.  This could be the result of another device that contains
      malware.  An unsuspecting IoT device could be led to contact some
      external host as a result.  Protecting against such things is one of the
      benefits of MUD.</t>
      <t indent="0" pn="section-7-3">In the unlikely case that the external host has been listed as a
      legitimate destination in a MUD file, communication will
      continue as expected.  As an example, an IoT device might look
      for a name like "update.local" in order to find a source of firmware
      updates.  It could be led to connect to some external host that was
      listed as "update.example" in the MUD file.  This should work fine if
      the name "update.example" does not require any kind of tailored
      reply.</t>
      <t indent="0" pn="section-7-4">In residential networks, there has typically not been more than one
      network (although this is changing through work like <xref target="I-D.ietf-snac-simple" format="default" sectionFormat="of" derivedContent="AUTO-STUB-NETWORKS"/>), but on campus or enterprise networks,
      having more than one network is not unusual.  In such networks, mDNS is
      being replaced with DNS-based Service Discovery (DNS-SD) <xref target="RFC8882" format="default" sectionFormat="of" derivedContent="RFC8882"/>, and in such a
      situation, connections could be initiated to other parts of the network.
      Such connections might traverse the MUD policy enforcement point (an
      intra-department firewall) and could very well be rejected because the
      MUD controller did not know about that interaction.</t>
      <t indent="0" pn="section-7-5"><xref target="RFC8250" format="default" sectionFormat="of" derivedContent="RFC8250"/> includes a number of provisions for
      controlling internal communications, including complex communications
      like same manufacturer ACLs.  To date, this aspect of MUD has been
      difficult to describe.  This document does not consider internal
      communications to be in scope.</t>
    </section>
    <section anchor="iana" numbered="true" removeInRFC="false" toc="include" pn="section-8">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-8-1">This document has no IANA actions.</t>
    </section>
    <section anchor="sec-privacy" numbered="true" removeInRFC="false" toc="include" pn="section-9">
      <name slugifiedName="name-privacy-considerations">Privacy Considerations</name>
      <t indent="0" pn="section-9-1">The use of non-local DNS servers exposes the list of DNS names
      resolved to a third party, including passive eavesdroppers.</t>
      <t indent="0" pn="section-9-2">The use of DoT and DoH eliminates the threat from passive
      eavesdropping but still exposes the list to the operator of the DoT or
      DoH server.  There are additional methods to help preserve privacy, such
      as that described by <xref target="RFC9230" format="default" sectionFormat="of" derivedContent="RFC9230"/>.</t>
      <t indent="0" pn="section-9-3">The use of unencrypted (Do53) requests to a local DNS server exposes
      the list to any internal passive eavesdroppers. For some situations,
      that may be significant, particularly if unencrypted WiFi is used.</t>
      <t indent="0" pn="section-9-4">Use of an encrypted DNS connection to a local DNS recursive resolver
      is the preferred choice.</t>
      <t indent="0" pn="section-9-5">IoT devices that reach out to the manufacturer at regular intervals
      to check for firmware updates are informing passive eavesdroppers of the
      existence of a specific manufacturer's device being present at the
      origin location.</t>
      <t indent="0" pn="section-9-6">Identifying the IoT device type empowers the attacker to launch
      targeted attacks to the IoT device (e.g., the attacker can take
      advantage of any known vulnerability on the device).</t>
      <t indent="0" pn="section-9-7">While possession of a "large kitchen appliance" at a residence may be
      uninteresting to most, possession of intimate personal devices (e.g.,
      "sex toys") may be a cause for embarrassment.</t>
      <t indent="0" pn="section-9-8">IoT device manufacturers are encouraged to find ways to anonymize
      their update queries.  For instance, contracting out the update
      notification service to a third party that deals with a large variety of
      devices would provide a level of defense against passive eavesdropping.
      Other update mechanisms should be investigated, including use of
      DNSSEC-signed TXT records with current version information.  This would
      permit DoT or DoH to convey the update notification in a private
      fashion.  This is particularly powerful if a local recursive DoT server
      is used, which then communicates using DoT over the Internet.</t>
      <t indent="0" pn="section-9-9">The more complex case of <xref target="inprotocol" format="default" sectionFormat="of" derivedContent="Section 4.1"/> postulates that
      the version number needs to be provided to an intelligent agent that can
      decide the correct route to do upgrades.  <xref target="RFC9019" format="default" sectionFormat="of" derivedContent="RFC9019"/>
      provides a wide variety of ways to accomplish the same thing without
      having to divulge the current version number.</t>
    </section>
    <section anchor="sec-security" numbered="true" removeInRFC="false" toc="include" pn="section-10">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-10-1">This document deals with conflicting security requirements:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-10-2">
        <li pn="section-10-2.1">
          <t indent="0" pn="section-10-2.1.1">devices that an operator wants to manage using <xref target="RFC8520" format="default" sectionFormat="of" derivedContent="RFC8520"/></t>
        </li>
        <li pn="section-10-2.2">
          <t indent="0" pn="section-10-2.2.1">requirements for the devices to get access to network resources
          that may be critical to their continued safe operation</t>
        </li>
      </ul>
      <t indent="0" pn="section-10-3">This document takes the view that the two requirements do not need to
      be in conflict, but resolving the conflict requires careful planning on
      how the DNS can be safely and effectively be used by MUD controllers and
      IoT devices.</t>
      <t indent="0" pn="section-10-4">When an IoT device with an inaccurate MUD file is deployed into a
      network that uses MUD, there is a significant possibility that the
      device will cause a spurious security exception to be raised.  There is
      significant evidence that such spurious exceptions can cause significant
      overhead to personnel.  In particular, repeated spurious exceptions are
      likely to cause the entire exception process to be turned off.  When MUD
      alerts are turned off, then even legitimate exceptions are ignored.
      This is very much a Boy Who Calls Wolf <xref target="boywhocriedwolf" format="default" sectionFormat="of" derivedContent="boywhocriedwolf"/>
      situation.</t>
      <t indent="0" pn="section-10-5">In order to avoid this situation, and for MUD alerts to be given
      appropriate attention, it is key that IoT device manufacturers create
      accurate MUD files.  This may require some significant thought and even
      rework of key systems so that all network access required by the IoT
      device can be described by a MUD file.  This level of informed
      cooperation within the IoT device vendor and with MUD controller
      manufacturers is key to getting significant return on investment from
      MUD.</t>
      <t indent="0" pn="section-10-6">Manufacturers are encouraged to write MUD files that are good enough
      rather than perfect.  If in doubt, they should write MUD files that are
      somewhat more permissive if the files result in no spurious alerts.</t>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-snac-simple" to="AUTO-STUB-NETWORKS"/>
    <references anchor="sec-combined-references" pn="section-11">
      <name slugifiedName="name-references">References</name>
      <references anchor="sec-normative-references" pn="section-11.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC1794" target="https://www.rfc-editor.org/info/rfc1794" quoteTitle="true" derivedAnchor="RFC1794">
          <front>
            <title>DNS Support for Load Balancing</title>
            <author fullname="T. Brisco" initials="T." surname="Brisco"/>
            <date month="April" year="1995"/>
            <abstract>
              <t indent="0">This RFC is meant to first chronicle a foray into the IETF DNS Working Group, discuss other possible alternatives to provide/simulate load balancing support for DNS, and to provide an ultimate, flexible solution for providing DNS support for balancing loads of many types. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1794"/>
          <seriesInfo name="DOI" value="10.17487/RFC1794"/>
        </reference>
        <reference anchor="RFC8094" target="https://www.rfc-editor.org/info/rfc8094" quoteTitle="true" derivedAnchor="RFC8094">
          <front>
            <title>DNS over Datagram Transport Layer Security (DTLS)</title>
            <author fullname="T. Reddy" initials="T." surname="Reddy"/>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <author fullname="P. Patil" initials="P." surname="Patil"/>
            <date month="February" year="2017"/>
            <abstract>
              <t indent="0">DNS queries and responses are visible to network elements on the path between the DNS client and its server. These queries and responses can contain privacy-sensitive information, which is valuable to protect.</t>
              <t indent="0">This document proposes the use of Datagram Transport Layer Security (DTLS) for DNS, to protect against passive listeners and certain active attacks. As latency is critical for DNS, this proposal also discusses mechanisms to reduce DTLS round trips and reduce the DTLS handshake size. The proposed mechanism runs over port 853.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8094"/>
          <seriesInfo name="DOI" value="10.17487/RFC8094"/>
        </reference>
        <reference anchor="RFC8250" target="https://www.rfc-editor.org/info/rfc8250" quoteTitle="true" derivedAnchor="RFC8250">
          <front>
            <title>IPv6 Performance and Diagnostic Metrics (PDM) Destination Option</title>
            <author fullname="N. Elkins" initials="N." surname="Elkins"/>
            <author fullname="R. Hamilton" initials="R." surname="Hamilton"/>
            <author fullname="M. Ackermann" initials="M." surname="Ackermann"/>
            <date month="September" year="2017"/>
            <abstract>
              <t indent="0">To assess performance problems, this document describes optional headers embedded in each packet that provide sequence numbers and timing information as a basis for measurements. Such measurements may be interpreted in real time or after the fact. This document specifies the Performance and Diagnostic Metrics (PDM) Destination Options header. The field limits, calculations, and usage in measurement of PDM are included in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8250"/>
          <seriesInfo name="DOI" value="10.17487/RFC8250"/>
        </reference>
        <reference anchor="RFC8520" target="https://www.rfc-editor.org/info/rfc8520" quoteTitle="true" derivedAnchor="RFC8520">
          <front>
            <title>Manufacturer Usage Description Specification</title>
            <author fullname="E. Lear" initials="E." surname="Lear"/>
            <author fullname="R. Droms" initials="R." surname="Droms"/>
            <author fullname="D. Romascanu" initials="D." surname="Romascanu"/>
            <date month="March" year="2019"/>
            <abstract>
              <t indent="0">This memo specifies a component-based architecture for Manufacturer Usage Descriptions (MUDs). The goal of MUD is to provide a means for end devices to signal to the network what sort of access and network functionality they require to properly function. The initial focus is on access control. Later work can delve into other aspects.</t>
              <t indent="0">This memo specifies two YANG modules, IPv4 and IPv6 DHCP options, a Link Layer Discovery Protocol (LLDP) TLV, a URL, an X.509 certificate extension, and a means to sign and verify the descriptions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8520"/>
          <seriesInfo name="DOI" value="10.17487/RFC8520"/>
        </reference>
        <reference anchor="RFC9019" target="https://www.rfc-editor.org/info/rfc9019" quoteTitle="true" derivedAnchor="RFC9019">
          <front>
            <title>A Firmware Update Architecture for Internet of Things</title>
            <author fullname="B. Moran" initials="B." surname="Moran"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="D. Brown" initials="D." surname="Brown"/>
            <author fullname="M. Meriac" initials="M." surname="Meriac"/>
            <date month="April" year="2021"/>
            <abstract>
              <t indent="0">Vulnerabilities in Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism suitable for devices with resource constraints. Incorporating such an update mechanism is a fundamental requirement for fixing vulnerabilities, but it also enables other important capabilities such as updating configuration settings and adding new functionality.</t>
              <t indent="0">In addition to the definition of terminology and an architecture, this document provides the motivation for the standardization of a manifest format as a transport-agnostic means for describing and protecting firmware updates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9019"/>
          <seriesInfo name="DOI" value="10.17487/RFC9019"/>
        </reference>
        <reference anchor="RFC9499" target="https://www.rfc-editor.org/info/rfc9499" quoteTitle="true" derivedAnchor="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 indent="0">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 indent="0">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" pn="section-11.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="Akamai" target="https://en.wikipedia.org/w/index.php?title=Akamai_Technologies&amp;oldid=1277665363" quoteTitle="true" derivedAnchor="Akamai">
          <front>
            <title>Akamai Technologies</title>
            <author>
              <organization showOnFrontPage="true">Wikipedia</organization>
            </author>
            <date day="26" month="February" year="2025"/>
          </front>
        </reference>
        <reference anchor="AmazonS3" target="https://en.wikipedia.org/w/index.php?title=Amazon_S3&amp;oldid=1280379498" quoteTitle="true" derivedAnchor="AmazonS3">
          <front>
            <title>Amazon S3</title>
            <author>
              <organization showOnFrontPage="true">Wikipedia</organization>
            </author>
            <date day="14" month="March" year="2025"/>
          </front>
        </reference>
        <reference anchor="antipattern" target="https://www.agilealliance.org/glossary/antipattern" quoteTitle="true" derivedAnchor="antipattern">
          <front>
            <title>AntiPattern</title>
            <author>
              <organization showOnFrontPage="true">Agile Alliance</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-snac-simple" target="https://datatracker.ietf.org/doc/html/draft-ietf-snac-simple-06" quoteTitle="true" derivedAnchor="AUTO-STUB-NETWORKS">
          <front>
            <title>Automatically Connecting Stub Networks to Unmanaged Infrastructure</title>
            <author fullname="Ted Lemon" initials="T." surname="Lemon">
              <organization showOnFrontPage="true">Apple Inc.</organization>
            </author>
            <author fullname="Jonathan Hui" initials="J." surname="Hui">
              <organization showOnFrontPage="true">Google LLC</organization>
            </author>
            <date day="4" month="November" year="2024"/>
            <abstract>
              <t indent="0">This document describes a set of practices for connecting stub networks to adjacent infrastructure networks. This is applicable in cases such as constrained (Internet of Things) networks where there is a need to provide functional parity of service discovery and reachability between devices on the stub network and devices on an adjacent infrastructure link (for example, a home network).</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-snac-simple-06"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="awss3virtualhosting" target="https://techmonitor.ai/techonology/cloud/aws-s3-path-deprecation" quoteTitle="true" derivedAnchor="awss3virtualhosting">
          <front>
            <title>Down to the Wire: AWS Delays 'Path-Style' S3 Deprecation at Last Minute</title>
            <author>
              <organization showOnFrontPage="true">Tech Monitor</organization>
            </author>
            <date year="2020" month="September" day="24"/>
          </front>
        </reference>
        <reference anchor="boywhocriedwolf" target="https://en.wikipedia.org/w/index.php?title=The_Boy_Who_Cried_Wolf&amp;oldid=1274257821" quoteTitle="true" derivedAnchor="boywhocriedwolf">
          <front>
            <title>The Boy Who Cried Wolf</title>
            <author>
              <organization showOnFrontPage="true">Wikipedia</organization>
            </author>
            <date year="2025" month="February" day="6"/>
          </front>
        </reference>
        <reference anchor="mudmaker" target="https://mudmaker.org" quoteTitle="true" derivedAnchor="mudmaker">
          <front>
            <title>MUD Maker</title>
            <author>
              <organization showOnFrontPage="true"/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC6066" target="https://www.rfc-editor.org/info/rfc6066" quoteTitle="true" derivedAnchor="RFC6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="January" year="2011"/>
            <abstract>
              <t indent="0">This document provides specifications for existing TLS extensions. It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2". The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="RFC6146" target="https://www.rfc-editor.org/info/rfc6146" quoteTitle="true" derivedAnchor="RFC6146">
          <front>
            <title>Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers</title>
            <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <author fullname="I. van Beijnum" initials="I." surname="van Beijnum"/>
            <date month="April" year="2011"/>
            <abstract>
              <t indent="0">This document describes stateful NAT64 translation, which allows IPv6-only clients to contact IPv4 servers using unicast UDP, TCP, or ICMP. One or more public IPv4 addresses assigned to a NAT64 translator are shared among several IPv6-only clients. When stateful NAT64 is used in conjunction with DNS64, no changes are usually required in the IPv6 client or the IPv4 server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6146"/>
          <seriesInfo name="DOI" value="10.17487/RFC6146"/>
        </reference>
        <reference anchor="RFC6147" target="https://www.rfc-editor.org/info/rfc6147" quoteTitle="true" derivedAnchor="RFC6147">
          <front>
            <title>DNS64: DNS Extensions for Network Address Translation from IPv6 Clients to IPv4 Servers</title>
            <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
            <author fullname="A. Sullivan" initials="A." surname="Sullivan"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <author fullname="I. van Beijnum" initials="I." surname="van Beijnum"/>
            <date month="April" year="2011"/>
            <abstract>
              <t indent="0">DNS64 is a mechanism for synthesizing AAAA records from A records. DNS64 is used with an IPv6/IPv4 translator to enable client-server communication between an IPv6-only client and an IPv4-only server, without requiring any changes to either the IPv6 or the IPv4 node, for the class of applications that work through NATs. This document specifies DNS64, and provides suggestions on how it should be deployed in conjunction with IPv6/IPv4 translators. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6147"/>
          <seriesInfo name="DOI" value="10.17487/RFC6147"/>
        </reference>
        <reference anchor="RFC6707" target="https://www.rfc-editor.org/info/rfc6707" quoteTitle="true" derivedAnchor="RFC6707">
          <front>
            <title>Content Distribution Network Interconnection (CDNI) Problem Statement</title>
            <author fullname="B. Niven-Jenkins" initials="B." surname="Niven-Jenkins"/>
            <author fullname="F. Le Faucheur" initials="F." surname="Le Faucheur"/>
            <author fullname="N. Bitar" initials="N." surname="Bitar"/>
            <date month="September" year="2012"/>
            <abstract>
              <t indent="0">Content Delivery Networks (CDNs) provide numerous benefits for cacheable content: reduced delivery cost, improved quality of experience for End Users, and increased robustness of delivery. For these reasons, they are frequently used for large-scale content delivery. As a result, existing CDN Providers are scaling up their infrastructure, and many Network Service Providers (NSPs) are deploying their own CDNs. It is generally desirable that a given content item can be delivered to an End User regardless of that End User's location or attachment network. This is the motivation for interconnecting standalone CDNs so they can interoperate as an open content delivery infrastructure for the end-to-end delivery of content from Content Service Providers (CSPs) to End Users. However, no standards or open specifications currently exist to facilitate such CDN Interconnection.</t>
              <t indent="0">The goal of this document is to outline the problem area of CDN Interconnection for the IETF CDNI (CDN Interconnection) working group. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6707"/>
          <seriesInfo name="DOI" value="10.17487/RFC6707"/>
        </reference>
        <reference anchor="RFC6762" target="https://www.rfc-editor.org/info/rfc6762" quoteTitle="true" derivedAnchor="RFC6762">
          <front>
            <title>Multicast DNS</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t indent="0">As networked devices become smaller, more portable, and more ubiquitous, the ability to operate with less configured infrastructure is increasingly important. In particular, the ability to look up DNS resource record data types (including, but not limited to, host names) in the absence of a conventional managed DNS server is useful.</t>
              <t indent="0">Multicast DNS (mDNS) provides the ability to perform DNS-like operations on the local link in the absence of any conventional Unicast DNS server. In addition, Multicast DNS designates a portion of the DNS namespace to be free for local use, without the need to pay any annual fee, and without the need to set up delegations or otherwise configure a conventional DNS server to answer for those names.</t>
              <t indent="0">The primary benefits of Multicast DNS names are that (i) they require little or no administration or configuration to set them up, (ii) they work when no infrastructure is present, and (iii) they work during infrastructure failures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6762"/>
          <seriesInfo name="DOI" value="10.17487/RFC6762"/>
        </reference>
        <reference anchor="RFC7858" target="https://www.rfc-editor.org/info/rfc7858" quoteTitle="true" derivedAnchor="RFC7858">
          <front>
            <title>Specification for DNS over Transport Layer Security (TLS)</title>
            <author fullname="Z. Hu" initials="Z." surname="Hu"/>
            <author fullname="L. Zhu" initials="L." surname="Zhu"/>
            <author fullname="J. Heidemann" initials="J." surname="Heidemann"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <author fullname="D. Wessels" initials="D." surname="Wessels"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="May" year="2016"/>
            <abstract>
              <t indent="0">This document describes the use of Transport Layer Security (TLS) to provide privacy for DNS. Encryption provided by TLS eliminates opportunities for eavesdropping and on-path tampering with DNS queries in the network, such as discussed in RFC 7626. In addition, this document specifies two usage profiles for DNS over TLS and provides advice on performance considerations to minimize overhead from using TCP and TLS with DNS.</t>
              <t indent="0">This document focuses on securing stub-to-recursive traffic, as per the charter of the DPRIVE Working Group. It does not prevent future applications of the protocol to recursive-to-authoritative traffic.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7858"/>
          <seriesInfo name="DOI" value="10.17487/RFC7858"/>
        </reference>
        <reference anchor="RFC7871" target="https://www.rfc-editor.org/info/rfc7871" quoteTitle="true" derivedAnchor="RFC7871">
          <front>
            <title>Client Subnet in DNS Queries</title>
            <author fullname="C. Contavalli" initials="C." surname="Contavalli"/>
            <author fullname="W. van der Gaast" initials="W." surname="van der Gaast"/>
            <author fullname="D. Lawrence" initials="D." surname="Lawrence"/>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <date month="May" year="2016"/>
            <abstract>
              <t indent="0">This document describes an Extension Mechanisms for DNS (EDNS0) option that is in active use to carry information about the network that originated a DNS query and the network for which the subsequent response can be cached. Since it has some known operational and privacy shortcomings, a revision will be worked through the IETF for improvement.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7871"/>
          <seriesInfo name="DOI" value="10.17487/RFC7871"/>
        </reference>
        <reference anchor="RFC8106" target="https://www.rfc-editor.org/info/rfc8106" quoteTitle="true" derivedAnchor="RFC8106">
          <front>
            <title>IPv6 Router Advertisement Options for DNS Configuration</title>
            <author fullname="J. Jeong" initials="J." surname="Jeong"/>
            <author fullname="S. Park" initials="S." surname="Park"/>
            <author fullname="L. Beloeil" initials="L." surname="Beloeil"/>
            <author fullname="S. Madanapalli" initials="S." surname="Madanapalli"/>
            <date month="March" year="2017"/>
            <abstract>
              <t indent="0">This document specifies IPv6 Router Advertisement (RA) options (called "DNS RA options") to allow IPv6 routers to advertise a list of DNS Recursive Server Addresses and a DNS Search List to IPv6 hosts.</t>
              <t indent="0">This document, which obsoletes RFC 6106, defines a higher default value of the lifetime of the DNS RA options to reduce the likelihood of expiry of the options on links with a relatively high rate of packet loss.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8106"/>
          <seriesInfo name="DOI" value="10.17487/RFC8106"/>
        </reference>
        <reference anchor="RFC8484" target="https://www.rfc-editor.org/info/rfc8484" quoteTitle="true" derivedAnchor="RFC8484">
          <front>
            <title>DNS Queries over HTTPS (DoH)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <date month="October" year="2018"/>
            <abstract>
              <t indent="0">This document defines a protocol for sending DNS queries and getting DNS responses over HTTPS. Each DNS query-response pair is mapped into an HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8484"/>
          <seriesInfo name="DOI" value="10.17487/RFC8484"/>
        </reference>
        <reference anchor="RFC8882" target="https://www.rfc-editor.org/info/rfc8882" quoteTitle="true" derivedAnchor="RFC8882">
          <front>
            <title>DNS-Based Service Discovery (DNS-SD) Privacy and Security Requirements</title>
            <author fullname="C. Huitema" initials="C." surname="Huitema"/>
            <author fullname="D. Kaiser" initials="D." surname="Kaiser"/>
            <date month="September" year="2020"/>
            <abstract>
              <t indent="0">DNS-SD (DNS-based Service Discovery) normally discloses information about devices offering and requesting services. This information includes hostnames, network parameters, and possibly a further description of the corresponding service instance. Especially when mobile devices engage in DNS-based Service Discovery at a public hotspot, serious privacy problems arise. We analyze the requirements of a privacy-respecting discovery service.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8882"/>
          <seriesInfo name="DOI" value="10.17487/RFC8882"/>
        </reference>
        <reference anchor="RFC9230" target="https://www.rfc-editor.org/info/rfc9230" quoteTitle="true" derivedAnchor="RFC9230">
          <front>
            <title>Oblivious DNS over HTTPS</title>
            <author fullname="E. Kinnear" initials="E." surname="Kinnear"/>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="T. Verma" initials="T." surname="Verma"/>
            <author fullname="C.A. Wood" initials="C.A." surname="Wood"/>
            <date month="June" year="2022"/>
            <abstract>
              <t indent="0">This document describes a protocol that allows clients to hide their IP addresses from DNS resolvers via proxying encrypted DNS over HTTPS (DoH) messages. This improves privacy of DNS operations by not allowing any one server entity to be aware of both the client IP address and the content of DNS queries and answers.</t>
              <t indent="0">This experimental protocol has been developed outside the IETF and is published here to guide implementation, ensure interoperability among implementations, and enable wide-scale experimentation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9230"/>
          <seriesInfo name="DOI" value="10.17487/RFC9230"/>
        </reference>
        <reference anchor="RFC9238" target="https://www.rfc-editor.org/info/rfc9238" quoteTitle="true" derivedAnchor="RFC9238">
          <front>
            <title>Loading Manufacturer Usage Description (MUD) URLs from QR Codes</title>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="J. Latour" initials="J." surname="Latour"/>
            <author fullname="H. Habibi Gharakheili" initials="H." surname="Habibi Gharakheili"/>
            <date month="May" year="2022"/>
            <abstract>
              <t indent="0">This informational document details a protocol to load Manufacturer Usage Description (MUD) definitions from RFC 8520 for devices that do not have them integrated.</t>
              <t indent="0">This document is published to inform the Internet community of this mechanism to allow interoperability and to serve as a basis of other standards work if there is interest.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9238"/>
          <seriesInfo name="DOI" value="10.17487/RFC9238"/>
        </reference>
        <reference anchor="RFC9250" target="https://www.rfc-editor.org/info/rfc9250" quoteTitle="true" derivedAnchor="RFC9250">
          <front>
            <title>DNS over Dedicated QUIC Connections</title>
            <author fullname="C. Huitema" initials="C." surname="Huitema"/>
            <author fullname="S. Dickinson" initials="S." surname="Dickinson"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <date month="May" year="2022"/>
            <abstract>
              <t indent="0">This document describes the use of QUIC to provide transport confidentiality for DNS. The encryption provided by QUIC has similar properties to those provided by TLS, while QUIC transport eliminates the head-of-line blocking issues inherent with TCP and provides more efficient packet-loss recovery than UDP. DNS over QUIC (DoQ) has privacy properties similar to DNS over TLS (DoT) specified in RFC 7858, and latency characteristics similar to classic DNS over UDP. This specification describes the use of DoQ as a general-purpose transport for DNS and includes the use of DoQ for stub to recursive, recursive to authoritative, and zone transfer scenarios.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9250"/>
          <seriesInfo name="DOI" value="10.17487/RFC9250"/>
        </reference>
        <reference anchor="RFC9462" target="https://www.rfc-editor.org/info/rfc9462" quoteTitle="true" derivedAnchor="RFC9462">
          <front>
            <title>Discovery of Designated Resolvers</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="E. Kinnear" initials="E." surname="Kinnear"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <author fullname="T. Jensen" initials="T." surname="Jensen"/>
            <date month="November" year="2023"/>
            <abstract>
              <t indent="0">This document defines Discovery of Designated Resolvers (DDR), a set of mechanisms for DNS clients to use DNS records to discover a resolver's encrypted DNS configuration. An Encrypted DNS Resolver discovered in this manner is referred to as a "Designated Resolver". These mechanisms can be used to move from unencrypted DNS to encrypted DNS when only the IP address of a resolver is known. These mechanisms are designed to be limited to cases where Unencrypted DNS Resolvers and their Designated Resolvers are operated by the same entity or cooperating entities. It can also be used to discover support for encrypted DNS protocols when the name of an Encrypted DNS Resolver is known.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9462"/>
          <seriesInfo name="DOI" value="10.17487/RFC9462"/>
        </reference>
        <reference anchor="RFC9463" target="https://www.rfc-editor.org/info/rfc9463" quoteTitle="true" derivedAnchor="RFC9463">
          <front>
            <title>DHCP and Router Advertisement Options for the Discovery of Network-designated Resolvers (DNR)</title>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="T. Reddy.K" initials="T." role="editor" surname="Reddy.K"/>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <author fullname="N. Cook" initials="N." surname="Cook"/>
            <author fullname="T. Jensen" initials="T." surname="Jensen"/>
            <date month="November" year="2023"/>
            <abstract>
              <t indent="0">This document specifies new DHCP and IPv6 Router Advertisement options to discover encrypted DNS resolvers (e.g., DNS over HTTPS, DNS over TLS, and DNS over QUIC). Particularly, it allows a host to learn an Authentication Domain Name together with a list of IP addresses and a set of service parameters to reach such encrypted DNS resolvers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9463"/>
          <seriesInfo name="DOI" value="10.17487/RFC9463"/>
        </reference>
      </references>
    </references>
    <section anchor="failingstrategy" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-a-failing-strategy-anti-pat">A Failing Strategy: Anti-Patterns</name>
      <t indent="0" pn="section-appendix.a-1">Attempts to map IP addresses to DNS names in real time often fail for a number of reasons:</t>
      <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-appendix.a-2">
	<li pn="section-appendix.a-2.1" derivedCounter="1.">
          <t indent="0" pn="section-appendix.a-2.1.1">It can not be done fast enough.</t>
        </li>
        <li pn="section-appendix.a-2.2" derivedCounter="2.">
          <t indent="0" pn="section-appendix.a-2.2.1">It reveals usage patterns of the devices.</t>
        </li>
        <li pn="section-appendix.a-2.3" derivedCounter="3.">
          <t indent="0" pn="section-appendix.a-2.3.1">The mappings are often incomplete.</t>
        </li>
        <li pn="section-appendix.a-2.4" derivedCounter="4.">
          <t indent="0" pn="section-appendix.a-2.4.1">Even if the mapping is present, due to virtual hosting, it may
          not map back to the name used in the ACL.</t>
        </li>
      </ol>
      <t indent="0" pn="section-appendix.a-3">This is not a successful strategy for the reasons explained below.</t>
      <section anchor="too-slow" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.1">
        <name slugifiedName="name-too-slow">Too Slow</name>
        <t indent="0" pn="section-appendix.a.1-1">Mappings of IP addresses to DNS names require a DNS lookup in the
        in-addr.arpa or ip6.arpa space.  For a cold DNS cache, this will
        typically require 2 to 3 NS record lookups to locate the DNS server
        that holds the information required.  At 20 to 100 ms per round trip,
        this easily adds up to a significant amount of time before the packet
        that caused the lookup can be released.</t>
        <t indent="0" pn="section-appendix.a.1-2">While subsequent connections to the same site (and subsequent
        packets in the same flow) will not be affected if the results are
        cached, the effects will be felt.  The ACL results can be cached for a
        period of time given by the TTL of the DNS results, but the DNS lookup
        must be repeated, e.g., in a few hours or days, when the cached binding (of IP
        address to name) expires.</t>
      </section>
      <section anchor="reveals-patterns-of-usage" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.2">
        <name slugifiedName="name-reveals-patterns-of-usage">Reveals Patterns of Usage</name>
        <t indent="0" pn="section-appendix.a.2-1">By doing the DNS lookups when the traffic occurs, then a passive
        attacker can see when the device is active and may be able to derive
        usage patterns.  They could determine when a home was occupied or not.
        This does not require access to all on-path data, just to the DNS
        requests to the bottom level of the DNS tree.</t>
      </section>
      <section anchor="mappings-are-often-incomplete" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.3">
        <name slugifiedName="name-mappings-are-often-incomple">Mappings Are Often Incomplete</name>
        <t indent="0" pn="section-appendix.a.3-1">An IoT manufacturer with a cloud service provider that fails to
        include an A or AAAA record as part of their forward name publication
        will find that the new server is simply not used.  The operational
        feedback for that mistake is immediate.  The same is not true for
        reverse DNS mappings: They can often be incomplete or incorrect for
        months or even years without a visible effect on operations.</t>
        <t indent="0" pn="section-appendix.a.3-2">IoT manufacturer cloud service providers often find it difficult to
        update reverse DNS maps in a timely fashion, assuming that they can do
        it at all.  Many cloud-based solutions dynamically assign IP addresses
        to services, often as the service grows and shrinks, reassigning those
        IP addresses to other services quickly.  The use of HTTP 1.1 Virtual
        Hosting may allow addresses and entire front-end systems to be reused
        dynamically without even reassigning the IP addresses.</t>
        <t indent="0" pn="section-appendix.a.3-3">In some cases, there are multiple layers of CNAME between the
        original name and the target service name.  This is often due to a
        load-balancing layer in the DNS followed by a load-balancing layer at
        the HTTP level.</t>
        <t indent="0" pn="section-appendix.a.3-4">The reverse DNS mapping for the IP address of the load balancer
        usually does not change.  If hundreds of web services are funneled
        through the load balancer, it would require hundreds of PTR records to
        be deployed.  This would easily exceed the UDP/DNS and EDNS0 limits
        and require all queries to use TCP, which would further slow
        down loading of the records.</t>
        <t indent="0" pn="section-appendix.a.3-5">The enumeration of all services/sites that have been at that
        load balancer might also constitute a security concern.  To limit
        the churn of DNS PTR records and reduce failures of the MUD ACLs,
        operators would want to add all possible DNS names for each reverse
        DNS mapping, whether or not the DNS load-balancing in the forward DNS
        space lists that endpoint at that moment.</t>
      </section>
      <section anchor="forward-dns-names-can-have-wildcards" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.4">
        <name slugifiedName="name-forward-dns-names-can-have-">Forward DNS Names Can Have Wildcards</name>
        <t indent="0" pn="section-appendix.a.4-1">In some large hosting providers, content is hosted through a domain
        name that is published as a DNS wildcard (and uses a wildcard
        certificate).  For instance, github.io, which is used for hosting
        content, including the Editors' copy of Internet-Drafts stored on
        GitHub, does not actually publish any DNS names.  Instead, a wildcard
        exists to answer all potential DNS names: Requests are routed
        appropriately once they are received.</t>
        <t indent="0" pn="section-appendix.a.4-2">This kind of system works well for self-managed hosted content.
        However, while it is possible to insert up to a few dozen PTR records,
        many thousands of entries are not possible, nor is it possible to deal
        with the unlimited (infinite) number of possibilities that a wildcard
        supports.</t>
        <t indent="0" pn="section-appendix.a.4-3">Therefore, it would be impossible for the PTR reverse lookup to
        ever work with these wildcard DNS names.</t>
      </section>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.b">
      <name slugifiedName="name-contributors">Contributors</name>
      <contact initials="T." surname="Reddy.K" fullname="Tirumaleswar Reddy.K">
        <organization showOnFrontPage="true">Nokia</organization>
        <address>
      </address>
      </contact>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.c">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="M." surname="Richardson" fullname="Michael Richardson">
        <organization showOnFrontPage="true">Sandelman Software Works</organization>
        <address>
          <email>mcr+ietf@sandelman.ca</email>
        </address>
      </author>
      <author initials="W." surname="Pan" fullname="Wei Pan">
        <organization showOnFrontPage="true">Huawei Technologies</organization>
        <address>
          <email>william.panwei@huawei.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
