限制下載和上傳速度
把一個應用限制在每秒若干 KB,它就不會超過這個速度。上下兩個方向是分開設定的,所以你可以給它飛快的下載和糟糕的上傳,這正是大多數家庭和行動網路的真實樣子。
在視窗中
- 把Process設為你的應用。
- 填寫Download、Upload或兩者,單位為 KB/s。某個欄位保持為 0,就表示不限制該方向。
- 點選START。
BeanNetworkTester.exe --down 128 --up 32 --target myapp.exe --duration 120
這些數字意味著什麼
| KB/s | 約合 | 它是什麼 |
|---|---|---|
| 6 | 56 kbit/s | 撥號數據機。即「56k modem」設定檔。 |
| 128 | 1 Mbit/s | 機上 Wi-Fi、擁擠的飯店、訊號差的行動網路。 |
| 1024 | 8 Mbit/s | 普通的家庭寬頻。夠看一路影片串流。 |
| 12800 | 100 Mbit/s | 如今的一條普通固定寬頻。 |
是千位元組,不是千位元,所以要乘以八,才能與網路業者宣傳的數字比較。同時限制兩個方向,才會讓連線像一個糟糕的熱點,而不只是下載慢。
佇列和限速同樣重要
限速需要一個地方來存放暫時放不下的封包。這就是Buffer設定,單位為毫秒,它的行為就像超市收銀台前的隊伍:
- 短佇列意味著線路一滿,封包就被丟掉。你的應用會看到封包遺失,並迅速作出反應。
- 長佇列意味著什麼都不會丟,但一切都要等待。你的應用看到的是連線越來越慢,而不是失敗,這正是壅塞的家庭網路的效果,也是下載進行時視訊通話會變差的原因。
「Congested home link (bufferbloat)」設定檔正是如此:限速加上長佇列。試試同樣的速度配短佇列和長佇列,觀察應用的表現有多大差別。
需要預期的一點
限速執行時,被丟棄封包的計數可能一直為零。這不是 bug:限速首先是讓封包等待,只有佇列真的滿了才會丟棄。把緩衝區設小一點,封包遺失就會出現。