Network

Iperfでネットワークのスループットを測定しよう!

More than 3 years have passed since last update.


0.動機

お家でたてているファイルサーバへの通信が遅い時の調査や、ネットワーク機器を買い替えてどれだけ速くなったか知りたい時など、ネットワークのスループットがどれだけ出ているのか気になる時があります。そんな時に使えるのがIperfというネットワークスループット測定ツールです。


1. Iperf事始め

Iperfは利用しているネットワークにテストデータを流し、スループットを測定します。測定には通信を送信する側(クライアント)と通信を受ける側(サーバ)が必要となります。つまりIperfを利用するためには、クライアント/サーバそれぞれにIperfをインストールして置く必要があります。

今回はMac OS X(10.9.4)をクライアント、CentOS(6.5)をサーバと見立ててやってみます。

Network diagram-4.png

(※ あとで見やすいようにクライアント/サーバそれぞれで利用するコマンドをノードの下に書いてあります。)


2. インストール

それぞれyumとhome brewでコマンド一発さくっといけます:-)


2.1. Cent OSでの導入


インストール

$ sudo yum install iperf



2.2. Mac OS Xでの導入


インストール

$ brew install iperf



3. 測定してみる

Iperfはコマンドのオプションでクライアントとして動作するか、サーバとして動作するかを指定します。それぞれデフォルト設定で動かしてみましょう。


3.1. サーバ側

下記の通り、-sオプションでサーバ(通信を受ける側)として動作します。


サーバ

$ iperf -s

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------

表示で出ているようにデフォルトではTCP 5001で受付をし、windowサイズが85.3KByteとなります。この状態でクライアントからの通信を待ち続けます。


3.2. クライアント側

下記の通り、-cオプションでクライアント(通信を送信する側)として動作します。クライアントの場合、サーバのIPアドレスを指定する必要があります。


クライアント

$ iperf -c 192.168.33.10


クライアント側のデフォルト値では、送信先ポートはTCP 5001で通信し、Windowサイズが129KByteで10秒間測定し、一度結果を表示します。


3.3. 測定してみる

上述したコマンドで、サーバ側でIperfをサーバとして起動しておき、その後クライアントから通信を開始します。

結果は下記のとおりになりました。


サーバ

$ iperf  -s

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.33.10 port 5001 connected with 192.168.33.1 port 52659
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 614 MBytes 515 Mbits/sec


クライアント

$ iperf -c 192.168.33.10

------------------------------------------------------------
Client connecting to 192.168.33.10, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 5] local 192.168.33.1 port 52659 connected with 192.168.33.10 port 5001
[ ID] Interval Transfer Bandwidth
[ 5] 0.0-10.0 sec 614 MBytes 515 Mbits/sec
$

結果から、10秒間の測定で 614MBytes送信し、スループットが秒間515Mbits出ていることがわかります。


4. まとめ

Iperfは家の中のネットワークが遅い時の調査、ネットワーク機器を取り替えてどれだけ速くなったか知りたい場合など、定量的にスループットがわかるのでとっても便利です。

お仕事的に考えると、ユーザ部門にPCを仕掛けておいて、定期的にスループットを測定しておき、利用者からネットワークが遅いぞ(゚Д゚)ゴルァ!!と言われた時、普段とどう違うのか定量的に把握できるので問題の切り分けが早くなるかもしれません。

さらにIperfはオプションでTCP/UDP、ポート番号、Windowsサイズ、測定時間、測定間隔を変更することができます。オプションについては後日追記するかもしれません。。。