<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.13 (Ruby 2.6.8) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-ietf-dprive-unilateral-probing-01" category="info" submissionType="IETF">
  <front>
    <title abbrev="Unilateral Encrypted Authoritative DNS">Unilateral Opportunistic Deployment of Encrypted Recursive-to-Authoritative DNS</title>

    <author initials="D. K." surname="Gillmor" fullname="Daniel Kahn Gillmor" role="editor">
      <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" role="editor">
      <organization></organization>
      <address>
        <postal>
          <city>Alajuela</city>
          <code>20201</code>
          <country>CR</country>
        </postal>
        <email>joeygsal@gmail.com</email>
      </address>
    </author>
    <author initials="P." surname="Hoffman" fullname="Paul Hoffman" role="editor">
      <organization>ICANN</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>paul.hoffman@icann.org</email>
      </address>
    </author>

    <date year="2022" month="July" day="11"/>

    <area>int</area>
    <workgroup>dprive</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document 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 document can be defeated by an active attacker, but should be simpler and less risky to deploy than more powerful defenses.</t>

<t>The goal of this document 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>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://dkg.gitlab.io/dprive-unilateral-probing/"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-dprive-unilateral-probing/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        DPRIVE Working Group mailing list (<eref target="mailto:dns-privacy@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/dns-privacy/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://gitlab.com/dkg/dprive-unilateral-probing"/>.</t>
    </note>


  </front>

  <middle>


<section anchor="introduction"><name>Introduction</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"/>) -- encrypting things that would otherwise be in the clear, without interfering with or weakening stronger forms of security.</t>

<t>The document also briefly introduces (but does not try to specify) how a future protocol might permit defense against an active attacker in <xref target="adding-auth"/>.</t>

<t>The protocol described here offers three concrete advantages to the Internet ecosystem:</t>

<t><list style="symbols">
  <t>Protection from passive attackers of DNS queries in transit between recursive and authoritative servers.</t>
  <t>A roadmap for gaining real-world experience at scale with encrypted protections of this traffic.</t>
  <t>A bridge to some possible future protection against a more powerful attacker.</t>
</list></t>

<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<dl>
  <dt>Unilateral:</dt>
  <dd>
    <t>capable of opportunistic probing deployment without external coordination with any of the other parties</t>
  </dd>
  <dt>Do53:</dt>
  <dd>
    <t>traditional cleartext DNS over port 53 (<xref target="RFC1035"/>)</t>
  </dd>
  <dt>DoQ:</dt>
  <dd>
    <t>DNS-over-QUIC (<xref target="I-D.ietf-dprive-dnsoquic"/>)</t>
  </dd>
  <dt>DoT:</dt>
  <dd>
    <t>DNS-over-TLS (<xref target="RFC7858"/>)</t>
  </dd>
  <dt>DoH:</dt>
  <dd>
    <t>DNS-over-HTTPS (<xref target="RFC8484"/>)</t>
  </dd>
  <dt>Encrypted transports:</dt>
  <dd>
    <t>DoQ, DoT, and DoH collectively</t>
  </dd>
</dl>

</section>
</section>
<section anchor="priorities"><name>Priorities</name>

<section anchor="minimizing-negative-impacts"><name>Minimizing Negative Impacts</name>

<t>This document 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, and for uninvolved third parties.
The negative impacts that we specifically try to minimize are:</t>

<t><list style="symbols">
  <t>excessive bandwidth use</t>
  <t>excessive use of computational resources (CPU and memory in particular)</t>
  <t>the potential for amplification attacks (where DNS resolution infrastructure is wielded as part of a DoS attack)</t>
</list></t>

</section>
<section anchor="protocol-choices"><name>Protocol Choices</name>

<t>Although this document focuses specifically on strategies used by DNS servers, it does not go into detail on the specific protocols used because 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 document 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 documents.</t>

</section>
</section>
<section anchor="authoritative-guidance"><name>Guidance for Authoritative Servers</name>

<t>An authoritative server <bcp14>SHOULD</bcp14> implement and deploy DNS-over-TLS (DoT) on TCP port 853.</t>

<t>An authoritative server <bcp14>SHOULD</bcp14> implement and deploy DNS-over-QUIC (DoQ) on UDP port 853.</t>

<t>An authoritative server implementing the protocol described in this document <bcp14>MUST</bcp14> implement at least one of DoT or DoQ on port 853.</t>

<section anchor="authoritative-pools"><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"/> that interacts with such a pool likely does not know that it is a pool.
If some members of the pool follow this guidance while others do 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 <bcp14>SHOULD</bcp14> either:</t>

<t><list style="symbols">
  <t>ensure that all members of the pool enable the same encrypted transport(s) within the span of a few seconds, or</t>
  <t>ensure that the load balancer maps client requests to pool members based on client IP addresses.</t>
</list></t>

<t>Similar concerns apply to authoritative servers responding from an anycast IP address.
As long as the pool of servers is in a heterogeneous 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"><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>

</section>
<section anchor="authoritative-sni"><name>Server Name Indication</name>

<t>An authoritative DNS server that wants to handle unilateral queries <bcp14>MAY</bcp14> rely on Server Name Indication (SNI) to select alternate server credentials.
However, such a server <bcp14>MUST NOT</bcp14> 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"><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"/> ("Connection Handling") offers useful guidance for servers managing DoQ connections.
Section 3.4 of <xref target="RFC7858"/> offers useful guidance for servers managing DoT connections.</t>

<t>An authoritative server facing unforeseen resource exhaustion <bcp14>SHOULD</bcp14> 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>

<t><list style="symbols">
  <t>connections with no outstanding queries, ordered by idle time (longest idle time gets closed first)</t>
  <t>connections with outstanding queries, ordered by age of outstanding query (oldest outstanding query gets closed first)</t>
</list></t>

<t>When resources are especially tight, the authoritative server may also decline to accept new connections over encrypted transport.</t>

<section anchor="pad-responses-to-mitigate-traffic-analysis"><name>Pad Responses to Mitigate Traffic Analysis</name>

<t>To increase the anonymity set for each response, the authoritative server <bcp14>SHOULD</bcp14> use a sensible padding mechanism for all responses it sends.
For example, an implementation might use EDNS(0) padding <xref target="RFC7830"/> within an encrypted transport, or a DoQ client might make use of the PADDING frames found in Section 19.1 of <xref target="QUIC"/>).
How much to pad is out of scope of this document, but a reasonable suggestion can be found in <xref target="RFC8467"/>.</t>

</section>
</section>
</section>
<section anchor="recursive-guidance"><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="high-level-overview"><name>High-level Overview</name>

