JP3711866B2 - Framework having plug and play function and reconfiguration method thereof - Google Patents

Framework having plug and play function and reconfiguration method thereof Download PDF

Info

Publication number
JP3711866B2
JP3711866B2 JP2000371402A JP2000371402A JP3711866B2 JP 3711866 B2 JP3711866 B2 JP 3711866B2 JP 2000371402 A JP2000371402 A JP 2000371402A JP 2000371402 A JP2000371402 A JP 2000371402A JP 3711866 B2 JP3711866 B2 JP 3711866B2
Authority
JP
Japan
Prior art keywords
service
broker
plug
play
user application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000371402A
Other languages
Japanese (ja)
Other versions
JP2001290724A (en
Inventor
ビシャル・シャー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JP2001290724A publication Critical patent/JP2001290724A/en
Application granted granted Critical
Publication of JP3711866B2 publication Critical patent/JP3711866B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)
  • Small-Scale Networks (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、相異なる通信プロトコルを有する複数のネットワークを単一の統一フレームワークへと統合して、ユーザアプリケーションがさまざまなネットワークデバイスを発見し利用することを可能にする方法および装置に関する。また、本発明は、利用可能な機能の変更およびユーザ相互作用に応答してネットワークノードの動的な適応および再構成を達成する方法に関する。また、本発明は、アプリケーション、サービス、およびデバイスが、自己の能力を記述し、それを他のアプリケーション、サービス、およびデバイスに公表する方法に関する。さらに、本発明は、物理的に相異なるデバイスが、接続し、情報交換し、データタイプを交渉し、それぞれの動作についてのステータスを提供して、ネットワークプラグアンドプレイを達成することを可能にする、プラットフォーム独立でトランスポート独立なプロトコルを提供する方法に関する。
【0002】
【従来の技術】
世界的なネットワーキング基盤の出現により、分散サービスおよび分散アプリケーションの大規模な配備が一般的になっている。現在および将来のネットワークでは、時間に敏感な情報を全世界に発信し、世界的な取引を電子的に仲介するサービスがさらに配備されることが期待される。このような分散サービスが普遍的になる前に、このようなサービスの開発、デバッグ、配備および発展を簡単にする新たな機構が必要とされる。このような機構は、基礎になるプロトコルやインタフェースにかかわらずに、必要なサービスを発見し、そのサービスの能力を使用することが必要となる。
【0003】
家庭で使用可能なもののような典型的な分散ネットワークシステムは、相異なるさまざまな機器を相互接続する。さまざまな家庭用機器(ホームデバイス)は本質的にさまざまなインタフェースおよびプロトコルを利用することがあるため、単一の共通の通信プロトコルを用いてこれらのすべてのデバイスを相互接続することはほとんど不可能である。場合によっては、ほとんどの家庭に既に設置されている配線を使用する(例えば、既存の電源線をX−10デバイスとの通信に使用する)ことは便利であるが、このような既存の配線を使用するネットワークの伝送速度が制限される。例えば、白熱電球やホームセキュリティシステムのようなX−10デバイスは、毎秒数ビットのデータレートで動作する。他方、ディジタルTV、カメラ、あるいはVCRのようなデバイスは、ずっと高い伝送データレートを必要とする。このようなデバイスは通常、IEEE1394アーキテクチャプロトコルを用いて相互接続され、データ転送レートは400Mb/sに達する。
【0004】
これに対して、現在開発されているさまざまな家庭用自動化アプリケーションは、さまざまな家庭用機器の有効な相互作用を必要とする。したがって、家庭に設置されたすべての相異なるデバイスおよびサービスの有効な相互作用を可能にするには、相異なるさまざまなネットワークを、統一するフレームワークに統合して、相異なるネットワーク内に位置するさまざまなネットワークエンティティが互いを発見し相互作用する機構を提供しなければならない。
【0005】
また、さまざまなデバイスインタフェースおよびネットワークプロトコルについて、低レベルのプロトコル固有の詳細をアプリケーションが扱うことを必要とせずに、リモートサービスを利用する手段をユーザアプリケーションに提供することが望ましい。
【0006】
真のプラグアンドプレイ能力を達成するには、フレームワークは、新たに追加されたデバイスによって提供されるサービスを自動的に発見する機構を提供しなければならない。このようなフレームワーク内では、利用可能なネットワークサービスおよびそのネットワーク位置に関する記述は、すべてのユーザアプリケーションにとって容易に利用可能であるようにしなければならない。さらに、ユーザアプリケーションは、遭遇する可能性のある特定のデバイスあるいはサービスとの通信のために、自己の通信インタフェースを自動的に再構成することができなければならない。さらに、フレームワークは、ネットワークサービスへのアクセスを制御するために、ユーザの認可および認証を実行するセキュリティモデルを含まなければならない。
【0007】
JiniTMは、ネットワークプラグアンドプレイを達成する既存の候補のうちの1つである(Jiniは、サンマイクロシステムズ社(Sun Microsystems, Inc.)の商標である)。Jiniは、分散システムの構築および配備を容易にするアプリケーションプログラミングインタフェース(API)およびランタイム規約のセットである。Jiniは、分散システムの、共通しているが相異なる部分を処理する「配管」(plumbing)を提供する。Jiniは、プログラミングモデルおよびランタイムインフラストラクチャからなる。リース、分散イベント、および分散トランザクションをサポートするAPIおよび規約を定義することによって、プログラミングモデルは、基礎となるネットワークの信頼性が低くても、信頼性の高い分散システムを開発者が構築するのを助ける。ランタイムインフラストラクチャは、ネットワークプロトコルとそれを実装するAPIとからなり、ネットワーク上のデバイスおよびサービスの追加、探索、アクセス、および削除を容易にする。
【0008】
Jiniの使用は、基礎となるネットワーク技術について知らなくてもサービスを発見する容易な方法を提供する。他の既知のインフラストラクチャに比べてJiniが改良されている点は、ユーザアプリケーションが実際にサービスを探索し、そのサービスをサポートするホストを他者に発見させることができることである。しかし、主な未解決の問題点は、「ユーザアプリケーションはどのようにして自動的にクライアントマシン上のサービスを使用するか」である。クライアントユーザアプリケーションにサービスインタフェースしか設けられていない場合、クライアントが、このサービスを理解することが可能なコードを有していなければならない。
【0009】
例えば、ユーザが、自己のアプリケーションに、カメラサービスのためのネットワークをブラウズさせたい状況を考える。アプリケーションがこのようなサービスをネットワーク上に見つけた場合、ユーザは、それをクリックして、ユーザ自身のアプリケーションでそれを使用することができる。ユーザが、このようなサービスを実行するためのコードを必要とする場合、このようなコードは、ユーザのマシン上に自動的にダウンロードされなければならない。しかし、このアプローチに関連する主な問題点は、ユーザアプリケーションがこのようなサービスをどのようにして利用するかである。ユーザアプリケーションは、拡張可能なインタフェースを有する場合、リモートサービスインタフェースに問い合わせてその固有の特性を取得し、その利用を可能にすることができる。しかし、このような拡張可能インタフェースの定義は、JiniTM仕様の範囲内にはなく、JiniTMサービスを使用するユーザアプリケーションに委ねられている。
【0010】
もう1つの問題点は、カメラサービスのセマンティクス(意味論)を定義するエンティティの識別である。例えば、キャノン、ミノルタ、およびニコンを含む主要なカメラメーカがそれぞれ固有のインタフェースを提供する場合、カメラサービスには相互運用性がなくなり、ユーザは、3つの異なるすべてのカメラサービスをコードの形で適切に提供しなければならないことになる。また、もしコダックがJiniTMカメラを市販することに決めた場合、ユーザは、コダックのインタフェースの解析を含むようにそのコードを手動(マニュアル)で変更しなければならない。このような拡張可能インタフェースは、ネットワークトラフィックと、クライアントコードのサイズを非常に増大させてしまう。すべての種類の市場固有のグループがまとまってインタフェースを指定することが好ましく、多くの場合にはこれが必要となるであろうが、これはすぐには、また効率的には実現しそうになく、特に、家庭で使用されるすべての種類のデバイスに対しては、きわめて非現実的である。
【0011】
既知のネットワークで依然として解決されていないもう1つの制限は、JiniTMベースのアプリケーションがどのようにして非JiniTMベースのオペレーティングシステム上にあるデータにアクセスすることができるかに関するものである。すなわち、ユーザは、例えば、JiniTMに対するマイクロソフトのサポートなしで、どのようにしてMS−WordTMからJiniTMプリンタにアクセスすることができるだろうか。Jiniプリンタを使用したいJavaTMアプリケーションですら、アクセスのためのオペレーティングシステムに依拠しなければならない。
【0012】
例えば、ユーザプログラムが印刷メソッドへのアクセスを要求するとき、以下のようなコードフラグメントが使用される。
object o=Lookup(GeneralPrintService);
GeneralPrintService pservice=(GeneralPrintService)o;
pservice.print();
【0013】
しかし、このコードが書かれるときに、プログラマは、GeneralPrintServiceという名前のインタフェースがコード実行時に本当に存在するかどうかを知らない。さらに、プログラマが複数のデバイスでイメージを印刷したい場合、複数のインタフェースを予想し、それに応じて印刷を行う必要がある。
【0014】
Jiniは、ユーザインタフェース(UI)コンポーネントがサービスの属性リストにエントリとして付加されるように使用することができるため、サービスについて要求されるクライアントの知識は最小限である。クライアントは、単に、UIがアプレットと同様の属性によって表現されることを知っているだけでよい。UIは、JavaBeansとして提供可能であるため、内省(introspection)・反省(reflection)により、サービスは、クライアントに対して、クライアントがそのサービスを使用することができる手段を提供することが可能である。これは、本質的に、クライアントとサーバの間のメッセージ交換であり、手動の設定を必要とする。しかし、UIコンポーネントを付加することは、人間でないクライアント(生成・使用されるマシン)がデバイスを使用するのを妨げる可能性がある。また、デバイスの個数が増大して、クライアントプログラムが複雑になると、もう1つの問題点が生じる。その場合、クライアントは、返されたリストのどのオブジェクトが真のターゲットであるかを決定しなければならない。さらに、あらゆるJiniTMのデバイスあるいはアプリケーションは、製造時において通信するために必要としたすべてのデバイスの(あるいは少なくとも、「デバイスのすべてのタイプの」)すべてのインタフェースを必要とする。その結果、JiniTMは、相互運用性の問題点を実際には解決していない。
【0015】
もう1つの既存のネットワーキングシステムであるHomeAPIは、アプリケーションがさまざまなホームデバイスを発見し利用することを可能にする、オブジェクト指向のソフトウェアサービスおよびアプリケーションプログラミングインタフェース(API)のセットである。このシステムは、アプリケーションが使用するデバイスおよびネットワークのプロトコル固有の詳細に、ユーザアプリケーションが関与しないように設計された。HomeAPIは、HomeAPIインタフェースの使用を通じてサービスを利用するユーザアプリケーションを開発するのを容易にする分散サービスを表現するソフトウェアオブジェクトのセットを提供する。
【0016】
しかし、HomeAPIは、新たなデバイスの発見の問題点を解決していないため、所望のプラグアンドプレイネットワーキング能力を提供しない。HomeAPIのもう1つの欠点は、すべてのネットワークデバイスが標準の通信インタフェースを提供することを要求することであり、これは今日の市場では実現不可能である。
【0017】
HomePNA、HomeRF、Bluetooth、PIANO、X−10、CEBus、IEEE1394、USB、HAViなどのようなその他の発展段階のネットワーク構想は、単に、ネットワーク接続に関するさまざまなプロトコルを提供しているだけである。これらの通信プロトコルは当業者に周知である。しかし、現在のところ、競合するさまざまなネットワーク技術およびプロトコルの相互運用性の問題点を解決し、ネットワークプラグアンドプレイを達成する統一フレームワークシステムは存在しない。
【0018】
【発明が解決しようとする課題】
したがって、さまざまなタイプのネットワークデバイスを相互接続し、デバイスの発見および利用のための一様な機構を提供する統一フレームワークに対して、強く幅広い受容が認識されており、このようなものがあることは非常に有利である。このような統一フレームワークは、ユーザアプリケーションが、アプリケーション−サービス間通信プロトコル、所望のサービスを提供するデバイスに接続されたホストのIPアドレスの発見、およびさらには、ネットワークサービスのユーザインタフェースの詳細のような低レベルの詳細を組み込むことを不要にするとともに、上記のその他の要求を満たす。
【0019】
【課題を解決するための手段】
したがって、本発明の1つの目的は、既知のネットワーキングシステムの上記の制限を克服し、さまざまな機器を相互接続する相異なる通信プロトコルを有する複数のネットワークを単一の統一フレームワークへと統合して、ユーザアプリケーションがさまざまなネットワークデバイスを発見し利用することを可能にする方法および装置を提供することである。
【0020】
具体的には、本発明の目的は、利用可能な機能の変更およびユーザ相互作用に応答してネットワークノードの動的な適応および再構成を達成する方法および装置を提供することである。
【0021】
本発明のもう1つの目的は、アプリケーション、サービス、およびデバイスが、自己の能力および通信インタフェースを記述し、それを他のアプリケーション、サービス、およびデバイスに公表する方法を提供する。
【0022】
本発明のさらにもう1つの目的は、物理的に相異なるデバイスが、接続し、情報交換し、データタイプを交渉し、それぞれの動作についてのステータスを提供して、ネットワークプラグアンドプレイを達成することを可能にする、プラットフォーム独立でトランスポート独立なプロトコルを提供する方法および装置を提供することである。
【0023】
上記の目的を実現し、本発明の効果を達成するため、アクティブコンフィグレーションフレームワークシステムが提供される。本発明のフレームワークは、サービスとサービスユーザを相互接続する。また、このフレームワークは、プラグアンドプレイブローカを有する。本発明のフレームワークでは、サービスユーザは、プラグアンドプレイブローカを用いて、ネットワーキングサービスを発見し、利用し、ネットワーキングサービスと通信する。
【0024】
本発明のフレームワークでは、サービスユーザは、サービスを提供するデバイスによって使用される通信プロトコルとは独立に、プラグアンドプレイブローカのインタフェースを通じてサービスと通信する。
【0025】
また、本発明によれば、サービスをプラグアンドプレイブローカに登録するゲートウェイが提供される。
【0026】
また、本発明によれば、サービスエージェント、ユーザエージェント、およびディレクトリエージェントを有するアクティブコンフィグレーションフレームワークが提供される。本発明のフレームワークでは、サービスエージェントはサービスをディレクトリエージェントに登録する。その後、ユーザエージェントは、要求するサービスの記述をディレクトリエージェントに通信し、ディレクトリエージェントは、適合するサービスのロケーションを帰す。
【0027】
本発明のフレームワークでは、サービスは、デバイスクラスタおよびゲートウェイからなることが可能である。サービスエージェントは、このゲートウェイを通じてデバイスクラスタと通信する。
【0028】
また、本発明によれば、新たなネットワークデバイスの追加に応答して、フレームワークの自動的再構成を行う方法が提供される。本発明の方法によれば、サービスエージェントは、サービスをディレクトリエージェントに登録する。その後、ユーザエージェントは、要求するサービスの記述をディレクトリエージェントに通信する。最後に、ディレクトリエージェントは、要求されたサービスの記述を、提供するサービスの記述と照合し、適合したサービスのアドレスをユーザエージェントに返す。
【0029】
また、本発明によれば、フレームワークに追加される新たなネットワークデバイスによって実行されるサービスに対する通信インタフェースを生成する方法が提供される。本発明の方法によれば、デバイスは、その通信インタフェースを記述するスキーマを生成する。このスキーマは、XML(eXtensible Markup Language)文書の形式とすることが可能である。その場合、ユーザアプリケーションは、XML言語パーサを用いて、通信インタフェースを生成する。
【0030】
また、本発明によれば、ネットワークデバイスを制御する方法が提供される。本発明の方法によれば、ユーザアプリケーションは、デバイス記述スキーマを編集し、編集されたデバイス記述スキーマをデバイスに返す。これに応答して、デバイスは、編集されたデバイス記述スキーマに従って状態を変更する。
【0031】
【発明の実施の形態】
すべてのタイプの分散デバイスおよび分散サービスにわたりネットワークプラグアンドプレイを達成するためには、統一フレームワークが必要である。ここで使用される「フレームワーク」あるいは「サブストレート」という用語は、1つ以上のネットワークを統合するシステムを意味する。しかし、多くの場合、「フレームワーク」、「サブストレート」、および「ネットワーク」という用語は区別なく用いられる。
【0032】
本発明のフレームワークを使用することにより、ネットワーク内の相異なる物理デバイスの個数にかかわらず、ネットワーキングエンティティの相互作用のための複雑な機構は一度だけ実装すればよい。さらに、これらの機構は、デバイス固有のゲートウェイを通じて管理ブローカと相互作用するユーザアプリケーションから隠蔽される。本発明のフレームワークは、SLP、HTTP、XML、JavaRMI、およびIIOPのような周知のインターネット関連プロトコルに基づいており、ウェブサーバへのアドオンとして実装可能であるため、配備および利用が容易である。さらに、本発明のフレームワークでは、サービス発見の全プロセスは、ユーザアプリケーションにとって透過的(トランスペアレント)であり、物理接続(コネクション)に対する区別がない。例えば、ネットワークに接続されるプラグアンドプレイデバイスはTCP/IPベースである必要はない。サービス利用プロセスもまたトランスペアレントであり、対象となるさまざまなデバイスの能力と、ユーザの認証および認可に基づく。互換性のないデバイスを接続するときには、トンネリングや完全なデータ変換が必要となることもある。
【0033】
本発明は、デバイス独立な情報交換を容易にするためのアクティブコンフィグレーションフレームワークを提供する。複数のデバイスが接続し、情報交換し、データタイプを交渉し、それぞれの動作についてのステータスを提供するには、相異なるプロトコルが要求される。これらのプロトコルは、プラットフォーム独立であり、その形式や機能にかかわらず、他のデバイスに接続する必要のある任意のデバイスに組み込むことができる。これらのプロトコルはトランスポート独立でもあるため、任意のデバイスが、他の任意のデバイスに接続し、情報交換することが可能となる。
【0034】
本発明のフレームワークでは、アクティブネットワークの場合のように、ユーザ定義計算がネットワーク内に配置される。しかし、アクティブネットワークとは異なり、現在のインターネットアーキテクチャのすべてのルーティングおよびフォワーディングのセマンティクスは、計算環境をアプリケーション層に制限することにより保持される。このフレームワークを利用するネットワークデバイスおよびサービスは、ネットワークインフラストラクチャに深く組み込まれる場合でも、実際には、エンドシステム上のユーザアプリケーションによって作成され、設定され、動的に制御される。このようなアプリケーション定義エンティティは、ネットワーク内の任意のノードで実行され、個々のパケットは、ネットワークを通じて伝搬するとともに任意のアクションを実行するようにプログラムされることが可能である。
【0035】
[アクティブコンフィグレーションフレームワークのコンポーネント]
完全なアクティブコンフィグレーションアーキテクチャは、ダミーデバイス、ゲートウェイデバイス、および、ネットワークに直接的または間接的に接続されたPnPブローカからなる。アクティブコンフィグレーションフレームワークのアーキテクチャを図1に示す。図1に示すように、ネットワークには1個以上の実行環境102がある。実行環境102は、例えば、インターネットのようなネットワーク101を用いて相互接続される。実行環境102は、ある意味で、ネットワークノードとして作用する。実行環境102は、当業者に周知のJava仮想マシンやWindowsTMベースのマシン内にあることが可能である。実行環境102は、ゲートウェイ(図示せず)を通じて非インテリジェント(すなわち、ダミー)デバイスに接続された1個以上のPnPブローカ104を有する。ユーザアプリケーション103は、PnPブローカ104を通じて、デバイスを発見し、利用し、デバイスと通信する。以下で、本発明のアクティブコンフィグレーションフレームワークシステムのさまざまなコンポーネントについて詳細に説明する。
【0036】
[ダミーデバイス]
ダミーデバイスは、TCP/IPプロトコルスタック、もしくはJava仮想マシン、またはその両方のないデバイスである。このようなデバイスは、ネットワークから直接にアクセス可能ではなく、媒介物としてゲートウェイを必要とする。このようなデバイスは、ネットワークにインストールされる前に、特定のコンフィグレーション選択を行う必要がある。例えば、それぞれのX−10デバイス(白熱電球など)には、電源線ネットワークに接続する前に手動でハウスコードおよびデバイスコードを割り当てなければならない。さらに、このようなデバイスは、提示するサービスのためのセキュリティやアクセス制御を実施することはない。このようなデバイスのほとんどは、メモリや処理能力を有しておらず、ネットワークの残りの部分に依然として接続する必要のあるレガシーデバイスとして特徴づけることができる。
【0037】
[ゲートウェイデバイス]
通常のネットワークデバイスは、単一のネットワークタイプ(例えば、IPまたはIPX)により、ピアツーピア方式で相互作用することができる。これは、あるネットワークタイプのデバイスは、同じネットワークに物理的に接続された、同じネットワークタイプのデバイスとのみ通信することができることを意味する。第1のデバイスが、その第1のデバイスによってサポートされていないネットワーク上にある第2のデバイス、あるいは、第1のデバイスによってサポートされていないプロトコルを実行している第2のデバイスに接続することを必要とする場合に問題が生じる。この問題を解決するには2つのアプローチがある。
【0038】
第1のアプローチは、複数の通信スタックを単一のネットワークデバイスにロードすることである。これにより、デバイスは、適当な通信スタックを有する限り、任意のタイプのネットワークデバイスと相互作用することが可能となる。基礎となるトランスポートは異なるが、デバイスがプロトコルスタック全体を理解する場合には、このアプローチはうまくいく。
【0039】
複数の相異なるデバイスを接続する問題を解決するため、本発明のフレームワークシステムはゲートウェイを使用する。ゲートウェイは、ネットワーク内に不可視的に存在し、あるネットワークタイプを別のネットワークタイプに変換するデバイスである。このアプローチは、デスティネーションデバイスがレガシーであり、各ソースデバイスがデスティネーションと通信するためにデスティネーションをモデル化しなければならない、という本発明の実施例で用いられる。これは、例えば、ファックスデバイスや電子メールデバイスの場合である。デバイスにレガシーネットワークと対話する能力を追加するのではなく、この機能はゲートウェイに置かれる。ゲートウェイは、通常、プログラム可能なプラットフォーム上にホスティングされる。
【0040】
本発明のフレームワークでは、PnPブローカが、アクセスのためにゲートウェイを要求するレガシー(ダミー)デバイスとのセッションを確立したい場合、ゲートウェイは、PnPブローカから、そのデバイスの存在を隠蔽する。PnPブローカは、その代わりに、ゲートウェイとのセッションを作成し、ダミーデバイスのアドレスをゲートウェイに渡す。この時点以降、ゲートウェイは、セッションにおけるいずれかのチャネルを通じてデータを受け取ると、そのデータを、ゲートウェイ−ダミーリンクを通じてリモートデバイスへと中継する。本発明は、次の2つのタイプのゲートウェイを使用する。一般化ゲートウェイは、IPデバイスとの通信を行い、特殊化ゲートウェイは、ダミーを通じて非IPデバイスとの通信を行う。特殊化ゲートウェイは、ダミーデバイスをネットワークに公開するものであり、そのデバイスを制御・管理するためのプログラミングロジックを含む。さらに、特殊化ゲートウェイは、ダミーデバイスのセキュリティポリシーを実現する。1つのゲートウェイデバイスが複数のダミーデバイスを管理することが可能である。
【0041】
[PnPブローカ]
PnPブローカは、アプリケーション、サービス、およびデバイスのサービスブローカとして作用する。PnPブローカは、分散システムのためのInfobusの概念を拡張し、ネットワーク全体をSoftware Busとして扱う。Infobusシステムは当業者に周知である。詳細な説明は、Reaz Hoque, "Connecting JavaBeans with InfoBus", Wiley Computer Publishing, Nov. 98、にある。Software Busもまた当業者に周知であり、Brian Oki, Manfred Pfluegl, Alex Siegel, and Dale Skeen, "The Information Bus - an architecture for extensible distributed systems", Proceedings of the 14th Symposium on Operating Systems Principles, p.58-68, Asheville, North Carolina, December 1993、に記載されている。
【0042】
PnPブローカにより、ネットワーク接続されたエンティティは、他のネットワーク接続エンティティ(ゲートウェイあるいはダミー)の能力を発見し利用することが可能となる。ゲートウェイは、その能力を、対応するPnPブローカに登録し、ダミーデバイスは、ゲートウェイを発見し、このゲートウェイを通じてPnPブローカと通信する。ネットワーク内のデバイスの各タイプ(例えば、X−10X、1394X、USB)ごとに特定のゲートウェイがあり、その一端でこのデバイスクラスタに接続され、他端でPnPブローカに接続される。X−10、HAVi、IEEE−1394、およびUSBは周知の通信プロトコルである。2つの相異なるゲートウェイが互いに対話したい場合、通信のためにPnPブローカを使用することができる。例えば、あるゲートウェイがJiniクラスタを代表する一方で、別のゲートウェイが、HAViを用いたIEEE1394クラスタのゲートウェイとなることが可能である。本発明のフレームワークでは、ゲートウェイは、そのアーキテクチャ用に設計されたダミーを使用することにより、受動(非TCP/IP)デバイスと通信する。
【0043】
図2に、アクティブコンフィグレーションフレームワークの全体設計を示す。実行環境102内で動作するPnPブローカ104は、ゲートウェイ201を通じて、ダミーデバイス203およびユーザアプリケーション202と通信する。ゲートウェイデバイス201は、ネットワークノード205上で、そのオペレーティングシステム環境内で動作する。ノード205は、ゲートウェイおよびサービスへのアクセスを制御するためにセキュリティ実施機構204を提供する。
【0044】
ネットワーク接続されたエンティティは、サービスユニットと呼ばれる有意味な機能に再分割される。原理的には、アーキテクチャは、ユーザアプリケーションの観点から、1つの有意味な機能を1つのサービスユニットとして定義する。サービスユニットは、ユーザアプリケーション/サービス全体であることも可能であり、ユーザアプリケーション/サービスの一部であることも可能である。コマンド、応答、およびデータは、ユーザアプリケーションとサービスユニットの間、サービスユニットとサービスの間、あるいはサービスユニットと別のサービスユニットの間で交換することが可能である。サービスユニットは、その機能をPnPブローカに登録する。
【0045】
PnPブローカにより、ネットワーク接続されたエンティティは、他のネットワーク接続エンティティの能力を発見し利用することが可能となる。ネットワーク接続エンティティは、サービスユーザ(ユーザアプリケーション)であることが可能である。ユーザアプリケーションは、PnPブローカを通じて、サービスを発見し、それを使用することを要求する。PnPブローカは、サービスユニットとユーザアプリケーションを接続するためのトランスポート独立なインタフェース(PnPブローカインタフェースという)を提供する。このインタフェースは、TCP/IPプロトコルスタック上で動作するように設計される。PnPブローカは、サービスブローカまたはマネージャとしてその役割を果たすために、異なるクラスタ内の他のPnPブローカと通信する。PnPブローカ間のプロトコルはPnPブローカ間プロトコルと呼ばれる。
【0046】
各デバイスクラスタは、高々、1つのPnPブローカを有する。ローカルなPnPブローカがないとき、ユーザアプリケーション/サービスユニットは、JavaRMIやHTTPのようなインターネット通信プロトコルを通じてリモートPnPブローカ(別のゲートウェイに接続されたPnPブローカ)を使用することが可能である。JavaRMIプロトコルは当業者に周知である。その詳細な説明は、Downing, Troy Bryan, "Java RMI: Remote Method Invocation", IDG Books Worldwide, 1998、にある。HTTPプロトコルも当業者に周知である。その説明は、"Paul S. Hethmon, "Illustrated Guide to HTTP", Manning Publications, 1997、にある。サービスユニットは、それに直接に接続されたPnPブローカを使用することも可能であるし、PnPブローカ間プロトコルを使用することによりリモートPnPブローカを使用することも可能である。図3に示すネットワークシステムでは、サービスユニット406は、PnPブローカ間プロトコル404を通じて、リモートPnPブローカ1104に接続されたサービス1406および1402を利用する。こうして、あるサービスユニットが、異なるデバイスクラスタに位置するサービスユニットで利用可能なサービスに問い合わせ、これを使用することができる。
【0047】
[PnPブローカ機能コンポーネント]
PnPブローカの内部コンポーネントを図4に示す。通常、PnPブローカは、サービスレジストリ305、サービスディスカバリ/アベイラビリティエージェント304、サービスセッション管理エージェント306、サービスロケーションプロトコル(SLP:service location protocol)ユーザエージェント308およびSLPサービスエージェント307からなる。PnPブローカ間プロトコル303は、他のPnPブローカ301との通信に使用される。PnPブローカインタフェース302は、ユーザアプリケーション103に対するインタフェースを提供する。サービスロケーションプロトコル(SLP)は、当業者に周知であり、James Kempf and Pete St. Pierre, "Service Location Protocol for Enterprise Networks: Implementing and Deploying a Dynamic Service Resource Finder", John Wiley and Sons, 1999、に記載されている。サービスレジストリは、1個以上のサービスレコードを含む。サービスレジストリ内のすべての情報は、検索、索引づけおよび交換を容易にするために、XML(eXtensible Markup Language)として記述される。XMLもまた当業者に周知であり、Natanya Pitts-Moultis and Cheryl Kirk, "XML black book", Coriolis Group Books,
1999、に記載されている。
【0048】
[サービスレジストリ]
PnPブローカは、サービスについての情報を保持するためにサービスレジストリを含む。最小限、レジストリは、そのPnPブローカに直接に接続されたゲートウェイおよびサービスについての情報を格納する。図3に示すように、これらのサービスは、ローカルPnPブローカ104またはリモートPnPブローカ1104にある。さらに、PnPブローカレジストリは、他のPnPブローカに登録されているサービスについての情報を格納することも可能である。この拡張されたレジストリ機能により、ローカルPnPブローカは、サービスのローカルなディレクトリを保持することが可能となる。これは、ローカルな環境にとって重要であり、ネットワーク内に別個の「集中化した」SLPディレクトリエージェントは不要となる。例えば、ローカルPnPブローカがプリントサーバをサポートする場合、レジストリは、すべての準拠プリントサーバについての情報を有することが可能である。最終的に、この情報は、負荷均衡、フォールトトレランス、あるいはキャッシュのために使用可能である。また、PnPブローカサービスレジストリは、デバイスタイプにかかわらず、ローカルPnPブローカの範囲内にあるすべての準拠デバイスについての情報を提供する、ネットワークディレクトリとして作用することも可能である。この場合、ネットワーク内のPnPブローカのうちの1つが、すべてのPnPブローカを見つけて登録する責任を負う中心ディレクトリとして指定されることになる。ネットワークリソースに対する他のデバイスからのすべての要求は、このPnPブローカへ向けて送られ、このPnPブローカはそれぞれに応答することになる。
【0049】
[サービスレコード]
サービスレコードは、ネットワーク接続されたクラスタ内の利用可能なサービスユニットのセットであり、利用可能なサービスと、他のPnPブローカから要求されたサービスとを記述する。サービスレコードは、そのローカルクラスタ内の0個以上のサービスユニットレコードからなる。サービスユニットレコードは、サービスユニットIDフィールドと、それに続く0個以上の属性レコードからなる。サービスユニットIDフィールドは、サービスユニットのタイプと、そのサービスユニットによって提供されるサービスとを識別する。デバイスは、ただ1つのサービスユニットを有するが、複数の属性を有することも可能である。属性レコードは、属性IDフィールド、その値、および、アクセス制御情報からなる。属性レコードは、主に、それぞれのサービスまたはデバイスに対する細かいアクセス制御を実施するために使用される。さらに、属性レコードは、デバイスの現在の状態、および、それを変更するために使用可能なインタフェースの記述を格納する。
【0050】
[サービスディスカバリ/アベイラビリティエージェント]
PnPブローカは、リモートPnPブローカを発見し利用可能なサービスを識別するために、サービスディスカバリ/アベイラビリティエージェントを必要とする。サービスディスカバリ(発見)は、ローカルPnPブローカによって指定される、要求されるサービスタイプを、リモートPnPブローカ上で利用可能なサービスタイプと比較することによって実行される。ローカルPnPブローカからリモートPnPブローカへ要求サービスタイプを送信し、リモートPnPブローカからローカルPnPブローカへその応答を送信するために、上記のJavaRMIやHTTPを使用することができる。要求サービスタイプの指定の検査により、PnPブローカは、リモートPnPブローカに登録されているすべてのあるいは特定のサービスの特性を決定することができる。サービスディスカバリ/アベイラビリティエージェントは、SLPユーザエージェントおよびSLPサービスエージェントの上に位置する。
【0051】
さらに、PnPブローカは、サービスディスカバリ/アベイラビリティエージェントを用いて、サービスのアベイラビリティ(利用可能性)を周期的にチェックすることができる。ローカルPnPブローカは、適当なPnPブローカに対して、アベイラビリティチェックを実行するよう要求する。本発明の実施例では、ユーザは、アベイラビリティチェックの周期を指定し、また、このチェックを取り消すことができる。
【0052】
[サービスセッション管理エージェント]
ユーザアプリケーションがサービスまたはデバイスを発見し、それを使用したいとき、PnPブローカは、ユーザアプリケーションとそのサービスの間に仮想パイプ(トンネル)を確立する。これをサービスセッションという。このようなトンネルを用いて、ユーザアプリケーションとサービスの間で、コマンド、応答およびデータを交換することができる。デバイスのインタフェースの編成に従って、これらのコマンド、応答、およびデータは特定のフォーマットを有し、定義されたプロトコルのもとで交換される。PnPブローカは、この仮想パイプを管理しながら、以下の3つのプロトコルのうちの1つで動作するよう指令されることが可能である。
【0053】
[ネイティブパケットでのネイティブデータ転送]
PnPブローカは、データパイプを設定した後、バックグラウンドに入ることにより、ユーザアプリケーションとサービスが、メッセージストリームおよびデータフォーマットを管理することを可能にする。このアプローチは、PnPブローカが他のネットワークエンティティの能力を発見するために単独で使用され、アプリケーション、サービス、およびデバイスがユーザアプリケーションと発見されたサービスとの間の相互作用を管理するときに有用である。メッセージは、PnPブローカの関与なしに、ユーザアプリケーションとサービスの間で直接に交換される。メッセージ交換は、厳密に、ネイティブパケットにおけるネイティブデータの形式である。サービスを要求する前にサービスを発見するためあるいはサービスの問合せ(クエリ)を行うために、ユーザアプリケーションは、PnPブローカ間プロトコルを使用可能である。例えば、IEEE1394対応のカメラは、このデータ交換フォーマットを用いて、データストリームをディジタルVCRに送ることができる。
【0054】
[PnPブローカのパケットにおけるネイティブデータ転送(トンネリング)]
データフォーマットはユーザアプリケーションおよびサービスによって選択され制御される一方で、PnPブローカが、データパイプを設定し、メッセージストリームを管理することも可能である。このアプローチは、ユーザアプリケーションと発見されたサービスとの間で共通のメッセージングプロトコルが存在しないときに有用である。すべてのメッセージは、PnPブローカ間プロトコルによって運ばれる。例えば、IEEE1394対応カメラは、PnPブローカを通じて、異なるクラスタ内のディジタルVCRにデータストリームを送る。
【0055】
[PnPブローカのパケットにおけるPnPブローカのデータ(完全機能ゲートウェイ)]
PnPブローカが、データパイプを設定し、メッセージストリームを管理し、ユーザアプリケーションとサービスとの相互作用のためのデータフォーマット定義を提供する。また、ブローカは、ユーザアプリケーションと発見されたサービスとの間の共通のメッセージングプロトコルおよび共通のデータフォーマットを提供する。メッセージ交換情報は、PnPブローカデータに含まれ、これはパケットにフォーマットされる。ユーザアプリケーションメッセージは、PnPブローカを通るが、PnPブローカは、メッセージの内容あるいはセマンティクスを検査することはない。このタイプの相互作用の例は、USBデバイスと対話するIEEE1394対応デバイスである。
【0056】
[SLPユーザエージェント]
ユーザエージェントは、あるサービスとの接続を確立するためにユーザに代わって動作するプロセスである。ユーザエージェントは、サービスエージェントまたはディレクトリエージェントからサービス情報を取得する。
【0057】
[SLPサービスエージェント]
サービスエージェントは、サービスを公表するために、1個以上のサービスに代わって動作するプロセスである。
【0058】
[プロトコルと相互作用]
PnPブローカは、ユーザアプリケーションがネットワークのプラグアンドプレイ機能を利用することができるようにする標準化されたインタフェースを公開する。このPnPブローカインタフェースを用いて、アプリケーションは、トランスポート層とは独立にPnPブローカ間プロトコルを用いて相互に通信するように書くことができる。この設計は、ポータビリティ(可搬性)を促進し、ネットワークサービスの発見および選択のためのスケーラブルなフレームワークを提供する。PnPブローカ間プロトコルは、IETF Service Location Protocol v.2に基づいており、サービスをサポートするネットワークホストの名前をユーザアプリケーションが知ることは不要である。むしろ、ユーザは、PnPブローカインタフェースを通じて、所望のサービスタイプと、対応する属性のセットとをPnPブローカに与える。これらは、PnPブローカに対して、所望のサービスを記述する。この記述に基づいて、PnPブローカは、PnPブローカ間プロトコルを用いてサービスのネットワークアドレスを解決し、PnPブローカ間プロトコルは、サービスロケーションプロトコルを使用する。また、PnPブローカインタフェースは、デバイスあるいはサービスのためのユーザの識別および認証機構を扱う。いったんサービスが識別されると、PnPブローカ間プロトコルは、JavaRMIあるいはHTTPを用いて、ユーザアプリケーションが、発見されたサービスを使用することを可能にする。このフレームワークのもう1つの重要な特徴はゲートウェイによって提供される。ゲートウェイは、デバイスの能力をPnPブローカに登録し、PnPブローカが、PnPブローカにおいてサービスエージェントを通じてサービスを使用することを可能にする。
【0059】
要約すれば、本発明のプロトコルスイートは、以下のプロトコルおよびインタフェースからなる。
・PnPブローカとユーザアプリケーションの間のインタフェース。
・あるPnPブローカと別のPnPブローカの間のプロトコル。
・PnPブローカとゲートウェイの間のプロトコル。
・ゲートウェイとダミーの間のプロトコル。
【0060】
[ユーザアプリケーションへのPnPブローカのインタフェース(PnPブローカインタフェース)]
PnPブローカは、サービス登録、サービス発見、サービス要求、およびアベイラビリティチェックのために、ユーザアプリケーションに対して、標準化されたAPIおよびインタフェースを公開する。さらに、PnPブローカは、適当なサービスあるいはデバイスのためのユーザの識別および認証を扱う。
【0061】
[サービス登録]
必要なとき、サービスユニットまたははユーザアプリケーションは、それぞれ、サービスユニットまたはユーザアプリケーションとしてローカルPnPブローカに自分を登録または登録解除するために、RegisterService()またはUnregisterService()を呼び出す。ユーザアプリケーションまたはサービスユニットがPnPブローカに登録された後、その機能は、別のユーザアプリケーションまたはサービスユニットからのQueryService()またはSearchService()要求に対する応答に含まれる。
【0062】
[サービス発見]
ユーザアプリケーションは、SearchService()を呼び出して、ローカルPnPブローカに対し、特定のサービスを有する登録されたサービスユニットを含むPnPブローカを探索するよう要求する。ユーザアプリケーションは、QueryService()を呼び出して、どのようなサービスユニットが登録されているか、および、ユーザアプリケーションによって指定されたPnPブローカに登録されているサービスユニットの機能を発見する。
【0063】
[サービス要求]
ユーザアプリケーションまたはサービスユニットは、OpenService()を呼び出して、ローカルPnPブローカに対し、ローカルPnPブローカまたはリモートPnPブローカのいずれかに登録されている特定のサービスユニットとのサービスセッションを開始するよう要求する。TransferData()、ReceiveData()、およびCloseService()コールにより、追加機能が提供される。
【0064】
[アベイラビリティチェック]
ユーザアプリケーションまたはサービスユニットは、StartAvailabilityCheck()を呼び出して、ローカルPnPブローカに対し、ローカルPnPブローカまたはリモートPnPブローカのいずれかに登録されている特定のサービスユニットが動作しているかどうかを周期的にチェックするよう要求する。
【0065】
[ユーザの識別および認証]
好ましい実施例では、本発明は、Javaアプリケーション環境を利用する。これは、分散コンピューティングのための適切な、現在利用可能なコンピューティングプラットフォームを提供するからである。この環境では、コードおよびデータの両方が、マシン間で移動可能である。この環境は、別のマシンからダウンロードされたコードが、妥当なレベルの信頼性で動作することを可能にする組込みセキュリティを有する。Javaアプリケーション環境における強い型付けにより、仮想マシン上で、オブジェクトのクラスの識別は、そのオブジェクトがそのマシン上で発生したものでないときでも実行可能である。その結果、ネットワークは、必要に応じて移動可能なオブジェクトの流動的なコンフィグレーションをサポートし、オペレーションを実行するためにネットワークの任意の部分を呼び出すことができる。
【0066】
ホームデバイスへの認証なしのアクセスは、フレームワーク全体のセキュリティにとって重大な結果を生じる可能性がある。リソースへの制御されたアクセスは、安全性とセキュリティの基礎である。従って、本発明の一実施例は、Java仮想マシンおよびJavaプログラミング環境を使用して、1つのデバイスのセキュリティを保証する。システムは、障害のあるデバイスに対処するように設計することが可能であるが、ネットワークセキュリティは、デバイスセキュリティよりも複雑な問題となる。
【0067】
本発明のもう1つの実施例は、コードを参照する手段として、および、基本的なアクセス制御機構として、コードのMD5チェックサムを使用する。MD5は、コードのチェックサムを生成する暗号化手続きであり、アクセス制御のために使用される。しかし、ネットワークが大規模になると、セキュリティポリシーを指定しコードに名前付けするためのより柔軟な分散機構が必要である。
【0068】
本発明のセキュリティモデルは、プリンシパルとアクセス制御リストという2つの概念の上に構築される。サービスは、あるエンティティ(プリンシパル)に代わってアクセスされる。プリンシパルは、一般に、システムの特定のユーザに由来する。サービス自体が、そのサービスを実装するオブジェクトの識別に基づいて、他のサービスへのアクセスを要求することが可能である。サービスへのアクセスが許可されるか否かは、そのオブジェクトに対応するアクセス制御リストに依存する。
【0069】
[PnPブローカ間通信プロトコル]
PnPブローカ間通信プロトコルは、2つの部分に分かれる。第1に、ネットワーク内で新たなデバイスおよびサービスを発見するための、プロトコルおよび機構のセットが使用される。発見(ディスカバリ)手続きは、ユーザアプリケーションがどのようにしてネットワークインフラストラクチャを探索するか、および、ユーザアプリケーションがどのようにして自分自身およびそのサービスを登録することができるかを指定するサービスディスカバリプロトコルの部分に基づく。他方、ルックアップ手続きは、ユーザアプリケーションが、集中化されたレジストリがある場合あるいはない場合に、必要とするサービスを探索するためにどのようにしてレジストリに問合せを行うかを指定するプロトコルに基づく。
【0070】
いったんサービスが探索された後、そのサービスを利用するために他のステップが必要になることがある。本発明の実施例では、ユーザアプリケーションは、サービスの品質およびセキュリティ条件を含めて、サービスへのアクセスの交渉を行う。さらに、サービスへのアクセスの交渉が成功した後、ユーザアプリケーションは、JavaRMI、HOP、あるいはHTTPプロトコルを使用して、実際にサービスを利用する。
【0071】
[サービスディスカバリ/登録プロセス]
ルックアップおよびディスカバリの両方のために、サービスロケーションプロトコル(SLP)が使用される。図5に、サービスディスカバリ手続きを示す。SLPは、自動的に、しかも事前の設定なしで、ユーザエージェント(UA:user agent)502の要求を、サービスエージェント(SA:Service Agent)504によって提供されるサービス512と照合する。SLPは、SAによるサービスの公表と、ディレクトリエージェント(DA:Directory Agent)511により管理されるSLPディレクトリ508へのサービスの編成とを処理する。また、SLPは、サービスがユーザアプリケーションにサービスの能力および設定条件を通知する手段を提供する。
【0072】
PnPブローカ501内のUA502は、ユーザアプリケーション103によるサービスおよびリソースの要求を理解する。同じくPnPブローカ503(同じPnPブローカでも異なるPnPブローカでもよい)にあるSA504は、各ネットワークサービスを代表し、UA502にとって利用可能なサービスを行う。SLPは、動的にサービス属性を保持するため、UA502は、現在の情報を取得することが可能である。サービスは、アプリケーションによって自動的に探索されることも可能であり、あるいは、サービスブラウザでユーザに提示されることも可能である。SLPは、既存のアプリケーションをサポートするとともに、新たなサービスの公表および発見を容易に可能にする。
【0073】
本発明によれば、サービスは、ゲートウェイによって記述される。ゲートウェイは、SA内の属性(そのサービスに対応する)の値を設定する。例えば、プリンタは、ポストスクリプトプリンタとして、青色の紙が利用可能なプリンタとして、あるいは、ユーザのオフィスの同じフロアにあるプリンタとして、記述することができる。UA502は、DA511への要求メッセージSrvReq505において必要なキーワードおよび属性値を指定することによって適当なプリンタを選択し、応答を待つ。DA511は、適当するサービスのネットワークロケーションを含む応答SrvRply505により応答する。小規模な施設では、DAがないことも可能であり、その場合、要求メッセージは直接にSAに送られることになる。これを、ブロードキャストによるディスカバリ(507)という。
【0074】
サービスは、DA511に登録することによって自分自身を公表する。サービスの登録は、サービスを記述するすべてのキーワードと属性値対(属性と値からなる対)とからなるリストを含む。また、登録は、リソースへのリースを含む。これにより、リースの満期後、サービス情報はDA511によって削除される。リース機構は、サービスが永久に公表され続けているのにサービスハードウェアがもはや利用可能でない状況を避けるために実装される。また、明示的な登録解除も、SAの規則正しいシャットダウン手続きの一部として、DAからサービスの情報を削除することが可能である。また、SAが、現在の属性情報を周期的に登録することにより、UAが、サービスに関連するステータス、負荷、温度、あるいはその他の動的特性を確認することも可能である。
【0075】
本発明のフレームワークでは、サービスは、そのサービスタイプに従って分類される。各サービスタイプは、SA504がサービスを記述するために利用可能にする、利用可能なキーワードおよび属性のセットを定義する。サービスブラウザは、まず、UA502にとって利用可能なサービスタイプを発見した後、そのサービスタイプについてSAによって公表されているすべての情報を問い合わせることによって、UA502にとって利用可能なすべてのサービスのすべての特性を決定することができる。
【0076】
[ユーザエージェントとサービスエージェントの相互作用]
サービス/デバイス登録プロセスの一部として、まず、サービスユニット512のゲートウェイは、サービスあるいはデバイスをSA504に登録し、その後、SA504は、SrvRegメッセージ506をDA511に送る。この登録は、サービスの特定のインスタンスに対するサービスURIと、そのサービスを記述する属性値対とを含む。DA511は、さまざまな目的で、このような登録をキャッシュすることが可能である。登録がキャッシュされた後、DA511は、SrvAckメッセージにより応答する。また、サービス登録は、寿命(lifetime)を含む。サービスが利用不能になったがそれ自身を登録解除することができなかった場合、寿命値により、DA511は、キャッシュされた登録を満期にすることができる。この状況は、SA504がSrvDeregメッセージ506を発行することができない場合にしか生じないはずである。正常動作中、SA504は、後続のSrvRegメッセージで周期的にサービスの登録をリフレッシュする。このような「リフレッシュ」メッセージは、いずれかの値が変化した場合には更新された情報を含むことが可能であるが、完全な属性のセットを含む必要はない。
【0077】
PnPブローカ501のUA502は、サービスが要求されるときに、DA511に対して要求を行う。UA502がDA511を発見することが可能ないくつかの方法がある。起動時にDA511のアドレスをUA502に静的に設定することに加えて、UA502は、当業者に周知のDHCP(Dynamic Host Configuration Protocol)を用いてDA511のアドレスを要求することも可能である。第3のオプションとして、リンク上にマルチキャストを行い、DAの公表を受け取るということがある。これらの3つのオプションは共存するが、SLPが、手動設定なしで動作可能であることが重要である。この理由で、UA502は、DA511を見つけるためにSrvReqを使用することが可能である。SrvReqは、SLPに対するIANA割当てマルチキャストアドレスにマルチキャストされる。IANAは、当業者に周知のInternet Assigned Numbering Authority標準である。これはマルチキャスト要求であるため、複数のユニキャスト応答を受け取る可能性がある。その結果として得られるDAのりすとは、他のサービス要求のために使用可能である。
【0078】
いったんUA502がDA511のアドレスを得ると、後続のサービス要求は直接にそのエンティティに対して行うことが可能である。プリンタを例とすると、UA502がプリンタサービスを探索しようとする場合、SrvReqが作成される。このメッセージは、サービスタイプ"printer"と、オプションの属性および値のリストとを含む。属性値対は、要求されるプリンタのタイプを記述する。このメッセージは、事前に設定された、または、マルチキャストを通じて発見された、DA511へユニキャストされる。DA511は、SrvReqを受信し、キャッシュされた登録に対するルックアップを実行して、要求された属性および値と一致するものを見つけようと試みる。その後、SrvRplyが、要求側のUA502へユニキャストされる。この応答は、一致結果に依存して、0個以上のサービスURIを含む。その後、ユーザアプリケーションは、そのサービスURIを用いてプリンタを見つける。
【0079】
施設内にDA511がない場合、PnPブローカは、同じくラスタ内のSA504を見つけることに制限される。これは、多くの小規模な施設では許容できるかもしれないが、PnPブローカのスケーラブルなアプリケーションの場合、および、複数のクラスタを有する大規模な施設では、DA511を使用しなければならない。さらに、SLP DA511は、LDAPベースのディレクトリ509へのゲートウェイであることが可能であるため、PnPブローカインタフェースは、変換スキーマ510を用いて、すべてのプロトコルに対する単一のAPIを提供する。
【0080】
UA502は、サービスハンドルを取得したいとき、サービスタイプと、要求する属性の文字列ベースの問合せとをサービス要求として送信する。サービス応答が返されるとき、これは、サービスを指すURIを含む。URIは、SA504のIPアドレスを含むか、さもなければ、DNSがIPアドレスへと解決することができる名前を含む。また、URIは、UA502がサービスを使用するために必要とするその他の情報を含む。例えばプリンタの場合、キュー名と、プリントサービスをホスティングしているコンピュータのアドレスとが返される。URIは、リソースロケーションを表すための従来の標準と同様の自然な方法で、サービスを見つけるために使用される。さらに、文字セット問題は、標準的な方法で対処することができる。
【0081】
[PnPブローカとユーザエージェントおよびサービスエージェントとの相互作用]
SLPを使用することにより、PnPブローカは、同じタイプの多くの他の公表されたデバイスから適当なサービスの正確な選択をすることができる。これは、UA502によって要求されたキーワードおよび要求された属性値に一致するサービスのみを要求することによって行われる。このようなキーワードおよび属性値は、AND、OR演算子、一般的な比較演算子により、また、部分文字列マッチングを使用することにより、ブール式へと結合することができる。
【0082】
PnPブローカは、ユーザへのコンフィグレーション情報の提供を透過的にし、新たなサービスの設定の作業を容易にする。これらはいずれも、システムアドミニストレータを必要とする。SA504が近隣のDA511にサービスを公表するように設定された後、UA502は、さまざまなサービスがオペレーションを開始および停止するとともにネットワーク上で変化する条件に、動的に適応することができる。例えば、ウェブアプリケーションは、現時点でたまたま動作中であるシステムとは独立に、適当なプリンタが利用可能である限りそれを見つけることができる。
【0083】
ゲートウェイは、SA504に新たなデバイスあるいはサービスを追加したいとき、そのサービスの利用可能な属性およびキーワードを供給する。SA504は、プログラム的にSLPに登録を行い、サービスの固有のコンフィグレーション情報に基づいて属性に対する値を割り当てることができる。その後、SLPは、登録(公表)を処理し、ユーザアプリケーションとサービスの間のコネクションの確立を可能にする。
【0084】
新たなサービスタイプを必要に応じて定義することができる。実験的なサービスタイプを限定された用途で配備し、その後に一般用に公開することも可能である。これは、SLPのネーミング権限機能を用いて実行される。ほとんどの一般的なサービスタイプは、デフォルトで、IANA(Internet Assigned Numbering Authority)により標準化されたサービステンプレート(スキーム)定義を使用する。代替サービスタイプを定義することは、任意の代替ネーミング権限に知られているスキーム定義(通常は、ローカル管理者に知られている名前)を使用するようにディレクトリエージェントを設定するのと同様に容易である。例えば、家庭でセキュリティサービスを提供するためには、"service:secure:Door"というサービスタイプを定義することができる。もちろん、このタイプのサービスハンドルを利用するユーザアプリケーションは、"secure"サービスと通信するために、そのサービスのネットワークプロトコルを使用しなければならず、さらに、この特別のサービスタイプのURIに含まれる情報を解析することができなければならない。これは、任意のユーザアプリケーション/サーバプロトコルの自然な動作に本来的なことである。
【0085】
[SLPをLDAPとともに使用すること]
LDAPv3(Lightweight Directory Access Protocol)は、当業者に周知であり、汎用のディレクトリアクセスプロトコルとして普及しつつある。LDAPはその名前にLightweight(軽量)とあるが、SLPはLDAPよりもさらに「軽量」である。また、SLPは、自動ディレクトリ管理を提供するため、および、階層的で自由度の少ない名前空間における不適切なリソース配置を必要としないために、リソース管理においてLDAPよりすぐれている。SLPにおいて新たなサービスタイプを追加することはLDAPの場合よりもずっと容易である。タイプによる問合せは、SLPの場合のほうがLDAPの場合よりも効率的である。既存のリソースに対する属性記述は、SLPでは利用可能であるが、LDAPでは不可能である。
【0086】
SLPでは、事前コンフィグレーションなしでのディスカバリが可能である。これに対して、LDAPは、はじめに、ディレクトリのアドレスと、LDAPが使用するディレクトリスキームの知識を必要とする。SLPでは、非標準的な属性と、標準化されたサービスタイプテンプレートの新しいバージョンが可能であるため、進化することができる。
【0087】
本発明の実施例は、SLPを使用して、LDAPディレクトリの管理を簡単化し、SLPが、必要に応じてLDAPディレクトリから取得される情報を返すことを可能にする。別の実施例では、SLPは、LDAPにサービスエントリを入力するために動的に使用され、SLP問合せはLDAP問合せにマッピングされて、LDAPがSLPのバックエンドとなる。このようなコンフィグレーションの1つの利点は、ユーザアプリケーションが、LDAPディレクトリから直接にユーザ認証情報を得ることである。
【0088】
[サービス利用プロセス]
サービスディスカバリ/登録プロセスは、サービスロケーションプロトコルによって提供されるURIによって検索可能なサービスレコードを提供する。PnPブローカ間の交換能力は、サービスレコードを含むQueryService()メッセージを交換することにより提供される。この問合せ(query)は、ユーザアプリケーションが利用したいサービスの要件を記述し、リモートPnPブローカに対してサービスの詳細を要求する。
【0089】
受信側PnPブローカは、QueryService()メッセージを受信すると、受信したサービスレコードを自己のサービスレコードと比較する。その後、受信側PnPブローカは、一致したサービスレコードを含むサービスレコードを要求側PnPブローカに返す。このアプローチは、すべてのサービスユニット、特定のタイプのサービスユニット、あるいは、特定の能力のセットを有するサービスユニットのうちで、ユーザアプリケーションが探索を行う技術を提供する。ユーザアプリケーションは、サービスレコードを受け取った後、サービスあるいはデバイスを使用するためにPnPブローカとの通信を開始することができる。
【0090】
ローカルPnPブローカは、リモートPnPブローカへメッセージを送ることによって、ユーザアプリケーションとサービスの間のサービスセッションの確立を要求する。このメッセージは、ユーザアプリケーションサービスハンドル、リモートサービスユニットハンドル、プロトコルID(ネイティブ/トンネル/ゲートウェイ経由)、要求側(リクエスタ)ID、および要求側資格証明(credential)からなる。
【0091】
リモートPnPブローカは、要求されたサービスが受容されるかそれとも拒否されるかを指定するリザルトコードで応答する。リモートPnPブローカは、ある時間後のリダイレクトまたはリトライを含むことも可能である。サービスが受容される場合、リモートPnPブローカは、サービスセッションの開始を識別するサービスハンドルを送信する。サービスセッションは、ユーザアプリケーションとサービスユニットの間、または、2つのサービスユニットの間でのデータ転送を扱う。ユーザアプリケーションは、サービスの使用を完了すると、ローカルPnPブローカに対して、"close service"(サービス終了)メッセージをリモートPnPブローカへ送るよう要求する。さらに、ユーザアプリケーションは、サービスが利用可能であるかどうかを周期的に判定する必要があるとき、それぞれのPnPブローカに対して、フレームワーク内のPnPブローカ間でアベイラビリティチェックを実行するよう要求することができる。アベイラビリティチェックは、1つのデバイス全体に対しても、あるいは、デバイス内で提供される特定のサービスに対しても、実行可能である。
【0092】
[PnPブローカ/ゲートウェイプロトコル]
PnPブローカ/ゲートウェイプロトコルは、簡単なメッセージ交換機構に基づいている。ゲートウェイは、既に説明したように、ゲートウェイに直接に接続されたサービスユニットを代表し、提供されるサービスを登録する。また、ゲートウェイは、PnPブローカにあるサービスエージェントに対する、任意のサービスのコンフィグレーションにおいてなされる変更を反映する。この登録は、リースに基づいており、ゲートウェイまたはサービスエージェントのいずれかにより更新可能である。登録は、サービスエージェントに現在の情報を提供する。PnPブローカは、特定のサービスに対する要求を受け取ると、まず、サービスエージェントをチェックして、必要なデバイスあるいはサービスをいずれかの直接接続されたゲートウェイが提供するかどうかを判定する。また、ゲートウェイにより、サービスエージェントは、ゲートウェイ内の特定のイベントに関心があることを登録し、そのイベントの発生の通知を受け取ることが可能である。このようなイベントは、ネットワークにおけるデバイス/サービスの追加/削除であることが可能である。サービスのサービスレコードがアプリケーションの要件に一致した場合、ユーザアプリケーションは、ゲートウェイ内のサービスユニットと、ユーザアプリケーションとの間のサービスセッションを設定することができる。
【0093】
[イベント通知機構]
本発明のフレームワークでは、ユーザアプリケーションは、イベント通知要求をサーバに登録することができるため、サーバは、新たなデバイスがオンラインになったとき、あるいは、デバイスの属性が変化したときに、ユーザアプリケーションに通知することになる。これを達成するため、本発明は、登録ユーザにイベント通知を配信するための機構を提供する。
【0094】
ネットワークイベント通知プロトコルには、CORBA(Common Request Broker Architecture)イベントサービス、X−Windowシステムイベント、SGAP、BSCWなどのいくつかの周知のものがある。例えば、CORBAイベントサービスは、Robert Orfali and Dan Harkey, "Client/Server Programming with Java and CORBA", Wiley, 1996、に詳細に記載されている。
【0095】
しかし、上記のイベント通知サービスは、特定のアーキテクチャで動作するように設計され、大規模なコードベースを課するため、軽量通知サービスにおいて実際に使用するのは困難である。
【0096】
いくつかのタイプのイベントの通知のための登録に関して提供される能力に加えて、ユーザは、属性を通知要求に関連づけることができる。好ましくは、このような通知は、高い信頼性で配信され、完全に規則正しいエンドツーエンド配信を保証するべきである。しかし、通知が、信頼できないトランスポートを通じて配信されるとき、確認応答やリトライは不要である。ユーザアプリケーションは、イベントの需要側が、受信の明示的な確認を供給側に提供することを要求することも可能である。認証のために、ユーザは、通知にディジタル証明して、通知の正当性および完全性を保証することができる。
【0097】
本発明のフレームワークは、SLPの使用により、2つの方法でイベント通知を達成する。第1実施例によれば、サービスエージェントは、サービスが更新された後、マルチキャストアナウンス(SrvReg)を送信する。更新を受信した後、ユーザエージェントは、ブラウザ更新を行うことが可能であり、DAは登録を更新することができる。このような使用法は、SLP使用では明示的に禁じられていないが、フラッディング(flooding)を引き起こす可能性がある。さらに、このアプローチは、多数のサービス、異なる言語、およびディジタル署名に関して効率的に動作しない。また、SrvRegは、ネットワークにおいて追加/削除/変更された各サービスのURIおよび属性を含む。
【0098】
本発明のもう1つの実施例では、サービスエージェントは、ネットワーク内のすべてのユーザエージェントへのブロードキャストにより、SAAdvertsメッセージをアナウンスする。SAAdvertsメッセージは、提供されるすべてのサービスタイプのリストを含む。SAAdvertsを得た後、ユーザエージェントは、送信側サービスエージェントへ適当なサービス要求をユニキャストする。サービスエージェントからのアナウンスは、指数バックオフ方式で行われる。
【0099】
[ゲートウェイ/ダミープロトコル]
ゲートウェイ/ダミープロトコルは、特殊なプロトコルであり、ネットワークにより統合されるデバイスのタイプを反映する。ネットワークは、X−10、USBおよびIEEE1394のデバイス/サービスをそれぞれネットワークの残りの部分に接続するX−10ゲートウェイ、USBゲートウェイ、およびIEEE1394ゲートウェイからなることが可能である。ダミーデバイスは、サービスレコードに対応するタイプのレコードを独自(proprietary)フォーマットで格納する。ゲートウェイ/ダミープロトコルは独自のものであるが、PnPブローカに対しては、標準化されたインタフェースを公開する。
【0100】
[実施例]
本発明の一実施例によれば、ネットワークは、1個以上のPnPブローカを有する。PnPブローカは、ユーザといくつかのサービスとの間のインタフェースとして作用する。一実施例では、X−10デバイスに対するPnPブローカは、USBデバイスによって提供されるサービスにリンクされたいくつかのボタンあるいはその他のユーザインタフェースウィジェットを提供する。ここで用いた「ユーザインタフェースウィジェット」という用語の意味には、ユーザアプリケーションのグラフィカルユーザインタフェースを作成するために使用されるボタン、ダイアログ、テキストウィンドウ、スケールおよびその他のグラフィカルコンポーネントを含む。あるボタンがクリックされると、PnPブローカは、単に、X−10ゲートウェイを通じて、特定のサービスを呼び出す。以下のステップは、この実施例により、ユーザアプリケーションが、ネットワーク内の新たに登録されたサービスを利用するために必要とされる。
【0101】
1.白熱電球が、家庭の電源アウトレットに挿入される。
【0102】
2.白熱電球は、ダミーデバイスであるため、X−10デバイスを通じて電源線ネットワークに接続される。
【0103】
3.ホームネットワークでは、PnPブローカおよびX−10ゲートウェイは、新たなデバイスの導入前に既に動作中である。
【0104】
4.X−10ゲートウェイは、利用可能なアドレスを周期的にポーリングし、いずれかのデバイスがアクティブになったかどうかをチェックする。
【0105】
5.ゲートウェイは、新たなデバイスがネットワークに入ったことを認識し、そのデバイスと、そのデバイスにより提供されるサービスとの両方を、PnPブローカのサービスエージェントに登録する。
【0106】
6.サービスエージェントは、デバイスを使用するために、あるリースを取得する。このリースは、各リース期間後に更新して、これにより、ゲートウェイに対して、サービスが依然として利用可能であるかどうかをチェックするよう要求しなければならない。
【0107】
7.サービスエージェントは、デバイスにより提供されるサービスを、サービスロケーションプロトコルを用いて、ディレクトリエージェントに登録する。
【0108】
8.ユーザは、デバイスを使用したい場合、PnPブローカインタフェースを用いて、要求するサービスに対する問合せおよび検索を行う。すると、PnPブローカにあるユーザエージェントは、ディレクトリエージェントと連絡をとるか、あるいは、(サービスエージェントおよびユーザエージェントがいずれも1つのPnPブローカ内にある場合には)直接にサービスエージェントへ行く。
【0109】
9.新たに発見されたデバイスが、ユーザのデバイス記述と一致する場合、サービスエージェントあるいはディレクトリエージェントは、サービスパラメータとともに、固有のURIをユーザエージェントに返す。
【0110】
10.ユーザアプリケーションは、これが非TCP/IPデバイスであると判定し、これに従い、PnPブローカ内のサービスセッション管理エージェントは、ユーザアプリケーションとデバイスの間のセッションを確立する。しかし、このセッションでは、コマンド/データ転送は、PnPブローカをゲートウェイとして使用して、PnPブローカ間プロトコルにより行われる。
【0111】
11.また、ユーザアプリケーションにより提供されるインタフェースは、デバイス内の機能の実行に関する情報も含む。
【0112】
12.ゲートウェイは、サービスにおける状態の変化をサービスエージェントに知らせて更新する。
【0113】
図6において、本発明の一実施例による例示的なホームネットワークは、電源線(X−10)クラスタ613、電話線(HomePNA/xDSL)クラスタ602および606、CAT5(イーサネット)クラスタ616、USBクラスタ610、ならびにJiniデバイスクラスタ609などの、周知のネットワークコンポーネントにより構成される。レジデンシャル(住宅)ゲートウェイ605は、イーサネット、HomePNA、xDSL、およびJiniを含むさまざまなネットワークを相互接続するために使用される。イーサネットクラスタは、ユーザのホームPC620を含む。ホームPC620は、イーサネットプロトコルにより、ディジタルカメラ617およびウェブパネル618のようなさまざまなデバイスに接続される。ウェブパネル618は、NEC社の製品であり、タッチパッドを有し、ユーザに、インターネットに容易にアクセスする手段を提供するデバイスである。イーサネットクラスタ616は、イーサネットハブ619を通じてレジデンシャルゲートウェイ605と通信する。イーサネットハブ619もまた、インターネットへのホームネットワークのブリッジを提供する。また、ホームPC620は、USB配線を用いてスピーカ611およびネットワークカメラ612に、および、X−10配線を用いて白熱電球614およびセキュリティマネージャ615に接続される。さらに、ホームネットワークは、別のホームPC603および607、テレビジョン601、ならびに電話機604を有する。ホームPC607を含むxDSLクラスタ606は、ブリッジ608を通じてレジデンシャルゲートウェイ605に接続される。PC620上で動作するPnPブローカは、ユーザが、ウェブブラウザに基づくインタフェース内で、新たなデバイス/サービスを検索することを可能にする。本実施例は、ユーザインタフェースとして、Microsoft Internet ExplorerTM v5.0ウェブブラウザを使用するが、他の適当なブラウザも使用可能である。
【0114】
デバイス/サービスは、対応するネットワークに挿入されると、設定可能なプロパティとともにブラウザに現れる。デバイス固有のゲートウェイは、デバイス/サービス記述を格納する。ディレクトリエージェントがネットワーク内にある場合、ディレクトリエージェントが、デバイス/サービスの機能の登録を扱う。正当な権限が与えられた後、ユーザは、デバイスのプロパティの変更や、デバイスの相互接続が可能である。PnPブローカは、デバイスに対するユーザの認証と、非互換の場合のデータ/メッセージの変換を扱う。例えば、X−10デバイス614および615は、PC620上にあるゲートウェイデバイスを使用することによって、フレームワーク内の残りのデバイスと対話することができるダミーデバイスである。PnPブローカは、HTTPサーバへのアドオンとして実装されることも可能である。ユーザは、電源線デバイス614および615の状態(電灯のオン/オフ)を変更することができる。デバイス(例えば、カメラ617)がTCP/IPベースである場合、ユーザは、カメラにより提供されるインタフェースに基づいて手動設定を実行し、カメラにより撮られる画像を見ることができる。ユーザは、ビデオオンデマンドサーバに対して、利用可能な映画のリストを問い合わせることができる。通常、(PC603上のMPEG−2デコーダを用いて)ネットワークに接続されたアナログTV601は、同じタイプのインタフェースを使用している場合には、ビデオオンデマンドサーバにも接続可能である。しかし、TV601およびネットワークカメラ612はインタフェースを共有していないため、ユーザは、カメラの画像を直接にTVで見ることはできない。Jiniデバイス(例えば、プリンタ)がネットワークに接続されている場合、このデバイスは、非JiniデバイスがあたかもJiniデバイスであるかのようにして、非Jiniデバイスとともに動作する。
【0115】
[Jiniインタフェースの問題点に対する解決法]
ネットワークプラグアンドプレイを達成する候補のうちの1つとしてのJiniインタフェースモデルの欠点については既に説明した。本発明は、Jiniセキュリティモデルを借りながら、上記のJiniインタフェースの欠点を克服する。Jiniのインタフェースの問題点を解決するには、以下の4つのアプローチを使用可能である。第1に、標準に基づく相互運用性が提供可能である。このアプローチによれば、すべてのサービスは標準APIを有し、サービスは、それらの標準APIを実装することになる。第2のオプションは、サンドボックスに基づく相互運用性である。この場合、適当なセキュリティモデルを有するJava仮想マシンが与えられれば、サービスは独立して動作することができる。第3のオプションは、リフレクションに基づく相互運用性である。この場合、アプリケーションは、サービスに対して、そのインタフェースについて質問し、リフレクション機構を通じて、このインタフェースの状態に影響を及ぼす。最後に、第4の方法は、実装に基づく相互運用性である。この場合、同じ人あるいは会社が、プロキシおよびサービスの両方を製造することになる。
【0116】
Jiniとは異なり、コードをクライアントに移動しそれをJava仮想環境内で実行する代わりに、本発明は、サービスのアドレスおよびそのサービスのインタフェースを記述するその他のパラメータを処理し、このインタフェース情報をクライアントに提供する。
【0117】
本発明のフレームワークが提供する主な利点の1つは、利用可能な機能およびユーザ相互作用モードにおける変更に応じたエンドユーザアプリケーションの動的な適応および再構成である。一部のインタフェースモデルは、ユーザが「従来型」ソフトウェアとのみ相互作用することができることに基づいている。このようなシステムでは、ユーザは、アプリケーションをカスタマイズする能力において制約があるため、アプリケーションは、デバイスの能力を最大限に、すなわち、サービス設計者が予測したユーザの需要あるいは提供したプログラムインタフェースの限界まで、利用することができない。
【0118】
多くの場合、自由度はユーザインタフェースによって制限される。アプリケーションの状態およびアプリケーションの初期設定は、ユーザインタフェースを通じてのみ操作可能であるが、ユーザインタフェース自体はあまり設定の自由度はない。これは、モノリシックなプログラムにおいて顕著であり、アプリケーションの状態にフックを設けたり、適切に定義された外部プロトコルを通じてアプリケーションの状態にアクセス可能にしたりするのがきわめて不便である。これに対して、クライアント/サーバプログラムは、公開された相互作用プロトコルを提供するが、2つの大きな問題点を有する。インタフェースの仕様がしばしば臨時的(ad hoc)であること、および、ネットワーク機能についてのアプリケーションのビューを(クライアントコードを修正することによって)変更することができるのはプログラマのみであることである。
【0119】
上記のインタフェースの問題点を解決する1つのアプローチは、アプリケーションプログラムが、オンザフライでクライアントデバイスあるいはコンピュータに、例えばJavaアプレットとして、ダウンロードされるようにすることである。しかし、このアプローチの問題点として、エンドユーザが、関連するエンティティとして異種のサービスのセットとの相互作用のためにアプリケーションをカスタマイズすることができないことがある。すなわち、このアプローチでは、アプリケーションが透過的でないために、機能的に同一のサービスの場合でも、プロトコルにおける小さい相違を克服することができない。例えば、上記のインタフェースモデルに基づく電灯スイッチ制御プログラムは、新たな電灯スイッチに遭遇するたびに、それを使用するためには異なるアプリケーションをダウンロードする必要がある。したがって、このアプローチは機能を公開するが、操作しやすい形式ではない。
【0120】
もう1つのアプローチは、さまざまなサービスの機能インタフェースを標準化し、アプリケーションがこれらのインタフェース標準をサポートすることを要求することにより、上記の問題点を回避することである。このアプローチの問題点は、多数のアプリケーション固有の標準を強制することが非実際的である点である。
【0121】
明らかに、上記のいずれとも異なるモデル、すなわち、インタフェースを公開する要求と、プロトコル標準について合意する要求とのバランスのとれたモデルが好ましい。この問題点を解決するための第1の困難は、サービスの利用可能な機能(インタフェース)を記述する単一ドキュメントスキーマを定義し、関連するプログラムおよびユーザインタフェースをサービスの集合に(およびその逆)関連づけることである。第2の困難は、カスタムユーザインタフェースが利用可能でないときに、上記のスキーマで書かれたドキュメントを用いてユーザインタフェースを生成し、ランタイム環境を実装することができるソフトウェアを提供することである。
【0122】
本発明の一実施例は、コンポーネントベースのアプリケーションフレームワークを、コンポーネント記述のためのアーキテクチャ独立なドキュメントモデルとともに利用する。このようなコンポーネントベースのアプリケーションフレームワークの詳細な説明は、David Krieger and Richard Adler, "The emergence of distributed component platforms", IEEE Computer Magazine, p.43-53, March 1998、にある。このフレームワークは、上記の2つの基本的なアプローチの特徴を組み合わせることにより、コードフラグメントのアップロード/ダウンロードを可能にし、アプリケーション固有でないインタフェースの記述および操作のために標準を課する。
【0123】
[本発明のアクティブコンフィグレーションモデル]
本発明のアクティブコンフィグレーションモデルでは、XML(eXtensible Markup Language)記述が、すべてのネットワークデバイスに関連づけられる。XMLが使用されるのは、XML記述が、(サーバ側での)デバイスの機能の公表として、静的で不変のインタフェース記述を提供するからである。さらに、このようなXMLサービスインタフェース記述を操作することによって、クライアントは、フレームワーク内のサービスを利用することができる。フレームワークは、操作のための標準的なロケーションを提供するために、それぞれのサービスオブジェクトにプログラムおよびユーザインタフェースを公開する。
【0124】
図7に、本発明のアクティブコンフィグレーションモデルを示す。本発明によれば、ネットワーク内のあらゆるデバイスあるいはサービス701は、その機能インタフェースの定義702を指定する。これらのインタフェース定義は、アナウンス705によってクライアントに伝えられる。これらのインタフェース定義は、サーバ側で静的(スタティック)である(CORBAにおけるIDLと同様)。これらのインタフェースは、ネットワーク内のすべてのエンティティ間で共有されるが、いずれのユーザアプリケーションによって操作されることも可能である。ユーザアプリケーションは、サービスインタフェースの使用、および、このようなインタフェースによって提示されるメタデータに対する完全なコントロールを有する。ユーザアプリケーション703によってインタフェースまたはその使用の状態に変更704があれば、リファレンス(参照)706によりデバイスあるいはサービスに反映される。
【0125】
したがって、本発明は、任意のネットワークサービスを構築するためのプログラム可能な基盤を提供する。本発明の一実施例では、エンドユーザアプリケーションは、利用可能な機能および相互作用モードにおける変更に応答して動的に適応され再構成される。この実施例は、コードをダウンロードするJavaアプレットの考え方と、標準化されたインタフェースの記述および操作との利点を組み合わせている。本発明のフレームワークでは、ユーザ(あるいはマシンにより生成されたユーザアプリケーション)は、単に、サービスによって提供されるインタフェース記述を編集し、その編集をデバイスに反映させることによって、ネットワークあるいはデバイスの状態を変えることができる。さらに、デバイスあるいはサービスは、標準化されたAPIを通じてアクセス可能である。すべてのAPIを標準化しようとすることによって特徴づけられる従来のシステムとは異なり、本発明のフレームワークによれば、さまざまなネットワーキングデバイスのベンダは、自己の製品の記述をフレームワークにマッピングすることが可能である。こうして、ベンダは、構文的定義およびデバイスの能力に集中することができる。
【0126】
本発明によれば、デバイス記述は、宣言的スタイルのXMLを用いて格納され、アプリケーションコードに追加して使用される。XMLデバイス記述の主な機能は、データおよび制御フロー情報を提供することである。この制御/データの分離を公開することにより、本発明は、メタデータを設計に明瞭に組み込むので、格納および操作がアプリケーションとは独立となるため、アプリケーションは、将来の変更が可能なように設計することができる。
【0127】
本発明のフレームワークで用いられているような、プログラム/ユーザインタフェースを、それらが参照するオブジェクトから分離することは、当業者に周知のSmalltalkTMのモデル/ビュー/コントローラ(M/V/C)アーキテクチャに類似している。モデル/ビュー/コントローラアーキテクチャについてさらに詳細には、G. Krasner and S. T. Pope, "A Cookbook for Using the Model View Controller User Interface Paradigm in Smalltalk-80", Journal of Object Oriented Programming, August/September 1988、に記載されている。
【0128】
M/V/Cアーキテクチャでは、データ(モデル)は、データの表示(ビュー)およびデータを操作するイベント(コントローラ)から分離される。同様に、本発明のシステムにおける文書は、データを操作し見るためのユーザインタフェース/プログラムにそのデータを関連づける糊(グルー)として作用する。
【0129】
本発明は、XML構文を利用して、デバイス記述スキーマを、XML文書型定義(DTD)として作成する。XMLは、構造化された情報を含む文書のためのマークアップ言語である。これは、SGMLのサブセットであり、階層的な名前付けされた値と、他の文書を参照するための高度な手段の形で、自己記述型のカスタムマークアップを提供する。XSL(Extensible Style Sheets)やXLink(Extensible Linking Language)のような同類のプロトコルとともに、XMLは、付随する文書スキーマ(文書型定義:DTD)のグループを指定し、発見し、結合する能力を提供する。しかし、HTMLとは異なり、XMLにおけるタグのセットはフレキシブルであり、タグのセマンティクスは、その文書に付随するDTDによって定義される。Resource Description Format、Dublin CoreおよびXML−Dataのような他のメタデータマークアップ言語も提案されている。
【0130】
本発明のフレームワーク内では、デバイスあるいはサービスは、自己の記述スキーマを、XML文書と、それに伴うDTDおよびスタイルシートとして作成する。このスキーマは、言語独立なサービス記述のため、ならびに、ユーザインタフェース(プログラム)をサービスオブジェクトに、およびその逆にマッピングするための、マークアップタグを提供する。また、スキーマは、サービスのインタフェースをXML/XSL定義内に組み込むので、パーサは、ユーザアプリケーションにコードをダウンロードすることを必要とせずに、これらのインタフェースを読み出すことができる。例えば、電灯スイッチのための<ON>タグは、デバイスがメソッド呼出しおよびその他のイベントをリスンするアドレスおよびポート番号を示すことが可能である。
【0131】
ユーザインタフェースをこれらのサービス記述から生成するために、XMLパーサが、クライアントユーザアプリケーションによって使用される。クライアントは、語彙的な型をユーザインタフェースウィジェットにマッピングし、XML/XSLを解析した後、ネットワークの現在のコンフィグレーションに対するユーザインタフェースを生成する。ユーザ(あるいはユーザアプリケーション)は、そのデバイスに対応する動的に生成されるUIウィジェットを単にクリックすることによって、任意のネットワークデバイスの状態を変更することができる。このアクションは、ユーザのマシン上で現在のUI状態を変更するとともに、適当なコマンド(デバイスベンダにより定義されXML文書に埋め込まれる)を実行のためにデバイスに送る。本発明の実施例では、この目的のために、JavaTMで書かれたパブリックドメインのXMLパーサと、Internet ExplorerTM 5.0のようなXML対応ウェブブラウザが使用される。
【0132】
以上、本発明について、その好ましい実施例を用いて説明したが、当業者には容易に認識されるように、本発明の技術的範囲および技術思想から離れることなく、形式および細部におけるさまざまな変更が可能である。
【図面の簡単な説明】
【図1】アクティブコンフィグレーションフレームワークのインフラストラクチャの図である。
【図2】アクティブコンフィグレーションフレームワークの全体設計図である。
【図3】2つのプラグアンドプレイブローカ間の通信を示す図である。
【図4】プラグアンドプレイブローカの内部表現を示す図である。
【図5】サービス発見(ディスカバリ)手続きを示す図である。
【図6】アクティブコンフィグレーションフレームワークの実装例の図である。
【図7】アクティブコンフィグレーションインタフェースモデルの図である。
【符号の説明】
101 ネットワーク
102 実行環境
103 ユーザアプリケーション
104 PnPブローカ
201 ゲートウェイデバイス
202 ユーザアプリケーション
203 ダミーデバイス
204 セキュリティ実施機構
205 ネットワークノード
301 PnPブローカ
302 PnPブローカインタフェース
303 PnPブローカ間プロトコル
304 サービスディスカバリ/アベイラビリティエージェント
305 サービスレジストリ
306 サービスセッション管理エージェント
307 サービスロケーションプロトコル(SLP)サービスエージェント
308 SLPユーザエージェント
404 PnPブローカ間プロトコル
406 サービスユニット
501 PnPブローカ
502 ユーザエージェント(UA)
503 PnPブローカ
504 サービスエージェント(SA)
507 ブロードキャストによるディスカバリ
508 SLPディレクトリ
509 LDAPディレクトリ
510 変換スキーマ
511 ディレクトリエージェント(DA)
512 サービス
601 テレビジョン
602 HomePNAクラスタ
603 ホームPC
604 電話機
605 レジデンシャルゲートウェイ
606 xDSLクラスタ
607 ホームPC
608 ブリッジ
609 Jiniクラスタ
610 USBクラスタ
611 スピーカ
612 ネットワークカメラ
613 X−10クラスタ
614 白熱電球
615 セキュリティマネージャ
616 イーサネットクラスタ
617 ディジタルカメラ
618 ウェブパネル
619 イーサネットハブ
620 ホームPC
701 デバイス/サービス
702 インタフェース定義
703 ユーザアプリケーション
704 変更
705 アナウンス
706 参照
1104 リモートPnPブローカ
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a method and apparatus for integrating multiple networks with different communication protocols into a single unified framework to enable user applications to discover and utilize various network devices. The invention also relates to a method for achieving dynamic adaptation and reconfiguration of network nodes in response to changes in available functions and user interaction. The invention also relates to methods by which applications, services and devices describe their capabilities and publish them to other applications, services and devices. Furthermore, the present invention allows physically different devices to connect, exchange information, negotiate data types, provide status for each operation, and achieve network plug and play. And a method for providing a platform independent and transport independent protocol.
[0002]
[Prior art]
With the advent of global networking infrastructure, large-scale deployment of distributed services and applications has become commonplace. In current and future networks, it is expected that more services will be deployed to disseminate time-sensitive information to the world and to mediate global transactions electronically. Before such distributed services become universal, new mechanisms are needed to simplify the development, debugging, deployment and evolution of such services. Such a mechanism will need to discover the necessary services and use their capabilities regardless of the underlying protocol or interface.
[0003]
A typical distributed network system, such as one that can be used at home, interconnects a variety of different devices. Because various home appliances (home devices) may inherently use different interfaces and protocols, it is almost impossible to interconnect all these devices using a single common communication protocol It is. In some cases, it is convenient to use wiring that is already installed in most homes (eg, using an existing power line for communication with an X-10 device). The transmission speed of the network to be used is limited. For example, X-10 devices such as incandescent bulbs and home security systems operate at a data rate of several bits per second. On the other hand, devices such as digital TVs, cameras, or VCRs require much higher transmission data rates. Such devices are typically interconnected using the IEEE 1394 architecture protocol, with data transfer rates reaching 400 Mb / s.
[0004]
In contrast, various home automation applications currently being developed require effective interaction of various home appliances. Therefore, to enable the effective interaction of all the different devices and services installed in the home, the different networks are integrated into a unified framework and are located in different networks. Must provide a mechanism for network entities to discover and interact with each other.
[0005]
It is also desirable to provide a user application with a means of using remote services without requiring the application to handle low level protocol specific details for various device interfaces and network protocols.
[0006]
To achieve true plug-and-play capability, the framework must provide a mechanism to automatically discover services provided by newly added devices. Within such a framework, descriptions of available network services and their network locations must be readily available to all user applications. In addition, the user application must be able to automatically reconfigure its communication interface for communication with specific devices or services that may be encountered. In addition, the framework must include a security model that performs user authorization and authentication to control access to network services.
[0007]
Jini TM Is one of the existing candidates to achieve network plug and play (Jini is a trademark of Sun Microsystems, Inc.). Jini is a set of application programming interfaces (APIs) and runtime contracts that facilitate the construction and deployment of distributed systems. Jini provides "plumbing" that handles common but different parts of distributed systems. Jini consists of a programming model and a runtime infrastructure. By defining APIs and contracts that support leases, distributed events, and distributed transactions, the programming model allows developers to build reliable distributed systems even when the underlying network is unreliable. help. The runtime infrastructure consists of a network protocol and an API that implements it to facilitate the addition, discovery, access, and deletion of devices and services on the network.
[0008]
The use of Jini provides an easy way to discover services without knowing about the underlying network technology. An improvement over Jini over other known infrastructures is that the user application can actually search for a service and let others find a host that supports that service. However, the main unresolved issue is "How do user applications automatically use services on client machines?" If the client user application is only provided with a service interface, the client must have code that can understand this service.
[0009]
For example, consider a situation where a user wants his application to browse a network for camera services. If an application finds such a service on the network, the user can click it and use it in his own application. If a user needs code to perform such a service, such code must be automatically downloaded onto the user's machine. However, the main problem associated with this approach is how user applications use such services. If the user application has an extensible interface, it can query the remote service interface to obtain its unique characteristics and enable its use. However, the definition of such an extensible interface is Jini TM Jini not within specification TM It is left to the user application that uses the service.
[0010]
Another issue is the identification of entities that define the semantics of camera services. For example, if major camera manufacturers, including Canon, Minolta, and Nikon, each provide a unique interface, the camera service will not be interoperable, and users will be able to use all three different camera services in code. Will have to provide to. Also, if Kodak is Jini TM If the camera is decided to be marketed, the user must manually change the code to include an analysis of the Kodak interface. Such an extensible interface greatly increases network traffic and client code size. It is preferable that all types of market-specific groups collectively specify an interface, which in many cases will be required, but this is not likely to be realized quickly and efficiently, especially It is extremely unrealistic for all kinds of devices used at home.
[0011]
Another limitation that has not been resolved in the known network is Jini. TM How non-Jini based application TM It is about whether the data on the base operating system can be accessed. That is, the user can, for example, Jini TM Without MS support for MS-Word TM To Jini TM Can you access the printer? Java that wants to use a Jini printer TM Even applications must rely on the operating system for access.
[0012]
For example, when a user program requests access to a print method, the following code fragment is used.
object o = Lookup (GeneralPrintService);
GeneralPrintService pservice = (GeneralPrintService) o;
pservice.print ();
[0013]
However, when this code is written, the programmer does not know if an interface named GeneralPrintService really exists at code execution time. Furthermore, if a programmer wants to print an image on multiple devices, it must anticipate multiple interfaces and print accordingly.
[0014]
Jini can be used such that user interface (UI) components are added as entries to the service's attribute list, so the client knowledge required for the service is minimal. The client need only know that the UI is represented by attributes similar to applets. Since UI can be provided as JavaBeans, through introspection and reflection, the service can provide the client with a means by which the client can use the service. . This is essentially a message exchange between the client and server and requires manual configuration. However, adding a UI component may prevent non-human clients (machines that are created and used) from using the device. Further, when the number of devices increases and the client program becomes complicated, another problem arises. In that case, the client must determine which object in the returned list is the true target. Furthermore, every Jini TM Devices or applications require all interfaces (or at least “all types of devices”) of all devices needed to communicate at the time of manufacture. As a result, Jini TM Does not actually solve the interoperability problem.
[0015]
Another existing networking system, HomeAPI, is a set of object-oriented software services and application programming interfaces (APIs) that allow applications to discover and use various home devices. The system was designed so that the user application is not involved in the protocol-specific details of the devices and networks used by the application. The HomeAPI provides a set of software objects that represent a distributed service that facilitates developing user applications that utilize the service through the use of the HomeAPI interface.
[0016]
However, the Home API does not solve the problem of discovering new devices and therefore does not provide the desired plug and play networking capabilities. Another shortcoming of HomeAPI is that it requires all network devices to provide a standard communication interface, which is not feasible in today's market.
[0017]
Other developing network initiatives such as HomePNA, HomeRF, Bluetooth, PIANO, X-10, CEBus, IEEE 1394, USB, HAVi, etc. simply provide various protocols for network connectivity. These communication protocols are well known to those skilled in the art. However, there is currently no unified framework system that solves the interoperability problems of various competing network technologies and protocols and achieves network plug and play.
[0018]
[Problems to be solved by the invention]
Thus, there is a strong and wide acceptance of a unified framework that interconnects various types of network devices and provides a uniform mechanism for device discovery and use, and there are such This is very advantageous. Such a unified framework is such that user applications can find application-to-service communication protocols, discovery of the IP address of a host connected to the device providing the desired service, and even details of the user interface of the network service While eliminating the need to incorporate such low-level details and satisfying the other requirements described above.
[0019]
[Means for Solving the Problems]
Accordingly, one object of the present invention is to overcome the above limitations of known networking systems and integrate multiple networks with different communication protocols interconnecting various devices into a single unified framework. It is to provide a method and apparatus that allows a user application to discover and utilize various network devices.
[0020]
Specifically, it is an object of the present invention to provide a method and apparatus that achieves dynamic adaptation and reconfiguration of network nodes in response to changes in available functionality and user interaction.
[0021]
Another object of the invention is to provide a way for applications, services and devices to describe their capabilities and communication interfaces and publish them to other applications, services and devices.
[0022]
Yet another object of the present invention is to achieve network plug and play by physically different devices connecting, exchanging information, negotiating data types, and providing status for each operation. It is to provide a method and apparatus for providing a platform independent and transport independent protocol.
[0023]
In order to achieve the above object and achieve the effects of the present invention, an active configuration framework system is provided. The framework of the present invention interconnects services and service users. The framework also has a plug and play broker. In the framework of the present invention, a service user uses a plug and play broker to discover, use, and communicate with a networking service.
[0024]
In the framework of the present invention, a service user communicates with a service through a plug and play broker interface independent of the communication protocol used by the device providing the service.
[0025]
The present invention also provides a gateway for registering a service with a plug and play broker.
[0026]
The present invention also provides an active configuration framework having a service agent, a user agent, and a directory agent. In the framework of the present invention, the service agent registers the service with the directory agent. The user agent then communicates the description of the requested service to the directory agent, which returns the location of the matching service.
[0027]
In the framework of the present invention, a service can consist of a device cluster and a gateway. The service agent communicates with the device cluster through this gateway.
[0028]
The present invention also provides a method for automatically reconfiguring the framework in response to the addition of a new network device. According to the method of the present invention, the service agent registers the service with the directory agent. The user agent then communicates a description of the requested service to the directory agent. Finally, the directory agent matches the description of the requested service with the description of the service it provides and returns the address of the matching service to the user agent.
[0029]
The present invention also provides a method for generating a communication interface for a service executed by a new network device added to the framework. According to the method of the present invention, the device generates a schema that describes its communication interface. This schema can be in the form of an XML (eXtensible Markup Language) document. In this case, the user application generates a communication interface using an XML language parser.
[0030]
The present invention also provides a method for controlling a network device. According to the method of the present invention, the user application edits the device description schema and returns the edited device description schema to the device. In response, the device changes state according to the edited device description schema.
[0031]
DETAILED DESCRIPTION OF THE INVENTION
A unified framework is required to achieve network plug and play across all types of distributed devices and services. The term “framework” or “substrate” as used herein refers to a system that integrates one or more networks. However, in many cases, the terms “framework”, “substrate”, and “network” are used interchangeably.
[0032]
By using the framework of the present invention, complex mechanisms for networking entity interaction need only be implemented once, regardless of the number of different physical devices in the network. In addition, these mechanisms are hidden from user applications that interact with the management broker through a device-specific gateway. The framework of the present invention is based on well-known Internet-related protocols such as SLP, HTTP, XML, JavaRMI, and IIOP, and can be implemented as an add-on to a web server, so it is easy to deploy and use. Furthermore, in the framework of the present invention, the entire service discovery process is transparent to the user application (transparent) and has no distinction to physical connections (connections). For example, plug and play devices connected to the network need not be TCP / IP based. The service usage process is also transparent and is based on the capabilities of the various devices covered and user authentication and authorization. When connecting incompatible devices, tunneling and complete data conversion may be required.
[0033]
The present invention provides an active configuration framework for facilitating device-independent information exchange. Different protocols are required for multiple devices to connect, exchange information, negotiate data types and provide status for each operation. These protocols are platform independent and can be incorporated into any device that needs to connect to other devices, regardless of their form or function. Since these protocols are also transport-independent, any device can connect to and exchange information with any other device.
[0034]
In the framework of the present invention, user-defined calculations are placed in the network as in the case of an active network. However, unlike active networks, all routing and forwarding semantics of the current Internet architecture are preserved by limiting the computing environment to the application layer. Network devices and services that make use of this framework are actually created, configured, and dynamically controlled by user applications on end systems, even when deeply integrated into the network infrastructure. Such application-defined entities can be executed at any node in the network, and individual packets can be programmed to propagate through the network and perform any action.
[0035]
[Active Configuration Framework components]
A complete active configuration architecture consists of a dummy device, a gateway device, and a PnP broker connected directly or indirectly to the network. The architecture of the active configuration framework is shown in FIG. As shown in FIG. 1, the network has one or more execution environments 102. The execution environment 102 is interconnected using a network 101 such as the Internet. The execution environment 102 acts as a network node in a sense. The execution environment 102 is a Java virtual machine or Windows known to those skilled in the art. TM It can be in the base machine. The execution environment 102 has one or more PnP brokers 104 connected to non-intelligent (ie, dummy) devices through a gateway (not shown). The user application 103 discovers, uses, and communicates with the device through the PnP broker 104. In the following, the various components of the active configuration framework system of the present invention will be described in detail.
[0036]
[Dummy device]
A dummy device is a device without a TCP / IP protocol stack, a Java virtual machine, or both. Such devices are not directly accessible from the network and require a gateway as an intermediary. Such devices need to make certain configuration choices before being installed on the network. For example, each X-10 device (such as an incandescent bulb) must be manually assigned a house code and device code before connecting to the power line network. Further, such devices do not implement security or access control for the services presented. Most of these devices have no memory or processing power and can be characterized as legacy devices that still need to be connected to the rest of the network.
[0037]
[Gateway device]
Regular network devices can interact in a peer-to-peer manner with a single network type (eg, IP or IPX). This means that a device of a certain network type can only communicate with devices of the same network type that are physically connected to the same network. The first device connects to a second device on a network not supported by the first device or to a second device running a protocol not supported by the first device; Problems arise when you need There are two approaches to solving this problem.
[0038]
The first approach is to load multiple communication stacks into a single network device. This allows the device to interact with any type of network device as long as it has an appropriate communication stack. Although the underlying transport is different, this approach works well if the device understands the entire protocol stack.
[0039]
In order to solve the problem of connecting a plurality of different devices, the framework system of the present invention uses a gateway. A gateway is a device that exists invisible in a network and converts one network type to another network type. This approach is used in embodiments of the present invention where the destination device is legacy and each source device must model the destination in order to communicate with the destination. This is the case, for example, for fax devices and e-mail devices. Rather than adding the ability for the device to interact with the legacy network, this functionality is placed at the gateway. The gateway is typically hosted on a programmable platform.
[0040]
In the framework of the present invention, when a PnP broker wishes to establish a session with a legacy (dummy) device that requires a gateway for access, the gateway hides the presence of that device from the PnP broker. Instead, the PnP broker creates a session with the gateway and passes the address of the dummy device to the gateway. From this point on, when the gateway receives data through any channel in the session, it relays the data to the remote device through the gateway-dummy link. The present invention uses two types of gateways: The generalized gateway communicates with the IP device, and the specialized gateway communicates with the non-IP device through the dummy. The specialized gateway exposes the dummy device to the network, and includes programming logic for controlling and managing the device. Furthermore, the specialized gateway implements a dummy device security policy. One gateway device can manage a plurality of dummy devices.
[0041]
[PnP broker]
The PnP broker acts as a service broker for applications, services, and devices. The PnP broker extends the Infobus concept for distributed systems and treats the entire network as a Software Bus. Infobus systems are well known to those skilled in the art. A detailed description can be found in Reaz Hoque, “Connecting JavaBeans with InfoBus”, Wiley Computer Publishing, Nov. 98. Software Bus is also well known to those skilled in the art, and Brian Oki, Manfred Pfluegl, Alex Siegel, and Dale Skeen, "The Information Bus-an architecture for extensible distributed systems", Proceedings of the 14 th Symposium on Operating Systems Principles, p. 58-68, Asheville, North Carolina, December 1993.
[0042]
A PnP broker allows networked entities to discover and use the capabilities of other networked entities (gateways or dummy). The gateway registers its capabilities with the corresponding PnP broker, and the dummy device discovers the gateway and communicates with the PnP broker through this gateway. Each type of device in the network (eg, X-10X, 1394X, USB) has a specific gateway that is connected to this device cluster at one end and connected to a PnP broker at the other end. X-10, HAVi, IEEE-1394, and USB are well-known communication protocols. If two different gateways want to interact with each other, a PnP broker can be used for communication. For example, one gateway can represent a Jini cluster while another gateway can be a gateway for an IEEE 1394 cluster using HAVi. In the framework of the present invention, the gateway communicates with passive (non-TCP / IP) devices by using a dummy designed for that architecture.
[0043]
FIG. 2 shows the overall design of the active configuration framework. The PnP broker 104 operating in the execution environment 102 communicates with the dummy device 203 and the user application 202 through the gateway 201. The gateway device 201 operates on the network node 205 within its operating system environment. Node 205 provides a security enforcement mechanism 204 to control access to gateways and services.
[0044]
Networked entities are subdivided into meaningful functions called service units. In principle, the architecture defines one meaningful function as one service unit from the point of view of the user application. The service unit can be the entire user application / service or it can be part of the user application / service. Commands, responses, and data can be exchanged between a user application and a service unit, between a service unit and a service, or between a service unit and another service unit. The service unit registers its function with the PnP broker.
[0045]
A PnP broker allows networked entities to discover and use the capabilities of other networked entities. The network connection entity can be a service user (user application). The user application discovers the service through the PnP broker and requests to use it. The PnP broker provides a transport-independent interface (referred to as a PnP broker interface) for connecting a service unit and a user application. This interface is designed to work on the TCP / IP protocol stack. A PnP broker communicates with other PnP brokers in different clusters to fulfill its role as a service broker or manager. A protocol between PnP brokers is called a PnP broker-to-broker protocol.
[0046]
Each device cluster has at most one PnP broker. When there is no local PnP broker, the user application / service unit can use a remote PnP broker (PnP broker connected to another gateway) through an Internet communication protocol such as Java RMI or HTTP. The Java RMI protocol is well known to those skilled in the art. A detailed description can be found in Downing, Troy Bryan, "Java RMI: Remote Method Invocation", IDG Books Worldwide, 1998. HTTP protocols are also well known to those skilled in the art. The description is in “Paul S. Hethmon,“ Illustrated Guide to HTTP ”, Manning Publications, 1997. Service units can also use PnP brokers directly connected to it, and between PnP brokers. It is also possible to use a remote PnP broker by using a protocol, in the network system shown in Fig. 3, the service unit 406 has services 1406 and 1402 connected to the remote PnP broker 1104 through the inter-PnP broker protocol 404. In this way, a service unit can query and use services available in service units located in different device clusters.
[0047]
[PnP broker functional components]
The internal components of the PnP broker are shown in FIG. The PnP broker typically comprises a service registry 305, a service discovery / availability agent 304, a service session management agent 306, a service location protocol (SLP) user agent 308, and an SLP service agent 307. The inter-PnP broker protocol 303 is used for communication with other PnP brokers 301. The PnP broker interface 302 provides an interface to the user application 103. The Service Location Protocol (SLP) is well known to those skilled in the art and is described in James Kempf and Pete St. Pierre, "Service Location Protocol for Enterprise Networks: Implementing and Deploying a Dynamic Service Resource Finder", John Wiley and Sons, 1999. Has been. The service registry includes one or more service records. All information in the service registry is described as XML (eXtensible Markup Language) to facilitate searching, indexing and exchange. XML is also well known to those skilled in the art, and Natanaya Pitts-Moultis and Cheryl Kirk, "XML black book", Coriolis Group Books,
1999.
[0048]
[Service Registry]
A PnP broker includes a service registry to hold information about services. At a minimum, the registry stores information about gateways and services that are directly connected to that PnP broker. As shown in FIG. 3, these services reside at the local PnP broker 104 or the remote PnP broker 1104. Furthermore, the PnP broker registry can also store information about services registered with other PnP brokers. This extended registry functionality allows the local PnP broker to maintain a local directory of services. This is important for local environments and eliminates the need for a separate “centralized” SLP directory agent in the network. For example, if the local PnP broker supports print servers, the registry may have information about all compliant print servers. Finally, this information can be used for load balancing, fault tolerance, or caching. The PnP broker service registry can also act as a network directory that provides information about all compliant devices within range of the local PnP broker, regardless of device type. In this case, one of the PnP brokers in the network will be designated as the central directory responsible for finding and registering all PnP brokers. All requests from other devices for network resources are sent to this PnP broker, which will respond to each.
[0049]
[Service Record]
A service record is a set of available service units in a networked cluster that describes available services and services requested from other PnP brokers. A service record consists of zero or more service unit records in the local cluster. The service unit record includes a service unit ID field followed by zero or more attribute records. The service unit ID field identifies the type of service unit and the service provided by that service unit. A device has only one service unit, but can also have multiple attributes. The attribute record includes an attribute ID field, its value, and access control information. Attribute records are mainly used to implement fine access control for each service or device. In addition, the attribute record stores the current state of the device and a description of the interface that can be used to change it.
[0050]
[Service Discovery / Availability Agent]
PnP brokers require a service discovery / availability agent to discover remote PnP brokers and identify available services. Service discovery is performed by comparing the requested service type specified by the local PnP broker with the service types available on the remote PnP broker. The above-mentioned Java RMI or HTTP can be used to send the requested service type from the local PnP broker to the remote PnP broker and send the response from the remote PnP broker to the local PnP broker. A specified check of the requested service type allows the PnP broker to determine the characteristics of all or specific services registered with the remote PnP broker. The service discovery / availability agent is located above the SLP user agent and the SLP service agent.
[0051]
Furthermore, the PnP broker can periodically check the availability of the service using a service discovery / availability agent. The local PnP broker requests the appropriate PnP broker to perform an availability check. In an embodiment of the present invention, the user can specify the availability check period and cancel this check.
[0052]
[Service Session Management Agent]
When a user application discovers a service or device and wants to use it, the PnP broker establishes a virtual pipe (tunnel) between the user application and the service. This is called a service session. Such tunnels can be used to exchange commands, responses and data between user applications and services. According to the organization of the device interface, these commands, responses and data have a specific format and are exchanged under a defined protocol. The PnP broker can be commanded to operate in one of the following three protocols while managing this virtual pipe.
[0053]
[Native data transfer in native packet]
The PnP broker enters the background after setting up the data pipe, thereby allowing user applications and services to manage message streams and data formats. This approach is useful when the PnP broker is used alone to discover the capabilities of other network entities, and when applications, services, and devices manage the interaction between user applications and discovered services. is there. Messages are exchanged directly between the user application and the service without the involvement of the PnP broker. Message exchange is strictly a form of native data in native packets. A user application can use the PnP broker-to-broker protocol to discover a service or request a service before requesting the service. For example, an IEEE 1394 compliant camera can send a data stream to a digital VCR using this data exchange format.
[0054]
[Native data transfer (tunneling) in PnP broker packets]
While the data format is selected and controlled by user applications and services, a PnP broker can also set up data pipes and manage message streams. This approach is useful when there is no common messaging protocol between user applications and discovered services. All messages are carried by the PnP broker-to-broker protocol. For example, an IEEE 1394 enabled camera sends a data stream through a PnP broker to digital VCRs in different clusters.
[0055]
[PnP broker data in PnP broker packets (fully functional gateway)]
A PnP broker sets up data pipes, manages message streams, and provides data format definitions for user application and service interactions. The broker also provides a common messaging protocol and common data format between user applications and discovered services. Message exchange information is contained in PnP broker data, which is formatted into packets. User application messages pass through the PnP broker, but the PnP broker does not examine the content or semantics of the message. An example of this type of interaction is an IEEE 1394 compliant device that interacts with a USB device.
[0056]
[SLP user agent]
A user agent is a process that operates on behalf of a user to establish a connection with a service. The user agent acquires service information from the service agent or directory agent.
[0057]
[SLP service agent]
A service agent is a process that operates on behalf of one or more services to publish services.
[0058]
[Protocol and interaction]
The PnP broker exposes a standardized interface that allows user applications to take advantage of network plug and play capabilities. With this PnP broker interface, applications can be written to communicate with each other using a PnP broker-to-broker protocol independent of the transport layer. This design promotes portability and provides a scalable framework for network service discovery and selection. The inter-PnP broker protocol is based on IETF Service Location Protocol v.2, and it is not necessary for the user application to know the name of the network host that supports the service. Rather, the user provides the desired service type and corresponding set of attributes to the PnP broker through the PnP broker interface. These describe the desired service for the PnP broker. Based on this description, the PnP broker uses the PnP inter-broker protocol to resolve the network address of the service, and the PnP inter-broker protocol uses the service location protocol. The PnP broker interface also handles user identification and authentication mechanisms for devices or services. Once the service is identified, the PnP broker-to-broker protocol uses Java RMI or HTTP to allow user applications to use the discovered service. Another important feature of this framework is provided by the gateway. The gateway registers the capabilities of the device with the PnP broker and allows the PnP broker to use the service through the service agent at the PnP broker.
[0059]
In summary, the protocol suite of the present invention consists of the following protocols and interfaces:
An interface between the PnP broker and the user application.
A protocol between one PnP broker and another PnP broker.
Protocol between PnP broker and gateway.
-Protocol between gateway and dummy.
[0060]
[PnP Broker Interface to User Application (PnP Broker Interface)]
The PnP broker exposes standardized APIs and interfaces to user applications for service registration, service discovery, service requests, and availability checks. In addition, the PnP broker handles user identification and authentication for the appropriate service or device.
[0061]
[Service Registration]
When necessary, the service unit or user application calls RegisterService () or UnregisterService () to register or unregister itself with the local PnP broker as a service unit or user application, respectively. After a user application or service unit is registered with the PnP broker, its functionality is included in a response to a QueryService () or SearchService () request from another user application or service unit.
[0062]
[Service discovery]
The user application calls SearchService () to request the local PnP broker to search for a PnP broker that contains a registered service unit with a particular service. The user application calls QueryService () to find out what service unit is registered and the function of the service unit registered in the PnP broker specified by the user application.
[0063]
[Service Request]
The user application or service unit calls OpenService () to request the local PnP broker to initiate a service session with a particular service unit registered with either the local PnP broker or the remote PnP broker. Additional functions are provided by the TransferData (), ReceiveData (), and CloseService () calls.
[0064]
[Availability Check]
The user application or service unit calls StartAvailabilityCheck () to periodically check with the local PnP broker whether a specific service unit registered in either the local PnP broker or the remote PnP broker is operating. Request to do.
[0065]
User identification and authentication
In the preferred embodiment, the present invention utilizes a Java application environment. This is because it provides a currently available computing platform suitable for distributed computing. In this environment, both code and data can be moved between machines. This environment has built-in security that allows code downloaded from another machine to operate with a reasonable level of reliability. Due to the strong typing in the Java application environment, identification of an object's class on a virtual machine can be performed even when the object is not generated on that machine. As a result, the network supports a fluid configuration of movable objects as needed and can call any part of the network to perform operations.
[0066]
Unauthenticated access to home devices can have serious consequences for overall framework security. Controlled access to resources is the foundation of safety and security. Thus, one embodiment of the present invention uses a Java virtual machine and Java programming environment to ensure the security of one device. Although the system can be designed to handle faulty devices, network security is a more complex issue than device security.
[0067]
Another embodiment of the invention uses the MD5 checksum of the code as a means of referencing the code and as a basic access control mechanism. MD5 is an encryption procedure that generates a checksum of a code and is used for access control. However, as the network grows, there is a need for a more flexible distribution mechanism for specifying security policies and naming code.
[0068]
The security model of the present invention is built on two concepts: principals and access control lists. Services are accessed on behalf of an entity (principal). Principals generally come from a specific user of the system. The service itself can request access to other services based on the identity of the object that implements the service. Whether or not access to the service is permitted depends on the access control list corresponding to the object.
[0069]
[Communication protocol between PnP brokers]
The inter-PnP broker communication protocol is divided into two parts. First, a set of protocols and mechanisms are used to discover new devices and services in the network. The discovery procedure is a service discovery protocol that specifies how the user application explores the network infrastructure and how the user application can register itself and its services. Based on part. On the other hand, the lookup procedure is based on a protocol that specifies how the user application queries the registry to find the services it needs in the presence or absence of a centralized registry.
[0070]
Once a service is searched, other steps may be required to use that service. In an embodiment of the present invention, the user application negotiates access to the service, including quality of service and security conditions. Furthermore, after successful negotiation of access to the service, the user application actually uses the service using Java RMI, HOP, or HTTP protocol.
[0071]
[Service Discovery / Registration Process]
Service Location Protocol (SLP) is used for both lookup and discovery. FIG. 5 shows a service discovery procedure. The SLP automatically matches a user agent (UA) 502 request with a service 512 provided by a service agent (SA) 504 without any prior configuration. The SLP handles the service announcement by the SA and the organization of the service into the SLP directory 508 managed by the directory agent (DA) 511. The SLP also provides a means for the service to notify the user application of the service capability and setting conditions.
[0072]
The UA 502 in the PnP broker 501 understands service and resource requests by the user application 103. Similarly, the SA 504 in the PnP broker 503 (which may be the same PnP broker or a different PnP broker) represents each network service and provides a service available to the UA 502. Since the SLP dynamically holds service attributes, the UA 502 can obtain current information. The service can be searched automatically by the application, or it can be presented to the user in a service browser. SLP supports existing applications and facilitates the publication and discovery of new services.
[0073]
According to the invention, services are described by gateways. The gateway sets the value of the attribute in the SA (corresponding to the service). For example, a printer can be described as a Postscript printer, as a printer that can use blue paper, or as a printer on the same floor of a user's office. The UA 502 selects an appropriate printer by specifying necessary keywords and attribute values in the request message SrvReq 505 to the DA 511, and waits for a response. DA 511 responds with a response SrvRply 505 containing the network location of the appropriate service. In a small facility, it is possible that there is no DA, in which case the request message will be sent directly to the SA. This is called discovery by broadcast (507).
[0074]
The service announces itself by registering with DA511. Service registration includes a list of all keywords describing the service and attribute value pairs (attribute and value pairs). Registration also includes a lease to the resource. Thus, after the lease expires, the service information is deleted by the DA 511. The leasing mechanism is implemented to avoid situations where service hardware is no longer available while services continue to be published forever. Explicit deregistration can also delete service information from the DA as part of the SA's orderly shutdown procedure. It is also possible for the UA to check the status, load, temperature, or other dynamic characteristics related to the service by periodically registering the current attribute information by the SA.
[0075]
In the framework of the present invention, services are classified according to their service type. Each service type defines a set of available keywords and attributes that the SA 504 makes available to describe the service. The service browser first determines all characteristics of all services available to the UA 502 by finding a service type available to the UA 502 and then querying all information published by the SA for that service type. can do.
[0076]
[Interaction between user agent and service agent]
As part of the service / device registration process, the gateway of the service unit 512 first registers the service or device with the SA 504, and then the SA 504 sends a SrvReg message 506 to the DA 511. This registration includes a service URI for a particular instance of the service and an attribute value pair that describes the service. The DA 511 can cache such registrations for various purposes. After the registration is cached, DA 511 responds with an SrvAck message. Service registration also includes a lifetime. If the service becomes unavailable but fails to deregister itself, the lifetime value allows the DA 511 to expire the cached registration. This situation should only occur if the SA 504 is unable to issue the SrvDereg message 506. During normal operation, the SA 504 periodically refreshes the service registration with subsequent SrvReg messages. Such a “refresh” message may include updated information if any value changes, but need not include a complete set of attributes.
[0077]
The UA 502 of the PnP broker 501 makes a request to the DA 511 when a service is requested. There are several ways in which UA 502 can discover DA511. In addition to statically setting the address of the DA 511 in the UA 502 at startup, the UA 502 can request the address of the DA 511 using DHCP (Dynamic Host Configuration Protocol) well known to those skilled in the art. A third option is to multicast on the link and receive DA announcements. Although these three options coexist, it is important that the SLP can operate without manual configuration. For this reason, UA 502 can use SrvReq to find DA511. SrvReq is multicast to the IANA assigned multicast address for the SLP. IANA is an Internet Assigned Numbering Authority standard well known to those skilled in the art. Since this is a multicast request, multiple unicast responses may be received. The resulting DA glue can be used for other service requests.
[0078]
Once UA 502 obtains the address of DA 511, subsequent service requests can be made directly to that entity. Taking a printer as an example, when the UA 502 tries to search for a printer service, an SrvReq is created. This message includes a service type “printer” and a list of optional attributes and values. The attribute value pair describes the type of printer requested. This message is unicast to DA 511, either preconfigured or discovered through multicast. DA 511 receives the SrvReq and performs a lookup on the cached registration to attempt to find one that matches the requested attribute and value. The SrvRply is then unicast to the requesting UA 502. This response includes zero or more service URIs depending on the match result. The user application then uses the service URI to find the printer.
[0079]
If there is no DA 511 in the facility, the PnP broker is also limited to finding the SA 504 in the raster. This may be acceptable in many small facilities, but DA511 must be used for scalable applications of PnP brokers and in large facilities with multiple clusters. In addition, because SLP DA 511 can be a gateway to LDAP-based directory 509, the PnP broker interface uses conversion schema 510 to provide a single API for all protocols.
[0080]
When the UA 502 wants to obtain a service handle, the UA 502 transmits a service type and a character string-based query of the requested attribute as a service request. When a service response is returned, this includes a URI pointing to the service. The URI contains the IP address of SA504, or else a name that DNS can resolve to an IP address. The URI also includes other information necessary for the UA 502 to use the service. For example, in the case of a printer, the queue name and the address of the computer hosting the print service are returned. The URI is used to find services in a natural way similar to traditional standards for representing resource locations. Furthermore, the character set problem can be dealt with in a standard way.
[0081]
[Interaction of PnP Broker with User Agent and Service Agent]
By using SLP, a PnP broker can make an accurate selection of appropriate services from many other published devices of the same type. This is done by requesting only services that match the keyword requested by the UA 502 and the requested attribute value. Such keywords and attribute values can be combined into Boolean expressions by AND, OR operators, common comparison operators, and by using substring matching.
[0082]
The PnP broker makes the provision of configuration information transparent to the user and facilitates the work of setting a new service. Both of these require a system administrator. After SA 504 is configured to publish services to neighboring DAs 511, UA 502 can dynamically adapt to conditions that change on the network as various services start and stop operations. For example, a web application can find it as long as a suitable printer is available, independent of the system that happens to be currently running.
[0083]
When the gateway wants to add a new device or service to the SA 504, it provides available attributes and keywords for that service. The SA 504 can programmatically register with the SLP and assign a value for the attribute based on the configuration information unique to the service. The SLP then processes the registration (publication) and allows the connection between the user application and the service to be established.
[0084]
New service types can be defined as needed. It is also possible to deploy experimental service types for limited use and then make them publicly available. This is performed using the naming authority function of the SLP. Most common service types, by default, use a service template (scheme) definition standardized by the Internet Assigned Numbering Authority (IANA). Defining an alternate service type is as easy as configuring a directory agent to use a scheme definition known to any alternate naming authority (usually a name known to the local administrator) It is. For example, in order to provide a security service at home, a service type "service: secure: Door" can be defined. Of course, user applications that utilize this type of service handle must use the service's network protocol to communicate with the "secure" service, and the information contained in this special service type's URI. Must be able to analyze. This is inherent in the natural operation of any user application / server protocol.
[0085]
[Use SLP with LDAP]
LDAPv3 (Lightweight Directory Access Protocol) is well known to those skilled in the art and is becoming popular as a general-purpose directory access protocol. LDAP has Lightweight in its name, but SLP is “lighter” than LDAP. SLP is also superior to LDAP in resource management because it provides automatic directory management and does not require inappropriate resource placement in a hierarchical, less flexible namespace. Adding new service types in SLP is much easier than in LDAP. Queries by type are more efficient with SLP than with LDAP. Attribute descriptions for existing resources can be used in SLP, but not in LDAP.
[0086]
In SLP, discovery without prior configuration is possible. In contrast, LDAP first requires knowledge of the directory address and the directory scheme used by LDAP. SLP can evolve because it allows non-standard attributes and new versions of standardized service type templates.
[0087]
Embodiments of the present invention use SLP to simplify the management of the LDAP directory and allow the SLP to return information obtained from the LDAP directory as needed. In another embodiment, the SLP is used dynamically to enter service entries in LDAP, and the SLP query is mapped to the LDAP query, and LDAP is the back end of the SLP. One advantage of such a configuration is that the user application obtains user authentication information directly from the LDAP directory.
[0088]
[Service Usage Process]
The service discovery / registration process provides a service record that is searchable by a URI provided by the service location protocol. The exchange capability between PnP brokers is provided by exchanging QueryService () messages containing service records. This query describes the requirements of the service that the user application wants to use, and requests details of the service from the remote PnP broker.
[0089]
When receiving the QueryService () message, the receiving PnP broker compares the received service record with its own service record. Thereafter, the receiving PnP broker returns a service record including the matched service record to the requesting PnP broker. This approach provides a technique for a user application to search among all service units, a specific type of service unit, or a service unit having a specific set of capabilities. After receiving the service record, the user application can initiate communication with the PnP broker to use the service or device.
[0090]
The local PnP broker requests establishment of a service session between the user application and the service by sending a message to the remote PnP broker. This message consists of a user application service handle, a remote service unit handle, a protocol ID (via native / tunnel / gateway), a requester (requester) ID, and a requester credential.
[0091]
The remote PnP broker responds with a result code that specifies whether the requested service is accepted or rejected. The remote PnP broker can also include a redirect or retry after some time. If the service is accepted, the remote PnP broker sends a service handle that identifies the start of the service session. A service session deals with data transfer between a user application and a service unit or between two service units. When the user application completes the use of the service, it requests the local PnP broker to send a “close service” message to the remote PnP broker. Further, when the user application needs to periodically determine whether the service is available, it requests each PnP broker to perform an availability check between the PnP brokers in the framework. Can do. The availability check can be performed for the entire device or for specific services provided within the device.
[0092]
[PnP broker / gateway protocol]
The PnP broker / gateway protocol is based on a simple message exchange mechanism. As described above, the gateway represents a service unit directly connected to the gateway and registers a service to be provided. The gateway also reflects changes made in the configuration of any service for the service agent in the PnP broker. This registration is based on a lease and can be renewed by either the gateway or the service agent. Registration provides current information to the service agent. When a PnP broker receives a request for a particular service, it first checks the service agent to determine whether any directly connected gateway provides the required device or service. The gateway also allows service agents to register that they are interested in a particular event in the gateway and receive notification of the occurrence of that event. Such an event can be the addition / deletion of a device / service in the network. If the service record of the service matches the requirements of the application, the user application can set up a service session between the service unit in the gateway and the user application.
[0093]
[Event notification mechanism]
In the framework of the present invention, since the user application can register an event notification request with the server, the server can detect when the new device is online or when the attribute of the device changes. Will be notified. To accomplish this, the present invention provides a mechanism for delivering event notifications to registered users.
[0094]
There are several well-known network event notification protocols such as CORBA (Common Request Broker Architecture) event service, X-Window system event, SGAP, and BSCW. For example, the CORBA event service is described in detail in Robert Orfali and Dan Harkey, “Client / Server Programming with Java and CORBA”, Wiley, 1996.
[0095]
However, the above event notification service is designed to work with a specific architecture and imposes a large code base, so it is difficult to actually use in a lightweight notification service.
[0096]
In addition to the capabilities provided for registration for notification of some types of events, the user can associate attributes with notification requests. Preferably, such notifications should be delivered reliably and ensure a perfectly ordered end-to-end delivery. However, no acknowledgment or retry is required when the notification is delivered over an unreliable transport. The user application may request that the demand side of the event provide an explicit confirmation of receipt to the supply side. For authentication, the user can digitally certify the notification to ensure the correctness and integrity of the notification.
[0097]
The framework of the present invention achieves event notification in two ways through the use of SLP. According to the first embodiment, the service agent transmits a multicast announcement (SrvReg) after the service is updated. After receiving the update, the user agent can perform a browser update and the DA can update the registration. Such usage is not explicitly forbidden with SLP use, but can cause flooding. Furthermore, this approach does not work efficiently with many services, different languages, and digital signatures. SrvReg also includes the URI and attributes of each service added / deleted / changed in the network.
[0098]
In another embodiment of the invention, the service agent announces the SAAdverts message by broadcasting to all user agents in the network. The SAAdverts message contains a list of all service types offered. After obtaining the SAAdverts, the user agent unicasts the appropriate service request to the sending service agent. Announcements from service agents are made on an exponential backoff basis.
[0099]
[Gateway / Dummy Protocol]
The gateway / dummy protocol is a special protocol that reflects the type of device integrated by the network. The network may consist of an X-10 gateway, a USB gateway, and an IEEE 1394 gateway that connect X-10, USB, and IEEE 1394 devices / services to the rest of the network, respectively. The dummy device stores a record of a type corresponding to the service record in a proprietary format. Although the gateway / dummy protocol is unique, it exposes a standardized interface to the PnP broker.
[0100]
[Example]
According to one embodiment of the present invention, the network has one or more PnP brokers. The PnP broker acts as an interface between the user and some services. In one embodiment, a PnP broker for an X-10 device provides several buttons or other user interface widgets linked to services provided by the USB device. As used herein, the term “user interface widget” includes buttons, dialogs, text windows, scales and other graphical components used to create a graphical user interface for a user application. When a button is clicked, the PnP broker simply invokes a specific service through the X-10 gateway. The following steps are required for the user application to use the newly registered service in the network according to this embodiment.
[0101]
1. An incandescent bulb is inserted into the household power outlet.
[0102]
2. Since the incandescent bulb is a dummy device, it is connected to the power line network through the X-10 device.
[0103]
3. In the home network, the PnP broker and X-10 gateway are already in operation before the introduction of new devices.
[0104]
4). The X-10 gateway periodically polls for available addresses and checks whether any devices have become active.
[0105]
5. The gateway recognizes that a new device has entered the network and registers both that device and the services provided by that device with the service agent of the PnP broker.
[0106]
6). The service agent obtains a lease to use the device. This lease must be renewed after each lease period, thereby requesting the gateway to check if the service is still available.
[0107]
7. The service agent registers the service provided by the device with the directory agent using the service location protocol.
[0108]
8). When the user wants to use the device, the user makes an inquiry and search for the requested service using the PnP broker interface. The user agent at the PnP broker then contacts the directory agent or goes directly to the service agent (if both the service agent and user agent are in one PnP broker).
[0109]
9. If the newly discovered device matches the user's device description, the service agent or directory agent returns a unique URI along with the service parameters to the user agent.
[0110]
10. The user application determines that this is a non-TCP / IP device and accordingly, the service session management agent in the PnP broker establishes a session between the user application and the device. However, in this session, command / data transfer is performed by the inter-PnP broker protocol using the PnP broker as a gateway.
[0111]
11. The interface provided by the user application also includes information regarding the execution of functions within the device.
[0112]
12 The gateway informs the service agent of changes in the state of the service and updates it.
[0113]
In FIG. 6, an exemplary home network according to one embodiment of the present invention includes power line (X-10) cluster 613, telephone line (HomePNA / xDSL) clusters 602 and 606, CAT5 (Ethernet) cluster 616, USB cluster 610. , And well-known network components such as Jini device cluster 609. Residential gateway 605 is used to interconnect various networks including Ethernet, HomePNA, xDSL, and Jini. The Ethernet cluster includes the user's home PC 620. The home PC 620 is connected to various devices such as a digital camera 617 and a web panel 618 by the Ethernet protocol. The web panel 618 is a product of NEC Corporation, and is a device that has a touchpad and provides a user with a means to easily access the Internet. The Ethernet cluster 616 communicates with the residential gateway 605 through the Ethernet hub 619. The Ethernet hub 619 also provides a home network bridge to the Internet. The home PC 620 is connected to the speaker 611 and the network camera 612 using USB wiring, and to the incandescent light bulb 614 and the security manager 615 using X-10 wiring. Further, the home network has another home PC 603 and 607, a television 601, and a telephone 604. The xDSL cluster 606 including the home PC 607 is connected to the residential gateway 605 through the bridge 608. A PnP broker running on PC 620 allows the user to search for new devices / services within a web browser based interface. This embodiment uses Microsoft Internet Explorer as the user interface. TM Use a v5.0 web browser, but other suitable browsers can be used.
[0114]
The device / service appears in the browser with configurable properties when inserted into the corresponding network. The device specific gateway stores the device / service description. If the directory agent is in the network, the directory agent handles device / service function registration. After being authorized, the user can change device properties and connect devices. The PnP broker handles user authentication to the device and data / message conversion in case of incompatibility. For example, X-10 devices 614 and 615 are dummy devices that can interact with the rest of the devices in the framework by using a gateway device on PC 620. The PnP broker can also be implemented as an add-on to the HTTP server. The user can change the state of the power line devices 614 and 615 (light on / off). If the device (eg, camera 617) is TCP / IP based, the user can perform manual settings based on the interface provided by the camera and view the images taken by the camera. The user can query the video on demand server for a list of available movies. Normally, an analog TV 601 connected to the network (using an MPEG-2 decoder on the PC 603) can also connect to a video on demand server if it uses the same type of interface. However, since the TV 601 and the network camera 612 do not share an interface, the user cannot view the camera image directly on the TV. If a Jini device (eg, a printer) is connected to the network, this device operates with the non-Jini device as if the non-Jini device was a Jini device.
[0115]
[Solutions to Jini interface problems]
The shortcomings of the Jini interface model as one of the candidates to achieve network plug and play have already been described. The present invention overcomes the disadvantages of the Jini interface described above while borrowing the Jini security model. To solve the problem of Jini's interface, the following four approaches can be used. First, standards-based interoperability can be provided. According to this approach, all services have standard APIs, and services will implement those standard APIs. The second option is sandbox-based interoperability. In this case, if a Java virtual machine having an appropriate security model is given, the service can operate independently. The third option is reflection-based interoperability. In this case, the application asks the service about its interface and affects the state of this interface through a reflection mechanism. Finally, the fourth method is implementation-based interoperability. In this case, the same person or company will manufacture both the proxy and the service.
[0116]
Unlike Jini, instead of moving code to the client and executing it in the Java virtual environment, the present invention processes the address of the service and other parameters that describe the interface of the service and passes this interface information to the client. To provide.
[0117]
One of the main advantages provided by the framework of the present invention is the dynamic adaptation and reconfiguration of end-user applications in response to changes in available functions and user interaction modes. Some interface models are based on the fact that users can only interact with “conventional” software. In such systems, the user is limited in their ability to customize the application, so the application maximizes the capabilities of the device, ie, to the user demand predicted by the service designer or to the limits of the program interface provided. , Can not be used.
[0118]
In many cases, the degree of freedom is limited by the user interface. The application state and the initial setting of the application can be operated only through the user interface, but the user interface itself does not have much freedom of setting. This is prominent in monolithic programs, and it is extremely inconvenient to provide hooks in the application state or to make the application state accessible through a well-defined external protocol. In contrast, the client / server program provides a public interaction protocol, but has two major problems. Interface specifications are often ad hoc, and only the programmer can change the application's view of network functions (by modifying the client code).
[0119]
One approach to solving the above interface problem is to allow application programs to be downloaded on the fly to a client device or computer, for example as a Java applet. However, the problem with this approach is that the end user may not be able to customize the application for interaction with a heterogeneous set of services as an associated entity. That is, this approach cannot overcome small differences in the protocol even for functionally identical services because the application is not transparent. For example, a light switch control program based on the above interface model needs to download a different application in order to use it each time a new light switch is encountered. Thus, this approach exposes functionality but is not in an easy-to-operate form.
[0120]
Another approach is to avoid the above problems by standardizing the functional interfaces of various services and requiring the application to support these interface standards. The problem with this approach is that it is impractical to enforce a number of application specific standards.
[0121]
Obviously, a different model from any of the above is preferred, i.e. a balanced model of the requirement to expose an interface and the requirement to agree on a protocol standard. The first difficulty in solving this problem is to define a single document schema that describes the available functions (interfaces) of a service, and to move related programs and user interfaces into a set of services (and vice versa). It is to associate. A second difficulty is to provide software that can generate a user interface using a document written in the above schema and implement a runtime environment when a custom user interface is not available.
[0122]
One embodiment of the present invention utilizes a component based application framework with an architecture independent document model for component description. A detailed description of such a component-based application framework can be found in David Krieger and Richard Adler, “The emergence of distributed component platforms”, IEEE Computer Magazine, p. 43-53, March 1998. This framework, by combining the features of the two basic approaches described above, enables code fragment upload / download and imposes standards for the description and manipulation of non-application specific interfaces.
[0123]
[Active configuration model of the present invention]
In the active configuration model of the present invention, an XML (eXtensible Markup Language) description is associated with all network devices. XML is used because the XML description provides a static and immutable interface description as a publication of device capabilities (on the server side). Furthermore, by manipulating such an XML service interface description, the client can use services in the framework. The framework exposes a program and user interface to each service object to provide a standard location for operations.
[0124]
FIG. 7 shows an active configuration model of the present invention. In accordance with the present invention, every device or service 701 in the network specifies its functional interface definition 702. These interface definitions are communicated to the client by announcement 705. These interface definitions are static on the server side (similar to IDL in CORBA). These interfaces are shared among all entities in the network, but can be manipulated by any user application. User applications have full control over the use of service interfaces and the metadata presented by such interfaces. If there is a change 704 in the interface or its use state by the user application 703, it is reflected in the device or service by the reference (reference) 706.
[0125]
Thus, the present invention provides a programmable infrastructure for building arbitrary network services. In one embodiment of the present invention, end user applications are dynamically adapted and reconfigured in response to changes in available functions and interaction modes. This embodiment combines the idea of a Java applet that downloads code with the benefits of standardized interface description and manipulation. In the framework of the present invention, a user (or user application generated by a machine) simply changes the state of the network or device by editing the interface description provided by the service and reflecting the edit on the device. be able to. Furthermore, the device or service is accessible through a standardized API. Unlike conventional systems characterized by trying to standardize all APIs, the framework of the present invention allows various networking device vendors to map their product descriptions to the framework. Is possible. In this way, vendors can focus on syntactic definitions and device capabilities.
[0126]
In accordance with the present invention, device descriptions are stored using declarative style XML and used in addition to application code. The main function of the XML device description is to provide data and control flow information. By exposing this control / data separation, the present invention clearly incorporates metadata into the design so that storage and manipulation are independent of the application, so that the application is designed for future changes. can do.
[0127]
Separating program / user interfaces, such as those used in the framework of the present invention, from the objects they refer to is well known to those skilled in the art. TM This is similar to the Model / View / Controller (M / V / C) architecture. More details on the model / view / controller architecture can be found in G. Krasner and ST Pope, "A Cookbook for Using the Model View Controller User Interface Paradigm in Smalltalk-80", Journal of Object Oriented Programming, August / September 1988. Has been.
[0128]
In the M / V / C architecture, data (model) is separated from data display (view) and events (controller) that manipulate the data. Similarly, a document in the system of the present invention acts as a glue that associates the data with a user interface / program for manipulating and viewing the data.
[0129]
The present invention uses the XML syntax to create a device description schema as an XML document type definition (DTD). XML is a markup language for documents that contain structured information. This is a subset of SGML that provides self-describing custom markup in the form of hierarchical named values and advanced means for referencing other documents. Along with similar protocols such as XSL (Extensible Style Sheets) and XLink (Extensible Linking Language), XML provides the ability to specify, discover and combine groups of associated document schemas (Document Type Definitions: DTDs). . However, unlike HTML, the set of tags in XML is flexible, and tag semantics are defined by the DTD that accompanies the document. Other metadata markup languages such as Resource Description Format, Dublin Core and XML-Data have also been proposed.
[0130]
Within the framework of the present invention, a device or service creates its description schema as an XML document and accompanying DTD and stylesheet. This schema provides markup tags for language-independent service descriptions and for mapping user interfaces (programs) to service objects and vice versa. The schema also incorporates service interfaces within the XML / XSL definition so that the parser can retrieve these interfaces without having to download code to the user application. For example, an <ON> tag for a light switch can indicate the address and port number on which the device listens for method calls and other events.
[0131]
An XML parser is used by the client user application to generate a user interface from these service descriptions. The client maps lexical types to user interface widgets, parses XML / XSL, and then generates a user interface for the current configuration of the network. A user (or user application) can change the state of any network device by simply clicking on the dynamically generated UI widget corresponding to that device. This action changes the current UI state on the user's machine and sends the appropriate command (defined by the device vendor and embedded in the XML document) to the device for execution. In an embodiment of the present invention, for this purpose, Java TM A public domain XML parser written in Java and Internet Explorer TM An XML-enabled web browser such as 5.0 is used.
[0132]
Although the present invention has been described with reference to preferred embodiments thereof, it will be appreciated by those skilled in the art that various changes in form and detail may be made without departing from the scope and spirit of the invention. Is possible.
[Brief description of the drawings]
FIG. 1 is a diagram of the infrastructure of an active configuration framework.
FIG. 2 is an overall design diagram of an active configuration framework.
FIG. 3 is a diagram illustrating communication between two plug and play brokers.
FIG. 4 is a diagram showing an internal representation of a plug and play broker.
FIG. 5 is a diagram showing a service discovery procedure.
FIG. 6 is a diagram of an implementation example of an active configuration framework.
FIG. 7 is a diagram of an active configuration interface model.
[Explanation of symbols]
101 network
102 execution environment
103 User application
104 PnP broker
201 Gateway device
202 User application
203 Dummy device
204 Security enforcement mechanism
205 Network node
301 PnP broker
302 PnP broker interface
303 Protocol between PnP brokers
304 Service Discovery / Availability Agent
305 Service Registry
306 Service Session Management Agent
307 Service Location Protocol (SLP) service agent
308 SLP User Agent
404 PnP broker-to-broker protocol
406 Service Unit
501 PnP broker
502 User Agent (UA)
503 PnP broker
504 Service Agent (SA)
507 Discovery by broadcast
508 SLP directory
509 LDAP directory
510 conversion schema
511 Directory Agent (DA)
512 services
601 Television
602 HomePNA cluster
603 Home PC
604 telephone
605 Residential gateway
606 xDSL cluster
607 Home PC
608 bridge
609 Jini cluster
610 USB cluster
611 Speaker
612 Network camera
613 X-10 cluster
614 Incandescent light bulb
615 Security Manager
616 Ethernet cluster
617 Digital Camera
618 Web Panel
619 Ethernet Hub
620 Home PC
701 Device / Service
702 Interface definition
703 User application
704 change
705 Announcement
See 706
1104 Remote PnP broker

