Bean Network Tester

Windowsでパケットロスを再現する

パケットロスは、ユーザーが「固まった」と表現する障害です。割合を指定すると、ツールがその分のパケットを捨て、アプリはそれに対処しなければなりません。

ウィンドウでの手順

  1. Processにアプリを指定して、マシン全体ではなくそのアプリだけに影響が出るようにします。
  2. Lossを0から100までの割合に設定します。まずは5から始めましょう。
  3. 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

次のステップ

パケットロスだけが起きることはまれです。実際の悪い回線は、パケットを失い、さらに遅延を加え、さらに速度も足りなくなります。プロファイルが再現するのはそれです。

自分のネットワークを、わざと壊してみませんか?

Windows版をダウンロード