<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.12 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-add-svcb-dns-01" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.10.0 -->
  <front>
    <title abbrev="SVCB for DNS">Service Binding Mapping for DNS Servers</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-add-svcb-dns-01"/>
    <author initials="B." surname="Schwartz" fullname="Benjamin Schwartz">
      <organization>Google LLC</organization>
      <address>
        <email>bemasc@google.com</email>
      </address>
    </author>
    <date year="2021" month="October" day="21"/>
    <area>General</area>
    <workgroup>add</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>The SVCB DNS record type expresses a bound collection of endpoint metadata, for use when establishing a connection to a named service.  DNS itself can be such a service, when the server is identified by a domain name.  This document provides the SVCB mapping for named DNS servers, allowing them to indicate support for new transport protocols.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
  ADD Working Group mailing list (add@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/add/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/bemasc/svcb-dns"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>The SVCB record type <xref target="SVCB" format="default"/> provides clients with information about how to reach alternative endpoints for a service, which may have improved performance or privacy properties.  The service is identified by a "scheme" indicating the service type, a hostname, and optionally other information such as a port number.  A DNS server is often identified only by its IP address (e.g. in DHCP), but in some contexts it can also be identified by a hostname (e.g. "NS" records, manual resolver configuration) and sometimes also a non-default port number.</t>
      <t>Use of the SVCB record type requires a mapping document for each service type, indicating how a client for that service can interpret the contents of the SVCB SvcParams.  This document provides the mapping for the "dns" service type, allowing DNS servers to offer alternative endpoints and transports, including encrypted transports like DNS over TLS and DNS over HTTPS.</t>
    </section>
    <section anchor="conventions-and-definitions" numbered="true" toc="default">
      <name>Conventions and Definitions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/>
when, and only when, they appear in all capitals, as shown here.</t>
    </section>
    <section anchor="identities-and-names" numbered="true" toc="default">
      <name>Identities and Names</name>
      <t>SVCB record names (i.e. QNAMEs) are formed using Port-Prefix Naming (<xref section="2.3" sectionFormat="of" target="SVCB" format="default"/>), with a scheme of "dns".  For example, SVCB records for a DNS service identified as "<tt>dns1.example.com</tt>" would be queried at "<tt>_dns.dns1.example.com</tt>".</t>
      <t>In some use cases, the name used for retrieving these DNS records is different from the server identity used to authenticate the secure transport.  To distinguish them, we use the following terms:</t>
      <ul spacing="normal">
        <li>Binding authority - The service name (<xref section="1.4" sectionFormat="of" target="SVCB" format="default"/>) and optional port number used as input to Port-Prefix Naming.</li>
        <li>Authentication name - The name used for secure transport authentication.  It must be a DNS hostname or a literal IP address.  Unless otherwise specified, it is the service name from the binding authority.</li>
      </ul>
      <section anchor="special-case-non-default-ports" numbered="true" toc="default">
        <name>Special case: non-default ports</name>
        <t>Normally, a DNS service is identified by an IP address or a domain name.  When connecting to the service using unencrypted DNS over UDP or TCP, clients use the default port number for DNS (53).  However, in rare cases, a DNS service might be identified by both a name and a port number.  For example, the <tt>dns:</tt> URI scheme <xref target="DNSURI" format="default"/> optionally includes an authority, comprised of a host and a port number (with a default of 53).  DNS URIs normally omit the authority, or specify an IP address, but a hostname and non-default port number are allowed.</t>
        <t>When the binding authority specifies a non-default port number, Port-Prefix Naming places the port number in an additional a prefix on the name.  For example, if the binding authority is "<tt>dns1.example.com:9953</tt>", the client would query for SVCB records at "<tt>_9953._dns.dns1.example.com</tt>".  If two DNS services operating on different port numbers provide different behaviors, this arrangement allows them to preserve the distinction when specifying alternative endpoints.</t>
      </section>
    </section>
    <section anchor="applicable-existing-svcparamkeys" numbered="true" toc="default">
      <name>Applicable existing SvcParamKeys</name>
      <section anchor="alpn" numbered="true" toc="default">
        <name>alpn</name>
        <t>This key indicates the set of supported protocols (<xref section="6.1" sectionFormat="of" target="SVCB" format="default"/>).  There is no default protocol, so the <tt>no-default-alpn</tt> key does not apply, and the <tt>alpn</tt> key MUST be present.</t>
        <t>If the protocol set contains any HTTP versions (e.g. "h2", "h3"), then the record indicates support for DNS over HTTPS <xref target="DOH" format="default"/>, and the "dohpath" key MUST be present (<xref target="dohpath" format="default"/>).  All keys specified for use with the HTTPS record are also permissible, and apply to the resulting HTTP connection.</t>
        <t>If the protocol set contains protocols with different default ports, and no port key is specified, then protocols are contacted separately on their default ports.  Note that in this configuration, ALPN negotiation does not defend against cross-protocol downgrade attacks.</t>
      </section>
      <section anchor="port" numbered="true" toc="default">
        <name>port</name>
        <t>This key is used to indicate the target port for connection ((<xref section="6.2" sectionFormat="of" target="SVCB" format="default"/>)).  If omitted, the client SHALL use the default port for each transport protocol (853 for DNS over TLS <xref target="DOT" format="default"/>, 443 for DNS over HTTPS).</t>
        <t>This key is automatically mandatory if present.  (See <xref section="7" sectionFormat="of" target="SVCB" format="default"/> for the definition of "automatically mandatory".)</t>
      </section>
      <section anchor="other-applicable-svcparamkeys" numbered="true" toc="default">
        <name>Other applicable SvcParamKeys</name>
        <t>These SvcParamKeys from <xref target="SVCB" format="default"/> apply to the "dns" scheme without modification:</t>
        <ul spacing="normal">
          <li>ech</li>
          <li>ipv4hint</li>
          <li>ipv6hint</li>
        </ul>
        <t>Future SvcParamKeys may also be applicable.</t>
      </section>
    </section>
    <section anchor="new-svcparamkeys" numbered="true" toc="default">
      <name>New SvcParamKeys</name>
      <section anchor="dohpath" numbered="true" toc="default">
        <name>dohpath</name>
        <t>"dohpath" is a single-valued SvcParamKey whose value (both in presentation and wire format) MUST be a URI Template <xref target="RFC6570" format="default"/> encoded in UTF-8 <xref target="RFC3629" format="default"/>.  If the "alpn" SvcParamKey indicates support for HTTP, "dohpath" MUST be present, and clients MAY construct a DNS over HTTPS URI Template as follows:</t>
        <ol spacing="normal" type="1"><li>Let <tt>$HOST</tt> be the authentication name encoded as a "<tt>host</tt>" value (<xref section="3.2.2" sectionFormat="of" target="RFC3986" format="default"/>).</li>
          <li>Let <tt>$PORT</tt> be the port from the "port" key if present, otherwise 443. (The binding authority's port number MUST NOT be used.)</li>
          <li>Let <tt>$DOHPATH</tt> be the "dohpath" value, decoded from UTF-8.</li>
          <li>The DNS over HTTPS URI Template is <tt>"https://$HOST:$PORT$DOHPATH"</tt>.</li>
        </ol>
        <t>The "dohpath" value MUST be chosen such that the resulting URI Template is valid for use with DNS over HTTPS.  For example, DNS over HTTPS servers are required to support requests using GET and POST methods.  The GET method relies on the "dns" URI Template parameter, and the POST method does not use it.  Therefore, the URI Template is required to make use of a "dns" variable, and result in a valid URI whether or not "dns" is defined.</t>
        <t>Clients SHOULD NOT query for any "HTTPS" RRs when using the constructed URI Template.  Instead, the SvcParams and address records associated with this SVCB record SHOULD be used for the HTTPS connection, with the same semantics as an HTTPS RR.  However, for consistency, service operators SHOULD publish an equivalent HTTPS RR, especially if clients might learn this URI Template through a different channel.</t>
      </section>
    </section>
    <section anchor="limitations" numbered="true" toc="default">
      <name>Limitations</name>
      <t>This document is concerned exclusively with the DNS transport, and does not affect or inform the construction or interpretation of DNS messages.  For example, nothing in this document indicates whether the service is intended for use as a recursive or authoritative DNS server.  Clients must know the intended use in their context.</t>
    </section>
    <section anchor="examples" numbered="true" toc="default">
      <name>Examples</name>
      <ul spacing="normal">
        <li>
          <t>A resolver at "<tt>simple.example</tt>" that supports DNS over TLS on port 853 (implicitly, as this is its default port):  </t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
_dns.simple.example. 7200 IN SVCB 1 simple.example. alpn=dot
]]></artwork>
        </li>
        <li>
          <t>A resolver at "<tt>doh.example</tt>" that supports only DNS over HTTPS (DNS over TLS is not supported):  </t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
