DHCP負荷試験ツール

Table of Contents

Table 1: 更新履歴
ver 種別 内容      
0.1.0 新規作成 DHCP負荷ツール作成      
0.1.1 不具合修正 シナリオデータのIPアドレス、16進数列が読み取りが正しくできない不具合を修正      
0.1.1 不具合修正 通信不能のとき、終了しない不具合を修正      
  不具合修正 シナリオデータファイルが存在しないとき、エラーにならない不具合を修正      
0.1.2 機能修正 リレーエージェントを用いるとき、デフォルトの受信ポートが 67 が指定されるようになった      
  機能追加 計測種類に slowly, endless, once を追加      
0.1.3 不具合修正 Option 255 が、パケットに含まれないパターンがある不具合を修正      
  機能修正 デフォルトでログ出力するようにした      
  機能追加 ログ出力オフをコマンドライン引数で指定できるようなった      
0.1.4 不具合修正 デバッグ出力のレスポンスパケットとリクエストパケットの出力順序が逆転していた不具合を修正      
  不具合修正 測定 slowly において、エラーが多いと正常に測定できなくなる不具合を修正      
0.1.5 不具合修正 累積データ数が多いと、segfault で落ちる不具合を修正      
0.1.6 不具合修正 ciaddr, yiaddr, siaddr, giaddr が正しく設定されない不具合を修正      
  不具合修正 デバッグ出力でIPアドレスがMACアドレス表記で出力されていた不具合を修正      
0.2.0 機能修正 計測アルゴリズムを改良し、高精度に求められるよう大幅に修正      
0.2.1 不具合修正 バッファアンダーフローでバッファを破壊する不具合を修正      
0.2.2 機能追加 DHCPサーバを指定して試験できるようになった      
0.2.3 機能修正 リース延長対応      
0.2.4 不具合修正 リレーアドレスがネットワークデバイス名のIPアドレスにならない不具合を修正      
0.2.5 不具合修正 クライアント試験のとき、Giaddr=@autoにすると、意図しないアドレスが指定される不具合を修正      
  不具合修正 通信間隔が毎秒5000を超えると divided by zero で落ちる不具合を修正      
0.3.0 不具合修正 リレーエージェントを経由したクライアント試験で、ブロードキャストアドレスで送信されない不具合を修正      
  機能追加 測定 slowly を廃止し、測定 loop を追加      
  機能修正 測定 highload の上限測定が過度に上昇しないように修正      
0.3.1 機能追加 クライアント数の上限値をコマンドライン引数 limit で指定できるようになった      
  機能修正 プロミスキャス測定をデフォルトで有効にして、無効化できるように修正      
0.3.2 不具合修正 プロミスキャスモードのとき、送信元ポートが動的ポートになる不具合を修正      
0.3.3 不具合修正 リレー経由の試験のとき、デフォルトの受信ポート番号が 67 にならない不具合を修正      
  機能追加 シナリオを繰り返し実行できる指定を追加      
  機能追加 トランザクションIDを指定する引数を追加      
0.3.4 機能追加 トランザクションごとに、シナリオデータを変化させる機能を追加      
  機能修正 測定 loop のとき、繰り返す度に Chaddrがリセットされていたが、リセットしないように修正      
0.3.5 機能追加 DHCPサーバを複数指定して試験できるようになった      
  機能追加 使用するMACアドレス数を指定できるようになった      
  不具合修正 シナリオデータを変化させる機能で、リクエストごとのオプションが一致しなくなる不具合を修正      
  不具合修正 リレー経由のリクエストが、ブロードキャストで送信される不具合を修正      
0.3.6 不具合修正 cooldown-time 指定が正しく動作していなかった不具合を修正      
  機能追加 テスト実行前にスクリプトを実行する機能を追加      
  不具合修正 option54が正常に動作していなかった不具合を修正      

はじめに

本書は、日本シー・エー・ディー社のDHCP負荷試験ツール「dhcpperf」についてのリファレンスマニュアルです。