<t>In addition to querying on Do53, the recursive resolver will try either or both of DoT and DoQ concurrently.
The recursive resolver remembers what opportunistic encrypted transport protocols have worked recently based on a (clientIP, serverIP, protocol) tuple.</t>

<t>If a query needs to go to a given authoritative server, and the recursive resolver remembers a recent successful encrypted transport to that server, then it doesn't send the query over Do53 at all.
Rather, it only sends the query using the recently-good encrypted transport protocol.</t>

<t>If the encrypted transport protocol fails, the recursive resolver falls back to Do53 for that tuple.
When any encrypted transport fails, the recursive resolver remembers that failure for a reasonable amount of time to avoid flooding a non-compatible server with requests that it cannot accept.</t>

<t>See the subsections below for a more detailed description of this protocol.</t>

</section>
<section anchor="overall-recursive-resolver-settings"><name>Overall Recursive Resolver Settings</name>

<t>A recursive resolver implementing this document needs to 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>

<texttable title="Recursive resolver system parameters per encrypted transport">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Suggested Default</ttcol>
      <c><spanx style="verb">persistence</spanx></c>
      <c>How long should the recursive resolver remember successful encrypted transport connections?</c>
      <c>3 days (259200 seconds)</c>
      <c><spanx style="verb">damping</spanx></c>
      <c>How long should the recursive resolver remember unsuccessful encrypted transport connections?</c>
      <c>1 day (86400 seconds)</c>
      <c><spanx style="verb">timeout</spanx></c>
      <c>How long should the recursive resolver wait for an initiated encrypted connection to complete?</c>
      <c>4 seconds</c>
</texttable>

<t>This document uses the notation <spanx style="verb">E-foo</spanx> to refer to the <spanx style="verb">foo</spanx> parameter for the encrypted transport <spanx style="verb">E</spanx>.</t>

<t>For example <spanx style="verb">DoT-persistence</spanx> would indicate the length of time that the recursive resolver will remember that an authoritative server had a successful connection over <spanx style="verb">DoT</spanx>.</t>

<t>This document also assumes that the resolver maintains a list of outstanding cleartext queries destined for the authoritative server's IP address <spanx style="verb">X</spanx>.
This list is referred to as <spanx style="verb">Do53-queries[X]</spanx>.
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"><name>Recursive Resolver Requirements</name>

<t>To follow this guidance, a recursive resolver <bcp14>MUST</bcp14> implement at least one of either DoT or DoQ in its capacity as a client of authoritative nameservers.</t>

<t>A recursive resolver <bcp14>SHOULD</bcp14> implement the client side of DNS-over-TLS (DoT).
A recursive resolver <bcp14>SHOULD</bcp14> implement the client side of DNS-over-QUIC (DoQ).</t>

<t>DoT queries from the recursive resolver <bcp14>MUST</bcp14> target TCP port 853, with an ALPN of "<spanx style="verb">dot</spanx>".
DoQ queries from the recursive resolver <bcp14>MUST</bcp14> target UDP port 853, with an ALPN of "<spanx style="verb">doq</spanx>".
ALPN is described in <xref target="RFC7301"/>.</t>

<t>While this document focuses on the recursive-to-authoritative hop, a recursive resolver implementing these strategies <bcp14>SHOULD</bcp14> 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"><name>Authoritative Server Encrypted Transport Connection State</name>

<t>The recursive resolver <bcp14>SHOULD</bcp14> 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 <spanx style="verb">null</spanx>:</t>

<texttable title="Recursive resolver state per authoritative IP, per encrypted transport">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Retain Across Reset</ttcol>
      <c><spanx style="verb">session</spanx></c>
      <c>The associated state of any existing, established session (the structure of this value is dependent on the encrypted transport implementation).  If <spanx style="verb">session</spanx> is not <spanx style="verb">null</spanx>, it may be in one of two states: <spanx style="verb">pending</spanx> or <spanx style="verb">established</spanx></c>
      <c>no</c>
      <c><spanx style="verb">initiated</spanx></c>
      <c>Timestamp of most recent connection attempt</c>
      <c>yes</c>
      <c><spanx style="verb">completed</spanx></c>
      <c>Timestamp of most recent completed handshake</c>
      <c>yes</c>
      <c><spanx style="verb">status</spanx></c>
      <c>Enumerated value of <spanx style="verb">success</spanx> or <spanx style="verb">fail</spanx> or <spanx style="verb">timeout</spanx>, associated with the <spanx style="verb">completed</spanx> handshake</c>
      <c>yes</c>
      <c><spanx style="verb">last-response</spanx></c>
      <c>A timestamp of the most recent response received on the connection</c>
      <c>yes</c>
      <c><spanx style="verb">resumptions</spanx></c>
      <c>A stack of resumption tickets (and associated parameters) that could be used to resume a prior successful connection</c>
      <c>yes</c>
      <c><spanx style="verb">queries</spanx></c>
      <c>A queue of queries intended for this authoritative server, each of which has additional status <spanx style="verb">early</spanx>, <spanx style="verb">unsent</spanx>, or <spanx style="verb">sent</spanx></c>
      <c>no</c>
      <c><spanx style="verb">last-activity</spanx></c>
      <c>A timestamp of the most recent activity on the connection</c>
      <c>no</c>
</texttable>

<t>Note that the <spanx style="verb">session</spanx> fields in aggregate constitute a pool of open connections to different servers.</t>

<t>With the exception of the <spanx style="verb">session</spanx>, <spanx style="verb">queries</spanx>, and <spanx style="verb">last-activity</spanx> 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 <spanx style="verb">E-foo[X]</spanx> to indicate the value of field <spanx style="verb">foo</spanx> for encrypted transport <spanx style="verb">E</spanx> to IP address <spanx style="verb">X</spanx>.</t>

<t>For example, <spanx style="verb">DoT-initiated[192.0.2.4]</spanx> represents the timestamp when the most recent DoT connection packet was sent to IP address 192.0.2.4.</t>

<section anchor="resolver-binding"><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 <spanx style="verb">192.0.2.100</spanx> and <spanx style="verb">192.0.2.200</spanx>, 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"/>).</t>

</section>
</section>
<section anchor="maintaining-authoritative-state-by-ip-address"><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>

<t><list style="symbols">
  <t>the authoritative server's IP address,</t>
  <t>the authoritative server's name (the NS record used), or</t>
  <t>the zone that contains the record being looked up.</t>
</list></t>

<t>This document 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 heterogeneous deployment.</t>

