- ネットワーク遅延を簡単に検証できる方法が無いかと探していたら、Linux で簡単にできそうだということが分かりました。
早速、Linux KVM で Ubuntu 9.10 (kernel: 2.6.31-20-generic-pae) を動作させて、実験してみました。
[JeOS11]eth0----eth0[JeOS13]eth1----eth0[JeOS12]
※ JeOS13 を NIC 2枚挿しにして、ルータとして機能させ、ネットワークの遅延などを発生させます。
/etc/sysctl.conf で、"net.ipv4.ip_forward=1" として、再起動すればルーティングできるようになります。
使い方
- eth0 からの出力を 1000ms 遅延させる
$ sudo tc qdisc add dev eth0 root netem delay 1000ms
$ tc qdisc show dev eth0 ## 設定の確認
qdisc netem 8001: root limit 1000 delay 1.0s - eth0 からの出力を 1000ms±100ms 遅延させる
- eth0 からの出力の設定を削除する
$ sudo tc qdisc del dev eth0 root
$ sudo tc qdisc show dev eth0
qdisc pfifo_fast 0: root bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 - eth0 からの出力を平均 1000ms で正規分布に従い遅延させる
$ sudo tc qdisc add dev eth0 root netem delay 1000ms 200ms distribution normal
$ tc qdisc show dev eth0
qdisc netem 8003: root limit 1000 delay 1.0s 200.0ms - eth0 からの出力を 10% パケットをロスさせる
$ sudo tc qdisc add dev eth0 root netem loss 10%
$ tc qdisc show dev eth0
qdisc netem 8002: root limit 1000 loss 10% - eth0 からの出力を 500ms±100ms 遅延、10% パケットをロス、10% 複製する
$ sudo tc qdisc add dev eth0 root netem delay 500ms 100ms loss 10% duplicate 10%
$ tc qdisc show dev eth0
qdisc netem 8003: root limit 1000 delay 500.0ms 100.0ms loss 10% duplicate 10%
$ sudo tc qdisc change dev eth0 root netem delay 1000ms 100ms
## 既に設定が存在するときは、add ではなく change を使う。
$ tc qdisc show dev eth0
qdisc netem 8001: root limit 1000 delay 1.0s 100.0ms
参考
0 件のコメント:
コメントを投稿