<?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  -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-dprive-unilateral-probing-00" category="info" obsoletes="" updates="" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.3 -->
  <front>
    <title abbrev="Unilateral Encrypted Authoritative DNS">Unilateral Opportunistic Deployment of Encrypted Recursive-to-Authoritative DNS</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-dprive-unilateral-probing-00"/>
    <author initials="D.K." surname="Gillmor" fullname="Daniel Kahn Gillmor">
      <organization abbrev="ACLU">American Civil Liberties Union</organization>
      <address>
        <postal>
          <street>125 Broad St.</street>
          <city>New York, NY</city>
          <code>10004</code>
          <country>USA</country>
        </postal>
        <email>dkg@fifthhorseman.net</email>
      </address>
    </author>
    <author initials="J." surname="Salazar" fullname="Joey Salazar">
      <organization/>
      <address>
        <postal>
          <city>Alajuela</city>
          <code>20201</code>
          <country>CR</country>
        </postal>
        <email>joeygsal@gmail.com</email>
      </address>
    </author>
    <date year="2022" month="March" day="07"/>
    <area>int</area>
    <workgroup>dprive</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This draft sets out steps that DNS servers (recursive resolvers and authoritative servers) can take unilaterally (without any coordination with other peers) to defend DNS query privacy against a passive network monitor.
The steps in this draft can be defeated by an active attacker, but should be simpler and less risky to deploy than more powerful defenses.
The draft also introduces (but does not try to specify) the semantics of signalling that would permit defense against an active attacker.</t>
      <t>The goal of this draft is to simplify and speed deployment of opportunistic encrypted transport in the recursive-to-authoritative hop of the DNS ecosystem.
With wider easy deployment of the underlying transport on an opportunistic basis, we hope to facilitate the future specification of stronger cryptographic protections against more powerful attacks.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <section anchor="requirements-language" numbered="true" toc="default">
        <name>Requirements Language</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"/> and <xref target="RFC8174" format="default"/>) when, and only when, they appear in all capitals, as shown here.</t>
      </section>
      <section anchor="terminology" numbered="true" toc="default">
        <name>Terminology</name>
        <ul spacing="normal">
          <li>"unilateral" means capable of opportunistic probing deployment without external coordination with any of the other parties</li>
          <li>Do53 refers to traditional cleartext DNS over port 53 (<xref target="RFC1035" format="default"/>)</li>
          <li>DoQ refers to DNS-over-QUIC (<xref target="I-D.ietf-dprive-dnsoquic" format="default"/>)</li>
          <li>DoT refers to DNS-over-TLS (<xref target="RFC7858" format="default"/>)</li>
          <li>DoH refers to DNS-over-HTTPS (<xref target="RFC8484" format="default"/>)</li>
          <li>Encrypted transports refers to DoQ, DoT, and DoH collectively</li>
        </ul>
      </section>
    </section>
    <section anchor="priorities" numbered="true" toc="default">
      <name>Priorities</name>
      <t>This document aims to provide guidance to implementers who want to simply enable protection against passive network observers.</t>
      <t>In particular, it focuses on mechanisms that can be adopted unilaterally by recursive resolvers and authoritative servers, without any explicit coordination with the other parties.
This guidance provides opportunistic security (see <xref target="RFC7435" format="default"/>) -- encrypting things that would otherwise be in the clear, without interfering with or weakening stronger forms of security.</t>
      <section anchor="minimizing-negative-impacts" numbered="true" toc="default">
        <name>Minimizing Negative Impacts</name>
        <t>It also aims to minimize potentially negative impacts caused by the probing of encrypted transports -- for the systems that adopt these guidelines, for the parties that they communicate with in the "second hump" of the DNS camel, and for uninvolved third parties.
The negative impacts that we specifically try to minimize are:</t>
        <ul spacing="normal">
          <li>excessive bandwidth use</li>
          <li>excessive computational resources (CPU and memory in particular)</li>
          <li>amplification attacks (where DNS resolution infrastructure is wielded as part of a DoS attack)</li>
        </ul>
      </section>
      <section anchor="protocol-choices" numbered="true" toc="default">
        <name>Protocol Choices</name>
        <t>While this document focuses specifically on strategies used by DNS servers, it does not go into detail on the specific protocols used, as those protocols --- in particular, DoT and DoQ --- are described in other documents.</t>
        <t>This document does not pursue the use of DoH in this context, because a DoH client needs to know the path part of a DoH endpoint URL, and there are currently no mechanisms for a DNS resolver to predict the path on its own, in an opportunistic or unilateral fashion, without incurring in excessive use of resources.
For instance, a recursive resolver in theory could guess the full path to a queried IP address by trying all the URL paths that the client has in records and see if one of those works, but even though it can be expected that this would work 99% of the time with fewer than 100 probes, this technique would likely incur in excessive resource consumption potentially leading to vulnerabilities and amplification attacks.
The authors of this draft particularly welcome ideas and contributions from the community that lead to a suitable mechanism for unilaterally probing for DoH-capable authoritative servers, for later consideration in this or other drafts.</t>
      </section>
    </section>
    <section anchor="authoritative-guidance" numbered="true" toc="default">
      <name>Guidance for Authoritative Servers</name>
      <t>An authoritative server SHOULD implement and deploy  DNS-over-TLS (DoT) on TCP port 853.</t>
      <t>An authoritative server MAY implement and deploy DNS-over-QUIC (DoQ) on UDP port 853.</t>
      <section anchor="authoritative-pools" numbered="true" toc="default">
        <name>Pooled Authoritative Servers Behind a Single IP Address</name>
        <t>Some authoritative DNS servers are structured as a pool of authoritatives standing behind a load-balancer that runs on a single IP address, forwarding queries to members of the pool.</t>
        <t>In such a deployment, individual members of the pool typically get updated independently from each other.</t>
        <t>A recursive resolver following the guidance in <xref target="recursive-guidance" format="default"/> that interacts with such a pool likely does not know that it is a pool.
If some members of the pool are updated to follow this guidance while others are not, the recursive client might see the pool as a single authoritative server that sometimes offers and sometimes refuses encrypted transport.</t>
        <t>To avoid incurring additional minor timeouts for such a recursive resolver, the pool operator SHOULD either:</t>
        <ul spacing="normal">
          <li>ensure that all members of the pool enable the same encrypted transport(s) within the span of a few seconds, or</li>
          <li>ensure that the load balancer maps client requests to pool members based on client IP addresses.</li>
        </ul>
        <t>Similar concerns apply to authoritative servers responding from an anycast IP address.
