Netperf でLANをチェック

Updated : 2006/06/16       


Netperf の使いかたの図

NetPerf の使い方の図

■ Netperf を使ったネットワークの性能計測を説明します
  Netperf は、LANを含むさまざまなタイプのネットワークの性能を計測するベンチマークソフトです。
やさしく使えるネットワークのベンチマークソフトと してお すすめできます。
Netperf には UNIX 版と Windows 版が用意されていて、相互の版の間でも利用できます。
計測時にはメモリ上のデータについて転送を実行するので、ハードディスク上のファイル アクセスをしません。そのため、巨大なインターネットでも小規模なLANであっても、2台のPC間のネットワーク( 2ノード間 )についてのスループットとネットワーク遅延を計測できます。

 このページは、「横浜ネットデイ」で学校内に敷設した下図のようなLAN回線を、かんたんにテストできるように作成しました。

Netperf で計測するネットワーク径路

このページでは、Netperf のもつ TCP、UDP、Berkeley Sockets のパフォーマンス計測機能のうち、TCP転送速度についてだけ、初心者にも使いやすく説明しています。書かれていない計測方法については、マニュアルを参 照してください。


※  Netperf のコピーライトは、米国ヒューレット パッカード社にあり、GPLに基づくオープンソースソフトウェア
  ではありません。しかし非商用目的ならば、ドキュメントを含むソフトウェアの、利用、再編利用、配布ができます。

■  メニュー
  1. 必要なもの 
  2. ダウンロードする 
  3. インストー ル方法  Windows  ( Windows ) 
  4. インストール方法  Linux   ( UNIX/Linux ) 
  5. かんたん な LAN回線のパフォーマンス計測 ( Windows ) 
  6. かんたんな LAN回線のパフォーマンス計測 ( UNIX ) 
  7. puddy_netperf をつかう 
  8. 計測結果について 
  9. 参考資料 


  必要なもの

Netperf を利用してネットワークのパフォーマンスを計測するには次のものが必要になります。
  1. 2台のネットワーク (TCP/IP) 通信の利用できる Windows または UNIX のパソコン。
  2. 計測したいネットワーク、LAN回線。
  3. UNIX で利用する場合は、ソースをコンパイルするための gcc など開発環境が必要です。
Netperf をインストールする双方のパソコンには、IPアドレスを割り当てることが必要です。



  ダウンロードする

Netperf の公式サイトからソフトウェアをダウンロードします。

Windows 用最新版 : netserver-a4.exenetperf-a4.exe 
URL :  ftp://ftp.cup.hp.com/dist/networking/benchmarks/netperf/binaries/2.1pl1/win32/x86/

UNIX 用最新版 : netperf-2.3.tar.gz
URL :  ftp://ftp.cup.hp.com/dist/networking/benchmarks/netperf/
Netperf のマニュアル
URL :  ftp://ftp.cup.hp.com/dist/networking/benchmarks/netperf/netperf_2.1_manual.pdf
Netperf はクライアント/サーバー型のソフトウェアで、この2つがそろってはじめて計測ができます。
Windows 版には、実行可能なサーバーとクライアントのバイナリーが用意されているので、両方をダウンロードします。
UNIX 版は、入手したソースプログラムをコンパイルし、生成されたサーバーとクライアント使用します。


  インストール方法 ( Windows 版)

ダウンロードした Windows 版 Netperf の2つのファイルを、Windows パソコンに適当な作業フォルダーを作ってコピーします。
ここでは Cドライブに、 ディレクトリ C:\NETPERF を作成してダウンロードした2つのソフトをコピーします。

noCドライブに作 業ディレクトリ C:\NETPERF を作成する。
ドラッグアンドドロップでコピーする 作業ディレクトリにサーバーとクライアントをコピー。

作業ディレクトリに2つのソフトウェアをコピーすれば、インストール作業は終了です。



  インストール方法 ( UNIX 版 )

ダウンロードした UNIX 版 Netperf のソースファイルを、適当な作業ディレクトリにコピーしてインストール作業をします。

@  ソースファイルを作業ディレクトリにコピーして解凍する


# cd /usr/local/src
# cp /tmp/netperf-2.3.tar.gz .
# tar zxvf netperf-2.3.tar.gz
# cd netperf-2.3


A  makefile の次の個所をエディターで書き換える


CFLAGS = -O -D$(LOG_FILE) -DNEED_MAKEFILE_EDIT

↓   以下のように変更する