Claims (15)

少なくとも1つのサービス提供手段と、少なくとも1つのユーザアプリケーションと、がネットワークに接続されたアクティブコンフィグレーションフレームワークにおいて、
前記ネットワークに接続された利用可能なサービスを識別し、サービスを要求するユーザアプリケーションと当該サービスを提供するサービス提供手段との間の通信を可能にするプラグアンドプレイブローカを設け
前記ユーザアプリケーションは、前記サービスを提供するサービス提供手段によって使用される通信プロトコルとは独立に、前記プラグアンドプレイブローカを通じて前記サービス提供手段と通信する、
ことを特徴とするアクティブコンフィグレーションフレームワーク。
In an active configuration framework in which at least one service providing means and at least one user application are connected to a network,
Providing a plug-and-play broker that identifies available services connected to the network and enables communication between a user application requesting the service and service providing means for providing the service ;
The user application communicates with the service providing means through the plug and play broker independently of a communication protocol used by the service providing means for providing the service;
An active configuration framework characterized by
前記サービス提供手段は、ゲートウェイおよびデバイスクラスタを有し、
前記ゲートウェイは、前記デバイスクラスタを前記プラグアンドプレイブローカに接続し、
前記プラグアンドプレイブローカは、前記ゲートウェイを通じて、前記デバイスクラスタと通信することを特徴とする請求項1に記載のアクティブコンフィグレーションフレームワーク。
The service providing means includes a gateway and a device cluster,
The gateway connects the device cluster to the plug and play broker;
The active configuration framework of claim 1, wherein the plug and play broker communicates with the device cluster through the gateway.
少なくとも1つのサービス提供手段と、少なくとも1つのユーザアプリケーションと、がネットワークに接続されたアクティブコンフィグレーションフレームワークにおいて、
前記ネットワークに接続された利用可能なサービスを識別し、サービスを要求するユーザアプリケーションと当該サービスを提供するサービス提供手段との間の通信を可能にするプラグアンドプレイブローカを設け、
前記サービス提供手段は、ゲートウェイおよびデバイスクラスタを有し、
前記ゲートウェイは、前記デバイスクラスタを前記プラグアンドプレイブローカに接続し、
前記プラグアンドプレイブローカは、前記ゲートウェイを通じて、前記デバイスクラスタと通信し、
前記プラグアンドプレイブローカは、第1の通信プロトコルを用いて前記ゲートウェイに接続され、
前記ゲートウェイは、異なる第2の通信プロトコルを用いて前記デバイスクラスタに接続され、
前記ゲートウェイは、前記第1の通信プロトコルと前記第2の通信プロトコルの間の変換を行う
ことを特徴とするアクティブコンフィグレーションフレームワーク。
In an active configuration framework in which at least one service providing means and at least one user application are connected to a network,
Providing a plug-and-play broker that identifies available services connected to the network and enables communication between a user application requesting the service and service providing means for providing the service;
The service providing means includes a gateway and a device cluster,
The gateway connects the device cluster to the plug and play broker;
The plug and play broker communicates with the device cluster through the gateway;
The plug and play broker is connected to the gateway using a first communication protocol;
The gateway is connected to the device cluster using a different second communication protocol;
The gateway performs conversion between the first communication protocol and the second communication protocol ;
An active configuration framework characterized by
少なくとも1つのサービス提供手段と、少なくとも1つのユーザアプリケーションと、がネットワークに接続されたアクティブコンフィグレーションフレームワークにおいて、
前記ネットワークに接続された利用可能なサービスを識別し、サービスを要求するユーザアプリケーションと当該サービスを提供するサービス提供手段との間の通信を可能にするプラグアンドプレイブローカを設け、
前記サービス提供手段は、ゲートウェイおよびデバイスクラスタを有し、
前記ゲートウェイは、前記デバイスクラスタを前記プラグアンドプレイブローカに接続し、
前記プラグアンドプレイブローカは、前記ゲートウェイを通じて、前記デバイスクラスタと通信し、
前記ゲートウェイは、前記プラグアンドプレイブローカ内の、前記サービスに対応する属性を設定することによって、前記サービスを前記プラグアンドプレイブローカに登録する
ことを特徴とするアクティブコンフィグレーションフレームワーク。
In an active configuration framework in which at least one service providing means and at least one user application are connected to a network,
Providing a plug-and-play broker that identifies available services connected to the network and enables communication between a user application requesting the service and service providing means for providing the service;
The service providing means includes a gateway and a device cluster,
The gateway connects the device cluster to the plug and play broker;
The plug and play broker communicates with the device cluster through the gateway;
The gateway registers the service in the plug and play broker by setting an attribute corresponding to the service in the plug and play broker ;
An active configuration framework characterized by
前記ゲートウェイは、前記プラグアンドプレイブローカからの要求に応答して、前記プラグアンドプレイブローカにおける前記サービスのステータスを周期的に更新することを特徴とする請求項に記載のアクティブコンフィグレーションフレームワーク。The active configuration framework according to claim 2 , wherein the gateway periodically updates the status of the service in the plug-and-play broker in response to a request from the plug-and-play broker. 前記ユーザアプリケーションは、前記プラグアンドプレイブローカから離れたリモートユーザアプリケーションであり、
前記リモートユーザアプリケーションは、インターネット通信プロトコルを通じて前記プラグアンドプレイブローカと通信することを特徴とする請求項1に記載のアクティブコンフィグレーションフレームワーク。
The user application is a remote user application remote from the plug and play broker;
The active configuration framework of claim 1, wherein the remote user application communicates with the plug and play broker through an internet communication protocol.
前記アクティブコンフィグレーションフレームワークは、他のプラグアンドプレイブローカをさらに有し、
前記ユーザアプリケーションは、前記他のプラグアンドプレイブローカと通信し、
前記他のプラグアンドプレイブローカは、前記プラグアンドプレイブローカと通信して、前記少なくとも1つのユーザアプリケーションが前記サービスを利用することを可能にすることを特徴とする請求項1に記載のアクティブコンフィグレーションフレームワーク。
The active configuration framework further includes another plug and play broker,
The user application communicates with the other plug and play broker;
The active configuration of claim 1, wherein the other plug-and-play broker communicates with the plug-and-play broker to allow the at least one user application to use the service. Framework.
少なくとも1つのサービス提供手段と、少なくとも1つのユーザアプリケーションと、がネットワークに接続されたアクティブコンフィグレーションフレームワークにおいて、
前記ネットワークに接続された利用可能なサービスを識別し、サービスを要求するユーザアプリケーションと当該サービスを提供するサービス提供手段との間の通信を可能にするプラグアンドプレイブローカを設け、
前記アクティブコンフィグレーションフレームワークは、他のプラグアンドプレイブローカをさらに有し、
前記ユーザアプリケーションは、前記他のプラグアンドプレイブローカと通信し、
前記他のプラグアンドプレイブローカは、前記プラグアンドプレイブローカと通信して、前記少なくとも1つのユーザアプリケーションが前記サービスを利用することを可能にし、
前記アクティブコンフィグレーションフレームワークは、ディレクトリエージェントをさらに有し、
前記プラグアンドプレイブローカは、サービスロケーションプロトコル(SLP)を用いて、前記サービスを前記ディレクトリエージェントに登録する
ことを特徴とするアクティブコンフィグレーションフレームワーク。
In an active configuration framework in which at least one service providing means and at least one user application are connected to a network,
Providing a plug-and-play broker that identifies available services connected to the network and enables communication between a user application requesting the service and service providing means for providing the service;
The active configuration framework further includes another plug and play broker,
The user application communicates with the other plug and play broker;
The other plug and play broker communicates with the plug and play broker to allow the at least one user application to use the service;
The active configuration framework further comprises a directory agent;
The plug and play broker registers the service with the directory agent using a service location protocol (SLP) ;
An active configuration framework characterized by
前記プラグアンドプレイブローカは、サービスレジストリを有し、
前記サービスレジストリは、前記サービスおよび他のネットワークサービスに関する情報を含み、
前記少なくとも1つのユーザアプリケーションは、前記サービスレジストリを用いて、前記サービスおよび前記他のネットワークサービスを発見することを特徴とする請求項1に記載のアクティブコンフィグレーションフレームワーク。
The plug and play broker has a service registry;
The service registry includes information about the service and other network services;
The active configuration framework of claim 1, wherein the at least one user application uses the service registry to discover the service and the other network service.
少なくとも1つのサービス提供手段と、少なくとも1つのユーザアプリケーションと、がネットワークに接続されたアクティブコンフィグレーションフレームワークにおいて、
前記ネットワークに接続された利用可能なサービスを識別し、サービスを要求するユーザアプリケーションと当該サービスを提供するサービス提供手段との間の通信を可能にするプラグアンドプレイブローカを設け、
前記アクティブコンフィグレーションフレームワークは、他のプラグアンドプレイブローカをさらに有し、
前記他のプラグアンドプレイブローカは、前記プラグアンドプレイブローカに問合せを送ることによって、前記サービスを発見する
ことを特徴とするアクティブコンフィグレーションフレームワーク。
In an active configuration framework in which at least one service providing means and at least one user application are connected to a network,
Providing a plug-and-play broker that identifies available services connected to the network and enables communication between a user application requesting the service and service providing means for providing the service;
The active configuration framework further includes another plug and play broker,
The other plug and play broker discovers the service by sending a query to the plug and play broker ;
An active configuration framework characterized by
少なくとも1つのサービス提供手段と、少なくとも1つのユーザアプリケーションと、がネットワークに接続されたアクティブコンフィグレーションフレームワークにおいて、
前記ネットワークに接続された利用可能なサービスを識別し、サービスを要求するユーザアプリケーションと当該サービスを提供するサービス提供手段との間の通信を可能にするプラグアンドプレイブローカを設け、
前記アクティブコンフィグレーションフレームワークは、他のプラグアンドプレイブローカおよびディレクトリエージェントをさらに有し、
(a)前記少なくとも1つのユーザアプリケーションは、要求されるサービスの記述を前記他のプラグアンドプレイブローカに送り、
(b)前記他のプラグアンドプレイブローカは、前記ディレクトリエージェントと通信し、
(c)前記ディレクトリエージェントは、前記要求されるサービスの記述に一致するサービスのアドレスを前記他のプラグアンドプレイブローカに返し、
(d)前記他のプラグアンドプレイブローカは、前記アドレスを用いて、前記ユーザアプリケーションと前記サービス提供手段の間にセッションを確立する
ことを特徴とするアクティブコンフィグレーションフレームワーク。
In an active configuration framework in which at least one service providing means and at least one user application are connected to a network,
Providing a plug-and-play broker that identifies available services connected to the network and enables communication between a user application requesting the service and service providing means for providing the service;
The active configuration framework further includes other plug and play brokers and directory agents;
(A) the at least one user application sends a description of the requested service to the other plug and play broker;
(B) the other plug and play broker communicates with the directory agent;
(C) the directory agent returns to the other plug-and-play broker a service address that matches the description of the requested service;
(D) The other plug-and-play broker establishes a session between the user application and the service providing unit using the address .
An active configuration framework characterized by
少なくとも1つのサービス提供手段と、少なくとも1つのユーザアプリケーションと、がネットワークに接続されたアクティブコンフィグレーションフレームワークにおいて、
前記ネットワークに接続された利用可能なサービスを識別し、サービスを要求するユーザアプリケーションと当該サービスを提供するサービス提供手段との間の通信を可能にするプラグアンドプレイブローカを設け、
前記プラグアンドプレイブローカは、サービスレジストリを有し、
前記サービスレジストリは、前記サービスおよび他のネットワークサービスに関する情報を含み、
前記少なくとも1つのユーザアプリケーションは、前記サービスレジストリを用いて、前記サービスおよび前記他のネットワークサービスを発見し、
(1)前記サービス提供手段は、ゲートウェイおよびデバイスクラスタを有し、
(2)前記ゲートウェイは、前記デバイスクラスタを前記プラグアンドプレイブローカに接続し、
(3)前記プラグアンドプレイブローカは、前記ゲートウェイを通じて、前記デバイスクラスタと通信し、
(4)前記ゲートウェイは、前記プラグアンドプレイブローカ内の、前記サービスに対応する属性を設定することによって、前記サービスを前記プラグアンドプレイブローカに登録し、
(5)前記プラグアンドプレイブローカは、前記サービスを前記ディレクトリエージェントに登録する
ことを特徴とするアクティブコンフィグレーションフレームワーク。
In an active configuration framework in which at least one service providing means and at least one user application are connected to a network,
Providing a plug-and-play broker that identifies available services connected to the network and enables communication between a user application requesting the service and service providing means for providing the service;
The plug and play broker has a service registry;
The service registry includes information about the service and other network services;
The at least one user application uses the service registry to discover the service and the other network service;
(1) The service providing means includes a gateway and a device cluster,
(2) The gateway connects the device cluster to the plug and play broker,
(3) The plug and play broker communicates with the device cluster through the gateway;
(4) The gateway registers the service in the plug and play broker by setting an attribute corresponding to the service in the plug and play broker,
(5) The plug and play broker registers the service with the directory agent .
An active configuration framework characterized by
少なくとも1つのサービス提供手段と、少なくとも1つのユーザアプリケーションと、がネットワークに接続されたアクティブコンフィグレーションフレームワークにおいて、
前記ネットワークに接続された利用可能なサービスを識別し、サービスを要求するユーザアプリケーションと当該サービスを提供するサービス提供手段との間の通信を可能にするプラグアンドプレイブローカを設け、
前記プラグアンドプレイブローカは、
(a)前記ユーザアプリケーションと通信するプラグアンドプレイブローカインタフェースと、
(b)前記プラグアンドプレイブローカと、前記フレームワーク内の他のプラグアンドプレイブローカとの間の通信のためのプラグアンドプレイブローカ間プロトコルと、
(c)前記サービスに関する情報を格納する少なくとも1つのサービスレコードを有するサービスレジストリと、
(d)前記サービスのネットワークアドレスを探索し前記サービスのアベイラビリティステータスを取得するサービスディスカバリ/アベイラビリティエージェントと、
(e)前記サービス提供手段と前記ユーザアプリケーションとの間の通信セッションを確立するサービスセッション管理エージェントと、
(f)前記サービスのアドレスを探索するサービスロケーションプロトコルユーザエージェントと、
(g)前記サービスを公表するサービスロケーションプロトコルサービスエージェントとを有する
ことを特徴とするアクティブコンフィグレーションフレームワーク。
In an active configuration framework in which at least one service providing means and at least one user application are connected to a network,
Providing a plug-and-play broker that identifies available services connected to the network and enables communication between a user application requesting the service and service providing means for providing the service;
The plug and play broker is
(A) a plug and play broker interface communicating with the user application;
(B) a plug-and-play broker-to-broker protocol for communication between the plug-and-play broker and other plug-and-play brokers in the framework;
(C) a service registry having at least one service record storing information about the service;
(D) a service discovery / availability agent that searches for the network address of the service and obtains the availability status of the service;
(E) a service session management agent that establishes a communication session between the service providing means and the user application;
(F) a service location protocol user agent searching for the address of the service;
(G) having a service location protocol service agent that publishes the service ;
An active configuration framework characterized by
前記少なくとも1つのサービスレコードは、前記サービスのタイプおよび複数のサービス属性レコードを格納するサービス識別フィールドを有し、
前記サービス属性レコードは、前記サービス属性のタイプを格納する属性識別フィールドと、前記サービス属性の値を格納する属性値フィールドと、前記サービスのアクセス制御情報を格納するアクセス制御フィールドとを有する
ことを特徴とする請求項13に記載のアクティブコンフィグレーションフレームワーク。
The at least one service record has a service identification field storing the type of service and a plurality of service attribute records;
The service attribute record has an attribute identification field that stores the type of the service attribute, an attribute value field that stores the value of the service attribute, and an access control field that stores access control information of the service .
The active configuration framework according to claim 13 .
少なくとも1つのサービス提供手段および少なくとも1つのユーザアプリケーションを含むアクティブコンフィグレーションフレームワークにおけるプラグアンドプレイブローカにおいて、
(a)前記ユーザアプリケーションと通信するプラグアンドプレイブローカインタフェースと、
(b)前記フレームワーク内の他のプラグアンドプレイブローカとの間の通信のためのプラグアンドプレイブローカ間プロトコルと、
(c)前記サービスに関する情報を格納する少なくとも1つのサービスレコードを有するサービスレジストリと、
(d)前記サービスのネットワークアドレスを探索し前記サービスのアベイラビリティステータスを取得するサービスディスカバリ/アベイラビリティエージェントと、
(e)前記サービス提供手段と前記ユーザアプリケーションとの間の通信セッションを確立するサービスセッション管理エージェントと、
(f)前記サービスのアドレスを探索するサービスロケーションプロトコルユーザエージェントと、
(g)前記サービスを公表するサービスロケーションプロトコルサービスエージェントと、
を有することを特徴とするプラグアンドプレイブローカ。
In a plug and play broker in an active configuration framework comprising at least one service providing means and at least one user application,
(A) a plug and play broker interface communicating with the user application;
(B) a plug-and-play broker-to-broker protocol for communication with other plug-and-play brokers in the framework;
(C) a service registry having at least one service record storing information about the service;
(D) a service discovery / availability agent that searches for the network address of the service and obtains the availability status of the service;
(E) a service session management agent that establishes a communication session between the service providing means and the user application;
(F) a service location protocol user agent searching for the address of the service;
(G) a service location protocol service agent that publishes the service;
A plug-and-play broker characterized by comprising:
JP2000371402A 2000-04-10 2000-12-06 Framework having plug and play function and reconfiguration method thereof Expired - Fee Related JP3711866B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US54639700A 2000-04-10 2000-04-10
US09/546397 2000-04-10

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2004152883A Division JP3915797B2 (en) 2000-04-10 2004-05-24 Framework having plug and play function and reconfiguration method thereof

