<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" 
submissionType="IETF" 
category="std" 
ipr="trust200902" 
obsoletes="" 
updates="" 
xml:lang="en" 
docName="draft-liu-add-dnssd-edns-03"
symRefs="true" 
sortRefs="false" 
version="3">

<front>
<title abbrev="Encrypted DNS SD">DNS-Based Service Discovery for Encrypted DNS Services</title>
<author initials="D." surname="Liu" fullname="Dongjie Liu">
<organization>Jinan University</organization> <address> <email>dongjieliu8917@gmail.com</email> </address> 
</author>

<author initials="Z." surname="Yan" fullname="Zhiwei Yan"> 
<organization>CNNIC</organization> <address> <email>yanzhiwei@cnnic.cn</email> </address> 
</author>

<author initials="G." surname="Geng" fullname="Guanggang Geng">
<organization>Jinan University</organization> <address>	<email>guanggang.geng@gmail.com</email> </address>
</author>

<author initials="G." surname="Zeng" fullname="G. Zeng">
<organization>Jinan University</organization> <address>	
<email>zeng.guoqiang5@gmail.com</email> </address>	</author>

<date day="13" month="September" year="2026"/>
<area>Internet Area</area> 
<workgroup>ADD Working Group</workgroup>

<abstract>
<t>
This document defines a DNS-Based Service Discovery (DNS-SD) mechanism for discovering encrypted DNS services in local networks. It specifies new service types (_dot._tcp, _doh._tcp, _doq._udp) and associated service parameters to enable zero-configuration discovery of DNS over TLS (DoT), DNS over HTTPS (DoH), and DNS over QUIC (DoQ) resolvers. This mechanism is defined for use with multicast DNS (mDNS), addressing critical privacy gaps in local networks while maintaining backward compatibility with RFC 6763. This document leverages SVCB and HTTPS resource records (RFC 9460) for parameter negotiation, with TXT records provided for compatibility with legacy implementations.
</t>
</abstract>
</front>

<middle>

<!-- Introduction -->
<section title="Introduction">
  <section title="The Local Network Privacy Challenge">
  <t>While encrypted DNS protocols such as DNS over TLS (DoT)<xref target="RFC7858"/>, DNS over HTTPS (DoH)<xref target="RFC8484"/>, and DNS over QUIC (DoQ)<xref target="RFC9250"/> have gained widespread adoption for public Internet resolution, local network environments often remain vulnerable to surveillance and manipulation of DNS traffic. Many devices and applications in home, enterprise, and industrial networks still rely on plaintext DNS, exposing sensitive metadata such as device activities, service dependencies, and user behavior patterns. Traditional discovery mechanisms (e.g., DHCP, Router Advertisements) lack the flexibility to negotiate fine-grained encrypted DNS configurations and fail in infrastructure-less environments where centralized servers are unavailable.
  </t>
  </section>
  
  <section title="DNS-SD as a Solution for Privacy-Aware Discovery">
  <t>DNS-Based Service Discovery (DNS-SD, <xref target="RFC6763"/>) and its multicast variant (mDNS, <xref target="RFC6762"/>) provide an ideal foundation for encrypted DNS service discovery due to their:</t>
    <t>Zero-configuration operation: Devices autonomously advertise and discover services without requiring a central server.</t>
    <t>Topology independence: Functions in isolated networks (e.g., home labs, industrial control systems) even without Internet connectivity.</t>
    <t>Real-time updates: Service availability changes propagate within seconds, unlike DHCP's lease-based delays.</t>
    <t>Rich parameter negotiation: SVCB records (or TXT records for compatibility) allow flexible exchange of protocol details (ports, ALPN preferences, certificate fingerprints).</t>
  </section>
  
  <section title="Key Use Cases">
    <t>This specification enables:</t>
    <t>IoT and Smart Home Privacy: Devices (e.g., cameras, voice assistants) automatically discover and use encrypted DNS without manual configuration in home networks where no DHCP server is present or when users bring devices to temporary locations.</t>
    <t>Enterprise Network Segmentation: Departments can advertise isolated DNS services (e.g., _dot.finance.corp.local) with policy enforcement, even in air-gapped segments.</t>
    <t>Offline and Air-Gapped Networks: Secure DNS resolution in environments where Internet access is restricted but internal name resolution is still required (e.g., industrial control systems, military networks, disaster recovery scenarios).</t>
    <t>Ad-hoc and Temporary Networks: When devices form a temporary network (e.g., during a conference, emergency response), they can discover and use encrypted DNS services without any pre-existing infrastructure.</t>
  </section>
  
  <section title="Relationship to Existing Standards">
  <t><xref target="RFC9463"/> defines DHCP and Router Advertisement options for encrypted DNS discovery (DNR), and <xref target="RFC9462"/> specifies Discovery of Designated Resolvers (DDR) using DNS queries. These mechanisms require infrastructure support (DHCP server, router, or recursive resolver) and are suitable for managed networks. This document provides a complementary solution for multicast‑DNS‑based zero‑configuration environments. It operates without any supporting infrastructure. The following table summarizes the differences focusing on the mDNS operating mode:</t>
    <table>
    <name>Comparison with Existing Encrypted DNS Discovery Mechanisms</name>
    <thead>
      <tr><th align="left">Capability</th><th align="left">DNR (RFC 9463)</th><th align="left">DDR (RFC 9462)</th><th align="left">This Specification</th></tr>
    </thead>
    <tbody>
      <tr><td>Infrastructure Required</td><td>DHCP/RA server</td><td>Recursive DNS server</td><td>None (zero-configuration)</td></tr>
      <tr><td>Update Latency</td><td>Minutes-hours (lease time)</td><td>DNS TTL dependent</td><td>Seconds (event-driven)</td></tr>
      <tr><td>Parameter Flexibility</td><td>Limited by option space</td><td>SVCB-based</td><td>SVCB-based</td></tr>
      <tr><td>Primary Use Cases</td><td>Managed networks</td><td>Managed networks with DNS</td><td>Ad-hoc/IoT/dynamic/isolated networks</td></tr>
    </tbody>
  </table>
  <t>This document defines new DNS-SD service types (_dot._tcp, _doh._tcp, _doq._udp) and leverages SVCB/HTTPS resource records for service parameter exchange, while maintaining backward compatibility with TXT-based discovery for legacy implementations.</t>
  </section>
