拡張機能の使用
Tcl または C/C++ で記述できる拡張機能、機能を使用して、Cisco プライムネットワーク レジストラー DHCP サーバーの動作を変更およびカスタマイズできます。
DHCP サーバーで使用する拡張機能を作成するには、次の手順に従います。
- 実行するタスクを決定します。どの DHCP パケット プロセスを変更しますか?
- 使用するアプローチを決定します。パケットプロセスを変更する方法を教えてください。
- 拡張機能をアタッチする拡張ポイントを決定します。
- 言語 (Tcl または C/C++ ) を選択します。
- 拡張機能を書き込む (また、コンパイルとリンクも可能です)。
- DHCP サーバー構成に拡張機能を追加します。
- 拡張ポイントに拡張子をアタッチします。
- DHCP サーバーをリロードして、拡張を認識します。
- 結果をテストしてデバッグします。
(注) |
Cisco Primeネットワーク レジストラーをアップグレードする際は、すべての DHCP C/C++ 拡張(dex エクステンション)を再コンパイルすることをお勧めします。 |
関連項目
拡張機能の作成、編集、および添付
拡張機能を作成、編集、および添付できます。
拡張機能ポイントごとに複数の拡張機能を関連付けることができます。各拡張機能は、添付ファイルの作成時に使用されたシーケンス番号で指定された順序で実行されます。Web UI では、拡張が [DHCP 拡張ポイントのリスト(List DHCP Extension Points)] ページに拡張ポイントごとに表示される順序。CLI では、シーケンス番号の値をコマンドと共にdhcp attachExtension 使用します。
拡張ポイントごとの複数の拡張機能の詳細については、「」を参照してください複数の拡張機能に関する考慮事項。
ローカル アドバンスド Web UI
拡張機能を作成して添付するには、次の操作を行います。
手順
ステップ 1 |
メニューからDeploy Extensions [DHCP]サブメニューの下で[DHCP拡張のリスト/追加]ページを開きます。 |
ステップ 2 |
アイコンをAdd Extensions クリックして、[DHCP サーバー拡張の追加] ダイアログ ボックスを開きます。 |
ステップ 3 |
拡張機能を作成した後、このページの 1 つ以上の拡張ポイントに添付できます。拡張機能をアタッチできる拡張ポイントを表示するには、[DHCP 拡張の一覧/追加] ページでDHCP Extension Pointsタブ をクリックします。 |
ステップ 4 |
各拡張ポイントに複数の拡張子をアタッチする場合は、矢印キーをクリックしてエントリを並べ替えることで、その拡張子が処理される順序を変更できます。拡張を削除するには、[削除(Delete)] アイコンをクリックします。 |
CLI コマンド
このコマンドextension を使用するには、次の構文が必要です。
nrcmd> extension name create language extension-file entry-point
エントリ ポイントは、拡張子ファイル内のエントリ ポイントの名前です。また、DHCP サーバーがファイルをロードするたびに、初期エントリ ポイントに対してオプションのinit-entry属性インイット・エントリー値を設定することもできます (を参照)。この関数は、このモジュールにバインドされている任意の拡張ポイントから呼び出すことができます。拡張機能を 一extension list 覧表示することもできます。
拡張機能をアタッチしてデタッチするには、dhcp attachExtension 次dhcp detachExtension の構文が必要な DHCP サーバーを使用します。
nrcmd> dhcp attachExtension extension-point extension-name [sequence-number]
nrcmd> dhcp detachExtension extension-point [sequence-number]
シーケンス番号は、拡張ポイントごとに複数の拡張をアタッチする場合に適用され、シーケンスの順序は 1 から 32 まで増加します。省略した場合、デフォルトは 1 になります。
現在登録されている拡張機能を表示するには、dhcp listExtensions コマンドを使用します。
関連項目
タスクの決定
拡張を適用するタスクは、通常、環境のニーズを満たすように、DHCP サーバー処理の変更です。要求の受信からクライアントへの応答まで、これらの DHCP サーバーの各処理ポイントで拡張機能を適用できます。
- パケットを受信してデコードします。
- クライアント クラスを検索、変更、および処理します。
- 応答の種類を作成します。
- サブネット (DHCPv6 の場合はリンク) を決定します。
- 既存のリースを検索します。
- リース要求をシリアル化します。
- クライアントのリース受け入れ可否を決定します。
- 応答パケットを収集し、エンコードします。
- パケットの安定したストレージを更新します。
- パケットを返します。
これらの手順の詳細な一覧 (各ステップで使用する拡張ポイント) が拡張を使用した DHCP 要求処理に表示されます。
たとえば、BOOTP 構成を使用する異常なルーティング ハブがある場合があります。このデバイスは、イーサネット・ハードウェア・タイプ (1) および MAC アドレスを指定した BOOTP 要求をchaddrフィールドに出します。その後、同じ MAC アドレスを持つ別の BOOTP 要求を送信しますが、ハードウェアタイプはトークンリング (6) です。2 つの異なるハードウェアの種類を指定すると、DHCP サーバーは 2 つの IP アドレスをデバイスに割り当てます。通常、DHCP サーバーは、ハードウェア タイプ 1 の MAC アドレスとタイプ 6 の MAC アドレスを区別し、異なるデバイスと見なします。この場合、DHCP サーバーが同じデバイスに 2 つの異なるアドレスを渡すことを防ぐ拡張機能を作成できます。
アプローチの決定
多くの場合、単一の問題に対して多くのソリューションが使用できます。書き込む拡張子の種類を選択する場合は、まず入力 DHCP パケットを書き換えることを検討する必要があります。DHCP サーバーの内部処理を知る必要がないため、これは良いアプローチです。
でタスクの決定説明する問題については、次のいずれかの方法で拡張機能を記述して解決できます。
- トークン リング (6) ハードウェア タイプ パケットをドロップします。
- パケットをイーサネット パケットに変更し、終了時に再度スイッチを戻します。
2 番目の方法では、より複雑な拡張が必要ですが、DHCP クライアントは DHCP サーバーからの応答を使用できます。2 番目の方法では、パケットの書き換えがpost-packet-encode 行われます(このポスト パケット エンコード場合は、拡張ポイントを使用します)。他の方法では、他の拡張と拡張ポイントが必要です。
拡張言語の選択
Tcl または C/C++ で拡張機能を記述できます。DHCP サーバーに関する限り、各言語の機能は似ていますが、アプリケーション プログラミング インターフェイス (API) は言語設計の 2 つの非常に異なるアプローチをサポートするために若干異なります。
- Tcl — Tcl でのスクリプトは C/C++ でのスクリプトよりもやや簡単ですが、解釈され、シングルスレッドで、より多くのリソースが必要になる場合があります。ただし、C/C++ よりも深刻なバグが発生する可能性が低く、サーバー障害の可能性も低くなります。Cisco プライムネットワーク レジストラーは、Tcl バージョン 8.6 を現在サポートしています。
- C/C++ :この言語では、外部プロセスとの通信を含む、可能な限り最大のパフォーマンスと柔軟性を実現できます。ただし、C/C++ API は Tcl API よりも複雑です。また、C/C++ では、拡張機能のバグが原因でサーバー障害が発生する可能性も高くなります。