<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-happy-happyeyeballs-v3-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.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-01"/>
    <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="2025" month="July" day="05"/>
    <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. 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 allow connectivity on both IPv6 and IPv4, IPv6 is
assumed to be the preferred address family. If only one of IPv6 or IPv4 offers
connectivity, 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>
      <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 NOT</bcp14> be used across different
network interfaces and <bcp14>SHOULD</bcp14> be flushed whenever a device changes
the network to which it is attached.</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.</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>
      <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) depends on the
protocols being used to establish a connection. This can involve one
or more protocol handshakes.</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>MAY</bcp14> choose to 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 only need to wait for a
single handshake to 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>
    <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,
once A and AAAA records are received, addresses received via SVCB
hints that are not included in the A and AAAA records for the
corresponding address family <bcp14>SHOULD</bcp14> be removed from the list, as
specified in <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, it should be sorted into the list
of addresses not yet attempted according to the rules above (see
<xref target="sorting"/>).</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 clide-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 a AAAA record
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 these values will change over time.
Implementors should feel welcome to use different values without
changing this specification. Since IPv6 issues are expected to be
less common, the delays <bcp14>SHOULD</bcp14> be increased with time as client
software is updated.</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>For TCP connections, since Happy Eyeballs is only active during the
initial handshake and TCP does not pass the initial handshake, issues
related to MTU can be masked and go unnoticed during Happy Eyeballs.
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. Solving this issue is out of scope
of this document. One solution 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>
    </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="24" month="June" 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
   further clarifies the unconditional requirement for implementing 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-22"/>
        </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>
      </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="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="3" month="March" 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-01"/>
        </reference>
      </references>
    </references>
    <?line 813?>

<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+197XIbR3bo/36KDvXDZAqARIqiZDrOLi3JFnclihFpO65b
t8oDoEHOajCDTM+QglXeZ8mz3Ce757M/BkN5q5JfqWSzKwKY6T59+vT5Pqen
06npyq5yp3bvTbHZbO3rrZsXVeXtT671ZVPbp6f2O9d1rrUvm7p2i668K7ut
/dGX9Q1+tejb1tWL7Z4p5vPW3e2OdPd0zyyKzt007fbU+m5pzLJZ1MUaZl22
xaqblq5bTW/xLf5fJ69O755Onxwa38/XpUdouu0GXjp/ff29qfv13LWnZgkj
n5pFU3tX+96f2q7tnQEwnpqidcWp/fn82tw37cebtuk3p/bN2eXlL/Zn+AIX
8AN+aT66LTyxPDV2asvN3Yn8e4z/tsUCHsS/usUG//mPvlzgv/5uMcd/3eLW
3Lm6ByisTSeBjwxvPpm166KsTi2t9M+49FnTwgS2aBe38HXXbfzp48f4EH5T
3rmZPvQYv3g8b5t77x7T+49xzrK77eenlrB4f8MofMyYZaQm+ITnK8CY72Cf
dKp/6MXHf7hVs9tuXe0ZU/TdbdMiMmEya1d9VfFmXzfr9dZeFn21pV9gRUVd
/lZ0sLOn9myzqZw9rxf0m2Mk7XUbfPzPBf44WzTrvd1hXxV35dJeAarq4rdS
Rz61PzTNDYz49u3LbMSllycJrX++wa8fGPmiXN6W9i/F3/o/HLXGR/8GT/75
hh54YMS/urqE6e25vy3nBfzPCCIemIEez0Y3ddOu4aU7ID1T1qvkk5lOp7aY
+w7ItzPmXVFvLbyz7mF6msZu2qZrFg2cz2bjWvgOCLS5g2Pe3Tq7bpaurWEz
4NzXrrO9d+a28R0uws/s9a3zzjarztW2db6p7pztGrvuq66kTby0xXIJv3jn
J9YVi1t42NzfwtKB+LdA+vDCslytHLCOzsL8BHu9cLaolwBoZDRmcVvgGlxb
+q5cwORXJT7nN25RrspFnAiwqB/sqliXVQnf7Z9fwjGGX+DfkwOafO7svGoW
H91yYuEofXT1BF8FJjNtNl25LioL6CksrBvZxsQuYKS686a7LTpbACtcb7q4
VgUWGJAtAa0AbVW5itdYWAAfwYXlw5kr5lUJmwiYLpL3ANutI7bysdoicktv
gUH2a8SNrNN50zp4pHX4LSwQF1sBR4Wzv/aWQGvdsoepOnwfNqyd3pW+nAOI
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
XollV5u+k+KtugMDoBfC/f8L01KjHZMAAA==

-->

</rfc>