DHCP負荷試験ツールは、DHCPサーバに対し複数のクライアントが同時にDHCPアドレスを取得する動作を模倣し、高負荷時の性能試験・評価を行うためのツールです。
また、DHCPの情報はシナリオデータファイルを用いることで、クライアントによるリース要求・解放以外にも、リレー経由や独自なオプションを指定しての試験が可能となっています。

クイックスタートガイド

本ツールは、以下のような書式で起動します。

簡単に試すときは

./dhcpperf -v -s <DHCPサーバ IPアドレス> <デバイス名>

を指定してください。
<デバイス名>はdhcpperfを実行するホストのネットワークデバイスのうち、DHCPサーバのネットワークへ通信が可能なものの名前に置き換えてください。
指定したDHCPサーバのIPアドレスへユニキャストでDHCPDISCOVERメッセージ、DHCPREQUESTメッセージ、DHCPRELEASEメッセージを送信します。

DHCPサーバとの通信ができないと

secs success failure  active | minimum current maximum | average slowest fastest
   1       0       0       0 |       0       0       0 |       0       0       0
   2       0       0       2 |       0       0       0 |       0       0       0
   3       0       0       3 |       0       0       0 |       0       0       0
Unable to continue.

と表示され、測定失敗になります。

DHCPサーバとの通信に成功すると

secs success failure  active | minimum current maximum | average slowest fastest
   1       0       0       0 |       0       0       0 |       0       0       0
   2       1       0       1 |       0       0       0 |     303     303     303
   3       2       0       1 |       0       2       2 |     303     303     303
...

から始まり、

secs success failure  active | minimum current maximum | average slowest fastest
  19    4125     133    2726 |       0    2000    2000 |     302     332     300
Inital probe complete: High-water mark is 2000 clients/second.

最初にDHCPサーバの限界性能を測定します。
currentの値は、1秒あたりのDHCPDISCOVERメッセージ送信数を表しており、2000のときは約 0.5ミリ秒間隔で送信しています。
各カラムの説明は統計情報出力についてに記載されています。

最大処理数を決定したら、最大処理数の半分の処理数から測定を開始します。
この測定時間はデフォルト120秒で、この間エラーが小さければ測定成功となり処理数を上げ、逆にエラーが増えると処理を下げ、再び測定を行います。

secs success failure  active | minimum current maximum | average slowest fastest
  20    4936     505    3579 |       0       0    2000 |     302     332     300
  21    5174    1008    2334 |       0       0    2000 |     302     334     300
  22    5174    1000    1334 |       0       0    2000 |     302     334     300
  23    5174    1334       0 |       0       0    2000 |     302     334     300
Preparing for next test run.
  24    5174       0       0 |       0       0    2000 |     302     334     300
  25    5174       0       0 |       0       0    2000 |     302     334     300
  26    5174       0       0 |       0       0    2000 |     302     334     300
  27    5174       0       0 |       0       0    2000 |     302     334     300
  28    5174       0       0 |       0       0    2000 |     302     334     300
Beginning test run: 1000 clients/second for 120 seconds.
  29       0       0       0 |       0    1000    2000 |       0       0       0
  30     566       0     372 |       0    1000    2000 |     301     303     300
  31    1372       0     507 |       0    1000    2000 |     301     304     300
  32    2160       0     659 |       0    1000    2000 |     301     304     300
  33    2943     134     681 |       0    1000    2000 |     301     304     300
Stopping run after 33 seconds; 134/7056 clients failed.
Preparing for next test run.
  33    2943       0     682 |       0       0    1000 |     301     304     300
  34    3182     134     309 |       0       0    1000 |     302     335     300
  35    3182     155     154 |       0       0    1000 |     302     335     300
  36    3182     154       0 |       0       0    1000 |     302     335     300
  37    3182       0       0 |       0       0    1000 |     302     335     300
Beginning test run: 500 clients/second for 120 seconds.
  38       0       0       0 |       0     500    1000 |       0       0       0