<t>For example, consider an authoritative server named <spanx style="verb">ns0.example.com</spanx> that is served by two installations (with two <spanx style="verb">A</spanx> records), one at <spanx style="verb">192.0.2.7</spanx> that follows this guidance, and one at <spanx style="verb">192.0.2.8</spanx> that is a legacy (cleartext port 53-only) deployment.
A recursive client who associates state with the <spanx style="verb">NS</spanx> name and reaches <spanx style="verb">.7</spanx> first will "learn" that <spanx style="verb">ns0.example.com</spanx> supports encrypted transport.
A subsequent query over encrypted transport dispatched to <spanx style="verb">.8</spanx> 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"/> and <xref target="authoritative-pools"/>).</t>

</section>
<section anchor="probing-policy"><name>Probing Policy</name>

<t>When a recursive resolver discovers the need for an authoritative lookup to an authoritative DNS server using IP address <spanx style="verb">X</spanx>, it retrieves the records associated with <spanx style="verb">X</spanx> from its cache.</t>

<t>The following sections presume that the time of the discovery of the need for lookup is time <spanx style="verb">T0</spanx>.</t>

<t>If any of the records discussed here are absent, they are treated as <spanx style="verb">null</spanx>.</t>

<t>The recursive resolver must 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"/>).
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 <spanx style="verb">X</spanx> is capable of communicating on the relevant transport.</t>

<section anchor="sending-a-query-over-do53"><name>Sending a Query over Do53</name>

<t>For any of the supported encrypted transports <spanx style="verb">E</spanx>, if either of the following holds true, the resolver <bcp14>SHOULD NOT</bcp14> send a query to <spanx style="verb">X</spanx> over Do53:</t>

<t><list style="symbols">
  <t><spanx style="verb">E-session[X]</spanx> is in the <spanx style="verb">established</spanx> state, or</t>
  <t><spanx style="verb">E-status[X]</spanx> is <spanx style="verb">success</spanx>, and <spanx style="verb">(T0 - E-last-response[X]) &lt; persistence</spanx></t>
</list></t>

<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 <spanx style="verb">X</spanx> over Do53.
When it does so, it inserts a handle for the query in <spanx style="verb">Do53-queries[X]</spanx>.</t>

</section>
<section anchor="receiving-a-response-over-do53"><name>Receiving a Response over Do53</name>

<t>When a response <spanx style="verb">R</spanx> for query <spanx style="verb">Q</spanx> arrives at the recursive resolver in cleartext sent over Do53 from authoritative server with IP address <spanx style="verb">X</spanx>, the recursive resolver should:</t>

<t>If <spanx style="verb">Q</spanx> is not in <spanx style="verb">Do53-queries[X]</spanx>:</t>

<t><list style="symbols">
  <t>Discard <spanx style="verb">R</spanx> and process it no further (do not respond to a cleartext response to a query that is not outstanding)</t>
</list></t>

<t>Otherwise:</t>

<t><list style="symbols">
  <t>Remove <spanx style="verb">Q</spanx> from <spanx style="verb">Do53-queries[X]</spanx></t>
</list></t>

<t>If <spanx style="verb">R</spanx> is successful:</t>

<t><list style="symbols">
  <t>If <spanx style="verb">Q</spanx> is in <spanx style="verb">Do53-queries[X]</spanx>:
  <list style="symbols">
      <t>Return <spanx style="verb">R</spanx> to the requesting client</t>
    </list></t>
  <t>For each supported encrypted transport <spanx style="verb">E</spanx>:
  <list style="symbols">
      <t>If <spanx style="verb">Q</spanx> is in <spanx style="verb">E-queries[X]</spanx>:
      <list style="symbols">
          <t>Remove <spanx style="verb">Q</spanx> from <spanx style="verb">E-queries[X]</spanx></t>
        </list></t>
    </list></t>
</list></t>

<t>But if <spanx style="verb">R</spanx> is unsuccessful (e.g. <spanx style="verb">SERVFAIL</spanx>):</t>

<t><list style="symbols">
  <t>if <spanx style="verb">Q</spanx> is not in any of <spanx style="verb">*-queries[X]</spanx>:
  <list style="symbols">
      <t>Return <spanx style="verb">SERVFAIL</spanx> to the client</t>
    </list></t>
</list></t>

<t>FIXME: What response should be sent to the client in the case that an extended DNS error (<xref target="RFC8914"/>) is offered in an authoritative's response?</t>

</section>
<section anchor="initiating-a-connection-over-encrypted-transport"><name>Initiating a Connection over Encrypted Transport</name>

<t>If any <spanx style="verb">E-session[X]</spanx> is in the <spanx style="verb">established</spanx> state, the recursive resolver <bcp14>SHOULD NOT</bcp14> initiate a new connection to <spanx style="verb">X</spanx> over Do53 or <spanx style="verb">E</spanx>, but should instead send queries to <spanx style="verb">X</spanx> through the existing session (see <xref target="sending"/>).
If the recursive resolver has a preferred encrypted transport, but only a different transport is in the <spanx style="verb">established</spanx> state, it <bcp14>MAY</bcp14> also initiate a new connection to <spanx style="verb">X</spanx> over its preferred transport while concurrently sending the query over the <spanx style="verb">established</spanx> transport <spanx style="verb">E</spanx>.</t>

<t>Before considering whether to initiate a new connection over an encrypted transport, the timer should examine and possibly refresh its state for encrypted transport <spanx style="verb">E</spanx> to authoritative IP address <spanx style="verb">X</spanx>:</t>

<t><list style="symbols">
  <t>if <spanx style="verb">E-session[X]</spanx> is in state <spanx style="verb">pending</spanx>, and</t>
  <t><spanx style="verb">T0 - E-initiated[X] &gt; E-timeout</spanx>, then
  <list style="symbols">
      <t>set <spanx style="verb">E-session[X]</spanx> to <spanx style="verb">null</spanx> and</t>
      <t>set <spanx style="verb">E-status[X]</spanx> to <spanx style="verb">timeout</spanx></t>
    </list></t>
</list></t>

<t>When resources are available to attempt a new encrypted transport, the resolver should only initiate a new connection to <spanx style="verb">X</spanx> over <spanx style="verb">E</spanx> as long as one of the following holds true:</t>

<t><list style="symbols">
  <t><spanx style="verb">E-status[X]</spanx> is <spanx style="verb">success</spanx>, or</t>
  <t><spanx style="verb">E-status[X]</spanx> is <spanx style="verb">fail</spanx> or <spanx style="verb">timeout</spanx> and <spanx style="verb">(T0 - E-completed[X]) &gt; damping</spanx>, or</t>
  <t><spanx style="verb">E-status[X]</spanx> is <spanx style="verb">null</spanx> and <spanx style="verb">E-initiated[X]</spanx> is <spanx style="verb">null</spanx></t>
</list></t>

