draft-ietf-v6ops-rfc6555bis-03.txt   draft-ietf-v6ops-rfc6555bis-04.txt 
Network D. Schinazi Network D. Schinazi
Internet-Draft T. Pauly Internet-Draft T. Pauly
Obsoletes: 6555 (if approved) Apple Inc. Obsoletes: 6555 (if approved) Apple Inc.
Intended status: Standards Track August 2, 2017 Intended status: Standards Track August 17, 2017
Expires: February 3, 2018 Expires: February 18, 2018
Happy Eyeballs Version 2: Better Connectivity Using Concurrency Happy Eyeballs Version 2: Better Connectivity Using Concurrency
draft-ietf-v6ops-rfc6555bis-03 draft-ietf-v6ops-rfc6555bis-04
Abstract Abstract
Many communication protocols operated over the modern Internet use Many communication protocols operated over the modern Internet use
host names. These often resolve to multiple IP addresses, each of host names. These often resolve to multiple IP addresses, each of
which may have different performance and connectivity which may have different performance and connectivity
characteristics. Since specific addresses or address families (IPv4 characteristics. Since specific addresses or address families (IPv4
or IPv6) may be blocked, broken, or sub-optimal on a network, clients or IPv6) may be blocked, broken, or sub-optimal on a network, clients
that attempt multiple connections in parallel have a higher chance of that attempt multiple connections in parallel have a higher chance of
establishing a connection sooner. This document specifies establishing a connection sooner. This document specifies
skipping to change at page 1, line 39 skipping to change at page 1, line 39
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on February 3, 2018. This Internet-Draft will expire on February 18, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 16 skipping to change at page 2, line 16
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3
2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Hostname Resolution Query Handling . . . . . . . . . . . . . 4 3. Hostname Resolution Query Handling . . . . . . . . . . . . . 4
3.1. Handling Multiple DNS Server Addresses . . . . . . . . . 4 3.1. Handling Multiple DNS Server Addresses . . . . . . . . . 5
4. Sorting Addresses . . . . . . . . . . . . . . . . . . . . . . 5 4. Sorting Addresses . . . . . . . . . . . . . . . . . . . . . . 5
5. Connection Attempts . . . . . . . . . . . . . . . . . . . . . 6 5. Connection Attempts . . . . . . . . . . . . . . . . . . . . . 6
6. DNS Answer Changes during Happy Eyeballs Connection Setup . . 7 6. DNS Answer Changes during Happy Eyeballs Connection Setup . . 7
7. Supporting IPv6-only Networks with NAT64 and DNS64 . . . . . 7 7. Supporting IPv6-only Networks with NAT64 and DNS64 . . . . . 8
7.1. IPv4 Address Literals . . . . . . . . . . . . . . . . . . 8 7.1. IPv4 Address Literals . . . . . . . . . . . . . . . . . . 8
7.2. Host Names with Broken AAAA Records . . . . . . . . . . . 8 7.2. Host Names with Broken AAAA Records . . . . . . . . . . . 9
7.3. Virtual Private Networks . . . . . . . . . . . . . . . . 9 7.3. Virtual Private Networks . . . . . . . . . . . . . . . . 10
8. Summary of Configurable Values . . . . . . . . . . . . . . . 10 8. Summary of Configurable Values . . . . . . . . . . . . . . . 11
9. Limitations . . . . . . . . . . . . . . . . . . . . . . . . . 10 9. Limitations . . . . . . . . . . . . . . . . . . . . . . . . . 11
9.1. Path Maximum Transmission Unit Discovery . . . . . . . . 11 9.1. Path Maximum Transmission Unit Discovery . . . . . . . . 12
9.2. Application Layer . . . . . . . . . . . . . . . . . . . . 11 9.2. Application Layer . . . . . . . . . . . . . . . . . . . . 12
9.3. Hiding Operational Issues . . . . . . . . . . . . . . . . 11 9.3. Hiding Operational Issues . . . . . . . . . . . . . . . . 12
10. Security Considerations . . . . . . . . . . . . . . . . . . . 11 10. Security Considerations . . . . . . . . . . . . . . . . . . . 12
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 11 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 12
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 13
13.1. Normative References . . . . . . . . . . . . . . . . . . 12 13.1. Normative References . . . . . . . . . . . . . . . . . . 13
13.2. Informative References . . . . . . . . . . . . . . . . . 13 13.2. Informative References . . . . . . . . . . . . . . . . . 14
Appendix A. Differences from RFC6555 . . . . . . . . . . . . . . 13 Appendix A. Differences from RFC6555 . . . . . . . . . . . . . . 14
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15
1. Introduction 1. Introduction
Many communication protocols operated over the modern Internet use Many communication protocols operated over the modern Internet use
host names. These often resolve to multiple IP addresses, each of host names. These often resolve to multiple IP addresses, each of
which may have different performance and connectivity which may have different performance and connectivity
characteristics. Since specific addresses or address families (IPv4 characteristics. Since specific addresses or address families (IPv4
or IPv6) may be blocked, broken, or sub-optimal on a network, clients or IPv6) may be blocked, broken, or sub-optimal on a network, clients
that attempt multiple connections in parallel have a higher chance of that attempt multiple connections in parallel have a higher chance of
establishing a connection sooner. This document specifies establishing a connection sooner. This document specifies
requirements for algorithms that reduce this user-visible delay and requirements for algorithms that reduce this user-visible delay and
provides an example algorithm. provides an example algorithm.
This documents expands on "Happy Eyeballs" [RFC6555], a technique of This document expands on "Happy Eyeballs" [RFC6555], a technique of
reducing user-visible delays on dual-stack hosts. Now that this reducing user-visible delays on dual-stack hosts. Now that this
approach has been deployed at scale and measured for several years, approach has been deployed at scale and measured for several years,
the algorithm specification can be refined to improve its reliability the algorithm specification can be refined to improve its reliability
and generalization. This document recommends an algorithm of racing and generalization. This document recommends an algorithm of racing
resolved addresses that has several stages of ordering and racing to resolved addresses that has several stages of ordering and racing to
avoid delays to the user whenever possible, while preferring the use avoid delays to the user whenever possible, while preferring the use
of IPv6. Specifically, it discusses how to handle DNS queries when of IPv6. Specifically, it discusses how to handle DNS queries when
starting a connection on a dual-stack client, how to create an starting a connection on a dual-stack client, how to create an
ordered list of addresses to which to attempt connections, and how to ordered list of destination addresses to which to attempt
race the connection attempts. connections, and how to race the connection attempts.
1.1. Requirements Language 1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
"Key words for use in RFCs to Indicate Requirement Levels" [RFC2119]. "Key words for use in RFCs to Indicate Requirement Levels" [RFC2119].
2. Overview 2. Overview
This document defines a method of connection establishment, named This document defines a method of connection establishment, named
"Happy Eyeballs Connection Setup". This approach has several "Happy Eyeballs Connection Setup". This approach has several
distinct phases: distinct phases:
1. Initiation of asynchronous DNS queries [Section 3] 1. Initiation of asynchronous DNS queries [Section 3]
2. Sorting of resolved addresses [Section 4] 2. Sorting of resolved destination addresses [Section 4]
3. Initiation of asynchronous connection attempts [Section 5] 3. Initiation of asynchronous connection attempts [Section 5]
4. Establishment of one connection, which cancels all other attempts 4. Establishment of one connection, which cancels all other attempts
Note that this document assumes that the host destination address
Note that this document assumes that the host address preference preference policy favors IPv6 over IPv4. If the host is configured
policy favors IPv6 over IPv4. If the host is configured differently, differently, the recommendations in this document can be easily
the recommendations in this document can be easily adapted. adapted.
3. Hostname Resolution Query Handling 3. Hostname Resolution Query Handling
When a client has both IPv4 and IPv6 connectivity, and is trying to When a client has both IPv4 and IPv6 connectivity, and is trying to
establish a connection with a named host, it needs to send out both establish a connection with a named host, it needs to send out both
AAAA and A DNS queries. Both queries SHOULD be made as soon after AAAA and A DNS queries. Both queries SHOULD be made as soon after
one another as possible, with the AAAA query made first, immediately one another as possible, with the AAAA query made first, immediately
followed by the A query. followed by the A query.
Implementations MUST NOT wait for both families of answers to return Implementations SHOULD NOT wait for both families of answers to
before attempting connection establishment. If one query fails to return before attempting connection establishment. If one query
return, or takes significantly longer to return, waiting for the fails to return, or takes significantly longer to return, waiting for
second address family can significantly delay the connection the second address family can significantly delay the connection
establishment of the first one. Therefore, the client MUST treat DNS establishment of the first one. Therefore, the client SHOULD treat
resolution as asynchronous. Note that if the platform does not offer DNS resolution as asynchronous. Note that if the platform does not
an asynchronous DNS API, this behavior can be simulated by making two offer an asynchronous DNS API, this behavior can be simulated by
separate synchronous queries on different threads, one per address making two separate synchronous queries on different threads, one per
family. If the AAAA query returns first, the first IPv6 connection address family.
attempt MUST be immediately started. If the A query returns first
due to reordering, the client SHOULD wait for a short time for the The RECOMMENDED algorithm proceeds as follows: if the AAAA query
AAAA response to ensure preference is given to IPv6 (it is common for returns first, the first IPv6 connection attempt is immediately
the AAAA response to follow the A response by a few milliseconds). started. If the A query returns first due to reordering, the client
This delay will be referred to as the "Resolution Delay". The SHOULD wait for a short time for the AAAA response to ensure
RECOMMENDED value for the Resolution Delay is 50 milliseconds. If preference is given to IPv6 (it is common for the AAAA response to
the AAAA response is received within the Resolution Delay period, the follow the A response by a few milliseconds). This delay will be
client MUST immediately start the IPv6 connection attempt. If, at referred to as the "Resolution Delay". The RECOMMENDED value for the
the end of the Resolution Delay period, the AAAA response has not Resolution Delay is 50 milliseconds. If the AAAA response is
been received but the A response has been received, the client SHOULD received within the Resolution Delay period, the client immediately
proceed to Sorting Addresses [Section 4] and staggered connection starts the IPv6 connection attempt. If, at the end of the Resolution
attempts [Section 5] using only the IPv4 addresses returned so far. Delay period, the AAAA response has not been received but the A
If the AAAA response arrives while these connection attempts are in response has been received, the client SHOULD proceed to Sorting
progress, but before any connection has been established, then the Addresses [Section 4] and staggered connection attempts [Section 5]
newly received IPv6 addresses are incorporated into the list of using only the IPv4 addresses returned so far. If the AAAA response
available candidate addresses [Section 6] and the process of arrives while these connection attempts are in progress, but before
connection attempts will continue with the IPv6 addresses added, any connection has been established, then the newly received IPv6
until one connection is established. addresses are incorporated into the list of available candidate
addresses [Section 6] and the process of connection attempts will
continue with the IPv6 addresses added, until one connection is
established.
3.1. Handling Multiple DNS Server Addresses 3.1. Handling Multiple DNS Server Addresses
If multiple DNS server addresses are configured for the current If multiple DNS server addresses are configured for the current
network, the client may have the option of sending its DNS queries network, the client may have the option of sending its DNS queries
over IPv4 or IPv6. In keeping with the Happy Eyeballs approach, over IPv4 or IPv6. In keeping with the Happy Eyeballs approach,
queries SHOULD be sent over IPv6 first (note that this is not queries SHOULD be sent over IPv6 first (note that this is not
referring to the sending of AAAA or A queries, but rather the address 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 of the DNS server itself and IP version used to transport DNS
messages). If DNS queries sent to the IPv6 address do not receive messages). If DNS queries sent to the IPv6 address do not receive
skipping to change at page 5, line 19 skipping to change at page 5, line 31
the preferred address family. the preferred address family.
Client systems SHOULD NOT have an explicit limit to the number of DNS Client systems SHOULD NOT have an explicit limit to the number of DNS
servers that can be configured, either manually or by the network. servers that can be configured, either manually or by the network.
If such a limit is required by hardware limitations, it is If such a limit is required by hardware limitations, it is
RECOMMENDED to use at least one address from each address family from RECOMMENDED to use at least one address from each address family from
the available list. the available list.
4. Sorting Addresses 4. Sorting Addresses
Before attempting to connect to any of the resolved addresses, the Before attempting to connect to any of the resolved destination
client should define the order in which to start the attempts. Once addresses, the client should define the order in which to start the
the order has been defined, the client can use a simple algorithm for attempts. Once the order has been defined, the client can use a
racing each option after a short delay [Section 5]. It is important simple algorithm for racing each option after a short delay
that the ordered list involves all addresses from both families, as [Section 5]. It is important that the ordered list involves all
this allows the client to get the racing effect of Happy Eyeballs for addresses from both families that have been received by this point,
the entire list, not just the first IPv4 and first IPv6 addresses. 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.
First, the client MUST sort the addresses using Destination Address First, the client MUST sort the addresses received up to this point
Selection ([RFC6724], Section 6). using Destination Address Selection ([RFC6724], Section 6).
If the client is stateful and has history of expected round-trip If the client is stateful and has history of expected round-trip
times (RTT) for the routes to access each address, it SHOULD add a times (RTT) for the routes to access each address, it SHOULD add a
Destination Address Selection rule between rules 8 and 9 that prefers Destination Address Selection rule between rules 8 and 9 that prefers
addresses with lower RTTs. If the client keeps track of which addresses with lower RTTs. If the client keeps track of which
addresses it has used in the past, it SHOULD add another destination addresses it has used in the past, it SHOULD add another destination
address selection rule between the RTT rule and rule 9, which prefers address selection rule between the RTT rule and rule 9, which prefers
used addresses over unused ones. This helps servers that use the used addresses over unused ones. This helps servers that use the
client's IP address during authentication, as is the case for TCP client's IP address during authentication, as is the case for TCP
Fast Open ([RFC7413]) and some HTTP cookies. This historical data Fast Open [RFC7413] and some HTTP cookies. This historical data MUST
MUST NOT be used across networks, and SHOULD be flushed on network NOT be used across networks, and SHOULD be flushed on network
changes. changes.
Next, the client SHOULD modify the ordered list to interleave address Next, the client SHOULD modify the ordered list to interleave address
families. Whichever address family is first in the list should be families. Whichever address family is first in the list should be
followed by an address of the other address family; that is, if the followed by an address of the other address family; that is, if the
first address in the sorted list is IPv6, then the first IPv4 address first address in the sorted list is IPv6, then the first IPv4 address
should be moved up in the list to be second in the list. An should be moved up in the list to be second in the list. An
implementation MAY want to favor one address family more by allowing implementation MAY want to favor one address family more by allowing
multiple addresses of that family to be attempted before trying the multiple addresses of that family to be attempted before trying the
other family. The number of contiguous addresses of the first other family. The number of contiguous addresses of the first
address family will be referred to as the "First Address Family address family will be referred to as the "First Address Family
Count", and can be a configurable value. This is performed to avoid Count", and can be a configurable value. This is performed to avoid
waiting through a long list of addresses from a given address family waiting through a long list of addresses from a given address family
if connectivity over that address family is impaired. if connectivity over that address family is impaired.
Note that the address selection described in this section only
applies to destination addresses; Source Address Selection
([RFC6724], Section 5) is performed once per destination address and
is out of scope of this document.
5. Connection Attempts 5. Connection Attempts
Once the list of addresses has been constructed, the client will Once the list of addresses received up to this point has been
attempt to make connections. In order to avoid unreasonable network constructed, the client will attempt to make connections. In order
load, connection attempts SHOULD NOT be made simultaneously. to avoid unreasonable network load, connection attempts SHOULD NOT be
Instead, one connection attempt to a single address is started first, made simultaneously. Instead, one connection attempt to a single
followed by the others in the list, one at a time. Starting a new address is started first, followed by the others in the list, one at
connection attempt does not affect previous attempts, as multiple a time. Starting a new connection attempt does not affect previous
connection attempts may occur in parallel. Once one of the attempts, as multiple connection attempts may occur in parallel.
connection attempts succeeds (generally when the TCP handshake Once one of the connection attempts succeeds (generally when the TCP
completes), all other connections attempts that have not yet handshake completes), all other connections attempts that have not
succeeded SHOULD be cancelled. Any address that was not yet yet succeeded SHOULD be cancelled. Any address that was not yet
attempted as a connection SHOULD be ignored. attempted as a connection SHOULD be ignored. At that time, the
asynchronous DNS query MAY be cancelled as new addresses will not be
used for this connection. However, the DNS client resolver SHOULD
still process DNS replies from the network for a short period of time
(RECOMMENDED at 1 second), as they will populate the DNS cache and
can be used for subsequent connections.
A simple implementation can have a fixed delay for how long to wait A simple implementation can have a fixed delay for how long to wait
before starting the next connection attempt. This delay is referred before starting the next connection attempt. This delay is referred
to as the "Connection Attempt Delay". One recommended value for this to as the "Connection Attempt Delay". One recommended value for this
delay is 250 milliseconds. If the client has historical RTT data, it delay is 250 milliseconds. If the client has historical RTT data, it
can also use the expected RTT to choose a more nuanced delay value. can also use the expected RTT to choose a more nuanced delay value.
The recommended formula for calculating the delay after starting a The recommended formula for calculating the delay after starting a
connection attempt is: MAX( 1.25 * RTT_MEAN + 4 * RTT_VARIANCE, 2 * connection attempt is: MAX( 1.25 * RTT_MEAN + 4 * RTT_VARIANCE, 2 *
RTT_MEAN ), where the RTT values are based on the statistics for RTT_MEAN ), where the RTT values are based on the statistics for
previous address used. If the TCP implementation leverages previous address used. If the TCP implementation leverages
historical RTT data to compute SYN timeout, these algorithms should historical RTT data to compute SYN timeout, these algorithms should
match so that a new attempt will be started at the same time as the match so that a new attempt will be started at the same time as the
previous is sending its second TCP SYN. While TCP implementations previous is sending its second TCP SYN. While TCP implementations
often leverage an exponential backoff when they detect packet loss, often leverage an exponential backoff when they detect packet loss,
the "Connection Attempt Delay" SHOULD NOT such an aggressive backoff, the "Connection Attempt Delay" SHOULD NOT perform such an aggressive
as it would harm user experience. backoff, as it would harm user experience.
The Connection Attempt Delay MUST have a lower bound, especially if The Connection Attempt Delay MUST have a lower bound, especially if
it is computed using historical data. More specifically, a it is computed using historical data. More specifically, a
subsequent connection MUST NOT be started within 10 milliseconds of subsequent connection MUST NOT be started within 10 milliseconds of
the previous attempt. The recommended minimum value is 100 the previous attempt. The recommended minimum value is 100
milliseconds, which is referred to as the "Minimum Connection Attempt milliseconds, which is referred to as the "Minimum Connection Attempt
Delay". This minimum value is required to avoid congestion collapse Delay". This minimum value is required to avoid congestion collapse
in the presence of high packet loss rates. The Connection Attempt in the presence of high packet loss rates. The Connection Attempt
Delay SHOULD have an upper bound, referred to as the "Maximum Delay SHOULD have an upper bound, referred to as the "Maximum
Connection Attempt Delay". The current recommended value is 2 Connection Attempt Delay". The current recommended value is 2
skipping to change at page 11, line 40 skipping to change at page 12, line 40
This memo has no direct security considerations. This memo has no direct security considerations.
11. IANA Considerations 11. IANA Considerations
This memo includes no request to IANA. This memo includes no request to IANA.
12. Acknowledgments 12. Acknowledgments
The authors thank Dan Wing, Andrew Yourtchenko, and everyone else who The authors thank Dan Wing, Andrew Yourtchenko, and everyone else who
worked on the original Happy Eyeballs design ([RFC6555]), Josh worked on the original Happy Eyeballs design [RFC6555], Josh
Graessley, Stuart Cheshire, and the rest of team at Apple that helped Graessley, Stuart Cheshire, and the rest of team at Apple that helped
implement and instrument this algorithm, and Jason Fesler and Paul implement and instrument this algorithm, and Jason Fesler and Paul
Saab who helped measure and refine this algorithm. The authors would Saab who helped measure and refine this algorithm. The authors would
also like to thank Fred Baker, Nick Chettle, Lorenzo Colitti, Igor also like to thank Fred Baker, Nick Chettle, Lorenzo Colitti, Igor
Gashinsky, Geoff Huston, Jen Linkova, Paul Hoffman, Philip Homburg, Gashinsky, Geoff Huston, Jen Linkova, Paul Hoffman, Philip Homburg,
Erik Nygren, Jordi Palet Martinez, Rui Paulo, Jinmei Tatuya, Dave Erik Nygren, Jordi Palet Martinez, Rui Paulo, Stephen Strowes, Jinmei
Thaler, Joe Touch and James Woodyatt for their input and Tatuya, Dave Thaler, Joe Touch and James Woodyatt for their input and
contributions. contributions.
13. References 13. References
13.1. Normative References 13.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>. <http://www.rfc-editor.org/info/rfc2119>.
[RFC4821] Mathis, M. and J. Heffner, "Packetization Layer Path MTU [RFC4821] Mathis, M. and J. Heffner, "Packetization Layer Path MTU
Discovery", RFC 4821, DOI 10.17487/RFC4821, March 2007, Discovery", RFC 4821, DOI 10.17487/RFC4821, March 2007,
<http://www.rfc-editor.org/info/rfc4821>. <https://www.rfc-editor.org/info/rfc4821>.
[RFC6052] Bao, C., Huitema, C., Bagnulo, M., Boucadair, M., and X. [RFC6052] Bao, C., Huitema, C., Bagnulo, M., Boucadair, M., and X.
Li, "IPv6 Addressing of IPv4/IPv6 Translators", RFC 6052, Li, "IPv6 Addressing of IPv4/IPv6 Translators", RFC 6052,
DOI 10.17487/RFC6052, October 2010, DOI 10.17487/RFC6052, October 2010, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc6052>. editor.org/info/rfc6052>.
[RFC6146] Bagnulo, M., Matthews, P., and I. van Beijnum, "Stateful [RFC6146] Bagnulo, M., Matthews, P., and I. van Beijnum, "Stateful
NAT64: Network Address and Protocol Translation from IPv6 NAT64: Network Address and Protocol Translation from IPv6
Clients to IPv4 Servers", RFC 6146, DOI 10.17487/RFC6146, Clients to IPv4 Servers", RFC 6146, DOI 10.17487/RFC6146,
April 2011, <http://www.rfc-editor.org/info/rfc6146>. April 2011, <https://www.rfc-editor.org/info/rfc6146>.
[RFC6147] Bagnulo, M., Sullivan, A., Matthews, P., and I. van [RFC6147] Bagnulo, M., Sullivan, A., Matthews, P., and I. van
Beijnum, "DNS64: DNS Extensions for Network Address Beijnum, "DNS64: DNS Extensions for Network Address
Translation from IPv6 Clients to IPv4 Servers", RFC 6147, Translation from IPv6 Clients to IPv4 Servers", RFC 6147,
DOI 10.17487/RFC6147, April 2011, DOI 10.17487/RFC6147, April 2011, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc6147>. editor.org/info/rfc6147>.
[RFC6535] Huang, B., Deng, H., and T. Savolainen, "Dual-Stack Hosts [RFC6535] Huang, B., Deng, H., and T. Savolainen, "Dual-Stack Hosts
Using "Bump-in-the-Host" (BIH)", RFC 6535, Using "Bump-in-the-Host" (BIH)", RFC 6535,
DOI 10.17487/RFC6535, February 2012, DOI 10.17487/RFC6535, February 2012, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc6535>. editor.org/info/rfc6535>.
[RFC6555] Wing, D. and A. Yourtchenko, "Happy Eyeballs: Success with [RFC6555] Wing, D. and A. Yourtchenko, "Happy Eyeballs: Success with
Dual-Stack Hosts", RFC 6555, DOI 10.17487/RFC6555, April Dual-Stack Hosts", RFC 6555, DOI 10.17487/RFC6555, April
2012, <http://www.rfc-editor.org/info/rfc6555>. 2012, <https://www.rfc-editor.org/info/rfc6555>.
[RFC6724] Thaler, D., Ed., Draves, R., Matsumoto, A., and T. Chown, [RFC6724] Thaler, D., Ed., Draves, R., Matsumoto, A., and T. Chown,
"Default Address Selection for Internet Protocol Version 6 "Default Address Selection for Internet Protocol Version 6
(IPv6)", RFC 6724, DOI 10.17487/RFC6724, September 2012, (IPv6)", RFC 6724, DOI 10.17487/RFC6724, September 2012,
<http://www.rfc-editor.org/info/rfc6724>. <https://www.rfc-editor.org/info/rfc6724>.
[RFC7050] Savolainen, T., Korhonen, J., and D. Wing, "Discovery of [RFC7050] Savolainen, T., Korhonen, J., and D. Wing, "Discovery of
the IPv6 Prefix Used for IPv6 Address Synthesis", the IPv6 Prefix Used for IPv6 Address Synthesis",
RFC 7050, DOI 10.17487/RFC7050, November 2013, RFC 7050, DOI 10.17487/RFC7050, November 2013,
<http://www.rfc-editor.org/info/rfc7050>. <https://www.rfc-editor.org/info/rfc7050>.
13.2. Informative References 13.2. Informative References
[DNS-PUSH] [DNS-PUSH]
Pusateri, T. and S. Cheshire, "DNS Push Notifications", Pusateri, T. and S. Cheshire, "DNS Push Notifications",
Work in Progress, draft-ietf-dnssd-push, March 2017. Work in Progress, draft-ietf-dnssd-push, March 2017.
[RFC6877] Mawatari, M., Kawashima, M., and C. Byrne, "464XLAT: [RFC6877] Mawatari, M., Kawashima, M., and C. Byrne, "464XLAT:
Combination of Stateful and Stateless Translation", Combination of Stateful and Stateless Translation",
RFC 6877, DOI 10.17487/RFC6877, April 2013, RFC 6877, DOI 10.17487/RFC6877, April 2013,
<http://www.rfc-editor.org/info/rfc6877>. <https://www.rfc-editor.org/info/rfc6877>.
[RFC7413] Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP [RFC7413] Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP
Fast Open", RFC 7413, DOI 10.17487/RFC7413, December 2014, Fast Open", RFC 7413, DOI 10.17487/RFC7413, December 2014,
<http://www.rfc-editor.org/info/rfc7413>. <https://www.rfc-editor.org/info/rfc7413>.
Appendix A. Differences from RFC6555 Appendix A. Differences from RFC6555
"Happy Eyeballs: Success with Dual-Stack Hosts" [RFC6555] mostly "Happy Eyeballs: Success with Dual-Stack Hosts" [RFC6555] mostly
concentrates on how to stagger connections to a hostname that has an concentrates on how to stagger connections to a hostname that has an
AAAA and an A record. This document additionally discusses: AAAA and an A record. This document additionally discusses:
o how to perform DNS queries to obtain these addresses o how to perform DNS queries to obtain these addresses
o how to handle multiple addresses from each address family o how to handle multiple addresses from each address family
 End of changes. 29 change blocks. 
96 lines changed or deleted 111 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/