2013年10月19日土曜日

Linux PC を使ってネットワークシミュレーション (bridge tc 帯域制限 遅延 パケットロス)

Linux PC を使って、簡易的にネットワークの帯域制限、遅延をシミュレーションする。

ネットワークを下記のように構成。

192.168.0.0/24                                   192.168.0.100
+----------+                                     +----------+
|   L2SW   |----------[eth1]     [eth2]----------|    PC    |
+----------+                [br0]                +----------+
                           0.0.0.0
                        +-----------+
                        | Linux  PC |
                        +-----------+

1. bridge-utils をインストール

# apt-get install bridge-utils

2. eth1 と eth2 を bridge 接続する

# brctl addbr br0
# brctl addif br0 eth1
# brctl addif br0 eth2

(設定確認コマンド)
# brctl show br0

3. br0, eth1, eth2 に IP アドレスを設定

# ifconfig eth1 0.0.0.0 up
# ifconfig eth2 0.0.0.0 up
# ifconfig br0 0.0.0.0 up
# route add 192.168.0.0 br0

(ルーティングテーブル確認)
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.255 UH    0      0        0 br0

■下り方向 (eth1 -> eth2) を 500kbps に帯域制限

上り方向を制限したい場合は eth1 に設定する (要は、パケットの出口側に設定)。

# tc qdisc add dev eth2 root tbf limit 200kbit buffer 100kbit/8 rate 500kbit

(設定解除)
# tc qdisc del dev eth2 root 

■下り方向 (eth1 -> eth2) を 10% パケットロスさせる

# tc qdisc add dev eth2 root netem drop 10%

■下り方向 (eth1 -> eth2) を 1 秒遅延させる

# tc qdisc add dev eth2 root netem delay 1000ms

■下り方向 (eth1 -> eth2) を 200ms ± 20ms 遅延させる(正規分布)

# tc qdisc add dev eth2 root netem delay 200ms 20ms distribution normal

■設定解除

tc qdisc del dev eth2 root

■パケットロスの状況を確認する (watch コマンドと tc を併用)

# watch -n 1 -d tc -s -d -r qdisc show

● tc, ネットワーク, network, シミュレーション, simulation, netem, 帯域制限, 遅延, パケットロス, bridge, トラフィックコントロール
delay, packet loss, スループット

0 件のコメント: