web-dev-qa-db-ja.com

人為的なネットワークパケットの損失や遅延を引き起こす可能性はありますか?

MSSQLサーバーとクライアントが2つの別々のマシンで実行されている、展開されたアプリケーションでいくつかの問題を再現しようとしています。 2台のマシン間にネットワークの問題がある可能性があると思うので、2台のHyper-V仮想マシン(同じ仮想サーバー上)でこれらの状態を再現してみたいと思います。もちろん、これらの仮想マシンのネットワークは「ローカル」であるため、実際にはライブ環境の条件からはほど遠いものです。

ネットワークパフォーマンスを低下させる、どちらかの仮想マシンで実行できるプログラムはありますか?または、他の回避策はありますか?たとえば、条件を再現する1つの方法は、地理的に分散した場所にある別々のHyper-VサーバーでVMを実行することです(SQLトラフィックはVPNなどを経由します)が、これは少し時間がかかると思います。もっと簡単な方法があるはずです。

7
Nick Bolton

Linuxではnetemを使用し、FreeBSDではdummynetを使用します。

これらのソリューションはどちらも、Hyper-Vを使用する単一のWindowsマシンでは機能しません。検索しましたが、WindowsHyper-V互換のネットワークエミュレーターが見つかりません。

LinuxまたはFreeBSDボックスを間に置いて、2つのVMを2つの異なる物理マシンに配置できます。しかし、単一のVMホストで必要なことを正確に実行するソリューションはないようです。

3
Jon Lasser

追加の方法は、スタンドアロンのNetwork Emulator Toolkit(NEWT)です。これは、古くても非常に機能があり、x86およびx64Windowsオペレーティングシステムで機能します。

https://blog.mrpol.nl/2010/01/14/network-emulator-toolkit/

インストーラーに含まれているXMLテンプレートを使用すると、待ち時間、帯域幅、ジッター、およびその他のネットワーク変数のシミュレーションをすばやく開始して実行できます。

私はこのアプリケーションをXP-> Windows10のすべてのバージョンのWindowsでテストして使用しました。

enter image description here

1
Jeff Miles

私の友人は、ESXでdummynetとFreeBSDを使用して何かを設定しました。 Hyper-Vではないことは知っていますが、動作するように変更できる場合があります。 http://apocryph.org/2009/05/15/simulating-slow-wan-links-with-dummynet-and-vmware-esx/

1
Holocryptic

ダミーネットはあなたのために働くはずです: http://info.iet.unipi.it/~luigi/dummynet/

NICにサービスをインストールし、コマンドラインからパラメータを設定します。

これを使用して、Windows XPの高遅延または低帯域幅リンクを介したWebサイトアクセスをテストしましたが、非常にうまく機能します。

1
Jeff Miles

必要なようですね netem

パケットロス、レイテンシー、ジッターなどを挿入できます

0
Eddy

パケットを遅延させるためだけの場合、Linuxでは tc とデイジーチェーンキューイングの分野を使用できます(例: [〜#〜] htb [〜#〜] ):

[...]別のHTBの子としてのHTBは、同じHTB内の別のクラスのクラスと同じではありません。これは、HTBのクラスが送信できる場合、ハードウェア機器が送信できるとすぐに送信するためです。そのため、アンダーリミットクラスの遅延は、機器によってのみ制限され、祖先によっては制限されません。 HTBの場合のHTBでは、外側のHTBが新しいハードウェア機器をシミュレートし、すべての結果(より大きな遅延)が発生します

損失は​​ iptablesおよびrandomモジュール で導入することもできます。

# for randomly dropping 10% of incoming packets:
iptables -A INPUT -m statistic --mode random --probability 0.1 -j DROP

# and for dropping 10% of outgoing packets:
iptables -A OUTPUT -m statistic --mode random --probability 0.1 -j DROP
0
krisdigitx