Publications (2)

Publication Number Publication Date
JP2001290724A JP2001290724A (en) 2001-10-19
JP3711866B2 true JP3711866B2 (en) 2005-11-02

Family

ID=24180256

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2000371402A Expired - Fee Related JP3711866B2 (en) 2000-04-10 2000-12-06 Framework having plug and play function and reconfiguration method thereof
JP2004152883A Expired - Fee Related JP3915797B2 (en) 2000-04-10 2004-05-24 Framework having plug and play function and reconfiguration method thereof

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2004152883A Expired - Fee Related JP3915797B2 (en) 2000-04-10 2004-05-24 Framework having plug and play function and reconfiguration method thereof

Country Status (1)

Country Link
JP (2) JP3711866B2 (en)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343428B2 (en) 2001-09-19 2008-03-11 International Business Machines Corporation Dynamic, real-time integration of software resources through services of a content framework
US7035944B2 (en) 2001-09-19 2006-04-25 International Business Machines Corporation Programmatic management of software resources in a content framework environment
JP4518719B2 (en) 2001-12-10 2010-08-04 ソニー株式会社 Data processing system, information processing apparatus and method, and computer program
WO2003058575A1 (en) 2002-01-08 2003-07-17 Koninklijke Philips Electronics N.V. Controlling application devices simultaneously
US7603469B2 (en) 2002-01-15 2009-10-13 International Business Machines Corporation Provisioning aggregated services in a distributed computing environment
JP3756457B2 (en) * 2002-03-19 2006-03-15 株式会社エヌ・ティ・ティ・データ Directory function device with access control and program
US7987489B2 (en) 2003-01-07 2011-07-26 Openpeak Inc. Legacy device bridge for residential or non-residential networks
JP4284499B2 (en) * 2003-03-07 2009-06-24 ソニー株式会社 Device management method and device management system
JP2004289561A (en) * 2003-03-24 2004-10-14 Sony Corp Management method of network connection, and electronic equipment
JP2010055620A (en) * 2003-05-28 2010-03-11 Sharp Corp Application processing apparatus
JP4818590B2 (en) * 2003-05-28 2011-11-16 シャープ株式会社 Service using terminal, mobile phone terminal, television receiver terminal, connector providing server, and data structure of connector data
EP2270622B1 (en) 2003-06-05 2016-08-24 Intertrust Technologies Corporation Interoperable systems and methods for peer-to-peer service orchestration
US7418486B2 (en) * 2003-06-06 2008-08-26 Microsoft Corporation Automatic discovery and configuration of external network devices
US7467399B2 (en) 2004-03-31 2008-12-16 International Business Machines Corporation Context-sensitive confidentiality within federated environments
JP4645164B2 (en) 2004-11-12 2011-03-09 セイコーエプソン株式会社 Network device control for network type plug and play
US8418132B2 (en) 2005-04-29 2013-04-09 Microsoft Corporation Application description language
US8132148B2 (en) 2005-04-29 2012-03-06 Microsoft Corporation XML application framework
US8275793B2 (en) 2005-04-29 2012-09-25 Microsoft Corporation Transaction transforms
US7882256B2 (en) 2005-05-24 2011-02-01 Panasonic Corporation Gateway device and control device
WO2006126355A1 (en) * 2005-05-24 2006-11-30 Matsushita Electric Industrial Co., Ltd. Gateway device and control device
EP1763198A3 (en) 2005-09-07 2007-04-04 Seiko Epson Corporation Control of network plug-and-play compliant device
JP4768369B2 (en) * 2005-09-14 2011-09-07 日立オムロンターミナルソリューションズ株式会社 Device control system
KR100717032B1 (en) 2005-09-30 2007-05-10 삼성전자주식회사 Method and apparatus for presenting an entity not according to UPnP as UPnP device or content
EA012918B1 (en) 2005-10-18 2010-02-26 Интертраст Текнолоджиз Корпорейшн Digital rights management engine systems and methods
US9626667B2 (en) 2005-10-18 2017-04-18 Intertrust Technologies Corporation Digital rights management engine systems and methods
EP1793565A1 (en) 2005-12-02 2007-06-06 Seiko Epson Corporation Network plug-and-play compliant network relay control
JP2007179119A (en) * 2005-12-27 2007-07-12 Hitachi Ltd Computer system
JP4349391B2 (en) 2006-08-07 2009-10-21 セイコーエプソン株式会社 Image display system
US20090083765A1 (en) * 2007-09-20 2009-03-26 Microsoft Corporation Accessing device-hosted services from scripting and other programming environments
JP2009205612A (en) * 2008-02-29 2009-09-10 Kddi R & D Laboratories Inc Service state presentation system and service state presentation method
US8606967B2 (en) * 2008-06-17 2013-12-10 Qualcomm Incorporated Methods and apparatus for proxying of devices and services using overlay networks
JP5611576B2 (en) * 2009-12-03 2014-10-22 ソニー株式会社 Information processing apparatus, information processing method, and program
JP6047553B2 (en) 2011-04-11 2016-12-21 インタートラスト テクノロジーズ コーポレイション Systems and methods for information security
JP2012022715A (en) * 2011-10-21 2012-02-02 Sony Corp Information processing apparatus, information processing method and program
JP6268278B2 (en) * 2013-05-06 2018-01-24 コンヴィーダ ワイヤレス, エルエルシー Semantic support and management in M2M systems
EP3014442A2 (en) * 2013-06-26 2016-05-04 Amazon Technologies Inc. Managing client access to a plurality of computing systems
JP2014002781A (en) * 2013-09-02 2014-01-09 Sony Corp Information processing apparatus, information processing method and program
US10708376B2 (en) 2015-02-20 2020-07-07 Convida Wireless, Llc Message bus service directory
CN117716307A (en) * 2021-09-15 2024-03-15 西门子股份公司 Industrial data integration apparatus, method and computer readable storage medium

