家庭多出口网络质量测量与动态选路方法
家里拉了多条宽带(电信 / 联通 / 移动)做多 WAN 出口,踩了一圈坑之后总结出一套测量和选路方法。核心结论先行:多条家宽的延迟差距很小,真正的差距在丢包;家宽公网 IP 一定会漂移,DDNS 不是可选项而是必选项。
三条家宽的分工不是「哪条快用哪条」,而是按访问方运营商做源地址路由分流,出口再叠加健康检查与 DDNS:
测量方法论:配对比较
网络测量最容易犯的错是”不同时间测不同线路,然后比数字”。正确的做法是配对测量:同一时刻、用完全相同的检测点集合,分别测每一条线路,两边样本一一对应。
具体做法:
- 选一个多地 Ping 检测服务,节点数越多越好(实测用了 265 个全国节点);
- 每条线路各测一轮,每节点 100 个包,间隔尽量短,保证网络环境没有大波动;
- 拿两轮结果按节点配对,算三类指标:
- 均值延迟:整体水平;
- 丢包点占比:有丢包的节点数 / 总节点数——比平均丢包率更能反映”有多少用户会感知到卡”;
- 胜率:逐节点比大小,A 线快的节点数 vs B 线快的节点数。
单看平均延迟会得出”三条线差不多”的平庸结论,配对之后才能看出结构性差异。
实测发现一:延迟没差,差距在丢包
配对测量 265 个节点的结果:
| 指标 | 电信线 | 联通线 |
|---|---|---|
| 平均延迟 | 32.8 ms | 30.8 ms |
| 丢包点占比 | 17.0%(45/265) | 2.3%(6/265) |
两条线的平均延迟只差 2 ms,日常使用几乎无感。但丢包点占比差了 7 倍——这意味着跨网访问时,电信线上每 6 个用户就有 1 个会遇到明显卡顿,而联通线上 40 多个人才有 1 个。
进一步按访问方运营商拆分,结论更清晰:
- 电信用户访问电信线:最优(延迟最低、无跨网丢包);
- 联通 / 移动用户访问电信线:丢包点占比飙到 20%+;
- 联通 / 移动用户访问联通线:丢包点占比仅 1%~2%。
延迟是体质问题,丢包是互联问题。 选路时丢包权重应该远高于延迟。
实测发现二:IPv6 的收益因线路而异
三条线都有原生 IPv6,配对测了一遍,结论完全相反:
- 电信线:IPv6 明显优于 IPv4——平均延迟从 30.5 ms 降到 29.1 ms,丢包点从 6 个降到 2 个,P90 抖动从 34 ms 降到 29 ms。原因推测是 IPv6 跨网走更优的直连路径,少了运营侧的 NAT 转换;
- 联通线:IPv6 反而更慢——31.2 ms vs 27.7 ms,一半以上节点 IPv4 更快;
- 移动线:IPv6 不比联通 IPv4 快(30.9 vs 30.0 ms),但价值在于不占用联通线的上行带宽,把流量分流到了独立出口。
所以”上了 IPv6 就更快”是想当然。每一条线都要单独测,IPv6 只在该线路实测占优时启用。
实测发现三:家宽公网 IP 一定会漂
这是投入产出比最高的一次测量。连续多日观测发现:
- 家宽公网 IP 并非静态,PPPoE 重拨 / 租约到期后会换段,不只是最后一段变化,整个 C 段都可能跳;
- 三条线都在漂,今天测到的 IP 下周就面目全非;
- 同一时刻不同连接看到的出口 IP 都可能不同(多出口负载均衡)。
意味着:任何把家宽 IP 硬编码的场景都会在某天悄悄失效——DNS A 记录、防火墙白名单、服务端回调地址,全是。
解法是 DDNS + 健康检查:
- 每条线一个域名(如
ct.example.com/cu.example.com),客户端定时上报当前 IP; - 选路时先探活再选,连续超时的线路自动摘除,恢复后自动加回;
- 按访问方运营商分流解析:电信用户解析到电信线,其余解析到联通线(实测综合最优)。
只靠 DNS 分流不够——线路会整体不可用(实测过某条线 10 分钟内从可达变成全端口超时),没有健康检查就会把用户往黑洞里导。
给家庭多 WAN 的选路建议
按实测数据,一套可落地的策略:
1 | 电信用户 → 电信线(IPv6 优先) |
方法论小结
| 原则 | 错误做法 | 正确做法 |
|---|---|---|
| 时间基准 | 不同时间分别测 | 同时刻配对测量 |
| 核心指标 | 只比平均延迟 | 延迟 + 丢包点占比 + 胜率 |
| IPv6 | 无脑开 | 逐线实测,优者启用 |
| 公网 IP | 硬编码 / 手动改 | DDNS + 健康检查 |
| 分流 | 全局一条线 | 按访问方运营商 + 按线路质量 |
家庭多出口的优化空间比想象中大,但前提是先测量、后决策。凭感觉选路,多半会在丢包上栽跟头。