<?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-rfc version 1.7.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-happy-happyeyeballs-v3-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Happy Eyeballs v3">Happy Eyeballs Version 3: Better Connectivity Using Concurrency</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-happy-happyeyeballs-v3-03"/>
    <author fullname="Tommy Pauly">
      <organization>Apple Inc</organization>
      <address>
        <email>tpauly@apple.com</email>
      </address>
    </author>
    <author fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Nidhi Jaju">
      <organization>Google LLC</organization>
      <address>
        <email>nidhijaju@google.com</email>
      </address>
    </author>
    <author fullname="Kenichi Ishibashi">
      <organization>Google LLC</organization>
      <address>
        <email>bashi@google.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="02"/>
    <area>WIT</area>
    <workgroup>HAPPY Working Group</workgroup>
    <keyword>ipv6</keyword>
    <keyword>ipv4</keyword>
    <keyword>racing</keyword>
    <keyword>tcp</keyword>
    <keyword>quic</keyword>
    <keyword>svcb</keyword>
    <keyword>ech</keyword>
    <abstract>
      <?line 53?>

<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 updates the algorithm description in RFC 8305.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-happy/draft-happy-eyeballs-v3/draft-ietf-happy-happyeyeballs-v3.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-happy-happyeyeballs-v3/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        HAPPY Working Group mailing list (<eref target="mailto:happy@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/happy/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/happy/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-happy/draft-happy-eyeballs-v3"/>.</t>
    </note>
  </front>
  <middle>
    <?line 66?>

<section anchor="introduction">
      <name>Introduction</name>
      <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.</t>
      <t>This document defines the algorithm for "Happy Eyeballs", a technique
for reducing user-visible delays on dual-stack hosts. This
definition updates the description in <xref target="HEV2"/>, which
itself obsoleted <xref target="RFC6555"/>.</t>
      <t>The Happy Eyeballs algorithm of racing connections to resolved
addresses has several stages to avoid delays to the user whenever
possible, while respecting client priorities, such as preferring
the use of IPv6 or the availability of protocols like HTTP/3 <xref target="HTTP3"/> and
TLS Encrypted Client Hello <xref target="ECH"/>. This document discusses
how to initiate DNS queries when starting a connection, how to
sort the list of destination addresses received from DNS answers,
and how to race the connection attempts.</t>
      <t>The major difference between the algorithm defined in this document
and <xref target="HEV2"/> is the addition of support for SVCB / HTTPS resource
records <xref target="SVCB"/>. SVCB records provide alternative
endpoints and information about application protocol support, Encrypted
Client Hello <xref target="ECH"/> keys, address hints, and other relevant details
about the services being accessed. Discovering protocol support during
resolution, such as for HTTP/3 over QUIC <xref target="HTTP3"/>, allows
upgrading between protocols on the current connection attempts,
instead of waiting for subsequent attempts to use information from
other discovery mechanisms such as HTTP Alternative Services
<xref target="AltSvc"/>. These records can be queried along with A and
AAAA records, and the updated algorithm defines how to handle SVCB
responses to improve connection establishment.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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>
      <?line -18?>

</section>
    <section anchor="overview">
      <name>Overview</name>
      <t>This document defines a method of connection establishment, named the
"Happy Eyeballs Connection Setup". This approach has several
distinct phases:</t>
      <ol spacing="normal" type="1"><li>
          <t>Asynchronous resolution of a hostname into destination addresses (<xref target="resolution"/>)</t>
        </li>
        <li>
          <t>Sorting of the resolved destination addresses (<xref target="sorting"/>)</t>
        </li>
        <li>
          <t>Initiation of asynchronous connection attempts (<xref target="connections"/>)</t>
        </li>
        <li>
          <t>Successful establishment of one connection and cancellation of
other attempts (<xref target="connections"/>)</t>
        </li>
      </ol>
      <t>Note that this document assumes that the preference policy for the
host destination address favors IPv6 over IPv4. IPv6 has many
desirable properties designed to be improvements over IPv4
<xref target="IPV6"/>.</t>
      <t>This document also assumes that the preference policy favors QUIC over
TCP. QUIC only requires one packet to establish a secure connection,
making it quicker compared to TCP <xref target="QUIC"/>.</t>
      <t>If the host is configured to have different preferences, the
recommendations in this document can be easily adapted.</t>
    </section>
    <section anchor="resolution">
      <name>Hostname Resolution</name>
      <t>When a client is trying to establish a connection to a named host,
it needs to determine which destination IP addresses it can use
to reach the host. The client resolves the hostname into IP
addresses by sending DNS queries and collecting the answers.
This section describes how a client initiates DNS queries
and asynchronously handles the answers.</t>
      <section anchor="sending-dns-queries">
        <name>Sending DNS Queries</name>
        <t>Clients first need to determine which DNS resource records
they will include in queries for a named host.</t>
        <t>This decision is based on if client has "connectivity" using IPv4 and IPv6.
In this case, "connectivity" for an address family is defined
as having at least one local address of the family from which
to send packets, and at least one non-link local route for
the address family.</t>
        <t>When a client has both IPv4 and IPv6 connectivity, it needs to
send out queries for both AAAA and A records. On a network with
only IPv4 connectivity, it will send a query for A records. On a
network with only IPv6 connectivity, the client will either send
out queries for both AAAA and A records, or only a query for AAAA
records, depending on the network configuration. See <xref target="v6only"/>
for more discussion of handling IPv6-mostly and IPv6-only networks.</t>
        <t>In addition to requesting AAAA and A records, depending on which
application is establishing the connection, clients can request
either SVCB or HTTPS records <xref target="SVCB"/>. For applications using
HTTP or HTTPS (including applications using WebSockets), the
client <bcp14>SHOULD</bcp14> send a query for HTTPS records.</t>
        <t>All of the DNS queries <bcp14>SHOULD</bcp14> be made as soon after one another as
possible. The order in which the queries are sent <bcp14>SHOULD</bcp14> be as
follows (omitting any query that doesn't apply based on the
logic described above):</t>
        <ol spacing="normal" type="1"><li>
            <t>SVCB or HTTPS query</t>
          </li>
          <li>
            <t>AAAA query</t>
          </li>
          <li>
            <t>A query</t>
          </li>
        </ol>
      </section>
      <section anchor="handling-dns-answers-asynchronously">
        <name>Handling DNS Answers Asynchronously</name>
        <t>Once the client receives sufficient answers to its DNS queries, it can
move onto the phases of sorting addresses (<xref target="sorting"/>)
and establishing connections (<xref target="connections"/>).</t>
        <t>Implementations <bcp14>SHOULD NOT</bcp14> wait for all answers to return
before starting the next steps of connection establishment. If one query
fails or takes significantly longer to return, waiting for
those answers can significantly delay connection
establishment that could otherwise proceed with already received answers.</t>
        <t>Therefore, the client <bcp14>SHOULD</bcp14> treat DNS resolution as asynchronous,
processing different record types independently.
Note that if the platform does not offer an asynchronous DNS API,
this behavior can be simulated by making separate synchronous queries
for each record type in parallel.</t>
        <t>The client moves onto sorting addresses and establishing connections
once one of the following condition sets is met:</t>
        <t>Either:</t>
        <ul spacing="normal">
          <li>
            <t>Some positive (non-empty) address answers have been received AND</t>
          </li>
          <li>
            <t>A postive (non-empty) or negative (empty) answer has been received
for the preferred address family that was queried AND</t>
          </li>
          <li>
            <t>SVCB/HTTPS service information has been received (or has received
a negative response)</t>
          </li>
        </ul>
        <t>Or:</t>
        <ul spacing="normal">
          <li>
            <t>Some positive (non-empty) address answers have been received AND</t>
          </li>
          <li>
            <t>A resolution time delay has passed after which other answers have
not been received</t>
          </li>
        </ul>
        <t>Positive answers can be addresses received either from AAAA or A
records, or address hints received directly in SVCB/HTTPS records.</t>
        <t>Negative answers are exclusively responses to AAAA or A records
that contain no addresses (with or without an error like NXDOMAIN).
If all answers come back with negative answers, the
connection establishment will fail or need to wait until other answers
are received.</t>
        <t>On networks that have both default routes for IPv6 and IPv4, IPv6 is
assumed to be the preferred address family. If only one of IPv6 or IPv4 has
a default route, that address family should be considered the preferred address
family for progressing the algorithm.</t>
        <t>The resolution time delay is a short time that provides a chance
to receive preferred addresses (via AAAA records) along
with service information (via SVCB/HTTPS records). This accounts
for the case where the AAAA or SVCB/HTTPS records follow the
A records by a few milliseconds. This delay is referred to as
the "Resolution Delay".</t>
        <t>The <bcp14>RECOMMENDED</bcp14> value for the Resolution Delay is 50 milliseconds.</t>
        <section anchor="resolving-svcbhttps-aliases-and-targets">
          <name>Resolving SVCB/HTTPS Aliases and Targets</name>
          <t>SVCB and HTTPS records describe information for network services. Individual
records are either AliasMode or ServiceMode records, where AliasMode requires
another SVCB/HTTPS query for the alias name. ServiceMode records either are
associated with the original name being queried, in which case their TargetName
is ".", or are associated with another service name (see <xref section="2.5" sectionFormat="of" target="SVCB"/>).</t>
          <t>The algorithm in this document does not consider service information to be received
until ServiceMode records are available.</t>
          <t>ServiceMode records can contain address hints via <tt>ipv6hint</tt> and <tt>ipv4hint</tt>
parameters. When these are received, they <bcp14>SHOULD</bcp14> be considered as positive
non-empty answers for the purpose of the algorithm when A and AAAA records
corresponding to the TargetName are not available yet. Note that clients are
still required to issue A and AAAA queries for those TargetNames if they haven't
yet received those records. When those records are received, they replace the hints
and update the available set of responses as new answers (see <xref target="new-answers"/>).</t>
        </section>
        <section anchor="examples">
          <name>Examples</name>
          <t>TODO: Provide examples of various scenarios (simple dual stack, SVCB,
delayed AAAA, delayed SVCB, SVCB hints providing early answers)</t>
        </section>
      </section>
      <section anchor="new-answers">
        <name>Handling New Answers</name>
        <t>If new records arrive while connection attempts are in progress,
but before any connection has been established, then any newly
received addresses are incorporated into the list of available candidate
addresses (see <xref target="changes"/>) and the process of connection attempts will
continue with the new addresses added, until one connection is
established.</t>
      </section>
      <section anchor="handling-multiple-dns-server-addresses">
        <name>Handling Multiple DNS Server Addresses</name>
        <t>If multiple DNS server addresses are configured for the current
network, the client may have the option of sending its DNS queries
over IPv4 or IPv6. In keeping with the Happy Eyeballs approach,
queries <bcp14>SHOULD</bcp14> be sent over IPv6 first (note that this is not
referring to the sending of AAAA or A queries, but rather the address
of the DNS server itself and IP version used to transport DNS
messages). If DNS queries sent to the IPv6 address do not receive
responses, that address may be marked as penalized and queries can be
sent to other DNS server addresses.</t>
        <t>As native IPv6 deployments become more prevalent and IPv4 addresses
are exhausted, it is expected that IPv6 connectivity will have
preferential treatment within networks. If a DNS server is
configured to be accessible over IPv6, IPv6 should be assumed to be
the preferred address family.</t>
        <t>Client systems <bcp14>SHOULD NOT</bcp14> have an explicit limit to the number of DNS
servers that can be configured, either manually or by the network.
If such a limit is required by hardware limitations, the client
<bcp14>SHOULD</bcp14> use at least one address from each address family from the
available list.</t>
      </section>
    </section>
    <section anchor="sorting">
      <name>Grouping and Sorting Addresses</name>
      <t>Before attempting to connect to any of the resolved destination
addresses, the client defines the order in which to start the
attempts. Once the order has been defined, the client can use a
simple algorithm for racing each option after a short delay (see
<xref target="connections"/>). It is important that the ordered list involve all
addresses from both families and all protocols that have been received
by this point, as this allows the client to get the racing effect of
Happy Eyeballs for the entire list, not just the first IPv4 and first
IPv6 addresses.</t>
      <t>The client performs three levels of grouping
and sorting of addresses based on the DNS answers received.
Each subsequent level of sorting only changes orders and
preferences within the previously defined groups.</t>
      <ol spacing="normal" type="1"><li>
          <t>Grouping and sorting by application protocol and security requirements (<xref target="application-group"/>)</t>
        </li>
        <li>
          <t>Grouping and sorting by service priorities (<xref target="service-group"/>)</t>
        </li>
        <li>
          <t>Sorting by destination address preferences (<xref target="address-sorting"/>)</t>
        </li>
      </ol>
      <section anchor="application-group">
        <name>Grouping By Application Protocols and Security Requirements</name>
        <t>Clients first group based on which application protocols the
destination endpoints support and which security features
those endpoints offer. These are based on
information from SVCB/HTTPS records about application-layer protocols
("alpn" values) and other parameters like TLS Encrypted Client Hello
configuration ("ech" values, see <xref target="SVCB-ECH"/>).</t>
        <t>For cases where the answers do not include any SVCB/HTTPS information,
or if all of the answers are associated with the same SVCB/HTTPS record,
this step is trivial: all answers belong to one group, and the client
assumes they support the same protocols and security properties.</t>
        <t>However, the client is aware of different sets of destination endpoints
that advertise different capabilities when it receives multiple distinct
SVCB/HTTPS records. The client <bcp14>SHOULD</bcp14> separate these
addresses into different groups, such that all addresses in a
group share the same application protocols and relevant security
properties. The specific parameters that are relevant to the client
depend on the client implementation and application.</t>
        <t>Note that some destination addresses might need to be added to
multiple groups at this stage. For example, consider the following
HTTPS records:</t>
        <artwork><![CDATA[
 example.com. 60 IN HTTPS 1 svc1.example.com. (
     alpn="h3,h2" ipv6hint=2001:db8::2 )
 example.com. 60 IN HTTPS 1 svc2.example.com. (
     alpn="h2" ipv6hint=2001:db8::4 )
]]></artwork>
        <t>In this case, 2001:db8::2 can be used with HTTP/3 and HTTP/2,
but 2001:db8::4 can only be used with HTTP/2. If the client
creates a grouping for HTTP/3-capable addresses and
HTTP/2-capable addresses, 2001:db8::2 would exist in both
groups (assuming that all other security properties are
the same).</t>
        <t>Connection racing as described in <xref target="connections"/> applies
to different destination address options within one of these groups.
The logic for prioritizing and falling back between groups
of addresses with different security properties and protocol
properties is implementation-defined.</t>
        <section anchor="when-to-apply-application-preferences">
          <name>When to Apply Application Preferences</name>
          <t>Whether or not specific application protocols or security features
are grouped separately is a client application decision. Clients
<bcp14>SHOULD</bcp14> avoid grouping and sorting separately in cases where their
use of an application protocol or feature is non-critical.</t>
          <t>For example, an HTTP client loading a simple webpage may not see a large
difference between using HTTP/3 or HTTP/2, and thus can group the ALPNs together
to respect service-determined priorities where HTTP/3 might be
prioritized behind HTTP/2. However, another client might see significant
performance improvements by using HTTP/3's ability to send unreliable
frames for its application use-case and will group HTTP/3 before HTTP/2.</t>
          <t>Similarly, a particular application might require or strongly prefer the
use of TLS ECH for privacy-sensitive traffic, while others might
support ECH opportunistically.</t>
          <t><xref section="8" sectionFormat="of" target="SVCB-ECH"/> recommends against SVCB record sets that contain
some answers that include ECH configuration and some that don't, but notes
that such cases are possible. It is possible that services only include
ECH configurations on SVCB answers that are prioritized behind others
that don't include ECH configurations; for example, this might be
used as an experimenation or roll-out strategy. Due to such cases, clients
ought to not arbitrarily group ECH-containing answers and sort them
first if they won't use the ECH information, or if the connection would
not benefit from the use of ECH. However, for cases where there is a
reason for an application preference for ECH, the client <bcp14>MAY</bcp14> group
and prioritize those answers separately. Even though this might conflict
with the published service record priorities, any answers published
by the service are eligible to be used by clients, and clients can
choose to use them.</t>
        </section>
      </section>
      <section anchor="service-group">
        <name>Grouping By Service Priority</name>
        <t>The next step of grouping and sorting is to group across different
services (as defined by SVCB/HTTPS records), and sort these groups
by priority.</t>
        <t>This step allows server-published priorities to be reflected
in the client connection establishment algorithm.</t>
        <t>SVCB <xref target="SVCB"/> records indicate a priority for each ServiceMode response.
This priority applies to any IPv4 or IPv6 address hints in the record
itself, as well as any addresses received on A or AAAA queries for the
name in the ServiceMode record. The priority in a SVCB ServiceMode record is
always greater than 0.</t>
        <t>SVCB answers with the lowest numerical value (such as 1) are sorted
first, and answers with higher numerical values are sorted later.</t>
        <t>Note that a SVCB record with the TargetName "." applies to the owner
name in the record, and the priority of that SVCB record applies to
any A or AAAA records for the same owner name. These answers are
sorted according to that SVCB record's priority.</t>
        <t>All addresses received from a particular SVCB service (within a group
as defined in <xref target="application-group"/>), either by an associated AAAA
or A record or address hints, <bcp14>SHOULD</bcp14> be separated into a group by
the client. These service-based groups <bcp14>SHOULD</bcp14> then be sorted
using the service priority.</t>
        <t>For cases where the answers do not include any SVCB/HTTPS information,
or if all of the answers are associated with the same SVCB/HTTPS record,
this step is trivial: all answers belong to one group that has the same
priority.</t>
        <t>When there are multiple services, and thus multiple groups, with the
same priority, the client <bcp14>SHOULD</bcp14> shuffle these groups randomly.</t>
        <t>If there are some SVCB/HTTPS services received, but there are AAAA or A
records that do not have an associated service (for example, if no
SVCB/HTTPS record is received for the original name using the "."
TargetName), the unassociated addresses <bcp14>SHOULD</bcp14> be put in a group
that is prioritized at the end of the list.</t>
      </section>
      <section anchor="address-sorting">
        <name>Sorting Destination Addresses Within Groups</name>
        <t>Within each group of addresses, after grouping based on the logic
in <xref target="application-group"/> and <xref target="service-group"/>, the client sorts
the addresses based on preference and historical data.</t>
        <t>First, the client <bcp14>MUST</bcp14> sort the addresses using Destination Address
Selection (<xref section="6" sectionFormat="comma" target="RFC6724"/>).</t>
        <t>If the client is stateful and has a history of expected round-trip
times (RTTs) for the routes to access each address, it <bcp14>SHOULD</bcp14> add a
Destination Address Selection rule between rules 8 and 9 that prefers
addresses with lower RTTs. If the client keeps track of which
addresses it used in the past, it <bcp14>SHOULD</bcp14> add another Destination
Address Selection rule between the RTT rule and rule 9, which prefers
used addresses over unused ones. This helps servers that use the
client's IP address during authentication, as is the case for TCP
Fast Open <xref target="RFC7413"/> and some Hypertext Transport Protocol (HTTP)
cookies. This historical data <bcp14>MUST</bcp14> be partitioned using the same
boundaries used for privacy-sensitive information specific to that endpoint,
and <bcp14>MUST NOT</bcp14> be used across different network interfaces. The data <bcp14>SHOULD</bcp14>
be flushed whenever a device changes the network to which it is attached.
However, if a client can reliably identify a previously attached network,
it <bcp14>MAY</bcp14> retain and resume using historical data associated with that network
upon reconnection. Clients that use historical data <bcp14>MUST</bcp14> ensure that clients
with different historical data will eventually converge toward the same
behaviors. For example, clients can periodically ignore historical data to
ensure that fresh addresses are attempted.</t>
        <t>Next, the client <bcp14>SHOULD</bcp14> modify the ordered list to interleave
address families. Whichever address family is first in the list
should be followed by an endpoint of the other address family. For example,
if the first address in the sorted list is an IPv6 address, then
the first IPv4 address should be moved up in the list to be second
in the list. An implementation <bcp14>MAY</bcp14> choose to favor one
address family more by allowing multiple addresses of that
family to be attempted before trying the next.
The number of contiguous addresses of the first address family of
properties will be referred to as the "Preferred Address Family
Count" and can be a configurable value. This avoids waiting through a
long list of addresses from a given address family if connectivity
over that address family is impaired.</t>
        <t>Note that the address selection described in this section only
applies to destination addresses; Source Address Selection
(<xref section="3.2" sectionFormat="comma" target="RFC6724-UPDATE"/>) is performed
once per destination address and is out of scope of this document.</t>
      </section>
    </section>
    <section anchor="connections">
      <name>Connection Attempts</name>
      <t>Once the list of addresses received up to this point has been
constructed, the client will attempt to make connections. In order to
avoid unreasonable network load, connection attempts <bcp14>SHOULD NOT</bcp14> be
made simultaneously. Instead, one connection attempt to a single
address is started first, followed by the others, one at a
time. Starting a new connection attempt does not affect previous
attempts, as multiple connection attempts may occur in parallel.  Once
one of the connection attempts succeeds (<xref target="success"/>), all other
connections attempts that have not yet succeeded <bcp14>SHOULD</bcp14> be canceled.
Any address that was not yet attempted as a connection <bcp14>SHOULD</bcp14> be
ignored.  At that time, any asynchronous DNS queries <bcp14>MAY</bcp14> be canceled as
new addresses will not be used for this connection. However, the DNS
client resolver <bcp14>SHOULD</bcp14> still process DNS replies from the network for
a short period of time (recommended to be 1 second), as they will
populate the DNS cache and can be used for subsequent connections.</t>
      <t>If grouping addresses by application or security requirements
(<xref target="application-group"/>) produced multiple groups, the application
<bcp14>SHOULD</bcp14> start with connection attempts to the most preferred option.
The policy for attempting any addresses outside of the most preferred
group is up to the client implementation and out of scope for this document.</t>
      <t>If grouping addresses by service (<xref target="service-group"/>) produced multiple
groups, all of the addresses of the first group <bcp14>SHOULD</bcp14> be started
before starting attempts using the next group. Attempts across service groups
<bcp14>SHOULD</bcp14> be allowed to continue in parallel; in effect, the groups
are flattened into a single list.</t>
      <t>A simple implementation can have a fixed delay for how long to wait
before starting the next connection attempt. This delay is referred to
as the "Connection Attempt Delay". One recommended value for a default
delay is 250 milliseconds. A more nuanced implementation's delay
should correspond to the time when the previous attempt is retrying
its handshake (such as sending a second TCP SYN or a second QUIC
Initial), based on the retransmission timer (<xref target="RFC6298"/>,
<xref target="RFC9002"/>). If the client has historical RTT data gathered from
other connections to the same host or prefix, it can use this
information to influence its delay. Note that this algorithm should
only try to approximate the time of the first handshake packet
retransmission, and not any further retransmissions that may be
influenced by exponential timer back off. Clients that support
session resumption mechanisms (such as TLS session tickets
<xref target="RFC8446"/> or QUIC 0-RTT <xref target="RFC9001"/>) <bcp14>SHOULD</bcp14> use the same
Connection Attempt Delay for resumed connections as for new
connections.</t>
      <t>The Connection Attempt Delay <bcp14>MUST</bcp14> have a lower bound, especially if it
is computed using historical data. More specifically, a subsequent
connection <bcp14>MUST NOT</bcp14> be started within 10 milliseconds of the previous
attempt. The recommended minimum value is 100 milliseconds, which is
referred to as the "Minimum Connection Attempt Delay". This minimum
value is required to avoid congestion collapse in the presence of high
packet-loss rates. The Connection Attempt Delay <bcp14>SHOULD</bcp14> have an upper
bound, referred to as the "Maximum Connection Attempt Delay". The
current recommended value is 2 seconds.</t>
      <t>The Connection Attempt Delay is used to set a timer, referred to as
the "Next Connection Attempt Timer". Whenever this timer fires and
a connection has not been successfully established, the next
connection attempt starts, and the timer either is reset to a new
delay value or, in the case of the end of the list being reached,
is cancelled. Note that the delay value can be different for each
connection attempt (depending on the protocol being used and
the estimated RTT).</t>
      <section anchor="success">
        <name>Determining successful connection establishment</name>
        <t>The determination of when a connection attempt has successfully
completed (and other attempts can be cancelled) ultimately depends
on the client application's interpretation of the connection
state being ready to use. This will generally include at least
the transport-level handshake with the remote endpoint (such as
the TCP or QUIC handshake), but can involve other higher-level
handshakes or state checks as well.</t>
        <t>Client connections that use TCP only (without TLS or another protocol
on top, such as for unencrypted HTTP connections) will determine
successful establishment based on completing the TCP handshake
only. When TLS is used on top of of TCP (such as for encrypted HTTP
connections), clients <bcp14>SHOULD</bcp14> wait for the TLS handshake to
successfully complete before cancelling other connection
attempts. This is particularly useful for networks in which a
TCP-terminating proxy might be causing TCP handshakes to succeed
quickly, even though end-to-end connectivity with the TLS-terminating
server will fail. QUIC connections inherently include a secure
handshake in their main handshakes, and thus usually only need to
wait for a single handshake to complete.</t>
        <t>Beyond TCP, TLS, and/or QUIC handshakes, clients may also wait for
other requirements to be met before determining that the connection
establishment was successful. For example, clients generally validate that
the server's certificate provided via TLS is trusted, and that operation can
be asynchronous.</t>
        <t>In cases where the connection establishment determination goes beyond
the initial transport handshake, the Next Connection Attempt Timer
ought to be adjusted after the initial transport handshake is completed.
When the connection establishment makes progress, but has not completed,
the timer <bcp14>SHOULD</bcp14> be extended to a new value that represents an estimated
time for the full connection establishment to complete.</t>
        <t>For example, consider a case where connection establishment involves
both a TCP handshake and a TLS handshake. If the timer is initially set
to be roughly at the time when a TCP SYN packet would be retransmitted,
and the TCP handshake completes before the timer fires, the timer should
be adjusted to allow for the time in which the TLS handshake could complete.</t>
        <t>While transport layer handshakes generally do not have restrictions on
attempts to establish a connection, some cryptographic handshakes may
be dependent on SVCB ServiceMode records and could impose limitations on
establishing a connection.  For instance, ECH-capable clients may
become SVCB-reliant clients (<xref section="3" sectionFormat="of" target="SVCB"/>) when SVCB records
contain the "ech" SvcParamKey <xref target="SVCB-ECH"/>. If the
client is either an SVCB-reliant client or a SVCB-optional client that
might switch to SVCB-reliant connection establishment during the
process, the client <bcp14>MUST</bcp14> wait for SVCB records before proceeding with the
cryptographic handshake.</t>
      </section>
      <section anchor="handling-application-layer-protocol-negotiation-alpn">
        <name>Handling Application Layer Protocol Negotiation (ALPN)</name>
        <t>The <tt>alpn</tt> and <tt>no-default-alpn</tt> SvcParamKeys in SVCB records indicate the
"SVCB ALPN set," which specifies the underlying transport protocols
supported by the associated service endpoint. When the client requests
SVCB records, it <bcp14>SHOULD</bcp14> perform the procedure specified in <xref section="7.1.2" sectionFormat="of" target="SVCB"/> to determine the underlying transport protocols that both
the client and the service endpoint support. The client <bcp14>SHOULD NOT</bcp14>
attempt to make a connection to a service endpoint whose SVCB ALPN set
does not contain any protocols that the client supports. For example,
suppose the client is an HTTP client that only supports TCP-based
versions such as HTTP/1.1 and HTTP/2, and it receives the following
HTTPS record:</t>
        <artwork><![CDATA[
 example.com. 60 IN HTTPS 1 svc1.example.com. (
     alpn="h3" no-default-alpn ipv6hint=2001:db8::2 )
]]></artwork>
        <t>In this case, attempting a connection to 2001:db8::2 or any other
address resolved for <tt>svc1.example.com</tt> would be incorrect because the
record indicates that <tt>svc1.example.com</tt> only supports HTTP/3, based on
the ALPN value of "h3".</t>
        <t>If the client is an HTTP client that supports both Alt-Svc
<xref target="AltSvc"/> and SVCB (HTTPS) records, the client <bcp14>SHOULD</bcp14> ensure
that connection attempts are consistent with both the Alt-Svc
parameters and the SVCB ALPN set, as specified in <xref section="9.3" sectionFormat="of" target="SVCB"/>.</t>
      </section>
      <section anchor="dropping-or-pending-connection-attempts">
        <name>Dropping or Pending Connection Attempts</name>
        <t>Some situations related to handling SVCB responses can
require connection attempts to be dropped, or pended until
SVCB responses return.</t>
        <t><xref section="3.1" sectionFormat="of" target="SVCB"/> describes client behavior for handling
resolution failures when responses are "cryptographically protected"
using DNSSEC <xref target="DNSSEC"/> or encrypted DNS (<xref target="DOT"/>,
<xref target="DOH"/>, or <xref target="DOQ"/>, for example). If SVCB
resolution fails when using cryptographic protection, clients
<bcp14>SHOULD</bcp14> abandon connection attempts altogether to avoid
downgrade attacks.</t>
        <t>Use of cryptographic protection in DNS can influence other
parts of Happy Eyeballs connection establishment, as well.</t>
        <t>Situations in which DNS is not protected allow for any records
to be blocked or modified, so security properties derived from
SVCB records are opportunistic only. However, when DNS is cryptographically
protected, clients can be stricter about relying on the properties
from SVCB records.</t>
        <t><xref section="5.1" sectionFormat="of" target="SVCB"/> explains that clients "<bcp14>MUST NOT</bcp14> transmit any
information that could be altered by the SVCB response until it arrives",
and specifically mentions properties that affect the TLS ClientHello.
This restriction specifically applies when a client's behavior will
be altered by the SVCB response, which depends both on the client
implementation's ability to support a particular feature, as well
as the client implementation's willingness to rely on the SVCB
response to enable a particular feature.</t>
        <t>Based on this, clients in some scenarios <bcp14>MUST</bcp14> pend starting
a TLS handshake (either after TCP or as part of QUIC) until SVCB
responses have been received, even after the "Resolution Delay"
defined in <xref target="resolution"/> has been reached. Specifically, clients
<bcp14>MUST</bcp14> pend starting handshakes if <em>all</em> of the following are true:</t>
        <ol spacing="normal" type="1"><li>
            <t>DNS responses are cryptographically protected with DNSSEC or
encrypted DNS. Note that, if unencrypted and unsigned DNS is used, SVCB
information is opportunistic; clients <bcp14>MAY</bcp14> wait for SVCB responses
but do not need to.</t>
          </li>
          <li>
            <t>The client implementation supports parsing and using a particular
security-related SVCB parameter, such as the "ech" SvcParamKey
<xref target="SVCB-ECH"/>. (In contrast,
implementations that do not support actively using ECH do
not need to wait for SVCB resolution if that is the only
reason to do so).</t>
          </li>
          <li>
            <t>The client relies on the presence of the particular
SVCB-related parameter to enable the relevant protocol feature.
For example, if a connection attempt would normally be
using cleartext HTTP unless an HTTPS DNS record would
cause the client to upgrade, the client needs to
wait for the record; however, if the client already
would be using HTTP over TLS, then it is not relying
on that signal from SVCB. As another example, some SVCB
properties can affect the TLS ClientHello in ways that optimize
performance (like <tt>tls-supported-groups</tt> <xref target="I-D.ietf-tls-key-share-prediction"/>)
but only aim to save round trips. The other TLS groups
can be discovered through the TLS handshake itself, instead
of SVCB, and thus do not require waiting for SVCB responses.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="changes">
      <name>DNS Answer Changes During Happy Eyeballs Connection Setup</name>
      <t>If, during the course of connection establishment, the DNS answers
change by either adding resolved addresses (for example due to DNS
push notifications <xref target="RFC8765"/>) or removing previously resolved
addresses (for example, due to expiry of the TTL on that DNS record),
the client should react based on its current progress. Additionally, addresses
from SVCB IP hints <bcp14>SHOULD</bcp14> be removed from the list once A and AAAA records are
received for the corresponding name, if the addresses from the hints are absent from the
received records <xref section="7.3" sectionFormat="of" target="SVCB"/>.</t>
      <t>If an address is removed from the list that already had a connection
attempt started, the connection attempt <bcp14>SHOULD NOT</bcp14> be canceled, but
rather be allowed to continue. If the removed address had not yet
had a connection attempt started, it <bcp14>SHOULD</bcp14> be removed from the list
of addresses to try.</t>
      <t>If an address is added to the list, its position <bcp14>SHOULD</bcp14> be determined by
applying the sorting rules (see <xref target="sorting"/>) to the complete list of addresses,
including those previously received. This ensures that sorting rules, such as address family
interleaving, are maintained correctly regardless of when addresses arrive. For
example, consider a connection attempt in which only IPv6 addresses
are available initially, and an attempt to one IPv6 address is already in progress.
Then, when IPv4 addresses are later received, an IPv4 address should be placed next in the list of addresses to attempt
(to account for interleaving address families) ahead of any remaining IPv6 addresses, as if it had been available initially.</t>
    </section>
    <section anchor="v6only">
      <name>Supporting IPv6-Mostly and IPv6-Only Networks</name>
      <t>While many IPv6 transition protocols have been standardized and
deployed, most are transparent to client devices. Supporting IPv6-only
networks often requires specific client-side changes, especially when
interacting with IPv4-only services. Two primary mechanisms for this
are the combined use of NAT64 <xref target="RFC6146"/> with DNS64 <xref target="RFC6147"/>, or
leveraging NAT64 with a discovered PREF64 prefix <xref target="RFC8781"/>.</t>
      <t>One possible way to handle these networks is for the client device
networking stack to implement 464XLAT <xref target="RFC6877"/>. 464XLAT has the
advantage of not requiring changes to user space software; however, it
requires per-packet translation if the application is using IPv4
literals and does not encourage client application software to support
native IPv6. On platforms that do not support 464XLAT, the Happy
Eyeballs engine <bcp14>SHOULD</bcp14> follow the recommendations in this section to
properly support IPv6-mostly (<xref target="V6-MOSTLY"/>) and IPv6-only networks.</t>
      <t>The features described in this section <bcp14>SHOULD</bcp14> only be enabled when the
host detects an IPv6-mostly or IPv6-only network. A simple heuristic
to detect one of these networks is to check if the network offers
routable IPv6 addressing, does not offer routable IPv4 addressing, and
offers a DNS resolver address.</t>
      <section anchor="literals">
        <name>IPv4 Address Literals</name>
        <t>If client applications or users wish to connect to IPv4 address
literals, the Happy Eyeballs engine will need to perform NAT64 address
synthesis for them. The solution is similar to "Bump-in-the-Host"
<xref target="RFC6535"/> but is implemented inside the Happy Eyeballs client.</t>
        <t>Note that some IPv4 prefixes are scoped to a given host or network,
such as 0.0.0.0/8, 127.0.0.0/8, 169.254.0.0/16, and
255.255.255.255/32, and therefore do not require NAT64 address
synthesis.</t>
      </section>
      <section anchor="pref64-detection">
        <name>Discovering and Utilizing PREF64</name>
        <t>When an IPv4 address is passed into the Happy Eyeballs implementation
instead of a hostname, it <bcp14>SHOULD</bcp14> use PREF64s received from Router
Advertisements <xref target="RFC8781"/>.</t>
        <t>With PREF64 available, networks might choose to not deploy DNS64, as
the latter has a number of disadvantages (see
<xref section="4.3.4" sectionFormat="comma" target="V6-MOSTLY"/>). To ensure
compatibility with such networks, if PREF64 is available, clients
<bcp14>SHOULD</bcp14> send an A query in addition to an AAAA query for a given
hostname. This allows the client to receive any existing IPv4 A
records and perform local NAT64 address synthesis, eliminating the
network's need to run DNS64.</t>
        <t>If the network does not provide PREF64s, the implementation <bcp14>SHOULD</bcp14>
query the network for the NAT64 prefix using "Discovery of the IPv6
Prefix Used for IPv6 Address Synthesis" <xref target="RFC7050"/>. It then
synthesizes an appropriate IPv6 address (or several) using the
encoding described in "IPv6 Addressing of IPv4/ IPv6 Translators"
<xref target="RFC6052"/>. The synthesized addresses are then inserted into the
list of addresses as if they were results from DNS A queries;
connection attempts follow the algorithm described above (see
<xref target="connections"/>).</t>
        <t>Such translation also applies to any IPv4 addresses received in A
records and IPv4 address hints received in SVCB records.</t>
      </section>
      <section anchor="dns64">
        <name>Supporting DNS64</name>
        <t>If PREF64 is not available and the NAT64 prefix cannot be discovered,
clients <bcp14>SHOULD</bcp14> assume the network is relying on DNS64 for IPv4-to-IPv6
address synthesis. In this scenario, clients will typically only
receive AAAA records from DNS queries, as DNS64 servers synthese these
records for IPv4-only domains.</t>
      </section>
      <section anchor="broken">
        <name>Hostnames with Broken AAAA Records</name>
        <t>At the time of writing, there exist a small but non-negligible number
of hostnames that resolve to valid A records and broken AAAA records,
which we define as AAAA records that contain seemingly valid IPv6
addresses but those addresses never reply when contacted on the usual
ports. These can be, for example, caused by:</t>
        <ul spacing="normal">
          <li>
            <t>Mistyping of the IPv6 address in the DNS zone configuration</t>
          </li>
          <li>
            <t>Routing black holes</t>
          </li>
          <li>
            <t>Service outages</t>
          </li>
        </ul>
        <t>While an algorithm complying with the other sections of this document
would correctly handle such hostnames on a dual-stack network, they
will not necessarily function correctly on IPv6-only networks with
NAT64 and DNS64. Since DNS64 recursive resolvers rely on the
authoritative name servers sending negative (no error, no data)
responses for AAAA records in order to synthesize, they will not
synthesize records for these particular hostnames and will instead
pass through the broken AAAA record.</t>
        <t>In order to support these scenarios, the client device needs to query
the DNS for the A record and then perform local synthesis. Since
these types of hostnames are rare and, in order to minimize load on
DNS servers, this A query should only be performed when the client
has given up on the AAAA records it initially received. This can be
achieved by using a longer timeout, referred to as the "Last Resort
Local Synthesis Delay"; the delay is recommended to be 2 seconds.
The timer is started when the last connection attempt is fired. If
no connection attempt has succeeded when this timer fires, the device
queries the DNS for the IPv4 address and, on reception of a valid A
record, treats it as if it were provided by the application (see
<xref target="literals"/>).</t>
      </section>
      <section anchor="virtual-private-networks">
        <name>Virtual Private Networks</name>
        <t>Some Virtual Private Networks (VPNs) may be configured to handle DNS
queries from the device. The configuration could encompass all
queries or a subset such as "*.internal.example.com". These VPNs can
also be configured to only route part of the IPv4 address space, such
as 192.0.2.0/24. However, if an internal hostname resolves to an
external IPv4 address, these can cause issues if the underlying
network is IPv6-only. As an example, let's assume that
"www.internal.example.com" has exactly one A record, 198.51.100.42,
and no AAAA records. The client will send the DNS query to the
company's recursive resolver and that resolver will reply with these
records. The device now only has an IPv4 address to connect to and
no route to that address. Since the company's resolver does not know
the NAT64 prefix of the underlying network, it cannot synthesize the
address. Similarly, the underlying network's DNS64 recursive
resolver does not know the company's internal addresses, so it cannot
resolve the hostname. Because of this, the client device needs to
resolve the A record using the company's resolver and then locally
synthesize an IPv6 address, as if the resolved IPv4 address were
provided by the application (<xref target="literals"/>).</t>
      </section>
    </section>
    <section anchor="summary-of-configurable-values">
      <name>Summary of Configurable Values</name>
      <t>The values that may be configured as defaults on a client for use in
Happy Eyeballs are as follows:</t>
      <ul spacing="normal">
        <li>
          <t>Resolution Delay (<xref target="resolution"/>): The time to wait for AAAA and/or SVCB/HTTPS
records after receiving an A record. Recommended to be 50 milliseconds.</t>
        </li>
        <li>
          <t>Preferred Address Family Count (<xref target="sorting"/>): The number of
addresses belonging to the preferred address family (such as IPv6)
that should be attempted before attempting the next address family.
Recommended to be 1; 2 may be used to more aggressively favor a
particular combination of address family and protocol.</t>
        </li>
        <li>
          <t>Connection Attempt Delay (<xref target="connections"/>): The time to wait between
connection attempts in the absence of RTT data. Recommended to be
250 milliseconds.</t>
        </li>
        <li>
          <t>Minimum Connection Attempt Delay (<xref target="connections"/>): The minimum time to
wait between connection attempts. Recommended to be 100
milliseconds. <bcp14>MUST NOT</bcp14> be less than 10 milliseconds.</t>
        </li>
        <li>
          <t>Maximum Connection Attempt Delay (<xref target="connections"/>): The maximum time to
wait between connection attempts. Recommended to be 2 seconds.</t>
        </li>
        <li>
          <t>Last Resort Local Synthesis Delay (<xref target="broken"/>): The time to wait
after starting the last IPv6 attempt and before sending the A
query. Recommended to be 2 seconds.</t>
        </li>
      </ul>
      <t>The delay values described in this section were determined
empirically by measuring the timing of connections on a very wide set
of production devices. They were picked to reduce wait times noticed
by users while minimizing load on the network. As time passes, it is
expected that the properties of networks will evolve. For that
reason, it is expected that the values chosen by implementations
will change over time. Implementors <bcp14>MAY</bcp14> use values different from the
recommended values listed above, without changing this specification,
as long as they do not violate any of the normative requirements (such
as minimum delays).</t>
    </section>
    <section anchor="limitations">
      <name>Limitations</name>
      <t>Happy Eyeballs will handle initial connection failures at the transport
layer (such as TCP or QUIC); however, other failures or performance
issues may still affect the chosen connection.</t>
      <section anchor="path-maximum-transmission-unit-discovery">
        <name>Path Maximum Transmission Unit Discovery</name>
        <t>Connections that use TCP only (without TLS or another protocol on top)
perform connection racing only during the TCP handshake. Such connections
can encounter issues where the handshake (using small packets) completes
but then large packets are dropped or incorrectly handled by the network
due to a small MTU being configured on the network. Such issues might be specific to IPv6
traffic on the network.</t>
        <t>This problem can also occur when TLS is used, but the larger
messages used in many TLS handshakes are often sufficient to
ensure maximum-size TCP segments are deliverable. For QUIC
connections, a minimum MTU of at least 1200 bytes
<xref section="8.1-5" sectionFormat="comma" target="RFC9000"/> is guaranteed, but there is a chance that
larger values may not be available.</t>
        <t>Solving these issues is out of scope of this document. One suggested
approach is to use "Packetization Layer Path MTU Discovery" <xref target="RFC4821"/>.</t>
      </section>
      <section anchor="application-layer">
        <name>Application Layer</name>
        <t>If the DNS returns multiple addresses for different application
servers, the application itself may not be operational and functional
on all of them. Common examples include Transport Layer Security
(TLS) and HTTP.</t>
      </section>
      <section anchor="hiding-operational-issues">
        <name>Hiding Operational Issues</name>
        <t>It has been observed in practice that Happy Eyeballs can hide issues
in networks. For example, if a misconfiguration causes IPv6 to
consistently fail on a given network while IPv4 is still functional,
Happy Eyeballs may impair the operator's ability to notice the issue.
It is recommended that network operators deploy external means of
monitoring to ensure functionality of all address families.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Note that applications should not rely upon a stable
hostname-to-address mapping to ensure any security properties, since
DNS results may change between queries. Happy Eyeballs may make it
more likely that subsequent connections to a single hostname use
different IP addresses.</t>
      <t>When using HTTP, HTTPS resource records indicate that clients should
require HTTPS when connecting to an origin (see <xref section="9.5" sectionFormat="of" target="RFC9460"/>), so an active attacker can attempt a downgrade attack by
interfering with the successful delivery of HTTPS resource records.
When clients use insecure DNS mechanisms, any on-path attacker can
simply drop HTTPS resource records, so clients cannot tell the
difference between an attack and a resolver that fails to respond to
HTTPS queries.</t>
      <t>However, when using cryptographically protected DNS mechanisms, as
described in <xref section="3.1" sectionFormat="of" target="RFC9460"/>, both SVCB-reliant and
SVCB-optional clients <bcp14>MUST NOT</bcp14> send any unencrypted data after the TCP
handshake completes unless they have received a valid HTTPS response.
Those clients need to complete a TLS handshake before proceeding if
that response is non-negative.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document does not require any IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="ECH">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cryptography Consulting LLC</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="14" month="June" year="2025"/>
            <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-25"/>
        </reference>
        <reference anchor="SVCB">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <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">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <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="SVCB-ECH">
          <front>
            <title>Bootstrapping TLS Encrypted ClientHello with DNS Service Bindings</title>
            <author fullname="Benjamin M. Schwartz" initials="B. M." surname="Schwartz">
              <organization>Meta Platforms, Inc.</organization>
            </author>
            <author fullname="Mike Bishop" initials="M." surname="Bishop">
              <organization>Akamai Technologies</organization>
            </author>
            <author fullname="Erik Nygren" initials="E." surname="Nygren">
              <organization>Akamai Technologies</organization>
            </author>
            <date day="16" month="June" year="2025"/>
            <abstract>
              <t>   To use TLS Encrypted ClientHello (ECH) the client needs to learn the
   ECH configuration for a server before it attempts a connection to the
   server.  This specification provides a mechanism for conveying the
   ECH configuration information via DNS, using a SVCB or HTTPS resource
   record (RR).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-svcb-ech-08"/>
        </reference>
        <reference anchor="RFC6724">
          <front>
            <title>Default Address Selection for Internet Protocol Version 6 (IPv6)</title>
            <author fullname="D. Thaler" initials="D." role="editor" surname="Thaler"/>
            <author fullname="R. Draves" initials="R." surname="Draves"/>
            <author fullname="A. Matsumoto" initials="A." surname="Matsumoto"/>
            <author fullname="T. Chown" initials="T." surname="Chown"/>
            <date month="September" year="2012"/>
            <abstract>
              <t>This document describes two algorithms, one for source address selection and one for destination address selection. The algorithms specify default behavior for all Internet Protocol version 6 (IPv6) implementations. They do not override choices made by applications or upper-layer protocols, nor do they preclude the development of more advanced mechanisms for address selection. The two algorithms share a common context, including an optional mechanism for allowing administrators to provide policy that can override the default behavior. In dual-stack implementations, the destination address selection algorithm can consider both IPv4 and IPv6 addresses -- depending on the available source addresses, the algorithm might prefer IPv6 addresses over IPv4 addresses, or vice versa.</t>
              <t>Default address selection as defined in this specification applies to all IPv6 nodes, including both hosts and routers. This document obsoletes RFC 3484. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6724"/>
          <seriesInfo name="DOI" value="10.17487/RFC6724"/>
        </reference>
        <reference anchor="RFC6724-UPDATE">
          <front>
            <title>Prioritizing known-local IPv6 ULAs through address selection policy</title>
            <author fullname="Nick Buraglio" initials="N." surname="Buraglio">
              <organization>Energy Sciences Network</organization>
            </author>
            <author fullname="Tim Chown" initials="T." surname="Chown">
              <organization>Jisc</organization>
            </author>
            <author fullname="Jeremy Duncan" initials="J." surname="Duncan">
              <organization>Tachyon Dynamics</organization>
            </author>
            <date day="11" month="August" year="2025"/>
            <abstract>
              <t>   This document updates the default address selection algorithm for
   Internet Protocol Version 6 (IPv6), originally specified in RFC 6724,
   based on accumulated operational experience.  It introduces the
   concept of "known-local" Unique Local Address (ULA) prefixes within
   the fd00::/8 block and specifies that ULA-to-ULA communications using
   such prefixes should be preferred over both IPv4-to-IPv4 and GUA-to-
   GUA (Global Unicast Address) communications in local use scenarios.
   The document defines mechanisms for nodes to identify and incorporate
   known-local prefixes into their address selection policy tables.  It
   introduces a requirement to implement Rule 5.5 of RFC 6724 and
   reduces the default precedence for 6to4 addresses.  These updates
   enhance the supportability of typical deployment environments,
   including automatic and unmanaged configurations, and promote
   consistent IPv6-over-IPv4 precedence behavior for both ULA and GUA
   within local networks.  The document acknowledges that certain
   atypical deployment models may require explicit configuration to
   achieve intended operational outcomes.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-6man-rfc6724-update-25"/>
        </reference>
        <reference anchor="RFC6298">
          <front>
            <title>Computing TCP's Retransmission Timer</title>
            <author fullname="V. Paxson" initials="V." surname="Paxson"/>
            <author fullname="M. Allman" initials="M." surname="Allman"/>
            <author fullname="J. Chu" initials="J." surname="Chu"/>
            <author fullname="M. Sargent" initials="M." surname="Sargent"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>This document defines the standard algorithm that Transmission Control Protocol (TCP) senders are required to use to compute and manage their retransmission timer. It expands on the discussion in Section 4.2.3.1 of RFC 1122 and upgrades the requirement of supporting the algorithm from a SHOULD to a MUST. This document obsoletes RFC 2988. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6298"/>
          <seriesInfo name="DOI" value="10.17487/RFC6298"/>
        </reference>
        <reference anchor="RFC6146">
          <front>
            <title>Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers</title>
            <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <author fullname="I. van Beijnum" initials="I." surname="van Beijnum"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document describes stateful NAT64 translation, which allows IPv6-only clients to contact IPv4 servers using unicast UDP, TCP, or ICMP. One or more public IPv4 addresses assigned to a NAT64 translator are shared among several IPv6-only clients. When stateful NAT64 is used in conjunction with DNS64, no changes are usually required in the IPv6 client or the IPv4 server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6146"/>
          <seriesInfo name="DOI" value="10.17487/RFC6146"/>
        </reference>
        <reference anchor="RFC6147">
          <front>
            <title>DNS64: DNS Extensions for Network Address Translation from IPv6 Clients to IPv4 Servers</title>
            <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
            <author fullname="A. Sullivan" initials="A." surname="Sullivan"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <author fullname="I. van Beijnum" initials="I." surname="van Beijnum"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>DNS64 is a mechanism for synthesizing AAAA records from A records. DNS64 is used with an IPv6/IPv4 translator to enable client-server communication between an IPv6-only client and an IPv4-only server, without requiring any changes to either the IPv6 or the IPv4 node, for the class of applications that work through NATs. This document specifies DNS64, and provides suggestions on how it should be deployed in conjunction with IPv6/IPv4 translators. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6147"/>
          <seriesInfo name="DOI" value="10.17487/RFC6147"/>
        </reference>
        <reference anchor="RFC8781">
          <front>
            <title>Discovering PREF64 in Router Advertisements</title>
            <author fullname="L. Colitti" initials="L." surname="Colitti"/>
            <author fullname="J. Linkova" initials="J." surname="Linkova"/>
            <date month="April" year="2020"/>
            <abstract>
              <t>This document specifies a Neighbor Discovery option to be used in Router Advertisements (RAs) to communicate prefixes of Network Address and Protocol Translation from IPv6 clients to IPv4 servers (NAT64) to hosts.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8781"/>
          <seriesInfo name="DOI" value="10.17487/RFC8781"/>
        </reference>
        <reference anchor="RFC6535">
          <front>
            <title>Dual-Stack Hosts Using "Bump-in-the-Host" (BIH)</title>
            <author fullname="B. Huang" initials="B." surname="Huang"/>
            <author fullname="H. Deng" initials="H." surname="Deng"/>
            <author fullname="T. Savolainen" initials="T." surname="Savolainen"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>Bump-in-the-Host (BIH) is a host-based IPv4 to IPv6 protocol translation mechanism that allows a class of IPv4-only applications that work through NATs to communicate with IPv6-only peers. The host on which applications are running may be connected to IPv6-only or dual-stack access networks. BIH hides IPv6 and makes the IPv4-only applications think they are talking with IPv4 peers by local synthesis of IPv4 addresses. This document obsoletes RFC 2767 and RFC 3338. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6535"/>
          <seriesInfo name="DOI" value="10.17487/RFC6535"/>
        </reference>
        <reference anchor="RFC7050">
          <front>
            <title>Discovery of the IPv6 Prefix Used for IPv6 Address Synthesis</title>
            <author fullname="T. Savolainen" initials="T." surname="Savolainen"/>
            <author fullname="J. Korhonen" initials="J." surname="Korhonen"/>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <date month="November" year="2013"/>
            <abstract>
              <t>This document describes a method for detecting the presence of DNS64 and for learning the IPv6 prefix used for protocol translation on an access network. The method depends on the existence of a well-known IPv4-only fully qualified domain name "ipv4only.arpa.". The information learned enables nodes to perform local IPv6 address synthesis and to potentially avoid NAT64 on dual-stack and multi-interface deployments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7050"/>
          <seriesInfo name="DOI" value="10.17487/RFC7050"/>
        </reference>
        <reference anchor="RFC6052">
          <front>
            <title>IPv6 Addressing of IPv4/IPv6 Translators</title>
            <author fullname="C. Bao" initials="C." surname="Bao"/>
            <author fullname="C. Huitema" initials="C." surname="Huitema"/>
            <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
            <author fullname="M. Boucadair" initials="M." surname="Boucadair"/>
            <author fullname="X. Li" initials="X." surname="Li"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>This document discusses the algorithmic translation of an IPv6 address to a corresponding IPv4 address, and vice versa, using only statically configured information. It defines a well-known prefix for use in algorithmic translations, while allowing organizations to also use network-specific prefixes when appropriate. Algorithmic translation is used in IPv4/IPv6 translators, as well as other types of proxies and gateways (e.g., for DNS) used in IPv4/IPv6 scenarios. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6052"/>
          <seriesInfo name="DOI" value="10.17487/RFC6052"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <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="RFC4821">
          <front>
            <title>Packetization Layer Path MTU Discovery</title>
            <author fullname="M. Mathis" initials="M." surname="Mathis"/>
            <author fullname="J. Heffner" initials="J." surname="Heffner"/>
            <date month="March" year="2007"/>
            <abstract>
              <t>This document describes a robust method for Path MTU Discovery (PMTUD) that relies on TCP or some other Packetization Layer to probe an Internet path with progressively larger packets. This method is described as an extension to RFC 1191 and RFC 1981, which specify ICMP-based Path MTU Discovery for IP versions 4 and 6, respectively. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4821"/>
          <seriesInfo name="DOI" value="10.17487/RFC4821"/>
        </reference>
        <reference anchor="RFC9460">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="HEV2">
          <front>
            <title>Happy Eyeballs Version 2: Better Connectivity Using Concurrency</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <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="RFC6555">
          <front>
            <title>Happy Eyeballs: Success with Dual-Stack Hosts</title>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <author fullname="A. Yourtchenko" initials="A." surname="Yourtchenko"/>
            <date month="April" year="2012"/>
            <abstract>
              <t>When a server's IPv4 path and protocol are working, but the server's IPv6 path and protocol are not working, a dual-stack client application experiences significant connection delay compared to an IPv4-only client. This is undesirable because it causes the dual- stack client to have a worse user experience. This document specifies requirements for algorithms that reduce this user-visible delay and provides an algorithm. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6555"/>
          <seriesInfo name="DOI" value="10.17487/RFC6555"/>
        </reference>
        <reference anchor="HTTP3">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="AltSvc">
          <front>
            <title>HTTP Alternative Services</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <author fullname="J. Reschke" initials="J." surname="Reschke"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This document specifies "Alternative Services" for HTTP, which allow an origin's resources to be authoritatively available at a separate network location, possibly accessed with a different protocol configuration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7838"/>
          <seriesInfo name="DOI" value="10.17487/RFC7838"/>
        </reference>
        <reference anchor="IPV6">
          <front>
            <title>Internet Protocol, Version 6 (IPv6) Specification</title>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <date month="July" year="2017"/>
            <abstract>
              <t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="86"/>
          <seriesInfo name="RFC" value="8200"/>
          <seriesInfo name="DOI" value="10.17487/RFC8200"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <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="RFC7413">
          <front>
            <title>TCP Fast Open</title>
            <author fullname="Y. Cheng" initials="Y." surname="Cheng"/>
            <author fullname="J. Chu" initials="J." surname="Chu"/>
            <author fullname="S. Radhakrishnan" initials="S." surname="Radhakrishnan"/>
            <author fullname="A. Jain" initials="A." surname="Jain"/>
            <date month="December" year="2014"/>
            <abstract>
              <t>This document describes an experimental TCP mechanism called TCP Fast Open (TFO). TFO allows data to be carried in the SYN and SYN-ACK packets and consumed by the receiving end during the initial connection handshake, and saves up to one full round-trip time (RTT) compared to the standard TCP, which requires a three-way handshake (3WHS) to complete before data can be exchanged. However, TFO deviates from the standard TCP semantics, since the data in the SYN could be replayed to an application in some rare circumstances. Applications should not use TFO unless they can tolerate this issue, as detailed in the Applicability section.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7413"/>
          <seriesInfo name="DOI" value="10.17487/RFC7413"/>
        </reference>
        <reference anchor="RFC9002">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC9001">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="DNSSEC">
          <front>
            <title>DNS Security Extensions (DNSSEC)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="February" year="2023"/>
            <abstract>
              <t>This document describes the DNS Security Extensions (commonly called "DNSSEC") that are specified in RFCs 4033, 4034, and 4035, as well as a handful of others. One purpose is to introduce all of the RFCs in one place so that the reader can understand the many aspects of DNSSEC. This document does not update any of those RFCs. A second purpose is to state that using DNSSEC for origin authentication of DNS data is the best current practice. A third purpose is to provide a single reference for other documents that want to refer to DNSSEC.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="237"/>
          <seriesInfo name="RFC" value="9364"/>
          <seriesInfo name="DOI" value="10.17487/RFC9364"/>
        </reference>
        <reference anchor="DOT">
          <front>
            <title>Specification for DNS over Transport Layer Security (TLS)</title>
            <author fullname="Z. Hu" initials="Z." surname="Hu"/>
            <author fullname="L. Zhu" initials="L." surname="Zhu"/>
            <author fullname="J. Heidemann" initials="J." surname="Heidemann"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <author fullname="D. Wessels" initials="D." surname="Wessels"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="May" year="2016"/>
            <abstract>
              <t>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="DOH">
          <front>
            <title>DNS Queries over HTTPS (DoH)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <date month="October" year="2018"/>
            <abstract>
              <t>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="DOQ">
          <front>
            <title>DNS over Dedicated QUIC Connections</title>
            <author fullname="C. Huitema" initials="C." surname="Huitema"/>
            <author fullname="S. Dickinson" initials="S." surname="Dickinson"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <date month="May" year="2022"/>
            <abstract>
              <t>This document describes the use of QUIC to provide transport confidentiality for DNS. The encryption provided by QUIC has similar properties to those provided by TLS, while QUIC transport eliminates the head-of-line blocking issues inherent with TCP and provides more efficient packet-loss recovery than UDP. DNS over QUIC (DoQ) has privacy properties similar to DNS over TLS (DoT) specified in RFC 7858, and latency characteristics similar to classic DNS over UDP. This specification describes the use of DoQ as a general-purpose transport for DNS and includes the use of DoQ for stub to recursive, recursive to authoritative, and zone transfer scenarios.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9250"/>
          <seriesInfo name="DOI" value="10.17487/RFC9250"/>
        </reference>
        <reference anchor="I-D.ietf-tls-key-share-prediction">
          <front>
            <title>TLS Key Share Prediction</title>
            <author fullname="David Benjamin" initials="D." surname="Benjamin">
              <organization>Google LLC</organization>
            </author>
            <date day="29" month="August" year="2025"/>
            <abstract>
              <t>   This document defines a mechanism for servers to communicate key
   share preferences in DNS.  Clients may use this information to reduce
   TLS handshake round-trips.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-key-share-prediction-03"/>
        </reference>
        <reference anchor="RFC8765">
          <front>
            <title>DNS Push Notifications</title>
            <author fullname="T. Pusateri" initials="T." surname="Pusateri"/>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>The Domain Name System (DNS) was designed to return matching records efficiently for queries for data that are relatively static. When those records change frequently, DNS is still efficient at returning the updated results when polled, as long as the polling rate is not too high. But, there exists no mechanism for a client to be asynchronously notified when these changes occur. This document defines a mechanism for a client to be notified of such changes to DNS records, called DNS Push Notifications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8765"/>
          <seriesInfo name="DOI" value="10.17487/RFC8765"/>
        </reference>
        <reference anchor="RFC6877">
          <front>
            <title>464XLAT: Combination of Stateful and Stateless Translation</title>
            <author fullname="M. Mawatari" initials="M." surname="Mawatari"/>
            <author fullname="M. Kawashima" initials="M." surname="Kawashima"/>
            <author fullname="C. Byrne" initials="C." surname="Byrne"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>This document describes an architecture (464XLAT) for providing limited IPv4 connectivity across an IPv6-only network by combining existing and well-known stateful protocol translation (as described in RFC 6146) in the core and stateless protocol translation (as described in RFC 6145) at the edge. 464XLAT is a simple and scalable technique to quickly deploy limited IPv4 access service to IPv6-only edge networks without encapsulation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6877"/>
          <seriesInfo name="DOI" value="10.17487/RFC6877"/>
        </reference>
        <reference anchor="V6-MOSTLY">
          <front>
            <title>IPv6-Mostly Networks: Deployment and Operations Considerations</title>
            <author fullname="Nick Buraglio" initials="N." surname="Buraglio">
              <organization>Energy Sciences Network</organization>
            </author>
            <author fullname="Ondřej Caletka" initials="O." surname="Caletka">
              <organization>RIPE NCC</organization>
            </author>
            <author fullname="Jen Linkova" initials="J." surname="Linkova">
              <organization>Google</organization>
            </author>
            <date day="20" month="October" year="2025"/>
            <abstract>
              <t>   This document discusses a deployment scenario called "an IPv6-Mostly
   network", when IPv6-only and IPv4-enabled endpoints coexist on the
   same network (network segment, VLAN, SSID etc).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-v6ops-6mops-04"/>
        </reference>
      </references>
    </references>
    <?line 987?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors thank Dan Wing, Andrew Yourtchenko, and everyone else who
worked on the original Happy Eyeballs design <xref target="RFC6555"/>, Josh
Graessley, Stuart Cheshire, and the rest of team at Apple that helped
implement and instrument this algorithm, and Jason Fesler and Paul
Saab who helped measure and refine this algorithm. The authors would
also like to thank Fred Baker, Nick Chettle, Lorenzo Colitti, Igor
Gashinsky, Geoff Huston, Jen Linkova, Paul Hoffman, Philip Homburg,
Warren Kumari, Erik Nygren, Jordi Palet Martinez, Rui Paulo, Stephen
Strowes, Jinmei Tatuya, Dave Thaler, Joe Touch, and James Woodyatt
for their input and contributions.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1963IbR5bm/3yKWuqHyQ4AIimKluXp6aYluaVuXTgmbY9j
YyNcAApktQpVmKoCaVjhfpZ5ln2yPd+55KVQlDt259fGdEe3CKAq8+TJk+d+
Tk6nU9eXfVU8zw5e55vNLnu1K+Z5VXXZD0XblU2dPXmefVP0fdFmL5q6LhZ9
eVf2u+z7rqxv8NVi27ZFvdgduHw+b4u7/ZHunhy4Rd4XN027e551/dK5ZbOo
8zXNumzzVT8ti341vcVb8v+Fvjq9ezI9fuK67XxddoCm323opTevrr919XY9
L9rnbkkjP3eLpu6Kutt2z7O+3RaOwHji8rbIn2c/vrl290378aZttpvn2euL
y8ufsh/pCyzgL/jSfSx29MTyucumWbm5O9d/z/Bvmy/oQfzVLzb45z+25QL/
dneLOf4tFrfurqi3BEWWxZPQR4E3nSzL1nlZPc94pX/G0mdNSxNkebu4pa/7
ftM9f/wYD+Gb8q6Y2UOP8cXjedvcd8Vjfv8x5iz72+38ecZYvL8RFD4WzApS
I3zS8xVhrOtpn2yqf+rFx7+7VbPbfl0dOJdv+9umBTJpsixbbatKNvu6Wa93
2WW+rXb8C60or8tf85529nl2sdlURfamXvBvhSDpoN/g8T/n+HG2aNYH+8O+
zO/KZXZFqKrzX0sb+Xn2l6a5oRHfvn2RjLjs9ElG659v8PUDI78vl7dl9tf8
79vfHbXGo3+nJ/98ww88MOLfirqk6bM33W05z+n/RhDxwAz8eDK6q5t2TS/d
Eem5sl5Fn9x0Os3yedcT+fbOvcvrXUbvrLc0PU+TbdqmbxYNnc9mU7T0HRFo
c0fHvL8tsnWzLNqaNoPOfV302bYr3G3T9VhEN8uub4uuyJpVX9RZW3RNdVdk
fZOtt1Vf8iZeZvlySb90RTfJinxxSw+7+1taOhH/jkifXliWq1VBrKPPaH6G
vV4UWV4vCdDAaNziNscairbs+nJBk1+VeK7bFItyVS7CRIRF+5Ct8nVZlfTd
4ZtLOsb0C/17fsSTz4tsXjWLj8VyktFR+ljUE7xKTGbabPpynVcZoSfPaN1g
G5NsQSPVfef627zPcmKF600f1mrAEgPKSkIrQVtVRSVrzDMCH+DS8unM5fOq
pE0kTOfRe4TttmC28rHaAblllxGD3K6BG11n0bm2oEfaAt/SArHYijgqnf11
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
Sgq9r5TzM/2Mr1Ib2NjqxJkgnZSYr4WkR+nq3NTTDdhlDKTjXK4dy+kHpuEl
RrWXIL4eV7JB3Ry5KFVWjlVK6xjvzJGrF7gct2+y0HZVq/uNsqJrxB+q2h3U
lO0ttnOD+4MHNdFhAydSwZi0+oDnb6xLSBesUE1H2SUlanLHhi/Zw4UqY11r
tNSI9WptDKOBeHPc+33wN+ohXGpAWBKJzzEfViLu9xUpV848plIZqVfnWiyO
edGbi/cXe3zoOhbSwX9oR4hzEPBe7nuKuul0yp1TMebFAp5G0vREpXGfnov3
p1j+8WBFmlZxoK0BJXAoZv3H7CXR0I8c7b6o6fDfZz8RRfYLooaPjaSBgT52
cEEXFTc4InudOHZQD/2FVgM2RXRR3tj1NudPnz4FCfy16W7dX9qctqUqdqQg
9Vs4+F+QAnNbcmGqOqpRW8vCusjXULOgVyiPwb08uHjRp91yQwtu2y/tmpIG
uDLkX7mS7tuCZhVX52W+rdxVns+xIh1SDWu9OUji7+lg4uE2DEq5GmuxXJQl
rmtC6rfQnr8hAqGD9Z6Maqyv7yG23xK51L82tPkksPpykr2hkd1fcvQC6j4S
Qv5SNCviQtuuh4X7VzqUb0vairt8wiBnr+lnUn3pE4ntkhhJs55v25uJ+zFH
nU72t+06b2ncV235MXu/u2mRvP9X3O1H7xMNkwEFF0fx6yT7blvymA22odgg
ueiqb3GVIr1R1uuizK7zfrujqV/i8Fzf0gAtRqO/G7IFDLXwD/zYNMsdMSOn
wbMSVghuJ5NmSHVPLGKrhPt/AKny5A2EuAAA

-->

</rfc>
