適用於 Windows 的 Clumsy 替代方案
Clumsy 是大多數人最先找到的工具,而且它很好用:免費、MIT 授權、互動式,並且和本工具使用同一個 WinDivert 驅動程式。如果它能滿足你的需要,就用它。本頁講的是它滿足不了的那些情況。
無論選哪個,都該看什麼
| 問題 | 為什麼它能決定選哪個工具 |
|---|---|
| 它能只針對一個應用嗎? | 否則你會影響正在工作的這台機器,包括遠端會話,以及你正用來閱讀文件的瀏覽器。 |
| 它有命令列嗎? | 管線沒法去點核取方塊。沒有命令列,網路測試就永遠無法成為建置的一部分。 |
| 一次執行可重複嗎? | 無法重播的隨機封包遺失,只會產生別人無法復現的 bug 報告。 |
| 它會自行停止嗎? | 需要你記得手動關閉的工具,最後一定會被一直開著。 |
| 你能看出它實際做了什麼嗎? | 計數器和連線列表能把「感覺很慢」變成具體的數字。 |
這個工具帶來什麼
- 按處理程序、PID、位址或連接埠定位,並跟隨處理程序樹,所以擁有三十個子處理程序的瀏覽器仍然只是一個目標。
- 同一個可執行檔案就是命令列,每種結果都有結束代碼,並支援 NDJSON 輸出,因此可用於 CI。
- 帶隨機種子的執行:同一個隨機種子會重播同樣的隨機封包遺失和抖動。
- 現成的設定檔:3G、LTE、衛星、擁擠的咖啡館、機上 Wi-Fi、56k 撥號數據機,讓你從可信的起點出發,而不是瞎猜數值。
- 定時會話和指令碼化場景,讓影響在你觀察應用的同時自行變化。
- 即時檢視:圖表、計數器,以及顯示哪個連線受到影響的連線表。
- 英語、波蘭語和簡體中文介面,沒有任何形式的遙測。
如果你是從別的工具轉過來的
每次討論這件事都會出現四個名字,它們並不能互相替代。
| 你熟悉的 | 它是什麼 | 在這裡可以期待什麼 |
|---|---|---|
| tc 配合 netem | Linux 上的方案,內建於核心,透過命令列操作。搜尋 WAN 模擬時往往出現的就是它。 | Windows 上沒有 tc。這是精神上最接近的東西:同樣種類的網路劣化,帶結束代碼的命令列,並且用驅動程式代替了排隊規則。 |
| Clumsy | 一款免費、MIT 授權、互動式的 Windows 工具,使用同一個 WinDivert 驅動程式。 | 只需要一個視窗和一個過濾器時,就用它。需要按處理程序定位、帶隨機種子的執行,以及管線可以呼叫的命令列時,請來這裡。 |
| NetLimiter | 一款商業 Windows 產品,用於長期按應用管理頻寬。 | 這是另一類工作。本工具是測試儀器:開啟一段時間,然後關閉,而且它能降低的遠不止速度。 |
| Fiddler 或 Charles | 可以檢查、改寫並限制經過它們的流量的代理伺服器。 | 同樣是另一類工作。代理伺服器塑造的是它所代理的流量,並且能看到資料。本工具塑造的是連線本身,包括 UDP,以及任何根本不經過代理伺服器的流量。 |
說白了:如果你想要一個面向單一 Windows 應用、帶命令列的網路模擬器,你要找的就是這種工具。如果你想讀取和修改應用資料,你需要的是代理伺服器;如果你用的是 Linux,那你已經有 netem 了。
什麼時候該用別的工具
坦誠相告,比讓人白下載一次更划算。
- 你用的是 Linux 或 macOS。本工具只支援 Windows,而且將來也是如此,因為它建立在 Windows 驅動程式之上。在 Linux 上,
tc配合netem是標準答案,而且不需要額外軟體。 - 你想要的是長期的頻寬管理:對整台機器、按應用,並且是作為產品功能而不是測試。這正是 NetLimiter 這類商業流量整形工具的用途。本工具是測試儀器:打算開啟一段時間,然後關閉。
- 你拿不到管理員權限。擷取封包需要這些權限,沒有辦法繞過,聲稱可以繞過的工具並沒有真正擷取你的流量。
- 你需要檢查並改寫應用資料,而不是讓鏈路變差。那是代理伺服器的工作。