As long as the pool of servers is in a heterogenous state, any flapping route that switches a given client IP address to a different responder risks incurring an additional timeout.
Frequent changes of routing for anycast listening IP addresses are also likely to cause problems for TLS, TCP, or QUIC connection state as well, so stable routes are important to ensure that the service remains available and responsive.</t>
      </section>
      <section anchor="authentication" numbered="true" toc="default">
        <name>Authentication</name>
        <t>For unilateral deployment, an authoritative server does not need to offer any particular form of authentication.</t>
        <t>The simplest deployment would simply provide a self-issued, regularly-updated X.509 certificate.
This mechanism is supported by many TLS and QUIC clients, and will be acceptable for any opportunistic connection.</t>
        <t>Possible alternate forms of server authentication include:</t>
        <ul spacing="normal">
          <li>an X.509 Certificate issued by a widely-known certification authority associated with the common NS names used for this authoritative server</li>
          <li>DANE authentication (potentially including the TLS handshake)</li>
        </ul>
      </section>
      <section anchor="authoritative-sni" numbered="true" toc="default">
        <name>Server Name Indication</name>
        <t>An authoritative DNS server that wants to handle unilateral queries MAY rely on Server Name Indication (SNI) to select alternate server credentials.
However, such a server MUST NOT serve resource records that differ based on SNI (or on the lack of SNI) provided by the client, as a probing recursive resolver that offers SNI might or might not have used the right server name to get the records it's looking for.</t>
      </section>
      <section anchor="authoritative-resource-exhaustion" numbered="true" toc="default">
        <name>Resource Exhaustion</name>
        <t>A well-behaved recursive resolver may keep an encrypted connection open to an authoritative server, to amortize the costs of connection setup for both parties.</t>
        <t>However, some authoritative servers may have insufficient resources available to keep many connections open concurrently.</t>
        <t>To keep resources under control, authoritative servers should proactively manage their encrypted connections.
Section 6.5 of <xref target="I-D.ietf-dprive-dnsoquic" format="default"/> ("Connection Handling") offers useful guidance for servers managing DoQ connections.
Section 3.4 of <xref target="RFC7858" format="default"/> offers useful guidance for servers managing DoT connections.</t>
        <t>An authoritative server facing unforseen resource exhaustion SHOULD cleanly close open connections from recursive resolvers based on the authoritative's preferred prioritization.</t>
        <t>In the case of unanticipated resource exhaustion, a reasonable prioritization scheme would be to close connections in this order, until resources are back in control:</t>
        <ul spacing="normal">
          <li>connections with no outstanding queries, ordered by idle time (longest idle time gets closed first)</li>
          <li>connections with outstanding queries, ordered by age of outstanding query (oldest outstanding query gets closed first)</li>
        </ul>
        <t>When resources are especially tight, the authoritative server may also decline to accept new connections over encrypted transport.</t>
      </section>
    </section>
    <section anchor="recursive-guidance" numbered="true" toc="default">
      <name>Guidance for recursive resolvers</name>
      <t>This section outlines a probing policy suitable for unilateral adoption by any recursive resolver.
Following this policy should not result in failed resolutions or significant delay.</t>
      <section anchor="overall-recursive-resolver-settings" numbered="true" toc="default">
        <name>Overall recursive resolver Settings</name>
        <t>A recursive resolver implementing this draft must set system-wide values for some default parameters.
These parameters may be set independently for each supported encrypted transport, though a simple implementation may keep the parameters constant across encrypted transports.</t>
        <table align="center">
          <name>recursive resolver system parameters per encrypted transport</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Suggested Default</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>persistence</tt></td>
              <td align="left">How long should the recursive resolver remember successful encrypted transport connections?</td>
              <td align="left">3 days (259200 seconds)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>damping</tt></td>
              <td align="left">How long should the recursive resolver remember unsuccessful encrypted transport connections?</td>
              <td align="left">1 day (86400 seconds)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>timeout</tt></td>
              <td align="left">How long should the recursive resolver wait for an initiated encrypted connection to complete?</td>
              <td align="left">4 seconds</td>
            </tr>
          </tbody>
        </table>
        <t>This document uses the notation <tt>E-foo</tt> to refer to the <tt>foo</tt> parameter for the encrypted transport <tt>E</tt>.</t>
        <t>For example <tt>DoT-persistence</tt> would indicate the length of time that the recursive resolver will remember that an authoritative server had a successful connection over <tt>DoT</tt>.</t>
        <t>This document also assumes that the resolver maintains a list of outstanding cleartext queries destined for the authoritative resolver's IP address <tt>X</tt>.
This list is referred to as <tt>Do53-queries[X]</tt>.
This document does not attempt to describe the specific operation of sending and receiving cleartext DNS queries (Do53) for a recursive resolver.
Instead it describes a "bolt-on" mechanism that extends the recursive resolver's operation on a few simple hooks into the recursive resolver's existing handling of Do53.</t>
        <t>Implementers or deployers of DNS recursive resolvers that follow the strategies in this document are encouraged to report their preferred values of these parameters.</t>
      </section>
      <section anchor="recursive-resolver-requirements" numbered="true" toc="default">
        <name>Recursive Resolver Requirements</name>
        <t>To follow this guidance, a recursive resolver MUST implement at least one of either DoT or DoQ in its capacity as a client of authoritative nameservers.</t>
        <t>A recursive resolver SHOULD implement the client side of DNS-over-TLS (DoT).
A recursive resolver MAY implement the client side of DNS-over-QUIC (DoQ).</t>
        <t>DoT queries from the recursive resolver MUST target TCP port 853, with an ALPN of <tt>dot</tt>.