</section>

<!-- Terminology and Requirements -->
<section title="Terminology and Requirements">
   <section title="Requirements Language">
   <t>Key words: "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", "OPTIONAL" per BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/></t>
   </section>
    <section title="Defined Terms">
   <ul spacing="normal">
   <li>Encrypted DNS: Collective term for DoT, DoH, and DoQ.</li>
      <li>ADN (Authentication Domain Name): The Fully Qualified Domain Name (FQDN) that the client expects to find in the server's TLS certificate, as conveyed by the 'adn' key within TXT records (<xref target="TXT-Records"/>). The client MUST validate that the certificate's Subject Name matches this ADN per the procedures in <xref target="RFC6125"/>.</li>
   <li>Service Instance: Unique identifier for an encrypted DNS resolver (e.g., Finance DoT._dot._tcp.local).</li> 
   </ul>
   </section>
</section>

<!-- 3. Service Type Definitions -->
<section title="Service Type Definitions">
    <section title="Encrypted DNS Service Types">
      <table>
        <name>Encrypted DNS Service Types</name>
        <thead>
          <tr><th align="left">Service Type</th><th align="left">Protocol</th><th align="left">Transport</th><th align="left">Reference</th></tr>
        </thead>
        <tbody>
          <tr><td>_dot._tcp</td><td>DoT</td><td>TCP</td><td><xref target="THIS"/></td></tr>
<tr><td>_doh._tcp</td><td>DoH</td><td>TCP</td><td><xref target="THIS"/></td></tr>
<tr><td>_doq._udp</td><td>DoQ</td><td>UDP</td><td><xref target="THIS"/></td></tr>

        </tbody>
      </table>
    </section>
    <section title="Service Instance Name Format">
    <t>&lt;Instance&gt;.&lt;Service&gt;.&lt;Domain&gt;</t>
    <ul spacing="normal">
    <li>Instance: Human-readable identifier (e.g., CorpDNS, HomeGateway).</li>
    <li>Service: One of _dot._tcp, _doh._tcp, _doq._udp.</li>
    <li>Domain: MUST be "local." for mDNS.</li>
    </ul>
    <t>Example: SecurityDoH._doh._tcp.local.</t>
    </section>
</section>

<!-- 4. DNS Resource Records -->
<section title="DNS Resource Records">
    
    <section title="PTR Records (Service Discovery)">
       <artwork name="" type="" align="left" alt="">
       <![CDATA[
        ; Service enumeration
        _services._dns-sd._udp.local. PTR _dot._tcp.local
        _services._dns-sd._udp.local. PTR _doh._tcp.local
        _services._dns-sd._udp.local. PTR _doq._udp.local
        ]]>
       </artwork>
    </section>
    
    <section title="SRV Records (Service Location)">
     <t><![CDATA[ <Instance>.<Service>.<Domain> [Class] [TTL] SRV <Priority> <Weight> <Port> <Target>]]></t>
     <ul>
      <li>Target: The hostname of the host offering the service. The client MUST resolve this hostname to an IP address via A or AAAA records before establishing a connection. If resolution fails, the client MUST discard this service instance.</li>
     </ul>
     <t>Example:</t>
     <t>HomeDoT._dot._tcp.local. 120 IN SRV 0 5 853 router.home.local.</t>
     <t>The default port for DoT is 853 (<xref target="RFC7858"/>), for DoH is 443 (<xref target="RFC8484"/>), and for DoQ is 853 (<xref target="RFC9250"/>). Per <xref target="RFC2782"/>, SRV records MUST include a port value even when using the default port number.</t>
    </section>

    <section title="TXT Records (Legacy Compatibility)" anchor="TXT-Records">
      <t>For compatibility with existing DNS-SD implementations, services MAY include TXT records with the following keys. However, new implementations SHOULD use SVCB/HTTPS records as described in <xref target="SVCB-Records"/>.</t>
      <table>
        <name>Legacy TXT Record Keys</name>
        <thead><tr><th>Key</th><th>Format</th><th>Description</th><th>Example</th></tr></thead>
        <tbody>
        <tr><td>path</td><td>String</td><td>DoH URI path (required for DoH when using TXT)</td><td>path=/dns-query</td></tr>
        <tr><td>alpn</td><td>Comma-list</td><td>Supported ALPN protocols</td><td>alpn=h2,h3</td></tr>
        <tr><td>pri</td><td>Number</td><td>Service selection preference (0-65535), lower is more preferred</td><td>pri=10</td></tr>
        <tr>
  <td>fp_sha256</td>
  <td>Hex string (64 hex characters, no colons)</td>
  <td>SHA‑256 fingerprint of the server certificate, encoded as a hexadecimal string without separators</td>
  <td>fp_sha256=9F86D081884C7D659A2FEA0C55AD015A3BF4F1B2B0B822CD15D6C15B0F00A08</td>
</tr>

        <tr><td>adn</td><td>FQDN</td><td>Authentication Domain Name for certificate validation</td><td>adn=dns.corp.example</td></tr>
        </tbody>
      </table>
      <t>Full Example (TXT-based):</t>
      <t>HomeDoH._doh._tcp.local. 120 IN TXT "path=/dns-query{?dns}" "alpn=h2" "adn=dns.home.net" "fp_sha256=9F86D081884C7D659A2FEA0C55AD015A3BF4F1B2B0B822CD15D6C15B0F00A08"</t>

    </section>

    <section title="SVCB/HTTPS Records for Service Parameters" anchor="SVCB-Records">
      <t>Following <xref target="RFC9460"/>, services SHOULD use SVCB (for DoT/DoQ) or HTTPS (for DoH) resource records to convey connection parameters. The SvcParam keys used are:</t>
      <t>Clients MUST query the appropriate record type based on the service type being discovered: for _doh._tcp, clients MUST query the HTTPS RR; for _dot._tcp and _doq._udp, clients MUST query the SVCB RR. Clients SHOULD NOT query SVCB for _doh._tcp or HTTPS for _dot._tcp, as these are not defined by <xref target="RFC9460"/>.</t>
      <t>When processing records for the <tt>_doq._udp</tt> service type, clients MUST verify that the SVCB <tt>alpn</tt> SvcParam includes the <tt>doq</tt> ALPN identifier. If <tt>doq</tt> is absent, clients MUST discard this service instance. The transport protocol (UDP for DoQ) is derived solely from the DNS‑SD service type label.</t>

<t>If a client receives a resource‑record type different than expected (e.g., receiving SVCB when querying HTTPS for <tt>_doh._tcp</tt>), the client MUST discard that entire service‑instance response.</t>

      <table>
        <name>SVCB Parameters for Encrypted DNS</name>
        <thead><tr><th>Key</th><th>Description</th><th>Example</th></tr></thead>
        <tbody>
        <tr><td>port</td><td>Port number (if different from SRV or default)</td><td>port=443</td></tr>
        <tr><td>alpn</td><td>ALPN protocol list (e.g., dot, doq, h2, h3)</td><td>alpn=h2,h3</td></tr>
        <tr><td>dohpath</td><td>DoH URI template (for DoH only)</td><td>dohpath=/dns-query{?dns}</td></tr>
        </tbody>
      </table>
      <t>For DoH services, when the 'alpn' SvcParam contains 'h2' or 'h3', the 'dohpath' SvcParam MUST be present. If present h2/h3 but dohpath is omitted, clients MUST discard this DoH service instance. The dohpath value MUST follow the URI‑template syntax defined in <xref target="RFC8484"/>.</t>

<t>When both SVCB/HTTPS and SRV records exist for the same service instance, clients MUST apply the following precedence rules:</t>
<ol>
  <li>Priority: use priority value from SVCB/HTTPS, ignore SRV priority.</li>
  <li>Target hostname: use target from SVCB/HTTPS, ignore SRV target.</li>
  <li>Port: if the SVCB port SvcParam is present, use that value; otherwise use SRV port value; if SRV port is absent use protocol‑specific default port.</li>
  <li>Weight: SVCB does not carry a weight field. When multiple SVCB/HTTPS records share equal priority, clients SHOULD perform random‑based load‑balancing among those records. SRV weight values MUST be ignored when SVCB/HTTPS records are available.</li>
