iperfの使い方

iperfの使い方

iperf(アイパーフ)は、ネットワークスループットを測定するためのフリーのソフトウェアです。
TCP/UDPのプロトコルや通信先ポート番号を指定できるなど様々なオプションが備わっており、スループット測定の他に、障害発生時のトラブルシューティングなどにもよく使われます。
そのため、ネットワーク技術者必須のツールのひとつと言っても過言ではありません。

この機会にぜひ、iperfの使い方も覚えておきましょう。

iperf


iperfダウンロード

下記サイトからダウンロードできます。(2011年5月現在)
http://linhost.info/2010/02/ip……n-windows/


iperfはコマンドラインベースのツールであり、Windows上で使用する場合は通常、コマンドプロンプトから実行することになります。
ダウンロードしたらツールを実行しやすいよう、コマンドプロンプトの初期ディレクトリに実行ファイルを移動させておきましょう。

コマンドプロンプト画面

上記はコマンドプロンプトを起動した直後の画面です。赤枠の部分が初期ディレクトリ(フォルダ)になります。

Windows版の他にもMac版、Linux版もあります。



iperf使い方

iperfは、一方をクライアント、もう一方をサーバとして、2つ1組で使用することになります。


iperf書式
iperf [-s | -c IPアドレス] [オプション]

オプション種類(一部)
 -i 指定した秒ごとに測定値を表示
 -p 待受けポート番号を指定(デフォルト:5001)
 -u UDPモードで起動(デフォルト:TCPモード)
 -w ウィンドウサイズを指定
 -b UDPの帯域を指定(デフォルト:1Mbps) ※クライアントモードのみ
 -t 送信秒数を指定 ※クライアントモードのみ

※オプションは他にも多く存在しますが、ここでは最も基本的なもののみを紹介しています。詳しくは「iperf ‐‐help」コマンドを実行し、ヘルプを確認してください。


iperfサーバ起動

まずはサーバとなる「PC SV」側からiperfを起動します。

-sをつけて実行することで、サーバとして起動します。



iperfクライアント起動

続いて「PC CL」でiperfを起動します。

-c [サーバIPアドレス]をつけて実行することで、スループット測定が開始されます。
この場合、クライアント、サーバともに最低限のオプションしか指定していないため、全てデフォルトの設定(TCP 5001ポート宛てに可能なかぎりのトラフィックを10秒間送り続ける)で動作します。


iperfクライアント画面
C:\Users\gran>iperf -c 192.168.0.4
------------------------------------------------------------
Client connecting to 192.168.0.4, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[108] local 192.168.0.3 port 55707 connected with 192.168.0.4 port 5001
[ ID] Interval       Transfer     Bandwidth
[108]  0.0-10.0 sec  21.7 MBytes  18.2 Mbits/sec

iperfサーバ結果画面
MacBook-Pro:~ user$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size:   256 KByte (default)
------------------------------------------------------------
[  4] local 192.168.0.4 port 5001 connected with 192.168.0.3 port 55707
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  21.7 MBytes  18.2 Mbits/sec

10秒間のうち、21.7MByteのトラフィック量を受信し、ビットレートが18.2Mbpsであったことを示しています。



次に、UDPパケットをポート番号10000に対して、100Mbpsの帯域で送信した場合のスループットを測定してみます。

UDPでのスループットを測定したい場合は、クライアント、サーバ両方に-uオプションを指定します。
また、UDPの場合は、-bオプションにより、帯域(送信トラフィック量)も指定する必要があります。(-bオプションを指定しない場合は、デフォルトの1Mbpsで動作します。)
-pオプションはポート番号を指定します。サーバ側が待ち受けポート番号、クライアント側が送信先ポート番号を意味し、双方で同じ番号を指定する必要があります。


iperfクライアント画面
C:\Users\gran>iperf -c 192.168.0.4 -u -b 100m -p 10000
------------------------------------------------------------
Client connecting to 192.168.0.4, UDP port 10000
Sending 1470 byte datagrams
UDP buffer size: 8.00 KByte (default)
------------------------------------------------------------
[108] local 192.168.0.3 port 50940 connected with 192.168.0.4 port 10000
[ ID] Interval       Transfer     Bandwidth
[108]  0.0-10.0 sec  17.8 MBytes  14.9 Mbits/sec
[108] Server Report:
[108]  0.0- 9.9 sec  17.8 MBytes  15.0 Mbits/sec  1.985 ms    0/12672 (0%)
[108] Sent 12672 datagrams


iperfサーバ画面
MacBook-Pro:~ user$ iperf -s -u -p 10000
------------------------------------------------------------
Server listening on UDP port 10000
Receiving 1470 byte datagrams
UDP buffer size: 41.1 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.4 port 10000 connected with 192.168.0.3 port 50940
[ ID] Interval       Transfer     Bandwidth       Jitter   Lost/Total Datagrams
[  3]  0.0- 9.9 sec  17.8 MBytes  15.0 Mbits/sec  1.986 ms    0/12672 (0%)

UDPでは、受信トラフィック量やビットレートの他にジッタやパケットロス率も結果に表示されます。
※ジッタ(Jitter)とは遅延間隔がずれてしまう現象のことです。

タグ