Lainbo

Lainbo's Blog

If you’re nothing without the suit, then you shouldn't have it.
github
email
follow

你的优化线路服务器是大小包吗?

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

什么是 "大小包"?#

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

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

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

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

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

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

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

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

为什么 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生成,与上文提到的测试大小包的命令行是同一个工具
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。