_dns.doh.example. 7200 IN SVCB 1 doh.example. (
      alpn=h2 dohpath=/dns-query{?dns} )
]]></artwork>
        </li>
        <li>
          <t>A resolver at "<tt>resolver.example</tt>" that supports:  </t>
          <ul spacing="normal">
            <li>DNS over TLS on "<tt>resolver.example</tt>" ports 853 (implicit in record 1) and 8530 (explicit in record 2), with "<tt>resolver.example</tt>" as the Authentication Domain Name,</li>
            <li>DNS over HTTPS at <tt>https://resolver.example/dns-query{?dns}</tt> (record 1), and</li>
            <li>
              <t>an experimental protocol on <tt>fooexp.resolver.example:5353</tt> (record 3):      </t>
              <artwork name="" type="" align="left" alt=""><![CDATA[
_dns.resolver.example.  7200 IN SVCB 1 resolver.example. (
    alpn=dot,h2,h3 dohpath=/dns-query{?dns} )
_dns.resolver.example.  7200 IN SVCB 2 resolver.example. alpn=dot port=8530
_dns.resolver.example.  7200 IN SVCB 3 fooexp port=5353 alpn=foo foo-info=...
]]></artwork>
            </li>
          </ul>
        </li>
        <li>
          <t>A nameserver at "<tt>ns.example</tt>" whose service configuration is published on a different domain:  </t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