...
 706   88228       0     455 |     775     777     779 |     302     377     300
Succeeded test run: 88228/88246 clients/seconds.

最終的に、エラーが小さく処理数が多い結果をDHCPサーバの性能として評価します。

Finished and report: 777 transactions per second.

この結果は、「1秒あたり 777 トランザクションを処理できる」ことを示しています。

以上が、基本的な試験の流れになります。
ただし、この試験は簡易的なものです。細かなパラメータを指定した試験は、シナリオデータファイルを用いて行うことが可能です。

インストール方法

本ツールは、CentOS 5 と 6 の 64bit が用意されています。RPM版は

rpm -ivh dhcpperf-<バージョン番号>.rpm

コマンドでインストールすることができ、以下のファイルが展開されます。

/usr/bin/dhcpperf
/usr/share/ncad/dhcpperf/expand.dat
/usr/share/ncad/dhcpperf/discover.dat
/usr/share/ncad/dhcpperf/release.dat
/usr/share/ncad/dhcpperf/request.dat

起動オプション

  • -h --help
    ヘルプメッセージを表示
  • --usage
    簡略化したヘルプメッセージを表示
  • -v --progress
    1秒ごとに統計情報を表示
  • -s --server サーバIPアドレス[,サーバIPアドレス...]
    DHCPサーバのIPアドレスを指定。無指定の場合は、ブロードキャストアドレスで試験を行う
  • --test-duration 時間
    計測時間(秒)を指定。デフォルト値は120秒
  • --hardware XX:XX:XX:XX:XX:XX
    リクエストに用いるMACアドレスを指定。
  • --hardware-length 個数
    リクエストに用いるMACアドレス数を指定。上限を超えると最初のMACアドレスに戻る。デフォルトは 16777216
  • --xid 数値
    トランザクションIDに用いる値を指定
  • --clients 個数
    初期時における1秒間の同時リクエスト数を指定
  • --limit 個数
    1秒間の同時リクエスト数の上限値を指定
  • --timeout 時間
    DHCPパケットのタイムアウトとして判定する時間を指定。デフォルトは3秒
  • --cooldown-time 時間
    測定して終わってから、次の測定が始まるまでの待機時間を指定。デフォルトは5秒
  • --error-threshold しきい値
    エラーと判定する割合を指定 (= 失敗数 ÷ 成功数 ☓ 100)。デフォルトは0.1%
    (0.1 の場合、1000回成功したら1回は失敗してもエラーとはしない)
  • --recv-port ポート番号
    DHCPパケットを受信するポート番号を指定。デフォルトだと、クライアントでの測定時は 68 ポート、リレーでの測定時は 67 ポートを使う
  • --send-port ポート番号
    DHCPパケットの送信先ポート番号を指定。デフォルトは 67 ポート番号
  • --nthreads スレッドプール数を指定
    プログラムで使用するスレッドプール数を指定。コア数に合わせると処理効率が高まる
  • --disable-promiscuous
    プロミスキャスモードで通信を行なわない。
  • --test-mode [mode]
    highload: 最高速を測定し、徐々の下げる
    slowly: 負荷を徐々に上げる
    endless: 永遠に一定数の負荷をかけつづける
    once: 1回だけ処理を行う
  • --log-file ファイル名
    デバッグログ出力を保存するファイル名を指定。
    (※ログローテーションは行わず、巨大なファイルになることがあるので注意)
  • --exec-file ファイル名
    テストを動かす前にスクリプトを実行するファイル名を指定。

シナリオデータファイル

シナリオデータファイルには、DHCPリクエストの内容を定義することができます。

Table 2: データ定義の種類
  名称 データ型 説明
  Hops 整数  
  Secs 整数  
  Broadcast 0 or 1  
  Ciaddr IPアドレス  
  Yiaddr IPアドレス  
  Siaddr IPアドレス  
  Giaddr IPアドレス  
  Chaddr MACアドレス  
  Sname 文字列  
  File 文字列  
  1 ... 255 バリアント  
  53 DHCPメッセージ名 DHCP Message Type
  54 IPアドレス Serve Identifier

