Windowsでパケットロスを再現する
パケットロスは、ユーザーが「固まった」と表現する障害です。割合を指定すると、ツールがその分のパケットを捨て、アプリはそれに対処しなければなりません。
ウィンドウでの手順
- Processにアプリを指定して、マシン全体ではなくそのアプリだけに影響が出るようにします。
- Lossを0から100までの割合に設定します。まずは5から始めましょう。
- STARTを押して、アプリを使います。
ウィンドウ上部のバーには実行中の内容が要約され、Statisticsタブには破棄されたパケットの数が表示されます。
コマンドラインから
同じ実行ファイルは、ウィンドウなしでも動きます。1つのブラウザに5%のパケットロスを2分間かけ、その後は自動的にすべて元に戻ります:
BeanNetworkTester.exe --loss 5 --target chrome.exe --duration 120
--simulate を付けると、実際の通信に触れずにコマンドを試せます。
どの割合を選ぶか
| パケットロス | 体感 |
|---|---|
| 1% | 良好な回線の、運が悪い1分間。ほとんどのアプリは気づかせません。 |
| 5% | 弱いWi-Fi。ページの読み込みが遅くなり、動画の画質が下がります。 |
| 20% | 混雑したカフェのホットスポットや電車のトンネル。タイムアウトが出始めます。 |
| 60%以上 | ほぼ使えません。誰もテストしなかったエラーメッセージを見つけるのに向いています。 |
用意済みのプロファイルがこれを設定してくれます。「Weak WiFi」「Cafe (crowded WiFi)」「3G network」はどれも、遅延や速度制限とともにパケットロスの値を持っています。
意外に思われる2つのこと
TCPでは何も見えないかもしれません。TCPは失われた分を再送するため、HTTPSのダウンロードは失敗せず、ただ遅くなります。パケットロスをパケットロスとして見たいなら、UDPで動くもの(音声通話、ゲーム、動画ストリーム、DNS)をテストしてください。
パケットロスはランダムなので、2回の実行は異なります。シードを設定すれば同じ実行が正確に繰り返されます。「一度だけ壊れた」が、他の人も再現できるバグ報告に変わるのはそのためです:
BeanNetworkTester.exe --loss 20 --target myapp.exe --seed 42 --duration 60
次のステップ
パケットロスだけが起きることはまれです。実際の悪い回線は、パケットを失い、さらに遅延を加え、さらに速度も足りなくなります。プロファイルが再現するのはそれです。