dummynet

提供: FreeBSD入門
2013年7月31日 (水) 23:37時点におけるDaemon (トーク | 投稿記録)による版 (ページの作成:「<!-- vim: fileencoding=utf-8 filetype=mediawiki --> dummynet とは、FreeBSD でネットワークトラフィックをコントロールするための[[カ...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク


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

関連項目




スポンサーリンク