web-dev-qa-db-ja.com

ドロップされたパケットを偽造する(または実際に失敗させる)にはどうすればよいですか?

背景

私たちのクライアントの1人は、ユーザーが大きなファイルをダウンロードしたときにパケットをドロップするというインターネットの断続的な問題に苦しんでいます(彼らのITは問題を調査しています)。

Windows 2008 R2 IIS7.5を実行しているWebサーバーと、Windows 7を実行しているクライアントで構成されるアプリケーションがありますChrome長時間実行されるXMlHttpRequestを使用して、サーバーからサーバーに「メッセージ」を転送します。クライアント。

問題。

私のアプリケーションは、これらのパケット損失の影響をかなり受けないはずですが、実際にはそうではありません。

ランダムな1%のパケット損失、バースト性のパケット損失など、さまざまなネットワーク問題のシナリオでアプリケーションをテストしたいと思います。たとえば、4000ミリ秒のパケットが完全に失われるなどです。

シナリオを「再現」してアプリケーションをテストできるソリューションを探しています。 3Gを使用することも、ネットワークケーブルを抜き差しすることもできますが、その効果はあまり再現できません。

質問です。

「危険な」インターネット接続を模倣するために自分のマシンにインストールできるアプリケーション/ドライバーはありますか?または、これらのシナリオをモックするためにネットワークで使用できるアプライアンスまたはプロキシサーバーでしょうか。

TCPスタックのほとんどがネットワークカードにオフロードされると思うので、最近のコンピューターで行うのはそれほど簡単ではないと思いますが、これはかなり人気のあることだと思いました試してみてください、しかし私はグーグルで運がありませんでした。私はWindowsに精通していますが、クライアントまたはプロキシとしてLinuxを使用するソリューションは歓迎されます。

5

真ん中の単純なLinuxルーターは、これを完璧に行うことができます。 netemを読んでください。失われたパケット、並べ替えられたパケット、破損したパケット、さらには遅延を含むすべてを複製できます。私は衛星ベースのリンクをシミュレートするためにそれを自分で使用します。

6
TheCompWiz

私はこれを実行するためにTMNetSimを使用しました。必要なポートをプロキシするため、ほとんどのアプリケーションで使用できます。

http://www.tmurgent.com/Tools.aspx

クライアント側とサーバー側の両方で相関パケットキャプチャを実行し、クライアントがRSTパケットを受信して​​いるかどうかを確認することをお勧めします。もしそうなら、それはあなたのサーバーから来ていますか?また、5分間操作がなかった後など、予測可能な時間に発生しますか。

2
Greg Askew