</ol>
<t>Clients MUST first check for SVCB or HTTPS records; if absent, they MAY fall back to SRV+TXT.</t>

      <t>When the SVCB <tt>port</tt> SvcParam is omitted, clients MUST use the protocol‑specific default port: 853 for DoT, 443 for DoH, and 853 for DoQ.</t>
      <t>When both SVCB/HTTPS and TXT records are present, clients that support SVCB/HTTPS MUST use the SVCB/HTTPS record and MUST ignore the TXT record for configuration parameters. This includes ignoring the TXT‑record 'pri' key. Service publishers that advertise both record types MUST ensure that the TXT record parameters are consistent with the SVCB/HTTPS record. If the parameters are inconsistent, clients that support SVCB/HTTPS MUST use the SVCB/HTTPS record. Publishers SHOULD be aware that legacy clients may consume the inconsistent TXT values.</t>
      <t>Example SVCB record for a DoH service:</t>
<artwork>
<![CDATA[
_doh._tcp.local. 7200 IN HTTPS 1 dns-home.local. alpn=h2,h3 dohpath=/dns-query{?dns}
]]>
</artwork>

      <t>For DoT, use SVCB (not HTTPS) with appropriate ALPN (e.g., "dot").</t>
    </section>
</section>

<!-- 5. Discovery Process -->
<section title="Discovery Process">
<t>The discovery process follows the DNS-SD procedures defined in <xref target="RFC6763"/> and, for mDNS, the multicast DNS mechanisms defined in <xref target="RFC6762"/>. In particular, mDNS implementations SHOULD implement the Known‑Answer Suppression mechanism described in <xref target="RFC6762"/>, Section 7.1. For large answer sets that span multiple packets, the multi‑packet Known‑Answer Suppression mechanism defined in <xref target="RFC6762"/>, Section 7.2 SHOULD also be implemented.</t>

  <section title="Service Advertisement">
    <ol>
    <li>Encrypted DNS resolver periodically announces its services via mDNS.</li>
    <li>When an instance name conflict occurs (two hosts advertise the same &lt;Instance&gt; for the same service type), mDNS implementations SHOULD follow the conflict resolution procedures in <xref target="RFC6762"/>, Section 9.</li>
    </ol>
    <figure anchor="fig_advertisement" title="Example mDNS Advertisement with SVCB">
    <artwork align="left">
    <![CDATA[ 
   +--------------+                       +------------------+
   |   Resolver   |                       |      Network     |
   +--------------+                       +------------------+
           | PTR _services._dns-sd._udp -> _doh._tcp  |
           |----------------------------------------->|
           | HTTPS HomeDoH._doh._tcp  -> alpn=h2, path=... |
           |----------------------------------------->|
           | (optionally SRV for legacy clients)       |
    ]]>
    </artwork>
    </figure>

  <section title="TTL, Caching and Service Teardown">
  <t>For mDNS, TTL handling for individual resource records follows the requirements of <xref target="RFC6762"/>. This specification does not override the per-resource-record TTL rules defined in RFC 6762. Each resource record (SVCB/HTTPS, SRV, TXT) maintains its own independent TTL in the client cache.</t>
  <t>For mDNS operation, service publishers MUST send DNS-SD goodbye messages when an encrypted DNS service becomes unavailable, following <xref target="RFC6762" section="10.1"/>. Clients receiving a goodbye message (TTL=0) for a service instance MUST set the TTL of that cached resource record to 1 second, and remove the cached service-instance entry once that 1-second period expires.</t>
</section>

  </section>
  
<section title="Client Discovery">
  <ol>
    <li>
      <t>Client queries for service types:</t>
      <artwork type="ascii-art">
        <![CDATA[
        ; Query available encrypted DNS services
        _services._dns-sd._udp.local. IN PTR
        ]]>
      </artwork>
    </li>
    <li>
      <t>Query specific instances:</t>
      <artwork type="ascii-art">
        <![CDATA[
        ; Query DoH instances
        _doh._tcp.local. IN PTR
        ]]>
      </artwork>
    </li>
    <li>
      <t>Resolve selected service: first request SVCB/HTTPS, fallback to SRV+TXT.</t>
      <t>When multiple service instances are discovered, the client SHOULD select an instance based on the following priority order:</t>
      <ol>
        <li><t>If SVCB/HTTPS records are present, use the SVCB priority field (lower value is more preferred).</t></li>
        <li><t>If only SRV+TXT records are available, use the SRV priority and weight fields per <xref target="RFC2782"/>.</t></li>
        <li><t>If the TXT record contains a 'pri' key, it MAY be used as an additional weighting factor, but it MUST NOT override the SRV priority field. The SRV priority field per <xref target="RFC2782"/> is authoritative when SVCB/HTTPS records are absent.</t></li>
      </ol>
      <t>The following DNS queries illustrate the resolution process:</t>
      <artwork type="ascii-art">
        <![CDATA[
        ; Request SVCB/HTTPS record
        HomeDoH._doh._tcp.local. IN HTTPS
        ; If no HTTPS record, request SRV and TXT
        HomeDoH._doh._tcp.local. IN SRV
        HomeDoH._doh._tcp.local. IN TXT
        router.home.local. IN A
        router.home.local. IN AAAA
        ]]>
      </artwork>
    </li>
  </ol>
