以下に、本願の開示するイベント収集方法、イベント収集プログラム及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[システム構成]
まず、本実施例に係るセンサネットワークシステムのシステム構成について説明する。図1は、実施例1に係るセンサネットワークシステムのシステム構成を示す図である。図1に示すセンサネットワークシステム1は、センサノード210によってセンシングされたセンシングデータをイベントとして収集し、収集したイベントに応じて各種のサービスを提供するものである。
図1に示すように、センサネットワークシステム1には、サーバノード110と、センサノード210X−1、210X−2、210Y−1及び210Y−2と、ルータ10X、10Y及び10Zとが収容される。この図1の例では、ルータ10X配下のX家のネットワークに収容されたセンサノード210X−1及び210X−2からサーバノード110へ、ルータ10X及び10Zを経由してイベントデータが収集される。また、図1の例では、ルータ10Y配下のY家のネットワークに収容されたセンサノード210Y−1及び210Y−2からサーバノード110へ、ルータ10Y及び10Zを経由してイベントデータが収集される。なお、以下では、センサノード210X−1、210X−2、210Y−1及び210Y−2を区別なく総称する場合に「センサノード210」と記載する。また、ルータ10X、10Y及び10Zを区別なく総称する場合に「ルータ10」と記載する。
これらサーバノード110、センサノード210及びルータ10の間は、ネットワーク5を介して通信可能に接続される。かかるネットワーク5の一例としては、有線または無線を問わず、インターネット、LAN(Local Area Network)やVPN(Virtual Private Network)などの通信網が挙げられる。なお、センサノード210及びルータ10の数は図1の例に限定されるものではなく、それぞれ任意の数のセンサノード210及びルータ10が収容される場合にも適用可能である。
このうち、ルータ10は、異なるネットワーク同士を接続し、通信を中継する装置である。一例としては、ルータ10は、LANとLAN、LANとVPNなど、ネットワーク同士を接続し、通信を中継する。図1の例では、センサネットワークは、ルータ10によって区切られた複数のサブネットを含む。すなわち、センサネットワークには、ルータ10Xによって区切られたサブネットである「X家ネットワーク」と、ルータYによって区切られたサブネットである「Y家ネットワーク」とが存在する。また、センサネットワークには、X家ネットワーク及びY家ネットワークより上位にルータ10Zによって区切られたサブネットである「Zエリアネットワーク」が存在し、ルータ10Zより上位にはサブネットである「クラウドネットワーク」が存在する。
センサノード210は、センサ付きの通信端末である。かかるセンサノード210の一態様としては、パーソナルコンピュータや周辺機器、音響機器、携帯電話機やPHS(Personal Handyphone System)の携帯端末、家電製品などの各種の機器が挙げられる。また、センサノード210に搭載されるセンサの一態様としては、温度を計測する温度センサ、湿度を計測する湿度センサ、温度および湿度を計測する温湿度センサなどの環境センサが挙げられる。なお、ここでは、センサノード210に搭載されるセンサの例として環境センサを例示したが、センサノード210にはGPS(Global Positioning System)センサ、加速度センサやジャイロセンサなどの任意のセンサを搭載できる。
サーバノード110は、センサネットワークのルートノードとして機能し、イベントに応じて各種のサービスを提供するサーバ装置である。一態様としては、サーバノード110は、センサノード210から受信したイベントの処理を実行するモジュールを自装置よりも下位に位置するノードに配備することによってイベントを分散処理させる。かかるモジュールには、サービス提供用のアプリケーションによって実行されるサービス提供処理のトリガーとなるイベントのフィルタリング処理や集約処理が組み込まれる。
ここで、本実施例に係るサーバノード110は、ネットワークに接続された複数のノードから、ネットワークの経路に関連する経路情報を受信する。また、本実施例に係るサーバノード110は、受信した経路情報に基づいて、複数のノード間の接続情報を生成する。また、本実施例に係るサーバノード110は、生成した接続情報によって示されるノード間でイベントが送信される場合に、複数のノードのうち一又は複数のノードに、イベントを処理するモジュールを配備可能か否か判定する。また、本実施例に係るサーバノード110は、ノードにモジュールを配備可能であれば、複数のノードのそれぞれについて設定されたイベントの送信先を、推定した接続情報によって示されるノードに変更するとともに、ノードにモジュールを配備する。
このため、本実施例に係るサーバノード110は、ノードの追加や削除に応じてモジュールを適切に配備することができる。したがって、本実施例に係るサーバノード110によれば、センサネットワーク上のノードにモジュールを適切に配備できる結果、ネットワークの構成変更に追従してセンサネットワークのトラフィックを抑制できる。さらに、本実施例に係るサーバノード110では、モジュールを分散配備するので、サーバノード110に負荷が集中することも防止できる。
なお、図1の例では、サーバノード110の下位ノードとしてセンサノード210を図示しているが、後述するように、センサノード210及びサーバノード110間の通信を中継するGWノードがサーバノード110の下位ノードとして含まれる場合もある。以下では、ルートノードであるサーバノード110以外のセンサノード210や後述のGWノード310を「下位ノード」と総称する。
また、図1の例では、Xエリアネットワークに含まれるルータ10及びホストには、IPアドレス「192.168.100.x」が割り当てられているものとする。一例としては、ルータ10Xには「192.168.100.1」が、センサノード210X−1には「192.168.100.201」が、センサノード210X−2には「192.168.100.202」がそれぞれ割り当てられている。また、Yエリアネットワークに含まれるルータ10及びホストには、IPアドレス「192.168.101.x」が割り当てられているものとする。一例としては、ルータ10Yには「192.168.101.1」が、センサノード210Y−1には「192.168.101.203」が、センサノード210Y−2には「192.168.101.204」がそれぞれ割り当てられている。また、Zエリアネットワークに含まれるルータ10及びホストには、IPアドレス「192.168.10.x」が割り当てられているものとする。一例としては、ルータ10Zには「192.168.10.1」が、ルータ10Xには「192.168.10.2」が、ルータ10Yには「192.168.10.3」がそれぞれ割り当てられている。また、クラウドネットワークに含まれるルータ10及びホストには、IPアドレス「192.168.1.x」が割り当てられているものとする。一例としては、サーバノード110には「192.168.1.10」が、ルータ10Zには「192.168.1.1」がそれぞれ割り当てられている。なお、ここで言う「ホスト」には、IPアドレスが割り当てられたサーバノード110が含まれるものとする。
[サーバノードの構成]
続いて、本実施例に係るサーバノードの機能的構成について説明する。図2は、実施例1に係るサーバノード110の機能的構成を示すブロック図である。なお、サーバノード110は、図2に示す機能部以外にも既知のサーバ装置が有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどの機能を有するものとする。
図2に示すように、サーバノード110は、モジュール登録部111と、モジュール記憶部111Aと、モジュール定義記憶部111Bと、経路情報受信部112と、経路情報記憶部112Aと、トポロジ生成部113と、トポロジ記憶部113Aとを有する。さらに、サーバノード110は、イベント受信部114と、イベント記憶部114Aと、モジュール実行部115と、発生イベント登録部116と、発生イベント情報記憶部116Aとを有する。さらに、サーバノード110は、配備先情報記憶部117Aと、配備先決定部117と、送信先情報送信部118と、モジュール送信部119とを有する。
モジュール登録部111は、モジュールを登録する処理部である。一態様としては、モジュール登録部111は、モジュールの開発者によって各種のサービス提供処理のトリガーとなるイベントをフィルタリングまたは集約するようにプログラミングされたモジュールのアップロードを受け付ける。すると、モジュール登録部111は、サーバノード110にアップロードされたモジュールを後述のモジュール記憶部111Aに登録する。さらに、モジュール登録部111は、アップロードされたモジュールに関する定義を開発者が使用する端末装置を介して受け付け、受け付けたモジュールに関する定義を後述のモジュール定義記憶部111Bに登録する。
モジュール記憶部111Aは、モジュールを記憶する記憶部である。一例としては、モジュール記憶部111Aは、モジュールがアップロードされた場合に、モジュール登録部111によってモジュールが登録される。他の一例としては、モジュール記憶部111Aは、センサノード210や後述のGWノード310などの下位ノードにモジュールを配備する場合に、後述のモジュール送信部119によって参照される。
一態様としては、モジュール記憶部111Aは、モジュール識別子とバイナリコードが対応付けられたデータを記憶する。ここで言う「モジュール識別子」は、モジュールを識別するための識別子を指す。例えば、C言語でプログラミングされたモジュールには関数名を付与したり、Java(登録商標)言語でプログラミングされたモジュールにはクラス名を付与したりするなど、開発に使用されたプログラム言語に応じて識別子を付与することができる。また、「バイナリコード」は、モジュール本体となるコンパイル済みのバイナリデータを指す。
図3は、モジュール記憶部111Aに記憶される情報の構成例を示す図である。図3の例では、モジュール識別子「不快指数計算」とそのバイナリコードとが対応付けられた例を示している。この「不快指数計算」は、温度と湿度から不快指数を計算するモジュールのクラス名を指す。この「不快指数計算」が下位ノードに配備された場合には、下位ノードからサーバノード110に送信されるイベントが集約されることになる。
なお、図3の例では、モジュールのバイナリコードを記憶する場合を例示したが、必ずしもバイナリ形式でモジュールを記憶する必要はなく、バイナリ形式以外のデータを記憶することとしてもかまわない。例えば、モジュールがスクリプト言語である場合には、スクリプトが記述されたテキストデータを記憶することとしてもよい。また、コンパイル前のソースコードを記憶することとしてもかまわない。この場合には、モジュールがセンサノード210等の下位ノードに配備される段階でコンパイルするか、あるいは配備先の下位ノードでコンパイルさせることとすればよい。
モジュール定義記憶部111Bは、モジュールに関する定義を記憶する記憶部である。一例としては、モジュール定義記憶部111Bは、モジュールとともにモジュールに関する定義がアップロードされた場合に、モジュール登録部111によってモジュールの定義が登録される。他の一例としては、モジュール定義記憶部111Bは、モジュールの配備先を決定するために、後述の配備先決定部117によって参照される。
一態様としては、モジュール定義記憶部111Bは、モジュール識別子、入力イベント型、出力イベント型及び集約属性名が対応付けられたデータを記憶する。ここで言う「入力イベント型」とは、モジュールによって実行される処理の入力となるイベントの型を指す。また、「出力イベント型」とは、モジュールによって実行された処理の出力となるイベントの型を指す。また、「集約属性名」とは、複数のノードを集約する枠組みである集約属性の名称を指す。
図4は、モジュール定義記憶部111Bに記憶される情報の構成例を示す図である。図4に示すモジュール識別子「不快指数計算」の例では、温度イベント及び湿度イベントが入力されて不快指数イベントが出力されることを示す。この「不快指数計算」の場合には、1度の処理で温度イベント及び湿度イベントが入力され、同一の家に収容されたセンサノード210によってセンシングされた温度が対象となるので、集約属性名として家IDが付与されている。
経路情報受信部112は、センサノード210や後述のGWノード310を含む下位ノードから、センサネットワークの経路情報を受信する処理部である。一態様としては、経路情報受信部112は、それぞれの下位ノードからサーバノード110までにどのようなルータ10やホストを通過するのかを表す経路情報を受信する。その上で、経路情報受信部112は、下位ノードから受信したセンサネットワークの経路情報を後述の経路情報記憶部112Aに登録する。なお、経路情報受信部112によって受信される経路情報は、一例としては、サーバノード110を宛先として指定した「traceroute」と呼ばれるコマンドが各ノードで実行されることにより取得される。この「traceroute」が実行されることによって、各ノードからサーバノード110までに経由するルータ10やホストのIPアドレス及びhop数が経路情報としてそれぞれ取得される。なお、tracerouteは、例えば、「tracert」とも称される。
経路情報記憶部112Aは、センサネットワークの経路情報を記憶する記憶部である。一例としては、経路情報記憶部112Aは、下位ノードからセンサネットワークの経路情報が受信された場合に、経路情報受信部112によって経路情報が登録される。他の一例としては、経路情報記憶部112Aは、トポロジを生成するために、後述のトポロジ生成部113によって参照される。
一態様としては、経路情報記憶部112Aは、送信元ノードID、hop数及びIPアドレスが対応付けられたデータを記憶する。ここで言う「送信元ノードID」は、経路情報の送信元となるノードを識別するための識別子を指す。また、「hop数」は、送信元ノードから、対応するIPアドレスが割り当てられたルータ10及びホストまでに至る経路上に存在するルータの数を指す。また、「IPアドレス」は、送信元ノードからサーバノード110までに経由するルータ10及びホストに割り当てられたIPアドレスを指す。
図5は、経路情報記憶部112Aに記憶される情報の構成例を示す図である。図5の例では、図1に示したセンサノード210X−1がX家に収容された温度センサXであり、センサノード210X−2がX家に収容された湿度センサXである。また、センサノード210Y−1がY家に収容された温度センサYであり、センサノード210Y−2がY家に収容された湿度センサYである。図5に示す例では、温度センサXであるセンサノード210X−1からクラウドであるサーバノード110までに経由する1番目のルータ10又はホストに割り当てられたIPアドレスが「192.168.100.1」であることを示す。なお、このIPアドレス「192.168.100.1」は、図1に示す例では、ルータ10Xに割り当てられたIPアドレスである。
トポロジ生成部113は、センサネットワーク内の複数のノード間の接続情報、いわゆるトポロジを生成する処理部である。一例としては、トポロジ生成部113は、経路情報記憶部112Aが更新された場合、すなわちネットワークの経路情報に変化があった場合に、その経路情報に基づいて、各下位ノードがどの上位ノードに接続されているかを表すノード間の接続情報を生成する。そして、トポロジ生成部113は、生成したノード間の接続情報を後述のトポロジ記憶部113Aに格納する。
一態様としては、トポロジ生成部113は、経路情報記憶部112Aを参照し、各ノードが同一の経路を経由するか否かに基づいて、各ノードの上位ノードを決定し、ノード間の接続情報をトポロジとして後述のトポロジ記憶部113Aに格納する。例えば、トポロジ生成部113は、経路情報記憶部112Aに記憶された送信元ノードIDを1つ選択する。そして、トポロジ生成部113は、選択したノードに対応付けられたIPアドレスと同一のIPアドレスに対応付けられたノードを特定する。ここで、同一のノードに対して複数のIPアドレスが特定される場合には、トポロジ生成部113は、特定されたIPアドレスのうち、より小さいhop数に対応付けられたIPアドレスを特定する。さらに、複数のノードが特定される場合には、トポロジ生成部113は、選択したノードのうち、より小さいhop数に対応付けられたノードを特定する。その上で、トポロジ生成部113は、選択したノードを下位ノードとし、特定したノードを上位ノードとしてノード間の接続情報を生成し、生成した接続情報をトポロジとして後述のトポロジ記憶部113Aに格納する。
図5に示す例では、トポロジ生成部113は、まず、「温度センサX」を選択する。そして、トポロジ生成部113は、「温度センサX」に対応付けられたIPアドレス「192.168.1.10」と同一のIPアドレスに対応付けられた「クラウド」を特定する。このため、トポロジ生成部113は、下位ノード「温度センサX」の上位ノードとして「クラウド」を特定する。他のノードについても同様に、トポロジ生成部113は、上位ノードを特定することで、トポロジを生成する。
トポロジ記憶部113Aは、センサネットワークのトポロジを記憶する記憶部である。一例としては、トポロジ記憶部113Aは、トポロジ生成部113によってノード間の接続情報がトポロジとして登録される。他の一例としては、トポロジ記憶部113Aは、モジュールの配備先を決定するために、後述の配備先決定部117によって参照される。
一態様としては、トポロジ記憶部113Aは、下位ノードID及び上位ノードIDが対応付けられたデータを記憶する。ここで言う「下位ノードID」は、下位ノードを識別するための識別子を指す。また、「上位ノードID」は、下位ノードに接続される上位ノードを識別するための識別子を指す。
図6は、トポロジ記憶部113Aに記憶される情報の構成例を示す図である。図3の例では、温度センサX、湿度センサX、温度センサY及び湿度センサYの上位ノードが全てクラウドであるサーバノード110であり、センサノード210とサーバノード110の間にGWノード310などの中継ノードが介在していないことを示す。
イベント受信部114は、イベントを受信する処理部である。一態様としては、イベント受信部114は、センサノード210や後述のGWノード310などの下位ノードからイベントを受信すると、当該イベントを後述のイベント記憶部114Aに格納する。このとき、イベント受信部114は、下位ノードから受信したイベントを後述の発生イベント登録部116にも出力する。なお、イベント受信部114では、必ずしもセンサノード210によってセンシングされた未処理のイベントが受信されるとは限らず、下位ノードに配備されたモジュールによって処理が実行されることにより、処理済みのイベントが受信される場合もある。
イベント記憶部114Aは、イベントを記憶する記憶部である。このイベント記憶部114Aは、イベントの発生をトリガーとしてサービスを提供するサービス提供用のアプリケーションに参照させるために設けられる。
一例としては、イベント記憶部114Aは、下位ノードからイベントが受信された場合に、イベント受信部114によってイベントが登録される。他の一例としては、イベント記憶部114Aは、モジュールによってイベントが処理された場合に、後述のモジュール実行部115によって処理実行後のイベントが登録される。
一態様としては、イベント記憶部114Aは、イベント型名、イベント発生時刻及びイベント属性が対応付けられたデータを記憶する。ここで言う「イベント型」は、イベントの種類を識別するための識別子を指す。また、「イベント発生時刻」は、イベントが発生した時刻、すなわちセンサノード210によってセンシングされた時刻を指す。また、「イベント属性」とは、イベントの性質や由来を指す。例えば、「イベント属性」は、イベントとして採取されるセンシングデータ又はそれが処理されたデータの種類、イベントが発生した発生ノードや発生ノードを含む複数のノードを集約する集約属性などの属性データの集合を指す。なお、以下では、イベント属性に含まれる各属性データが属性名と属性値のペアを含んで構成される場合を示す。
図7は、イベント記憶部114Aに記憶される情報の構成例を示す図である。図7に示す1番目のレコードは、2011年7月13日の12時にX家の温度センサXによって28度の温度が計測されたというイベントを示す。また、図7に示す2番目のレコードは、2011年7月13日の12時00分10秒にX家の湿度センサXによって50%の湿度が計測されたというイベントを示す。図7に示す3番目のレコードは、2011年7月13日の12時00分20秒にY家の温度センサYによって30度の温度が計測されたというイベントを示す。図7に示す4番目のレコードは、2011年7月13日の12時00分30秒にY家の湿度センサYによって70%の湿度が計測されたというイベントを示す。
このように、イベント記憶部114Aに記憶されたイベントは、サービス提供用のアプリケーションによってサービス提供処理を実行するトリガーとして参照される。なお、図7の例では、センサノード210によってセンシングされた未処理のイベントを例示したが、モジュールが下位ノードに配備された場合には、モジュールによって処理がなされた新たなイベントも格納されることになる。
モジュール実行部115は、サーバノード110に配備されたモジュールの実行制御を行う処理部である。一態様としては、モジュール実行部115は、イベント受信部114によってイベントが受信された場合に、受信されたイベントを入力イベント型とするモジュールがサーバノード110に配備されているか否かを判定する。このとき、モジュール実行部115は、モジュールがサーバノード110に配備されている場合には、当該モジュールを実行することによってイベントの処理を実行する。その後、モジュール実行部115は、モジュールによって処理が実行されたデータを新たなイベントとしてイベント記憶部114Aに格納する。
発生イベント登録部116は、センサノード210やGWノード310などの下位ノードで発生した発生イベントを登録する処理部である。一態様としては、発生イベント登録部116は、イベント受信部114によってイベントが受信された場合に、受信されたイベントが発生イベントとして後述の発生イベント情報記憶部116Aに既に登録されているか否かを判定する。このとき、発生イベント登録部116は、発生イベントとして未だ登録されていない場合には、下位ノードから受信したイベントを後述の発生イベント情報記憶部116Aに登録する。
発生イベント情報記憶部116Aは、発生イベントに関する情報を記憶する記憶部である。この発生イベント情報記憶部116Aは、センサノード210またはGWノード310などの下位ノードでどのようなイベントが発生しているのかを管理するために設けられる。
一例としては、発生イベント情報記憶部116Aは、下位ノードからイベントが受信された場合に、発生イベント登録部116によって発生イベントが登録される。他の一例としては、発生イベント情報記憶部116Aは、モジュールの配備先を決定するために、後述の配備先決定部117によって参照される。
一態様としては、発生イベント情報記憶部116Aは、発生ノードID、発生イベント型及び発生イベント属性が対応付けられたデータを記憶する。ここで言う「発生ノードID」は、発生ノードを識別するための識別子を指す。また、「発生イベント型」は、発生イベントの種類を識別するための識別子を指す。また、「発生イベント属性」は、発生イベントの属性を指す。
図8は、発生イベント情報記憶部116Aに記憶される情報の構成例を示す図である。図8に示す1番目のレコードは、X家の温度センサXで温度が計測されるというイベントが発生していることを示す。また、図8に示す2番目のレコードは、X家の湿度センサXで湿度が計測されるというイベントが発生していることを示す。図8に示す3番目のレコードは、Y家の温度センサYで温度が計測されるというイベントが発生していることを示す。図8に示す4番目のレコードは、Y家の湿度センサYで湿度が計測されるというイベントが発生していることを示す。なお、図8の例では、発生イベントとしてセンサノード210によってセンシングされた未処理のイベントを例示したが、モジュールが下位ノードに配備された場合には、モジュールによって処理がなされた新たなイベントも発生イベントとして格納される。
配備先情報記憶部117Aは、モジュールの配備先に関する情報を記憶する記憶部である。一例としては、配備先情報記憶部117Aは、センサネットワークのトポロジに変化があった場合に、後述の配備先決定部117によってアクセスされる。
一態様としては、配備先情報記憶部117Aは、モジュール識別子、入力イベント型、集約属性名、発生イベント属性、発生ノードID及び配備先ノードIDが対応付けられたデータを記憶する。ここで言う「配備先ノードID」は、モジュールが配備されるセンサノード210、後述のGWノード310またはサーバノード110を識別するための識別子を指す。
図9は、配備先情報記憶部117Aに記憶される情報の構成例を示す図である。この図9の例では、センサネットワークのトポロジに変化が検出されて後述の配備先決定部117によるモジュールの配備先の決定が開始された段階のテーブル例を図示している。すなわち、図9に示すように、全カラムのうちモジュール識別子、入力イベント型及び集約属性名がモジュール定義記憶部111Bから複写された段階のテーブル例が図示されている。以降の配備先ノードIDを始めとする残りのカラムが埋められる遷移については、図10や図11などを用いて後述する。
配備先決定部117は、モジュールの配備先を決定する処理部である。一態様としては、配備先決定部117は、トポロジ記憶部113Aが更新された場合、すなわちセンサネットワークのトポロジに変化があった場合に、以下に説明する処理を実行する。
これを説明すると、配備先決定部117は、モジュール定義記憶部111Bに記憶されたモジュールの定義のうちモジュール識別子、入力イベント型及び集約属性名のカラムデータを配備先情報記憶部117Aの該当カラムに書き込む。このとき、配備先情報記憶部117Aは、図9に示すように、発生イベント属性、発生ノードID及び配備先ノードIDのカラムがブランクの状態となる。
続いて、配備先決定部117は、発生イベント情報記憶部116Aに記憶された発生ノードIDのうち、発生イベント型が未配備のモジュールの入力イベント型に含まれる発生ノードIDを抽出する。さらに、配備先決定部117は、前述のように抽出した発生ノードID間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。その後、配備先決定部117は、抽出結果として得られた発生ノードID及び発生ノードIDに対応付けられた発生イベント属性を配備先情報記憶部117Aに書き込む。
このとき、配備先決定部117は、発生ノードIDが配備先情報記憶部117Aに複数登録された場合には、次のような処理を実行する。すなわち、配備先決定部117は、トポロジ記憶部113Aに記憶された上位ノードIDのうち各発生ノードIDに対応するセンサノード210又は後述のGWノード310が下位ノードとして全て収容され、かつ最も下位ノード側であるノードIDを抽出する。そして、配備先決定部117は、前述のように抽出したノードIDを配備先ノードIDのカラムに登録する。
また、配備先決定部117は、発生ノードIDが配備先情報記憶部117Aに1つ登録された場合には、モジュールを配備するノードに選択の余地がないので、先に抽出結果として得られた発生ノードIDを配備先ノードIDのカラムに登録する。
このようにして配備先情報記憶部117Aに配備先ノードIDが登録されると、モジュール記憶部111Aに記憶されたモジュールが後述のモジュール送信部119によって配備先ノードIDに対応するノードへ送信される。
その後、配備先決定部117は、モジュールの配備によって下位ノードから新たに取得される発生イベントが発生イベント情報記憶部116Aに更新されるまで待機してから、未配備のモジュールがなくなるまでモジュールの配備を繰り返し実行する。
なお、他の態様としては、配備先決定部117は、トポロジ記憶部113Aが更新された場合、すなわちセンサネットワークのトポロジに変化があった場合に、次のような処理を実行しても良い。すなわち、配備先決定部117は、配備先情報記憶部117Aに前回登録された配備先ノードIDが格納されている場合には、配備先ノードIDを再評価してもよい。一例としては、配備先決定部117は、発生イベント情報記憶部116Aに記憶された発生ノードIDのうち、発生イベント型が未配備のモジュールの入力イベント型に含まれる発生ノードIDを抽出する。さらに、配備先決定部117は、前述のように抽出した発生ノードID間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。その後、配備先決定部117は、抽出結果として得られたノードIDが前回登録された配備先ノードIDと異なる場合には、得られたノードIDを新たな配備先ノードIDとして配備先情報記憶部117Aに登録する。このようにして配備先情報記憶部117Aに配備先ノードIDが登録されると、モジュール記憶部111Aに記憶されたモジュールが後述のモジュール送信部119によって配備先ノードIDに対応するノードへ送信される。
また、発生ノードIDが配備先情報記憶部117Aに1つも登録されなかった場合には、下位ノードから通知される発生イベントが発生イベント情報記憶部116Aに登録し切れていない可能性がある。この場合には、配備先決定部117は、発生イベント情報記憶部116Aが更新されるまで待機してからモジュールの配備を繰り返し実行する。
送信先情報送信部118は、センサノード210または後述のGWノード310などの下位ノードに送信先情報を送信する処理部である。一態様としては、送信先情報送信部118は、配備先決定部117によって配備先ノードIDが配備先情報記憶部117Aに登録されると、登録された配備先ノードIDの上位ノードのノードIDをトポロジ記憶部113Aから読み出す。そして、送信先情報送信部118は、読み出した上位ノードのノードIDを登録された配備先ノードIDに対応するノードへ送信する。
モジュール送信部119は、センサノード210または後述のGWノード310などの下位ノードにモジュールを送信する処理部である。一態様としては、モジュール送信部119は、配備先決定部117によって配備先ノードIDが配備先情報記憶部117Aに登録されると、モジュール記憶部111Aに記憶されたモジュールを配備先ノードIDに対応するノードへ送信する。
(1)モジュール配備の具体例1
ここで、図9〜図11を用いて、モジュール配備の具体例1について説明する。図10は、図9に示した配備先情報記憶部117Aからの配備状況の遷移を示す図である。図11は、図10に示した配備先情報記憶部117Aからの配備状況の遷移を示す図である。
モジュールの配備が開始されると、図8に示した発生イベント情報記憶部116Aと図9に示した配備先情報記憶部117Aとの間で発生イベント型及び入力イベント型のカラムが配備先決定部117によって比較される。このとき、モジュール「不快指数計算」の入力イベント型「温度」と、発生ノードID「温度センサX」及び発生ノードID「温度センサY」の発生イベント型「温度」とが一致する。また、モジュール「不快指数計算」の入力イベント型「湿度」と、発生ノードID「湿度センサX」及び発生ノードID「湿度センサY」の発生イベント型「湿度」とが一致する。よって、モジュール「不快指数計算」に関し、発生ノードID「温度センサX」、「湿度センサX」、「温度センサY」及び「湿度センサY」の4つの発生ノードが配備先決定部117によって抽出される。
ここで、抽出された4つの発生ノード間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードが配備先決定部117によって抽出される。
かかるモジュール「不快指数計算」は、イベントの集約処理を実行するモジュールであるので、図4に示すように、モジュール「不快指数計算」に集約属性の属性名「家ID」が定義されている。一方、発生ノードID「温度センサX」及び「湿度センサX」の発生イベント属性には、図8に示すように、属性名「家ID」及び属性値「X家」のペアを含んで構成される集約属性の属性データが含まれる。また、発生ノードID「温度センサY」及び「湿度センサY」の発生イベント属性には、図8に示すように、属性名「家ID」及び属性値「Y家」のペアを含んで構成される集約属性の属性データが含まれる。
これら発生ノードID「温度センサX」、「湿度センサX」、「温度センサY」及び「湿度センサY」の発生ノードは、いずれも集約属性の属性名が「家ID」である。その一方で、発生ノードID「温度センサX」及び「湿度センサX」は、集約属性の属性値「X家」であるのに対し、発生ノードID「温度センサY」及び「湿度センサY」は、集約属性の属性値「Y家」である。
したがって、モジュール「不快指数計算」は、X家用及びY家用のモジュールとして独立に配備される。すなわち、図10に示す網掛け部分のように、モジュール「不快指数計算」に発生ノードID「温度センサX」及び「湿度センサX」とその発生イベント属性とが配備先情報記憶部117Aの該当カラムに書き込まれる。さらに、図10に示す網掛け部分のように、モジュール「不快指数計算」に発生ノードID「温度センサY」及び「湿度センサY」とその発生イベント属性とが配備先情報記憶部117Aの該当カラムに書き込まれる。
このうち、X家用のモジュール「不快指数計算」は、発生ノードID「温度センサX」及び「湿度センサX」の2つの発生ノードが存在する。このため、図6に示したトポロジ記憶部113Aに記憶された上位ノードIDのうち発生ノードID「温度センサX」及び「湿度センサX」の両方の発生ノードが下位ノードとして全て収容され、かつ最も下位ノード側であるノードIDを抽出する。図6の例で言えば、発生ノードID「温度センサX」及び「湿度センサX」の発生ノードは、いずれもクラウドであるサーバノード110に接続されており、発生ノード及びサーバノード110の間に後述のGWノード310等の中継ノードが介在していない。このため、図11に示す網掛け部分のように、X家用のモジュール「不快指数計算」の配備先ノードIDのカラムには「クラウド」が格納される。これによって、X家用のモジュール「不快指数計算」がサーバノード110に配備されることになる。
Y家用のモジュール「不快指数計算」についても、X家用のモジュール「不快指数計算」と同様に、発生ノードID「温度センサY」及び「湿度センサY」の2つの発生ノードが存在する。このため、X家用のモジュール「不快指数計算」の配備先ノードIDのカラムに「クラウド」を格納した処理と同様の処理によって、図11に示す網掛け部分のように、Y家用のモジュール「不快指数計算」の配備先ノードIDのカラムに「クラウド」が格納される。これによって、Y家用のモジュール「不快指数計算」がサーバノード110に配備されることになる。
このように、図11に示したX家用のモジュール「不快指数計算」及びY家用のモジュール「不快指数計算」が、クラウドに配備される。これによって、クラウドであるサーバノード110によって温度イベント及び湿度イベントが処理されることとなる。
(2)モジュール配備の具体例2
次に、図12〜図15を用いて、モジュール配備の具体例2について説明する。図12は、図1に示したセンサネットワークにおける経路変更の一例を示す図である。図13は、図5に示した経路情報記憶部からの経路情報の遷移を示す図である。図14は、図9に示したトポロジ記憶部からのトポロジの遷移を示す図である。図15は、図11に示した配備先情報記憶部からの配備状況の遷移を示す図である。
図12に示すセンサネットワークシステム3は、図1に示したセンサネットワークシステム1と比較して、ルータ10Xとセンサノード210X−1及び210X−2との間にGWノード310Xがさらに追加された点が異なる。さらに、センサネットワークシステム3は、ルータ10Zとルータ10X及びルータ10Yとの間にGWノード310Zがさらに追加された点が異なる。
このように、GWノード310X及び310Zが追加された場合には、センサネットワークの経路情報が変化する。図13の例で言えば、図5に示した例と比べて、GW−XであるGWノード310Xからクラウドであるサーバノード110までに3つのルータ10又はホストを経由することを示す経路情報が追加されている。さらに、図13の例で言えば、図5に示した例と比べて、GW−ZであるGWノード310Zからクラウドであるサーバノード110までに2つのルータ10又はホストを経由することを示す経路情報が追加されている。
そして、図13に示すように、センサネットワークの経路情報が変化した場合には、トポロジ生成部113によってトポロジが生成される。つまり、センサノード210及びGWノード310のそれぞれの上位ノードがトポロジ生成部113によって特定されることにより、図6に示したトポロジは図14に示したトポロジに変更されることとなる。
図13に示す例では、センサノード210Xである「温度センサX」の上位ノードになり得るノードとしては、「GW−X」、「GW−Z」及び「クラウド」が挙げられる。このうち、「GW−X」に対応付けられたIPアドレスは、いずれも「温度センサX」に対応付けられたIPアドレスと一致する。このため、これらIPアドレスのうち、より小さいhop数に対応付けられたIPアドレス「192.168.100.1」を、「温度センサX」及び「GW−X」が共通して経由するルータ10又はホストのIPアドレスとして特定する。また、「GW−Z」に対応付けられたIPアドレス「192.168.10.1」及び「192.168.1.10」は、いずれも「温度センサX」に対応付けられたIPアドレスと一致する。このため、これらIPアドレスのうち、より小さいhop数に対応付けられたIPアドレス「192.168.10.1」を、「温度センサX」及び「GW−Z」が共通して経由するルータ10又はホストのIPアドレスとして特定する。また、「クラウド」に対応付けられたIPアドレス「192.168.1.10」は、「温度センサX」に対応付けられたIPアドレスと一致する。このため、IPアドレス「192.168.1.10」を、「温度センサX」及び「クラウド」が共通して経由するルータ10又はホストのIPアドレスとして特定する。
このように、「温度センサX」と同一の経路を経由する上位ノードとして、「GW−X」、「GW−Z」及び「クラウド」の3つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「GW−X」は、「温度センサX」のhop数「1」に対応付けられており、「GW−Z」は、「温度センサX」のhop数「2」に対応付けられており、「クラウド」は、「温度センサX」のhop数「3」に対応付けられている。よって、下位ノード「温度センサX」の上位ノードとして「GW−X」が特定される。
また、図13に示す例では、センサノード210X−2である「湿度センサX」の上位ノードになり得るノードとしては、「GW−X」、「GW−Z」及び「クラウド」が挙げられる。このうち、「GW−X」に対応付けられたIPアドレスは、いずれも「湿度センサX」に対応付けられたIPアドレスと一致する。このため、これらIPアドレスのうち、より小さいhop数に対応付けられたIPアドレス「192.168.100.1」を、「湿度センサX」及び「GW−X」が共通して経由するルータ10又はホストのIPアドレスとして特定する。また、「GW−Z」に対応付けられたIPアドレス「192.168.10.1」及び「192.168.1.10」は、いずれも「湿度センサX」に対応付けられたIPアドレスと一致する。このため、これらIPアドレスのうち、より小さいhop数に対応付けられたIPアドレス「192.168.10.1」を、「湿度センサX」及び「GW−Z」が共通して経由するルータ10又はホストのIPアドレスとして特定する。また、「クラウド」に対応付けられたIPアドレス「192.168.1.10」は、「湿度センサX」に対応付けられたIPアドレスと一致する。このため、IPアドレス「192.168.1.10」を、「湿度センサX」及び「クラウド」が共通して経由するルータ10又はホストのIPアドレスとして特定する。
このように、「湿度センサX」と同一の経路を経由する上位ノードとして、「GW−X」、「GW−Z」及び「クラウド」の3つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「GW−X」は、「湿度センサX」のhop数「1」に対応付けられており、「GW−Z」は、「湿度センサX」のhop数「2」に対応付けられており、「クラウド」は、「湿度センサX」のhop数「3」に対応付けられている。よって、下位ノード「湿度センサX」の上位ノードとして「GW−X」が特定される。
また、図13に示す例では、センサノード210Y−1である「温度センサY」の上位ノードになり得るノードとしては、「GW−Z」及び「クラウド」が挙げられる。このうち、「GW−Z」に対応付けられたIPアドレス「192.168.10.1」及び「192.168.1.10」は、いずれも「温度センサY」に対応付けられたIPアドレスと一致する。このため、これらIPアドレスのうち、より小さいhop数に対応付けられたIPアドレス「192.168.10.1」を、「温度センサY」及び「GW−Z」が共通して経由するルータ10又はホストのIPアドレスとして特定する。また、「クラウド」に対応付けられたIPアドレス「192.168.1.10」は、「温度センサY」に対応付けられたIPアドレスと一致する。このため、IPアドレス「192.168.1.10」を、「温度センサY」及び「クラウド」が共通して経由するルータ10又はホストのIPアドレスとして特定する。
このように、「温度センサY」と同一の経路を経由する上位ノードとして、「GW−Z」及び「クラウド」の2つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「GW−Z」は、「温度センサY」のhop数「2」に対応付けられており、「クラウド」は、「温度センサY」のhop数「3」に対応付けられている。よって、下位ノード「温度センサY」の上位ノードとして「GW−Z」が特定される。
また、図13に示す例では、センサノード210Y−2である「湿度センサY」の上位ノードになり得るノードとしては、「GW−Z」及び「クラウド」が挙げられる。このうち、「GW−Z」に対応付けられたIPアドレス「192.168.10.1」及び「192.168.1.10」は、いずれも「湿度センサY」に対応付けられたIPアドレスと一致する。このため、これらIPアドレスのうち、より小さいhop数に対応付けられたIPアドレス「192.168.10.1」を、「湿度センサY」及び「GW−Z」が共通して経由するルータ10又はホストのIPアドレスとして特定する。また、「クラウド」に対応付けられたIPアドレス「192.168.1.10」は、「湿度センサY」に対応付けられたIPアドレスと一致する。このため、IPアドレス「192.168.1.10」を、「湿度センサY」及び「クラウド」が共通して経由するルータ10又はホストのIPアドレスとして特定する。
このように、「湿度センサY」と同一の経路を経由する上位ノードとして、「GW−Z」及び「クラウド」の2つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「GW−Z」は、「湿度センサY」のhop数「2」に対応付けられており、「クラウド」は、「湿度センサY」のhop数「3」に対応付けられている。よって、下位ノード「湿度センサY」の上位ノードとして「GW−Z」が特定される。
また、図13に示す例では、GWノード310Xである「GW−X」の上位ノードになり得るノードとしては、「GW−Z」及び「クラウド」が挙げられる。このうち、「GW−Z」に対応付けられたIPアドレス「192.168.10.1」及び「192.168.1.10」は、いずれも「GW−X」に対応付けられたIPアドレスと一致する。このため、これらIPアドレスのうち、より小さいhop数に対応付けられたIPアドレス「192.168.10.1」を、「GW−X」及び「GW−Z」が共通して経由するルータ10又はホストのIPアドレスとして特定する。また、「クラウド」に対応付けられたIPアドレス「192.168.1.10」は、「GW−X」に対応付けられたIPアドレスと一致する。このため、IPアドレス「192.168.1.10」を、「GW−X」及び「クラウド」が共通して経由するルータ10又はホストのIPアドレスとして特定する。
このように、「GW−X」と同一の経路を経由する上位ノードとして、「GW−Z」及び「クラウド」の2つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「GW−Z」は、「湿度センサY」のhop数「2」に対応付けられており、「クラウド」は、「湿度センサY」のhop数「3」に対応付けられている。よって、下位ノード「GW−X」の上位ノードとして「GW−Z」が特定される。
また、図13に示す例では、GWノード310Zである「GW−Z」の上位ノードになり得るノードとしては、「クラウド」が挙げられる。この「クラウド」に対応付けられたIPアドレス「192.168.1.10」は、「GW−Z」に対応付けられたIPアドレスと一致する。このため、IPアドレス「192.168.1.10」を、「GW−Z」及び「クラウド」が共通して経由するルータ10又はホストのIPアドレスとして特定する。よって、下位ノード「GW−Z」の上位ノードとして「クラウド」が特定される。
このように、センサネットワークシステム3に含まれる各下位ノードの上位ノードがトポロジ生成部113によって特定されることにより、図6に示したトポロジは図14に示したトポロジに変更される。
そして、図14に示すように、センサネットワークのトポロジが変化した場合には、図11の配備先情報記憶部117Aに記憶されていた配備済の配備先ノードIDが再評価される。図11の例では、X家用のモジュール「不快指数計算」は、発生ノードID「温度センサX」及び「湿度センサX」の2つの発生ノードが存在する。このため、図14に示したトポロジ記憶部113Aに記憶された上位ノードIDのうち発生ノードID「温度センサX」及び「湿度センサX」の両方の発生ノードが下位ノードとして全て収容され、かつ最も下位ノード側であるノードIDを抽出する。図14の例で言えば、発生ノードID「温度センサX」及び「湿度センサX」の発生ノードは、いずれもGW−XであるGWノード310に接続されている。このため、X家用のモジュール「不快指数計算」の配備先ノードIDとして「GW−X」が抽出される。このように、今回配備先ノードIDとして抽出された「GW−X」は前回登録された配備先ノードID「クラウド」と異なるので、図15に示す網掛け部分のように、「GW−X」が新たなX家用の配備先ノードIDとして配備先情報記憶部117Aに登録される。
また、Y家用のモジュール「不快指数計算」についても、X家用のモジュール「不快指数計算」と同様に、発生ノードID「温度センサY」及び「湿度センサY」の2つの発生ノードが存在する。図14に示す例では、発生ノードID「温度センサY」及び「湿度センサY」の発生ノードは、いずれもGW−ZであるGWノード310Zに接続されている。このため、Y家用のモジュール「不快指数計算」の配備先ノードIDとして「GW−Z」が抽出される。このように、今回配備先ノードIDとして抽出された「GW−Z」は前回登録された配備先ノードID「クラウド」と異なるので、図15に示す網掛け部分のように、「GW−Z」が新たなY家用の配備先ノードIDとして配備先情報記憶部117Aに登録される。
このように、図15に示したX家用のモジュール「不快指数計算」がGW−Xに配備され、Y家用のモジュール「不快指数計算」がGW−Zに配備されることとなる。さらに、これによって、図14に示したトポロジがセンサネットワークに適用されることになる。すなわち、図14に示した下位ノードIDに対応する各ノードに対して、それぞれ対応する上位ノードIDが送信先情報として送信先情報送信部118によって送信される。このとき、モジュール記憶部111Aに記憶されたモジュールもモジュール送信部119によって配備先ノードIDに対応するノードへ送信される。
なお、モジュール登録部111、経路情報受信部112、トポロジ生成部113、イベント受信部114、モジュール実行部115には、各種の集積回路や電子回路を採用できる。また、発生イベント登録部116、配備先決定部117、送信先情報送信部118、モジュール送信部119には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ASIC(Application Specific Integrated Circuit)が挙げられる。また、電子回路としては、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などが挙げられる。
また、モジュール記憶部111A、モジュール定義記憶部111B、経路情報記憶部112A、トポロジ記憶部113A、イベント記憶部114A、発生イベント情報記憶部116A、配備先情報記憶部117Aには、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子としては、VRAM(Video Random Access Memory)、RAM(Random Access Memory)やフラッシュメモリ(flash memory)などが挙げられる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
[センサノードの構成]
次に、本実施例に係るセンサノードの機能的構成について説明する。図16は、実施例1に係るセンサノード210の機能的構成を示すブロック図である。図16に示すセンサノード210は、センサ情報受信部211と、モジュール受信部212と、モジュール実行部213と、送信先情報受信部214と、送信先情報記憶部215と、イベント送信部216とを有する。さらに、図16に示すセンサノード210は、経路情報取得部217と、経路情報送信部218とを有する。
センサ情報受信部211は、センサノード210に内蔵または付設されたセンサデバイスからセンサ情報を受信する処理部である。一態様としては、センサ情報受信部211は、センサノード210に温度センサが内蔵されている場合には、温度センサによって計測された温度を受信する。他の一態様としては、センサ情報受信部211は、センサノード210に湿度センサが内蔵されている場合には、湿度センサによって計測された湿度を受信する。なお、センサノード210に複数のセンサデバイスが内蔵されている場合には、各々のセンサデバイスに対応してセンサ情報受信部211が設けられる。
モジュール受信部212は、サーバノード110からモジュールを受信する処理部である。このモジュール受信部212によって受信されたモジュールは、モジュールの実行制御を行うモジュール実行部213に出力される。
モジュール実行部213は、センサノード210に配備されたモジュールの実行制御を行う処理部である。一態様としては、モジュール実行部213は、センサ情報受信部211によってセンサ情報が受信された場合に、受信されたセンサ情報を入力イベント型とするモジュールがセンサノード210に配備されているか否かを判定する。このとき、モジュール実行部213は、モジュールがセンサノード210に配備されている場合には、当該モジュールを実行することによってイベントの処理を実行する。その後、モジュール実行部213は、モジュールによって処理が実行されたデータを新たなイベントとしてイベント送信部216へ出力する。なお、モジュールがセンサノード210に配備されていない場合には、センサ情報を処理せずにそのままイベント送信部216へ出力する。
送信先情報受信部214は、サーバノード110から送信先情報を受信する処理部である。一態様としては、送信先情報受信部214は、イベントの送信先となる上位ノードのノードIDをサーバノード110から受信する。そして、送信先情報受信部214は、受信した上位ノードのノードIDを後述の送信先情報記憶部215に格納する。
送信先情報記憶部215は、送信先情報を記憶する記憶部である。一態様としては、送信先情報記憶部215は、イベントの送信先となる上位ノードのノードIDを記憶する。また、他の態様としては、送信先情報記憶部215は、イベントの送信先となる上位ノードを決定するために、後述のイベント送信部216によって参照される。
イベント送信部216は、イベントを上位ノードに送信する処理部である。一態様としては、イベント送信部216は、モジュール実行部213によって処理されたイベント、あるいはセンサ情報受信部211によってセンサデバイスから受信されたセンサ情報を上位ノードに送信する。このとき、イベント送信部216は、センサ情報を上位ノードに送信する場合には、発生ノードであるセンサノード210のノードID、自装置を含む複数のノードを集約する集約属性の属性名及び属性値をセンサ情報に付加する。そして、イベント送信部216は、送信先情報記憶部215を参照し、イベントの送信先となる上位ノードを決定する。その上で、イベント送信部216は、センサ情報とともに発生ノードのノードID及び集約属性を含むイベントを、送信先となる上位ノードに送信する。
ここで、上記の「集約属性」の属性名及び属性値は、センサノード210の製造段階でデバイスドライバなどに組み込んでおくことができる。例えば、センサデバイスが温度センサ、湿度センサや温湿度センサである場合には、温度や湿度が計測される枠組みである「家ID」を始め、「部屋ID」や「階ID」などの集約属性をイベントに付加するようにデバイスドライバを構成しておく。その上で、センサノード210がサーバノード110との間で通信コネクションが確立された段階で、既にサービスに加入している他のセンサノード210に先だって付与されている家IDの属性値をサーバノード110から自動的に取得することもできる。なお、サーバノード110にX家またはY家の間取り等が登録されている場合には、「家ID」の他、「部屋ID」や「階ID」などの集約属性の属性値をサーバノード110から自動的に取得することもできる。
経路情報取得部217は、ネットワークの経路情報を取得する処理部である。一例としては、経路情報取得部217は、所定のタイミングで、自ノードからサーバノード110までに経由するルータ10を表す経路情報を取得する。経路情報取得部217は、取得した経路情報を前回取得した経路情報と比較し、経路情報に変更があるか否かを判定する。そして、経路情報に変更がある場合には、経路情報取得部217は、取得した経路情報を後述の経路情報送信部218に出力する。
経路情報送信部218は、経路情報取得部217から出力された経路情報をサーバノード110に送信する処理部である。一態様としては、経路情報送信部218は、経路情報取得部217によって取得された各中継装置のIPアドレス及びそのhop数に、自ノードのノードIDを付加して、サーバノード110に送信する。
[GWノードの構成]
次に、本実施例に係るGWノードの機能的構成について説明する。図17は、実施例1に係るGWノード310の機能的構成を示すブロック図である。図17に示すGWノード310は、イベント受信部311と、モジュール受信部312と、モジュール実行部313と、送信先情報受信部314と、送信先情報記憶部315と、イベント送信部316とを有する。さらに、図17に示すGWノード310は、経路情報取得部317と、経路情報送信部318とを有する。
イベント受信部311は、イベントを受信する処理部である。一態様としては、イベント受信部311は、下位ノードであるセンサノード210や他のGWノード310からイベントを受信する。
モジュール受信部312は、サーバノード110からモジュールを受信する処理部である。このモジュール受信部312によって受信されたモジュールは、モジュールの実行制御を行うモジュール実行部313に出力される。
モジュール実行部313は、GWノード310に配備されたモジュールの実行制御を行う処理部である。一態様としては、モジュール実行部313は、イベント受信部311によってイベントが受信された場合に、受信されたイベントを入力イベント型とするモジュールがGWノード310に配備されているか否かを判定する。このとき、モジュール実行部313は、モジュールがGWノード310に配備されている場合には、当該モジュールを実行することによってイベントの処理を実行する。その後、モジュール実行部313は、モジュールによって処理が実行されたデータを新たなイベントとしてイベント送信部316へ出力する。なお、モジュールがGWノード310に配備されていない場合には、イベントを処理せずにそのままイベント送信部316へ出力する。
送信先情報受信部314は、サーバノード110から送信先情報を受信する処理部である。一態様としては、送信先情報受信部314は、イベントの送信先となる上位ノードのノードIDをサーバノード110から受信する。そして、送信先情報受信部314は、受信した上位ノードのノードIDを後述の送信先情報記憶部315に格納する。
送信先情報記憶部315は、送信先情報を記憶する記憶部である。一態様としては、送信先情報記憶部315は、イベントの送信先となる上位ノードのノードIDを記憶する。また、他の態様としては、送信先情報記憶部315は、イベントの送信先となる上位ノードを決定するために、後述のイベント送信部316によって参照される。
イベント送信部316は、イベントを上位ノードに送信する処理部である。一態様としては、イベント送信部316は、モジュール実行部313によって処理されたイベント、あるいはイベント受信部311によってセンサデバイスから受信されたセンサ情報を上位ノードに送信する。このとき、イベント送信部316は、センサ情報を上位ノードに送信する場合には、発生ノードであるセンサノード210のノードID、自装置を含む複数のノードを集約する集約属性の属性名及び属性値をセンサ情報に付加する。そして、イベント送信部316は、送信先情報記憶部315を参照し、イベントの送信先となる上位ノードを決定する。その上で、イベント送信部316は、センサ情報とともに発生ノードのノードID及び集約属性を含むイベントを、送信先となる上位ノードに送信する。
経路情報取得部317は、ネットワークの経路情報を取得する処理部である。一例としては、経路情報取得部317は、所定のタイミングで、自ノードからサーバノード110までに経由するルータ10を表す経路情報を取得する。経路情報取得部317は、取得した経路情報を前回取得した経路情報と比較し、経路情報に変更があるか否かを判定する。そして、経路情報に変更がある場合には、経路情報取得部317は、取得した経路情報を後述の経路情報送信部318に出力する。
一態様としては、経路情報取得部317は、サーバノード110を宛先として指定したコマンド「traceroute」を実行する。これにより、経路情報取得部317は、自ノードからサーバノード110までに経由するルータ10のIPアドレス及びhop数を取得する。経路情報取得部317は、取得した各ルータ10のIPアドレス及びhop数を、前回取得したIPアドレス及びhop数と比較し、変更があるか否かを判定する。そして、変更がある場合には、経路情報取得部317は、取得したIPアドレス及びhop数を後述の経路情報送信部318に出力する。なお、tracerouteは、例えば、「tracert」とも称される。
経路情報送信部318は、経路情報取得部317から出力された経路情報をサーバノード110に送信する処理部である。一態様としては、経路情報送信部318は、経路情報取得部317によって取得された各中継装置のIPアドレス及びそのhop数に、自ノードのノードIDを付加して、サーバノード110に送信する。
[処理の流れ]
次に、本実施例に係るセンサネットワークシステムの処理の流れについて説明する。なお、ここでは、センサノード210によって実行される(1)全体処理を説明した後に、サーバノード110によって実行される(2)モジュール配備処理を説明することとする。
(1)全体処理
図18は、実施例1に係るセンサノード210における全体処理の手順を示すフローチャートである。この全体処理は、センサノード210の電源がON状態である限り、繰り返し実行される。
図18に示すように、センサノード210は、ネットワークの経路情報を取得する(ステップS101)。そして、センサノード210は、経路情報に変更があるか否かを判定する(ステップS102)。
経路情報に変更があった場合(ステップS102肯定)には、センサノード210は、経路情報をサーバノード110に送信する(ステップS103)。なお、経路情報に変更がなかった場合(ステップS102否定)には、センサノード210は、ステップS103の処理を実行せずにステップS104の処理へ移行する。
続いて、サーバノード110からモジュールを受信した場合(ステップS104肯定)には、センサノード210は、サーバノード110から受信したモジュールを配備する(ステップS105)。なお、モジュールを受信しなかった場合(ステップS104否定)には、ステップS105の処理を実行せずにステップS106の処理へ移行する。
そして、サーバノード110から送信先情報を受信した場合(ステップS106肯定)には、センサノード210は、受信した送信先情報を送信先情報記憶部215に格納する(ステップS107)。なお、送信先情報を受信しなかった場合(ステップS106否定)には、ステップS107の処理を実行せずにステップS108の処理へ移行する。
そして、センサデバイスからセンサ情報を受信した場合(ステップS108肯定)には、センサノード210は、受信したセンサ情報を入力イベント型とするモジュールが配備されているか否かを判定する(ステップS109)。なお、センサ情報を受信しなかった場合(ステップS108否定)には、ステップS101の処理に戻る。
モジュールが配備されている場合(ステップS109肯定)には、センサノード210は、モジュールを実行することによってイベントを処理する(ステップS110)。そして、センサノード210は、処理されたイベントを上位ノードへ送信する(ステップS111)。
一方、モジュールが配備されていない場合(ステップS109否定)には、センサノード210は、センサデバイスから受信したセンサ情報に発生ノードIDや集約属性などを付加した上で上位ノードへ送信する(ステップS112)。
このようにして、センサノード210は、上記のステップS101〜ステップS112までの処理を電源がOFF状態になるまで繰り返し実行する。
なお、ここでは、センサノード210の全体処理について説明したが、中継ノードであるGWノード310によって実行される全体処理も一部を除き同様である。すなわち、GWノード310の場合には、上記のステップS108においてセンサ情報の代わりにイベントが受信される点が相違する点を除き、センサノード210と同様である。
(2)モジュール配備処理
図19及び図20は、実施例1に係るモジュール配備処理の手順を示すフローチャートである。このモジュール配備処理は、一例としては、センサネットワークのトポロジが変化した場合に処理が起動される。
図19に示すように、下位ノードから経路情報を受信した場合(ステップS201肯定)には、サーバノード110は、受信した経路情報を経路情報記憶部112Aに格納する(ステップS202)。そして、サーバノード110は、経路情報記憶部112Aを参照し、各ノードが同一の経路を経由するか否かに基づいて、各ノードの上位ノードを決定し、ノード間の接続情報をトポロジとして後述のトポロジ記憶部113Aに格納する(ステップS203)。なお、下位ノードから経路情報を受信しない場合(ステップS201否定)には、図20のステップS208の処理に移行する。
続いて、トポロジに変化があった場合(ステップS204肯定)には、サーバノード110は、配備先情報記憶部117Aに前回登録された配備先ノードIDを再評価する(ステップS205)。そして、配備先ノードIDが変更される場合(ステップS206肯定)には、サーバノード110は、新たなトポロジに基づいて、各ノードにそれぞれ対応する上位ノードIDを送信先情報として送信する(ステップS207)。このとき、サーバノード110は、モジュール記憶部111Aに記憶されたモジュールを配備先ノードIDに対応するノードへ送信する。なお、トポロジに変化がなかった場合(ステップS204否定)には、図20のステップS208の処理に移行する。また、配備先ノードIDが変更されない場合(ステップS206否定)にも、図20のステップS208の処理に移行する。
続いて、サーバノード110は、発生イベント情報記憶部116Aが更新されるのを待機する(ステップS208)。そして、発生イベント情報記憶部116Aが更新されると、全てのモジュールの配備が終了したか否かが判断される(ステップS209)。ここではいずれのモジュールについても処理が終了していないので(ステップS209否定)、ステップS210の処理へ移行する。
続いて、サーバノード110は、モジュール定義記憶部111Bに記憶されたモジュールの定義のうちモジュール識別子、入力イベント型及び集約属性名のカラムデータを配備先情報記憶部117Aの該当カラムに格納する(ステップS210)。
そして、サーバノード110は、ステップS210の処理を実行後に、下記に説明するステップS211の処理を実行する。すなわち、サーバノード110は、発生イベント情報記憶部116Aに記憶された発生ノードIDのうち、発生イベント型が未配備のモジュールの入力イベント型に含まれる発生ノードIDを抽出する。さらに、サーバノード110は、前述のように抽出した発生ノードID間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。
その後、サーバノード110は、抽出結果として得られた発生ノードID及び発生ノードIDに対応付けられた発生イベント属性を配備先情報記憶部117Aに書き込む(ステップS212)。
このとき、発生ノードIDの数が「0」である場合(ステップS213肯定)には、下位ノードから通知される発生イベントが発生イベント情報記憶部116Aに登録し切れていない可能性がある。この場合には、図19のステップS201の処理に移行する。
ここで、発生ノードIDの数が複数である場合(ステップS214肯定)には、下記に説明するステップS215の処理を実行する。すなわち、サーバノード110は、トポロジ記憶部113Aに記憶された上位ノードIDのうち各発生ノードIDに対応するセンサノード210又はGWノード310が下位ノードとして全て収容され、かつ最も下位ノード側であるノードIDを抽出する。そして、サーバノード110は、前述のように抽出したノードIDを配備先ノードIDのカラムに登録する(ステップS216)。
また、発生ノードIDの数が1つである場合(ステップS214否定)には、サーバノード110は、モジュールを配備するノードに選択の余地がないので、先に抽出結果として得られた発生ノードIDを配備先ノードIDのカラムに登録する(ステップS216)。
続いて、サーバノード110は、モジュール記憶部111Aに記憶されたモジュールを配備先ノードIDに対応するノードへ送信し(ステップS217)、図19のステップS201の処理に戻る。
その後、サーバノード110は、全てのモジュールの配備が終了するまで(ステップS209否定)、上記のステップS201〜ステップS217までの処理を繰り返し実行する。そして、全てのモジュールの配備が終了すると(ステップS209肯定)、処理を終了する。
[実施例1の効果]
上述してきたように、本実施例に係るサーバノード110は、ネットワークに接続された複数のノードから、ネットワークの経路に関連する経路情報を受信する。サーバノード110は、受信した経路情報に基づいて、複数のノード間の接続情報を生成する。サーバノード110は、生成した接続情報によって示されるノード間でイベントが送信される場合に、複数のノードのうち一又は複数のノードに、イベントを処理するモジュールを配備可能か否か判定する。サーバノード110は、ノードにモジュールを配備可能であれば、複数のノードのそれぞれについて設定されたイベントの送信先を、生成した接続情報によって示されるノードに変更するとともに、ノードにモジュールを配備する。このため、サーバノード110は、ネットワーク経路の変化に応じてモジュールを適切に配備することができる。したがって、サーバノード110は、センサネットワークのトラフィックを抑制でき、さらに、サーバノード110に負荷が集中することも防止できる。
ところで、上記の実施例1では、センサネットワークに新たなノードが追加される場合にトポロジを構築し、できるだけ下位のノードにモジュールを配備する例について説明したが、本発明はセンサネットワークからノードが削除される場合にも適用可能である。そこで、本実施例では、センサネットワークからノードが削除される場合にトポロジを生成し、できるだけ下位のノードにモジュールを配備する方法について説明する。
[サーバノードの構成]
図21は、実施例2に係るサーバノード120の機能的構成を示すブロック図である。図21に示すサーバノード120は、図2に示したサーバノード110に比べて、生存情報受信部121及び生存監視部122を有する点が相違する。なお、以下では、上記の実施例1と同様の機能を発揮する機能部については同一の符号を付し、その説明を省略することとする。
生存情報受信部121は、例えば、センサノード220やGWノード320などの下位ノードから、送信元のノードが通信可能な状態にあることを示す生存情報を受信する処理部である。生存情報受信部121は、受信した生存情報を後述の生存監視部122に出力する。
生存監視部122は、下位ノードが通信可能な状態にあるか否かを監視する処理部である。一例としては、生存監視部122は、図示しない内部メモリを有し、生存情報受信部121によって受信された生存情報の送信元ノードのノードIDごとに受信時刻を内部メモリに格納する。そして、生存監視部122は、生存情報が一定時間以上受信されない下位ノードがあるか否か監視し、生存情報が一定時間以上受信されない下位ノードがある場合に、当該下位ノードの経路情報を経路情報記憶部112Aから削除する。なお、生存監視部122が下位ノードの生存を監視する方法は、上記の方法に限定されるものではなく、例えば、所定の間隔で受信される生存情報が受信されなくなった場合に、当該生存情報の送信元ノードの経路情報を削除することとしても良い。
一態様としては、生存監視部122は、GW−Xからの生存情報が一定時間以上受信されない場合には、GW−Xから受信した経路情報を削除する。図13に示した例では、生存監視部122は、13行目の「GW−X」、「1」及び「192.168.100.1」が対応付けられたデータから、15行目の「GW−X」、「3」及び「192.168.1.10」が対応付けられたデータまでを削除する。
[センサノードの構成]
図22は、実施例2に係るセンサノード220の機能的構成を示すブロック図である。図22に示すセンサノード220は、図16に示したセンサノード210に比べて、生存情報送信部221をさらに有する点が相違する。
生存情報送信部221は、生存情報を送信する処理部である。一態様としては、生存情報送信部221は、所定のタイミングで、自ノードが通信可能な状態にあることを示す生存情報をサーバノード120に送信する。
[GWノードの構成]
図23は、実施例2に係るGWノード320の機能的構成を示すブロック図である。図23に示すGWノード320は、図17に示したGWノード310に比べて、生存情報送信部321をさらに有する点が相違する。
生存情報送信部321は、生存情報を送信する処理部である。一態様としては、生存情報送信部321は、所定のタイミングで、自ノードが通信可能な状態にあることを示す生存情報をサーバノード120に送信する。
[処理の流れ]
次に、本実施例に係るセンサネットワークシステムの処理の流れについて説明する。なお、ここでは、センサノード210によって実行される(1)全体処理を説明した後に、サーバノード120によって実行される(2)モジュール配備処理を説明することとする。
(1)全体処理
図24は、実施例2に係るセンサノード220における全体処理の手順を示すフローチャートである。この全体処理は、センサノード220の電源がON状態である限り、繰り返し実行される。なお、図24に示すセンサノード220における全体処理は、図18に示したセンサノード210における全体処理に比べて、ステップS301の処理がさらに実行される点が異なる。
図24に示すように、センサノード220は、生存情報をサーバノード120に送信する(ステップS301)。続いて、センサノード220は、ネットワークの経路情報を取得する(ステップS101)。そして、センサノード220は、経路情報に変更があるか否かを判定する(ステップS102)。
経路情報に変更があった場合(ステップS102肯定)には、センサノード220は、経路情報をサーバノード120に送信する(ステップS103)。なお、経路情報に変更がなかった場合(ステップS102否定)には、センサノード220は、ステップS103の処理を実行せずにステップS104の処理へ移行する。
続いて、サーバノード120からモジュールを受信した場合(ステップS104肯定)には、センサノード220は、サーバノード120から受信したモジュールを配備する(ステップS105)。なお、モジュールを受信しなかった場合(ステップS104否定)には、ステップS105の処理を実行せずにステップS106の処理へ移行する。
そして、サーバノード120から送信先情報を受信した場合(ステップS106肯定)には、センサノード220は、受信した送信先情報を送信先情報記憶部215に格納する(ステップS107)。なお、送信先情報を受信しなかった場合(ステップS106否定)には、ステップS107の処理を実行せずにステップS108の処理へ移行する。
そして、センサデバイスからセンサ情報を受信した場合(ステップS108肯定)には、センサノード220は、受信したセンサ情報を入力イベント型とするモジュールが配備されているか否かを判定する(ステップS109)。なお、センサ情報を受信しなかった場合(ステップS108否定)には、ステップS301の処理に戻る。
モジュールが配備されている場合(ステップS109肯定)には、センサノード220は、モジュールを実行することによってイベントを処理する(ステップS110)。そして、センサノード220は、処理されたイベントを上位ノードへ送信する(ステップS111)。
一方、モジュールが配備されていない場合(ステップS109否定)には、センサノード220は、センサデバイスから受信したセンサ情報に発生ノードIDや集約属性などを付加した上で上位ノードへ送信する(ステップS112)。
このようにして、センサノード220は、上記のステップS301〜ステップS112までの処理を電源がOFF状態になるまで繰り返し実行する。
なお、ここでは、センサノード220の全体処理について説明したが、中継ノードであるGWノード320によって実行される全体処理も一部を除き同様である。すなわち、GWノード320の場合には、上記のステップS108においてセンサ情報の代わりにイベントが受信される点が相違する点を除き、センサノード220と同様である。
(2)モジュール配備処理
図25及び図26は、実施例2に係るモジュール配備処理の手順を示すフローチャートである。このモジュール配備処理は、一例としては、センサネットワークのトポロジが変化した場合に処理が起動される。なお、図25及び図26に示すサーバノード120におけるモジュール配備処理は、図19及び図20に示したサーバノード110におけるモジュール配備処理に比べて、ステップS401〜ステップS403の処理がさらに実行される点が異なる。
図25に示すように、サーバノード120は、センサノード220やGWノード320などの下位ノードから生存情報を受信する(ステップS401)。そして、生存情報が一定時間以上受信されない下位ノードがある場合(ステップS402肯定)には、サーバノード120は、当該下位ノードの経路情報を経路情報記憶部112Aから削除する(ステップS403)。なお、サーバノード120は、生存情報が一定時間以上受信されない下位ノードがない場合(ステップS402否定)には、ステップS403の処理を実行せずにステップS201の処理へ移行する。
続いて、下位ノードから経路情報を受信した場合(ステップS201肯定)には、サーバノード120は、受信した経路情報を経路情報記憶部112Aに格納する(ステップS202)。そして、サーバノード120は、経路情報記憶部112Aを参照し、各ノードが同一の経路を経由するか否かに基づいて、各ノードの上位ノードを決定し、ノード間の接続情報をトポロジとして後述のトポロジ記憶部113Aに格納する(ステップS203)。なお、下位ノードから経路情報を受信しない場合(ステップS201否定)には、図26のステップS208の処理に移行する。
続いて、トポロジに変化があった場合(ステップS204肯定)には、サーバノード120は、配備先情報記憶部117Aに前回登録された配備先ノードIDを再評価する(ステップS205)。そして、配備先ノードIDが変更される場合(ステップS206肯定)には、サーバノード120は、新たなトポロジに基づいて、各ノードにそれぞれ対応する上位ノードIDを送信先情報として送信する(ステップS207)。このとき、サーバノード120は、モジュール記憶部111Aに記憶されたモジュールを配備先ノードIDに対応するノードへ送信する。なお、トポロジに変化がなかった場合(ステップS204否定)には、図26のステップS208の処理に移行する。また、配備先ノードIDが変更されない場合(ステップS206否定)にも、図26のステップS208の処理に移行する。
続いて、サーバノード120は、発生イベント情報記憶部116Aが更新されるのを待機する(ステップS208)。そして、発生イベント情報記憶部116Aが更新されると、全てのモジュールの配備が終了したか否かが判断される(ステップS209)。ここではいずれのモジュールについても処理が終了していないので(ステップS209否定)、ステップS210の処理へ移行する。
続いて、サーバノード120は、モジュール定義記憶部111Bに記憶されたモジュールの定義のうちモジュール識別子、入力イベント型及び集約属性名のカラムデータを配備先情報記憶部117Aの該当カラムに格納する(ステップS210)。
そして、サーバノード120は、ステップS210の処理を実行後に、下記に説明するステップS211の処理を実行する。すなわち、サーバノード120は、発生イベント情報記憶部116Aに記憶された発生ノードIDのうち、発生イベント型が未配備のモジュールの入力イベント型に含まれる発生ノードIDを抽出する。さらに、サーバノード120は、前述のように抽出した発生ノードID間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。
その後、サーバノード120は、抽出結果として得られた発生ノードID及び発生ノードIDに対応付けられた発生イベント属性を配備先情報記憶部117Aに書き込む(ステップS212)。
このとき、発生ノードIDの数が「0」である場合(ステップS213肯定)には、下位ノードから通知される発生イベントが発生イベント情報記憶部116Aに登録し切れていない可能性がある。この場合には、図25のステップS401の処理に移行する。
ここで、発生ノードIDの数が複数である場合(ステップS214肯定)には、下記に説明するステップS215の処理を実行する。すなわち、サーバノード120は、トポロジ記憶部113Aに記憶された上位ノードIDのうち各発生ノードIDに対応するセンサノード210又はGWノード310が下位ノードとして全て収容され、かつ最も下位ノード側であるノードIDを抽出する。そして、サーバノード120は、前述のように抽出したノードIDを配備先ノードIDのカラムに登録する(ステップS216)。
また、発生ノードIDの数が1つである場合(ステップS214否定)には、サーバノード120は、モジュールを配備するノードに選択の余地がないので、先に抽出結果として得られた発生ノードIDを配備先ノードIDのカラムに登録する(ステップS216)。
続いて、サーバノード120は、モジュール記憶部111Aに記憶されたモジュールを配備先ノードIDに対応するノードへ送信し(ステップS217)、図25のステップS401の処理に戻る。
その後、サーバノード120は、全てのモジュールの配備が終了するまで(ステップS209否定)、上記のステップS401〜ステップS217までの処理を繰り返し実行する。そして、全てのモジュールの配備が終了すると(ステップS209肯定)、処理を終了する。
[実施例2の効果]
上述してきたように、本実施例に係るサーバノード120は、ネットワークに接続された複数のノードのそれぞれが通信可能な状態にあるか否かを監視する。そして、サーバノード120は、いずれかのノードが通信不能な状態になった場合に、通信不能な状態になったノードから受信された経路情報を削除する。そして、サーバノード120は、通信不能な状態になったノードから受信された経路情報が削除された経路情報に基づいて、前記複数のノード間の接続情報を生成する。このため、サーバノード120は、センサネットワークからノードが削除される場合にも、下位側のノードにモジュールを適切に配備することができる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、その他の実施例にて実施されても良い。そこで、以下では、その他の実施例について説明する。
上記の実施例では、あるLANで割り当てられたIPアドレスを経路情報として用いる場合を説明したが、本発明はこれに限定されるものではない。例えば、WAN(Wide Area Network)側のIPアドレスやMAC(Media Access Control)アドレスなど、ルータ10やホストを識別するために割り当てられた複数のアドレスを組み合わせて用いることもできる。このような場合には、例えば、複数のアドレスの組み合わせが経路情報として経路情報記憶部112Aに格納されることとなる。
図27は、経路情報記憶部に記憶される情報の構成例を示す図である。図27に示す例では、経路情報記憶部112Aは、送信元ノードID、hop数、IPアドレス及びWAN側IPアドレスが対応付けられたデータを記憶する。一例としては、このWAN側IPアドレスは、下位ノードがUPnP(Universal Plug and Play)プロトコル等を用いて上位ノードを自動認識することによって検出される。また、他の例としては、トポロジを生成するために、トポロジ生成部113によって参照される。
一態様としては、IPアドレス及びWAN側IPアドレスの組み合わせを経路情報として用いることで、トポロジ生成部113によってトポロジが生成される。図27に示す例では、「温度センサX」の上位ノードになり得るノードとしては、「GW−X」、「GW−Z」及び「クラウド」が挙げられる。このうち、「GW−X」のhop数「1」に対応付けられたIPアドレス「192.168.100.1」及びWAN側IPアドレス「1.1.10.2」は、「温度センサX」のhop数「1」に対応付けられたIPアドレス及びWAN側IPアドレスと一致する。このため、IPアドレス「192.168.100.1」及びWAN側IPアドレス「1.1.10.2」を、「温度センサX」及び「GW−X」が共通して経由するルータ10又はホストのIPアドレスとして特定する。また、「GW−Z」のhop数「1」に対応付けられたIPアドレス「1.1.10.1」は、「温度センサX」のhop数「2」に対応付けられたIPアドレスと一致する。このため、IPアドレス「1.1.10.1」を、「温度センサX」及び「GW−Z」が共通して経由するルータ10又はホストのIPアドレスとして特定する。また、「クラウド」のhop数「1」に対応付けられたIPアドレス「1.1.1.10」は、「温度センサX」のhop数「3」に対応付けられたIPアドレスと一致する。このため、IPアドレス「1.1.1.10」を、「温度センサX」及び「クラウド」が共通して経由するルータ10又はホストのIPアドレスとして特定する。
このように、「温度センサX」と同一の経路を経由する上位ノードとして、「GW−X」、「GW−Z」及び「クラウド」の3つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「GW−X」は、「温度センサX」のhop数「1」に対応付けられており、「GW−Z」は、「温度センサX」のhop数「2」に対応付けられており、「クラウド」は、「温度センサX」のhop数「3」に対応付けられている。よって、下位ノード「温度センサX」の上位ノードとして「GW−X」が特定される。
また、図27に示す例では、「湿度センサX」の上位ノードになり得るノードとしては、「GW−X」、「GW−Z」及び「クラウド」が挙げられる。このうち、「GW−X」のhop数「1」に対応付けられたIPアドレス「192.168.100.1」及びWAN側IPアドレス「1.1.10.2」は、「湿度センサX」のhop数「1」に対応付けられたIPアドレス及びWAN側IPアドレスと一致する。このため、IPアドレス「192.168.100.1」及びWAN側IPアドレス「1.1.10.2」を、「湿度センサX」及び「GW−X」が共通して経由するルータ10又はホストのIPアドレスとして特定する。また、「GW−Z」のhop数「1」に対応付けられたIPアドレス「1.1.10.1」は、「湿度センサX」のhop数「2」に対応付けられたIPアドレスと一致する。このため、IPアドレス「1.1.10.1」を、「湿度センサX」及び「GW−Z」が共通して経由するルータ10又はホストのIPアドレスとして特定する。また、「クラウド」のhop数「1」に対応付けられたIPアドレス「1.1.1.10」は、「湿度センサX」のhop数「3」に対応付けられたIPアドレスと一致する。このため、IPアドレス「1.1.1.10」を、「湿度センサX」及び「クラウド」が共通して経由するルータ10又はホストのIPアドレスとして特定する。
このように、「湿度センサX」と同一の経路を経由する上位ノードとして、「GW−X」、「GW−Z」及び「クラウド」の3つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「GW−X」は、「湿度センサX」のhop数「1」に対応付けられており、「GW−Z」は、「湿度センサX」のhop数「2」に対応付けられており、「クラウド」は、「湿度センサX」のhop数「3」に対応付けられている。よって、下位ノード「湿度センサX」の上位ノードとして「GW−X」が特定される。
また、図27に示す例では、「温度センサY」の上位ノードになり得るノードとしては、「GW−Z」及び「クラウド」が挙げられる。このうち、「GW−Z」のhop数「1」に対応付けられたIPアドレス「1.1.10.1」は、「温度センサY」のhop数「2」に対応付けられたIPアドレスと一致する。このため、IPアドレス「1.1.10.1」を、「温度センサY」及び「GW−Z」が共通して経由するルータ10又はホストのIPアドレスとして特定する。また、「クラウド」のhop数「1」に対応付けられたIPアドレス「1.1.1.10」は、「温度センサY」のhop数「3」に対応付けられたIPアドレスと一致する。このため、IPアドレス「1.1.1.10」を、「温度センサY」及び「クラウド」が共通して経由するルータ10又はホストのIPアドレスとして特定する。
このように、「温度センサY」と同一の経路を経由する上位ノードとして、「GW−Z」及び「クラウド」の2つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「GW−Z」は、「温度センサX」のhop数「2」に対応付けられており、「クラウド」は、「温度センサY」のhop数「3」に対応付けられている。よって、下位ノード「温度センサY」の上位ノードとして「GW−Z」が特定される。
また、図27に示す例では、「湿度センサY」の上位ノードになり得るノードとしては、「GW−Z」及び「クラウド」が挙げられる。このうち、「GW−Z」のhop数「1」に対応付けられたIPアドレス「1.1.10.1」は、「湿度センサY」のhop数「2」に対応付けられたIPアドレスと一致する。このため、IPアドレス「1.1.10.1」を、「湿度センサY」及び「GW−Z」が共通して経由するルータ10又はホストのIPアドレスとして特定する。また、「クラウド」のhop数「1」に対応付けられたIPアドレス「1.1.1.10」は、「湿度センサY」のhop数「3」に対応付けられたIPアドレスと一致する。このため、IPアドレス「1.1.1.10」を、「湿度センサY」及び「クラウド」が共通して経由するルータ10又はホストのIPアドレスとして特定する。
このように、「湿度センサY」と同一の経路を経由する上位ノードとして、「GW−Z」及び「クラウド」の2つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「GW−Z」は、「湿度センサX」のhop数「2」に対応付けられており、「クラウド」は、「湿度センサY」のhop数「3」に対応付けられている。よって、下位ノード「湿度センサY」の上位ノードとして「GW−Z」が特定される。
また、図27に示す例では、「GW−X」の上位ノードになり得るノードとしては、「GW−Z」及び「クラウド」が挙げられる。このうち、「GW−Z」のhop数「1」に対応付けられたIPアドレス「1.1.10.1」は、「GW−X」のhop数「2」に対応付けられたIPアドレスと一致する。このため、IPアドレス「1.1.10.1」を、「GW−X」及び「GW−Z」が共通して経由するルータ10又はホストのIPアドレスとして特定する。また、「クラウド」のhop数「1」に対応付けられたIPアドレス「1.1.1.10」は、「GW−X」のhop数「3」に対応付けられたIPアドレスと一致する。このため、IPアドレス「1.1.1.10」を、「GW−X」及び「クラウド」が共通して経由するルータ10又はホストのIPアドレスとして特定する。
このように、「GW−X」と同一の経路を経由する上位ノードとして、「GW−Z」及び「クラウド」の2つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「GW−Z」は、「GW−X」のhop数「2」に対応付けられており、「クラウド」は、「GW−X」のhop数「3」に対応付けられている。よって、下位ノード「GW−X」の上位ノードとして「GW−Z」が特定される。
また、図27に示す例では、「GW−Z」の上位ノードになり得るノードとしては、「クラウド」が挙げられる。この「クラウド」のhop数「1」に対応付けられたIPアドレス「1.1.1.10」は、「GW−Z」のhop数「2」に対応付けられたIPアドレスと一致する。このため、IPアドレス「1.1.1.10」を、「GW−Z」及び「クラウド」が共通して経由するルータ10又はホストのIPアドレスとして特定する。よって、下位ノード「GW−Z」の上位ノードとして「クラウド」が特定される。
このように、開示の技術は、ルータ10やホストを識別するために割り当てられた複数のアドレスを組み合わせて用いることができる。これによれば、例えば、NAT(Network Address Translation)を利用したネットワークのように、同一のプライベートIPアドレスが複数のネットワークで使用される場合においても、開示の技術を適用することができる。
また、上記の実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図2,21に示したサーバノード110,120の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、サーバノード110,120の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
[プログラム]
図28は、イベント収集プログラムを実行するコンピュータの一例を示す図である。図28に示すように、コンピュータ400は、各種演算処理を実行するCPU401と、ユーザからデータの入力を受け付ける入力装置402と、モニタ403とを有する。また、コンピュータ400は、記憶媒体からプログラム等を読み取る媒体読み取り装置404と、他の装置と接続するためのインターフェース装置405と、他の装置と無線により接続するための無線通信装置406とを有する。また、コンピュータ400は、各種情報を一時記憶するRAM(Random Access Memory)307と、ハードディスク装置408とを有する。また、各装置401〜408は、バス409に接続される。
ハードディスク装置408には、上記の図2,21に示した経路情報受信部112、トポロジ生成部113、配備先決定部117、送信先情報送信部118及びモジュール送信部119の各処理部と同様の機能を有するイベント収集プログラムが記憶される。また、ハードディスク装置408には、イベント収集プログラムを実現するための各種データが記憶される。
CPU401は、ハードディスク装置408に記憶された各プログラムを読み出して、RAM407に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータを上記の図2,21に示した経路情報受信部112、トポロジ生成部113、配備先決定部117、送信先情報送信部118及びモジュール送信部119として機能させることができる。
なお、上記のイベント収集プログラムは、必ずしもハードディスク装置408に記憶されている必要はない。例えば、コンピュータが読み取り可能な記録媒体に記憶されたプログラムを、コンピュータ400が読み出して実行するようにしても良い。コンピュータが読み取り可能な記録媒体は、例えば、CD−ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等に接続された装置にこのプログラムを記憶させておき、コンピュータ400がこれらからプログラムを読み出して実行するようにしても良い。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータによって実行されるイベント収集方法であって、
コンピュータが、
ネットワークに接続された複数のノードから、当該ネットワークの経路に関連する経路情報を受信し、
受信した経路情報に基づいて、前記複数のノード間の接続情報を生成し、
生成した接続情報によって示されるノード間でイベントが送信される場合に、前記複数のノードのうち一又は複数のノードに、イベントを処理するモジュールを配備可能か否か判定し、
前記ノードに前記モジュールを配備可能であれば、前記複数のノードのそれぞれについて設定されたイベントの送信先を、生成した接続情報によって示されるノードに変更するとともに、当該ノードに当該モジュールを配備する
各処理を実行することを特徴とするイベント収集方法。
(付記2)前記複数のノードのそれぞれが通信可能な状態にあるか否かを監視し、
前記複数のノードのうちいずれかのノードが通信不能な状態になった場合に、通信不能な状態になったノードから受信された経路情報を削除する処理をさらに実行し、
前記生成する処理は、通信不能な状態になったノードから受信された経路情報が削除された経路情報に基づいて、前記複数のノード間の接続情報を生成することを特徴とする付記1に記載のイベント収集方法。
(付記3)コンピュータに、
ネットワークに接続された複数のノードから、当該ネットワークの経路に関連する経路情報を受信し、
受信した経路情報に基づいて、前記複数のノード間の接続情報を生成し、
生成した接続情報によって示されるノード間でイベントが送信される場合に、前記複数のノードのうち一又は複数のノードに、イベントを処理するモジュールを配備可能か否か判定し、
前記ノードに前記モジュールを配備可能であれば、前記複数のノードのそれぞれについて設定されたイベントの送信先を、生成した接続情報によって示されるノードに変更するとともに、当該ノードに当該モジュールを配備する
各処理を実行させることを特徴とするイベント収集プログラム。
(付記4)前記複数のノードのそれぞれが通信可能な状態にあるか否かを監視し、
前記複数のノードのうちいずれかのノードが通信不能な状態になった場合に、通信不能な状態になったノードから受信された経路情報を削除する処理をさらに実行させ、
前記生成する処理は、通信不能な状態になったノードから受信された経路情報が削除された経路情報に基づいて、前記複数のノード間の接続情報を生成することを特徴とする付記3に記載のイベント収集プログラム。
(付記5)ネットワークに接続された複数のノードから、当該ネットワークの経路に関連する経路情報を受信し、
受信した経路情報に基づいて、前記複数のノード間の接続情報を生成し、
生成した接続情報によって示されるノード間でイベントが送信される場合に、前記複数のノードのうち一又は複数のノードに、イベントを処理するモジュールを配備可能か否か判定し、
前記ノードに前記モジュールを配備可能であれば、前記複数のノードのそれぞれについて設定されたイベントの送信先を、生成した接続情報によって示されるノードに変更するとともに、当該ノードに当該モジュールを配備する
各処理を実行することを特徴とする情報処理装置。
(付記6)前記複数のノードのそれぞれが通信可能な状態にあるか否かを監視し、
前記複数のノードのうちいずれかのノードが通信不能な状態になった場合に、通信不能な状態になったノードから受信された経路情報を削除する処理をさらに実行させ、
前記生成する処理は、通信不能な状態になったノードから受信された経路情報が削除された経路情報に基づいて、前記複数のノード間の接続情報を生成することを特徴とする付記5に記載の情報処理装置。