<t>When initiating a session to <spanx style="verb">X</spanx> over encrypted transport <spanx style="verb">E</spanx>, if <spanx style="verb">E-resumptions[X]</spanx> 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>

<t><list style="symbols">
  <t>set <spanx style="verb">E-initiated[X]</spanx> to <spanx style="verb">T0</spanx></t>
  <t>store a handle for the new session (which should have <spanx style="verb">pending</spanx> state)  in <spanx style="verb">E-session[X]</spanx></t>
  <t>insert a handle for the query that prompted this connection in <spanx style="verb">E-queries[X]</spanx>, with status <spanx style="verb">unsent</spanx> or <spanx style="verb">early</spanx>, as appropriate (see below).</t>
</list></t>

<section anchor="early-data"><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 <bcp14>SHOULD</bcp14> send the DNS query that prompted the connection in the early data, according to the sending guidance in <xref target="sending"/>.</t>

<t>If it does so, the status of <spanx style="verb">Q</spanx> in <spanx style="verb">E-queries[X]</spanx> should be set to <spanx style="verb">early</spanx> instead of <spanx style="verb">unsent</spanx>.</t>

</section>
<section anchor="resumption-tickets"><name>Resumption Tickets</name>

<t>When initiating a new connection (whether by resuming an old session or not), the recursive resolver <bcp14>SHOULD</bcp14> 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 <spanx style="verb">E-resumptions[X]</spanx>.</t>

</section>
<section anchor="recursive-sni"><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>

<t><list style="symbols">
  <t>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.</t>
  <t>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.</t>
</list></t>

<t>To avoid additional leakage and complexity, a recursive resolver following this guidance <bcp14>SHOULD NOT</bcp14> 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 <bcp14>RECOMMENDED</bcp14> that it implements Encrypted Client Hello (<xref target="I-D.ietf-tls-esni"/>) to reduce leakage.</t>

</section>
<section anchor="authoritative-server-authentication"><name>Authoritative Server Authentication</name>

<t>Because this probing policy is unilateral and opportunistic, the client connecting under this policy <bcp14>MUST</bcp14> accept any certificate presented by the server.
If the client cannot verify the server's identity, it <bcp14>MAY</bcp14> use that information for reporting, logging, or other analysis purposes.
But it <bcp14>MUST NOT</bcp14> 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"><name>Establishing an Encrypted Transport Connection</name>

<t>When an encrypted transport connection actually completes (e.g., the TLS handshake completes) at time <spanx style="verb">T1</spanx>, the resolver sets <spanx style="verb">E-completed[X]</spanx> to <spanx style="verb">T1</spanx> and does the following:</t>

<t>If the handshake completed successfully:</t>

<t><list style="symbols">
  <t>update <spanx style="verb">E-session[X]</spanx> so that it is in state <spanx style="verb">established</spanx></t>
  <t>set <spanx style="verb">E-status[X]</spanx> to <spanx style="verb">success</spanx></t>
  <t>set <spanx style="verb">E-last-response[X]</spanx> to <spanx style="verb">T1</spanx></t>
  <t>set <spanx style="verb">E-completed[X]</spanx> to <spanx style="verb">T1</spanx></t>
  <t>for each query <spanx style="verb">Q</spanx> in <spanx style="verb">E-queries[X]</spanx>:
  <list style="symbols">
      <t>if early data was accepted and <spanx style="verb">Q</spanx> is <spanx style="verb">early</spanx>,
      <list style="symbols">
          <t>set the status of <spanx style="verb">Q</spanx> to <spanx style="verb">sent</spanx></t>
        </list></t>
      <t>otherwise:
      <list style="symbols">
          <t>send <spanx style="verb">Q</spanx> through the session (see <xref target="sending"/>), and set the status of <spanx style="verb">Q</spanx> to <spanx style="verb">sent</spanx></t>
        </list></t>
    </list></t>
</list></t>

</section>
<section anchor="failing-to-establish-an-encrypted-transport-connection"><name>Failing to Establish an Encrypted Transport Connection</name>

<t>If, at time <spanx style="verb">T2</spanx> an encrypted transport handshake completes with a failure (e.g. a TLS alert),</t>

<t><list style="symbols">
  <t>set <spanx style="verb">E-session[X]</spanx> to <spanx style="verb">null</spanx></t>
  <t>set <spanx style="verb">E-status[X]</spanx> to <spanx style="verb">fail</spanx></t>
  <t>set <spanx style="verb">E-completed[X]</spanx> to <spanx style="verb">T2</spanx></t>
  <t>for each query <spanx style="verb">Q</spanx> in <spanx style="verb">E-queries[X]</spanx>:
  <list style="symbols">
      <t>if <spanx style="verb">Q</spanx> is not present in any other <spanx style="verb">*-queries[X]</spanx> or in <spanx style="verb">Do53-queries[X]</spanx>, add <spanx style="verb">Q</spanx> to <spanx style="verb">Do53-queries[X]</spanx> and send query <spanx style="verb">Q</spanx> to <spanx style="verb">X</spanx> over Do53.</t>
    </list></t>
</list></t>

<t>Note that this failure will trigger the recursive resolver to fall back to cleartext queries to the authoritative server at IP address <spanx style="verb">X</spanx>.
It will retry encrypted transport to <spanx style="verb">X</spanx> once the <spanx style="verb">damping</spanx> timer has elapsed.</t>

</section>
<section anchor="encrypted-transport-failure"><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>

<t><list style="symbols">
  <t>set <spanx style="verb">E-session[X]</spanx> to <spanx style="verb">null</spanx></t>
  <t>set <spanx style="verb">E-status[X]</spanx> to <spanx style="verb">fail</spanx></t>
  <t>for each query <spanx style="verb">Q</spanx> in <spanx style="verb">E-queries[X]</spanx>:
  <list style="symbols">
      <t>if <spanx style="verb">Q</spanx> is not present in any other <spanx style="verb">*-queries[X]</spanx> or in <spanx style="verb">Do53-queries[X]</spanx>, add <spanx style="verb">Q</spanx> to <spanx style="verb">Do53-queries[X]</spanx> and send query <spanx style="verb">Q</spanx> to <spanx style="verb">X</spanx> over Do53.
FIXME: should a resumption ticket be used here for this previously successful connection?</t>
    </list></t>
</list></t>

<t>Note that this failure will trigger the recursive resolver to fall back to cleartext queries to the authoritative server at IP address <spanx style="verb">X</spanx>.
It will retry encrypted transport to <spanx style="verb">X</spanx> once the <spanx style="verb">damping</spanx> 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-an-encrypted-transport-connection"><name>Handling Clean Shutdown of an Encrypted Transport Connection</name>