DoQ queries from the recursive resolver MUST target UDP port 853, with an ALPN of <tt>doq</tt>.</t>
        <t>While this document focuses on the recursive-to-authoritative hop, a recursive resolver implementing these strategies SHOULD also accept queries from its clients over some encrypted transport (current common transports are DoH or DoT).</t>
      </section>
      <section anchor="authoritative-server-encrypted-transport-connection-state" numbered="true" toc="default">
        <name>Authoritative Server Encrypted Transport Connection State</name>
        <t>The recursive resolver SHOULD keep a record of the state for each authoritative server it contacts, indexed by the IP address of the authoritative server and the encrypted transports supported by the recursive resolver.</t>
        <t>Each record should contain the following fields for each supported encrypted transport, each of which would initially be <tt>null</tt>:</t>
        <table align="center">
          <name>recursive resolver state per authoritative IP, per encrypted transport</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Retain Across Reset</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>session</tt></td>
              <td align="left">The associated state of any existing, established session (the structure of this value is dependent on the encrypted transport implementation).  If <tt>session</tt> is not <tt>null</tt>, it may be in one of two states: <tt>pending</tt> or <tt>established</tt></td>
              <td align="left">N</td>
            </tr>
            <tr>
              <td align="left">
                <tt>initiated</tt></td>
              <td align="left">Timestamp of most recent connection attempt</td>
              <td align="left">Y</td>
            </tr>
            <tr>
              <td align="left">
                <tt>completed</tt></td>
              <td align="left">Timestamp of most recent completed handshake</td>
              <td align="left">Y</td>
            </tr>
            <tr>
              <td align="left">
                <tt>status</tt></td>
              <td align="left">Enumerated value of <tt>success</tt> or <tt>fail</tt> or <tt>timeout</tt>, associated with the <tt>completed</tt> handshake</td>
              <td align="left">Y</td>
            </tr>
            <tr>
              <td align="left">
                <tt>resumptions</tt></td>
              <td align="left">A stack of resumption tickets (and associated parameters) that could be used to resume a prior successful connection</td>
              <td align="left">Y</td>
            </tr>
            <tr>
              <td align="left">
                <tt>queries</tt></td>
              <td align="left">A queue of queries intended for this authoritative server, each of which has additional status <tt>early</tt>, <tt>unsent</tt>, or <tt>sent</tt></td>
              <td align="left">N</td>
            </tr>
            <tr>
              <td align="left">
                <tt>last-activity</tt></td>
              <td align="left">A timestamp of the most recent activity on the connection</td>
              <td align="left">N</td>
            </tr>
          </tbody>
        </table>
        <t>Note that the <tt>session</tt> fields in aggregate constitute a pool of open connections to different servers.</t>
        <t>With the exception of the <tt>session</tt>, <tt>queries</tt>, and <tt>last-activity</tt> fields, this cache information should be kept across restart of the server unless explicitly cleared by administrative action.</t>
        <t>This document uses the notation <tt>E-foo[X]</tt> to indicate the value of field <tt>foo</tt> for encrypted transport <tt>E</tt> to IP address <tt>X</tt>.</t>
        <t>For example, <tt>DoT-initiated[192.0.2.4]</tt> represents the timestamp when the most recent DoT connection packet was sent to IP address 192.0.2.4.</t>
        <section anchor="resolver-binding" numbered="true" toc="default">
          <name>Separate State for Each of the Recursive Resolver's Own IP Addresses</name>
          <t>Note that the recursive resolver should record this per-authoritative-IP state for each IP address it uses as it sends its queries.
For example, if a recursive resolver can send a packet to authoritative servers from IP addresses <tt>192.0.2.100</tt> and <tt>192.0.2.200</tt>, it should keep two distinct sets of per-authoritative-IP state, one for each source address it uses.
Keeping these state tables distinct for each source address makes it possible for a pooled authoritative server behind a load balancer to do a partial rollout while minimizing accidental timeouts (see <xref target="authoritative-pools" format="default"/>).</t>
        </section>
      </section>
      <section anchor="maintaining-authoritative-state-by-ip-address" numbered="true" toc="default">
        <name>Maintaining Authoritative State by IP Address</name>
        <t>In designing a probing strategy, the recursive resolver could record its knowledge about any given authoritative server with different strategies, including at least:</t>
        <ul spacing="normal">
          <li>the authoritative server's IP address,</li>
          <li>the authoritative server's name (the NS record used), or</li>
          <li>the zone that contains the record being looked up.</li>
        </ul>
        <t>This draft encourages the first strategy, to minimize timeouts or accidental delays.</t>
        <t>A timeout (accidental delay) is most likely to happen when the recursive client believes that the authoritative server offers encrypted transport, but the actual server reached declines encrypted transport (or worse, filters the incoming traffic and does not even respond with an ICMP port closed message).</t>
        <t>By associating state with the IP address, the recursive client is most able to avoid reaching a heterogenous deployment.</t>
        <t>For example, consider an authoritative server named <tt>ns0.example.com</tt> that is served by two installations (with two <tt>A</tt> records), one at <tt>192.0.2.7</tt> that follows this guidance, and one at <tt>192.0.2.8</tt> that is a legacy (cleartext port 53-only) deployment.
A recursive client who associates state with the <tt>NS</tt> name and reaches <tt>.7</tt> first will "learn" that <tt>ns0.example.com</tt> supports encrypted transport.
A subsequent query over encrypted transport dispatched to <tt>.8</tt> would fail, potentially delaying the response.</t>
        <t>By associating the state with the authoritative IP address, the client can minimize the number of accidental delays introduced (see also <xref target="resolver-binding" format="default"/> and <xref target="authoritative-pools" format="default"/>).</t>
      </section>
      <section anchor="probing-policy" numbered="true" toc="default">
        <name>Probing Policy</name>
        <t>When a recursive resolver discovers the need for an authoritative lookup to an authoritative DNS server using IP address <tt>X</tt>, it retrieves the records associated with <tt>X</tt> from its cache.</t>
        <t>The following sections presume that the time of the discovery of the need for lookup is time <tt>T0</tt>.</t>
        <t>If any of the records discussed here are absent, they are treated as <tt>null</tt>.</t>
        <t>The recursive resolver must know to decide whether to initially send a query over Do53, or over any of the supported encrypted transports (DoT or DoQ).</t>
        <t>Note that a resolver might initiate this query via any or all of the known transports.
When multiple queries are sent, the initial packets for each connection can be sent concurrently, similar to "Happy Eyeballs" (<xref target="RFC8305" format="default"/>).
However, unlike Happy Eyeballs, when one transport succeeds, the other connections do not need to be terminated, but can instead be continued to establish whether the IP address <tt>X</tt> is capable of corresponding on the relevant transport.</t>
        <section anchor="sending-a-query-over-do53" numbered="true" toc="default">
          <name>Sending a query over Do53</name>
          <t>For any of the supported encrypted transports <tt>E</tt>, if either of the following holds true, the resolver SHOULD NOT send a query to <tt>X</tt> over Do53:</t>
          <ul spacing="normal">
            <li>
              <tt>E-session[X]</tt> is in the <tt>established</tt> state, or</li>
            <li>
              <tt>E-status[X]</tt> is <tt>success</tt>, and <tt>(T - E-completed[X]) &lt; persistence</tt></li>
          </ul>
          <t>Otherwise, if there is no outstanding session for any encrypted transport, and the last successful encrypted transport connection was long ago, the resolver sends a query to <tt>X</tt> over Do53.