CFLAGS = -O -D$(LOG_FILE) -DUSE_PROC_STAT -DDO_FIRSRT_BURST

  ※ リナックスワールド2004年7月号掲載記事の設定を参考にしました。

B コンパイルしてインストールする


# make
# make install

  Netperf は /opt/netperf/ にインストールされます。

C  コマンドオプションをしらべる


# netserver -h
Usage: netserver [options]

Options:
    -h                Display this text
    -d                Increase debugging output
    -p portnum        Listen for connect requests on portnum.
    -4                Do IPv4
    -6                Do IPv6
    -v verbosity      Specify the verbosity level


 Netperf の使いかたについては、マニュアルを参照します。



  かんたんな LAN回線のパフォーマンス計測  ( Windows )

Netperf で2台のパソコン間のネットワークのパフォーマンスを計測します。
ここでは、オフィスや学校内LANを敷設したあとで、かんたんにネットワークのパフォーマンスを計測してみます。

@  2台の Netperf をインストールしたパソコンを、計測するネットワークに接続する

接続図、写真 

A  Netperf サーバーを起動する

netperfserver-a4.exe のアイコンをダブルクリックすると、Netperf のサーバーが起動する。

netperfserver を起動する

 netperfserver-a4.exe のアイコンをダブルクリックすると、Netperf のサーバーが起動する。
 起動した NetperfServer は、ポート番号 12865 番でクライアントからの接続を待ち受ける。


B  Netperf でセルフテストする

       DOS窓を起動して C:\NETPERF の作業ディレクトリに移動し、同じPC上でNetperf クライアントを起動してテストをする。
自分のPCで起動している nepertserver ( IPアドレス:192.168.0.2 )に対して、netperf ( クライアント ) を利用してパフォーマンスを計測してみる。

    コマンド書式  :   netperf  -H [ サーバーの IPアドレス ]

     事例 : netperf -H 192.168.0.2      

   ヘルプを 見る

Netperf でセルフテストする
  サーバーの起動した自分のマシンの IP アドレス(192.168.0.2)を指定して netperf のベンチマークテストを実行した。

  この事例では、10秒間テストを実行して、スループットが 185.05 Mbit/sec と計測されています。


B  Netperf クライアントを別のPCから起動して計測をする

ここでは Linux ( FedoraCore2 ) にインストールした Netperf サーバーとの間のベンチマークテストを実行します。

Win2Linux
   Netperf のサーバーのIPアドレス (192.168.0.22 ) を指定して netperf のベンチマークテストを実行した。
10秒間テストを実行して、スループットが 94.50 Mbit/sec と計測されています。

計測した LANでは、100BASE-T に対応したハブスイッチ、LANケーブル、LANカードを使用しています。
このLANでは、ネットワーク( 100BASE-T )の最高スピードが 100Mbit/sec なので、計測結果 94.50 Mbit/sec は上限値に近い値である ことがわかります。


  かんたんな LAN回線のパフォーマンス計測  ( UNIX )

ここでは FedoraCore2 Linux にインストールした Netperf の操作手順を説明します。

@  インストールした Netperf のサーバー netserver を起動する



# cd /opt/netperf
# ./netserver
  Starting netserver at port 12865

  起動した netserver は、ポート番号 12865 番で netperf クライアントからの接続を待ち受ける。


A サーバー netserver を起動したPC上で、クライアント netperf を ( 自分に向けて ) 実行する


 # ./netperf -H 192.168.0.22
TCP STREAM TEST to 192.168.0.22
Recv   Send    Send                         
Socket Socket  Message  Elapsed             
Size   Size    Size     Time     Throughput 
bytes  bytes   bytes    secs.    10^6bits/sec 

 87380  16384  16384    10.00    2130.44  

  サーバーの起動している自分のマシンの IP アドレス(192.168.0.22)を指定して netperf のベンチマークテストを実行した。
10.00 秒間のテスト実行して、スループットが 2130.44Mbit/sec でした。

B netperf クライアントで別のPCを計測をする

ここでは、WindowsXP にインストールした Netperf サーバーとの間のパフォーマンスを計測します。


# ./netperf -H 192.168.0.2
TCP STREAM TEST to 192.168.0.2
Recv   Send    Send                         
Socket Socket  Message  Elapsed             
Size   Size    Size     Time     Throughput 
bytes  bytes   bytes    secs.    10^6bits/sec 

  8192  16384  16384    10.01      94.11  