<t>At time <spanx style="verb">T3</spanx>, the recursive resolver may find that authoritative server <spanx style="verb">X</spanx> cleanly closes an existing outstanding connection (most likely due to resource exhaustion, see <xref target="authoritative-resource-exhaustion"/>).</t>

<t>When this happens:</t>

<t><list style="symbols">
  <t>set <spanx style="verb">E-session[X]</spanx> to <spanx style="verb">null</spanx></t>
  <t>for each query <spanx style="verb">Q</spanx> in <spanx style="verb">E-queries[X]</spanx>:
  <list style="symbols">
      <t>if <spanx style="verb">Q</spanx> is not present in any other <spanx style="verb">*-queries[X]</spanx> or in <spanx style="verb">Do53-queries[X]</spanx>, add <spanx style="verb">Q</spanx> to <spanx style="verb">Do53-queries[X]</spanx> and send query <spanx style="verb">Q</spanx> to <spanx style="verb">X</spanx> over Do53.</t>
    </list></t>
</list></t>

<t>Note that this premature shutdown will trigger the recursive resolver to fall back to cleartext queries to the authoritative server at IP address <spanx style="verb">X</spanx>.
Any subsequent query to <spanx style="verb">X</spanx> will retry the encrypted connection promptly.</t>

</section>
<section anchor="sending"><name>Sending a Query over Encrypted Transport</name>

<t>When sending a query to an authoritative server over encrypted transport at time <spanx style="verb">T4</spanx>, the recursive resolver should take a few reasonable steps to ensure privacy and efficiency.</t>

<t>After sending query <spanx style="verb">Q</spanx>, the recursive resolver should ensure that <spanx style="verb">Q</spanx>'s state in <spanx style="verb">E-queries[X]</spanx> is set to <spanx style="verb">sent</spanx>.</t>

<t>The recursive resolver also sets <spanx style="verb">E-last-activity[X]</spanx> to <spanx style="verb">T4</spanx>.</t>

<t>In addition, the recursive resolver should consider the guidance in the following sections.</t>

<section anchor="avoid-edns-client-subnet"><name>Avoid EDNS Client Subnet</name>

<t>To protect the privacy of the client, the recursive resolver <bcp14>SHOULD NOT</bcp14> send EDNS(0) Client Subnet information to the authoritative server (<xref target="RFC7871"/>) unless explicitly authorized to do so by the client.</t>

</section>
<section anchor="pad-queries-to-mitigate-traffic-analysis"><name>Pad Queries to Mitigate Traffic Analysis</name>

<t>To increase the anonymity set for each query, the recursive resolver <bcp14>SHOULD</bcp14> use a sensible padding mechanism for all queries it sends.
For example, an implementation might use EDNS(0) padding <xref target="RFC7830"/> within an encrypted transport, or a DoQ client might make use of the PADDING frames found in Section 19.1 of <xref target="QUIC"/>).
How much to pad is out of scope of this document, but a reasonable suggestion can be found in <xref target="RFC8467"/>.</t>

</section>
<section anchor="send-queries-in-separate-channels"><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 <bcp14>MUST</bcp14> separate queries clearly and be capable of receiving responses out of order.
For guidance on how to best achieve this on a given encrypted transport, see <xref target="RFC7766"/> (for DoT) and <xref target="I-D.ietf-dprive-dnsoquic"/> (for DoQ).</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 <bcp14>SHOULD</bcp14> avoid head-of-line blocking.</t>

</section>
</section>
<section anchor="receiving-a-response-over-encrypted-transport"><name>Receiving a Response over Encrypted Transport</name>

<t>When a response <spanx style="verb">R</spanx> for query <spanx style="verb">Q</spanx> arrives at the recursive resolver over encrypted transport <spanx style="verb">E</spanx> from authoritative server with IP address <spanx style="verb">X</spanx> at time <spanx style="verb">T5</spanx>, the recursive resolver should:</t>

<t>If <spanx style="verb">Q</spanx> is not in <spanx style="verb">E-queries[X]</spanx>:</t>

<t><list style="symbols">
  <t>Discard <spanx style="verb">R</spanx> and process it no further (do not respond to a encrypted response to a query that is not outstanding)</t>
</list></t>

<t>Otherwise:</t>

<t><list style="symbols">
  <t>Remove <spanx style="verb">Q</spanx> from <spanx style="verb">E-queries[X]</spanx></t>
  <t>Set <spanx style="verb">E-last-activity[X]</spanx> to <spanx style="verb">T5</spanx></t>
  <t>Set <spanx style="verb">E-last-response[X]</spanx> to <spanx style="verb">T5</spanx></t>
</list></t>

<t>If <spanx style="verb">R</spanx> is successful:</t>

<t><list style="symbols">
  <t>Return <spanx style="verb">R</spanx> to the requesting client</t>
  <t>For each supported encrypted transport <spanx style="verb">N</spanx> other than <spanx style="verb">E</spanx>:
  <list style="symbols">
      <t>If <spanx style="verb">Q</spanx> is in <spanx style="verb">N-queries[X]</spanx>:
      <list style="symbols">
          <t>Remove <spanx style="verb">Q</spanx> from <spanx style="verb">N-queries[X]</spanx></t>
        </list></t>
    </list></t>
  <t>If <spanx style="verb">Q</spanx> is in <spanx style="verb">Do53-queries[X]</spanx>:
  <list style="symbols">
      <t>Remove <spanx style="verb">Q</spanx> from <spanx style="verb">Do53-queries[X]</spanx></t>
    </list></t>
</list></t>

<t>But if <spanx style="verb">R</spanx> is unsuccessful (e.g. <spanx style="verb">SERVFAIL</spanx>):</t>

<t><list style="symbols">
  <t>If <spanx style="verb">Q</spanx> is not in <spanx style="verb">Do53-queries[X]</spanx> or in any of <spanx style="verb">*-queries[X]</spanx>:
  <list style="symbols">
      <t>Return <spanx style="verb">SERVFAIL</spanx> to the requesting client</t>
    </list></t>
</list></t>

<t>FIXME: What response should be sent to the client in the case that an extended DNS error (<xref target="RFC8914"/>) is offered in an authoritative's response?</t>

</section>
<section anchor="recursive-resource-exhaustion"><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"/> ("Connection Handling") offers useful guidance for clients managing DoQ connections.
Section 3.4 of <xref target="RFC7858"/> offers useful guidance for clients managing DoT connections.</t>

<t>Even with sensible connection management, 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 <bcp14>SHOULD</bcp14> use a reasonable prioritization scheme to close outstanding connections.</t>

<t>One reasonable prioritization scheme would be:</t>