When it does so, it inserts a handle for the query in <tt>Do53-queries[X]</tt>.</t>
        </section>
        <section anchor="receiving-a-response-over-do53" numbered="true" toc="default">
          <name>Receiving a response over Do53</name>
          <t>When a successful response <tt>R</tt> is received in cleartext from authoritative server <tt>X</tt> for a query <tt>Q</tt> that was sent over Do53, the recursive resolver should:</t>
          <ul spacing="normal">
            <li>
              <t>If <tt>Q</tt> is in <tt>Do53-queries[X]</tt>:
              </t>
              <ul spacing="normal">
                <li>Return <tt>R</tt> to the requesting client</li>
              </ul>
            </li>
            <li>Remove <tt>Q</tt> from <tt>Do53-queries[X]</tt></li>
            <li>
              <t>For each supported encrypted transport <tt>E</tt>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>If <tt>Q</tt> is in <tt>E-queries[X]</tt>:
                  </t>
                  <ul spacing="normal">
                    <li>Remove <tt>Q</tt> from <tt>E-queries[X]</tt></li>
                  </ul>
                </li>
              </ul>
            </li>
          </ul>
          <t>But if <tt>R</tt> is unsuccessful (e.g. <tt>SERVFAIL</tt>):</t>
          <ul spacing="normal">
            <li>
              <t>If <tt>Q</tt> is in <tt>Do53-queries[X]</tt>:
              </t>
              <ul spacing="normal">
                <li>Remove <tt>Q</tt> from <tt>Do53-queries[X]</tt></li>
              </ul>
            </li>
            <li>
              <t>if <tt>Q</tt> is not in any of <tt>*-queries[X]</tt>:
              </t>
              <ul spacing="normal">
                <li>Return <tt>SERVFAIL</tt> to the client</li>
              </ul>
            </li>
          </ul>
        </section>
        <section anchor="initiating-a-connection-over-encrypted-transport" numbered="true" toc="default">
          <name>Initiating a connection over encrypted transport</name>
          <t>If any <tt>E-session[X]</tt> is in the <tt>established</tt>, the recursive resolver SHOULD NOT initiate a new connection to <tt>X</tt> over any other transport, but should instead send a query through the existing session (see <xref target="sending" format="default"/>).
FIXME: What if there's a preferred transport, but the <tt>established</tt> session does not correspond to that preferred transport?</t>
          <t>Otherwise, the timer should examine and possibly refresh its state for encrypted transport <tt>E</tt> to authoritative IP address <tt>X</tt>:</t>
          <ul spacing="normal">
            <li>if <tt>E-session[X]</tt> is in state <tt>pending</tt>, and</li>
            <li>
              <t><tt>T - E-initiated[X] &gt; E-timeout</tt>, then
              </t>
              <ul spacing="normal">
                <li>set <tt>E-session[X]</tt> to <tt>null</tt> and</li>
                <li>set <tt>E-status[X]</tt> to <tt>timeout</tt></li>
              </ul>
            </li>
          </ul>
          <t>When resources are available to attempt a new encrypted transport, the resolver should only initiate a new connection to <tt>X</tt> over <tt>E</tt> as long as one of the following holds true:</t>
          <ul spacing="normal">
            <li>
              <tt>E-status[X]</tt> is <tt>success</tt>, or</li>
            <li>
              <tt>E-status[X]</tt> is <tt>fail</tt> or <tt>timeout</tt> and <tt>(T - E-completed[X]) &gt; damping</tt>, or</li>
            <li>
              <tt>E-status[X]</tt> is <tt>null</tt> and <tt>E-initiated[X]</tt> is <tt>null</tt></li>
          </ul>
          <t>When initiating a session to <tt>X</tt> over encrypted transport <tt>E</tt>, if <tt>E-resumptions[X]</tt> is not empty, one ticket should be popped off the stack and used to try to resume a previous session.
Otherwise, the initial Client Hello handshake should not try to resume any session.</t>
          <t>When initiating a connection, the resolver should take the following steps:</t>
          <ul spacing="normal">
            <li>set <tt>E-initiated[X]</tt> to <tt>T0</tt></li>
            <li>store a handle for the new session (which should have <tt>pending</tt> state)  in <tt>E-session[X]</tt></li>
            <li>insert a handle for the query that prompted this connection in <tt>E-queries[X]</tt>, with status <tt>unsent</tt> or <tt>early</tt>, as appropriate (see below).</li>
          </ul>
          <section anchor="early-data" numbered="true" toc="default">
            <name>Early Data</name>
            <t>Modern encrypted transports like TLS 1.3 offer the chance to store "early data" from the client into the initial Client Hello in some contexts.
A resolver that initiates a connection over a encrypted transport according to this guidance in a context where early data is possible SHOULD send the DNS query that prompted the connection in the early data, according to the sending guidance in <xref target="sending" format="default"/>.</t>
            <t>If it does so, the status of <tt>Q</tt> in <tt>E-queries[X]</tt> should be set to <tt>early</tt> instead of <tt>unsent</tt>.</t>
          </section>
          <section anchor="resumption-tickets" numbered="true" toc="default">
            <name>Resumption Tickets</name>
            <t>When initiating a new connection (whether by resuming an old session or not), the recursive resolver SHOULD request a session resumption ticket from the authoritative server.
If the authoritative server supplies a resumption ticket, the recursive resolver pushes it into the stack at <tt>E-resumptions[X]</tt>.</t>
          </section>
          <section anchor="recursive-sni" numbered="true" toc="default">
            <name>Server Name Indication</name>
            <t>For modern encrypted transports like TLS 1.3, most client implementations expect to send a Server Name Indication (SNI) in the Client Hello.</t>
            <t>There are two complications with selecting or sending SNI in this unilateral probing:</t>
            <ul spacing="normal">
              <li>Some authoritative servers are known by more than one name; selecting a single name to use for a given connection may be difficult or impossible.</li>
              <li>In most configurations, the contents of the SNI field is exposed on the wire to a passive adversary.
