<?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-02" 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-02"/>
    <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="October" day="20"/>
    <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.
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.</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>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 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,
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 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 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>
      <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="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 969?>

<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+1963IbR7Lm/3qKXuqHyQkAEimKluUzZ4aW5BFndOGYtH0c
GxvhBtAge9ToxulukIYVnmfZZ9kn2/zyUpdGU56IPb82zkzMiAC6q7KysvKe
WdPp1PVlXxUvsoM3+Wazy17vinleVV32Q9F2ZVNnT19k3xR9X7TZy6aui0Vf
3pX9Lvu+K+sbfLXYtm1RL3YHLp/P2+Juf6S7pwdukffFTdPuXmRdv3Ru2Szq
fE2zLtt81U/Lol9Nb/GW/H+hr07vnk6fnLhuO1+XHaDpdxt66eL19beu3q7n
RfvCLWnkF27R1F1Rd9vuRda328IRGE9d3hb5i+zHi2t337Qfb9pmu3mRvTm/
vPwp+5G+wAL+gi/dx2JHTyxfuGyalZu7M/33FP+2+YIexF/9YoN//nNbLvBv
d7eY499icevuinpLUGRZPAl9FHjTybJsnZfVi4xX+mcsfda0NEGWt4tb+rrv
N92Lx4/xEL4p74qZPfQYXzyet819Vzzm9x9jzrK/3c5fZIzF+xtB4WPBrCA1
wic9XxHGup72yab6l158/LtbNbvt19WBc/m2v21aIJMmy7LVtqpks6+b9XqX
Xebbase/0Iryuvw172lnX2Tnm01VZBf1gn8rBEkH/QaP/znHj7NFsz7YH/ZV
flcusytCVZ3/WtrIL7K/NM0Njfj27ctkxGWnTzJa/3yDrx8Y+X25vC2zv+b/
2P7uqDUe/Qc9+ecbfuCBEf9W1CVNn110t+U8p/8bQcQDM/Djyeiubto1vXRH
pOfKehV9ctPpNMvnXU/k2zv3Lq93Gb2z3tL0PE22aZu+WTR0PptN0dJ3RKDN
HR3z/rbI1s2yaGvaDDr3ddFn265wt03XYxHdLLu+Lboia1Z9UWdt0TXVXZH1
TbbeVn3Jm3iZ5csl/dIV3SQr8sUtPezub2npRPw7In16YVmuVgWxjj6j+Rn2
elFkeb0kQAOjcYvbHGso2rLrywVNflXiuW5TLMpVuQgTERbtQ7bK12VV0neH
F5d0jOkX+vfsiCefF9m8ahYfi+Uko6P0sagneJWYzLTZ9OU6rzJCT57RusE2
JtmCRqr7zvW3eZ/lxArXmz6s1YAlBpSVhFaCtqqKStaYZwQ+wKXl05nL51VJ
m0iYzqP3CNttwWzlY7UDcssuIwa5XQM3us6ic21Bj7QFvqUFYrEVcVQ6++su
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

-->

</rfc>
