在选择服务器时,一些商家会宣称自己有多么多么好的线路,晚高峰稳定之类的,并且给出一个优秀的 24 小时延迟测试图,然而这真的靠谱吗?
什么是 "大小包"?#
"大小包" 指的是一些 VPS 服务商根据数据包大小采用不同的网络路由策略:
- 小包:通常走优化过的路由,这也是服务商常常宣传的线路。
- 大包:可能会走未经优化的路由,导致性能下降,但是服务商成本低。
用个更通俗的方式解释
MTU 简单说就是一辆卡车的大小,你数据包相当于包裹,卡车大自然可以装大包裹,卡车小我也可以把大包裹拆分成小包裹发,只是效率低一些而已
但是现在商家,给你小包裹走高速路,大包裹走土路,你 ping 测路由都是小包裹,你以为是走高速,等你买来真正开始使用,才发现走是土路
一个走「土路」的香港服务器路由示意图#
去香港明明可以广州出口直连香港,他硬是往美国跑了一圈
一个走「高速路」的香港服务器国际路由示意图#
直接广州出口连香港,没有任何绕路
为什么 ping 测试可能具有欺骗性#
大小包的服务商会在你传输小数据包(ping 服务器)的时候,让你直连走上面的高速路,一开始正式使用(正常使用往往都是大包),就让你走土路。如果服务商黑心,你去 ping 是 ping 不出来实际体验的
如何检测大小包#
我们可以使用NTrace-core来检测 VPS 是否存在大小包路由问题。以下是具体步骤:
-
安装:
curl nxtrace.org/nt | bash
-
运行测试命令:
nexttrace --tcp --psize 12 202.96.209.133:80 && nexttrace --tcp --psize 1452 202.96.209.133:80
这个命令会向位于上海电信的 IP 地址发送两次测试:
- 第一次发送 12KB 的小包
- 第二次发送 1452KB 的大包
-
比较两次输出结果,观察路由是否相同。如果路由不同,那么很可能存在大小包问题
注意事项#
- 提一下打包为什么是 1452KB 这个数字,因为过于大的包体积可能超过超过了以太网帧的体积。可以看看网卡的 MTU,用过大的包没有意义,数据包会被切片的。1452 字节的包大小,这是考虑了各种网络协议开销后的比较合适的选择
1452字节 = 1518-18-8-20-20 即:以太网帧大小-帧头尾-可能存在的拨号信息-IP信息-TCP协议头
- 文中所有的测试路由图片由NTrace-core生成,与上文提到的测试大小包的命令行是同一个工具