テスト目的で、悪いインターネット接続をシミュレートするにはどうすればよいですか?


105

オンラインマルチプレイヤーゲームを開発しています。ローカルエリアネットワークでテストするとうまく機能しますが、リリースする前に、サーバーへの接続があまり良くない人のためにユーザーエクスペリエンスがどのように機能するかをテストしたいと思います。ローカル環境で、高遅延、低帯域幅、ジッター、および時折パケット損失が発生する悪いインターネット接続をどのようにシミュレートできますか?


69
テストのために送ってください!私の国の接続はデフォルトで恐ろしいです。
ステファン

7
称賛に値する目標。出版されたスタジオも同じことをしたいです。エピックゲームズ、私はあなたを見ています。
ガスドール

7
Comcastを使用している近くの友人を見つける
...-WernerCD

12
悪いインターネット接続のシミュレーションには、現在の答えなどが含まれています。
マイケルハウス

2
:私はすぐにこの最近の他のSEの質問を考えsuperuser.com/questions/637594/...
パトリック・M

回答:


63

Dummynetはあなたが探しているものだと思います。Dummynetは、帯域幅の制限、遅延、パケット損失などをシミュレートできるネットワークエミュレーションツールです。インターセプトするトラフィックを簡単に選択し、制限を構成できます。たとえば、すべての着信TCPトラフィックを2Mbit / sに制限します

ipfw add pipe 2 in proto tcp
ipfw pipe 2 config bw 2Mbit/s

トラフィックの選択は既知のipfwファイアウォールによって行われ、パイプが制限機能を提供していることがわかります。

FreeBSD、Linux、およびWindowsで利用可能です。


Windowsループバックアダプタで動作しますか?
アンドリーティリチコ

自分の質問に答えるために、いや、それは私が署名されたドライバーの強化を無効にした後でも、Windowsの8.1に私のために動作しません
アンドリーTylychko

@AndyTループバックで機能する何かを見つけましたか?packlossを実行し、ループバックで機能するものを見つけるのは難しいようです。
アーロンLS

@AaronLS:ここで別の答えをご覧ください:gamedev.stackexchange.com/a/100779/4731
Andriy Tylychko

33

ネットワークリンクコンディショナー

Macを使用している場合は、ネットワークリンクコンディショナーを使用できます。

ネットワークリンクコンディショナーの設定ペイン

Edgeや3Gなど、インターネット接続の不良のさまざまなケースをシミュレートできます。

さらに、独自の設定で独自のプロファイルを作成できます。

ネットワークリンクコンディショナーのカスタムプロファイル

Xcodeで無料でダウンロードできます(Xcode→開発者ツールを開く→その他の開発者ツールに移動して、XcodeのハードウェアIOツールをダウンロードします)。


このツールは好きですが、自動テストに使用できるものが必要です。これのためのコマンドラインインターフェースがあるかどうか誰もが知っていますか?
エリックB

15

Linuxを使用している場合は、netemを使用して、高遅延、低帯域幅、パケット損失など、ネットワークで起こりうるすべての問題をシミュレートできます。

NetLimiterと呼ばれるウィンドウ用のオプションがありますが、私はそれを使用していないので、それを保証することはできません。

SlowlyAppというMacアプリを見つけました。


1
-1他の回答と同様。これは単なるリンクです。回答を更新して、アプリケーションが何をするのか、どのように行うのかの説明を含めてください。
マイケルハウス

8
@ Byte56:これらのアプリが行うことは、質問が求めるように、低速または信頼性の低いネットワーク接続をシミュレートすることです。彼らがそれをどのように行うかは、このサイトの範囲外であると確信ています。これは、尋ねられた質問に対する完全に良い答えだと思います。問題がある場合は、答えではなく質問にあります。
イルマリカロネン

1
技術的には、この質問は「どうすれば悪いインターネット接続をシミュレートできますか」と尋ねます。それを行うためのアプリケーションを要求しません。しかし、はい、この質問はこのサイトの範囲外であると思います。
マイケルハウス

9

Clumsy、Windows Vistaおよび7用。

不器用


ループバック上のWindows 8.1のために正常に動作します
アンドリーTylychko

管理者として実行することを忘れないでください。または、黙って何もしません。そうでなければ素晴らしいツール。
ネオリスク

7

ローカル環境で、高遅延、低帯域幅、ジッター、および時折パケット損失が発生する悪いインターネット接続をどのようにシミュレートできますか?

Windowsを使用している場合は、SoftPerfect Connection Emulatorを試すことができます。基本的には、選択されたNICのアプリケーションとネットワーク層(Wireshark / WinPCAPに類似)の間に自身を挿入し、限られた帯域幅、遅延、パケット損失などをシミュレートできるドライバーです。UIはシンプルで簡単です。

これは商用製品ですが、試用版を使用すると、このツールが希望どおりに動作するかどうかを判断するのに十分な30秒の「干渉」バーストを行うことができます。

別のクロスプラットフォームオプションはDummyNetです。これは(ipfwを介して)同様に動作しますが、使いやすさが少し劣ります。

サーバーへの接続がそれほど良好ではないユーザーに対して、ユーザーエクスペリエンスがどのように機能するかをテストしたいと思います。

質問のこの部分は、「アプリケーションのネットワーク遅延にどのように対処するのか」と言い換えることができると思います。一般的に使用される効果的な手法の1つは、推測航法です。リンクされた記事では、私よりもうまく説明できますが、基本的な考え方は、クライアントが各エンティティがどこにあり、アルゴリズムによって何をすべきかを「シミュレート」するというものです。エンティティがこのアルゴリズムから逸脱するたびに(プレイヤーの入力、サーバー側イベントなど)、各クライアントに更新を送信します。


5

しばらく使用していませんが、これをテストするためにCharlesを使用しました。これは、あなたが言及した問題のシミュレーションを含む、さまざまなネットワーク診断ツールを備えたアプリケーションです。「高遅延、低帯域幅、ジッター、時折のパケット損失を伴うインターネット接続不良」


1
一見すると、CharlesはHTTPプロキシの一種であるように見えるため、単純なTCPまたはUDPトラフィックを形成することはできません。何か不足していますか?
vbo 14年

そして、それはさらに+5を得ました、wft?
マリアン・パンジオッホ

「単純なTCPまたはUDPトラフィックを形成する」の意味がわかりませんが、このツールを使用して、OPが正確にインターネット接続の問題をシミュレートしたことを確認しました。
ジョッキング

1
@jhocking彼は、HTTPトラフィックに対してのみ機能することを意味します。多くのリアルタイムゲームはTCPまたはUDPを使用します。
アーロンLS

0

Fiddlerに精通していて、HTTP / 1 のみに関心がある場合は、これをスクリプト化できます。

FiddlerはHTTP / 2をサポートしていません。これをインターセプトすると、すべてのHTTPトラフィックがHTTP / 1にダウングレードされます。


面白い。詳細を教えてください。たぶん、いくつかのスクリプト例?
フィリップ

@Philippこの回答(stackoverflow.com/a/47401557/442351)に例を示します。
BanksySan

httpのみをサポートしていますか?Websocketさえありませんか?それから、ゲーム開発ではあまり役に立たないと思います。レイテンシーを心配するなら、そもそもhttpを使用しないでしょう。とにかく言及してくれてありがとう。
フィリップ

@PhilippはWebSocketをサポートしますが、ホットHTTP / 2です。HTTP / 2を見る必要がありますが、HTTP / 1のようなものではなく、行頭ブロッキング、複数のハンドシェイク、ヘッダーやCookieの重複はありません。
BanksySan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.