<t><list style="symbols">
  <t>close outstanding <spanx style="verb">established</spanx> sessions based on <spanx style="verb">E-last-activity[X]</spanx> (oldest timestamp gets closed first)</t>
</list></t>

<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"><name>Maintaining Connections</name>

<t>Some recursive resolvers looking to amortize connection costs, and to minimize latency <bcp14>MAY</bcp14> 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="iana-considerations"><name>IANA Considerations</name>

<t>IANA does not need to do anything for implementers to adopt the guidance found in this document.</t>

</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<section anchor="sni-considerations"><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 Encrypted Client Hello 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"><name>Security Considerations</name>

<t>The guidance in this document 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 document should increase deployment of opportunistic encrypted DNS transport between recursive resolvers and authoritative servers at little operational risk.</t>

<t>However, implementers cannot rely on the guidance in this document 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 document.</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 (<xref target="RFC9156"/>), local root zone (<xref target="RFC8806"/>), etc, to reduce the overall leakage of query information that could infringe on the client's privacy.</t>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>Many people contributed to the development of this document beyond the authors, including
Alexander Mayrhofer,
Brian Dickson,
Christian Huitema,
Eric Nygren,
Jim Reid,
Kris Shrishak,
Ralf Weber,
Robert Evans,
Sara Dickinson,
and the DPRIVE working group.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>





<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>



<reference anchor='RFC7301' target='https://www.rfc-editor.org/info/rfc7301'>
<front>
<title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
<author fullname='S. Friedl' initials='S.' surname='Friedl'><organization/></author>
<author fullname='A. Popov' initials='A.' surname='Popov'><organization/></author>
<author fullname='A. Langley' initials='A.' surname='Langley'><organization/></author>
<author fullname='E. Stephan' initials='E.' surname='Stephan'><organization/></author>
<date month='July' year='2014'/>
<abstract><t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t></abstract>
</front>
<seriesInfo name='RFC' value='7301'/>
<seriesInfo name='DOI' value='10.17487/RFC7301'/>
</reference>




    </references>

    <references title='Informative References'>





<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 &quot;Opportunistic Security&quot; 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='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'>
   <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='20' month='April' year='2022'/>
      <abstract>
	 <t>This document describes the use of QUIC to provide transport confidentiality for DNS.  The encryption provided by QUIC has similar properties to those provided by TLS, while QUIC transport eliminates the head-of-line blocking issues inherent with TCP and provides more efficient packet-loss recovery than UDP.  DNS over QUIC (DoQ) has privacy properties similar to DNS over TLS (DoT) specified in RFC 7858, and latency characteristics similar to classic DNS over UDP.  This specification describes the use of DoQ as a general-purpose transport for DNS and includes the use of DoQ for stub to recursive, recursive to authoritative, and zone transfer scenarios.
	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-dprive-dnsoquic-12'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-dprive-dnsoquic-12.txt' type='TXT'/>
</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='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>



<reference anchor='RFC7830' target='https://www.rfc-editor.org/info/rfc7830'>
<front>
<title>The EDNS(0) Padding Option</title>
<author fullname='A. Mayrhofer' initials='A.' surname='Mayrhofer'><organization/></author>
<date month='May' year='2016'/>
<abstract><t>This document specifies the EDNS(0) &quot;Padding&quot; option, which allows DNS clients and servers to pad request and response messages by a variable number of octets.</t></abstract>
</front>
<seriesInfo name='RFC' value='7830'/>
<seriesInfo name='DOI' value='10.17487/RFC7830'/>
</reference>



<reference anchor='QUIC' target='https://www.rfc-editor.org/info/rfc9000'>
<front>
<title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
<author fullname='J. Iyengar' initials='J.' role='editor' surname='Iyengar'><organization/></author>
<author fullname='M. Thomson' initials='M.' role='editor' surname='Thomson'><organization/></author>
<date month='May' year='2021'/>
<abstract><t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t></abstract>
</front>
<seriesInfo name='RFC' value='9000'/>
<seriesInfo name='DOI' value='10.17487/RFC9000'/>
</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 &quot;Padding&quot; 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 (&quot;padding policies&quot;), 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='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 &quot;Happy Eyeballs&quot;.  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='RFC8914' target='https://www.rfc-editor.org/info/rfc8914'>
<front>
<title>Extended DNS Errors</title>
<author fullname='W. Kumari' initials='W.' surname='Kumari'><organization/></author>
<author fullname='E. Hunt' initials='E.' surname='Hunt'><organization/></author>
<author fullname='R. Arends' initials='R.' surname='Arends'><organization/></author>
<author fullname='W. Hardaker' initials='W.' surname='Hardaker'><organization/></author>
<author fullname='D. Lawrence' initials='D.' surname='Lawrence'><organization/></author>
<date month='October' year='2020'/>
<abstract><t>This document defines an extensible method to return additional information about the cause of DNS errors. Though created primarily to extend SERVFAIL to provide additional information about the cause of DNS and DNSSEC failures, the Extended DNS Errors option defined in this document allows all response types to contain extended error information. Extended DNS Error information does not change the processing of RCODEs.</t></abstract>
</front>
<seriesInfo name='RFC' value='8914'/>
<seriesInfo name='DOI' value='10.17487/RFC8914'/>
</reference>


<reference anchor='I-D.ietf-tls-esni'>
   <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'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-tls-esni-14.txt' type='TXT'/>
</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='RFC7766' target='https://www.rfc-editor.org/info/rfc7766'>
<front>
<title>DNS Transport over TCP - Implementation Requirements</title>
<author fullname='J. Dickinson' initials='J.' surname='Dickinson'><organization/></author>
<author fullname='S. Dickinson' initials='S.' surname='Dickinson'><organization/></author>
<author fullname='R. Bellis' initials='R.' surname='Bellis'><organization/></author>
<author fullname='A. Mankin' initials='A.' surname='Mankin'><organization/></author>
<author fullname='D. Wessels' initials='D.' surname='Wessels'><organization/></author>
<date month='March' year='2016'/>
<abstract><t>This document specifies the requirement for support of TCP as a transport protocol for DNS implementations and provides guidelines towards DNS-over-TCP performance on par with that of DNS-over-UDP. This document obsoletes RFC 5966 and therefore updates RFC 1035 and RFC 1123.</t></abstract>
</front>
<seriesInfo name='RFC' value='7766'/>
<seriesInfo name='DOI' value='10.17487/RFC7766'/>
</reference>