This potentially reveals additional information about which query is being made, based on the NS of the query itself.</li>
            </ul>
            <t>To avoid additional leakage and complexity, a recursive resolver following this guidance SHOULD NOT send SNI to the authoritative when attempting encrypted transport.</t>
            <t>If the recursive resolver needs to send SNI to the authoritative for some reason not found in this document, it is RECOMMENDED that it implements Encrypted Client Hello (<xref target="I-D.ietf-tls-esni" format="default"/>) to reduce leakage.</t>
          </section>
          <section anchor="authoritative-server-authentication" numbered="true" toc="default">
            <name>Authoritative Server Authentication</name>
            <t>A recursive resolver following this guidance MAY attempt to verify the server's identity by X.509 certificate or DANE.
When doing so, the identity would presumably be based on the NS name used for a given query.</t>
            <t>However, since this probing policy is unilateral and opportunistic, the client connecting under this policy MUST accept any certificate presented by the server.
If the client cannot verify the server's identity, it MAY use that information for reporting, logging, or other analysis purposes.
But it MUST NOT reject the connection due to the authentication failure, as the result would be falling back to cleartext, which would leak the content of the session to a passive network monitor.</t>
          </section>
        </section>
        <section anchor="establishing-an-encrypted-transport-connection" numbered="true" toc="default">
          <name>Establishing an encrypted transport connection</name>
          <t>When an encrypted transport connection actually completes (e.g., the TLS handshake completes) at time <tt>T1</tt>, the resolver sets <tt>E-completed[X]</tt> to <tt>T1</tt> and does the following:</t>
          <t>If the handshake completed successfully:</t>
          <ul spacing="normal">
            <li>update <tt>E-session[X]</tt> so that it is in state <tt>established</tt></li>
            <li>set <tt>E-status[X]</tt> to <tt>success</tt></li>
            <li>
              <t>for each query <tt>Q</tt> in <tt>E-queries[X]</tt>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>if early data was accepted and <tt>Q</tt> is <tt>early</tt>,
                  </t>
                  <ul spacing="normal">
                    <li>set the status of <tt>Q</tt> to <tt>sent</tt></li>
                  </ul>
                </li>
                <li>
                  <t>otherwise:
                  </t>
                  <ul spacing="normal">
                    <li>send <tt>Q</tt> through the session (see <xref target="sending" format="default"/>), and set the status of <tt>Q</tt> to <tt>sent</tt></li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>set <tt>E-last-activity[X]</tt> to <tt>T1</tt></li>
          </ul>
        </section>
        <section anchor="failing-to-establish-an-encrypted-transport-connection" numbered="true" toc="default">
          <name>Failing to establish an encrypted transport connection</name>
          <t>If, at time <tt>T2</tt> an encrypted transport handshake completes with a failure (e.g. a TLS alert),</t>
          <ul spacing="normal">
            <li>set <tt>E-session[X]</tt> to <tt>null</tt></li>
            <li>set <tt>E-status[X]</tt> to <tt>fail</tt></li>
            <li>set <tt>E-completed[X]</tt> to <tt>T2</tt></li>
            <li>
              <t>for each query <tt>Q</tt> in <tt>E-queries[X]</tt>:
              </t>
              <ul spacing="normal">
                <li>if <tt>Q</tt> is not present in any other <tt>*-queries[X]</tt> or in <tt>Do53-queries[X]</tt>, add <tt>Q</tt> to <tt>Do53-queries[X]</tt> and send query <tt>Q</tt> to <tt>X</tt> over Do53.</li>
              </ul>
            </li>
          </ul>
          <t>Note that this failure will trigger the recursive resolver to fall back to cleartext queries to the authoritative server at IP address <tt>X</tt>.
It will retry encrypted transport to <tt>X</tt> once the <tt>damping</tt> timer has elapsed.</t>
        </section>
        <section anchor="encrypted-transport-failure" numbered="true" toc="default">
          <name>Encrypted transport failure</name>
          <t>Once established, an encrypted transport might fail for a number of reasons (e.g., decryption failure, or improper protocol sequence).</t>
          <t>If this happens:</t>
          <ul spacing="normal">
            <li>set <tt>E-session[X]</tt> to <tt>null</tt></li>
            <li>set <tt>E-status[X]</tt> to <tt>fail</tt></li>
            <li>
              <t>for each query <tt>Q</tt> in <tt>E-queries[X]</tt>:
              </t>
              <ul spacing="normal">
                <li>if <tt>Q</tt> is not present in any other <tt>*-queries[X]</tt> or in <tt>Do53-queries[X]</tt>, add <tt>Q</tt> to <tt>Do53-queries[X]</tt> and send query <tt>Q</tt> to <tt>X</tt> over Do53.
FIXME: should a resumption ticket be used here for this previously successful connection?</li>
              </ul>
            </li>
          </ul>
          <t>Note that this failure will trigger the recursive resolver to fall back to cleartext queries to the authoritative server at IP address <tt>X</tt>.
It will retry encrypted transport to <tt>X</tt> once the <tt>damping</tt> timer has elapsed.</t>
          <t>FIXME: are there specific forms of failure that we might handle differently?
For example, What if a TCP timeout closes an idle DoT connection?
What if a QUIC stream ends up timing out but other streams on the same QUIC connection are going through?
Do the described scenarios cover the case when an encrypted transport's port is made unavailable/closed?</t>
        </section>
        <section anchor="handling-clean-shutdown-of-encrypted-transport-connection" numbered="true" toc="default">
          <name>Handling clean shutdown of encrypted transport connection</name>
          <t>At time <tt>T3</tt>, the recursive resolver may find that authoritative server <tt>X</tt> cleanly closes an existing outstanding connection (most likely due to resource exhaustion, see <xref target="authoritative-resource-exhaustion" format="default"/>).</t>
          <t>When this happens:</t>
          <ul spacing="normal">
            <li>set <tt>E-session[X]</tt> to <tt>null</tt></li>
            <li>
              <t>for each query <tt>Q</tt> in <tt>E-queries[X]</tt>:
              </t>
              <ul spacing="normal">
                <li>if <tt>Q</tt> is not present in any other <tt>*-queries[X]</tt> or in <tt>Do53-queries[X]</tt>, add <tt>Q</tt> to <tt>Do53-queries[X]</tt> and send query <tt>Q</tt> to <tt>X</tt> over Do53.</li>
              </ul>
            </li>
          </ul>
          <t>Note that this premature shutdown will trigger the recursive resolver to fall back to cleartext queries to the authoritative server at IP address <tt>X</tt>.
