xChar
·2 months ago

在选择服务器时,一些商家会宣称自己有多么多么好的线路,晚高峰稳定之类的,并且给出一个优秀的24小时延迟测试图,然而这真的靠谱吗?

什么是"大小包"?

"大小包"指的是一些VPS服务商根据数据包大小采用不同的网络路由策略:

  • 小包:通常走优化过的路由,这也是服务商常常宣传的线路。
  • 大包:可能会走未经优化的路由,导致性能下降,但是服务商成本低。

用个更通俗的方式解释
MTU简单说就是一辆卡车的大小,你数据包相当于包裹,卡车大自然可以装大包裹,卡车小我也可以把大包裹拆分成小包裹发,只是效率低一些而已

但是现在商家,给你小包裹走高速路,大包裹走土路,你ping测路由都是小包裹,你以为是走高速,等你买来真正开始使用,才发现走是土路

一个走「土路」的香港服务器路由示意图

去香港明明可以广州出口直连香港,他硬是往美国跑了一圈

一个走「高速路」的香港服务器国际路由示意图

直接广州出口连香港,没有任何绕路

为什么ping测试可能具有欺骗性

大小包的服务商会在你传输小数据包(ping服务器)的时候,让你直连走上面的高速路,一开始正式使用(正常使用往往都是大包),就让你走土路。如果服务商黑心,你去ping是ping不出来实际体验的

如何检测大小包

我们可以使用NTrace-core来检测VPS是否存在大小包路由问题。以下是具体步骤:

  1. 安装:

    curl nxtrace.org/nt | bash
    
  2. 运行测试命令:

    nexttrace --tcp --psize 12 202.96.209.133:80 && nexttrace --tcp --psize 1452 202.96.209.133:80
    

    这个命令会向位于上海电信的IP地址发送两次测试:

    • 第一次发送12KB的小包
    • 第二次发送1452KB的大包
  3. 比较两次输出结果,观察路由是否相同。如果路由不同,那么很可能存在大小包问题

注意事项

  1. 提一下打包为什么是1452KB这个数字,因为过于大的包体积可能超过超过了以太网帧的体积。可以看看网卡的MTU,用过大的包没有意义,数据包会被切片的。1452字节的包大小,这是考虑了各种网络协议开销后的比较合适的选择
    1452字节 = 1518-18-8-20-20
    即:以太网帧大小-帧头尾-可能存在的拨号信息-IP信息-TCP协议头
    
  2. 文中所有的测试路由图片由NTrace-core生成,与上文提到的测试大小包的命令行是同一个工具
Loading comments...