</section>

</section>

<!-- 6. Security Considerations -->
<section title="Security Considerations">
<t>This section discusses security and privacy considerations for encrypted DNS service discovery using DNS-SD and mDNS. Implementers should also consult <xref target="RFC8882"/> for a comprehensive analysis of DNS-SD security requirements.</t>

<section title="Spoofing Countermeasures">
      <ul>
        <li>
          <t>mDNS Response Validation: Clients SHOULD verify that mDNS responses are received from the link‑local scope and SHOULD discard responses from non‑local sources. However, this does not prevent spoofing attacks from other hosts on the same link; therefore, clients MUST rely on TLS certificate validation (see <xref target="cert-validation-models"/>) as the primary defense against spoofing.</t>
        </li>
        <li>
          <t>Rate Limiting: Implement mDNS response rate limiting per <xref target="RFC6762" section="11"/>.</t>
        </li>
        <li>
          <t>TLS Enforcement: Clients MUST validate server certificates against the ADN (from adn parameter) or the fingerprint (fp_sha256).</t>
        </li>
      </ul>
      <t>Instance count limits: To mitigate resource‑exhaustion denial‑of‑service attacks from malicious link‑local advertisers, clients SHOULD enforce a configurable upper bound on the total number of encrypted‑DNS service instances processed per link. Clients SHOULD deduplicate service instances with identical instance name, target and parameters. Unreachable or repeatedly invalid service instances SHOULD be temporarily suppressed.</t>
      <t>Automatic usage policy: Clients MUST NOT automatically use mDNS‑discovered encrypted DNS resolvers unless the attached network has been explicitly designated as trusted via local configuration or administrative policy. On untrusted networks, explicit user confirmation is REQUIRED before using any discovered resolver.</t>
      <t>In open or untrusted networks (e.g., public Wi‑Fi), malicious devices may advertise fake encrypted DNS services. To mitigate such risks, clients SHOULD adopt additional trust considerations:</t>
      <ul>
        <li>
          <t>Only auto‑discover on networks designated as trusted (e.g., home SSID, corporate network).</t>
        </li>
        <li>
          <t>Require user confirmation before using a discovered resolver.</t>
        </li>
        <li>
          <t>Allow administrators to pre‑configure trusted ADNs or fingerprints.</t>
        </li>
      </ul>
    </section>

    
    <section title="Certificate Validation Models" anchor="cert-validation-models">
         <table>
          <name>Certificate Validation Models</name>
          <thead><tr><th>Trust Model</th><th>Verification Method</th><th>Use Case</th></tr></thead>
          <tbody>
          <tr><td>Public PKI</td><td>Certificate subject‑alt‑name (or subject common‑name) matches ADN; certificate chain validates against public CA trust anchors</td><td>General‑purpose networks</td></tr>
          <tr><td>Fingerprint Pinning</td><td>fp_sha256 exact match</td><td>High-security/IoT devices</td></tr>
          <tr><td>Private PKI</td><td>Certificate subject‑alt‑name (or subject common‑name) matches ADN; certificate chain validates against private/custom trust anchors</td><td>Enterprise networks</td></tr>
          </tbody>
         </table>
         <t>In air‑gapped or offline networks where OCSP and CRL revocation resources are unreachable, clients MAY provide administrative configuration to disable certificate‑revocation checking. Revocation checking MUST remain enabled by default; this requirement applies to factory‑default settings and MAY be overridden via explicit administrative configuration. Disabling revocation checks increases exposure to compromised certificates and SHOULD be used with caution. Trust anchors used for these environments SHOULD be configured via out‑of‑band means.</t>

         <t>When both <tt>adn</tt> and <tt>fp_sha256</tt> are present in the TXT record of a service instance, clients MUST accept the service if at least one of the two validation checks succeeds. Implementations MAY provide an optional configuration mode requiring both checks to pass for enhanced security.</t>

         <t>In addition to the models above, clients MAY establish trust via out-of-band mechanisms, such as scanning a QR code that encodes the server's certificate fingerprint (fp_sha256) or authentication domain name (ADN). Such mechanisms can be used to bootstrap secure connections in environments where public PKI is unavailable or where higher assurance is required.</t>
    </section>
    
    <section title="Privacy Implications">
      <ul>
      <li>Metadata Leakage: mDNS queries reveal client interest in encrypted DNS.</li>
      <li>Mitigation: Clients SHOULD use service type enumeration (_services._dns‑sd._udp) before specific queries to reduce leakage.</li>
      <li>Broadcast of service metadata: Service advertisements transmitted over mDNS expose service instance metadata including ADN values and certificate fingerprints to any passive eavesdropper on the local link. No mitigation is defined for this exposure; operators should be aware of this disclosure property.</li>
      <li>Note that this specification defines only a resolver-discovery mechanism. It does <strong>not</strong> provide any privacy protection for DNS query contents sent to the discovered encrypted DNS resolvers.</li>
      
      </ul>
    </section>
    <section title="DoQ‑Specific Security Considerations">
    <t>When using DoQ resolvers discovered via DNS‑SD, implementers must follow all security requirements of <xref target="RFC9250"/>. Clients need to pay attention to QUIC connection‑migration risks when operating within multi‑homed or Wi‑Fi roaming environments.</t>
    </section>
  