Any subsequent query to <tt>X</tt> will retry the encrypted connection promptly.</t>
        </section>
        <section anchor="sending" numbered="true" toc="default">
          <name>Sending a query over encrypted transport</name>
          <t>When sending a query to an authoritative server over encrypted transport at time <tt>T4</tt>, the recursive resolver should take a few reasonable steps to ensure privacy and efficiency.</t>
          <t>When sending query <tt>Q</tt>, the recursive resolver should ensure that its state in <tt>E-queries[X]</tt> is set to <tt>sent</tt>.</t>
          <t>The recursive resolver also sets <tt>E-last-activity[X]</tt> to <tt>T4</tt>.</t>
          <t>In addition, the recursive resolver should consider the following guidance:</t>
          <section anchor="avoid-edns-client-subnet" numbered="true" toc="default">
            <name>Avoid EDNS client subnet</name>
            <t>To protect the privacy of the client, the recursive resolver SHOULD NOT send EDNS(0) Client Subnet information to the authoritative server (<xref target="RFC7871" format="default"/>) unless explicitly authorized to do so by the client.</t>
          </section>
          <section anchor="pad-to-standard-policy" numbered="true" toc="default">
            <name>Pad to standard policy</name>
            <t>To increase the anonymity set for each query, the recursive resolver SHOULD use EDNS(0) padding according to policies described in <xref target="RFC8467" format="default"/>.</t>
          </section>
          <section anchor="send-queries-in-separate-channels" numbered="true" toc="default">
            <name>Send queries in separate channels</name>
            <t>When multiple queries are multiplexed on a single encrypted transport to a single authoritative server, the recursive resolver MUST offer distinct query ID fields for every outstanding query on a connection, and MUST be capable of receiving responses out of order.</t>
            <t>To the extent that the encrypted transport can avoid head-of-line blocking (e.g. QUIC can use a separate stream per query) the recursive resolver SHOULD avoid head-of-line blocking.</t>
          </section>
        </section>
        <section anchor="receiving-a-response-over-encrypted-transport" numbered="true" toc="default">
          <name>Receiving a response over encrypted transport</name>
          <t>When a response <tt>R</tt> for query <tt>Q</tt> arrives at the recursive resolver over encrypted transport <tt>E</tt> from authoritative server with IP address <tt>X</tt> at time <tt>T5</tt>, if <tt>Q</tt> is in <tt>E-queries[X]</tt>, the recursive resolver takes the following steps:</t>
          <ul spacing="normal">
            <li>Remove <tt>R</tt> from <tt>E-queries[X]</tt></li>
            <li>Set <tt>E-last-activity[X]</tt> to <tt>T5</tt></li>
            <li>
              <t>If <tt>R</tt> is successful:
              </t>
              <ul spacing="normal">
                <li>send <tt>R</tt> to the requesting client</li>
                <li>
                  <t>For each supported encrypted transport <tt>N</tt> other than <tt>E</tt>:
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>If <tt>Q</tt> is in <tt>N-queries[X]</tt>:
                      </t>
                      <ul spacing="normal">
                        <li>Remove <tt>Q</tt> from <tt>N-queries[X]</tt></li>
                      </ul>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>If <tt>Q</tt> is in <tt>Do53-queries[X]</tt>:
                  </t>
                  <ul spacing="normal">
                    <li>Remove <tt>Q</tt> from <tt>Do53-queries[X]</tt></li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>Otherwise (<tt>R</tt> is unsuccessful, e.g., <tt>SERVFAIL</tt>):
              </t>
              <ul spacing="normal">
                <li>
                  <t>If <tt>Q</tt> is not in <tt>Do53-queries[X]</tt> or any other <tt>*-queries[X]</tt>:
                  </t>
                  <ul spacing="normal">
                    <li>Return <tt>SERVFAIL</tt> to the requesting client
FIXME: What response should be sent to the clients in the case that extended DNS errors are used in an authoritative's response?</li>
                  </ul>
                </li>
              </ul>
            </li>
          </ul>
        </section>
        <section anchor="recursive-resource-exhaustion" numbered="true" toc="default">
          <name>Resource Exhaustion</name>
          <t>To keep resources under control, a recursive resolver should proactively manage outstanding encrypted connections.
Section 6.5 of <xref target="I-D.ietf-dprive-dnsoquic" format="default"/> ("Connection Handling") offers useful guidance for clients managing DoQ connections.
Section 3.4 of <xref target="RFC7858" format="default"/> offers useful guidance for clients managing DoT connections.</t>
          <t>Even with sensible connection managment, a recursive resolver doing unilateral probing may find resources unexpectedly scarce, and may need to close some outstanding connections.</t>
          <t>In such a situation, the recursive resolver SHOULD use a reasonable prioritization scheme to close outstanding connections.</t>
          <t>One reasonable prioritization scheme would be:</t>
          <ul spacing="normal">
            <li>close outstanding <tt>established</tt> sessions based on <tt>E-last-activity[X]</tt> (oldest timestamp gets closed first)</li>
          </ul>
          <t>Note that when resources are limited, a recursive resolver following this guidance may also choose not to initiate new connections for encrypted transport.</t>
        </section>
        <section anchor="maintaining-connections" numbered="true" toc="default">
          <name>Maintaining connections</name>
          <t>Some recursive resolvers looking to amortize connection costs, and to minimize latency MAY choose to synthesize queries to a particular resolver to keep a encrypted transport session active.</t>
          <t>A recursive resolver that adopts this approach should try to align the synthesized queries with other optimizations.
For example, a recursive resolver that "pre-fetches" a particular resource record to keep its cache "hot" can send that query over an established encrypted transport session.</t>
        </section>
      </section>
    </section>
    <section anchor="signalling-for-stronger-defense" numbered="true" toc="default">
      <name>Signalling for Stronger Defense</name>
      <t>This draft <em>does not</em> contemplate the specification of any form of coordinated signalling between authoritative servers and recursive resolvers, as such measures would not be unilateral.</t>
      <t>However, the draft highlights the needs of a signaling mechanism for stronger defense.</t>
      <t>We highlight the following questions for other specifications to solve:</t>
      <ul spacing="normal">
        <li>
          <t>What does the signal need to contain?
          </t>
          <ul spacing="normal">
            <li>type of transport? (DoQ? DoT? DoH?)</li>
            <li>error reporting if secure, authenticated connection fails (how to report? similar to TLSRPT?)</li>
            <li>whether to hard-fail if encrypted communication isn't available</li>
            <li>cryptographic authentication of authoritative server (e.g. pubkeys) vs. names vs. domain?</li>
          </ul>
        </li>
        <li>
          <t>How should the signal be presented?
          </t>
          <ul spacing="normal">
            <li>SVCB RR or "surprising" DS RR</li>
          </ul>
        </li>
        <li>
          <t>How should the signal be scoped?
          </t>
          <ul spacing="normal">
            <li>per-nameserver (by NS), per-nameserver (by IP address, via <tt>in-addr.arpa</tt>), or per-domain?</li>
          </ul>
        </li>
      </ul>
      <section anchor="combining-signals-with-opportunistic-probing" numbered="true" toc="default">
        <name>Combining Signals with Opportunistic Probing</name>
        <t>FIXME: How do the signals get combined with the above opportunistic probing policy?
