DHCP負荷試験ツール
Table of Contents
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 [起動オプション]... <デバイス名> [シナリオデータファイル]...
簡単に試すときは
./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リクエストの内容を定義することができます。
名称 | データ型 | 説明 | |
---|---|---|---|
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
で、実行することができます。