ネットワークの停止または欠陥のあるネットワークに対してアプリケーションをテストしたい。インターフェイスに欠陥を起こしやすい、またはそうでなければ低品質の接続をシミュレートするツールはありますか?たとえば、インターフェイスがパケットの10%をドロップするように強制します。
Iptablesのrandom
モジュールを使用して、パケット損失を作成できます。
10%の着信パケット損失の場合:
$ Sudo iptables -A INPUT -m statistic --mode random --probability 0.1 -j DROP
別のコンピューターからのこのping結果:
--- rpi01-wifi.smythies.com ping statistics ---
247 packets transmitted, 217 received, 12% packet loss, time 246752ms
rtt min/avg/max/mdev = 0.958/4.933/169.588/17.884 ms
同様に、発信パケットの場合:
$ Sudo iptables -A OUTPUT -m statistic --mode random --probability 0.1 -j DROP
別のコンピューターからのこのping結果:
--- rpi01-wifi.smythies.com ping statistics ---
1006 packets transmitted, 871 received, 13% packet loss, time 305146ms
rtt min/avg/max/mdev = 0.892/7.363/476.902/35.397 ms, pipe 2
INPUT
とOUTPUT
の両方を組み合わせることでパケット損失を強制しましたが、それぞれ0.5%の確率でした:
$ Sudo iptables -A INPUT -m statistic --mode random --probability 0.005 -j DROP
$ Sudo iptables -A OUTPUT -m statistic --mode random --probability 0.005 -j DROP
結果:
--- rpi01-wifi.smythies.com ping statistics ---
1000 packets transmitted, 967 received, 3% packet loss, time 253840ms
rtt min/avg/max/mdev = 0.876/7.583/536.867/36.065 ms, pipe 3
here もご覧ください。
netem Linuxおよびユーザー空間ユーティリティに既に組み込まれている機能を活用して、ネットワークをシミュレートし、まさにあなたが求めていることを行うことができます。
homepage から。
パケット損失
ランダムパケット損失は、「tc」コマンドでパーセントで指定されます。ゼロ以外の最小値は次のとおりです。
232 = 0.0000000232%
#tc qdisc change dev eth0 root netem loss 0.1%
これにより、1/10の割合(1000のうち1)のパケットがランダムにドロップされます。
オプションの相関関係も追加できます。これにより、乱数ジェネレーターのランダム性が低くなり、パケットバースト損失をエミュレートするために使用できます。
#tc qdisc change dev eth0 root netem loss 0.3%25%
これにより、パケットの0.3%が失われ、連続する確率はそれぞれ最後のパケットの1/4に依存します。
Probn = .25 * Probn-1 + .75 *ランダム