<reference anchor='RFC9156' target='https://www.rfc-editor.org/info/rfc9156'>
<front>
<title>DNS Query Name Minimisation to Improve Privacy</title>
<author fullname='S. Bortzmeyer' initials='S.' surname='Bortzmeyer'><organization/></author>
<author fullname='R. Dolmans' initials='R.' surname='Dolmans'><organization/></author>
<author fullname='P. Hoffman' initials='P.' surname='Hoffman'><organization/></author>
<date month='November' year='2021'/>
<abstract><t>This document describes a technique called &quot;QNAME minimisation&quot; to improve DNS privacy, where the DNS resolver no longer always sends the full original QNAME and original QTYPE to the upstream name server. This document obsoletes RFC 7816.</t></abstract>
</front>
<seriesInfo name='RFC' value='9156'/>
<seriesInfo name='DOI' value='10.17487/RFC9156'/>
</reference>



<reference anchor='RFC8806' target='https://www.rfc-editor.org/info/rfc8806'>
<front>
<title>Running a Root Server Local to a Resolver</title>
<author fullname='W. Kumari' initials='W.' surname='Kumari'><organization/></author>
<author fullname='P. Hoffman' initials='P.' surname='Hoffman'><organization/></author>
<date month='June' year='2020'/>
<abstract><t>Some DNS recursive resolvers have longer-than-desired round-trip times to the closest DNS root server; those resolvers may have difficulty getting responses from the root servers, such as during a network attack. Some DNS recursive resolver operators want to prevent snooping by third parties of requests sent to DNS root servers. In both cases, resolvers can greatly decrease the round-trip time and prevent observation of requests by serving a copy of the full root zone on the same server, such as on a loopback address or in the resolver software. This document shows how to start and maintain such a copy of the root zone that does not cause problems for other users of the DNS, at the cost of adding some operational fragility for the operator.</t><t>This document obsoletes RFC 7706.</t></abstract>
</front>
<seriesInfo name='RFC' value='8806'/>
<seriesInfo name='DOI' value='10.17487/RFC8806'/>
</reference>



<reference anchor='MTA-STS' target='https://www.rfc-editor.org/info/rfc8461'>
<front>
<title>SMTP MTA Strict Transport Security (MTA-STS)</title>
<author fullname='D. Margolis' initials='D.' surname='Margolis'><organization/></author>
<author fullname='M. Risher' initials='M.' surname='Risher'><organization/></author>
<author fullname='B. Ramakrishnan' initials='B.' surname='Ramakrishnan'><organization/></author>
<author fullname='A. Brotman' initials='A.' surname='Brotman'><organization/></author>
<author fullname='J. Jones' initials='J.' surname='Jones'><organization/></author>
<date month='September' year='2018'/>
<abstract><t>SMTP MTA Strict Transport Security (MTA-STS) is a mechanism enabling mail service providers (SPs) to declare their ability to receive Transport Layer Security (TLS) secure SMTP connections and to specify whether sending SMTP servers should refuse to deliver to MX hosts that do not offer TLS with a trusted server certificate.</t></abstract>
</front>
<seriesInfo name='RFC' value='8461'/>
<seriesInfo name='DOI' value='10.17487/RFC8461'/>
</reference>



<reference anchor='DANE-SMTP' target='https://www.rfc-editor.org/info/rfc7672'>
<front>
<title>SMTP Security via Opportunistic DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS)</title>
<author fullname='V. Dukhovni' initials='V.' surname='Dukhovni'><organization/></author>
<author fullname='W. Hardaker' initials='W.' surname='Hardaker'><organization/></author>
<date month='October' year='2015'/>
<abstract><t>This memo describes a downgrade-resistant protocol for SMTP transport security between Message Transfer Agents (MTAs), based on the DNS-Based Authentication of Named Entities (DANE) TLSA DNS record. Adoption of this protocol enables an incremental transition of the Internet email backbone to one using encrypted and authenticated Transport Layer Security (TLS).</t></abstract>
</front>
<seriesInfo name='RFC' value='7672'/>
<seriesInfo name='DOI' value='10.17487/RFC7672'/>
</reference>



<reference anchor='TLSRPT' target='https://www.rfc-editor.org/info/rfc8460'>
<front>
<title>SMTP TLS Reporting</title>
<author fullname='D. Margolis' initials='D.' surname='Margolis'><organization/></author>
<author fullname='A. Brotman' initials='A.' surname='Brotman'><organization/></author>
<author fullname='B. Ramakrishnan' initials='B.' surname='Ramakrishnan'><organization/></author>
<author fullname='J. Jones' initials='J.' surname='Jones'><organization/></author>
<author fullname='M. Risher' initials='M.' surname='Risher'><organization/></author>
<date month='September' year='2018'/>
<abstract><t>A number of protocols exist for establishing encrypted channels between SMTP Mail Transfer Agents (MTAs), including STARTTLS, DNS- Based Authentication of Named Entities (DANE) TLSA, and MTA Strict Transport Security (MTA-STS).  These protocols can fail due to misconfiguration or active attack, leading to undelivered messages or delivery over unencrypted or unauthenticated channels.  This document describes a reporting mechanism and format by which sending systems can share statistics and specific information about potential failures with recipient domains.  Recipient domains can then use this information to both detect potential attacks and diagnose unintentional misconfigurations.</t></abstract>
</front>
<seriesInfo name='RFC' value='8460'/>
<seriesInfo name='DOI' value='10.17487/RFC8460'/>
</reference>


<reference anchor='DNS-Error-Reporting'>
   <front>
      <title>DNS Error Reporting</title>
      <author fullname='Roy Arends'>
	 <organization>ICANN</organization>
      </author>
      <author fullname='Matt Larson'>
	 <organization>ICANN</organization>
      </author>
      <date day='10' month='July' year='2022'/>
      <abstract>
	 <t>   DNS Error Reporting is a lightweight error reporting mechanism that
   provides the operator of an authoritative server with reports on DNS
   resource records that fail to resolve or validate, that a Domain
   Owner or DNS Hosting organization can use to improve domain hosting.
   The reports are based on Extended DNS Errors [RFC8914].

   When a domain name fails to resolve or validate due to a
   misconfiguration or an attack, the operator of the authoritative
   server may be unaware of this.  To mitigate this lack of feedback,
   this document describes a method for a validating recursive resolver
   to automatically signal an error to an agent specified by the
   authoritative server.  DNS Error Reporting uses the DNS to report
   errors.

   Another lack of feedback occurs when validation was successful, or
   when there is no error to report.  This positive feedback may be
   helpful to show that a deployment was successful.  This document
   introcudes an extended DNS error &quot;NO ERROR&quot;.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-dnsop-dns-error-reporting-02'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-dnsop-dns-error-reporting-02.txt' type='TXT'/>
</reference>



<reference anchor='RFC9102' target='https://www.rfc-editor.org/info/rfc9102'>
<front>
<title>TLS DNSSEC Chain Extension</title>
<author fullname='V. Dukhovni' initials='V.' surname='Dukhovni'><organization/></author>
<author fullname='S. Huque' initials='S.' surname='Huque'><organization/></author>
<author fullname='W. Toorop' initials='W.' surname='Toorop'><organization/></author>
<author fullname='P. Wouters' initials='P.' surname='Wouters'><organization/></author>
<author fullname='M. Shore' initials='M.' surname='Shore'><organization/></author>
<date month='August' year='2021'/>
<abstract><t>This document describes an experimental TLS extension for the in-band transport of the complete set of records that can be validated by DNSSEC and that are needed to perform DNS-Based Authentication of Named Entities (DANE) of a TLS server. This extension obviates the need to perform separate, out-of-band DNS lookups.  When the requisite DNS records do not exist, the extension conveys a denial-of-existence proof that can be validated.</t><t>This experimental extension is developed outside the IETF and is published here to guide implementation of the extension and to ensure interoperability among implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='9102'/>
<seriesInfo name='DOI' value='10.17487/RFC9102'/>
</reference>




    </references>


<section anchor="adding-auth"><name>Defense Against Active Attackers</name>

<t>The protocol described in this document provides no defense against active attackers.
A future protocol for recursive-to-authoritative DNS might want to provide such protection.</t>

<t>This appendix assumes that the use case for that future protocol is a recursive resolver that wants to prevent an active attack on communication between it and an authoritative server that has committed to offering encrypted DNS transport.
An inherent part of this use case is that the recursive resolver would want to respond with a <spanx style="verb">SERVFAIL</spanx> response to its client if it cannot make an authenticated encrypted connection to any of the authoritative nameservers for a name.</t>

<t>However, an authoritative server that merely offers encrypted transport (for example, by following the guidance in <xref target="authoritative-guidance"/>) has made no such commitment, and no recursive resolver that prioritizes delivery of DNS records to its clients would want to "fail closed" unilaterally.</t>

<t>So such a future protocol would need at least three major distinctions from the protocol described in this document:</t>

<t><list style="symbols">
  <t>A signaling mechanism that tells the resolver that the authoritative server intends to offer authenticated encryption</t>
  <t>Authentication of the authoritative server</t>
  <t>A way to combine defense against an active attacker with the defenses described in this document</t>
</list></t>

<t>This can be thought of as a DNS analog to <xref target="MTA-STS"/> or <xref target="DANE-SMTP"/>.</t>

<section anchor="signalling-mechanism-properties"><name>Signalling Mechanism Properties</name>

<t>To defend against an active attacker, the signalling mechanism needs to be able to indicate that the recursive resolver should "fail closed" if it cannot authenticate the server for a particular query.</t>

<t>The signalling mechanism itself would have to be resistant to downgrade attacks from active attackers.</t>

<t>One open question is how such a signal should be scoped.
While this document scopes opportunistic state about encrypted transport based on the IP addresses of the client and server, signalled intent to offer encrypted transport is more likely to be scoped by queried zone in the DNS, or by nameserver name than by IP address.</t>

<t>A reasonable authoritative server operator or zone administrator probably doesn't want to risk breaking anything when they first enable the signal.
Therefore, a signalling mechanism should probably also offer a means to report problems to the authoritative server operator without the client failing closed.
Such a mechanism is likely to be similar to <xref target="TLSRPT"/> or <xref target="DNS-Error-Reporting"/>.</t>

</section>
<section anchor="authentication-of-authoritative-server"><name>Authentication of Authoritative Server</name>

<t>Forms of server authentication might include:</t>

<t><list style="symbols">
  <t>an X.509 Certificate issued by a widely-known certification authority associated with the common NS names used for this authoritative server</t>
  <t>DANE authentication (to avoid infinite recursion, the DNS records necessary to authenticate could be transmitted in the TLS handshake using the DNSSEC Chain Extension (see <xref target="RFC9102"/>))</t>
</list></t>

<t>A recursive resolver would have to verify the server's identity.
When doing so, the identity would presumably be based on the NS name used for a given query or the IP address of the server.</t>

</section>
<section anchor="combining-protocols"><name>Combining Protocols</name>

<t>If this protocol gains reasonable adoption, and a newer protocol that can offer defense against an active attacker were available, deployment is likely to be staggered and incomplete.
This means that an operator that want to maximize confidentiality for their users will want to use both protocols together.</t>

<t>Any new stronger protocol should consider how it interacts with the opportunistic protocol defined here, so that operators are not faced with the choice between widespread opportunistic protection against passive attackers (this document) and more narrowly-targeted protection against active attackers.</t>

</section>
</section>
<section anchor="document-considerations"><name>Document Considerations</name>

<t>[ RFC Editor: please remove this section before publication ]</t>

<section anchor="document-history"><name>Document History</name>

<section anchor="draft-ietf-dprive-unilateral-probing-substantive-changes-from-00-to-01"><name>draft-ietf-dprive-unilateral-probing Substantive Changes from -00 to -01</name>

<t><list style="symbols">
  <t>Moved discussion of non-opportunistic encryption to an appendix</t>
  <t>Clarify state transitions when sending over encrypted transport</t>
  <t>Introduced new field <spanx style="verb">E-last-response[X]</spanx> for comparison with persistence</t>
</list></t>

</section>
<section anchor="substantive-changes-from-01-to-02-now-draft-ietf-dprive-unilateral-probing-00"><name>Substantive Changes from -01 to -02 (now draft-ietf-dprive-unilateral-probing-00)</name>

<t><list style="symbols">
  <t>Clarify that deployment to a pool does not need to be strictly simultaneous</t>
  <t>Explain why authoritatives need to serve the same records regardless of SNI</t>
  <t>Defer to external, protocol-specific references for resource management</t>
  <t>Clarify that probed connections must not fail due to authentication failure</t>
</list></t>

</section>
<section anchor="draft-dkgjsal-dprive-unilateral-probing-substantive-changes-from-00-to-01"><name>draft-dkgjsal-dprive-unilateral-probing Substantive Changes from -00 to -01</name>

<t><list style="symbols">
  <t>Fallback to cleartext when encrypted transport fails.</t>
  <t>Reduce default <spanx style="verb">timeout</spanx> to 4s</t>
  <t>Clarify SNI guidance: OK for selecting server credentials, not OK for changing answers</t>
  <t>Document ALPN and port numbers</t>
  <t>Justify sorting recursive resolver state by authoritative IP address</t>
</list></t>

</section>
</section>
</section>


  </back>

<!-- ##markdown-source:
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
f+/qt9T7P2UbzYb4nQAA

-->

</rfc>

