IETF 推进 Happy Eyeballs v3:双栈代理客户端应如何测试路径选择

双栈互联网路线通过可观测代理路径实验台

IETF HAPPY 工作组在 2026 年 7 月发布 Happy Eyeballs v3 工作组草案第 04 版。它延续一个核心目标:当 IPv6 与 IPv4 同时可用时,应用既要快速建立连接,也要避免因单一路径故障让用户等待很久。

这是仍在演进的 Internet-Draft,不是最终标准。对代理团队而言,其方向已经值得关注:直接连接只需在目标地址之间选择;加入 HTTP CONNECT 或 SOCKS 网关后,系统实际拥有“客户端到代理网关”和“代理网关到目标”两段独立路径。

先分清两段地址族

客户端可能通过 IPv6 连接代理网关,而网关通过 IPv4 访问目标;也可能通过 IPv4 网关,由网关远程解析并选择 IPv6 目标。只记录“本次是 IPv6”会隐藏真正的决策位置。

HTTP CONNECT 客户端通常选择网关地址族,目标连接由网关建立。SOCKS 请求既可携带已解析地址,也可携带主机名;主机名模式会把目标 DNS 与地址族选择交给网关。因此测试记录必须明确 DNS 在哪里发生。

最先成功的套接字不等于最佳路线

Happy Eyeballs 优化可感知的连接延迟,不负责证明代理质量。最快握手之后仍可能出现:

  • IPv6 路径在响应中途重置;
  • IPv4 建连稳定,但目标首字节很慢;
  • 客户端与网关使用不同地区的 DNS;
  • 网关接受 IPv6,却在上游回退到 IPv4;
  • 连接池复用热连接,使冷启动结果不可比;
  • 目标返回与传输无关的 403、429 或策略拒绝。

只有完成授权请求并获得可用结果,才算成功。握手胜出后隧道失败、正文不完整或路线不符,都不应计入代理成功率。

四层观测模型

DNS

记录网关与目标分别由谁解析、A/AAAA 结果集、顺序、解析器地区、缓存状态和时间。敏感内部主机名可改用不含秘密的路线标签。

网关连接

记录客户端地址族、网关地址、尝试开始时间、握手完成、TLS、代理认证、另一条尝试是否仍在进行。这一层通常由本地 Happy Eyeballs 实现控制。

隧道或 SOCKS 结果

记录 CONNECT/SOCKS 状态、远程 DNS 模式、可观测的目标地址族、隧道耗时和结构化错误。至少分开 proxy_auth_failedgateway_unreachabletarget_connect_failedtunnel_timeout

应用结果

记录首字节、完整响应、字节量、有效结果,以及任务是否遵守授权、robots、条款与速率限制。目标 403/429 不应自动进入代理传输评分。

六组受控测试

在自有或明确获准的网关与目标上,执行有限样本:

  1. 仅 IPv6 网关,网关远程解析目标;
  2. 仅 IPv4 网关,作为控制组;
  3. 双栈网关竞速,观察启动顺序与取消;
  4. 客户端解析目标,分离本地选择与网关行为;
  5. 对优先地址族注入延迟或丢包,验证有限回退;
  6. 两族都健康,检查偏好、稳定性和多余连接。

保持凭据、网关地区、目标、方法、载荷、超时和业务目的不变,一次只改变一个变量。需要冷启动结论时,使用新进程或明确清空连接池。

应记录的指标

  • 网关 DNS 耗时与地址族分布;
  • 第一、第二次连接尝试的开始时间;
  • 胜出网关地址族与取消延迟;
  • 网关握手、代理认证和隧道成功率;
  • 可观测的目标地址族;
  • 首字节 p50/p95;
  • 完整响应和有效结果率;
  • 会话中途重置率;
  • 回退率与回退成功率;
  • 每个有效请求产生的额外连接数;
  • 每个授权有效结果的流量与成本。

正确目标不是“IPv6 永远获胜”,而是在 IPv6 表现良好时保留 IPv6 偏好,并在异常时有限、快速、可解释地回退。

采购双栈代理前要问什么

  • 网关域名是否双栈,是否同时提供 IPv4-only 与 IPv6-only 控制端点?
  • HTTP CONNECT 能否在脱敏日志中显示目标地址族?
  • SOCKS 主机名模式在哪里解析 DNS?
  • 能否固定网关地址族而不改变目标访问策略?
  • 两种地址族的认证、白名单、并发和计费是否一致?
  • 网关失败时是否保证不会直连回退?
  • 是否能导出不含凭据与客户数据的路线证据?
  • 如何区分会话重置、目标连接失败和网关失败?

只报告公开出口 IP 的服务商,无法解释完整的路径选择。

发布检查清单

  • 明确 v3 是活跃草案而非最终标准;
  • 记录网关与目标各自由谁解析;
  • 分开记录两段地址族;
  • 仅使用自有或明确授权测试环境;
  • 每次比较只改变一个变量;
  • 同时测试冷、热连接池;
  • 对 IPv4/IPv6 进行有限故障注入;
  • 确认落败套接字、计时器和页面被清理;
  • 连接竞速不能复制有副作用的业务请求;
  • 目标策略拒绝不进入代理传输评分;
  • 以稳定性和有效结果衡量,而非只看握手速度。

相关流程可继续阅读 98IP 的 IPv6 作用域重试测试代理池 ASN 集中度审计住宅代理会话粘性测试

FAQ

Happy Eyeballs 会选择代理出口 IP 吗?

不一定。本地客户端通常只决定如何连接代理网关;网关可能独立解析和连接目标,因此出口地址族必须单独观测。

IPv6 网关连接成功能证明端到端 IPv6 吗?

不能。网关仍可能通过 IPv4 访问目标。端到端结论需要两段路线证据。

竞速失败后应该快速轮换代理吗?

不应该。先区分 DNS、网关传输、代理认证、隧道建立和目标策略。只有获得传输证据且轮换符合授权时才调整路线。

合规说明

只对有权测试的网关、目标、账号和数据执行连接实验。遵守网站条款、robots、隐私义务与速率限制。不得利用地址族竞速或代理轮换绕过发布者决定、规避限速或复制有副作用的请求。

来源说明:IETF HAPPY 工作组,《Happy Eyeballs Version 3: Better Connectivity Using Concurrency》工作组 Internet-Draft 第 04 版,2026 年 7 月发布。外部资料地址仅保存在 98IP 内部运营记录中。