</section>

<!-- 7. IANA Considerations -->
<section title="IANA Considerations" anchor="iana-considerations">
  <section title="New DNS-SD Service Types" anchor="iana-service-types">
    <t>
      This document requests IANA to register the following service names in the "Service Name and Transport Protocol Port Number Registry" [RFC6335] and the corresponding service types in the "DNS-SD Service Type Bindings" registry.
    </t>
    <table anchor="service-types-table">
      <name>New DNS-SD Service Types</name>
      <thead>
        <tr>
          <th align="left">Service Name</th>
          <th align="left">Transport Protocol</th>
          <th align="left">Reference</th>
          <th align="left">Assignment Policy</th>
        </tr>
      </thead>
      <tbody>
<tr><td align="left">dot</td><td align="left">tcp</td><td align="left"><xref target="THIS"/></td><td align="left">Standards Action</td></tr>
<tr><td align="left">doh</td><td align="left">tcp</td><td align="left"><xref target="THIS"/></td><td align="left">Standards Action</td></tr>
<tr><td align="left">doq</td><td align="left">udp</td><td align="left"><xref target="THIS"/></td><td align="left">Standards Action</td></tr>

      </tbody>
    </table>
    <t>The registration templates for these service types are as follows:</t>
    <t>Service Name: dot</t>
    <t>Transport Protocol(s): tcp</t>
    <t>Assignee: IESG &lt;iesg@ietf.org&gt;</t>
    <t>Contact: IESG &lt;iesg@ietf.org&gt;</t>
    <t>Description: DNS over TLS (DoT) Resolver Service Discovery</t>
    <t>Reference: <xref target="THIS"/></t>
    <t>Assignment Notes: This service type is used for discovering encrypted DNS services. The corresponding DNS-SD type is _dot._tcp.</t>
    
    <t>Service Name: doh</t>
    <t>Transport Protocol(s): tcp</t>
    <t>Assignee: IESG &lt;iesg@ietf.org&gt;</t>
    <t>Contact: IESG &lt;iesg@ietf.org&gt;</t>
    <t>Description: DNS over HTTPS (DoH) Resolver Service Discovery</t>
    <t>Reference: <xref target="THIS"/></t>
    <t>Assignment Notes: This service type is used for discovering encrypted DNS services. The corresponding DNS-SD type is _doh._tcp.</t>
    
    <t>Service Name: doq</t>
    <t>Transport Protocol(s): udp</t>
    <t>Assignee: IESG &lt;iesg@ietf.org&gt;</t>
    <t>Contact: IESG &lt;iesg@ietf.org&gt;</t>
    <t>Description: DNS over QUIC (DoQ) Resolver Service Discovery</t>
    <t>Reference: <xref target="THIS"/></t>
    <t>Assignment Notes: This service type is used for discovering encrypted DNS services. The corresponding DNS-SD type is _doq._udp.</t>
  </section>

  <section title="TXT Record Key Registry" anchor="iana-txt-keys">
    <t>
      This document requests IANA to create a new registry titled
      "Encrypted DNS Service Discovery (DNS-SD) TXT Record Keys" under the "DNS-Based Service Discovery (DNS-SD) Parameters"
      registry.
    </t>
    <t>
      The registration policy for this registry is "Specification Required" as defined in
      <xref target="RFC8126"/>.
    </t>
    <t>
      The initial contents of this registry are as follows:
    </t>
    <table anchor="txt-keys-table">
      <name>TXT Record Key Registry</name>
      <thead>
        <tr>
          <th align="left">Key</th>
          <th align="left">Meaning</th>
          <th align="left">Reference</th>
        </tr>
      </thead>
      <tbody>
        <tr><td align="left">path</td><td align="left">HTTP URI path template</td><td align="left"><xref target="THIS"/></td></tr>
        <tr><td align="left">alpn</td><td align="left">Supported ALPN protocols</td><td align="left"><xref target="THIS"/></td></tr>
        <tr><td align="left">pri</td><td align="left">Service selection preference</td><td align="left"><xref target="THIS"/></td></tr>
        <tr><td align="left">fp_sha256</td><td align="left">Certificate SHA-256 fingerprint</td><td align="left"><xref target="THIS"/></td></tr>
        <tr><td align="left">adn</td><td align="left">Authentication Domain Name (ADN)</td><td align="left"><xref target="THIS"/></td></tr>

      </tbody>
    </table>
    <t>New assignments require <xref target="RFC8126"/> Specification Required. Expert Review is RECOMMENDED but not required. This registry is primarily for compatibility; new implementations should use SVCB parameters as defined in <xref target="RFC9460"/>.</t>
  </section>
  
  <section title="SVCB Parameters Usage">
    <t>The SVCB parameters defined in <xref target="RFC9460"/> are used as described in Section 4.4. No new IANA registrations are required for SVCB keys; implementers should follow the registration procedures of RFC 9460 if new keys are needed.Note that the 'mandatory' SvcParamKey (key 0) as defined in <xref target="RFC9460"/>, Section 8, is not used by this specification. Clients that do not understand a SvcParam listed in 'mandatory' MUST treat the SVCB/HTTPS record as unusable for that service.</t>
  </section>
