Visual RFC.
ALL RFCs / RFC 8305
Read the RFC ↗
RFC 8305 / HAPPY EYEBALLS

Rank all candidates, then interleave families

02

A race needs an ordered list containing all currently available candidate addresses.

RFC 8305 · § 4EXAMPLE
4 / 4
Rank all candidates, then interleave familiesHistorical RTT/used-address preferences are subordinate insertions between destination rules8/9. A stopped path prevents cross-interface reuse under MUST NOT; network changes call for a SHOULD flush.Rank destinations, then interleave familiesHistorical preferences: RTT then used addressInserted between destination rules8 and9Wi-Fi historyCellularMUST NOT reuse across interfacesSHOULD flush when the attached network changesRFC8305 · chapter 2 · state 4 · offline example
04
Scope historical preferences to their network

Stop cross-interface reuse under MUST NOT; flush on network change under SHOULD. The history is an input to ordering, not proof of present reachability.

Source for this drawing: RFC 8305 · Read RFC section 4 ↗

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
New to this? Start hereA quick picture + helpful background

A message needs an address.

Think of a packet as a small addressed envelope. Devices pass it onward; transport protocols decide what delivery promises an application gets.

Helpful first, if these ideas are unfamiliar

These pictures are analogies to help you learn. The linked RFC explains the actual rules.

Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

KEY POINT

Interleaving follows mandatory destination selection; it does not replace that selection.

  • Before connection attempts, the client MUST sort received destinations using RFC6724 §6. The drawings start from an explicitly supplied already-ranked list; the helper does not implement those rules. All received addresses from both families matter, not just the first pair. Source Address Selection is performed per destination and is outside RFC8305’s destination-ordering discussion (§4).
  • The ordered list SHOULD then be changed to interleave families. With the shown IPv6-first ranked input V6-A,V6-B,V6-C,V4-A,V4-B and chosen First Address Family Count1, the resulting example is V6-A,V4-A,V6-B,V4-B,V6-C. The model preserves relative order within each family (§4).
  • An implementation MAY favor a family with more contiguous first-family addresses before trying the other. Section8 recommends First Address Family Count1;2 may favor that family more aggressively. The chosen Count2 picture starts V6-A,V6-B,V4-A, then alternates remaining candidates. This is a selected interleaving policy rather than a required universal permutation (§§4,8).
  • A stateful client with expected RTT (round-trip time) history SHOULD insert a lower-RTT preference between RFC6724 destination rules8 and9. If it tracks used addresses, it SHOULD insert a used-over-unused preference after that RTT rule and before rule9. These historical preferences must not displace earlier rules (§4).
  • This history MUST NOT be reused across different network interfaces and SHOULD be flushed when the attached network changes. An earlier winner on Wi-Fi is not a universal preference for cellular. IPv6-first is the stated host-policy assumption, not a claim that every installation must always put IPv6 first (§§2,4).
DETAILS

Fictional offline examples. The default policy here prefers IPv6. V6-A/B/C and V4-A/B name distinct candidate destinations, not protocol fields. Helpers model selected decisions from already ranked addresses; they are not full DNS, RFC6724/source selection, TCP, TLS, NAT64 discovery or a network implementation. Times and equality ordering are stated example choices.

Read the RFC section ↗

All chapters in RFC 8305

Drawing view

Scroll the drawing to see every part. Playback controls stay above it.

RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