Кратко

  • Happy Eyeballs защищает пользователя, не заставляя долго ждать медленное или неисправное семейство адресов. Поэтому общий успех может оставаться зелёным во время отказа IPv6.
  • Нужны отдельные доказательства: ответы DNS, кандидаты, фактические попытки, победившее семейство, ошибки проигравших попыток и принудительные тесты из типичных сетей доступа.

Рассмотрим явно условный сценарий. Главный синтетический монитор зелёный, транзакции завершаются, обращений о сбое нет. Второй тест, принудительно использующий IPv6 из одной сети доступа, не соединяется. Оба результата могут быть верны. Обычный клиент получил A и AAAA, начал попытку IPv6, затем достаточно быстро установил IPv4, поэтому пользователь заметил лишь небольшую задержку.

Это не утверждение об аварии у названного оператора, а граница измерения. Успех транзакции доказывает работу хотя бы одного пути, но не здоровье всех опубликованных семейств адресов.

RFC 8305 определяет Happy Eyeballs v2 для сокращения видимой задержки, когда адреса или целое семейство заблокированы, сломаны либо работают хуже. Клиент асинхронно запрашивает A и AAAA, сортирует назначения, запускает попытки с интервалом, сохраняет успешное соединение и отменяет остальные. IPv6 обычно предпочитается, но ближайшая цель — непрерывность.

Рекомендованные интервалы показывают, почему дефект скрывается. RFC 8305 приводит 50 мс ожидания разрешения и 250 мс между попытками при отсутствии истории RTT. Реализации могут менять значения и учитывать прежние результаты; это не универсальная гарантия. Постоянен сам конкурс: без телеметрии проигравших попыток победившее соединение мало говорит об их состоянии.

RFC 6724 добавляет выбор исходных и целевых адресов между IPv6 и IPv4 и разрешает административную настройку политики. Два устройства для одного имени могут получить разный порядок кандидатов и пути из-за области адреса, доступного источника, конфигурации или известных свойств связи.

Сводный счётчик HTTP сжимает решения в один бит. Он не показывает, пришёл ли AAAA, какой IPv6 проверялся, сколько длилось ожидание и где был отказ: DNS, обнаружение соседей, маршрут, фильтр, Path MTU или сервис. Он также не отличает сознательное предпочтение IPv4 от аварийного спасения.

Минимальная запись должна содержать ответы A/AAAA и время, порядок кандидатов, семейства источника и назначения, начало и конец каждой попытки, ошибку или тайм-аут, победившее семейство, путь резолвера, ASN или группу доступа, целевой edge, результат приложения, реализацию клиента и время наблюдения. Сам переход не доказывает причину.

Дополните обычный двухстековый тест принудительными пробами IPv6 и IPv4. Первый защищает пользовательский путь, остальные проверяют отдельные поверхности. Успех dual stack при отказе IPv6 означает «доступно, но деградировало», а не «полностью исправно».

Источники