この記事では、Linux環境でネットワークの遅延を模倣する方法を詳しく解説します。具体的なコード例とその解説、さらには応用例を含めています。
目次
なぜネットワーク遅延の模倣が必要なのか
ネットワーク遅延の模倣は、アプリケーションのパフォーマンステストや、遠隔地との通信テストにおいて重要です。このようなテストを行うことで、リアルな運用環境での動作を確認できます。
基本的なコマンドとその前提条件
Linuxには`tc`(Traffic Control)というコマンドがあります。これを使ってネットワークの遅延を模倣します。
# tcコマンドがインストールされているか確認
which tc
前提として、`root`または`sudo`の権限が必要です。
遅延を模倣する基本的な手順
遅延を追加
以下のコマンドで、遅延を模倣できます。
sudo tc qdisc add dev eth0 root netem delay 100ms
このコマンドで、`eth0`というネットワークインターフェースに対して100ミリ秒の遅延が追加されます。
遅延を確認
遅延が正しく追加されたかどうかは以下のコマンドで確認できます。
sudo tc qdisc show dev eth0
遅延を削除
遅延を削除するには以下のコマンドを実行します。
sudo tc qdisc del dev eth0 root
応用例
ランダムな遅延
ランダムな遅延を模倣するには以下のコマンドを使用します。
sudo tc qdisc add dev eth0 root netem delay 100ms 10ms 25%
このコマンドでは、基本的な遅延が100msで、±10msの範囲でランダムに変動、さらに25%の確率で更なる変動が加わります。
パケットロスを模倣
パケットロスも模倣することができます。
sudo tc qdisc add dev eth0 root netem loss 0.1%
帯域制限を追加
帯域制限も可能です。
sudo tc qdisc add dev eth0 root tbf rate 1024kbit latency 50ms burst 1540
遅延と帯域制限を組み合わせ
遅延と帯域制限を一緒に設定する例です。
sudo tc qdisc add dev eth0 root handle 1: tbf rate 1024kbit latency 50ms burst 1540
sudo tc qdisc add dev eth0 parent 1:1 handle 10: netem delay 100ms
特定のIPアドレスだけ遅延を模倣
特定のIPアドレスだけに遅延を適用することも可能です。
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.4/32 flowid 1:1
まとめ
Linuxの`tc`コマンドを用いて、多様なネットワーク状況を模倣する方法を解説しました。これらの技術はテスト環境だけでなく、実際のトラブルシューティングにも有用です。
コメント