双栈优选是怎么工作的
当一个域名同时有 IPv4 与 IPv6 地址时,客户端两个类型都会查询,连接阶段则采用竞速式策略:先尝试某一族地址,若在很短的窗口内没有连上,立刻并发或切换到另一族,这就是常说的双栈优选。抓包中它呈现为一组组合形态——两个类型的查询成对出现,连接尝试可能分成先后两段,其中一段迅速失败、另一段成功。回落窗口通常很短,往往只在时间线上可见。
基本信息
| 适用平台 | Wireshark / tshark,客户端侧抓包最直观 |
|---|---|
| 查询类型 | dns.qry.type == 1(IPv4)与 dns.qry.type == 28(IPv6) |
| 观察点 | 查询成对出现、连接尝试的先后与间隔 |
| 典型表现 | 首包延迟变大,最终连接成功 |
典型使用场景
- 双栈环境下首次访问偏慢,量化回落等待的时间成本
- 确认某一族地址不可达时的回落行为是否正常
- 为是否保留 IPv6 记录提供实测依据
- 排查「换了网络环境就慢」这类与地址族相关的现象
- 对比不同客户端实现的竞速策略差异
- 为应用日志中只记录最终结果的情况补充网络侧事实
观察要点
观察要点
dns.qry.type == 1 || dns.qry.type == 28 # 只看两类地址查询
# 连接阶段: 先试一族无果 → 快速回落另一族并成功
tcp.flags.syn == 1 # 连接尝试的起手报文
# 统计两族地址的连接成功与失败次数,别只统计最终成功的那一条
# 回落窗口很短,只有时间线能体现,应用日志常看不到观察项逐项读法
| 观察项 | 含义 | 判读方向 |
|---|---|---|
| 两类查询成对 | 客户端按双栈策略解析 | 缺少一类说明策略被限定为单栈 |
| 首次连接单族 | 优先尝试的地址族 | 该族不可达时等待窗口决定延迟 |
| 快速回落另一族 | 竞速策略生效 | 回落窗口越短对用户影响越小 |
| 最终连接成功 | 业务可用 | 但首包延迟可能已明显增加 |
只按最终连接地址统计会低估优先尝试那一族的失败频次,评估地址族可用性要按尝试次数统计。
某一族不可达但未及时返回错误时,首包延迟会明显变长,这种等待只有在抓包时间线上才看得清楚。