CWMP デバイス操作
この章では、Broadband Access Center(BAC)のデバイス操作のメカニズムについて説明します。このメカニズムを使用すると、デバイスに対する CPE WAN Management Protocol(CWMP)リモート プロシージャ コールを実行し、デバイスのプロビジョニング グループの変更などの保守作業を行うことができます。
この章では、次のトピックについて説明します。
• 「概要」
• 「デバイス操作の接続モード」
• 「デバイスのプロビジョニング グループの管理」
概要
デバイスに対して個別の CWMP Remote Procedure Call(RPC; リモート プロシージャ コール)を即時に実行するか、デバイスが次回 BAC に接続するときに実行するには、デバイス操作を使用します。プロビジョニング API からこの機能を使用することにより、デバイスと BAC の間の対話のトラブルシューティング、データの収集、またはカスタマイズを行うことができます。
デバイス操作をバッチで送信するには、 IPDevice.performOperation()
API コールを使用します。(詳細については、API Javadoc を参照してください)。一部の操作は、管理者のユーザ インターフェイスから実行できます。この項では、デバイス操作が API または管理者のユーザ インターフェイスのどちらを使用して開始されるかに関係なく、デバイス操作の基になっている概念に重点を置いて説明します。
(注) BAC のインストール中に、いくつかのサンプル ファイルが BPR_HOME/rdu/samples ディレクトリにコピーされます。このディレクトリの内容は次のとおりです。
• cwmp ディレクトリ。このディレクトリには *parameter-list.xml ファイルがあります。これらのファイルには、管理者のユーザ インターフェイスを使用してデバイスのライブ データを取得するときに使用するパラメータ リストが記述されています。
• provapi ディレクトリ。このディレクトリには、API を使用してデバイス操作を実行できる方法が記述されている CwmpDiagnosticImmediate.java と CwmpDiagnosticOnConnect.java ファイルがあります。
表14-1 は、この BAC リリースでサポートされているデバイス操作を示しています。
表14-1 BAC でサポートされているデバイス操作
|
|
CreateObjectInstance |
デバイスのデータ モデル内にオブジェクト インスタンスを作成します。 |
DeleteObjectInstance |
デバイスのデータ モデルからオブジェクトを削除します。 |
Download |
ファイルのダウンロードを実行するようにデバイスに指示します。 |
FactoryReset |
デバイスの設定を工場出荷時のデフォルト状態にリセットします。 |
Reboot |
デバイスにリブートを指示します。 |
GetParamAttributes |
デバイスのパラメータの属性を取得します。 |
GetParamNames |
デバイスによって公開されたパラメータの名前を取得します。 |
GetParamValues |
デバイスのパラメータ空間からパラメータの値を取得します。 |
GetRPCMethods |
デバイスでサポートされている RPC メソッドのリストを取得します。 |
SetParamAttributes |
Notification や Access List など、デバイス パラメータ属性の値を設定します。 |
SetParamValues |
デバイス パラメータの値を設定します。 |
ChangeProvGroup |
デバイスを新しいプロビジョニング グループにリダイレクトします。 |
GenerateConfig |
デバイスの命令セットを再生成します。 |
PassThrough |
デバイスに汎用 SOAP メッセージを送信します。 |
RemoveOperation |
保留中の接続時デバイス操作を削除します。 |
RequestConnection |
デバイスへの接続要求を開始します。 |
すべてのデバイス操作は、データの同期化、設定の同期化、ファームウェア ルールのダウンロードなどの他の設定サービスの前に実行されます。
注意 デバイス操作では、デバイス設定の更新は実行しないでください。デバイス操作を使用して行った設定はすべて、設定プロセスによって上書きされる可能性があります。
デバイス操作の接続モード
BAC では、次の 2 つのモードでデバイス操作を実行できます。
• 即時
• 接続時
即時モード
即時実行は、デバイスが到達可能であることを前提としており、デバイスへの接続要求を最初に発行する DPE によって行われます。デバイスが到達可能でない場合、操作は自動的に失敗します。1 つの接続要求を作成し、CWMP デバイスとの管理セッションを 1 つにすることで、複数の操作を同じバッチで実行できるようになり、パフォーマンスを向上させることができます。
クライアントは、タイムアウト期間を使用して、API バッチを即時モードで送信します。タイムアウトが設定されていない場合、即時操作がタイムアウトになるまでの時間は、デフォルトで 60 秒です。デバイス操作がタイムアウトになった場合、またはそのバッチがタイムアウトになった場合、エラーが返されます。
(注) デバイスに対して即時操作の実行を試みる前に、デバイスが到達可能であり、BAC がデバイスへの接続要求を実行するように設定されていることを確認してください。「接続要求サービス」を参照してください。
図14-1 は、即時操作の上位フローを示しています。
図14-1 即時操作モードのワークフロー
即時実行を指定して performOperation() API メソッドを呼び出すと、RDU は、対応する操作命令を構築して、デバイスのプロビジョニング グループ内のすべての DPE に送信します。次に、RDU は接続要求命令をプロビジョニング グループ内の特定の DPE に送信します。DPE はそれを受けて、接続要求通知をデバイスに送信します。
デバイスが DPE との接続を確立すると、DPE は新しいセッションを作成し、デバイスに対して操作を実行します。セッションが閉じられると、DPE は操作の結果を RDU に返します。RDU はその結果をバッチのコマンド ステータスで API クライアントに転送します。
接続時モード
接続時実行を使用すると、到達可能でないデバイスをサポートできます。CWMP デバイスからの定期的な Inform RPC と併用するのが最善です。
接続時操作は、デバイスのプロビジョニング グループ内の各 DPE で保持されます。接続時操作は、RDU が(AsyncOperationEvent を介してクライアントに実行結果を通知した後)DPE に削除を指示するまで DPE から削除されません。
図14-2 は、接続時操作の上位フローを示しています。
図14-2 接続時操作モードのワークフロー
API クライアントは、接続時実行を指定して IPDeviceOperation を構築します。API クライアントは適切な AsyncOperationEvent リスナーを登録し、performOperation() API メソッドを呼び出します。次に、RDU は対応する操作命令を構築し、デバイスのプロビジョニング グループ内のすべての DPE に送信します。DPE は内部データベースに操作を保存します。RDU バッチが完了し、BatchStatus が API クライアントに返されます。
即時操作の実行時と異なり、DPE はデバイスへの接続要求通知を開始しません。
デバイスが次回 DPE に接続するときに、DPE はデバイスとの新しいセッションを作成し、デバイスに対して操作を実行します。セッションが終了すると、操作の結果が RDU に送信され、RDU は登録済みのすべての API クライアント リスナーに AsyncOperationEvent を送信します。
(注) 即時操作は、必ず接続時操作より先に実行されます。BAC を使用して、各操作モードを組み込み型の命令と組み合せることができますが、各命令が相互に無効にすることがないよう確認する必要があります。たとえば、デバイスの設定テンプレートで
InternetGatewayDevice.ManagementServer.PeriodicInformEnable が false に指定されている場合、デバイス操作で指定を true に変更しても、設定テンプレートは必ずデバイス操作の後に実行されるため、設定テンプレートによって指定は false に上書きされます。
条件付き実行
上記に加えて、即時操作および接続時操作は、デバイスからの Inform メッセージ内の TR-069 Event Code に基づいて条件付きで実行されます。デバイスの Inform で報告されている Event Code と、操作で指定された Event Code のリストの間に共通部分がない場合、操作は実行されません。
たとえば、1 つの操作では、Inform Event Code リストに 6 CONNECTION REQUEST
が含まれていることが条件だとします。この場合、操作が実行されるのは、Autoconfiguration Server(ACS; 自動構成サーバ)接続要求により接続しているとデバイスが報告した場合に限られます。定期的な Inform などの他の理由により、デバイスが接続しているとの報告があった場合、操作は実行されません。
デバイスのプロビジョニング グループの管理
CWMP デバイスのプロビジョニング グループは、RDU のデバイス オブジェクトに対して指定します。次の手段があります。
• プロビジョニング API: IPDeviceKeys.HOME_PROV_GROUP
プロパティを使用します。
• 管理者のユーザ インターフェイス:Devicesの各ページにある Home Provisioning Group ドロップダウン リストを使用します。
デバイスのプロビジョニング グループの管理では、場合によっては、デバイスのプロビジョニング グループをリダイレクトまたは修正する必要があります。
• デバイスのプロビジョニング グループのリダイレクト
特定のプロビジョニング グループ(たとえば、PG1)と通信しているデバイスを、別のプロビジョニング グループ(PG2)と通信するようにリダイレクトします。
• デバイスのプロビジョニング グループの修正
デバイスのプロビジョニング グループが BAC で誤っている場合、BAC だけで変更する必要があります。たとえば、PG1 への接続を試行するデバイスが、BAC で PG2 にプロビジョニングされている場合などです。
次の各項では、それぞれの使用例について詳細に説明します。
(注) DPE が RDU に接続できない場合、デバイスのプロビジョニング グループを変更することはできません。
デバイスのプロビジョニング グループのリダイレクト
このプロセスでは、新しいプロビジョニング グループ内の DPE にデバイス命令を配信し、その DPE がデバイス要求を処理できるようにします。また、デバイスに、新しいプロビジョニング グループの場所(ACS URL)を指示します。BAC を使用してこの変更を最も効率的に行うには、リダイレクト命令を使用します。
図14-3 は、 IPDevice.performOperation()
API コールで ChangeProvGroup 操作を使用する場合の上位フローを示しています。
図14-3 プロビジョニング グループのリダイレクトのワークフロー
ChangeProvGroup 操作が RDU で実行されると、リダイレクト命令(またはプロビジョニング グループ変更命令)はデバイス設定に含められます。この時点では、デバイスはまだ既存のプロビジョニング グループに割り当てられています。次に、新しい設定命令がデバイスのプロビジョニング グループ内のすべての DPE に転送されます。
デバイスが次回 BAC とセッションを(接続要求などから)確立すると、デバイスは認証され、DPE は新しい DPE が設定された URL を SetParameterValues RPC を介して設定します(プロビジョニング グループの ACS URL は、管理者のユーザ インターフェイスで設定できます。「プロビジョニング グループの設定ワークフロー」を参照してください。ACS URL が設定されていない場合、検出された URL が使用されます。検出された URL とは、DPE インターフェイスの設定に基づいて自動的に構築された URL のことです)。
(注) プロビジョニング グループの設定済み URL は、検出された URL より常に優先されます。
RDU に変更が通知されると、RDU はデバイスのプロビジョニング グループを変更し、そのデバイスに関する新しい設定命令セットを生成します。デバイスの設定は、その後、デバイスの新しいプロビジョニング グループ内のすべての DPE に送信されます。こうして、デバイスは新しいプロビジョニング グループに接続し、その DPE サーバ グループから管理されるようになります。
デバイスのプロビジョニング グループの修正
デバイスに対する誤ったプロビジョニング グループ指定を、単にリセットすることもできます。このシナリオでは、実際のデバイスを変更する必要はありません。必要な操作は BAC の更新だけです。
誤っているプロビジョニング グループを API で変更するには、 IPDevice.changeProperties()
API を呼び出し、 IPDeviceKeys.HOME_PROV_GROUP
プロパティでプロビジョニング グループを修正します。詳細については、API Javadoc を参照してください。
誤ったプロビジョニング グループ指定を管理者のユーザ インターフェイスで変更するには、次の手順に従います。
(注) ホーム プロビジョニング グループを管理者のユーザ インターフェイスから変更する場合、修正されるのは BAC 内のプロビジョニング グループだけです。デバイスはこの変更の影響を受けません。
ステップ 1 プライマリ ナビゲーション バーの Devices タブをクリックします。
ステップ 2 Manage Devices ページが表示されます。適切なデバイスに対応する Identifier リンクをクリックします。
ステップ 3 Modify Device ページが表示されます。Home Provisioning Group ドロップダウン リストから目的のオプションを選択します。
ステップ 4 Submit をクリックして、デバイスへの変更を保存します。
これで、デバイスは特定のプロビジョニング グループに割り当てられます。