10.00秒間テストを実行して、スループットが 94.11 Mbit/sec と計測されています。

  このテストで使用した相手方のPCと(サーバー/クライアントの) 役割を逆転させて、実行した時は 94.50 Mbit/secでした。

C Netperf サーバーを停止させる

ベンチマークテスト終了後は、次のコマンドで netserver を停止させることができます。


# kill [ netserver のPID ]

netserver は、クライアントの netperf から接続を受けて、レスポンスを返すだけですが、起動中はポート 2865 番を占有します。



  puddy_netperf をつかう

■ puddy_netperf.exe を実行する

Windows 版 Netperf-2.1pl1 の公開ディレクトリには puddy_netperf/server が用意されています。

puddy_netperf の実行画面
 実際に puddy_netperf でベンチマークテストを 実行した結果です。
( puddy_netserver を上記の Linux マシンで起動させた環境で Windows 版 puddy_netperf を実行したものです。 )



  計測結果について

■ 2つのノード間の径路

 Netperf のベンチマークテストでは、デフォルト設定で2つのノード間の TCP ポート 12865番について10秒間実行されます。そのほかテストしたい TCP/UDP、ポート番号の指定はコマンドオプションにてできます。
パケットの通過するネットワーク径路にルーターやレイヤー3スイッチなどがある場合には、ルーティングやフィルタリングでパケット廃棄されてしまうことも あります。パケットが通過できない場合は、アクセス制限を確認してください。
また、径路にいくつかのHUBがある場合には、パケットの通過するハブの性能や段数のちがいを知ることができます。


■  計測結果の精度は?

  Netperf-2.3 の UNIX 版に付属する README の中では「 ・ ・ ・ 無償のベンチマークソフトウェアです、完璧さを期待しないでください。」と述べています。Netperf は開発時に想定した利用環境(ハードウェア、ネットワーク機器、・ ・ ・ )とはちがった環境で使用された場合には、計測結果の精度にも影響します。そこで、計測結果は「パフォーマンスの絶対評価用途には、精度は保証できない が、相対的な性 能評価や、ベ ンチマークソフトとして便利に利用ください。」と自分は解釈しています。 

■  計測方法を計画する

 できるだけ Netperf の計測結果に客観性をもたせる計測方法を考えました。
簡単なベンチマークテストの場合には必要ありませんが、パフォーマンス・チューニングや「ケーブル回線トラブルの解決」がテスト目的の場合は検討事項とし てご利用ください。

・ イーサネット、TPC/IP の特性を考慮して計測方法を計画する。
・ 2つのノード間のテストは、実際に利用するパケットのタイプ(TCP/UDP) やMTU値を設定して実行する。
・ NetPerf でベンチマークテストをする際には、テストする径路に関係のないネットワーク機器はつながない。
・ Netperf の計測をする場合は、サーバーとクライアントの2台(ノード)のPCを特定の機種・製品に決めて実行する。
・ 計測はパケットの MTU 値は適切な値に固定して実行する。
・ 計測に使用する2台間のネットワークにでは、各点で相互にサーバーとクライアントの役割で計測を実行する。
・ 計測回数は複数回を実行して実測値の平均値を採用する。

■ 使ってわかったこと

  まだ NetPerf は大きなネットワークで利用していませんが、自宅内LAN のレベルのテストではその価値を十分引き出せていないようです。
NetPerf のベンチマークテストで得られた計測値を、「ネットワーク計測用テスター」で得られる信号損失値と比較してみたいと考えています。



  参考資料

このページを作成するにあたリつぎの資料を参考にしました。

・ Netperf 公式サイト
http://www.netperf.org/

・ Netperf を使う
http://www.asahi-net.or.jp/~pm5m-on/it/net/analyzer/netperf/

・ Hironobu's Homepage ( How to build Internet Server with Solaris 2.6: netperf-2.1.pl3 )
http://www.geocities.co.jp/SiliconValley/6633/solaris/solnetperf.html
・ netperf: A Network Performance Benchmark
http://mikilab.doshisha.ac.jp/dia/smpp/01_bench/netperf.html
・ [obu:02460] Re: netperf で速度が出ない…?
http://search.luky.org/obu/msg02459.html
・ 月刊誌「リナックスワールド」2004/9月号
特集: サーバー管理者の7つ道具
・ 月刊誌「UNUX Magazine」1999/5月号
特集: PC UNIX ベンチマーク
・ Netperfによるネットワークトラフィック測定
http://mikilab.doshisha.ac.jp/dia/research/report/2002/0402/012/report20020402012.html





もどる もどる