オルタナティブ・ブログ > プログラマー社長のブログ >

プログラミングでメシが食えるか!?

リレーエージェント経由を想定したDHCP負荷テスト

»

DHCPサーバはクライアントにIPアドレスなどのネットワーク関連設定情報を配布するために使います。DHCPサーバとクライアントが同一ネットワークセグメントに存在する場合には、クライアントからブロードキャストで要求が送出され、DHCPサーバからの応答はクライアントのMACアドレス宛に送信されます。一般家庭や小規模オフィスではこのような使い方が多いでしょう。

回線事業者や複数のセグメントを統合管理したい組織などでは、複数のセグメントを1つのDHCPサーバで運用する形態になります。ブロードキャストはセグメントを超えて届きませんので、この場合は各セグメントにDHCPリレーエージェントを配置し、ブロードキャストをリレーエージェントが受け取り、DHCPサーバとのやりとりを中継します。一般的にはルーターでリレーエージェントを動かすことが多いと思います。
ProDHCPは回線事業者や企業・官公庁・学校などで使われますので、リレーエージェントを経由したリクエストに対する処理で使われることがほとんどです。

さて、DHCPサーバの運用開始前に性能確認を行いたいというのは当たり前の需要ですが、DHCPの負荷試験ツールはなかなか良いものがなく、高価なネットワーク測定装置の機能の一部として含まれているものを使うか、ノミナム社のdhcperfを使うか、自作するかなどで対応しているところが多かったと思いますが、私の勤務先の日本シー・エー・ディー株式会社では本格的なDHCP負荷試験ツールを無償公開しています。とくにこれまで試験が難しかった、リレーエージェント経由を想定した負荷試験に対応しているのは大きなポイントです。

ノミナム社のdhcperfはオプションの指定などができず、リレーエージェント経由の負荷をかけるためには、実際にリレーエージェントを介して行わねばなりません。当社の負荷試験ツールは自由にオプションの指定ができ、リレーエージェント経由を想定した負荷試験も可能です。これにより、負荷試験用にDHCPサーバと同一セグメントを設定に追加してDHCPサーバとしての払い出し能力を測定することでお茶を濁す必要はなく、それぞれのセグメントに自由に負荷をかけて測定ができるようになります。実はProDHCPの特性として、小さなセグメントへの払い出しは高速で、大きなセグメントは低速という点があり(商用では小さなセグメントがほとんどなので小さなセグメントで最大の性能が出せるようにしてある)、ひとつのセグメントの試験を行うだけでは正しく評価したとは言えないのです。

細かい使い方は公開している資料に書かれていますが、実際にリレーエージェント経由を想定した試験を行う際にはOS側も少し工夫が必要です。


DHCPサーバ:eth3(192.168.33.100) === eth3(192.168.33.200):dhcpperf

DHCPサーバ
・サービスIP(server-identifierで指定するもの)をネットワークインターフェースに与える
※一時的に使う場合には仮想IPアドレスが便利。
    # ifconfig eth3:1 サービスIP netmask サービスIPのネットマスク
・試験したいセグメントへのルーティングを追加
    # route add -net 対象セグメント netmask 対象セグメントのネットマスク gw 192.168.33.200

dhcpperf
・試験したいセグメントのリレーエージェントIPアドレスをネットワークインターフェースに与える
※一時的に使う場合には仮想IPアドレスが便利。
    # ifconfig eth3:1 リレーエージェントIP netmask リレーエージェントIPのネットマスク
・DHCPサーバへのルーティングを追加
    # route add -net DHCPサーバセグメント netmask DHCPサーバセグメントのネットマスク gw 192.168.33.100

・dhcpperfのdiscoverシナリオを以下のように
    Giaddr=リレーエージェントIP
    54=DHCPサーバIP

これで実物のリレーエージェントを使わずに、リレーエージェント経由を想定した負荷試験が行えます。ポイントはルーティングでお互いに上手く相手のセグメントのパケットの送受信ができるようにルーティングを追加する点です。

仮想IPアドレスはかなりの数まで追加できますので、いろいろなセグメントを順番に試験するときには、eth3:2,eth3:3・・・と必要なだけ追加しておき、DHCPサーバ側のルーティングも追加しておけば、dhcpperfのGiaddrを変更するだけで簡単にどのセグメントの負荷試験も行えます。

さらに、dhcpperfではリース延長を想定した試験も可能です。IPv4のDHCPではリース延長はリレーエージェントを介さず、端末から直接サーバにリクエストすることが可能なため、その試験も従来は難しいものでした。このあたりも公開資料に説明してありますので、トライしてみて下さい。

Comment(0)