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, スループット