iperf というネットワークベンチツールを使ってみた。
とりあえず今回は負荷試験をしたいとのことなので、帯域を指定してトラフィックを発生させる設定。
iperf を入手
iperf で調べると linux 版は見つかるものの、Windows版が見当たらない。仕方ないので「iperf windows」でぐーぐる先生に聞いたら出てきたおフランスものをダウンロードした。
ダウンロードしたら適当なところに解凍する。iperf.exe というのが出てくるが、これをダブルクリックしても何も起こらない。また、iperf はトラフィックを送る側(クライアント)とトラフィックを受け取る側(サーバ)を起動する必要があり、単独では計測できないので注意。
使い方
コマンドプロンプトを開いてカレントフォルダに移動して…なんて毎回やるのも面倒なので、iperf.exe と同じ場所に bat ファイルを作ってダブルクリックしたほうが楽。iperf.exe と同じ場所に iperf-s.bat とiperf-c.bat を作成して、右クリック→編集。
・iperf-s.bat (サーバ側)
ipref -s pause
-s オプションをつけるとサーバモードで起動。
・iperf-c.bat (クライアント側)
iperf -c 192.168.1.1 pause
-c でクライアントモード起動し、トラフィックを受け取る端末(サーバ側)の IP アドレスを指定します。
まずトラフィックを受け取る側の端末(サーバ)で、iperf-s.bat をダブルクリックして実行。以下のような待受画面がでます。
C:\iperf>iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 64.0 KByte (default) ------------------------------------------------------------
Windows からブロックするとか何とか怒られるかもしれないけど、許可してあげて。
オプションを指定しない場合、デフォルトでは 5001/tcp で動作します。
次に、トラフィックを送る側の端末(クライアント側)で iperf-c.bat をダブルクリックして起動します。以下のように結果が表示されれば成功です。
C:\iperf>iperf -c 192.168.1.1 ------------------------------------------------------------ Client connecting to 192.168.1.1, TCP port 5001 TCP window size: 64.0 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.1.2 port 1212 connected with 192.168.1.1 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.2 sec 10.5 MBytes 8.61 Mbits/sec C:\iperf>pause 続行するには何かキーを押してください . . .
スループットが計測できました。なお、プログラムを終了するときは Ctrl + C をタイプします。
帯域を指定して負荷試験
これだけだと楽しくないので、いろいろオプションをつけてネットワークに一定の負荷をかけてみます。また、ファイアウォール環境を考慮して、NAT できるようポートを指定します。それぞれ bat ファイルを書き換えます。
・iperf-s.bat (サーバ側)
ipref -s -u -p 8080 -i 1 pause
-u … UDP を使います
-p … 待受ポートを指定します
-i … 実行/測定結果を 1秒おきに表示します
iperf -u -c 192.168.1.1 -p 8080 -i 1 -b 2097154 -t 5 pause
-u … UDP を使います。
-p … サーバの待ち受けポートを指定します
-i … 実行/測定結果を 1秒おきに表示します
-b … 帯域幅を指定します(bps)
-t … 指定した秒数のあいだ送受信します
プロトコルとポートは iperf-s.bat と同じにすること。また、サーバアドレスより先にオプションを書くとうまく動かないかも。
ここでは利用する帯域(-b –bandwidth) を 2097154bps(2Mbps) に指定しています。
同じくサーバ側で iperf-s.bat を起動してから、クライアント側で iperf-c.bat を起動します。
C:\iperf>iperf -u -c 192.168.1.1 -p 8080 -b 2097154 -i 1 -t 5 ------------------------------------------------------------ Client connecting to 192.168.1.1, UDP port 8080 Sending 1470 byte datagrams UDP buffer size: 64.0 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.1.2 port 1208 connected with 192.168.1.1 port 8080 [ ID] Interval Transfer Bandwidth [ 3] 0.0- 1.0 sec 257 KBytes 2.11 Mbits/sec [ 3] 1.0- 2.0 sec 256 KBytes 2.09 Mbits/sec [ 3] 2.0- 3.0 sec 257 KBytes 2.11 Mbits/sec [ 3] 3.0- 4.0 sec 256 KBytes 2.09 Mbits/sec [ 3] 4.0- 5.0 sec 256 KBytes 2.09 Mbits/sec [ 3] 0.0- 5.0 sec 1.25 MBytes 2.09 Mbits/sec [ 3] Sent 893 datagrams [ 3] Server Report: [ 3] 0.0- 5.0 sec 1.25 MBytes 2.11 Mbits/sec 0.726 ms 0/ 892 (0%) [ 3] 0.0- 5.0 sec 1 datagrams received out-of-order C:\iperf>pause 続行するには何かキーを押してください . . .
こんなふうに表示されれば成功…だと思います。あとは秒数を 60秒とか 1800秒とか。。。(;゚д゚)ゴクリ…