Linuxでネットワーク遅延を模倣する方法

この記事では、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`コマンドを用いて、多様なネットワーク状況を模倣する方法を解説しました。これらの技術はテスト環境だけでなく、実際のトラブルシューティングにも有用です。

created by Rinker
オライリージャパン
¥3,080 (2024/07/27 03:07:07時点 Amazon調べ-詳細)

コメント

コメントする

目次