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生成,與上文提到的測試大小包的命令行是同一個工具
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。