DHCPメッセージ名

DHCPメッセージ名には、以下の文字列が利用できます。※大文字、小文字は区別しません。

  • DHCPDISCOVER
    DHCPDISCOVERメッセージを送信します。通常、クライアントのときは Broadcast = 1 を指定し、リレーのときは Giaddr = <DHCPサーバアドレス> を指定します。
  • DHCPREQUEST
    DHCPREQUESTメッセージを送信します。
  • DHCPRELEASE
    DHCPRELEASEメッセージを送信します。
  • DHCPDECLINE
    DHCPDECLINEメッセージを送信します。
  • DHCPINFORM
    DHCPINFORMメッセージを送信します。

バリアント

バリアントには、文字列, IPアドレス列, 10進数列, 16進数列の書式でデータを記述することができます。

  • 文字列 は、""(ダブルクォート)で囲うことで表現します。
    例: "dhcpperf"
  • IPアドレス列 は、IPアドレス表記 192.168.100.1 を ,(カンマ)区切りで表現します。
    例: 192.168.0.100, 192.168.0.101, 192.168.0.102
  • 10進数列 は、0から255までの数値を ,(カンマ)区切りで表現します。
    例: 1,2,3,4,5,6,7,8,9
  • 16進数列 は、00からFFまでの2桁数値を :(コロン)区切りで表現します。
    例: 00:01:02:03

特殊文字 @auto

パラメータの値に「@auto」を指定すると、DHCPサーバからレスポンスデータの同じパラメータ値を利用することができます。

例えば、オプション54 に「@auto」を指定した場合、レスポンスメッセージに オプション54 が含まれていると、そのままリクエストメッセージとして送信します。
オプションパラメータは、DHCPDISCOVERメッセージや、レスポンスメッセージに指定のオプション番号が含まれていない場合、次のリクエストメッセージにオプションパラメータは含まれません。

基本は、同じレスポンスパラメータを利用しますが、一部のパラメータに「@auto」を指定すると、特殊な値が設定されます。

Broadcast

パラメータ Broadcast に「@auto」を指定すると、コマンドライン引数 --server の指定があると 0 になり、指定がないと 1 が設定されます。
そのため、DHCPDISCOVERメッセージのときだけ Broadcast=@auto を指定し、それ以外のDHCPREQUESTメッセージなどでは Broadcast=0 を指定しておけば、コマンドライン引数 --server の指定の有無でクライアント動作・リレー経由の動作を切り替えることができます。

Ciaddr

パラメータ Ciaddr に「@auto」を指定すると、DHCPサーバからのレスポンスパラメータ Yiaddr のIPアドレスが設定されます。

Giaddr

パラメータ Giaddr に「@auto」を指定すると、コマンドライン引数 --server を指定しているとデバイス名に割り当てられているIPアドレスが設定されます。

Chaddr

パラメータ Chaddr に「@auto」を指定すると、DHCPサーバに問い合わせるMACアドレスがランダムになります。
ランダムに用いるMACアドレスは コマンドライン引数 --hardware で指定した値から下位3バイトの範囲内のMACアドレスが割り振られます。
※ プログラムの実装上、ほとんどは連番になりますが、必ずしもMACアドレスアドレスが連番になる保障はありませんのでご注意ください。

オプション50

パラメータ オプション50 に「@auto」を指定すると、DHCPサーバからのレスポンスパラメータ Yiaddr のIPアドレスが設定されます。
DHCPDISCOVERメッセージにはこのパラメータは通常、設定しません。設定すると、DHCPDISCOVERメッセージに オプション50 が付加されてしまいます。

オプション54

パラメータ オプション54 に「@auto」を指定すると、コマンドライン引数 --server で指定しているDHCPDISCOVERメッセージの オプション54 にDHCPサーバIPアドレスが指定されます。
そのため、すべてのメッセージに 54=@auto を指定しておけば、コマンドライン引数 --server の指定の有無でクライアント動作・リレー経由の動作を切り替えることができます。