Also Published As

Publication number Publication date
JP2004334896A (en) 2004-11-25
JP3915797B2 (en) 2007-05-16
JP2001290724A (en) 2001-10-19

Similar Documents

Publication Publication Date Title
JP3711866B2 (en) Framework having plug and play function and reconfiguration method thereof
US8423671B2 (en) Middleware device and method of supporting compatibility of devices in home network
US7668908B2 (en) System and method for generalized and distributed scalable eventing system
US6842903B1 (en) System and method for providing dynamic references between services in a computer system
US7647394B2 (en) Scaling UPnP v1.0 device eventing using peer groups
KR100562907B1 (en) Apparatus and method for managing media contents all together
US7171475B2 (en) Peer networking host framework and hosting API
JP5048064B2 (en) Mapping of Universal Plug and Play discovery items to SMB locations
US7526482B2 (en) System and method for enabling components on arbitrary networks to communicate
US20030191802A1 (en) Reshaped UDDI for intranet use
EP1253766A2 (en) Peer group name server
US20060184693A1 (en) Scaling and extending UPnP v1.0 device discovery using peer groups
KR101357704B1 (en) Methods and apparatus for a plug-in model for publishing structured meta-data based discovery
US9323587B2 (en) Method and system for automatic detecting and resolving APIs
US20040133896A1 (en) Network device application interface
EP1198102B1 (en) Extendable provisioning mechanism for a service gateway
US7590618B2 (en) System and method for providing location profile data for network nodes
JP4799005B2 (en) Information processing device
KR100888478B1 (en) Method of Processing Action, Method of Controlling Controlled Device, Controlled Device and Control Point
KR20080000310A (en) System for sharing information between home-network and method thereof
US7685303B2 (en) Object-oriented discovery framework
US7133872B2 (en) Method and system for unifying component metadata
KR100665436B1 (en) File server management method by home network
Moller et al. Enhancing Jini's lookup service using XML-based service templates
Hsu et al. Widget-based framework for web service discovery on multiple home social network

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040323

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041102

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050726

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050808

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080826

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090826

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090826

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100826

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110826

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110826

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120826

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130826

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees