トップページ > パフォーマンス管理コマンド・ツール関連 > Solarisでiperfを使用したネットワーク性能の検証
カテゴリー
オラクルエンジニア通信
サポートページ
マニュアルページ
ソフトウェアダウンロード
中古UNIXマシン購入
blogs.sun.com
お勧めサイト
プライベートリンク

Solarisでiperfを使用したネットワーク性能の検証

ネットワーク性能の検証ができるフリーソフトiperfの紹介です。
iperfとは
iperfパッケージの入手
iperfのインストール
iperfの使用法
iperfの使用例

iperfとは

WAN間/LAN間の最大転送速度の測定や、指定したサイズのトラフィック作成ができるフリーソフトです。ポート番号を自由に変更することで、QoSのテストなどにも役立ちます。

最近は仮想化ブームですので、物理NICと仮想NICの性能比較や、仮想NICの帯域幅を検証したりするのにも役立ちます。

iperfパッケージの入手

ソースからコンパイルしても構いませんが、Solaris用のパッケージが sunfreeware.com にありますので、こちらを使うのが楽で良いでしょう。所詮、性能検証ツールですから。。。

というわけで sunfreeware.com からSolaris10用の以下のパッケージをダウンロードします。

  • iperf-2.0.4-sol10-sparc-local.gz
  • libgcc-3.4.6-sol10-sparc-local.gz (iperfの実行に必要なライブラリが含まれている)

iperfのインストール

パッケージなので pkgadd するだけです。

bash-3.00# ls
iperf-2.0.4-sol10-sparc-local.gz
libgcc-3.4.6-sol10-sparc-local.gz
bash-3.00# gunzip *.gz
bash-3.00# pkgadd -d libgcc-3.4.6-sol10-sparc-local
...
bash-3.00# pkgadd -d iperf-2.0.4-sol10-sparc-local
...

iperfの使用法

iperfは/usr/local/binにインストールされますので、必要に応じてPATHを通しておきます。

bash-3.00# PATH=/usr/local/bin:$PATH
bash-3.00# export PATH

オプションなどを調べるため、とりあえずコマンドのヘルプを表示します。

bash-3.00# iperf -h
Usage: iperf [-s|-c host] [options]
       iperf [-h|--help] [-v|--version]

Client/Server:
  -f, --format    [kmKM]   format to report: Kbits, Mbits, KBytes, MBytes
  -i, --interval  #        seconds between periodic bandwidth reports
  -l, --len       #[KM]    length of buffer to read or write (default 8 KB)
  -m, --print_mss          print TCP maximum segment size (MTU - TCP/IP header)
  -o, --output     output the report or error message to this specified file
  -p, --port      #        server port to listen on/connect to
  -u, --udp                use UDP rather than TCP
  -w, --window    #[KM]    TCP window size (socket buffer size)
  -B, --bind         bind to , an interface or multicast address
  -C, --compatibility      for use with older versions does not sent extra msgs
  -M, --mss       #        set TCP maximum segment size (MTU - 40 bytes)
  -N, --nodelay            set TCP no delay, disabling Nagle's Algorithm
  -V, --IPv6Version        Set the domain to IPv6

Server specific:
  -s, --server             run in server mode
  -U, --single_udp         run in single threaded UDP mode
  -D, --daemon             run the server as a daemon

Client specific:
  -b, --bandwidth #[KM]    for UDP, bandwidth to send at in bits/sec
                           (default 1 Mbit/sec, implies -u)
  -c, --client       run in client mode, connecting to 
  -d, --dualtest           Do a bidirectional test simultaneously
  -n, --num       #[KM]    number of bytes to transmit (instead of -t)
  -r, --tradeoff           Do a bidirectional test individually
  -t, --time      #        time in seconds to transmit for (default 10 secs)
  -F, --fileinput    input the data to be transmitted from a file
  -I, --stdin              input the data to be transmitted from stdin
  -L, --listenport #       port to recieve bidirectional tests back on
  -P, --parallel  #        number of parallel client threads to run
  -T, --ttl       #        time-to-live, for multicast (default 1)
  -Z, --linux-congestion   set TCP congestion control algorithm (Linux only)