オプション61

パラメータ オプション61 に「@auto」を指定すると、クライアントIDが自動的で割り当てられます。
自動で割り当てられるIDは7バイトで、最初の1バイトが 0x01、残りがMACアドレスになります。

コマンドライン引数 --server によるシナリオデータファイルの操作

シナリオデータファイルの Broadcast, Giaddr, オプション54 に「@auto」が指定しておくと、クライアント試験・リレー経由の試験をコマンドライン引数 --server の有無で、自動的に切り替えることができます。
また、シナリオデータファイルに Broadcast, Giaddr, オプション54 を明示的に値を指定することも可能です。この場合、コマンドライン引数 --server を無視し、シナリオデータに基づいた試験になります。

シナリオデータを用いたDHCPクライアント試験の方法

シナリオデータは、本ツールが送信する1データを定義し、コマンドラインで複数のシナリオデータファイルを指定することで、DHCPサーバとの通信を制御します。
一連の動作を1回の処理として、DHCPサーバが1秒あたりどの程度の処理数まで正しく応答できるかを評価します。

DHCPサーバの性能を図る最も簡単な方法として、DHCPDISCOVER → DHCPOFFER → DHCPREQUEST → DHCPACK → DHCPRELEASE から成る "5 way hand-shakes" が挙げられます。
この場合、本ツールは DHCPDISCOVER、DHCPREQUEST、DHCPRELEASE の3つにシナリオデータファイルを用意します。

"5 way hand-shakes" の試験をシナリオデータで定義すると以下のようなファイル構成になります。

  • discover.dat
Hops=0
Secs=0
Broadcast=1
Ciaddr=0.0.0.0
Yiaddr=0.0.0.0
Siaddr=0.0.0.0
Giaddr=0.0.0.0
Chaddr=@auto
Sname=""
File=""
12="dhcpperf"
53=DHCPDISCOVER
55=1,3,6,15
61=@auto
  • request.dat
Hops=0
Secs=0
Broadcast=1
Ciaddr=0.0.0.0
Yiaddr=0.0.0.0
Siaddr=0.0.0.0
Giaddr=0.0.0.0
Chaddr=@auto
Sname=""
File=""
12="dhcpperf"
53=DHCPREQUEST
54=@auto
55=1,3,6,15
50=@auto
61=@auto
  • release.dat
Hops=0
Secs=0
Broadcast=1
Ciaddr=@auto
Yiaddr=0.0.0.0
Siaddr=0.0.0.0
Giaddr=@auto
Chaddr=@auto
Sname=""
File=""
12="dhcpperf"
53=DHCPRELEASE
54=@auto
55=1,3,6,15
50=@auto
61=@auto
./dhcpperf -v <デバイス名> ./discover.dat ./request.dat ./release.dat

※クライアントからの試験は、ブロードキャストアドレスを用いるため、コマンドライン引数に --server IPアドレスは指定しません。また、discover.dat の Broadcastパラメータには、ブロードキャストフラグ 1 を指定する点に注意してください。

シナリオデータを用いたリレーエージェント経由の試験方法

リレーエージェント経由の試験を行う場合、Giaddr に本ツールで使用するIPアドレス、オプション54にDHCPサーバのIPアドレスを指定する必要がありますが、Broadcast、Giaddr、オプション54に "@auto" を指定すると、コマンドライン引数 --server で指定したIPアドレスや<デバイス名>に設定されているIPアドレスが自動で設定されます。

リレー経由の "5 way hand-shakes" の試験をシナリオデータで定義すると以下のようなファイル構成になります。

  • discover.dat
Hops=0
Secs=0
Broadcast=@auto
Ciaddr=0.0.0.0
Yiaddr=0.0.0.0
Siaddr=0.0.0.0
Giaddr=@auto
Chaddr=@auto
Sname=""
File=""
12="dhcpperf"
53=DHCPDISCOVER
54=@auto
55=1,3,6,15,119,95,252,44,46,47,5,197,43,69,42,201,202
61=@auto
82=01:04:20:00:00:1e:02:06:70:58:12:35:13:33
  • request.dat
Hops=0
Secs=0
Broadcast=@auto
Ciaddr=0.0.0.0
Yiaddr=0.0.0.0
Siaddr=0.0.0.0
Giaddr=@auto
Chaddr=@auto
Sname=""
File=""
12="dhcpperf"
50=@auto
53=DHCPREQUEST
54=@auto
55=1,3,6,15,119,95,252,44,46,47,5,197,43,69,42,201,202
61=@auto
82=01:04:20:00:00:1e:02:06:70:58:12:35:13:33
  • release.dat
Hops=0
Secs=0
Broadcast=@auto
Ciaddr=@auto
Yiaddr=0.0.0.0
Siaddr=0.0.0.0
Giaddr=@auto
Chaddr=@auto
Sname=""
File=""
12="dhcpperf"
50=@auto
53=DHCPRELEASE
54=@auto
55=1,3,6,15,119,95,252,44,46,47,5,197,43,69,42,201,202
61=@auto
82=01:04:20:00:00:1e:02:06:70:58:12:35:13:33
./dhcpperf -v -s <DHCPサーバ IPアドレス> <デバイス名> ./discover.dat ./request.dat ./release.dat

クライアント、リレー経由で異なる Broadcast パラメータや Giaddr パラメータに "@auto" を指定すると、コマンドライン引数 --server の有無によってクライアント動作とリレー経由の動作を区別しています。

※ 汎用的なシナリオデータが usr/share/ncad/dhcpperf 以下に格納されており、これらのシナリオデータファイルを編集し、オプションなど付加した試験が簡単に行えるようになっています。

シナリオを繰り返し実行する方法

DHCPのシナリオを繰り返し実行する場合、シナリオファイルの次の引数に数値を入力すると、指定した回数分のシナリオを繰り返し処理することができます。
例えば、DHCPREQUEST を 100回繰り返す場合は、以下のような記述になります。

./dhcpperf -v -s <DHCPサーバ IPアドレス> <デバイス名> ./discover.dat ./request.dat 100 ./release.dat

シナリオデータを変化させて実行する方法

DHCPのシナリオデータを複数記述すると、トランザクションごとに変化させることができます。
例えば、オプション60 を以下のように記述すると、トランザクションごとに foo と bar が交互に実行されます。

Hops=0
・・・省略・・・
53=DHCPDISCOVER
54=@auto
60="foo"
60="bar"

また、DHCPDISCOVER に続く DHCPREQUEST に、@auto を指定すれば、DHCPDISCOVER で指定された "foo" または "bar" が引き継がれます。

シナリオデータ変化の使用例1

複数のリレーエージェントを模倣した、リレー経由の試験の方法を説明します。

リレーエージェントのIPアドレスを以下のようになっているとします。

IPアドレス サブネット
192.168.1.1 255.255.255.0
192.168.2.1 255.255.255.0
192.168.3.1 255.255.255.0

DHCPDISCOVER のシナリオデータファイルには、以下のように Giaddr を複数定義します。

Hops=0
Broadcast=0
・・・省略・・・
Giaddr=192.168.1.1
Giaddr=192.168.2.1
Giaddr=192.168.3.1
・・・省略・・・
53=DHCPDISCOVER
54=<DHCPサーバのIPアドレス>
・・・省略・・・

DHCPサーバ側のルーティングの設定も必要です。
本ツールのIPアドレスが 192.168.0.2 のとき、以下のようなリレージェントのIPアドレスを、本ツールのIPアドレスをゲートウェイに設定します。

route add -host 192.168.1.1 gw 192.168.0.2
route add -host 192.168.2.1 gw 192.168.0.2
route add -host 192.168.3.1 gw 192.168.0.2

シナリオデータ変化の使用例2

オプション60 (Vendor Class Id) とMACアドレスの対応がされている場合の試験の方法を説明します。
※ この試験は、MACアドレス数が少ないと正しく評価できません。その対策についても説明します。

オプション60 MACアドレス
dev1 AA:BB:CC:00:00:01
dev2 AA:BB:CC:00:00:02
dev3 AA:BB:CC:00:00:03

上記のような対応があるとき、各シナリオデータの順番を合わせてシナリオデータを記述する必要があります。

以下のように、オプション60とMACアドレスをそれぞれ順番に定義したり、

60="dev1"
60="dev2"
60="dev3"
・・・省略・・・
Chaddr=AA:BB:CC:00:00:01
Chaddr=AA:BB:CC:00:00:02
Chaddr=AA:BB:CC:00:00:03
・・・省略・・・

以下のように、オプション60とMACアドレスを交互に定義します。

Chaddr=AA:BB:CC:00:00:01
60="dev1"
Chaddr=AA:BB:CC:00:00:02
60="dev2"
Chaddr=AA:BB:CC:00:00:03
60="dev3"
・・・省略・・・

この試験は、最低でも高負荷試験で測定した1秒あたりのトランザクション数の2倍のMACアドレス数を定義しなければ、正しく評価できません。
そのため、ダミー用のオプション60とChaddrが必要になります。通常は、以下のようなダミー用のオプション60には空欄を、Chaddr には @auto を指定します。

Chaddr=AA:BB:CC:00:00:01
60="dev1"
Chaddr=AA:BB:CC:00:00:02
60="dev2"
Chaddr=AA:BB:CC:00:00:03
60="dev3"
Chaddr=@auto
60=""
Chaddr=@auto
60=""
・・・省略・・・

負荷試験の種類

  • highload
    最初に最大負荷を測定します。一秒ごとに負荷を上げ、エラー率がしきい値を超えたときを最大負荷とします。
    最大負荷を求めたら、計測時間だけ一定の負荷を与え続け、エラー率がしきい値を超えた場合、負荷を下げます。逆にエラー率がしきい値をこえなかったら負荷を上げ、DHCPの性能を評価します。
  • endless
    一定の負荷をずっと与え続ける試験です。
  • once
    DHCPサーバとの処理を1回だけ行う試験です。疎通確認としても利用でき、0 のときは正常、1 のときは通信エラーになります。
  • loop
    DHCPサーバとの処理を繰り返す試験です。毎回、MACアドレスがリセットされます。

統計情報出力について

コマンドライン引数 -v もしくは --progress を付けて起動すると、1秒ごとの統計種情報が標準出力に表示されるようになります。

各項目は、以下のようになっています。

  • secs
    プログラムが起動してからの時間
  • success
    処理が正常に完了した累積数
  • failure
    NAK応答もしくは、一定時間無応答の数
  • active
    処理中もしくは受信待ちの数
  • minimum
    1秒あたり最低処理数
  • current
    1秒あたりの処理数
  • maximum
    1秒あたりの最大処理数
  • average
    1処理の開始から終了までに要した平均時間。単位ミリ秒
  • slowest
    1処理の開始から終了までに要した最長時間。単位ミリ秒
  • fastest
    1処理の開始から終了までに要した最短時間。単位ミリ秒

リース延長の試験

リース延長は、リレー経由のときもユニキャストでDHCPサーバとDHCPクライアントが直接、送受信を行います。
リース延長を交えた試験用のサンプルデータが /usr/share/ncad/dhcpperf/expand.dat として用意されており

./dhcpperf -v -s <DHCPサーバ IPアドレス> <デバイス名> discover.dat request.dat expand.dat release.dat

で、実行することができます。

Date: 2014年 12月 12日

Author: 日本シー・エー・ディー株式会社 製品開発事業部

Copyright © 2014 Nippon C.A.D Co.,Ltd. All rights reserved.

Validate