dummynet
dummynet とは、FreeBSD でネットワークトラフィックをコントロールするためのカーネルモジュールです。
dummynet は、ライブネットワークのエミュレーションツールです。ネットワークプロトコルのテストや帯域幅の管理を行うために設計されています。
読み方
- dummynet
- だみーねっと
概要
dummynet とは、FreeBSD でネットワークトラフィックをコントロールするためのカーネルモジュールです。 dummynet は、ライブネットワークのエミュレーションツールです。ネットワークプロトコルのテストや帯域幅の管理を行うために設計されています。
キューやバンド幅の制限、遅延、パケットロス、マルチパスの影響をエミュレート/実行します。 さまざまなスケジューリングアルゴリズムを実装しています。 dummynet は、ユーザアプリケーションとして実行できます。 また、外部のボックスでルータやブリッジのように実行できます。 dummynet は、 FreeBSD , OSX, Linux, Windows などのオペレーティングシステムで実行できます。ネットワークスタックを通して、選択したトラフィックをインターセプト(横取り)するように動作します。 キュー、スケジューラ、リンク、すべての設定できる機能(帯域、遅延、ロスレート、キューサイズ、スケジューリングポリシー)を実装された pipe と呼ばれるオブジェクトにパケットが渡されます。 トラフィックセレクション(トラフィック選択)は、dummynetのユーザーインターフェースとして、 ipfw ファイアーウォール を通して行われます。 ipfw は、正確にトラフィックや方向を選択できます。 設定は、非常にシンプルにできます。 複数の pipe を作成でき、ことなる pipe へトラフィックを送信でき、pipeのカスケードを作成できます。
インカミングの TCP トラフィックの合計を 2Mbit/s 、 UPD 300Kbit/s に制限する例です。
ipfw add pipe 2 in proto tcp ipfw add pipe 3 in proto udp ipfw pipe 2 config bw 2Mbit/s ipfw pipe 3 config bw 300Kbit/s
10.1.2.0/24 のネットワークのそれぞれのホストに対して、インカミングトラフィックを 300Kbit/s に制限します。
ipfw add pipe 4 src-ip 10.1.2.0/24 in ipfw pipe 4 config bw 300Kbit/s queue 20 mask dst-ip 0x000000ff
ADSL の接続をシミュレーションします。
ipfw add pipe 3 out ipfw add pipe 4 in ipfw pipe 3 config bw 128Kbit/s queue 10 delay 1000ms ipfw pipe 4 config bw 640Kbit/s queue 30 delay 1000ms
インストール
sudo kldload netmap.ko
設定
カスタムカーネル を作成する場合には、以下の設定を カーネルのコンフィグレーションファイル に設定する必要があります。
options IPFIREWALL options DUMMYNET options HZ=1000
使い方
インターフェースは、 em0 とします。
送信だけを制限します。
ipfw pipe 1 config bw 100kbits/s ipfw add 1 pipe 1 ip from any to any out xmit em0
送信、受信を 50Kbps と 100Kbps に制限します。
ipfw pipe 1 config bw 100kbits/s ipfw pipe 2 config bw 50kbits/s ipfw add 100 pipe 1 ip from any to any in recv em0 ipfw add 100 pipe 2 ip from any to any out xmit em0
送信と受信の合計の帯域幅を制限する例です。
ipfw pipe 1 config bw 100kbits/s ipfw add 100 pipe 1 ip from any to any in recv em0 ipfw add 100 pipe 1 ip from any to any out xmit em0
各ホストの受信帯域幅を 16Kbps に制限します。
ipfw pipe 1 config bw 16kbits/s mask dst-ip 0xffffffff ipfw add 100 pipe 1 ip from any to any in recv em0
関連項目
ツイート