Bean Network Tester

在 Windows 上模擬封包遺失

封包遺失就是使用者口中的「它就是卡住了」。你設定一個百分比,工具就會丟棄相應比例的封包,而你的應用必須自己應對。

在視窗中

  1. 填寫Process,讓受影響的只是你的應用,而不是整台電腦。
  2. 把Loss設為 0 到 100 之間的百分比。建議從 5 開始。
  3. 點選START,然後使用你的應用。

視窗頂部的狀態列會概括當前正在執行的內容,Statistics分頁會統計被丟棄的封包。

從命令列執行

同一個可執行檔案無需視窗也能執行。對一個瀏覽器施加 5% 的封包遺失,持續兩分鐘,之後一切自動恢復正常:

BeanNetworkTester.exe --loss 5 --target chrome.exe --duration 120

加上 --simulate 可以演練這條命令,而不觸碰真實流量。

該選多大的百分比

封包遺失率實際感覺
1%一條良好的連線遇到了糟糕的一分鐘。大多數應用都能掩蓋它。
5%弱 Wi-Fi。頁面載入變慢,影片畫質下降。
20%擁擠的咖啡館熱點或火車隧道。開始出現逾時。
60% 及以上幾乎無法使用。適合找出那條從沒人測試過的錯誤提示。

現成的設定檔會替你設定這一項。「Weak WiFi」、「Cafe (crowded WiFi)」和「3G network」除了延遲和限速之外,都帶有封包遺失數值。

兩件讓人意外的事

在 TCP 上你可能什麼都看不到。TCP 會重傳丟失的資料,所以透過 HTTPS 下載只會變慢,而不會失敗。如果想把封包遺失看作封包遺失,請測試基於 UDP 的東西:語音通話、遊戲、影片串流,或者 DNS。

封包遺失是隨機的,所以兩次執行會不同。設定一個隨機種子,同一次執行就會精確重複,這正是把「出過一次問題」變成別人也能復現的 bug 報告的辦法:

BeanNetworkTester.exe --loss 20 --target myapp.exe --seed 42 --duration 60

接下來

單獨的封包遺失很少見。真實的糟糕連線會封包遺失,並且增加延遲,並且速度不足,設定檔重現的就是這種組合。

準備好故意搞壞自己的網路了嗎?

下載 Windows 版