LANプロトコルトレーニング > iperf

iperf

iperf(アイパーフ)は、ネットワークのスループットを測定するためのフリーソフトウェアです。
iperfでは、メモリーtoメモリーのデータ転送をネットワークを介して実施します。そして、その結果をレポートする機能があります。 メモリーtoメモリーのデータ転送なので、ハードディスクの読み書きがボトルネックになることがなく、本当のネットワークスループットが 測定できます。
ただし、使用するPCのスペックが低いようだと、ネットワークが提供するスループットを使い切れない場合もあるようです。 「こんなにスループットが低いのはおかしい。。。」と思ったら他のスペックのいいPCに変更して再度測定してみてください。

高価な機器になってしまいますが、かなり厳密にスループットなどを測定する場合には、SmartBitsという機器もあります。

ではiperfの簡単な使い方を説明します。

ダウンロード

こちらからダウンロードできます。--->iperfのダウンロード

上のページにいろんなOS用のiperfが掲載されています。Windowsを使っている人は、Microsoft Windowsの右側に書かれている、binaryの文字をクリックしてください。 ダウンロードが開始します。(以下、Windowsを前提に説明します。)

2004年6月20日現在の最新バージョンは、ver1.7.0です。

起動しよう

基本的にはGUIベースではありません。GUIベースにする方法もあるようですが、私はやり方を知りません。

ダウンロードしたiperf-1.7.0-win32.exeをダブルクリックすると、自己解凍しiperf.exeというファイルができます。 これを適当なディレクトリにコピーして使用します。c:\の直下にiperf.exeをコピーしたとします。

コピーできたかな?
C:\にiperfをコピー

PCを2台用意し一方をiperfサーバ、他方をiperfクライアントとして起動します。イメージは下図のとおり。
iperfイメージ

まずはサーバ側から起動。コマンドプロンプトからiperf -sってやるだけです。
iperf -sでサーバを起動
iperf -sってやると、TCPポート5001でiperfのデータを受け付けるように待ち受けます。もし、UDPポートで待ち受けるのならiperf -s -uと指定します。

次はクライアントの起動です。やはりコマンドプロンプトからiperf -c .....とするだけです。
iperf -cでクライアントを起動
iperf -c <サーバのIPアドレス>とするのが一番簡単なクライアントの起動です。このように起動すると、-cの後ろに指定した<サーバのIPアドレス>に 指定したアドレスのTCP=5001ポートに接続してできるだけ多くのトラフィックを約10秒間送り続けます。

上の結果では、Bandwidthが2.48Mbits/secとなりました。これがサーバ〜クライアント間のスループットということになります。ちゃんと確認してませんが、 このスループットにはL2,L3,L4のプロトコルで使用するヘッダ分は考慮されていないと思います。ヘッダ分を考慮すればもう少し高いスループットに なると思います。

UDPでのスループットを測定したい場合には、サーバ側でもクライアント側でも-uオプションを指定する必要があります。
サーバ側 : iperf -s -u
クライアント側 : iperf -c <サーバIPアドレス> -u
クライアント側で-uを指定すると、クライアントから送信するトラフィックがデフォルトで1Mbpsとなります。2Mbpsでトラフィックを送信したい場合には、 クライアント側で、iperf -c <サーバIPアドレス> -u -b 2mとします。10Mbpsなら-b 10mとすればいいですね。

上のテスト環境は、無線LAN(802.11b)で一台のアクセスポイント配下のサーバ、クライアント間で実施したものです。ちなみに、サーバとクライアントは 隣の部屋にありました。サーバ側のNICもあまり良いものではないし、同一アクセスポイントでの通信なんてこんなもんでしょう。

クライアントからサーバ、サーバからクライアントの両方向のスループットを測定したい場合には、クライアント側でiperf -c <サーバ> -rと指定します。 -rオプションを指定することで、クライアントからサーバ方向のスループットを測定したあとに、サーバからクライアント方向のスループットも測定します。

iperf -hと入力するとヘルプが表示されます。 いくつものオプションがありますが、いろいろ試してEtherealでキャプチャしてみれば、オプションの意味がわかってくると思います。
iperfは、-bオプションで帯域を指定できますので、ネットワークに一定の負荷をかけたいときにも使用できます。
30Mbpsのトラフィックが流れているときのvoip品質を見たい、なんてときに負荷をかけるツールとしても使えそうですね。
おすすめ