Iperfの使い方
ネットワークの帯域を計測する場合、非常に便利なツールです。
UNIX系ではnetperfが有名かと思いますが、UDPの計測に関してはIperfの方が使いやすいと思います。
WindowsやLinuxなど各種OSで使用できます。
ダウンロード
NLANR/DAST : Iperf - The TCP/UDP Bandwidth Measurement Tool
http://sourceforge.net/projects/iperf
使い方
下記に、コマンドの使い方を記しておきます。
ユニキャストモード
- TCPの場合
- サーバー
$ iperf -s
-
- クライアント
$ iperf -c <受信側ホスト名> または <受信側IPアドレス>
-
-
- 例1)TCP通信での最大レートを測定する。Netperfでの測定とほぼ同様。
-
$ iperf -c 192.168.1.100
-
-
- 例2)100MbyteのデータをTCPで送信する場合
-
$ iperf -c <dest addr> -l 100M
- UDPの場合
- サーバ
$ iperf -s -u
-
- クライアント
$ iperf -c 192.168.1.100 -u -b <送信帯域> -t <計測時間[sec]> -i <インターバル>
-
-
- 例1)192.168.1.100へ向けUDPで10Mのストリームを60秒間送信する。
-
レポートの間隔は2秒おき。
$ iperf -c 192.168.1.100 -u -b 10M -t 60 -i 2
-
-
- 例2)192.168.1.100との間でUDPで10Mのストリームを双方向で60秒間送信する。
-
$ iperf -c 192.168.1.100 -u -b 10M -t 60 -i 2 -d
-
-
- 例3)双方向モードでの測定。192.168.1.100へ向け3本の10MのUDPストリームを60秒間送信する。
-
$ iperf -c 192.168.1.100 -u -b 10M -t 60 -i 2 -P 3
マルチキャストモード
- サーバ
$ iperf -s -u -B <マルチキャストアドレス> -i <結果表示インターバル> ex.) $ iperf -s -u -B 224.0.55.55 -i 1
- クライアント
$ iperf -c <マルチキャストアドレス> -u -T <TTL> -t <計測時間[sec]> -i <インターバル> -b <送信帯域> ex.) $ iperf -c 224.0.55.55 -u -T 32 -t 10 -i 1 -b 1M
結果の見方
- サーバー側
node2> iperf -s -u -i 1 ------------------------------------------------------------ Server listening on UDP port 5001 Receiving 1470 byte datagrams UDP buffer size: 60.0 KByte (default) ------------------------------------------------------------ [ 4] local <IP Addr node2> port 5001 connected with <IP Addr node1> port 9726 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.0- 1.0 sec 1.3 MBytes 10.0 Mbits/sec 0.209 ms 1/ 894 (0.11%) [ 4] 1.0- 2.0 sec 1.3 MBytes 10.0 Mbits/sec 0.221 ms 0/ 892 (0%) ←中間レポート [ 4] 2.0- 3.0 sec 1.3 MBytes 10.0 Mbits/sec 0.277 ms 0/ 892 (0%) [ 4] 3.0- 4.0 sec 1.3 MBytes 10.0 Mbits/sec 0.359 ms 0/ 893 (0%) [ 4] 4.0- 5.0 sec 1.3 MBytes 10.0 Mbits/sec 0.251 ms 0/ 892 (0%) [ 4] 5.0- 6.0 sec 1.3 MBytes 10.0 Mbits/sec 0.215 ms 0/ 892 (0%) [ 4] 6.0- 7.0 sec 1.3 MBytes 10.0 Mbits/sec 0.325 ms 0/ 892 (0%) [ 4] 7.0- 8.0 sec 1.3 MBytes 10.0 Mbits/sec 0.254 ms 0/ 892 (0%) [ 4] 8.0- 9.0 sec 1.3 MBytes 10.0 Mbits/sec 0.282 ms 0/ 892 (0%) [ 4] 0.0-10.0 sec 12.5 MBytes 10.0 Mbits/sec 0.243 ms 1/ 8922 (0.011%) ←最終レポート 左から、測定時間,l受信データ量,bps,片方向遅延,パケット損失数/パケット受信数(パケット損失率)
- クライアント側
node1> iperf -c node2 -u -b 10m ------------------------------------------------------------ Client connecting to node2, UDP port 5001 Sending 1470 byte datagrams UDP buffer size: 60.0 KByte (default) ------------------------------------------------------------ [ 3] local <IP Addr node1> port 9726 connected with <IP Addr node2> port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 12.5 MBytes 10.0 Mbits/sec [ 3] Sent 8922 datagrams
オプション
-s | サーバモードでの起動 |
-c |
クライアントモードでの起動 |
-B |
指定したマルチキャストグループにJOINする,マルチキャストの場合にのみ使用する |
-u | UDP送信(-bオプションの場合は省略可) |
-b |
帯域指定(default 1Mbps)UDPのみ |
-T |
TTL |
-t |
測定時間 |
-i |
レポート表示間隔 |
-l |
パケットサイズ |
-d | 送受信モード |
GUI
Iperfのフロントエンドでjperfというものもあります。
http://dast.nlanr.net/projects/jperf/
慣れないうちはこれを使うと設定などやりやすいかもしれません。
Windowsで使う場合は、jperfのオーバーヘッドにより高レートではパケットロスが発生しました。
正確な測定が要される場合は、要注意です。(Linuxで使用した場合はこの問題はおきませんでした)