</section>

<!-- 8. Examples -->
<section title="Examples">
  <section title="Full DoT Service Advertisement with SVCB">
     <artwork>
       <![CDATA[
       ; Service type announcement
       _services._dns-sd._udp.local. PTR _dot._tcp.local

       ; SVCB record (preferred)
       _dot._tcp.local. 7200 IN SVCB 1 router.home.local. alpn=dot

       ; Legacy SRV and TXT for compatibility
       HomeDoT._dot._tcp.local. 120 IN SRV 0 5 853 router.home.local.
       HomeDoT._dot._tcp.local. 120 IN TXT "adn=dns.home.net" "fp_sha256=9F86D08188..."
       router.home.local. 120 IN A 192.168.1.1
       router.home.local. 120 IN AAAA fd12:3456::1
        ]]>
     </artwork>  
  </section>
  
  <section title="DoH Service with Custom Path using HTTPS RR">
    <artwork>
   <![CDATA[
OfficeDoH._doh._tcp.local. 7200 IN HTTPS 1 dnsgateway.corp.local. alpn=h2,h3 dohpath=/internal/dns{?dns}
   ]]>
    </artwork>  
  </section>
  
  <section title="Client Discovery Sequence with SVCB">
    <figure anchor="fig_Client" title="Client Discovery Sequence">
    <artwork>
    <![CDATA[ 
   +--------+     +----------+    +------------+    +---------+
   | Client |     | mDNS     |    | Encrypted  |    | Router  |
   |        |     | Responder|    | DNS Resolver|   |         |
   +--------+     +----------+    +------------+    +---------+
       | PTR Query (services) |          |                |
       |--------------------->|          |                |
       | PTR Response (instances)         |                |
       |<---------------------|          |                |
       | HTTPS Query (HomeDoH)            |                |
       |--------------------------------->|                |
       | HTTPS Response (alpn,dohpath)    |                |
       |<---------------------------------|                |
       | TLS Handshake (validate adn)                       |
       |--------------------------------------------------->|
       | Encrypted DNS Session Established                  |
       |<---------------------------------------------------|
    ]]>
    </artwork>
    </figure>
  </section>
</section>

</middle>

<back>
<references>
  <name>Normative References</name>
  <reference anchor="RFC6125" target="https://www.rfc-editor.org/info/rfc6125">
  <front>
    <title>Representation and Verification of Domain‑Based Application Service Identity in TLS</title>
    <author fullname="P. Saint‑Andre" initials="P." surname="Saint‑Andre"/>
    <author fullname="J. Hodges" initials="J." surname="Hodges"/>
    <date month="March" year="2011"/>
  </front>
  <seriesInfo name="RFC" value="6125"/>
</reference>
<reference anchor="RFC8882" target="https://www.rfc-editor.org/info/rfc8882">
  <front>
    <title>DNS-Based Service Discovery (DNS-SD) Security and Privacy Requirements</title>
    <author fullname="D. Cheshire" initials="D." surname="Cheshire"/>
    <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
    <date month="October" year="2020"/>
  </front>
  <seriesInfo name="RFC" value="8882"/>
</reference>
<reference anchor="RFC2782" target="https://www.rfc-editor.org/info/rfc2782">
  <front>
    <title>A DNS RR for specifying the location of services (DNS SRV)</title>
    <author fullname="A. Gulbrandsen" initials="A." surname="Gulbrandsen"/>
    <author fullname="P. Vixie" initials="P." surname="Vixie"/>
    <author fullname="L. Esibov" initials="L." surname="Esibov"/>
    <date month="February" year="2000"/>
  </front>
  <seriesInfo name="RFC" value="2782"/>
