CentOSでネットワークの帯域を計測する

iperfを使えばネットワークの帯域を計測することができます。

UNIX系ではnetperfが有名かと思いますが、UDPの計測に関してはIperfの方が使いやすいと思います。
WindowsLinuxなど各種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 -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 -t <計測時間[sec]> -i <インターバル> -b <送信帯域>

ex.) $ iperf -c 224.0.55.55 -u -T 32 -t 10 -i 1 -b 1M
IPv6モード
サーバ
$ iperf -s -V
クライアント
$ iperf -c -V

◆結果の見方

サーバー側
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 port 5001 connected with 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 port 9726 connected with 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 [KM] 帯域指定(default 1Mbps)UDPのみ
  • T TTL
  • t 測定時間
  • i レポート表示間隔
  • l パケットサイズ
  • d 送受信モード

GUI
Iperfのフロントエンドでjperfというものもあります。
http://dast.nlanr.net/projects/jperf/
慣れないうちはこれを使うと設定などやりやすいかもしれません。
Windowsで使う場合は、jperfのオーバーヘッドにより高レートではパケットロスが発生することもあるみたいです。