协议对比的量化方法:测速脚本与基准数据解读
2024年11月28日
约14分钟
测速基准
「哪个协议快」是个伪命题——不同时间、不同网络、不同设备下结论完全不同。 这篇不讲结论,讲方法:如何用一套可复现的流程给协议做基准测试,并正确解读数据, 避免被单次测速结果误导。
测速的四个原则
- 控制变量:同一节点、同一时间段、同一设备,只切换协议
- 多次采样:单次测速波动极大,取中位数而非平均值
- 区分指标:延迟、吞吐、抖动、丢包是四个独立维度
- 记录环境:网络类型(宽带/移动)、时段(高峰/空闲)必须留档
基准测试脚本
#!/bin/bash
# 测速脚本:每个协议测 5 次,输出中位数
for proto in ss vless hysteria2; do
echo "=== $proto ==="
for i in 1 2 3 4 5; do
# 替换为实际测速命令,如 curl 下载测吞吐、ping 测延迟
curl -s -o /dev/null -w "%{time_total}\n" \
--proxy socks5://127.0.0.1:1080 http://speed.cloudflare.com/__down?bytes=10000000
done | sort -n | sed -n '3p'
done
四个指标怎么读
| 指标 | 反映什么 | 测法 |
|---|---|---|
| 延迟 | 链路往返时间 | TCP ping / 连接建立耗时 |
| 吞吐 | 带宽上限 | iperf3 / 大文件下载 |
| 抖动 | 延迟波动程度 | 连续 ping 的 RTT 标准差 |
| 丢包 | 链路质量 | iperf3 -u 模式统计 |
基准数据怎么解读
示例:同一节点下 SS 吞吐 240Mbps / 延迟 45ms,VLESS+Reality 吞吐 228Mbps / 延迟 41ms。 5% 的吞吐差距在误差范围内,不足以得出「SS 更快」的结论;但如果延迟持续低 4ms 且 抖动更小,Reality 的流控优化是有意义的。判断优先级:稳定(抖动小)> 延迟 > 吞吐, 因为吞吐是用户最容易被迷惑的指标。
常见陷阱
- 测速服务器就近:CDN 节点按你的 IP 就近分配,不同协议可能命中不同节点
- 高峰时段测速:晚上 8 点测出的数据没有横向可比性
- 单线程 vs 多线程:只测单线程会低估 Hysteria2 这类多路协议
- 只看速度不看 CPU:路由器上协议差异被 CPU 放大,参考本站网关选型文
结论
协议对比的价值不在「谁第一」,而在于建立一套可复现的测量流程。把环境、采样、指标 都标准化后,任何结论都可以被验证、被推翻,这才是量化测试的意义。