この章では、Solaris 8 7/01 オペレーティング環境で導入された Solaris Dynamic Host Configuration Protocol (DHCP) サービスのアーキテクチャの概要を説明します。この概要によって、ユーザーの作業がアーキテクチャのどの部分に対応するのかがわかります。
Solaris DHCP サービスの一般情報については、『Solaris のシステム管理 (IP サービス)』の「Solaris DHCP (概要)」を参照してください。
Solaris DHCP サービスには、DHCP デーモン、管理ツール、および異なるデータストレージ機能のための別個のデータアクセスモジュール (パブリックモジュールと呼ばれる) が含まれます。Solaris DHCP は、必要なデータストレージ機能をサポートするための、共有オブジェクトとして実装される、ユーザー独自のパブリックモジュールを作成できる API を提供します。パブリックモジュールを Solaris DHCP フレームワークに組み込むと、DHCP サービスがそのデータをこのパブリックモジュールを使ってユーザーのデータベースに格納します。パブリックモジュールは Solaris DHCP サービスから独立して提供することができるため、誰でも任意のデータストレージ機能をサポートするためにモジュールを開発し、配布することができます。
このアーキテクチャを使用する Solaris DHCP の最初リリースでは、ASCII ファイル、NIS+、およびファイルシステムベースのバイナリデータ格納に対するパブリックモジュールが提供されます。このマニュアルでは、開発者が任意のデータベースに対する独自のパブリックモジュールを作成するときに必要となる情報を提供します。
DHCP サーバーにはマルチスレッド機能が実装されているため、DHCP サーバーでは多数のクライアントに同時にサービスを提供することができます。DHCP サーバーによるマルチスレッド処理をサポートするためには、パブリックモジュールが MT-安全でなければならず、これだけに関して言えば DHCP サービスは多数のクライアントに対応することが可能ということになります。しかし、DHCP サーバーの実際の能力は、主にデータストレージ機能の能力と、データのアクセスに使用されるパブリックモジュールの効率に依存します。したがって、高速かつ大容量のデータストレージ機能を使用するパブリックモジュールを作成することで、Solaris DHCP サービスの性能と能力が向上する可能性があります。
Solaris DHCP モジューラフレームワークの実装では、次のデータアクセス層が使用されます。
アプリケーション/サービス層 - この層には、DHCP デーモン (in.dhcpd) や、コマンド行管理ユーティリティ (pntadm、dhtadm、dhcpconfig)、 dhcpmgr、レポートジェネレータなどの、DHCP サービスのデータを使用するすべての機能が含まれます。これらのデータを使用するものは、このアーキテクチャのフレームワーク構成層によって実装される API 関数の呼び出しを通して DHCP サービスと対話を行います。
フレームワーク構成層 - 共有ライブラリ libdhcpsvc.so と構成ファイル /etc/inet/dhcpsvc.conf から構成されています。フレームワーク構成層は、アプリケーション/サービス層とサービスプロバイダ層を接続するものです。フレームワーク構成層についての詳細は、フレームワーク構成層を参照してください。
サービスプロバイダ層 - サービスプロバイダ API 関数を実装するパブリックモジュールから構成されています。これは、データ格納コンテナおよびそれらに関するレコードを操作するために、フレームワーク構成層を介してアプリケーション/サービス層によって使用されます。データ格納コンテナとは dhcptab および DHCP ネットワークテーブルのことです。
libdhcpsvc.so で実装される関数がアプリケーション/サービス層に使用され、次のことが行われます。
パブリックモジュールの検出、ロード、アンロードを行う
データコンテナのバージョン変更を管理する
データ格納コンテナにアクセスする
コンテナ内のデータ格納レコードを操作する
/etc/inet/dhcpsvc.conf には、パブリックモジュールの開発者に関連する次のキーワードを含む、DHCP サービスの構成パラメータが多数含まれています。
ロードするパブリックモジュール。RESOURCE の値がパブリックモジュールの名前にマッチします。たとえば、RESOURCE=SUNWfiles は、パブリックモジュールが ds_SUNWfiles.so であることを表しています。パブリックモジュールの名前付けの規則は、パブリックモジュールとデータ格納コンテナの名前付けに記載されています。
パブリックモジュールがエクスポートするデータサービス内の DHCP コンテナの位置。PATH の値はそのデータサービス固有のものです。たとえば、SUNWfiles リソースの PATH には UNIX のパス名が割り当てられます。
パブリックモジュール固有の構成情報。このオプション (省略可能) のキーワードは、ユーザーからの認証など、データサービスで構成情報を必要とするときに使用できます。このキーワードを使用する場合には、このキーワードの値を設定するための情報をユーザーに要求するパブリックモジュール管理ビーンを提供する必要があります。データサービス構成ツールと DHCP 管理ツールを参照してください。さらに、このモジュールでは、モジュールのロード時にこのキーワードの値を受け取るための configure() 関数をエクスポートする必要があります。詳細は、 configure()を参照してください。
フレームワーク構成層も、ファイルシステムベースのコンテナへのアクセスの同期化に記述されているように、オプションの API 同期サービスをサービスプロバイダ層に提供します。
サービスプロバイダ層 API は、関数、データ構造、および /usr/include/dhcp_svc_public.h ファイルに含まれる表記定数から構成されます。
次の表は関数の要約です。個々の関数の詳細については、それぞれ記載されている節を参照してください。
表 1–1 サービスプロバイダ層 API 関数
API 関数 |
用途 |
---|---|
すべてのデータ格納コンテナに対する一般的な関数 |
|
構成文字列をデータ格納に渡します。オプションの関数です。 |
|
データ格納を置く場所を作成します。 |
|
データ格納の一般的なステータス情報を返します。 |
|
データ格納コンテナに実装されるサービスプロバイダ層 API のバージョンを返します。 |
|
dhcptab コンテナ用の関数 |
|
dhcptab コンテナの名前を返します。 |
|
dhcptab コンテナをオープンまたは作成します。 |
|
dhcptab コンテナのレコードのクエリー検索を行います。 |
|
dhcptab コンテナにレコードを追加します。 |
|
dhcptab コンテナ内の既存のレコードを変更します。 |
|
dhcptab コンテナからレコードを削除します。 |
|
dhcptab コンテナをクローズします。 |
|
データ格納から dhcptab コンテナを削除します。 |
|
DHCP ネットワークコンテナ用の関数 |
|
DHCP ネットワークコンテナ名のリストを返します。 |
|
DHCP ネットワークコンテナをオープンまたは作成します。 |
|
DHCP ネットワークコンテナ内のレコードのクエリー検索を行います。 |
|
DHCP ネットワークコンテナにレコードを追加します。 |
|
DHCP ネットワークコンテナ内の既存のレコードを変更します。 |
|
DHCP ネットワークコンテナからレコードを削除します。 |
|
DHCP ネットワークコンテナをクローズします。 |
|
データ格納から DHCP ネットワークコンテナを削除します。 |
dhcptab および DHCP ネットワークテーブルは、総称的にデータ格納コンテナと呼ばれます。Solaris DHCP では、デフォルトで、次の表に示すコンテナの形式がサポートされます。
サポートされるデータサービス |
パブリックモジュール |
---|---|
ファイルシステムベースの ASCII 形式 |
ds_SUNWfiles.so |
NIS+ サービス |
ds_SUNWnisplus.so |
ファイルシステムベースのバイナリ形式 |
ds_SUNWbinfiles.so |