Can we specify that without needing to specify the signalling mechanism itself?</t>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>IANA does not need to do anything for implementers to adopt the guidance found in this draft.</t>
    </section>
    <section anchor="privacy-considerations" numbered="true" toc="default">
      <name>Privacy Considerations</name>
      <section anchor="sni-considerations" numbered="true" toc="default">
        <name>Server Name Indication</name>
        <t>A recursive resolver querying an authoritative server over DoT or DoQ that sends Server Name Indication (SNI) in the clear in the cryptographic handshake leaks information about the intended query to a passive network observer.</t>
        <t>In particular, if two different zones refer to the same nameserver IP addresses via differently-named NS records, a passive network observer can distinguish queries to one zone from the queries to the other.</t>
        <t>Omitting SNI entirely, or using ECH to hide the intended SNI, avoids this additional leakage.
However, a series of queries that leak this information is still an improvement over the all-cleartext status quo at the time of this document.</t>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The guidance in this draft provides defense against passive network monitors for most queries.
It does not defend against active attackers.
It can also leak some queries and their responses due to "happy eyeballs" optimizations when the resolver's cache is cold.</t>
      <t>Implementation of the guidance in this draft should increase deployment of opportunistic encrypted DNS transport between recursive resolvers and authoritative servers at little operational risk.</t>
      <t>However, implementers should not rely on the guidance in this draft for robust defense against active attackers, but should treat it as a stepping stone en route to stronger defense.</t>
      <t>In particular, a recursive resolver following this guidance can easily be forced by an active attacker to fall back to cleartext DNS queries.
Or, an active attacker could position itself as a machine-in-the-middle, which the recursive resolver would not defend against or detect due to lack of server authentication.
Defending against these attacks without risking additional unexpected protocol failures would require signalling and coordination that are out of scope for this draft.</t>
      <t>This guidance is only one part of operating a privacy-preserving DNS ecosystem.
A privacy-preserving recursive resolver should adopt other practices as well, such as QNAME minimization, local root zone, etc, to reduce the overall leakage of query information that could infringe on the client's privacy.</t>
    </section>
    <section anchor="acknowledgements" numbered="true" toc="default">
      <name>Acknowledgements</name>
      <t>Many people contributed to the development of this draft beyond the authors, including