_dns.ns.example. 7200 IN SVCB 0 _dns.ns.nic.example.
]]></artwork>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <section anchor="adversary-on-the-query-path" numbered="true" toc="default">
        <name>Adversary on the query path</name>
        <t>This section considers an adversary who can add or remove responses to the SVCB query.</t>
        <t>During secure transport establishment, clients MUST authenticate the server to its authentication name, which is not influenced by the SVCB record contents.  Accordingly, this draft does not mandate the use of DNSSEC.  This draft also does not specify how clients authenticate the name (e.g. selection of roots of trust), which might vary according to the context.</t>
        <t>Although this adversary cannot alter the authentication name of the service, it does have control of the port number and "dohpath" value.  As a result, the adversary can direct DNS queries for $HOSTNAME to any port on $HOSTNAME, and any path on "https://$HOSTNAME", even if $HOSTNAME is not actually a DNS server.  If the DNS client uses shared TLS or HTTP state, the client could be correctly authenticated (e.g. using a TLS client certificate or HTTP cookie).</t>
        <t>This behavior creates a number of possible attacks for certain server configurations.  For example, if "https://$HOSTNAME/upload" accepts any POST request as a public file upload, the adversary could forge a SVCB record containing <tt>dohpath=/upload</tt>.  This would cause the client to upload and publish every query, resulting in unexpected storage costs for the server and privacy loss for the client.</t>
        <t>To mitigate this attack, a client of this SVCB mapping MUST NOT provide client authentication for DNS queries, except to servers that it specifically knows are not vulnerable to such attacks, and a DoH service operator MUST ensure that all unauthenticated DoH requests to its origin maintain the DoH service's privacy guarantees, regardless of the path.  Also, if an alternative service endpoint sends an invalid response to a DNS query, the client SHOULD NOT send more queries to that endpoint.</t>
      </section>
      <section anchor="adversary-on-the-transport-path" numbered="true" toc="default">
        <name>Adversary on the transport path</name>
        <t>This section considers an adversary who can modify network traffic between the client and the alternative service (identified by the TargetName).</t>
        <t>For a SVCB-reliant client (<xref target="SVCB" format="default"/> Section 3), this adversary can only cause a denial of service.  However, because DNS is unencrypted by default, this adversary can execute a downgrade attack against SVCB-optional clients.  Accordingly, when use of this specification is optional, clients SHOULD switch to SVCB-reliant behavior if SVCB resolution succeeds.  Specifications making using of this mapping MAY adjust this fallback behavior to suit their requirements.</t>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>Per <xref target="SVCB" format="default"/> IANA would be directed to add the following entry to the SVCB Service Parameters registry.</t>
      <table align="center">
        <thead>
          <tr>
            <th align="left">Number</th>
            <th align="left">Name</th>
            <th align="left">Meaning</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">7</td>
            <td align="left">dohpath</td>
            <td align="left">DNS over HTTPS path template</td>
            <td align="left">(This document)</td>
          </tr>
        </tbody>
      </table>
      <t>Per <xref target="Attrleaf" format="default"/>, IANA would be directed to add the following entry to the DNS Underscore Global Scoped Entry Registry:</t>
      <table align="center">
        <thead>
          <tr>
            <th align="left">RR TYPE</th>
            <th align="left">_NODE NAME</th>
            <th align="left">Meaning</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">SVCB</td>
            <td align="left">_dns</td>
            <td align="left">DNS SVCB info</td>
            <td align="left">(This document)</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="SVCB">
          <front>
            <title>Service binding and parameter specification via the DNS (DNS SVCB and HTTPS RRs)</title>
            <author fullname="Ben Schwartz">
              <organization>Google</organization>
            </author>
            <author fullname="Mike Bishop">
              <organization>Akamai Technologies</organization>
            </author>
            <author fullname="Erik Nygren">
              <organization>Akamai Technologies</organization>
            </author>
            <date day="12" month="October" year="2021"/>
            <abstract>
              <t>   This document specifies the "SVCB" and "HTTPS" DNS resource record
   (RR) types to facilitate the lookup of information needed to make
   connections to network services, such as for HTTP origins.  SVCB
   records allow a service to be provided from multiple alternative
   endpoints, each with associated parameters (such as transport
   protocol configuration and keys for encrypting the TLS ClientHello).
   They also enable aliasing of apex domains, which is not possible with
   CNAME.  The HTTPS RR is a variation of SVCB for use with HTTP [HTTP].
   By providing more information to the client before it attempts to
   establish a connection, these records offer potential benefits to
   both performance and privacy.

   TO BE REMOVED: This document is being collaborated on in Github at:
   https://github.com/MikeBishop/dns-alt-svc
   (https://github.com/MikeBishop/dns-alt-svc).  The most recent working
   version of the document, open issues, etc. should all be available
   there.  The authors (gratefully) accept pull requests.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-svcb-https-08"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="DOH">
          <front>
            <title>DNS Queries over HTTPS (DoH)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <author fullname="P. McManus" initials="P." surname="McManus">
              <organization/>
            </author>
            <date month="October" year="2018"/>
            <abstract>
              <t>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="DOT">
          <front>
            <title>Specification for DNS over Transport Layer Security (TLS)</title>
            <author fullname="Z. Hu" initials="Z." surname="Hu">
              <organization/>
            </author>
            <author fullname="L. Zhu" initials="L." surname="Zhu">
              <organization/>
            </author>
            <author fullname="J. Heidemann" initials="J." surname="Heidemann">
              <organization/>
            </author>
            <author fullname="A. Mankin" initials="A." surname="Mankin">
              <organization/>
            </author>
            <author fullname="D. Wessels" initials="D." surname="Wessels">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <date month="May" year="2016"/>
            <abstract>
              <t>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>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="RFC6570">
          <front>
            <title>URI Template</title>
            <author fullname="J. Gregorio" initials="J." surname="Gregorio">
              <organization/>
            </author>
            <author fullname="R. Fielding" initials="R." surname="Fielding">
              <organization/>
            </author>
            <author fullname="M. Hadley" initials="M." surname="Hadley">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="D. Orchard" initials="D." surname="Orchard">
              <organization/>
            </author>
            <date month="March" year="2012"/>
            <abstract>
              <t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion. This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6570"/>
          <seriesInfo name="DOI" value="10.17487/RFC6570"/>
        </reference>
        <reference anchor="RFC3629">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau">
              <organization/>
            </author>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems.  The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo.  UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values.  This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee">
              <organization/>
            </author>
            <author fullname="R. Fielding" initials="R." surname="Fielding">
              <organization/>
            </author>
            <author fullname="L. Masinter" initials="L." surname="Masinter">
              <organization/>
            </author>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="DNSURI">
          <front>
            <title>Domain Name System Uniform Resource Identifiers</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson">
              <organization/>
            </author>
            <date month="May" year="2006"/>
            <abstract>
              <t>This document defines Uniform Resource Identifiers for Domain Name System resources.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4501"/>
          <seriesInfo name="DOI" value="10.17487/RFC4501"/>
        </reference>
        <reference anchor="Attrleaf">
          <front>
            <title>Scoped Interpretation of DNS Resource Records through "Underscored" Naming of Attribute Leaves</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker">
              <organization/>
            </author>
            <date month="March" year="2019"/>
            <abstract>
              <t>Formally, any DNS Resource Record (RR) may occur under any domain name.  However, some services use an operational convention for defining specific interpretations of an RRset by locating the records in a DNS branch under the parent domain to which the RRset actually applies.  The top of this subordinate branch is defined by a naming convention that uses a reserved node name, which begins with the underscore character (e.g., "_name").  The underscored naming construct defines a semantic scope for DNS record types that are associated with the parent domain above the underscored branch.  This specification explores the nature of this DNS usage and defines the "Underscored and Globally Scoped DNS Node Names" registry with IANA. The purpose of this registry is to avoid collisions resulting from the use of the same underscored name for different services.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="222"/>
          <seriesInfo name="RFC" value="8552"/>
          <seriesInfo name="DOI" value="10.17487/RFC8552"/>
        </reference>
      </references>
    </references>
    <section anchor="mapping-summary" numbered="true" toc="default">
      <name>Mapping Summary</name>
      <t>This table serves as a non-normative summary of the DNS mapping for SVCB.</t>
      <table align="center">
        <thead>
          <tr>
            <th align="left"> </th>
            <th align="left"> </th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <strong>Mapped scheme</strong></td>
            <td align="left">"dns"</td>
          </tr>
          <tr>
            <td align="left">
              <strong>RR type</strong></td>
            <td align="left">SVCB (64)</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Name prefix</strong></td>
            <td align="left">
              <tt>_dns</tt> for port 53, else <tt>_$PORT._dns</tt></td>
          </tr>
          <tr>
            <td align="left">
              <strong>Required keys</strong></td>
            <td align="left">
              <tt>alpn</tt></td>
          </tr>
          <tr>
            <td align="left">
              <strong>Automatically Mandatory Keys</strong></td>
            <td align="left">
              <tt>port</tt></td>
          </tr>
          <tr>
            <td align="left">
              <strong>Special behaviors</strong></td>
            <td align="left">Supports all HTTPS RR SvcParamKeys</td>
          </tr>
          <tr>
            <td align="left"> </td>
            <td align="left">Overrides the HTTPS RR for DoH</td>
          </tr>
          <tr>
            <td align="left"> </td>
            <td align="left">Default port is per-transport</td>
          </tr>
          <tr>
            <td align="left"> </td>
            <td align="left">No encrypted -&gt; cleartext fallback</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section numbered="false" anchor="acknowledgments" toc="default">
      <name>Acknowledgments</name>
      <t>Thanks to the many reviewers and contributors, including Daniel Migault, Paul Hoffman, Matt Norhoff, Peter van Dijk, Eric Rescorla, and Andreas Schulze.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
lQMyAAA=

-->

</rfc>
