(57)【要約】【課題】ネットワーク接続されたシステムの全体にソフトウェアを配布する課題に関する。より詳細には、コードをデータ生産装置に転送するシステムおよび方法を提供する。【解決手段】データをデータ生産装置からデバイスに送り、デバイス上のデータに対する処理操作を実行する（ステップ２００）。データの特性を解析して（ステップ２０２）、データ生産装置上での処理操作の実行によってリソース使用量を低減することが可能かどうかの判定を試みる（ステップ２０４）。低減することが可能であると判定される場合（ステップ２０６）、処理操作のコードをデータ生産装置に転送し（ステップ２０８）、データ生産装置上で処理操作のコードを実行する（ステップ２１０）。【選択図】図２
2008097603.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク接続されたシステムにおいてコードをデータ生産装置に選択的に転送する方法であって、前記データ生産装置が、データを生成し、前記データをデバイスに送り、前記方法は、
前記デバイス上で前記データ生産装置から前記データを受け取り、前記デバイス上のコードが前記データに対して処理操作を実行し、
前記データの特性を解析して、前記データ生産装置上での前記処理操作の実行によってリソース使用量を低減することが可能かどうかを判定し、
低減可能であると判定した場合、
前記コードを前記デバイスから前記データ生産装置に転送し、
前記コードを前記データ生産装置上で実行し、
前記データ生産装置上で前記コードを実行することによって、前記ネットワーク接続されたシステムにおけるリソース使用量を最適化することが可能である、
前記方法。
【請求項２】
前記処理操作を実行することが、
前記データを前処理することと、
前記データを圧縮することと、
前記データから項目を除去することと、
前記データに項目を追加することと、
前記データをフィルタリングすることと、
前記データを第１のフォーマットから第２のフォーマットに変換することと、および
前記データからの項目を前記コードが実行される場所にアーカイブすることと
のうちの１つ以上を含む、請求項１に記載の方法。
【請求項３】
前記データ生産装置上で前記コードを実行することにより、前記データ生産装置から前記デバイスに転送されるデータの量が低減され、
前記転送されるデータの量が低減されることによって、電力が節約されること、および、消費されるネットワーク帯域幅が狭くなることのうち少なくとも１つがなされる、請求項２に記載の方法。
【請求項４】
前記データ生産装置と前記デバイスとが、無線ネットワークを介して通信する、請求項３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主として、ネットワーク接続されたシステムの全体にソフトウェアを配布する課題に関する。より具体的には、本発明は、コードをデータ生産装置に転送するシステムおよび方法に関する。
【背景技術】
【０００２】
無線センサネットワークは、災害復旧、本土防衛、インフラストラクチャ監視、生息環境監視、および浸透しつつあるコンピュータ環境などを含む、広範囲の分野において用途を見出している。無線センサネットワークは、典型的には、物理的環境内に埋め込まれて、情報を収集し、ローカル計算を実行し、無線ネットワークを介して他のデバイスおよびホストと通信するデバイスの集合からなる。
【０００３】
無線センサネットワークを構成するデバイスは、従来のネットワークにおけるデバイスより厳しいリソース制約を有することが多いため、無線センサネットワークには独特の問題がある。例えば、ネットワーク帯域幅は狭いことが多く、センサは、大量のデータを転送するだけの電力をほとんど有さない場合がある。このような制約は、例えば、データ品質やセンサノード寿命に悪影響を及ぼすことによって、センサネットワークのパフォーマンスを損なう。さらに、異なる複数のセンサが同種のデータを別々のフォーマットで生成する可能性がある（例えば、明確に規定された規格がない状態で様々な製造業者によって異種のセンサが生産されている場合）。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、必要とされているのは、前述の問題と無縁であって、ネットワーク接続されたシステムからデータを効率的に収集することを容易にするシステムおよび方法である。
【課題を解決するための手段】
【０００５】
本発明の一実施形態は、ネットワーク接続されたシステムにおいてコードをデータ生産装置に選択的に転送するシステムを提供する。このシステムでは、データ生産装置は、データを生成し、その後、そのデータをデバイスに送る。デバイスは、データ生産装置からデータを受け取り、デバイス上でコードを用いて、データに対する処理操作を実行する。次に、システムは、データの特性を解析して、データ生産装置上での処理操作の実行によってリソース使用量を低減することが可能かどうかを判定する。低減が可能であれば、システムは、コードをデバイスからデータ生産装置に転送し、その後、データ生産装置上でコードを実行する。データ生産装置上でコードを実行することによって、システムは、ネットワークシステムにおけるリソース使用量を最適化することが可能である。
【０００６】
本実施形態の変形形態では、処理操作は、データを前処理すること、データを圧縮すること、データから項目を除去すること、データに項目を追加すること、データをフィルタリングすること、データを第１のフォーマットから第２のフォーマットに変換すること、および、データからの項目を、コードが実行される場所にアーカイブすることのうち少なくとも一つを含む。
【０００７】
別の変形形態では、システムは、データ生産装置上でコードを実行して、データ生産装置からデバイスに転送されるデータの量を低減し、それによって、電力を節約すること、およびネットワーク帯域幅の消費を少なくすることのうち少なくとも一つがなされる。
【０００８】
別の変形形態では、データ生産装置とデバイスとは、無線ネットワークを介して通信する。
【０００９】
本実施形態の変形形態では、システムは、位置情報および経路情報を管理する分散フレームワークを用いて、データの特性を解析する。この分散フレームワークは、同時に実行される分散アプリケーションの集合の要求および特性を監視して、コードを移動することによってシステムパフォーマンスおよびリソース使用量のうち少なくとも一つが改善されるかどうかを判定する。
【００１０】
別の変形形態では、コードは、デバイスおよび中央リポジトリのうち少なくとも一つにキャッシュされることが可能なアプリケーションバイナリである。システムは、コードをデバイスからデータ生産装置に転送する際には、アプリケーションバイナリがデータ生産装置上で既に使用可能かどうかを確認すること、および、データ生産装置がアプリケーションバイナリを見つけて取得することを可能にする情報をデータ生産装置に送ることのうち少なくとも一つが可能である。
【００１１】
別の変形形態では、システムは、コードをデバイスからデータ生産装置に転送している間にデバイスに関するイベントを受け取る場合に、このイベントに関連する情報を、コードに追加してデータ生産装置に転送する。システムは、このような情報を転送することにより、そうされなければ無視され得るイベントを、コードの転送中に配信および処理のうち少なくとも一つをすることが可能である。
【００１２】
別の変形形態では、システムは、イベントに関連する情報を転送するために、デバイス上でイベントを処理し、データ生産装置上でコードの実行が開始されるときに、状態情報をデータ生産装置に転送すること、イベントをデバイスに保存し、その後、データ生産装置上でコードの実行が開始されるときに、イベントをデータ生産装置に転送すること、および、イベントが、データ生産装置およびデバイスの両方において受け取られた重複イベントであることを検出して、イベントに関連する情報をデータ生産装置に転送することを不要にすることのうち少なくとも一つを行う。
【００１３】
別の変形形態では、システムは、コードをデバイスからデータ生産装置に転送するプロセスを、最初にデバイス上でのコード実行を停止することによって開始する。システムは、転送プロセスの間に、コードのコピーをデバイス上に保持し、コードを転送する間にエラーが発生したかどうかを判定する。エラーが発生した場合、システムは、デバイス上でコードを再起動する。
【００１４】
本実施形態の変形形態では、データ生産装置は、制限のあるリソースを有するコンピュータ装置であり、そのリソースは、限られた電源、限られた帯域幅および高い遅延のうち少なくとも一つを有するネットワーク接続、計算能力に制限のあるプロセッサ、および小容量メモリのうちの１つ以上を含む。
【００１５】
本実施形態の変形形態では、データ生産装置は、センサネットワーク内のセンサである。データ生産装置は、メディアサーバおよびデータベースを含むことも可能であることに注目されたい。
【発明を実施するための最良の形態】
【００１６】
データ生産装置へのコードの転送
高性能コンピュータ装置のためのモノリシックオペレーティングシステムは、広範な装置および機能性をサポートする大規模なコードベースを含む場合が多い。これに対し、無線センサデバイスに備えられているのは、典型的には、計算能力が制限されたプロセッサ、小容量メモリ、限られた電源、および／または、限られた帯域幅および／または高い遅延を有するネットワーク接続である。データを生産するセンサ装置は、一般に高価ではないため、多数の装置を配備することが可能である。このような装置は、典型的には、新しいコードをオンデマンドで（例えば、新しいアプリケーションをサポートするため、あるいは、インストールされているアプリケーションを更新するために）ダウンロードするよう備えられた、非常に制限のあるオペレーティングシステムを含む。
【００１７】
本発明の一実施形態では、分散フレームワークが、ネットワーク接続されたシステムのためのモバイルエージェントアーキテクチャを提供し、そこでは、アーキテクチャ内の各エージェントは、ユーザの代理としてタスクを遂行するために特定の自律性（autonomy）で動作することが可能なソフトウェアエンティティである。このフレームワークは、分散様式で同時に実行される複数のアプリケーションをサポートすることが可能である。例えば、フレームワークは、外部監視ノードを用いて、所与のデータ生産装置を使用するアプリケーションの集合を検出することが可能である。これにより、システムは、個々または複数のアプリケーションに関連するコードを、その所与のデータ生産装置にダウンロードすることが可能になる。
【００１８】
分散フレームワークにおける操作は、分散フレームワークに参加している１つ以上のノードでコードが実行されることを必要とする場合がある。分散フレームワークに対する一般的な操作の１つは、位置情報を管理することであり、これは、ネットワーク接続されたシステムにおけるデータ生産装置の物理的位置を追跡し、位置情報を用いて、データの経路およびエージェントの移動をシステムレベルで決定し、エージェントがデータの特性に応じてノードからノードへ移動することを可能にすることによって行われる。例えば、動く物体を追跡するカメラセンサのネットワークの場合、フレームワークは、物体を追跡するための小さなコード片をセンサ間で転送することが、大量の画像データを非モバイル追跡エージェントに転送することと比較して、前者の使用するネットワーク帯域幅が後者よりずっと少なく、したがって、電力消費がより少ないことから、前者が後者より効率的であると判断してもよい。
【００１９】
本発明の一実施形態では、データ生産装置からのデータの受信側が、送信側であるデータ生産装置に処理命令をアップロードすることが可能であり、それによって、データが送信前に処理されることが可能になる。このようなシステムでは、データ生産装置上でデータを処理することにより、データのサイズが小さくなり、したがって、消費される帯域幅および送信電力が少なくなる。さらに、処理ステップでは、データを統一フォーマットに変換することが可能である。
【００２０】
処理操作は、以下の１つ以上を含むことが可能であるが、これらに限定されない。
・データを前処理する。
・データを圧縮する。
・データから項目を除去する。
・データに項目を追加する。
・データをフィルタリングする。
・データを第１のフォーマットから第２のフォーマットに変換する。
・データからの項目を、コードが実行されるノードに、ローカルにアーカイブする。
【００２１】
図１Ａに示されるネットワーク接続されたシステムでは、システムは、データ生産ノード１００上でデータを生成し、そのデータを消費（consumption）ノード１０２に転送し、そのデータをフィルタリングして、消費エージェントにとって関心のあるデータを抽出する。両ノードとも、アプリケーションエージェントが実行されるアプリケーションエージェント空間１０４と、システムエージェントが実行されるシステムランタイム空間１０６とを含む。図１Ａ〜１Ｃでは、矢印のサイズは、対応するデータストリームのサイズを表すことに注目されたい。
【００２２】
図１Ａに示されるように、データ生産エージェント１０８がデータの集合を収集し、そのデータを、データ生産ノード１０２のランタイムシステムにあるシステムエージェント１１０に渡す（矢印１）。次に、システムエージェント１１０は、生データ（raw data）を、消費ノード１０２上のシステムエージェント１１０に転送して、広い帯域幅および大量の電力を消費する（矢印２）。次に、消費ノード１０２上のシステムエージェント１１０は、既にそのデータに関心を示しているエージェント（フィルタエージェント１１２など）にデータを渡す（矢印３）。次に、フィルタエージェント１１２は、所望のデータを抽出し、フィルタリングされて非常に小さくなった該データの集合を、再配布のためにランタイムシステムに渡す（矢印４）。次に、システムは、フィルタリングされたデータを消費エージェント１１４に渡す（矢印５）。例えば、そのデータをユーザに対して表示することが可能である。
【００２３】
図１Ｂは、フィルタエージェント１１２をデータ生産ノード１００に転送するプロセスを示す。これが行われ得るのは、例えば、データを消費ノード１０２に転送する前にデータに対してフィルタエージェント１１２を実行することにより、システムパフォーマンスおよび／またはリソース消費が改善される可能性があると、システムが判断した場合である。例えば、フィルタエージェント１１２は、データ生産ノード１００に移動することによってパフォーマンスが改善されると判断する場合があり、その場合には、移動を開始するために、消費ノード１０２のファクトリシステムエージェント１１６に「移動」イベントを送る（矢印１）ことが可能である。
【００２４】
ファクトリシステムエージェント１１６は、システムに対するエージェントの移動性（mobility）を管理することに注目されたい。例えば、消費ノード１０２上のファクトリシステムエージェント１１６は、エージェントバイナリストレージ１１８からフィルタエージェント用バイナリを取得し（矢印２および３）、次に、フィルタエージェント１１２から現在の状態を収集して、消費ノード１０２上のフィルタエージェント１１２のインスタンスを抹消する（矢印４および５）。次に、消費ノード１０２上のファクトリシステムエージェント１１６は、フィルタエージェントの状態およびバイナリをパッケージにし、そのパッケージをデータ生産ノード１００上のファクトリシステムエージェント１１６に送る（矢印６）。データ生産ノード１００のファクトリシステムエージェント１１６は、それらのバイナリをデータ生産ノード１００のエージェントバイナリストレージ１１８に保存し（矢印７）、その後、システムは、それらのバイナリをエージェントバイナリストレージ１１８からランタイムシステムに動的にロードして、データ生産ノード１００上にフィルタエージェント１２０の新しいインスタンスを作成する（矢印８）。最後に、消費ノード１０２上のフィルタエージェント１１２から収集され、保存された状態を、データ生産ノード１００のファクトリシステムエージェント１１６が、新しいフィルタエージェント１２０に渡し、それによって、新しいフィルタエージェント１２０は、以前のインスタンスが一時停止されたところから再開することが可能である。
【００２５】
図１Ｃは、ネットワーク接続されたシステムの、フィルタエージェント１１２がデータ生産ノード１００に転送された後の動作を示す。このプロセスの間、データ生産エージェント１０８は、データの集合を収集し、そのデータを、ノードのランタイムシステムにあるシステムエージェント１１０に渡す（矢印１）。このシステムエージェント１１０は、関心を有するエージェント（この時点では、データ生産ノード１００上のフィルタエージェント１２０の新しいインスタンスが含まれる）にデータを再配布する（矢印２）。次に、新しいフィルタエージェント１２０は、所望のデータの集合を抽出し、結果として得られる、フィルタリングされて小さくなったデータの集合をランタイムシステムに渡す（矢印３）。次に、フィルタリングされたデータの集合は、そのデータに関心を示している、システム内の（この場合では、消費ノード１０２を含む）他のノード上のシステムエージェント１００に渡される（矢印４）。図１Ａと比較して、図１Ｃでは、使用される帯域幅がより小さくなり、したがって、使用される送信電力がより少なくなることに注目されたい。最後に、消費ノード１０２上のシステムエージェント１１０は、フィルタリングされたデータを、消費エージェント１１４に渡す（矢印５）。
【００２６】
図２は、コードをデータ生産装置に転送するプロセスを示すフローチャートを表す。最初に、システムは、データをデータ生産装置からデバイスに送り、その後、デバイス上のデータに対する処理操作を実行する（ステップ２００）。次に、システムは、データの特性を解析して（ステップ２０２）、データ生産装置上での処理操作の実行によってリソース使用量を低減することが可能かどうかの判定を試みる（ステップ２０４）。低減することが可能であると判定される場合（ステップ２０６）、システムは、処理操作のコードをデータ生産装置に転送し（ステップ２０８）、その後、データ生産装置上で処理操作のコードを実行する（ステップ２１０）。
【００２７】
本発明の一実施形態では、システムは、エージェントを移動するかどうかを、解析および／またはヒューリスティックスに基づいて判断する。例えば、システムは、データストリームのサイズを監視し、フィルタエージェントがデータストリームを消費するか、または収縮させるかどうかを追跡して、収縮させるフィルタエージェントを、データソースの可能な限り近くまで移動することを選択することが可能である。このような移動操作の決定には、ノード位置、リソースの競合および交渉、負荷バランス、電力のトレードオフ、ネットワークトラフィックおよびアプリケーショ特性の予測などを考慮に入れる複雑なネットワーク最適化解析を必要とする場合があることに注目されたい。
【００２８】
エラー回復、システムのロバスト性、および最適化
分散システムは、典型的には、多くの分散コンポーネントを含み、不可分（atomic）操作を行わない場合が多いので、部分的な障害の影響を受けやすい。分散システムは、そのような部分的な障害に適切に対処して、システムの他の部分に対するそれらの影響を最小化しなければならない。したがって、移動システムは、エージェントの移動の失敗に対処するメカニズムを含まなければならない。
【００２９】
本発明の一実施形態では、システムは、失敗に備えて、移動の成功の確認を受け取るまで、移動するエージェントのコピーをソースノードに保持する。例えば、ソースノードがエラーメッセージを受け取る場合、または、一定のタイムアウト間隔を過ぎても、移動したエージェントがリモートノード上で再開していないことをソースノードが検出する場合、システムは、最小限のオーバヘッドで、エージェントをソースノード上で再起動することが可能である。
【００３０】
本発明の一実施形態では、システムは、エージェントの移動中のロバスト（堅牢）なイベント配信を可能にする。エージェントを移動する間、システムは、エージェントをスリープ状態にし、そのエージェントに向けられた到着イベントの集合を待ち行列に入れ、その後、新しいノードにエージェントの新しいインスタンスの用意ができた時点で、イベントを新しいインスタンスに転送することが可能である。移動が中途終了または失敗した場合は、ソースノード上のエージェントを再起動することが可能であり、そのエージェントは、待ち行列に保存されているイベントの処理に進む。代替アプローチでは、システムは、移動の間、ソースノード上のエージェントをアクティブに保つことが可能であり、アプリケーションによっては、エージェントの２つのインスタンスの間で状態を同期させてからソースノード上のエージェントを一時停止することが可能である。
【００３１】
エージェントシステムによっては、イベントがステートレスであり、エージェントは、特定のイベントに対する関心をシステムフレームワークに登録することに注意されたい。このタイプのシステムでは、システムフレームワークは、イベントがエージェントに正しく転送されることを確実にする。このようなシステムは、アプリケーション機能への追加を簡略化するが、潜在的な複雑な事態への対応についてはシステム次第である。例えば、移動後のエージェントに重複イベントを配信するのを避けるために、システムは、待ち行列に入っているイベントがすべて受け取られ、処理されるまで、宛先ノード上のエージェントの新しく起動されたインスタンスにイベントを配信してはならない。重複イベントが処理されないことを確実にするために、システムは、重複イベントがもう到着しないことを確認できるまで（これには分散グローバルクロックの使用が必要な場合がある）、待ち行列に入っているイベントの状態を保持する必要がある場合がある。
【００３２】
本発明の一実施形態では、システムは、エージェントの移動のために転送されるコードの量を最小限にすることを試みる。例えば、ネットワーク帯域幅が低いものの、遅延が実用不可能なほど高いわけではない場合、システムは、エージェントが移動するための好適なアプリケーションバイナリが宛先ノードに既に存在するか（例えば、キャッシュされているか）どうかを調べることが可能であり、必要な場合のみアプリケーションバイナリを転送することが可能である。代替として、遅延が高く、オーバヘッドが低いネットワークリンクの場合では、システムは、すべての場合においてバイナリを単純に送る方が効率的であると判断する場合がある。別の実施形態では、宛先ノードは、適正なアプリケーションバイナリを取得する役割と、バイナリの取得時にソースノードに通知する役割とを担うことが可能である。例えば、宛先ノードは、中央リポジトリ、および／またはソースノードから指定された場所から、バイナリを取得することが可能である。このような構成は、宛先ノード上でのバイナリの取得の失敗または問題を追跡する追加状態をソースノード上に含むことが可能である。
【００３３】
つまり、本発明の一実施形態では、システムは、コードをデータ生産装置にアップロードすることが可能であり、したがって、ネットワーク接続されたシステムを通って送られるデータのサイズを小さくすることが可能であり、それによって電力を節約することが可能である。処理操作をデータストリームのソースに向けて上流に移動することにより、システムは、ネットワーク接続されたシステムの効率および容量を改善することが可能である。
【００３４】
この詳細説明で説明されるデータ構造体およびコードは、典型的には、コンピュータ可読記憶媒体に保存され、このコンピュータ可読記憶媒体は、コンピュータシステムによる使用のためにコードおよび／またはデータを保存することが可能な任意の装置または媒体であってよい。これには、揮発性メモリ、不揮発性メモリ、磁気記憶装置および光記憶装置（ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多用途ディスクまたはデジタルビデオディスク）など）、または、既知のまたは今後開発されるコンピュータ可読媒体を格納することが可能な他の媒体が含まれるが、これらに限定されない。
【００３５】
本発明の実施形態の先述の記載は、例示および説明の目的ためにのみ行われたものである。これらは、本発明の内容をすべて言い尽くすものではなく、本発明を開示された形に限定するものでもない。したがって、様々な修正および変形は、当業者であれば自明である。さらに、先述の開示は、本発明を限定するものではない。本発明の範囲は、添付の特許請求項によって定義される。
【図面の簡単な説明】
【００３６】
【図１Ａ】本発明の実施形態によるデータ生産ノードおよび消費ノードを有する、ネットワーク接続されたシステムを示す図である。
【図１Ｂ】本発明の実施形態によるフィルタエージェントをデータ生産ノードに転送するプロセスを示す図である。
【図１Ｃ】本発明の実施形態による、フィルタエージェントの転送後の、ネットワーク接続されたシステムを示す図である。
【図２】本発明の実施形態によるコードをデータ生産装置に転送するプロセスを示すフローチャートである。
【図１Ａ】
2008097603.tif 000003
【図１Ｂ】
2008097603.tif 000004
【図１Ｃ】
2008097603.tif 000005
【図２】
2008097603.tif 000006