Iperfでネットワークスループットを計測

回線速度を計測するサイトは色々あるが、あくまで回線のスループットですね。

それでは、VPNで繋がっている拠点間やサーバ(クライアント)同士のスループットを計測する場合は、みなさんどのような形で行っておりますでしょうか?

pingでスループットを計算することは可能ですが、計算式が面倒だったりしますね。
ちなみにpingの場合の計算式は、以下となります。

(データサイズ*2)÷所要時間[bytes/s]

ただし、データサイズが小さいと正確な速度が測定出来ず、大きすぎるとフラグメント化したIPパケットが禁止されている場合、エラーとなったりします。

コマンドだとこんな感じです。

ping -l 60000 HOST

このコマンドを実行した際の平均時間を基に計算します。
結果が2msだった場合、

(60000*2)÷0.002≒60[MB/s]

60MBのスループットとなりました。
しかし、LAN内で行った場合、返答時間が1ms以下となったりするので、計測は出来なくなりますw

そこで今回紹介する「iperf(アイパーフ)」というツールです。
Iperfはネットワークスループットを測定するツールです。

 

Iperfのダウンロード

▼Windows版

http://linhost.info/2010/02/iperf-on-windows/

▼Linux版

http://sourceforge.net/projects/iperf/

 

Iperfのインストール

Windows版であれば、ダウンロードしたファイルを適当なところに設置。コマンドプロンプトにて利用します。
Linux版はtar.gz形式となっておりますので、以下のような感じでインストールしてください。

tar zxvf iperf-2.0.5.tar.gz
cd iperf-2.0.5
./configure
make
make install

 

Iperfの使い方

Iperfはクライアント側(送信側)とサーバ側(受信側)双方にインストールする必要があります。

 

 

 

 

 

最初にサーバ側にて以下のコマンドを実行し、クライアント側からのパケットを待つようにします。

iperf -s

続いてクライアント側です。

iperf -c (サーバIP or name)

 

実行した結果が、以下となります。
今回はクライアント側が192.168.0.0/24で、サーバ側が192.168.255.0/24で構成され、拠点間をVPNで接続している状態を計測しました。

C:\>iperf.exe -c 192.168.255.xxx
------------------------------------------------------------
Client connecting to 192.168.255.xxx, TCP port 5001
TCP window size: 63.0 KByte (default)
------------------------------------------------------------
[132] local 192.168.0.xxx port 63754 connected with 192.168.255.xxx port 5001
[ ID] Interval       Transfer     Bandwidth
[132]  0.0-10.1 sec  15.3 MBytes  12.7 Mbits/sec

12.7Mbpsですね。ちょっとVPNレスポンス悪いです。。。

このように回線自体の速度は問題ないけれど、VPNや特定の機器を経由した場合に速度低下になるなど、確認することが可能です。