Brian Dickson,
Christian Huitema,
Eric Nygren,
Jim Reid,
Kris Shrishak,
Paul Hoffman,
Ralf Weber,
Robert Evans,
and the DPRIVE working group.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <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">
              <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="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">
              <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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC1035" target="https://www.rfc-editor.org/info/rfc1035">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P.V. Mockapetris" initials="P.V." surname="Mockapetris">
              <organization/>
            </author>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System.  It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </reference>
        <reference anchor="I-D.ietf-dprive-dnsoquic" target="https://www.ietf.org/archive/id/draft-ietf-dprive-dnsoquic-10.txt">
          <front>
            <title>DNS over Dedicated QUIC Connections</title>
            <author fullname="Christian Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <author fullname="Sara Dickinson">
              <organization>Sinodun IT</organization>
            </author>
            <author fullname="Allison Mankin">
              <organization>Salesforce</organization>
            </author>
            <date day="28" month="February" year="2022"/>
            <abstract>
              <t>   This document describes the use of QUIC to provide transport privacy
   for DNS.  The encryption provided by QUIC has similar properties to
   that 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 RFC7858, and
   latency characteristics similar to classic DNS over UDP.  This
   specification describes the use of DNS over QUIC as a general-purpose
   transport for DNS and includes the use of DNS over QUIC for stub to
   recursive, recursive to authoritative, and zone transfer scenarios.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dprive-dnsoquic-10"/>
        </reference>
        <reference anchor="I-D.ietf-tls-esni" target="https://www.ietf.org/archive/id/draft-ietf-tls-esni-14.txt">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="Eric Rescorla">
              <organization>RTFM, Inc.</organization>
            </author>
            <author fullname="Kazuho Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Nick Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="13" month="February" year="2022"/>
            <abstract>
              <t>   This document describes a mechanism in Transport Layer Security (TLS)
   for encrypting a ClientHello message under a server public key.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/tlswg/draft-ietf-tls-esni
   (https://github.com/tlswg/draft-ietf-tls-esni).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-esni-14"/>
        </reference>
        <reference anchor="RFC7435" target="https://www.rfc-editor.org/info/rfc7435">
          <front>
            <title>Opportunistic Security: Some Protection Most of the Time</title>
            <author fullname="V. Dukhovni" initials="V." surname="Dukhovni">
              <organization/>
            </author>
            <date month="December" year="2014"/>
            <abstract>
              <t>This document defines the concept "Opportunistic Security" in the context of communications protocols.  Protocol designs based on Opportunistic Security use encryption even when authentication is not available, and use authentication when possible, thereby removing barriers to the widespread use of encryption on the Internet.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7435"/>
          <seriesInfo name="DOI" value="10.17487/RFC7435"/>
        </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">
              <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="RFC7871" target="https://www.rfc-editor.org/info/rfc7871">
          <front>
            <title>Client Subnet in DNS Queries</title>
            <author fullname="C. Contavalli" initials="C." surname="Contavalli">
              <organization/>
            </author>
            <author fullname="W. van der Gaast" initials="W." surname="van der Gaast">
              <organization/>
            </author>
            <author fullname="D. Lawrence" initials="D." surname="Lawrence">
              <organization/>
            </author>
            <author fullname="W. Kumari" initials="W." surname="Kumari">
              <organization/>
            </author>
            <date month="May" year="2016"/>
            <abstract>
              <t>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="RFC8305" target="https://www.rfc-editor.org/info/rfc8305">
          <front>
            <title>Happy Eyeballs Version 2: Better Connectivity Using Concurrency</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi">
              <organization/>
            </author>
            <author fullname="T. Pauly" initials="T." surname="Pauly">
              <organization/>
            </author>
            <date month="December" year="2017"/>
            <abstract>
              <t>Many communication protocols operating over the modern Internet use hostnames.  These often resolve to multiple IP addresses, each of which may have different performance and connectivity characteristics.  Since specific addresses or address families (IPv4 or IPv6) may be blocked, broken, or sub-optimal on a network, clients that attempt multiple connections in parallel have a chance of establishing a connection more quickly.  This document specifies requirements for algorithms that reduce this user-visible delay and provides an example algorithm, referred to as "Happy Eyeballs".  This document obsoletes the original algorithm description in RFC 6555.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8305"/>
          <seriesInfo name="DOI" value="10.17487/RFC8305"/>
        </reference>
        <reference anchor="RFC8467" target="https://www.rfc-editor.org/info/rfc8467">
          <front>
            <title>Padding Policies for Extension Mechanisms for DNS (EDNS(0))</title>
            <author fullname="A. Mayrhofer" initials="A." surname="Mayrhofer">
              <organization/>
            </author>
            <date month="October" year="2018"/>
            <abstract>
              <t>RFC 7830 specifies the "Padding" option for Extension Mechanisms for DNS (EDNS(0)) but does not specify the actual padding length for specific applications.  This memo lists the possible options ("padding policies"), discusses the implications of each option, and provides a recommended (experimental) option.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8467"/>
          <seriesInfo name="DOI" value="10.17487/RFC8467"/>
        </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">
              <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>
      </references>
    </references>
    <section anchor="document-considerations" numbered="true" toc="default">
      <name>Document Considerations</name>
      <t>[ RFC Editor: please remove this section before publication ]</t>
      <t>This document is currently edited as markdown.
Minor editorial changes can be suggested via merge requests at https://gitlab.com/dkg/dprive-unilateral-probing or by e-mail to the editor.
Please direct all significant commentary to the public IETF DPRIVE mailing list: dprive@ietf.org</t>
      <t>The authors' latest draft can be read online in <eref target="https://dkg.gitlab.io/dprive-unilateral-probing/">html</eref> or <eref target="https://dkg.gitlab.io/dprive-unilateral-probing/unilateral-probing.pdf">pdf</eref> or <eref target="https://dkg.gitlab.io/dprive-unilateral-probing/unilateral-probing.txt">text</eref> formats.</t>
      <section anchor="document-history" numbered="true" toc="default">
        <name>Document History</name>
        <section anchor="substantive-changes-from-01-to-02" numbered="true" toc="default">
          <name>Substantive changes from -01 to -02</name>
          <ul spacing="normal">
            <li>Clarify that deployment to a pool does not need to be strictly simultaneous</li>
            <li>Explain why authoritatives need to serve the same records regardless of SNI</li>
            <li>Defer to external, protocol-specific references for resource management</li>
            <li>Clarify that probed connections must not fail due to authentication failure</li>
          </ul>
        </section>
        <section anchor="substantive-changes-from-00-to-01" numbered="true" toc="default">
          <name>Substantive changes from -00 to -01</name>
          <ul spacing="normal">
            <li>Fallback to cleartext when encrypted transport fails.</li>
            <li>Reduce default <tt>timeout</tt> to 4s</li>
            <li>Clarify SNI guidance: OK for selecting server credentials, not OK for changing answers</li>
            <li>Document ALPN and port numbers</li>
            <li>Justify sorting recursive resolver state by authoritative IP address</li>
          </ul>
        </section>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAME7JmIAA9196XPbVpbvd/4VKKVeReoiGdmxO4lmcSuSMlbHlh1J6SSV
l3oEiUsSLRBgY5HMuPO/v/M759wFICDbU1M1NZMPDkUCdzn37NudTCajOq0z
cxL9mKdZXJsyzqI3221R1k2eVnW6iM7NNit2G5PXUbGMLvJFudvWJomuzaIp
q/TeTOpictrU66JM67imL6Lzq5tRPJ+X5r41rn93//GkWOTxhtaRlPGynqSm
Xk6SbYnhGzfCZFsW8zRfTY6PRwv6alWUu5MozZfFaJRuy5OoLpuqfnp8/M3x
01Fcmhg/1qOHorxblUWzpdF5yNGd2dGXyUl0mdPAuakn55h2NKrqOE/+X5wV
OS1lZ6rRKOalnoyiaBLRPxGNWJ1E59Po+2n0H2mWbYqSv5bVn8d5arLo+3id
t34tytVJdLoxZbqI8+gsvU+z6FU6N2WdmgowKnJ+rqpLY+qT6MnT59G3ZREn
0U095V8WaU17vTIP0S+0nXF09Yt8XSQ07ZPj4+Nn+neT14DKjzen/IU9h9Oz
Vz/yF2YTpxlB4m71l2W6rNe0u4q+y6cEBuzSb/Kv0+gmzuLf43CHfy3MrvW1
LOw0i//emCwOFvX0+Onxk/aizq7DJfydhlpVcfaXFf6eLorNCGdZbhgtAPLr
786eHH/5HB8vJ+fTECuSvCr+0aSL1m91Vk1Mlaf67lfP5F18/Pr51+7jV0/0
49dfHtsHvn7256/cx6+fnYzyzkKePnnyjX3gyVf0wGQyIejSicULwpzbdVoJ
8kaVqauoaOhDbbZVVK/jGjhO35f3pqyiw9KSTlSaqsj4S8K7KG6RhT5+FAFl
6vjORJ4Ssl10+JDS0zRLnO8IwoTOaU4vFnmEH6KiXpsy2hoeoS6ixCwNTYF1
/KMx5S4CGOPFLopXMZ02DRNt44oXRYgAkok2RZ7WRTmlvRndS0or8RvFwuaG
h45B1nMaLY8IHBglrut4cWfKcTQHKGipWYKnq3SzzWhp2HBmqioq0+puJ0sE
pwG8cpq7NNG2eDDlsslk8ZWpZCkyeZxVBci7LJJmQUR0iGmSgj7lRU2cgIes
tmaRLncEAWwBaE4srQIjq9JVTnAkbiIH9MDr25pyk9Z2Pg+bvV1NR7yUVUF8
jUYLgEIfMDF2STPzNmkVBJ2kxUiLFpM1jjUSOuUVfhJYA0UCPtvGkHWxlcmZ
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
AAA=

-->

</rfc>
