デュアルスタックとは
デュアルスタックは、一つの端末やネットワークでIPv4とIPv6を同時に有効にし、接続先に応じて使い分ける構成です。英語ではdual stack(デュアル・スタック)と呼びます。
端末はIPv4アドレスとIPv6アドレス、IPv4経路表とIPv6経路表をそれぞれ持ちます。アプリケーションが接続先を名前で指定すると、DNSのAレコードとAAAAレコードから候補を得ます。
一つのTCPやQUIC接続がIPv4とIPv6を同時に混ぜて進むわけではありません。接続候補ごとにどちらか一方のIPバージョンを選びます。

接続先を選ぶまでに、三つの選択がある
AからIPv4、AAAAからIPv6の候補アドレスを得る
候補とスコープに合う、自分の送信元アドレスを選ぶ
各IPバージョンの経路表で、次ホップとインターフェースを決める
優先順位と過去の結果を考慮し、時間差で候補へ接続する
Happy Eyeballsは、片方の故障を待ち時間にしない
Happy Eyeballs(ハッピー・アイボールズ)は、IPv6とIPv4の候補を順序立てて時間差で試し、利用者が接続失敗を長く待たないようにする手法です。候補アドレスを交互に並べ、先行接続がすぐ完了しないと次を開始します。
最初に確立した利用可能な接続を採用し、不要な試行は取り消します。これはIPv6の問題を修復する仕組みではなく、アプリ上で問題を目立ちにくくするため、運用監視は別に必要です。
IPv4とIPv6を別々に測る
「Webサイトは開く」という確認だけでは、一方が壊れて他方へフォールバックした状態を見逃します。名前解決、デフォルト経路、MTU、ファイアウォール、外部到達性をIPv4とIPv6で分けて確認します。
サーバー側も、AとAAAAの両方が正しい宛先を指すか、両方で同じ証明書とサービス設定が動くかを検査します。古いAAAAだけが残ると、IPv6を優先する利用者にだけ障害が現れます。
IPv4 over IPv6とは構造が違う
デュアルスタックでは、IPv4パケットはIPv4経路、IPv6パケットはIPv6経路をネイティブに進みます。対してIPv4 over IPv6は、事業者のIPv6網を使ってIPv4接続性を提供するため、カプセル化または変換を行います。
端末から見るとIPv4とIPv6の両方が使えるため似て見える場合がありますが、途中の構造、共有IPv4アドレス、受信ポート、MTU、障害点が異なります。
仕様の確認資料:RFC 6724「Default Address Selection for IPv6」、RFC 8305「Happy Eyeballs Version 2」