Miscellaneous:
  -x, --reportexclude [CDMSV]   exclude C(connection) D(data) M(multicast) S(settings) V(server) reports
  -y, --reportstyle C      report as a Comma-Separated Values
  -h, --help               print this message and quit
  -v, --version            print version information and quit

[KM] Indicates options that support a K or M suffix for kilo- or mega-

The TCP window size option can be set by the environment variable
TCP_WINDOW_SIZE. Most other options can be set by an environment variable
IPERF_, such as IPERF_BANDWIDTH.

Report bugs to 

主要なオプションは以下の通りです。

-sサーバモードで起動
-c hostクライアントモードで起動し、hostで指定したアドレスに接続
-i intervalintervalで指定した秒ごとに結果を表示(デフォルトは10秒後の1回のみ)
-l lenread、writeするときのバッファ長をバイトで指定(デフォルトはTCP:8KB、UDP:1470B)
-p portサーバ側の待受けポートを指定(デフォルトは5001)、クライアントモードではサーバのポート番号を指定
-uUDPモードで動作させる(デフォルトはTCPモード)
-w windowウィンドウサイズをで指定する
-b bandwidth送信するUDPの帯域をbpsで指定する(デフォルトは1Mbps) ※クライアントモードのみ
-t timetimeで指定した秒数の間送受信します ※クライアントモードのみ
-P numbernumberで指定した数のクライアントスレッドを並列で実行します

iperfの使用例

もっとも簡単な使用方法は以下の通りです。

【サーバー側】
bash-3.00# iperf -s
【クライアント側】
bash-3.00# iperf -c 192.168.0.1

すると約10秒で計測は終了し、サーバー側に以下のような結果が表示されます。

bash-3.00# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 48.0 KByte (default)
------------------------------------------------------------
[  4] local 192.168.0.1 port 5001 connected with 129.158.17.178 port 32945
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.1 sec  63.3 MBytes  52.8 Mbits/sec

上記の結果からは10秒間に63.3MBのデータが流れたことを示し、52.8Mbpsのスピードが出ていることがわかります。

ただし、計測時間が短いと数値にバラツキが出たり、単一のスレッドではネットワーク帯域以外の要素で上限が抑えられている可能性もあります。そこで以下のように並列数を指定したり、計測時間を延長したりすることもできます。

【サーバー側】
bash-3.00# iperf -s
【クライアント側】
bash-3.00# iperf -c 192.168.0.1 -P 4 -t 20

すると今度は約20秒で計測は終了し、サーバー側に以下のような結果が表示されます。

bash-3.00# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 48.0 KByte (default)
------------------------------------------------------------
[  4] local 192.168.0.1 port 5001 connected with 129.158.17.178 port 32947
[  5] local 192.168.0.1 port 5001 connected with 129.158.17.178 port 32948
[  6] local 192.168.0.1 port 5001 connected with 129.158.17.178 port 32949
[  7] local 192.168.0.1 port 5001 connected with 129.158.17.178 port 32950
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-20.3 sec  48.1 MBytes  19.9 Mbits/sec
[ ID] Interval       Transfer     Bandwidth
[  5]  0.0-20.3 sec  48.0 MBytes  19.9 Mbits/sec
[ ID] Interval       Transfer     Bandwidth
[  7]  0.0-20.3 sec  50.1 MBytes  20.7 Mbits/sec
[ ID] Interval       Transfer     Bandwidth
[  6]  0.0-20.3 sec  51.0 MBytes  21.1 Mbits/sec
[SUM]  0.0-20.3 sec    197 MBytes  81.6 Mbits/sec

上記の結果からは20秒間に197MBのデータが流れたことを示し、81.6Mbpsのスピードが出ていることがわかります。これは先ほどの計測データよりもスピードが出ていることがわかります。つまり同じネットワーク構成でも指定したオプションによって結果が変わってくることになります。

別の構成で性能を比較するには、同じオプションを使うことは当然ですが、逆にどのような通信であれば性能を出すことができるのかなどを検証することもできることがわかります。

オラクルユニバーシティSolaris系技術トレーニング一覧

Solarisお勧め書籍

Solaris 11.2 システムハンドブック
Oracle Solaris 11 試験対策本(OCA)