</reference>
    <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
    <front>
      <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
      <author initials="M." surname="Cotton" fullname="M. Cotton"><organization/></author>
      <author initials="B." surname="Leiba" fullname="B. Leiba"><organization/></author>
      <author initials="T." surname="Narten" fullname="T. Narten"><organization/></author>
      <date year="2017" month="June"/>
    </front>
    <seriesInfo name="BCP" value="26"/><seriesInfo name="RFC" value="8126"/><seriesInfo name="DOI" value="10.17487/RFC8126"/>
  </reference>
  <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
    <front>
      <title>Key words for use in RFCs to Indicate Requirement Levels</title>
      <author fullname="S. Bradner" initials="S." surname="Bradner"/>
      <date month="March" year="1997"/>
    </front>
    <seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="2119"/><seriesInfo name="DOI" value="10.17487/RFC2119"/>
  </reference>
  
  <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
    <front>
      <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
      <author fullname="B. Leiba" initials="B." surname="Leiba"/>
      <date month="May" year="2017"/>
    </front>
    <seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="8174"/><seriesInfo name="DOI" value="10.17487/RFC8174"/>
  </reference>
  
  <reference anchor="RFC6762" target="https://www.rfc-editor.org/info/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"/>
    </front>
    <seriesInfo name="RFC" value="6762"/><seriesInfo name="DOI" value="10.17487/RFC6762"/>
  </reference>
  
  <reference anchor="RFC6763" target="https://www.rfc-editor.org/info/rfc6763">
    <front>
      <title>DNS-Based Service Discovery</title>
      <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
      <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
      <date month="February" year="2013"/>
    </front>
    <seriesInfo name="RFC" value="6763"/><seriesInfo name="DOI" value="10.17487/RFC6763"/>
  </reference>
  
  <reference anchor="RFC7858" target="https://www.rfc-editor.org/info/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"/>
    </front>
    <seriesInfo name="RFC" value="7858"/><seriesInfo name="DOI" value="10.17487/RFC7858"/>
  </reference>
  
  <reference anchor="RFC8484" target="https://www.rfc-editor.org/info/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"/>
    </front>
    <seriesInfo name="RFC" value="8484"/><seriesInfo name="DOI" value="10.17487/RFC8484"/>
  </reference>
  
  <reference anchor="RFC9250" target="https://www.rfc-editor.org/info/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"/>
    </front>
    <seriesInfo name="RFC" value="9250"/><seriesInfo name="DOI" value="10.17487/RFC9250"/>
  </reference>
  
  <reference anchor="RFC9460" target="https://www.rfc-editor.org/info/rfc9460">
    <front>
      <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
      <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
      <author fullname="M. Bishop" initials="M." surname="Bishop"/>
      <author fullname="E. Nygren" initials="E." surname="Nygren"/>
      <date month="November" year="2023"/>
    </front>
    <seriesInfo name="RFC" value="9460"/><seriesInfo name="DOI" value="10.17487/RFC9460"/>
  </reference>
  
  <reference anchor="RFC6335" target="https://www.rfc-editor.org/info/rfc6335">
    <front>
      <title>Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Service Name and Transport Protocol Port Number Registry</title>
      <author fullname="M. Cotton" initials="M." surname="Cotton"/>
      <author fullname="L. Eggert" initials="L." surname="Eggert"/>
      <author fullname="J. Touch" initials="J." surname="Touch"/>
      <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
      <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
      <date month="August" year="2011"/>
    </front>
    <seriesInfo name="BCP" value="165"/><seriesInfo name="RFC" value="6335"/><seriesInfo name="DOI" value="10.17487/RFC6335"/>
  </reference>
</references>

<references>
  <name>Informative References</name>

<reference anchor="THIS">
  <front>
    <title>DNS-Based Service Discovery for Encrypted DNS Services</title>
    <author initials="D." surname="Liu" fullname="Dongjie Liu">
      <organization>Jinan University</organization>
    </author>
    <author initials="Z." surname="Yan" fullname="Zhiwei Yan">
      <organization>CNNIC</organization>
    </author>
    <author initials="G." surname="Geng" fullname="Guanggang Geng">
      <organization>Jinan University</organization>
    </author>
    <author initials="G." surname="Zeng" fullname="G. Zeng">
      <organization>Jinan University</organization>
    </author>
    <date day="13" month="September" year="2026"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-liu-add-dnssd-edns-03"/>
</reference>

<reference anchor="RFC9463" target="https://www.rfc-editor.org/info/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"/>
  </front>
  <seriesInfo name="RFC" value="9463"/><seriesInfo name="DOI" value="10.17487/RFC9463"/>
</reference>

<reference anchor="RFC9462" target="https://www.rfc-editor.org/info/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"/>
  </front>
  <seriesInfo name="RFC" value="9462"/>
</reference>
</references>

<section numbered="false" title="Acknowledgements" toc="default">
  <t>This work is supported by the National Key Research and Development Program of China&nbsp;(No.&nbsp;2023YFB3105700).</t>
  <t>The authors would like to thank Stuart Cheshire, Chris Box, Tommy Jensen, Michel François, Lorenzo, Tommy Pauly, Jim Reid, Petr Menšík, Amanda Baber (IANA), Éric Vyncke and the ADD working group chairs for their valuable feedback during IETF 124 and on the mailing list. We also appreciate comments from other participants in the ADD working group.</t>
</section>
</back>

</rfc>
