在選擇伺服器時,一些商家會宣稱自己有多麼多麼好的線路,晚高峰穩定之類的,並且給出一個優秀的 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生成,與上文提到的測試大小包的命令行是同一個工具