4. アドレスの並べ替え (Sorting Addresses)
解決された宛先アドレスのいずれかに接続を試みる前に、クライアントは試行を開始する順序を定義する必要があります。順序が定義されると、クライアントは短い遅延の後に各オプションを競争させるための単純なアルゴリズムを使用できます (セクション5を参照)。順序付きリストには、この時点までに受信した両方のファミリーのすべてのアドレスを含めることが重要です。これにより、クライアントは最初のIPv4アドレスと最初のIPv6アドレスだけでなく、リスト全体に対してHappy Eyeballsの競争効果を得ることができます。
まず、クライアントは、宛先アドレス選択 (Destination Address Selection) ([RFC6724], セクション6) を使用して、この時点までに受信したアドレスを並べ替える必要があります (MUST)。
クライアントがステートフルで、各アドレスにアクセスするルートの予想往復時間 (RTT, Round-Trip Time) の履歴を持っている場合、ルール8とルール9の間に、より低いRTTを持つアドレスを優先する宛先アドレス選択ルールを追加すべきです (SHOULD)。クライアントが過去に使用したアドレスを追跡している場合、RTTルールとルール9の間に、使用済みアドレスを未使用アドレスよりも優先する別の宛先アドレス選択ルールを追加すべきです (SHOULD)。これは、TCP Fast Open [RFC7413] や一部のハイパーテキスト転送プロトコル (Hypertext Transport Protocol, HTTP) クッキーの場合のように、認証中にクライアントのIPアドレスを使用するサーバーに役立ちます。この履歴データは、異なるネットワークインターフェイス間で使用してはならず (MUST NOT)、デバイスが接続されているネットワークを変更するたびにフラッシュすべきです (SHOULD)。
次に、クライアントは、アドレスファミリーを交互に配置するために順序付きリストを変更すべきです (SHOULD)。リストの最初のアドレスファミリーの後には、もう一方のアドレスファミリーのアドレスが続く必要があります。つまり、ソートされたリストの最初のアドレスがIPv6である場合、最初のIPv4アドレスをリスト内で2番目になるように上に移動する必要があります。実装は、他のファミリーを試す前にそのファミリーの複数のアドレスを試行できるようにすることで、1つのアドレスファミリーをより優先することができます (MAY)。最初のアドレスファミリーの連続したアドレスの数は "First Address Family Count" (最初のアドレスファミリーカウント) と呼ばれ、設定可能な値にすることができます。これは、そのアドレスファミリーを介した接続性が損なわれている場合に、特定のアドレスファミリーからの長いアドレスリストを待つことを避けるために実行されます。
このセクションで説明されているアドレス選択は宛先アドレスにのみ適用されることに注意してください。送信元アドレス選択 (Source Address Selection) ([RFC6724], セクション5) は宛先アドレスごとに1回実行され、この文書の範囲外です。