(57)【要約】      （修正有）【課題】マルチホップ無線ネットワークにおいて、ＡＣＫ情報の送信を効率よく行う通信装置を提供する。【解決手段】通信装置１１０は、他の第１通信装置の識別子に基づき、関数（ハッシュ関数等）を計算して得た値に対応するビットを、予め与えられたビットマップにおいて設定することにより、第１ビットマップデータ（複数の送信元に対するＡＣＫ情報）を生成するビットマップ生成部２１２と、第１ビットマップデータを含む第１メッセージを送信するメッセージ送信部２５２とを備える。【選択図】図６
2018050186.tif 000002
【特許請求の範囲】
【請求項１】
他の第１通信装置の識別子に基づく関数の計算値を表す第１ビットマップデータを生成するビットマップデータ生成部と、
前記第１ビットマップデータを含む第１メッセージを送信する通信部と  
を備えた通信装置。
【請求項２】
前記他の第１通信装置は、前記ビットマップデータ生成部が前記第１ビットマップデータを生成する前に前記通信部が受信した前記第２メッセージの送信元である、
請求項１に記載の通信装置。
【請求項３】
前記通信部は、前記他の第１通信装置からの第３メッセージを予め定めたタイミングまでに受信していない、
請求項１に記載の通信装置。
【請求項４】
自装置と通信可能な前記第１通信装置に関する情報を保持する保持部をさらに有する、
請求項３に記載の通信装置。
【請求項５】
前記生成部は、さらに自装置の識別子に基づく前記関数の計算値を表す第２ビットマップデータを生成し、
前記通信部は、前記第２ビットマップを含む前記第１メッセージを送信する
請求項１に記載の通信装置。
【請求項６】
前記ビットマップ生成部は、前記第１通信装置のそれぞれに通知する値に基づく関数の計算値も含む前記第１ビットマップデータを生成する
請求項１ないし４のいずれか一項に記載の通信装置。
【請求項７】
ビットマップ検証部をさらに備え、
前記通信部は、第３ビットマップを含む第４メッセージを受信し、
前記ビットマップ検証部は、自装置の識別子に基づく前記関数の計算値が、前記第３ビットマップに含まれるか否かを検証する、
請求項１に記載の通信装置。
【請求項８】
前記制御部は、前記検証の結果、前記ビットの少なくとも１つが第２値のときは、再送のデータを含む第４メッセージを、前記第３メッセージの送信元である通信装置に送信するよう制御する
請求項７に記載の通信装置。
【請求項９】
前記制御部は、前記検証の結果、前記ビットのすべてが前記第１値のときは、再送のデータを含む第４メッセージを、前記第３メッセージの送信元である通信装置に送信するよう制御する
請求項７に記載の通信装置。
【請求項１０】
他の第１通信装置の識別子に基づく関数の計算値を表す第１ビットマップデータを生成するステップと、
前記第１ビットマップデータを含む第１メッセージを送信するステップと  
をコンピュータに実行させるためのプログラム。
【請求項１１】
請求項１に記載の無線通信装置と、
請求項７に記載の無線通信装置と、
を備える無線通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信装置およびコンピュータプログラムに関する。
【背景技術】
【０００２】
複数のノードにより構成される無線ネットワークにおいては、各ノードに搭載されるセンサで検出されるセンサデータをコンセントレータに集約するように無線通信を行う。ノードには、電池または環境発電（エナジー・ハーベスト）を電源として省電力動作を行うものがある。無線ネットワークでは、省電力化のため間欠通信を用いることが一般的である。限られた通信資源を活用するためには通信を効率化する必要があり、通信の効率化には、一度に多くのノードと通信して通信回数を減らすことが可能であるマルチキャストまたはブロードキャストを用いることが有効である。特に、システムの高信頼性を確保するためには、センサデータの送信に対するＡＣＫ情報（肯定応答：ＡＣＫｎｏｗｌｅｄｇｅｍｅｎｔ）またはＮＡＣＫ情報（否定応答：Ｎｅｇａｔｉｖｅ  ＡＣＫｎｏｗｌｅｄｇｅｍｅｎｔ）を効率よく返信する必要がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１５−５０６６３２号公報
【特許文献２】特許第５６６１６２７号公報
【非特許文献】
【０００４】
【非特許文献１】http://ci.nii.ac.jp/naid/110007999593（瀧口貴啓、石田繁巳、猿渡俊介、南正輝、森川博之、「ブルームフィルタを用いたウェイクアップ型無線通信システムの消費電力評価」、信学技報）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施形態は、他の通信装置と効率よく通信を行うことを可能にする通信装置およびコンピュータプログラムを提供する。
【課題を解決するための手段】
【０００６】
本発明の実施形態としての通信装置は、他の第１通信装置の識別子に基づく関数の計算値を表す第１ビットマップデータを生成するビットマップ生成部と、前記第１ビットマップデータを含む第１メッセージを送信する通信部とを備える。
【図面の簡単な説明】
【０００７】
【図１】第１実施形態に係るマルチホップ無線ネットワークの一例を示す図。
【図２】マルチホップ無線ネットワークに設定した伝送経路の例を示す図。
【図３】ホップ数に応じたランクを説明するための図。
【図４】ランクの算出方法を説明するための図。
【図５】ランクの算出方法の他の例を説明するための図。
【図６】第１実施形態に係る無線通信装置の一例を示すブロック図。
【図７】第１実施形態に係るメッセージフォーマットの一例を示す図。
【図８】第１実施形態に係る無線通信装置のハードウェア構成例を示すブロック図。
【図９】ハッシュ関数の入力と出力の例を示す図。
【図１０】図９とは別のハッシュ関数の入力と出力の例を示す図。
【図１１】第１実施形態に係るネットワークの一例を示す図。
【図１２】第１実施形態に係るハッシュ値列とブルームフィルタの一例を示す図。
【図１３】第１実施形態に係るノードの動作のフローチャート。
【図１４】第２実施形態に係るメッセージフォーマットの一例を示す図。
【図１５】第２実施形態に係るノード間の接続の解除の一例を示す図。
【図１６】第３実施形態に係るマルチホップ無線ネットワークの一例を示す図。
【図１７】第３実施形態に係るメッセージフォーマットの一例を示す図。
【図１８】第３実施形態に係るハッシュ値列の一例を示す図。
【図１９】第３実施形態に係るメッセージフォーマットの別の例を示す図。
【図２０】第３実施形態に係るマルチホップ無線ネットワークの別の例を示す図。
【図２１】第４実施形態に係るマルチホップ無線ネットワークの一例を示す図。
【図２２】第５実施形態に係るメッセージフォーマットの一例を示す図。
【図２３】第５実施形態に係るメッセージフォーマットの別の例を示す図。
【図２４】第５実施形態に係るマルチホップ無線ネットワークの別の例を示す図。
【図２５】第６実施形態に係る無線通信装置の一例を示す図。
【図２６】第６実施形態に係る子ノードの処理の一部を示すフローチャート。
【図２７】第６実施形態に係る親ノードの処理の一部を示すフローチャート。
【図２８】カウンティングフィルタの例を示す図。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら、本発明の実施形態について説明する。
【０００９】
（第１実施形態）
第１実施形態に係る無線通信装置は、無線ネットワークにおいて、１つまたは複数のノードに対する肯定応答（誤りなくメッセージを受信出来たときに返す応答。以下、ＡＣＫ情報と記述する）をブルームフィルタでまとめて表現して送信することにより、ＡＣＫ情報の送信を効率よく行うことができる。無線ネットワークは、例えば、マルチホップ型である。以下、本実施形態について詳細に説明する。
【００１０】
図１は、本実施形態に係る通信装置である無線通信装置を含むマルチホップ無線ネットワークを示す。本実施形態に係るネットワークでは、無線でメッセージを送受信する無線通信装置１１０Ａ乃至１１０Ｈと、無線により無線通信装置１１０Ａ乃至１１０Ｈからデータを集約するコンセントレータ１２０を備えている。無線通信装置１１０Ａ乃至１１０Ｈを特に区別しない場合、個々の無線通信装置を無線通信装置１１０と記述する。無線通信装置１１０Ａ乃至１１０Ｈを、ノードＡ〜Ｈと呼ぶ場合もある。図中の点線は、ノード間で直接通信することが可能であることを示す。直接通信することは、２つのノードのうち一方が無線通信で送信したメッセージを他方のノードが他のノードを介さずに受信することを言う。
【００１１】
無線通信装置１１０およびコンセントレータ１２０は、マルチホップ無線ネットワークのノードを構成している。無線通信装置１１０を通してデータはバケツリレーのようにしてコンセントレータ１２０に転送される。例えば、ノードＤはコンセントレータ１２０と通信できないが、ノードＧまたはノードＨとは通信可能である。このため、ノードＤが送信したメッセージに含まれるデータをノードＧまたはノードＨが中継すれば、ノードＤのデータをコンセントレータ１２０に届けることができる。各無線通信装置１１０が送信するメッセージは、無線通信装置１１０自身で生成されたデータ、他の無線通信装置１１０から受信したデータ、または無線通信装置１１０自身の状態を表すデータを含んでもよい。このように、データは、マルチホップによりコンセントレータ１２０へと集約される。無線通信装置１１０自身で生成されるデータは、一例として、ノードに搭載されるセンサで検出されるデータ、またはネットワークデータ（後述）などがある。無線通信装置１１０は、具体的には、所謂エンドデバイスノード、末端装置、ルータノード、または中継装置などと呼ばれる装置である。コンセントレータ１２０は、コーディネータ、集約装置、ゲートウェイ、サーバなどと呼ばれる装置である。
【００１２】
図２は、図１の無線ネットワークに設定した伝送経路の例を示す。ノードを結合する太線は、各ノードからコンセントレータまでの伝送経路を示し、細線はバックアップとなり得る経路を示す。あるノードが、同時に複数の伝送経路を用いて、複数のノードに対してメッセージを送信する形態も可能である。この場合、太線のリンクに加えて、細線のリンクも使用して、メッセージを伝送する。
【００１３】
本ネットワークの通信方式の一例として、ＴＤＭＡ（Ｔｉｍｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ：時分割通信方式）方式がある。ＴＤＭＡ方式では、時間フレームがスロットと呼ばれる小さなブロックに分割され、各無線通信装置１１０は１つの時間フレームに少なくとも１つの受信用スロットと送信用スロットが割り当てられている。受信用スロットにおいては、無線通信装置１１０は、他の無線通信装置からメッセージを受信することができる。送信用スロットにおいては、無線通信装置１１０は、他の無線通信装置へメッセージを送信することができる。無線通信装置１１０は、スロット毎にアクティブ状態とスリープ状態を切り替え可能であってもよい。またＴＤＭＡ方式では、予め定められたタイミングで通信が実行されるため、通信の定時性や伝送遅延が保証しやすく、これらの特性が重要となるシステムに対しては後述のＣＳＭＡ／ＣＡ方式よりもＴＤＭＡ方式の方が好ましい場合がある。
【００１４】
スロットの割り当ては、管理装置またはコンセントレータが行う。スロットの割り当ては、管理装置ではなく、ノード間の協調動作によって決めてもよい。
【００１５】
ノードは、自ノードの送信用スロットが到来するまでは、他のノードから受信したメッセージに含まれるデータを内部に蓄積しておく。自ノードのスロットが到来すると、例えば、蓄積しておいたデータと自ノードで生成したデータとを含むメッセージを送信する。またメッセージを受信した各ノードはＡＣＫ情報を生成し、当該ＡＣＫ情報を含むメッセージを送信する。本実施形態では、複数のノードに対するＡＣＫ情報をまとめて含むブルームフィルタを送信することで、複数のノードに対する送達確認応答を効率的に行う。
【００１６】
ＴＤＭＡ方式のネットワークでは、使用周波数が１つの場合、例えばノード毎に異なる送信スロットを割り当てる。ただし、複数のノードが同一のスロットで送信を行っても互いに電波干渉を起こす可能性がない場合には、複数のノードが１スロットに割り当てられていてもよい。
【００１７】
本実施形態の一例におけるノードは、有線で電源を供給されてもよいし、電池、環境発電、または無線電力伝送などにより電源を供給されてもよい。
【００１８】
ランクについて説明する。
【００１９】
ランクとは、無線通信装置１１０からコンセントレータ１２０までの通信経路の品質を示す値である。一例として、コンセントレータ１２０のランクを、最小の値（例えば０）に設定し、コンセントレータ１２０との通信品質が低くなるほど、値が大きくなるように各ノードのランクを設定する。一例として、各ノードは自ノードのランクが、最小または最大となるように、中継先のノード（以下、中継ノード）を選択することによって、データをコンセントレータへと伝送していくことができる。コンセントレータのランクを最小の値として定義しても、最大の値として定義しても、本発明が適用できることは言うまでも無い。
【００２０】
ランクの第１設定方法として、図３に示すように、コンセントレータ１２０までのホップ数をランクとする方法がある。
【００２１】
また、ランクの第２設定方法として、図４に示すように、各ノードおよびコンセントレータ間の無線通信のＲＳＳＩ（受信信号強度、Ｒｅｃｅｉｖｅｄ  Ｓｉｇｎａｌ  Ｓｔｒｅｎｇｔｈ  ＩｎｄｉｃａｔｉｏｎまたはＲｅｃｅｉｖｅｄ  Ｓｉｇｎａｌ  Ｓｔｒｅｎｇｔｈ  Ｉｎｄｉｃａｔｏｒ）に基づいて設定する方法がある。コンセントレータと直接通信可能なノードは、コンセントレータとの通信におけるＲＳＳＩをランクとする。コンセントレータと直接通信できないノードは、当該ノードと中継ノードとの間のＲＳＳＩと、中継ノードとコンセントレータ間のＲＳＳＩの絶対値の和に基づいてランクが設定される。当該ノードからコンセントレータまでの経路が複数ある場合には、一の経路に基づいてランクが設定される。
【００２２】
ランクの第３の設定方法として、ノードｉのランクＲｉは、中継ノードｊのランクＲｊに、ノードｉとノードｊ間のＲＳＳＩの絶対値と係数ｋとの和を減算することにより算出するものである。このことを式で表現すると、以下の通りである。
Ｒｉ＝Ｒｊ−ＲＳＳＩｉｊ＋ｋ
ランクＲｊから係数ｋとＲＳＳＩijの積を減算した結果をランクＲiとしてもよい。
例えば、ｋ＝−５０とおくと、ノードＨ、ノードＧおよびノードＤのランクは、それぞれ１０、４０、３０となる。
【００２３】
ランクの第４の算出方法は、図５に示すように送信ノードからコンセントレータまでの伝送成功率をランクとするものである。２つのノード間での無線通信において、送信ノードが何回同じ内容の送信を行えば受信ノードにデータが届くのかの期待値（ＥＸＴ、Ｅｘｐｅｃｔｅｄ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｕｎｔ）に基づいてランクを設定することができる。
【００２４】
ランクの第５の設定方法は、通信成功率の実測値、またはＳ／Ｎ比（信号雑音比ＳＮＲ：Ｓｉｇｎａｌ  Ｎｏｉｓｅ  Ｒａｔｉｏ）を使用してランクを算出するものである。
【００２５】
さらにランクは、複数の値の組み合わせであってもかまわない。例えば、ランクは、ホップ数と、受信電力から求められるエラーレートと、システム稼働開始時から現時点までのノード間通信成功率との３つの値の組み合わせであってもよい。自ノードをコンセントレータ１２０までの転送経路に含んでいるノードである子孫ノードの数など、中継データの集中の度合いを示す数値をランク算出のパラメータとすることもできる。
【００２６】
なお、ランクは、ハードコーディングまたは手動設定で決定するものでも良いし、ノードの実際の配置または無線伝搬等のパラメータの変動に応じて、自動的に設定し更新するものであっても良い。
【００２７】
図６は、無線通信装置１１０の構成の一例を示す。無線通信装置１１０は、ビットマップ生成部２１２を含む送信メッセージ生成部２１０を備える。無線通信装置１１０は、さらに、ノードデータベース２００と、送信メッセージ生成部２１０と、受信メッセージ解析部２２０と、情報記憶部２３０と、センサ情報取得部２４０と、無線通信部２５０と、制御部２５９とを備えることができる。送信メッセージ生成部は、さらにペイロード生成部２１４を含んでもよい。
【００２８】
ノードデータベース２００は、自ノードが属するネットワーク内の各ノードに関する情報を記憶している。例えば各ノードの識別子であるノードＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）を記憶している。またネットワーク内のノード間の関係に関する情報、例えば自ノードの親ノードおよび子ノードの情報も、ノードデータベース２００に記録されている。親ノードは、自ノードと通信可能なノードであって、自ノードから送信するデータの宛先であり、転送経路上の１つ上位のノードである。子ノードは、自ノードと通信可能なノードであって、自ノードを宛先としてデータを送信するノードであり、転送経路上の一つ下位のノードである。ノードデータベース２００は、自ノード、親ノードおよび子ノードに割り当てられたスロットの番号等を記憶していてもよい。ノードＩＤは、ノードを固有に識別できる値であれば、ハードウェアまたはファームウェアの製造時やネットワーク始動時にハードコーディングされるものであっても、ネットワーク運転中に動的に決まるものであってもよい。ノードＩＤの一例として、ＭＡＣアドレスまたはＩＰアドレス等のアドレスを用いてもよいし、ネットワークに参加する各ノードに、ネットワークの管理装置（図示せず）またはコンセントレータ１２０が固有に割り当てる値でもよい。各ノードは、複数のＩＤを持っていてもよい。また、ノードデータベース２００には、各ノードに関するネットワークデータも記憶されている。ネットワークデータとは、ノードの状態など、各種のネットワーク品質に関する情報のデータことである。代表的なネットワークデータはランクやノード間のＲＳＳＩであるが、その他に直接通信できるノードである近隣ノードのＩＤ一覧、各ノードの電池残量や増減の傾向、環境発電デバイスの有無や発電量、パケットエラーレート、累積エラー回数などを含んでもよい。
【００２９】
センサ情報取得部２４０は、センサを用いて、センサデータを取得する。センサがセンサ情報取得部２４０に含まれていてもよい。センサデータとして、例えば、温度、湿度、加速度、赤外線（人感センサ）、照度、色、重さ、ゆがみ量、音などのデータがある。この場合、無線通信装置１００は、例えば中継専用のノードであったり、アクチュエータなどの制御対象を備えたノードであったりする。無線通信装置１１０は、センサとアクチュエータの双方を備えたノードであってもよい。
【００３０】
無線通信部２５０は、他のノード（他の無線通信装置１１０）との間でメッセージを送受信する。無線通信部２５０は、メッセージ送信部２５２と、メッセージ受信部２５４とを備える。メッセージ送信部２５２は、送信メッセージ生成部２１０が生成したメッセージを、アンテナを介して送信する。メッセージ受信部２５４は、当該アンテナを介して、メッセージを受信し、受信したメッセージを受信メッセージ解析部２２０へ送る。
【００３１】
送信メッセージ生成部２１０は、ビットマップ生成部２１２と、ペイロード生成部２１４とを用いて、送信用のメッセージを生成する。
【００３２】
ビットマップ生成部２１２は、一期間にメッセージ受信部２５４で受信に成功したメッセージの送信元に対するＡＣＫ情報を表すブルームフィルタである、ビットマップ（ビット列）を生成する。ブルームフィルタは、複数の送信元に対するＡＣＫ情報を表してもよい。より詳細には、例えば、当該送信元であるノードの識別子に基づき関数（ハッシュ関数等）を計算して得た値に対応するビットを、予め与えられたビットマップにおいて設定することにより、ビットマップを生成する。例えば、ビットは、１または０であり、本実施形態では１とする。一期間は、例えば前回の送信用スロットの直後から、次回の送信用スロットの直前までの期間である。ＡＣＫ情報を表すブルームフィルタは、ＡＣＫブルームフィルタと呼ぶ。ブルームフィルタの生成方法およびハッシュ関数の詳細は後述する。
【００３３】
ペイロード生成部２１４は、送信するデータを取得し、当該データを用いて、メッセージのボディフィールド（ペイロードフィールド）に格納するデータ（ペイロードデータ）を生成する。
【００３４】
送信メッセージ生成部２１０は、ビットマップ生成部２１２により生成したブルームフィルタが所定のフィールドに設定されたメッセージを生成する。メッセージには、例えば、ペイロード生成部２１４により生成されたペイロードデータ、宛先ＩＤ、ペイロード長などがさらに設定されていてもよい。送信するメッセージによってメッセージのフォーマットも異なってよい。
【００３５】
図７（Ａ）〜図７（Ｄ）は、本実施形態に係るメッセージのフォーマット例を示す。
【００３６】
図７（Ａ）に示すように、メッセージフォーマットは、ＡＣＫブルームフィルタフィールドを含む。ＡＣＫブルームフィルタフィールドには、ＡＣＫブルームフィルタ（ビットマップ）が格納される。メッセージフォーマットは、さらに宛先ＩＤ０フィールドを含んでもよい。宛先ＩＤフィールドには宛先ＩＤが格納される。メッセージフォーマットは、さらに他のフィールドを含んでもよい。
図７（Ｂ）に示すように、メッセージフォーマットは、ペイロード長フィールドとペイロードフィールドとをさらに含んでもよい。ペイロード長フィールドには、例えばバイト単位で表されたペイロードフィールドの長さを表す情報が格納される。ペイロードフィールドは、宛先ノードに送信するデータが格納される。
図７（Ｃ）に示すように、メッセージフォーマットは、複数の宛先ＩＤフィールドを含んでもよい。複数の宛先ノードＩＤフィールドそれぞれに宛先ノードＩＤを格納することにより、複数の宛先ノードにデータを送信することができる。
図７（Ｄ）に示すように、メッセージフォーマットは、送信元ＩＤフィールドをさらに含んでもよい。送信元ＩＤフィールドには、自ノード（メッセージを送信するノード）のＩＤが格納される。
ＡＣＫ情報を送信不要の場合は、図７（Ｂ）〜図７（Ｄ）においてＡＣＫブルームフィルタフィールドを省略したフォーマットを用いればよい。
さらに、特定のフィールドに定められたデータ以外の値を設定して、定められたデータを送信しなくてもよい。受信側のノードでは、特定のフィールドにあるデータを無視してもよい。
【００３７】
なお、図７（Ａ）〜図７（Ｄ）のフォーマットのフィールドの一部が削除されたり、別のフィールドが追加されたりしてもよい。また、フィールドの順番は、任意に変更されてもよい。
図７（Ａ）〜図７（Ｄ）のフォーマットは、一例として、ＭＡＣ層もしくはこれより上位層のアプリケーションのメッセージの場合を想定する。例えば宛先ＩＤ０フィールドまたは宛先ＩＤ１フィールドがＭＡＣ層のヘッダ内の受信先アドレスフィールドに対応してもよい。あるいは、宛先ＩＤ０フィールドまたは宛先ＩＤ１フィールドが、ＩＰパケットのヘッダ内の宛先アドレスフィールドに対応してもよい。
【００３８】
受信メッセージ解析部２２０は、ビットマップ検証部２２４を備えメッセージ受信部２５４が受け取ったメッセージの解析処理を行う。受信メッセージ解析部２２０は、さらに送信元ＩＤ解析部２２２を備えてもよい。
【００３９】
送信元ＩＤ解析部２２２は、メッセージに送信元ＩＤフィールドが含まれる場合、当該送信元ＩＤフィールドを解析して、メッセージを送信したノードを特定する。または、送信用スロットとノードとの関係を取得している場合、送信元ＩＤ解析部２２２は、メッセージを受信したスロットの番号から送信元となるノードを把握してもよい。または、ペイロードフィールド等他のフィールドにノードＩＤが含まれる場合に、当該ノードＩＤから送信元のノードを特定してもよい。
【００４０】
ビットマップ検証部２２４は、ＡＣＫブルームフィルタフィールド（ビットマップフィールド）からブルームフィルタを取得する。ビットマップ検証部２２４は、自ノードのＩＤに基づき関数（ハッシュ関数等）を計算する。取得したＡＣＫブルームフィルタにおける、当該関数の計算値に対応する一または複数のビットを特定し、特定したビットを検証する。より具体的に、例えば検証結果が陽性の場合（例えば、すべてのビットが第１値（例えば１）に一致する場合）、自ノードがブルームフィルタで指定され、自ノード宛のＡＣＫ情報が送信されたと判断する。これは、親ノードが自ノードの送信したメッセージの受信に成功されたことを意味する。一方、例えば、検証結果が陰性の場合（例えば、当該ビットのうち少なくとも１つビットが第２値（＝０）の場合）、自ノードが指定されておらず、自ノード宛にＡＣＫ情報が送信されていないと判断する。これは、親ノードが自ノードの送信したメッセージの受信に成功しなかったことを意味する。受信に成功しなかった場合として、メッセージ自体が親ノードに届かなかった場合や、親ノードにメッセージは届いたがパケットの検査でエラーが検出された場合などがある。
【００４１】
情報記憶部２３０は、各種情報を記憶する。例えば情報記憶部２３０は、センサ情報取得部２４０で検出したセンサデータを記憶する。センサデータは、検出された時刻またはスロットの番号等に関連づけて管理してもよい。また、情報記憶部２３０は、他のノードから受信したメッセージまたはメッセージに含まれる一部のフィールドの値（ペイロードフィールドのデータ等）を記憶する。当該メッセージまたはデータは、メッセージが受信されたスロットの番号に関連づけて管理されてもよい。また、他のノードに送信したメッセージまたはメッセージに含まれる一部のフィールドの値（ペイロードフィールドのデータ等）を記憶してもよい。当該メッセージまたはデータは、メッセージを送信したスロットの番号に関連づけて管理してもよい。
センサ情報取得部２４０は、ペイロード生成部２１４にセンサデータを送信してもよい。
【００４２】
制御部２５９は、無線通信装置１１０の各部の動作の制御を行う。例えば、制御部２５９は、管理装置と通信して、自装置に割り当てられたスロット、子ノードおよび親ノードに割り当てられたスロットの番号等を取得し、自装置の送受信を管理する。制御部２５９は、自ノードに割り当てられた送信用スロットで、メッセージを送信するよう制御する。また、制御部２５９は、１つまたは複数のハッシュ関数を管理する。本実施形態においては、ハッシュ関数は、制御部２５９内のバッファに記憶されている。ハッシュ関数は情報記憶部２３０に記憶され、ビットマップ生成部２１２が情報記憶部２３０からハッシュ関数を取得してもよい。ビットマップ生成部２１２は、ファームウェアにハードコーティングされたハッシュ関数を取得してもよいし、ネットワークパラメータなどから動的にハッシュ関数を生成してもよい。
ハッシュ関数は、ネットワーク内の全ノードおよびコンセントレータにおいて予め共有されている。
【００４３】
無線通信装置能を備えたコンピュータや、無線通信装置１１０と同一機種のハードウェアはコンセントレータ１２０として用いられることができる。集約されたデータは、コンセントレータ１２０において保存されてもよいし、さらに上位のサーバやクラウドシステム、インターネットへと転送されてもよい。コンセントレータ１２０は、１つのネットワークに１台であってもよいし、複数台存在していてもよい。
【００４４】
図８は、ノードのハードウェア構成の一例を示すブロック図である。無線通信装置は、プロセッサ３５１、メモリ３５２、ストレージ３５３、ネットワークインタフェース３５４を備え、これらがバス３５６を介して接続されている。ノードは、さらにセンサ３５５を備えてもよい。
【００４５】
プロセッサ３５１が、ストレージ３５３からプログラムを読み出して、メモリ３５２に展開して、実行することで、受信メッセージ解析部２２０と、送信メッセージ生成部２１０と、センサ情報取得部２４０と、制御部２５９との機能が実現される。プロセッサ３５１は、センサ３５５によって測定されたセンサデータを受信する。プロセッサ３５１は、センサ３５５のセンシングタイミングを制御してもよい。センサ３５５の個数は１つでも、複数でもよい。
【００４６】
メモリ３５２は、プロセッサ３５１が実行する命令、およびプロセッサ３５１が利用する各種データ等を一時的に記憶する。メモリ３５２、ＳＲＡＭ、ＤＲＡＭ等の揮発性メモリでも、ＮＡＮＤ、ＭＲＡＭ等の不揮発性メモリでもよい。ストレージ３５３は、プログラムやデータ等を永続的に記憶する記憶装置であり、例えば、ＨＤＤまたはＳＳＤ等である。メモリ３５２、ストレージ３５３、またはこれらの両方で、情報記憶部２３０、ノードデータベース２００、および制御部２５９内のバッファが構成される。プロセッサ３５１により取得されたセンサデータは、メモリ３５２、ストレージ３５３またはこれらの両方に格納される。また他のノードから受信したメッセージまたはそこに含まれるデータも、メモリ３５２，ストレージ３５３またはこれらの両方に格納される。
【００４７】
ネットワークインタフェース３５４は、無線または有線の通信を行うためのインタフェースであり、無線通信部２５０に対応する。ネットワークインタフェース３５４は、一例として、ＭＡＣ層等のデータリンク層および物理層のヘッダ処理、変調および復調等を行うベースバンド集積回路、ＡＤ変換回路、ＤＡ変換回路、およびアナログ処理等を行うＲＦ集積回路を備えていてもよい。アナログ処理は、ベースバンドおよび無線周波数間の周波数変換、帯域制御、増幅処理等を含む。ネットワークインタフェース３５４に、ＣＰＵ等のプロセッサを配置してもよい。ＴＣＰ／ＩＰ等を用いる場合、ＴＣＰ／ＩＰ等の処理を当該ネットワークインタフェース３５４上のＣＰＵで行ってもよいし、バス３５６に接続されたプロセッサ３５１で行ってもよい。ここではネットワークインタフェースを１つのみ示しているが、無線ネットワークインタフェースと有線ネットワークインタフェースなど、複数のネットワークインタフェースが搭載されていてもよい。ネットワークインタフェース３５４は、プロセッサ３５１により制御され、他のノードから受信したメッセージ、他のノードに送信するメッセージが、プロセッサ３５１との間でやりとりされても良い。ネットワークインタフェース３５４が、ＤＭＡ（ダイレクト・メモリ・アクセス）でメモリ３５２に直接、アクセスしてもよい。
センサ３５５はセンサデータ取得部２４０に対応し、センサデータを取得する。
【００４８】
ノードのハードウェア構成は、要求されるノードの機能に応じて、適宜、変形することができる。
【００４９】
本実施形態は、ブルームフィルタを用いて一度のメッセージ送信で、複数のノードにＡＣＫ情報を同時に通知することができる。以下、ハッシュ関数およびブルームフィルタについて説明する。
【００５０】
ハッシュ関数とは、一般には、あるデータが与えられた場合にそのデータを代表する数値を得る操作、または、その様な数値を得るための関数として定義される。
【００５１】
本実施形態で用いるハッシュ関数は、ある入力に対して出力がランダムであることが好ましい。ハッシュ関数の引数（入力値）が同じであれば、ハッシュ関数の出力値も同じである。このようなハッシュ関数として、ｍｄ５またはＳＨＡ−１などが知られている。例えば整数を引数とし、「引数を１６で割った余りを求める」関数を４  ｂｉｔ出力のハッシュ関数としてもよい。図９に、５ｂｉｔ入力／４ｂｉｔ出力のハッシュ関数例を模式的に示す。この関数は０から３１までの整数入力値ｘを、０から１５までの整数出力値ｙにランダムにマッピングする関数の例である。例えば入力がｘ＝（０，１，２，３）であった場合、出力はｙ＝  （１３，１，６，８）となる。
【００５２】
以下、ブルームフィルタについて説明する。ブルームフィルタとは、ある任意のデータｄがデータ集合Ｘに含まれるかどうかを、ハッシュ関数の応用により確率的に検査するためのフィルタである。
【００５３】
データ集合Ｘに基づき生成されたブルームフィルタＢＦ−Ｘに対して、定められた手続きを行うことで、あるデータｄがデータ集合Ｘに含まれるか否かを検証することができる。手続きの結果、ｐｏｓｉｔｉｖｅ（陽性）またはｎｅｇａｔｉｖｅ（陰性）という２通りの結果が得られる。
【００５４】
陰性の結果が得られた場合は、データ集合Ｘにデータｄが含まれている可能性は無い。一方、陽性の結果が得られた場合は、データ集合Ｘにデータｄが含まれる可能性がある。データ集合Ｘにデータｄが含まれていないにも拘わらず陽性の結果が得られる場合を、偽陽性と呼ぶ。
【００５５】
以下、ブルームフィルタの生成方法を述べる。
【００５６】
ブルームフィルタの生成には、以下のパラメータを用いる。
ｍ：ブルームフィルタを構成するビット列長（フィルタの長さ）
ｋ：ブルームフィルタに用いる独立したハッシュ関数の個数
【００５７】
ブルームフィルタの生成手順例は、以下の通りである。
手順１：長さｍのビットマップ（ビット列）Ｆを用意し、全て０にセットする。
手順２：値域が［１，ｍ］（１以上ｍ以下）となる、ｋ個の独立したハッシュ関数Ｈｉ（）（ただしｉ＝０・・・ｋ−１）を用意する。（）の中には関数の引数（入力パラメータ）が入る。
手順３：入力データ集合Ｘの各要素ｘｉに対して、次の処理を行う。
（ａ）  ｐ＝０  とする
（ｂ）  もしｐ＞ｋ−１ならば終了
（ｃ）  手順２で用意したハッシュ関数Ｈｐ（）を用い、ｉｄｘ＝Ｈｐ（ｘｉ）を計算
（ｄ）  ビット列Ｆのｉｄｘビット目を１にする（既に１が立っていた場合は、ビット値をそのまま１に維持する）
（ｅ）  ｐに１を加える
（ｆ）  （ｂ）へ戻る
【００５８】
このように、入力データ集合Ｘの各要素ｘｉについて、ｋ個のハッシュ関数からｋ個のハッシュ値ｉｄｘを求め、ビット列Ｆにおけるｉｄｘビット目をすべて１とする（すでに１が立っている場合はそのまま１とする）ことで、ブルームフィルタを生成する。本実施形態では、入力データ集合Ｘは、ＡＣＫ情報を送信すべきノードのＩＤの集合であり、要素ｘｉは、個々のノードのＩＤである。
【００５９】
次に、入力データ集合Ｘにデータｄが含まれるか否かの検証は以下の手順で行う。
手順１：ｐ＝０とする。
手順２：もしｐ＞ｋ−１ならば陽性を返す。
手順３：検証したいデータｄについて、ｉｄｘ＝Ｈｐ（ｄ）を計算。
手順４：ビット列Ｆのｉｄｘビット目を調べ、０ならば、陰性を返す。
手順５：ｐに１を加える。
手順６：手順２に戻る。
【００６０】
ｋ個のハッシュ関数にそれぞれデータｄを入力すると、各々のハッシュ関数の出力ｉｄｘに対応するビットが全て１であれば陽性が返され、少なくともいずれかのビットが０であれば陰性を返される。
【００６１】
ここで、偽陽性が発生する場合、すなわち、データ集合Ｘにデータｄが含まれないにも拘わらず検証結果が陽性となる場合は、各々のハッシュ関数の出力ｉｄｘに対応するビットがたまたま全て１であった場合である。例えばデータＡおよびデータＢからなるデータ集合Ｙから生成されたブルームフィルタＢＦ−Ｙがあるとする。このブルームフィルタＢＦ−Ｙにおける１のビット位置、すなわちデータＡに基づく１のビット位置とデータＢに基づく１のビット位置とのＯＲをとった位置が、データＣに基づく１のビット位置を包含する場合がある。このような場合に、データ集合にデータＣが含まれないにもかかわらず、ブルームフィルタＢＦ−Ｙを用いてデータｄの検証を行うと、陽性が返される。すなわち、偽陽性が発生する。
【００６２】
以下において、複数のハッシュ関数の計算値の列を、ハッシュ値列と表現する場合がある。
【００６３】
また、以下の説明において、“要素（ＩＤまたはＡＣＫ情報等）をブルームフィルタに追加するまたは反映させる”などと表現する場合がある。これは、要素（ＩＤ等）から複数のハッシュ関数を計算し、複数のハッシュ関数の計算値に対応するビットを１にすることを意味する。また、複数の要素（ＩＤ等）に基づきブルームフィルタを生成すると表現する場合、これは、各要素から複数のハッシュ関数を計算し、複数のハッシュ関数の計算値に対応するビットを１にすることにより、ブルームフィルタを生成すことを意味する。
【００６４】
また、要素（ＩＤまたはＡＣＫ情報等）がブルームフィルタに含まれる、または含まれない、と表現する場合がある。前者は、要素から複数のハッシュ関数を計算し、複数のハッシュ関数の計算値に対応するビットのすべてがブルームフィルタにおいて１になっていることを意味する。後者は、要素から複数のハッシュ関数を計算し、複数のハッシュ関数の計算値に対応するビットの少なくとも１つが、ブルームフィルタにおいて１でない（０である）ことを意味する。
【００６５】
ここで、ネットワークに参加できるノードの最大数が２５６台であるようなネットワークを考える。このネットワークで使用するメッセージに含まれるＡＣＫ情報を示すためのブルームフィルタのビット長ｍを６４ｂｉｔ、すなわち８［Ｂｙｔｅ］とし、ＡＣＫ情報の返送先となる宛先ノードの個数ｎが多くとも７個程度とするようなネットワーク環境を想定する。
【００６６】
一般に、ｍビットのフィルタ（ビットマップ）に対してｎ個の要素を追加する際の最適なハッシュ関数の数ｋは、ｋ＝（ｍ／ｎ）・ｌｎ２として求められる。この式にｍ＝６４、ｎ＝７を代入すると、ｋ＝６．３３となり、６個程度のハッシュ関数を使用するのが最適である。“／”は除算、“ｌｎ”は対数を表す。
【００６７】
本実施形態においては、６種類のハッシュ関数Ｈｉ（ｘ）を用いる。ｉ＝［０，５］、ｘ＝［０，６３］とする。例えば、ノードＩＤが９であるノードの場合、ハッシュ値列（Ｈ０（９）、Ｈ１（９）、Ｈ２（９）、Ｈ３（９）、Ｈ４（９）、Ｈ５（９））は、（３９，４３，３６，２２，３２，５５）のようになる。一例として、Ｈ０（ｘ）の入出力の例を図１０に示す。
【００６８】
図１１は、ノードの動作を説明するためのマルチホップ無線ネットワークの例を示す。各ノードに付せられている番号は、ノードのＩＤである。以下の説明で、ノードＸとは、ＩＤがＸのノードのことである。図１１では、コンセントレータ１２０を除き、１０台のノードが存在する。コンセントレータ１２０は、ノード４９およびノード７８と通信可能である。ノード４９およびノード７８は、ノード５の親ノードであり、ノード５は、ノード９、１６、９５、１２４、１６９、２１８、２４１の親ノードである。
【００６９】
ノード５の動作について説明する。ノード５は、全ての通信が正常に行われている場合には、ノード９、１６、９５、１２４、１６９、２１８、２４１の７台の子ノードからセンサデータを含むメッセージをそれぞれ受信する。ノード５は、親ノードであるノード４９、７８の少なくとも一方を宛先ＩＤフィールドに設定し、する。７台の子ノードのＩＤに基づき生成したブルームフィルタ（ＡＣＫブルームフィルタ）を該当するＡＣＫブルームフィルタフィールドに設定し、これらの子ノードから受信したデータをペイロードフィールドに設定したメッセージを生成し、当該メッセージを送信する。この場合、７台の子ノードは、当該親ノード宛のメッセージを受信するように構成されているか、所定のタイミング（ＴＤＭＡで定めたられたスロットのタイミング）で受信するメッセージは、ノード５から受信すべきメッセージであると見なしてもよい。これにより、親ノードへのデータ送信と、複数の子ノードへのＡＣＫ情報の送信（ブルームフィルタの送信）とを一度にできるため、送信回数を減らすことができる。よって、ノード５の消費電力を削減できる。
【００７０】
ノード５は、ノード９からのメッセージの受信に成功したとする。この場合、例えば、次の送信機会（例えばノード５の次の送信スロット）においてノード９に対しＡＣＫ情報を返すために、９を引数として、６個のハッシュ関数を計算し、ハッシュ値列（３９，４３，３６，２２，３２，５５）を得る。予め全ビットが０に設定されているｍ＝６４ｂｉｔのビットマップ（ＡＣＫブルームフィルタ）の、３９番目、４３番目、・・・、５５番目のビットを１にする。これによりノード９のＩＤをＡＣＫブルームフィルタに追加する。
【００７１】
ノード５が、引き続き、ノード２１８からのデータの受信に成功した場合には、２１８を引数として、上述の６個のハッシュ関数を計算して、ハッシュ値列（３２，３３，２７，８，８，２２）得る。そして、上述のノード９のＩＤが追加されたＡＣＫブルームフィルタにおいて、当該ハッシュ値列に対応するビットを１にする。これによりノード２１８のＩＤを、当該ＡＣＫブルームフィルタに追加する。
【００７２】
この時点で、ＡＣＫブルームフィルタは、（８，２２，２７，３２，３３，３４，３９，４３，５５）の９ビットが１であり、他のビットが０であるビット列となる。
【００７３】
ノード５は、ノード９、２１８以外のノードからデータを正常に受信しなかったとする。例えばノード９５は、ノード５に対してメッセージを送信したものの、何かしらの原因でノード５がこれを受信できなかったものとする。この場合、ノード５は、ノード９５のＩＤを、ＡＣＫブルームフィルタに追加しない。
【００７４】
図１２（Ａ）に、ノード９、２１８のハッシュ値列の例を示す。また、ノード９、２１８のＩＤを追加したＡＣＫブルームフィルタの例を図１２（Ｂ）に示す。ハッシュ値列は、例えば全６４ビット長を有する。一番左が０番目のビット、一番右が６３番目のビットである。８，２２，２７，３２，３３，３４，３９，４３，５５番目のビットが１になっており、これら以外のビットは０になっている。
【００７５】
ノード５が、ノード９、２１８以外からの子ノードからデータを受信できなかったため、次の送信機会で、ノード９、２１８のＩＤのみが追加されたＡＣＫブルームフィルタを含むメッセージを送信する。
【００７６】
ノード９、２１８、９５等は、ノード５が送信したメッセージを受信することが可能である。各々のノードは、自ノードＩＤが、当該メッセージのＡＣＫブルームフィルタフィールドに設定されているＡＣＫブルームフィルタに含まれるか否かを検証する。例えば、ノード９は、自ノードのＩＤに基づくハッシュ値列（３９，４３，３６，２２，３２，５５）に対応するビットがＡＣＫブルームフィルタにおいて１に一致するかを検証する。本例では１に一致するため、ノード９は、自ノードのＩＤがＡＣＫブルームフィルタに含まれている、自ノード宛にＡＣＫ情報が送信されたと判断し、これにより、自ノードが送信したメッセージが、ノード５に正常に伝送されたことを認識する。ノード２１８についても同様である。
【００７７】
一方、ノード９５は、自ノードのＩＤに基づくハッシュ値列に対応するビットの少なくとも１つが１でない（０である）と決定し、自ノードのＩＤがＡＣＫブルームフィルタに含まれていない、すなわち自ノード宛にＡＣＫ情報が送信されていないと判断する。なお、ノード９５のハッシュ値列は、（１９，５，２４，４２，２３，４５）であるとする。これにより、自ノードが送信したメッセージがノード５に正しく伝送されなかったことを認識する。この場合、ノード９５は、ノード５に対して、送信に失敗したデータを含むメッセージを再送信するなど、予め定めた処理を行う。
【００７８】
上記の例では、ノード９のハッシュ値列（３９，４３，３６，２２，３２，５５）と、ノード２１８のハッシュ値列（３２，３３，２７，８，８，２２）とでは、３２と２２が重複している。また、ノード２１８のハッシュ値列の中で、値８が重複している。このようにハッシュ値の衝突が存在する。この結果、１２個のハッシュ値に対して、０から１へと変換されたビットの個数は９個となっている。しかし、１つのＩＤに対して６個生成されるハッシュ値の全てが重複しているわけではないため、ノード９、２１８、９５は、それぞれ自ノードのデータがノード５に伝送されているか否かを正しく認識することが可能である。
【００７９】
図１３は、１つ以上の子ノードからデータを受信し、ＡＣＫ情報を追加したブルームフィルタを返す親ノードの動作のフローチャートである。
【００８０】
親ノードは、子ノードからの受信用のスロットにおいて、子ノードからのメッセージの受信を待機する（ステップＳ１０）。親ノードは、どの子ノードからどのスロットでメッセージを受信する可能性があるかを事前に把握している。把握する方法は、親ノードおよび子ノード間の通信でもよいし、コンセントレータ１２０または管理装置が各ノードに通知することでもよい。あるいは、ここで述べた以外の方法でもよい。
【００８１】
親ノードは、当該スロットで子ノードからのメッセージを受信した場合（Ｓ１１のＴＲＵＥ）、より詳細には当該メッセージを運ぶプロトコルの誤り検査で誤りが検出されずに当該メッセージの受信に成功した場合、当該メッセージまたはそこに含まれるデータを記憶する。記憶先は、例えば制御部２５９が備える内部バッファでもよいし、情報記憶部２３０でもよいし、その他のバッファでもよい。親ノードは、予め定めたタイミング（例えば自ノードのスロットで送信するための送信処理を開始するためのタイミング）に達したかを判断し（Ｓ１２）、達していない場合は（Ｓ１２のＦＡＬＳＥ）、ステップＳ１０に戻る。また、親ノードは、当該スロットで子ノードからのメッセージを受信しなかった場合（ステップＳ１１のＦＡＬＳＥ）も、ステップＳ１０に戻る。メッセージを受信しなかった場合とは、メッセージそのものを受信できなかった場合、およびプロトコルの誤り検査で誤りが検出された場合のいずれも含む。
【００８２】
予め定めたタイミングに達した場合（Ｓ１２のＴＲＵＥ）、親ノードは、データの受信に成功した子ノードのＩＤに基づき、ビットマップであるブルームフィルタ（ＡＣＫブルームフィルタ）を生成する（Ｓ１３）。ＡＣＫブルームフィルタをＡＣＫブルームフィルタフィールドに格納したメッセージを送信する（Ｓ１４）。これにより一度のメッセージ送信で、複数の子ノードにＡＣＫ情報を送信できる。
【００８３】
以下、ブルームフィルタの誤検出率（偽陽性の発生確率）を低減させることについて説明する。ブルームフィルタの生成は、ハッシュ値を利用しているため、複数のＩＤ間でハッシュ値の一部が衝突する可能性がある。しかしながら、ビット長ｍが十分に大きく、要素数ｎとビット長ｍとに対してハッシュ関数の数ｋが適切に選択されている場合には、上記のノード９、２１８のように、正しい検証結果を得ることができる可能性が高い。ハッシュ関数のランダム性が高いほど、この可能性がさらに高まる。
【００８４】
（ｋ、ｍ、ｎ）＝（６，６４，７）の場合、誤検出率（偽陽性の発生確率）は、１．２４％程であり、システム要件によっては十分に低い誤検出率で、これは許容できる値となる。ｋおよびｍの値を固定し、ｎ＝７以外のｎ＝１，２，３，４，５，６に対しては、誤検出率は、０．００，０．００，０．０２，０．０９，０．２７，０．６３［％］となる。よって、１台の親ノードに対して、多くの子ノードが集中しないようなネットワーク制御、例えば、ｎの期待値を５以下に低減するなどの処理をすることにより、誤検出率は、ｎ＝７の場合に比べて、さらに低減する。
【００８５】
また、一定の処理を行うことにより、誤検出率を下げることも可能である。例えば、ハッシュ関数の引数として、ＩＤに加えて、通信先に対する指示または通知等を表すパラメータ（シード値）を用いることにより、ハッシュ値が一致する確率を減らすことが可能である。例えばＩＤとパラメータ（シード値）とに基づく演算値（ＩＤとパラメータの加算値など）を、引数とする。パラメータとして、時間依存要素を用いてもよい。時間依存要素とは、例えば、スロット、時間フレーム、または、複数の時間フレームからなるスーパーフレームが進むたびにインクリメントされるシーケンスナンバや、メッセージ送信ごとに更新されるシーケンスナンバ、時刻情報等がある。このような要素を用いることにより、ハッシュ関数の引数が計算毎に変動することとなるため、複数のノード間または同一ノードでの、ハッシュ値の衝突確率を抑制できる。誤検出率を下げる別の方法として、シーケンスナンバに応じて、使用するハッシュ関数を使い分けてもよい。複数のノード間で共有していない情報（例えば現在時刻）を用いる場合は、メッセージに当該情報を含めるなどして、宛先のノードに当該情報を通知すればよい。
【００８６】
なお、ｍが極端に小さい値、例えば４である場合、２つのハッシュ値が衝突する可能性は高くなり、ｎ＝２、ｋ＝１の条件下では２５％の確率で誤検出が起こる。例として、ノード９のハッシュ値（３ビット）が１で、ノード１６９のハッシュ値（３ビット）も１であり、ノード９がノード５へのデータ送信に成功し、ノード１６９はノード５へのデータ送信に失敗したような状況を想定する。この場合、ノード１６９は、ノード５から受信するＡＣＫブルームフィルタの１番目のビットが１となっていることから、自ノードのデータ送信が成功したものと誤認識してしまう。この場合、本来は再送が必要であるようなデータが、再送不要と判断されてしまい、ネットワークからデータが欠落してしまう。したがって、ｍ、ｎ、ｋを適切に選択したり、時間依存要素を利用したりすることで、誤検出率を下げることが望ましい。
【００８７】
以上のように本実施形態によれば、ＡＣＫ情報の送信対象となる１つまたは複数の子ノードのＩＤをＡＣＫブルームフィルタに追加し、当該ＡＣＫブルームフィルタを含むメッセージを送信することで、効率良くＡＣＫ情報を通知できる。また、親ノードへデータ送信するメッセージに当該ＡＣＫブルームフィルタを含めてもよく、この場合、一度のメッセージ送信で、親ノードへのデータ送信と、ＡＣＫ情報の送信とを同時にでき、より多くの情報を効率よく伝送することが可能である。よって、メッセージの送受信に係る電力を削減でき、かつ、信頼性の高い伝送を担保できる。
【００８８】
なお、子ノード数（要素数）ｎの期待値や最大値、およびハッシュ関数の個数ｋの最適値は、無線センサネットワークの適用先によって様々であり、さらに時間変化する可能性もある。そこで、誤検出率を極小化するためには、適切なｋの値を選択する必要がある。そこで、一定またな任意の時間間隔で、適切なｋの値を選択して、ｋを更新してもよい。例えば、ｋの値を数回〜数十回の送信周期ごとに更新する機構や、ｋの最適値が大きく変化した場合に、ｋの更新値を再配布するような機構を実装し、ブルームフィルタの情報効率を最適に保ちつつ、動的なネットワークの状態変化に柔軟に対応することも可能である。なお、ｋが最適に設定されていない場合でも、最適値から大きく外れていない限りは、誤検出率が大きく劣化することは少ない。そのため、この例のようなタイミングでｋの値を更新しても問題はない。ｋの値を通知するメッセージのフォーマットは、上述したメッセージフォーマット（図７（Ａ）〜図７（Ｄ）参照）とは別に定義すればよい。図７（Ａ）〜図７（Ｄ）等のフォーマットにｋの値を設定するフィールドに追加すると、ＡＣＫ情報の伝達のためのバイト長が長くなることに繋がり、また情報密度の観点からも効率が悪い場合が多い。よって、ＡＣＫ情報の送信頻度に比べて十分低ければ、これとは別のフォーマットを用いてｋの値を送信することが、効率的である。このように、ｋを適宜ネットワークの状態に応じて変化させることも本実施形態の適用例として挙げられる。各ノードでは、ｋの値に応じて、使用すべき複数のハッシュ関数が対応づけて定義されており、通知されたｋの値に応じて、使用する複数のハッシュ関数を特定できる。
【００８９】
また、多種類のハッシュ関数を使用することによって、より多数種の情報を埋め込んだブルームフィルタを生成してもよい。一例としては、ＡＣＫ情報にバリエーションを持たせることが可能である。上述のＡＣＫ情報は、単にデータ受信の成功可否を示すものであったが、ここではＡＣＫ−ＡとＡＣＫ−Ｂの２種類のＡＣＫ情報を定義する。
【００９０】
ＡＣＫ−Ａは、無線通信で正常に（受信エラーなく）データを受信できたものの、データのバッファあふれやその他内部エラーによって、データが正しくバッファに格納できなかったことを示すものとする。ＡＣＫ−Ｂは、正常にデータを受信でき、かつ、データも正しくバッファに格納できたことを示すものとする。受信に成功したノードは、ＡＣＫ−ＡおよびＡＣＫ−Ｂのいずれかを選択して、選択したＡＣＫ情報をブルームフィルタにマッピングする。ブルームフィルタを受信したノードは、ブルームフィルタにＡＣＫ−Ａが含まれる場合、無線通信そのものは成功しているため、リンクの無線品質等の問題は無いものの、データは再送する必要があると判断できる。ＡＣＫ−ＡおよびＡＣＫ−Ｂのいずれも受信できなかった場合は、データの再送が必要なことはもちろんのこと、無線リンク品質の劣化の可能性があると判断できる。そのため、ＡＣＫ−ＡおよびＡＣＫ−Ｂのいずれも受信できなかったことを、ネットワークの再構成（親ノードの変更、または伝送経路の変更）を判断するための材料とすることができる。
【００９１】
選択したＡＣＫ情報をブルームフィルタにマッピングする方法として、ＡＣＫ−Ａ用のハッシュ関数群と、それとは異なるＡＣＫ−Ｂ用のハッシュ関数群とそれぞれ用意してもよい。また、別の方法として、ＡＣＫ−Ａを表現する場合はＩＤに対して任意の整数値、例えば１０００を加算した数値をハッシュ関数の引数とし、ＡＣＫ−Ｂを表現する場合にはＩＤをそのままハッシュ関数の引数としてもよい。これによって同じハッシュ関数を用いて、ＡＣＫ−ＡとＡＣＫ−Ｂとを表現することができる。ただし、この場合、加算する数値が１などの小さい値である場合には、ノード９のＡＣＫ−Ａとノード１０のＡＣＫ−Ｂが同じ引数となってしまい、結果として同一のハッシュ値を生成することになってしまう。このため、ハッシュ関数の引数が一致しないように、加算値を決めることが必要である。
【００９２】
なお、ＡＣＫ−ＡとＡＣＫ−Ｂを区別せずにＡＣＫ情報を伝送する場合、ＡＣＫ情報の解釈をどのように行うかに関しては、任意に定めればよい。例えば、当該ＡＣＫ情報を、ＡＣＫ−Ａのように無線通信の物理層やデータリンク層に係るＡＣＫと解釈しても、ＡＣＫ−Ｂのようにネットワーク層からアプリケーション層に係るＡＣＫと解釈してもよい。本実施形態は、そのいずれの形態も可能である。
【００９３】
また、本実施形態において、ハッシュ値の衝突を低減するため、事前に、あるいは、システムの運用中に、どのノードの組み合わせでハッシュ値の衝突が発生するかを演算により判定し、この判定結果を利用してハッシュ値の衝突を抑制するようなハッシュ関数および引数のパラメータを決定してもよい。決定した情報を、通信を行うノード間や、ネットワーク全体で共有することで、ハッシュ値の衝突を抑制することが可能となる。
【００９４】
例えば、図２に示したネットワークにおいて、ハッシュ関数群ＸおよびＹが存在し、各ノードで使用するハッシュ関数群をＸまたはＹから選択できるものとする。コンセントレータ１２０においてハッシュ衝突の検証がなされ、ハッシュ関数群Ｘを使用する場合にはノードＦとノードＤのハッシュ値が衝突し、ハッシュ関数群Ｙを使用する場合には衝突が発生しないことが分かったとする。この場合、コンセントレータ１２０は少なくともノードＤ、Ｆ、Ｈ間のノード通信においては、ハッシュ関数Ｙを使用すること通知することにより、これら３つのノード間においてはハッシュ値の衝突が発生しないこととなる。
【００９５】
さらに別のハッシュ関数群Ｚが存在し、かつ、Ｚを用いた場合にノードＥ、Ｆのハッシュ値が衝突するとする。このような場合においても、ノードＥ、Ｆ双方と通信するノードが存在しないことをコンセントレータ１２０が把握した場合には、ハッシュ関数群Ｚの使用を決定することも可能である。実際には、ビット長ｍを小さく抑えつつ、ネットワーク全域においてハッシュ値が衝突しないようなハッシュ関数群を導くことは困難であるため、ネットワーク全体のレベルでの衝突は容認しつつ、上記のように、局所的なレベルにおけるハッシュ値の衝突を回避するように、ハッシュ関数群を導出すればよい。
【００９６】
なお、ノードＥ、Ｆとのハッシュ値が衝突しないことの判定は、ネットワーク管理者が手動で入力する方法、ノードの物理的な配置図から推測する方法、判定を実行するまでのシステム運転履歴から推測する方法などが挙げられるが、これらのいずれの方法またはその他の手法であっても構わない。また、ハッシュ値の衝突を検証する演算も、コンセントレータ１２０またはコンセントレータ１２０と通信することが可能な他のコンピュータで為されてもよいし、各々の無線通信装置で為されるものであってもよいし、コンセントレータと通信できる関係にないコンピュータによるものであっても、机上計算によるものであっても構わない。
【００９７】
（第２実施形態）
第１実施形態では、１つまたは複数のノードに対するＡＣＫ情報を、ブルームフィルタで表現したが、本実施形態においては、１つまたは複数のノードに対する否定応答（ＮＡＣＫ情報）をブルームフィルタで表現する。ＮＡＣＫ情報は、データを受信できることが期待されているような状況において実際にはデータを受信できなかった場合に返す応答である。データを正常に受信できた場合にＡＣＫ情報を返す方式（ＡＣＫ方式）とするのか、データを正常に受信できなかった場合にＮＡＣＫ情報を返す方式（ＮＡＣＫ方式）とするのかはシステムで事前に決められている。本実施形態ではＮＡＣＫ方式を用いるシステムを想定する。以下、前述した実施形態と異なる部分を中心に説明し、重複する説明は省略する。
【００９８】
図１４（Ａ）〜図１４（Ｄ）は、本実施形態に係るメッセージフォーマットの例を示す。図１４（Ａ）のメッセージフォーマットは、ビットマップアドレスフィールドであるＮＡＣＫブルームフィルタフィールドを備える。メッセージフォーマットは、さらに宛先ＩＤ０フィールドを含んでもよい。ＮＡＣＫブルームフィルタフィールドは、データ受信の否定応答を通知するＮＡＣＫブルームフィルタを格納するフィールドである。ＮＡＣＫブルームフィルタフィールドは、本実施形態に係るビットマップを格納する第１フィールドの一例である。図１４（Ｂ）〜図１４（Ｄ）のフォーマットも、ＡＣＫブルームフィルタフィールドが、ＮＡＣＫブルームフィルタフィールドに置き換わった以外は、図７（Ｂ）〜図７（Ｄ）と同じである。ＮＡＣＫ情報を送信不要の場合は、図１４（Ｂ）〜図１４（Ｄ）においてＮＡＣＫブルームフィルタフィールドを省略したフォーマットを用いればよい。
【００９９】
ＮＡＣＫ方式を用いる場合、まず、各ノードは、どのノードからデータを受信すべきであるかという情報を取得しておく必要がある。そのため、ノードの制御部２５９は、予めノード間で接続状態を確立する手順、または、それに相当するメッセージ交換を行い、相手ノード（子ノード）のリストを作成して、保持しておく。
【０１００】
ノードの受信メッセージ解析部２２０は、リスト内に登録されている子ノードのうち、メッセージを受信できなかった子ノードのすべてのＩＤを特定する。
【０１０１】
ノードの送信メッセージ生成部２１０は、特定されたＩＤを反映させたＮＡＣＫブルームフィルタを生成する。このＮＡＣＫブルームフィルタをＮＡＣＫブルームフィルタフィールドに設定し、メッセージ送信部２５２を介して送信する。
【０１０２】
相手ノード（子ノード）のリストの作成方法は、どのような方法でもよい。一例として、ネットワーク構築時にノードの親子関係を確定させ、親ノードが、複数の子ノードのＩＤと、その台数とを把握する方法がある。親子関係は、例えば２つのノード間で、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）のスリーウェイハンドシェイクのような手順を用いて確立させてもよい。無線通信においては、ノードの位置や障害物の位置の移動、天候や温度、湿度等によって無線伝播性能は時々刻々と変化していくことが多いため、ネットワークの構成は、ある程度自律的に変化できるように設定されていることが一般的である。そのため、ネットワークの構成の変化に応じて、親子関係も追随して変化可能な仕組みにしてもよい。リストを作成する別の方法として、ネットワークに参加する全てのノードのＩＤを取得できる場合においては、ノードの全てのＩＤを、リストに登録しても構わない。リストが確定した後は、例えば１周期（時間フレーム）等ごとに、親ノードはリストの中からデータ受信できなかったノードのＩＤを特定して、ＮＡＣＫブルームフィルタに反映させる。
【０１０３】
図１１を用いて、第２実施形態の無線通信装置の具体的な動作の一例を説明する。第１実施形態と同様に、ＮＡＣＫブルームフィルタのビット数ｍ＝６４、子ノードの数ｎ＝７、ハッシュ関数の個数ｋ＝６とする。ノード５は、７台の子ノードからのメッセージの受信を待機する。
【０１０４】
ノード５は、ノード９、２１８からメッセージを受信できたが、これら以外のノード１６、９５、１２４、１６９、２４１からは、何かしらの原因でメッセージを受信できなかったとする。この場合、ノード５は、ノード１６、９５、１２４、１６９、２４１のＩＤを追加したＮＡＣＫブルームフィルタを生成する。この結果、例えば（３，５，１１，１９，２３，２４，３４，３５，３８，４２，４４，４５，４９，５４，５５，５９，６２）のビットが１になったＮＡＣＫブルームフィルタが得られる。
【０１０５】
ノード５は、このＮＡＣＫブルームフィルタを、メッセージのＮＡＣＫブルームフィルタフィールド（図１４参照）へ格納し、メッセージの送信を行う。ノード５が送信したメッセージを受信した７台の子ノードは、メッセージに含まれるＮＡＣＫブルームフィルタを解析することによって、各々送信したメッセージがノード５で正常に受信されたかを検証する。
【０１０６】
例えば、ノード９は、ノード５からのメッセージを受信した際に、自ノードのＩＤを元に生成されるハッシュ値列（３９，４３，３６，２２，３２，５５）に対応するビット群が１になっているか否かを検証する。３９、４３、３６、２２、３２に対応するビット群が１でない（０である）ため、ノード９は、自ノードに対してＮＡＣＫ情報は送信されていない、すなわち、自ノードが送信したメッセージは、ノード５で正しく伝送できたと判断する。
【０１０７】
ノード９５も、自ノードのハッシュ値列（１９，５，２，４２，２３，４５）に対応するビット群が１になっているか否かを検証する。このハッシュ値列に対応するビット群が１であることから、ノード９５は、自ノードが送信したメッセージがノード５で正しく受信できなかった（受信に失敗した）と判断する。この場合、ノード９５は、再送のデータを含むメッセージを送信してもよい。再送の具体的な動作は、後述する第６実施形態で述べる。あるいは、ノード９５の制御部２５９は、ノード５との接続を解除し、現親ノードと異なるノードを親ノードとして設定してもよい。
【０１０８】
親子ノード間で一定回数以上連続して通信に失敗した場合に、当該親子ノード間の接続を解除してもよい。所定回数連続で失敗して、親ノード５が一方的に接続を解除したが、ノード１６９は親ノード５との接続が維持されていると認識している場合、ノード１６９は、送信に失敗しているにも拘わらず、ノード５から受信したメッセージにおけるＮＡＣＫブルームフィルタに自ノードのＩＤが含まれていないため、送信に成功したと誤認して当該メッセージを削除してしまう可能性がある。
【０１０９】
次の方法によると、この問題の発生を阻止することができる。
一例として、親ノードは、３回連続で通信が途絶した場合に接続を解除し、子ノードは、３回連続で通信途絶またはＮＡＣＫ情報の受信の少なくとも一方が生じた場合に、接続を解除する。図１５（Ａ）および図１５（Ｂ）は、接続の解除のシーケンス例を示す。○印は、メッセージの受信が正常に行われた（受信に成功した）ことを意味する。
【０１１０】
親ノード５側における×印は、子ノード１６９からのメッセージが受信できなかった（受信に失敗した）ことを意味する。子ノード１６９側における×印は、親ノード５からのメッセージの受信がなかった（受信に失敗した）か、受信はあったもののＮＡＣＫブルームフィルタに自ノードのＩＤが含まれていなかったことを意味する。
【０１１１】
子ノード１６９から親ノード５への矢印付の実線は、子ノード１６９から親ノード５へのメッセージの送信を意味する。親ノード５から子ノード１６９への矢印付きの長い方の破線は、ＮＡＣＫブルームフィルタに自ノードのＩＤが含まれていた場合を示し、短い方の破線は、メッセージの受信に失敗した場合を示す。このような失敗が３回繰り返されたところで、親ノード５は、子ノード１６９との接続を解除（Ａ４）する。その後、子ノード１６９は、自らのＩＤがＮＡＣＫブルームフィルタに含まれていることを確認（Ａ５）すると、親ノード５との接続を解除（Ａ６）する。この場合、子ノード５は、再送すべきデータを破棄することなく、新たに設定された親ノードへと向けて送信するか、または、次の通信の機会まで待って送信する。
【０１１２】
一方、図１５（Ｂ）の例によれば、子ノード１６９が先に親ノード５との通信を切断（Ａ１９）し、次に、親ノード５が子ノード１６９との通信を切断（Ａ２０）する。このように、子ノード側からの切断を先行させることにより、送信に失敗したメッセージまたはそこに含まれるデータを、子ノードが破棄してしまうことを防止する。
【０１１３】
このように、同じ回数だけ通信に失敗した時点で、親ノードおよび子ノード双方が接続を解除するようにする。この結果、子ノード側から先に接続を切断する。または、親ノードが先に切断したとしても、子ノードが送信に成功していないと判断したままの状態で、子ノードは、次の再送タイミング前に接続を解除する。これにより、子ノードが再送すべきデータを破棄することを防止できる。
【０１１４】
また、別の方法として、例えば、ノードの制御部２５９は、直近の一定回数（例えば１０回）の通信の成功率が閾値（例えば６０％）を下回った場合に、接続を解除することとしてもよい。この場合においても、親ノードが一方的に子ノードとの接続を解除しないようにする。これにより、上記と同様、子ノードが再送すべきデータを破棄することを防止する。
【０１１５】
本実施形態でも、ハッシュ値の衝突、すなわちＮＡＣＫ情報の誤検出が発生し得る。例えばノード５がノード１６９から送信されたメッセージを正常に受信し、他の子ノードから送信されたメッセージの受信に失敗した場合に、他の子ノードのハッシュ値列の和集合が、ノード１６９のハッシュ値列を包含する可能性がある。このとき、親ノード５からＮＡＣＫブルームフィルタを受信した子ノード１６９は、偽陽性により、ノード５へのデータ送信に失敗したと認識する。しかし、このような誤検出が起こった場合も、再度同じデータを含むメッセージをノード５へ送信するようにノード１６９を設定することにより、ノードおよびネットワークの信頼性を高めることができる。
【０１１６】
なお、ハッシュ関数の引数として、ＩＤのみで、かつ、ハッシュ関数の更新が無い場合、数時間フレーム連続して誤検出が続く可能性が高くなる。そのため、ＩＤに加えてＮＡＣＫ情報の送信先を特定するためのシーケンスナンバ等のパラメータ（シード値）を用いて引数を定義してもよい。または、シーケンスナンバに基づいて、使用するハッシュ関数を変更するなどの機構を採用してもよい。
【０１１７】
無線ネットワークにおいて、ネットワーク構築は、通信が比較的安定しているノードを親ノードまたは子ノードと設定するのが好ましい。
【０１１８】
このような通信が比較的安定しているような状況においては、ＮＡＣＫブルームフィルタに反映させられる要素数（子ノードの数）ｎを小さくできる。この結果、同じビット列長（ビットマップ長）ｍに対しては、第１実施形態のＡＣＫブルームフィルタに比べて、誤検出率を低くすることも可能である。よって、第１実施形態と同等の誤検出率を達成する場合、ＮＡＣＫブルームフィルタのビット列長ｍを短くすることも可能となる。これによりメッセージ長を低減することも可能となる。
【０１１９】
例えば、第１実施形態で例示したケース同様に、ビットマップ長ｍ＝６４、かつ子ノード数は概ね７台以下程度となるようなネットワークを想定する。要素数ｎ、即ちＮＡＣＫ情報の送信先ノードの数は、２台または３台程度と見積もる。このとき、ｎ＝｛２，３｝に対するｋの値は、ｋ＝（ｍ／ｎ）・ｌｎ２より、ｋ＝｛２２．１８，１４．７９｝〜＝｛２２，１５｝となる。“〜＝”は、ニアリーイコールである。このようなｎとｋの組み合わせに対して、誤検出の確率はいずれも０．０１％以下となり、極めて低い値となる。仮にｎ＝２を想定して求められたｋ＝２２を採用している場合で、実際にはｎ＝６台もの子ノードにＮＡＣＫ情報を送らなければならない状況でも、誤検出率は１．３％程度となり、依然として十分に小さい値と考えることができる。これは、システム要件次第で十分に無視できる程度の確率である。このように誤検出率が十分に低い場合、ビット列長ｍ＝４８など、より短い値に設定して、伝送効率をより高めることも可能である。
【０１２０】
以上のように、本実施形態によれば、効率良くＮＡＣＫ情報を通知できる。特に、親ノードへ送信するメッセージに当該ＮＡＣＫブルームフィルタを含める場合には、さらに効率よくデータを送信することが可能である。よって、無線通信装置およびネットワークの電力を削減することができる。
【０１２１】
（第３実施形態）
第１実施形態および第２実施形態においては、１つまたは複数のノードへのＡＣＫ情報およびＮＡＣＫ情報をブルームフィルタで表現したが、本実施形態においては、１つまたは複数のノードの宛先情報をブルームフィルタで表現する。以下、第１実施形態および第２実施形態と異なる部分を中心に説明する。
【０１２２】
図１６は、本実施形態に係るマルチホップ無線ネットワークの一例を示す。コンセントレータ１２０が、ノード２３、４９、７８、８１と接続を確立している。ノード５は、これらのノード２３、４９、７８、８１の子ノードである。ノード９は、ノード５の子ノードである。このようなネットワーク構成の場合、ノード５は、コンセントレータ１２０と通信するために、ノード２３、４９、７８、８１の少なくともいずれかを経由する必要がある。ノード５は、ノード２３、４９、７８、８１から複数の親ノードを選択する。親ノード選択するために、第１実施形態で説明したランクを指標として用いてもよい。例えばランクの値が最小のノードから優先的に複数の親ノードを選択してもよい。
【０１２３】
図１７は、本実施形態に係るメッセージフォーマットの一例である。このフォーマットは、宛先ブルームフィルタフィールドと、ペイロードフィールドとを含む。フォーマットは、さらにペイロード長フィールドを含んでもよい。宛先ブルームフィルタフィールドには、複数の宛先ノード（親ノードまたは子ノード）のＩＤを追加したブルームフィルタ（宛先ブルームフィルタ）を格納する。宛先ブルームフィルタのフィールド長は６［Ｂｙｔｅ］である。宛先ノード群とは、メッセージの送信先となる親ノードの集合、子ノードの集合、または親ノードと子ノードの集合である。宛先ブルームフィルタフィールドは、本実施形態に係るビットマップを格納する第１フィールドの一例である。ペイロード長およびペイロードは、第１実施形態と同様である。図１７に示したフォーマットは一例に過ぎず、図７および図１４と同様に、種々のバリエーションが可能である。
【０１２４】
本実施形態に係る通信動作について説明する。図１８は、ノード９、２３、４９、７８、８１のそれぞれのＩＤに基づき、４つのハッシュ関数Ｈ０、Ｈ１、Ｈ２、Ｈ３から計算されたハッシュ値列の例を示している。ハッシュ関数の引数は、ＩＤの他、フレーム番号などの情報を追加で用いて定義してもよいし、フレーム番号などの情報に応じて、使用するハッシュ関数を変更してもよい。
【０１２５】
ノード５が、自らの親ノードとして、ノード４９およびノード７８を選択したとする。ノード５は、メッセージを生成する際、ノード４９とノード７８のＩＤをブルームフィルタ（宛先ブルームフィルタ）に追加する。ノード４９、７８のハッシュ値列の和集合である（２，６，１３，２０，２２，３８，５３）に対応するビットを１にする。その後、ノード５は、宛先ブルームフィルタフィールドに宛先ブルームフィルタを設定したメッセージを送信する。なお、メッセージにおけるペイロード長フィールドおよびペイロードフィールドには、それぞれ必要な値およびデータを設定する。
【０１２６】
ノード５の上位近隣ノードであるノード２３、４９、７８、８１は、ノード５から送信されたメッセージを受信する。ノード２３、４９、７８、８１の受信メッセージ解析部２２０は、宛先ブルームフィルタフィールドに含まれている宛先ブルームフィルタに、自ノードのノードＩＤが含まれているかを検証する。すなわち、宛先ブルームフィルタにおいて、自ノードのノードＩＤに基づき算出されるハッシュ値列に対応するビット群が１になっているかを検証する。ビット群がすべて１のとき、自ノードのノードＩＤが含まれている、すなわち当該メッセージは自ノード宛であると判断する。自ノードのノードＩＤが含まれていると判断した場合、当該メッセージのペイロードを、コンセントレータ１２０へと送信する。
【０１２７】
一方でノード２３、８１は、宛先ブルームフィルタの検証結果から、自ノードのＩＤが宛先ブルームフィルタに含まれていない、すなわち、当該メッセージは自ノード宛ではないと判断する。ノード２３、８１の受信メッセージ解析部２２０または制御部２５９は、受信したメッセージを破棄してもよいし、ネットワーク再構築時に活かしたりデバッグに活かしたりするために、当該メッセージの一部または全部を保存しておいてもよい。
【０１２８】
また、ノード５の制御部２５９は、ノード４９、７８それぞれとの間の無線リンク品質を調べ、それらのいずれも基準を満たさない（良好ではない）場合には、ノード８１を３つめの親ノードとして追加してもよい。
【０１２９】
さらに、本実施形態においては、宛先ブルームフィルタに、親ノードに加え、子ノード（図１６の例ではノード９）のＩＤを追加してもよい。なお、ハッシュ関数の計算に関しては、親ノードと子ノードとで同様に計算してもよい。または、親ノードは、ＩＤをハッシュ関数の引数として用い、子ノードは、ＩＤ値に一定の値（例えば１０００）を足した数値をハッシュ関数の引数として用いてもよい。このような親および子の種別に応じたハッシュ関数の引数の制御は、制御部２５９で行えばよい。
【０１３０】
ノード間通信は無線で行われるため、ノード５から送信した無線信号は、親ノード４９、７８だけではなく、子ノード９にも到達する可能性が高い。このように親ノードのみならず、子ノード９を宛先ブルームフィルタで指定することにより、一度の送信において、より多くの情報を伝達できる。
【０１３１】
例えば、ノード５から親ノード４９、７８へデータ（センサデータ等）を送信するとともに、同じメッセージ内において、子ノード９へデータ（ランク更新情報）を送信する。この場合、ペイロードフィールドに、センサデータとランク更新情報の２種類のサブメッセージを入れる。各サブメッセージのヘッダに宛先情報を追加してもよい。すなわち、センサデータを含むサブメッセージのヘッダに、親ノード４９、７８の宛先情報を、ランク更新情報を含むサブメッセージヘッダには、子ノード９の宛先情報を含める。宛先情報は、ノードＩＤなどのノードの識別子でもよいし、宛先ブルームフィルタによって表現してもよい。
【０１３２】
なお、サブメッセージの内容から、当該サブメッセージが下位近隣ノードに伝達されるべきか、上位近隣ノード（その中でも特に親ノード）に伝達されるべきかが判断可能である場合もある。この場合、サブメッセージのヘッダに宛先情報を含めなくてもよい。例えばサブメッセージに含まれる当該種別に基づき、各ノードが当該サブメッセージの伝達されるべき方向を判断してもよい。あるいは、情報の種別に応じてペイロード長が固定であるならば、そのサブメッセージのペイロード中の位置から、自ノードが受信するべきサブメッセージを判断することも可能である。当然ながら、ここで述べた以外の方法で判断することも可能である。このような判断は、受信メッセージ解析部２２０または制御部２５９で行うようにすればよい。
【０１３３】
以上のように、本実施形態によれば、複数のノードの宛先情報をブルームフィルタで表現することによって、効率的な通信が可能となる。
【０１３４】
本実施形態の第１変形例として、親ノードが頻繁には変更されないことを前提として、送信するメッセージから宛先ブルームフィルタを省略してもよい。特定の条件が成立した場合にのみ、当該メッセージに宛先ブルームフィルタを入れるようにする。特定の条件が成立する例としては、親ノードの変更があったとき、または一定期間ごとのネットワークヘルスチェックの時刻になったときなどがある。これにより、間欠的に宛先ブルームフィルタが送信されることになる。第１変形例で使用するメッセージフォーマットの例を、図１９（Ａ）に示す。
【０１３５】
図１９（Ａ）のメッセージフォーマットは、ペイロード種別フィールドと、ペイロード長フィールドと、ペイロードフィールドとを備える。宛先ブルームフィルタを送信する場合、ペイロードフィールドに宛先ブルームフィルタを設定するのではなく、図１９（Ｂ）に示す宛先ブルームフィルタのみを含むメッセージ（親ノードの情報更新メッセージ）を送信してもよい。宛先ブルームフィルタ以外の情報をさらにペイロードフィールドに追加することで、複数種類の情報を併せて送信してもよい。
【０１３６】
本実施形態の第２変形例として、メッセージが経由すべきルート（中継ルート）に存在するノードのＩＤを、ブルームフィルタ（宛先ブルームフィルタ）によって表現する。当該宛先ブルームフィルタを、当該メッセージの宛先ブルームフィルタフィールドに格納する。図２０は、本実施形態に係るマルチホップ無線ネットワークの他の例を示す。なお、コンセントレータ１２０は、ネットワーク構成を把握しているものとする。
【０１３７】
コンセントレータ１２０が、ノード９に対して動作停止命令などのメッセージを送信する場合について説明する。この場合、コンセントレータ１２０は、例えば図１７のメッセージフォーマットを用いて、ＩＤ４９、７８、５、９を追加した宛先ブルームフィルタを設定したメッセージを送信する。ノード４９、７８は自ノードのＩＤが宛先ブルームフィルタに含まれている（検証結果が陽性）と判断し、さらに下位近傍ノード５へ当該メッセージに含まれるペイロードデータ（動作停止命令）を転送する。転送の際、ノード４９、７８はそれぞれ、ノード５、９のＩＤを追加した宛先ブルームフィルタを生成して宛先ブルームフィルタフィールドに設定する。あるいは、ノード４９、７８は、受信したメッセージに含まれる宛先ブルームフィルタをそのまま使ってもよい。
【０１３８】
上記のように、コンセントレータ１２０からノード９への中継ルートを確定させておくことで、中継に関係の無いノードで消費電力が増大することを防止できる。メッセージ内でルート情報を指定することによって、意図していないノードによる転送を防止し、消費電力増大を抑制することが可能となる。
【０１３９】
なお、宛先ブルームフィルタにおいて、仮にハッシュ値の衝突による誤検出（偽陽性）が起こったとしても、誤検出に起因するメッセージの消失は、回避可能である。
【０１４０】
本実施形態の第３変形例として、接続確立要求を送信したい相手ノードのＩＤをブルームフィルタ（宛先ブルームフィルタ）に追加することも可能である。図１６を用いて、具体例を説明する。ノード５は電源が入れられてからしばらく経過した状態であるとする。ノード５は、ＩＤ４９とＩＤ７８を、宛先ブルームフィルタに追加した接続確立要求メッセージを送信する。ノード４９、７８は、検証結果が陽性のため、ノード５と接続確立のための処理を行う。ノード２３、８１は、検証結果が陰性のため、例えばメッセージを破棄する。
【０１４１】
なお、本第３変形例においてハッシュ値の衝突が発生した場合を考える。例えばノード５はノード８１と接続する意図が無いにも拘わらず、ノード８１がノード５からの接続要求を受けたと誤検出する場合を考える。この場合、ノード５は、ノード８１との接続確立手順を進めずに、途中で停止してもよい。あるいは、ノード５は、いったんノード８１との接続を確立し、後に当該接続を解除する手続を行ってもよい。なお、本第３変形例においても、誤検出（偽陽性）に起因して、伝送（再送）すべきデータが消失する問題は生じない。
【０１４２】
（第４実施形態）
第１実施形態〜第３実施形態においては、ＡＣＫ情報、ＮＡＣＫ情報および宛先情報のいずれか１種類の情報をブルームフィルタで表現したが、本実施形態においては、少なくとも２種類の情報を１つのブルームフィルタでまとめて表現する。以下、第１実施形態〜第３実施形態と異なる部分を中心に説明する。
【０１４３】
図２１は、本実施形態におけるマルチホップ無線ネットワークの一例を示す。このネットワークは、２５６台のノードを収容でき、各ノードには、０〜２５５の範囲内の値のノードＩＤが割り当てられているものとする。このようなネットワークにおいて、ノード５は、子ノード９、２１８からデータを受信済みであり、親ノード４９、７８に当該データを伝送（中継）しようとしている。本実施形態では、このような場合に、１回のメッセージ送信で、親ノード４９、７８には当該データを伝送（中継）し、子ノード７３、１６９、２４１にはＮＡＣＫ情報を送信する。
【０１４４】
具体的には、ノード５は、データの宛先ノードに関しては、そのノードＩＤをハッシュ関数の引数として用い、ＮＡＣＫ情報の宛先ノードに関しては、そのノードＩＤに２５６を足した数値を、ハッシュ関数の引数として用いる。
【０１４５】
ＮＡＣＫ情報を送信する代わりに、ＡＣＫ情報を送信するように、上記の構成を変形してもよい。
【０１４６】
なお、上述の例では、１つのノードは１つの情報（ＮＡＣＫ情報、ＡＣＫ情報またはデータ）に対する宛先として指定されたが、１つのノードが複数種類の情報の宛先として指定される構成も可能である。さらに、親ノードからメッセージを受信する場合においては、親ノードにＡＣＫ情報またはＮＡＣＫ情報を送信する場合もあり得る。このときも、上述した方法で、宛先ブルームフィルタに親ノード宛のＡＣＫ情報またはＮＡＣＫ情報を含めることができる。また、ＡＣＫ情報とＮＡＣＫ情報の両方を宛先ブルームフィルタに追加してもよい。上述した例では、データの宛先と、ＮＡＣＫ情報（またはＡＣＫ情報）の宛先とで、引数の算出式（定義）が異なったが、引数の算出式を同じにする形態も可能である。  また、上述した例では、ＮＡＣＫ情報（またはＡＣＫ情報）の宛先に対して、２５６をノードＩＤに加算した数値を、ハッシュ関数の引数として用いたが、加算する値は２５６に限られない。１つのブルームフィルタで、複数種類の情報（ＡＣＫ情報、ＮＡＣＫ情報、およびペイロード）の宛先の全部または一部を同時に表現することで、さらに効率的な通信が可能となる。
【０１４７】
（第５実施形態）
本実施形態においては、各ノードが、受信したメッセージに含まれるブルームフィルタへ自ノードのＩＤに基づく関数の計算結果を追加し、追加後のブルームフィルタを設定したメッセージを親ノードに転送する。経路上の各々のノードがこれを繰り返すことにより、最終的にメッセージを受信したコンセントレータは、そこに含まれるブルームフィルタを解析することで、当該メッセージがどのような経路（すなわちどのノード）を辿って、コンセントレータに到達したのかを把握できる。
【０１４８】
図２２は、本実施形態に係るメッセージフォーマットの一例を示す。このメッセージフォーマットは、１［Ｂｙｔｅ］の宛先ＩＤフィールドと、８［Ｂｙｔｅ］の途中経路ブルームフィルタフィールドと、Ｎ×Ｍ［Ｂｙｔｅ］のペイロードメッセージ配列フィールド（以下、配列フィールド）とを備える。メッセージフォーマットは、さらに１［Ｂｙｔｅ］の送信元ＩＤフィールドと、２［Ｂｙｔｅ］のペイロードメッセージ数フィールドと、を含んでもよい。配列フィールドは、Ｎ［Ｂｙｔｅ］のＭ個の配列要素を格納可能である。途中経路ブルームフィルタフィールドは、あるノードからコンセントレータ１２０までの経路上のノードＩＤを反映したブルームフィルタ（途中経路ブルームフィルタ）を収納するためのフィールドである。
【０１４９】
本実施形態に係る無線通信装置１１０の動作を、説明する。図２０で、ノード５はノード９からメッセージを受信し、メッセージの宛先が自ノードであることを確認したのちに、メッセージに含まれる途中経路ブルームフィルタに、自ノードＩＤ（＝５）に基づく関数の計算結果を追加する。次に、ノード４９は、ノード５とノード２２２からメッセージを受信し、ノード５、９、４９、２２２の４つのノードのＩＤが設定された途中経路ブルームフィルタを生成する。ノード４９は、当該ブルームフィルタを途中経路ブルームフィルタフィールドに格納する。ノード４９は、このようにして生成したメッセージをコンセントレータ１２０へ送信する。
【０１５０】
コンセントレータ１２０は、途中経路ブルームフィルタを検証し、当該メッセージの送信元であるノード４９の子孫ノードとして、ノード５、９、２２２が存在することを認識する。
【０１５１】
コンセントレータ１２０は、ノード４９の子孫ノードに対するメッセージをノード４９のみを通して効率よく送信することができるので、ノード４９以外のノードが当該メッセージを処理することを防止し、省電力化を図ることが可能となる。各ノードは、受信したメッセージのペイロードメッセージ数をインクリメントして更新した後に、他のノードに送信することができる。各ノードは、生成したデータをペイロードメッセージ配列に追加して他のノードへ送信することができる。なお、図２２のフォーマット例においては、送信元ＩＤフィールドを設けてあるため、ノード９（図２０参照）は、途中経路ブルームフィルタに自ノードのＩＤを追加せずに、メッセージを送信してもよい。受信側のノード５では、当該メッセージの送信元ＩＤフィールドからノード９のＩＤ（＝９）を取得して、途中経路ブルームフィルタに追加すればよい。このようにすることにより、途中経路ブルームフィルタに追加される要素数が１つ減る。これにより、ハッシュ値列が衝突する確率を減らすことが可能となる。
【０１５２】
図２３（Ａ）は、本実施形態におけるメッセージフォーマットの別の例を示す。図２３（Ａ）のメッセージは、宛先ＩＤ０フィールドと、宛先ＩＤ１フィールドと、送信元ＩＤフィールドと、ペイロードメッセージ数フィールドと、Ｎ×１６［Ｂｙｔｅ］のペイロードメッセージ配列フィールド（以下、配列フィールド）とを備えている。図２３（Ｂ）は、図２３（Ａ）の配列フィールドのフォーマット例を示す。配列フィールドは、８［Ｂｙｔｅ］の途中経路ブルームフィルタフィールドと、２［Ｂｙｔｅ］のセンシングノードＩＤフィールドと、２［Ｂｙｔｅ］の温度センサ値フィールドと、４［Ｂｙｔｅ］のセンシング時刻フィールドとを備えている。図２３のフォーマットは一例であり、図７または図１４等に示したように、種々のバリエーションが可能である。
【０１５３】
図２３（Ｂ）において、センシングノードＩＤフィールドは、自ノードのＩＤを格納するフィールドである。また、温度センサ値フィールドは、自ノードの温度センサで検出した値（温度センサ値）を格納するフィールドであり、センシング時刻フィールドは、その検出時刻を格納するフィールドである。途中経路ブルームフィルタフィールドは図２２と同じである。なお、図２３（Ｂ）における、温度センサ値とセンシング時刻のフィールドは、一例としてあげたものに過ぎない。これらのフィールドの少なくとも一方を、他のフィールドと置き換えたり、他のフィールドを追加したりしてもよい。
【０１５４】
図２３（Ａ）のメッセージフォーマットを用いた場合の動作について、図２０を参照して説明する。ノード９は、宛先ＩＤ０フィールドに親ノードＩＤである５を格納し、送信元ＩＤフィールドには、自ノードのＩＤである９を格納する。宛先ＩＤ１フィールドは、宛先（親ノード）が２以上ある場合に、２つ目の送信先を格納するフィールドである。図２０においてはノード９の宛先（親ノード）は、一つしかないため、この宛先ＩＤ１フィールドには、無効である値、例えば、０を格納する（この場合、ＩＤが０のノードは、ネットワーク内に存在しないものとする）。そして、図２３（Ｂ）のフォーマットに従って、ペイロードデータを生成する。より詳細には、ビットを全て０に設定した途中経路ブルームフィルタを途中経路ブルームフィルタフィールドに格納し、センシングノードＩＤフィールドに自ノードＩＤである９を格納し、温度センサ値フィールドとセンシング時刻フィールドにはそれぞれ、温度センサから検出した温度値とその検出時刻とを格納する。ノード９は、生成したペイロードデータを、図２３（Ａ）の配列フィールドの０番目の配列要素に格納する。このようにして生成したメッセージを送信する。
【０１５５】
ノード９からメッセージを受信したノード５は、受信したメッセージの宛先ＩＤ０フィールドを４９に、宛先ＩＤ１フィールドを７８に、送信元ＩＤフィールドを５に設定し、さらに、ペイロードメッセージ数フィールドに２を設定する。また、ノード５は、図２３（Ｂ）のフォーマットに従ってペイロードデータを生成し、生成したペイロードデータを、配列フィールドの１番目の配列要素に格納する（０番目の配列要素にはノード５が追加したペイロードデータが入っている）。ノード５は、受信したメッセージにおける配列フィールドの配列要素のすべて（ここでは配列フィールドには０番目の配列要素のみ存在する）に対して、そこに含まれる途中経路ブルームフィルタに、自ノードのＩＤを追加する。本例では０番目の配列要素に含まれる途中経路ブルームフィルタに自ノードのＩＤ（＝５）を追加する。ノード５は、このようにして生成したメッセージを送信する。
【０１５６】
ノード５からメッセージを受信したノード４９は、ノード５と同様の処理によりメッセージを生成して、メッセージをコンセントレータ１２０へ送信する。ただし、ノード４９は、ノード２２２からもメッセージを受信するため、ノード４９は、ノード５とノード２２２の２つのノードから受信した２つのメッセージの合成処理を行う。例えば、ノード２２２から受信したメッセージの配列フィールド内の全配列要素を取り出して、ノード４９から受信したメッセージの配列フィールドに追加する。あるいは、逆に、ノード４９から受信したメッセージの配列フィールド内の全配列要素を取り出して、ノード５から受信したメッセージの配列フィールドに追加する。各配列要素内の途中経路ブルームフィルタには自ノードのＩＤを追加する。また、ノード４９は、自ノードで生成したペイロードデータも、配列フィールドに配列要素として追加する。このように処理した結果、ノード４９が送信するメッセージに含まれるペイロード数は４となり、配列フィールドには４つの配列要素が含まれる。
【０１５７】
ノード４９からメッセージを受信したコンセントレータ１２０は、配列フィールドの各配列要素の途中経路ブルームフィルタを解析することにより、４つのペイロードデータがそれぞれどのようなノードを経由して伝送されてきたかを把握できる。例えばノード９を調べたい場合、センシングノードＩＤフィールドが９のペイロードを特定し、当該ペイロード内の途中経路ブルームフィルタを解析することで、ノード９のペイロードが、ノード５と４９を経由して、伝送されてきたことが分かる。同様に、ノード５が生成したペイロードデータおよびノード２２２が生成したペイロードデータは、ノード４９を経由してコンセントレータ１２０に伝送されていることが分かる。また、ノード４９が生成したペイロードデータは、他のノードを経由せずにコンセントレータ１２０まで到達したことが分かる。これらの情報をもとに、コンセントレータ１２０は、ノード４９より下位のネットワーク構造を表す情報を生成してもよい。
【０１５８】
ハッシュ関数の引数は、ノードＩＤに限定されず、例えば、ノードＩＤに加えホップ数等のパラメータを用いて求まる数値を引数としてもよい。図２０のネットワーク例において、コンセントレータ１２０はホップ数０、ノード４９はホップ数１、ノード５はホップ数２、ノード９はホップ数３である。そこで、ホップ数に１０００を乗じた値（ホップ数×１０００）をノードＩＤに加算した数値を、引数としてもよい。すなわち、ノード９、５、４９を辿って、コンセントレータ１２０に伝送されたメッセージには、｛３００９，２００５，１０４９｝が追加された途中経路ブルームフィルタが格納されている。このようにすることで、検証に要する演算量は増加するものの、コンセントレータ１２０および中継ノードは、子孫ノードＩＤの一覧に加えて、各ノードのホップ数までを認識することが可能となる。すなわち、経路途中ブルームフィルタにホップ数の情報を含めることができる。
【０１５９】
ここで、本実施形態でも、他の実施形態と同様に、ハッシュ値の衝突に起因する誤認が発生する可能性があり得る。
【０１６０】
例えば、図２０のノード７８とその子孫ノードのＩＤが追加されたブルームフィルタにおいて、ノード２２２のＩＤに基づくハッシュ値列に対応するビットがすべて１になっている場合を考える。つまり、ノード７８とその子孫ノードのハッシュ値列の和集合が、ノード２２２のハッシュ値列を完全に含んでいる。この場合、コンセントレータ１２０は、ノード２２２がノード４９の子孫ノードなのか、ノード７８の子孫ノードなのかを区別できない。特に、ノード７８が多くの子孫ノードを有している場合、ノード７８からコンセントレータ１２０へと伝送されてくるメッセージに含まれるブルームフィルタは、比較的多数のビットが１になっている可能性が高く、ハッシュ値の衝突の可能性も高くなる。
【０１６１】
図２４は、ノード７８に子孫ノードが多数存在するネットワークの例を示す。ノード９７、１６５、２３１のハッシュ値列の和集合が、ノード２２２のハッシュ値列を完全に含んでおり、一方でノード９７、１６５、２３１のうちいずれか２つのハッシュ値列の和集合は、ノード２２２のハッシュ値列を完全には含んでいない場合について説明する。なお、ブルームフィルタを生成するためのハッシュ関数の引数はノードＩＤのみであるとする。
【０１６２】
このようなハッシュ値の衝突が発生している場合に、コンセントレータ１２０がノード２２２に対してメッセージ（例えば制御指令メッセージ）を送信する場合、コンセントレータ１２０は、ノード４９とノード７８の両方にメッセージを送信する。これによって、ノード２２２にメッセージが確実に届くようにすることができる。また、前述した実施形態と同様に、ハッシュ関数の引数として、ノードＩＤのみを用いる場合のほか、ノードＩＤと、パラメータ（シード値）とから引数を定義することも可能である。パラメータとして、フレーム番号などの時間依存要素を用いてもよい。これにより、例えば，ノード９７、１６５、２３１のハッシュ値列の和集合が常にノード２２２のハッシュ値列を完全に含み続ける可能性を低減させることができる。ノード７８は、過去の数時間フレームにわたって、受信した途中経路ブルームフィルタを保管しておく。ノード７８の制御部２５９は、これらの途中経路ブルームフィルタを比較して、自ノードの子孫ノードに存在しないノードを検出してもよい。本例の場合、ノード７８は、自ノードの子孫ノードに、ノード２２２が存在しないとの判断に至る可能性が高いものと考えられる。
【０１６３】
ただし、このような判断は、最近受信して保管している途中経路ブルームフィルタのみからでは困難である。そこで、ネットワークの他の部分から収集したブルームフィルタ、ネットワーク管理者の手動操作によって与えられた情報、ノードにハードコーディングされた情報によって、現在保管している途中経路ブルームフィルタから得られる情報を補正してもよい。
【０１６４】
例えば、上述した例のように、ノード２２２が、ノード４９とノード７８のどちらの子孫ノードであるのかが判断できない場合、コンセントレータ１２０は、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を通して、ネットワーク管理者にその旨を通知してもよい。ＧＵＩを通じてノード２２２に関するハッシュ値衝突の発生を認識したネットワーク管理者は、ノードの配置図を参照することで、ノード２２２が実際にはノード４９の子孫ノードであること、または、その可能性が高いことをコンセントレータ１２０へと入力する。コンセントレータ１２０は、この情報を元に、ノード２２２がノード７８の子孫ノードではないとの補正を行ってもよい。これにより、コンセントレータ１２０は、ノード２２２の位置を、より正確に特定できる。
【０１６５】
また、ネットワーク管理者は、ネットワークセットアップ時に予め無線通信装置の地理情報を、コンセントレータ１２０へと入力しておいてもよい。地理情報の例として、地理的な配置図と、可能であれば無線伝播障害物の位置とその影響度の推定値等の情報がある。コンセントレータ１２０は、これらの地理情報を用いて、途中経路ブルームフィルタのみからでは判断できないネットワーク上の構成を正しく把握し、ノード位置をより正確に特定できる。
【０１６６】
ノード台数が多い場合、ネットワーク管理者が全てのノード間の関係を手作業でシステムに入力するのは困難である。さらに、無線ネットワークの場合、個々のノードおよびコンセントレータが、実測した無線伝播パラメータに基づいて、自動的にネットワーク情報の構成および変更を行うのが困難である場合が多い。しかし、上述のように目的のノードがどの経路に存在するのかが不明な状況でのみ、ＧＵＩでその補正を行う程度であれば比較的容易に対応できる可能性が高いため、十分に実用的なシステムとして構成することも可能である。
【０１６７】
以上のように、本実施形態によれば、ブルームフィルタを用いることにより、効率よく通信を行うことができる。また、ノードは、メッセージに含まれる経路途中ブルームフィルタを解析することで、メッセージが辿ったノードを特定できる。このような機構は、コンセントレータまたはネットワーク管理者が、ネットワーク構造の全容を把握するのに役立つ。また、通信トラフィックが集中するノードを特定することができる。コンセントレータから発信される制御指令メッセージを適切なノードまで伝搬させるための、ルーティングテーブルの構築に役立てることもできる。
【０１６８】
（第６実施形態）
図２５は、本実施形態に係る無線通信装置１１０の構成を示すブロック図である。この無線通信装置１１０は、図６の無線通信装置１１０と比較すると、制御部２５９が再送要否判断部２６０を備えている点において異なる。再送要否判断部２６０は、親ノードから受信したメッセージに含まれるＡＣＫ情報またはＮＡＣＫ情報（ＡＣＫブルームフィルタまたはＮＡＣＫブルームフィルタ）から、データを再送信するか否かの判断を行う。制御部２５９は、送信するメッセージまたはデータを一時的に保持しておくバッファを備えている。以下、これまで述べた実施形態と異なる部分を中心に説明する。
【０１６９】
送信メッセージ生成部２１０は、自ノードに割り当てられたスロット（送信スロット）で送信するメッセージに含まれるデータを、スロット番号に関連づけて、制御部２５９内のバッファに格納しておく。またはメッセージ全体をスロット番号に関連づけて記憶してもよい。
【０１７０】
ビットマップ検証部２２４は、親ノードから受信したメッセージのＡＣＫブルームフィルタフィールドからブルームフィルタ（ＡＣＫブルームフィルタ）を取り出す。そして、当該ＡＣＫブルームフィルタに基づき、自ノードＩＤを検証して、自ノードのＩＤがＡＣＫブルームフィルタに含まれているか判断する。自ノードＩＤがＡＣＫブルームフィルタに含まれている場合（検証結果が陽性の場合）は、自ノード宛にＡＣＫ情報が返送されたと判断し、それ以外の場合は、自ノード宛にＡＣＫ情報が返送されていないと判断する。
【０１７１】
または、ビットマップ検証部２２４は、親ノードから受信したメッセージのＮＡＣＫブルームフィルタフィールドからブルームフィルタ（ＮＡＣＫブルームフィルタ）を取り出す。そして、当該ＮＡＣＫブルームフィルタに基づき、自ノードＩＤを検証して、自ノードのＩＤがＮＡＣＫブルームフィルタに含まれているか判断する。自ノードＩＤがＮＡＣＫブルームフィルタに含まれている場合（検証結果が陽性の場合）は、自ノード宛にＮＡＣＫ情報が返送されたと判断し、それ以外の場合は、自ノード宛にＮＡＣＫ情報が返送されていないと判断する。
【０１７２】
自ノード宛にＡＣＫ情報が返送されていないと判断した場合、または、自ノード宛にＮＡＣＫ情報が返送されたと判断した場合は、再送要否判断部２６０は、自ノードが送信したメッセージが親ノードにおいて正常に受信されなかったと判断し、メッセージの再送信が必要であると決定する。また、親ノードから、ＡＣＫブルームフィルタまたはＮＡＣＫブルームフィルタを含むメッセージを受信できなかった場合も、メッセージの再送信が必要であると判断する。
【０１７３】
再送信が必要であると判断した場合、再送要否判断部２６０は、再送信の指示を、送信メッセージ生成部２１０へ送る。送信メッセージ生成部２１０は、制御部２５９内のバッファから、上記送信スロットで送信したデータとスロット番号とをペイロードフィールドに設定したメッセージを生成し、メッセージ送信部２５２を介して、親ノードへ送信する。一方、再送信が不要であると判断した場合には、再送要否判断部２６０は、制御部２５９内のバッファから、上記送信スロットで送信したデータ等を破棄する。この際、当該データ等を情報記憶部２３０に移動させてもよい。再送されたメッセージを受信したノードの受信メッセージ解析部２２０または制御部２５９は、ネットワーク全体で共有しているスロット番号と、再送データに関連づけられたスロット番号とを比較することで、受信したメッセージに含まれるデータが、再送データか否かを判断できる。
【０１７４】
なお、上述した例では、再送データとともにスロット番号を、再送信するメッセージに含めたが、これは必須ではない。例えばメッセージに再送フラグフィールドを設け、当該フィールドに再送フラグを設定することで、再送であることを示してもよい。または、再送回数を表すフィールドを設け、当該フィールドに再送回数を設定してもよい。
【０１７５】
また、ノードは、再送データおよびスロット番号を、自ノードのセンサデータとともに同じメッセージで送信してもよい。これにより省電力性を維持しつつ、再送を実現できる。
【０１７６】
ノードの省電力性が求められるＬＬＮｓのようなネットワークにおいては、ノードの送信機会を限定することにより、省電力化を達成しているため、再送のために送信機会を増えることは、適切ではない。一方、再送は、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）レイヤ等のデータリンク層での再送や、ＴＣＰ等のトランスポート層での再送、アプリケーション層での再送など様々に存在する。マルチキャストベースまたはブロードキャストベースの通信方式の場合には、データリンク層での再送は行わないことが一般的である。この背景には、マルチキャストベースまたはブロードキャストベースの通信方式では、各ノードへのＡＣＫ情報またはＮＡＣＫ情報の送信ができないことが原因の一つとしてあげられる。これに対して、本実施形態およびこれまで述べた実施形態においては、ブルームフィルタの形態で、複数ノードに同時にＡＣＫ情報またはＮＡＣＫ情報を通知が可能であることから、データリンク層での再送も可能である。ただし、データリンク層での再送を実現するためには、そのためのスロットを新たに設ける必要がある。このため、無線資源（スロット等）の効率的な使用の観点から、トランスポート層およびアプリケーション層での再送の方が適していると言える。
【０１７７】
また、再送回数などを制限することで、データの再送による送信帯域の逼迫を回避してもよい。例えば、受信側のノードは、再送のデータのスロット番号と、各ノードおよびネットワーク全体で管理しているスロット番号とを比較する。両者の差がしきい値以上の場合には、再送のデータを破棄する。これにより、再送データのより自ノードよりもランクが低いノードである上位ノードへの転送を停止して、再送データによる送信帯域の逼迫を回避できる。
【０１７８】
送信メッセージ生成部２１０またはペイロード生成部２１４は、これまで他のノードから受信して転送（送信）したデータを、そのデータを識別するための情報と関連づけて、情報記憶部２３０に格納する。送信メッセージ生成部２１０またはペイロード生成部２１４は、子ノードから受信したデータが、既に転送（送信）されたデータか否かを、情報記憶部２３０に記憶されている情報に基づき確認する。受信したデータが、すでに送信されたデータである場合には、すなわち当該データが情報記憶部２３０に格納されている場合は、当該データを送信しないようにしてもよい。これにより、不要なデータの中継を防止し、送信帯域の逼迫を回避できる。
【０１７９】
例えば、子ノードが自ノードのセンサデータを含むメッセージを送信し、親ノードは、当該メッセージを正常に受信したとする。しかしながら、子ノードが、親ノードからＡＣＫ情報（自ノードのＩＤを含むＡＣＫブルームフィルタ）を受信できなかった場合、子ノードはセンサデータを再送する。この場合、親ノードは、再送されたデータを再度中継すると、不要なデータが上位ノードへと伝送される。そこで、親ノードは、すでに送信されたデータかを判断し、送信されたデータの場合には、より上位のノードへ転送しないことで、送信帯域の逼迫を回避する。
【０１８０】
図２６は、本実施形態に係る子ノードが親ノードにメッセージを送信後に行う動作のフローチャートである。ここでは親ノードがメッセージにＡＣＫブルームフィルタが含まれている場合を述べる。ＮＡＣＫブルームフィルタの場合も同様の動作が可能である。
【０１８１】
子ノードは、親ノードへメッセージを送信した後、親ノードから受信用のスロットにおいて、メッセージの受信を待機する（ステップＳ１００）。子ノードは、メッセージを受信した場合に、このメッセージが親ノードからのものか否かを判断する（ステップＳ１０１）。
【０１８２】
受信したメッセージが親ノードから送信されたメッセージである場合（ステップＳ１０１のＴＲＵＥ）、子ノードは、ビットマップ検証部２２４で、ＡＣＫブルームフィルタに基づき、自ノード宛にＡＣＫ情報が送られているかを検証する（ステップＳ１０２）。一例として、ハッシュ関数の引数がノードのＩＤの場合、ＡＣＫブルームフィルタに自ノードのＩＤが含まれていれば、自ノード宛にＡＣＫ情報が送信されていると判断する（ステップＳ１０２）。
【０１８３】
自ノード宛にＡＣＫ情報が送信されている場合（ステップＳ１０３のＴＲＵＥ）、子ノードは、ＡＣＫ情報の対象となったデータ（１回目に送信したデータまたは再送データ）を、スロット番号等に関連づけて、情報記憶部２３０に保存する（ステップＳ１０４）。
【０１８４】
一方で、受信したメッセージが親ノードから送信されたメッセージでは無かった場合または受信用のスロットでメッセージを受信しなかった場合（ステップＳ１０１のＦＡＬＳＥ）、または、自ノード宛にＡＣＫ情報が送信されていなかった場合（ステップＳ１０３のＦＡＬＳＥ）、子ノードは、ＡＣＫ情報が返されなかった送信データを、スロット番号等に関連づけて、再送要否判断部２６０内のバッファへ格納する（ステップＳ１０５）。バッファへ格納されたデータ等は、再送に用いられる。なお、ステップＳ１００の前の段階では、子ノードが親ノードに送信したデータおよびスロット番号等は、送信メッセージ生成部２１０のバッファ、制御部２５９のバッファ、または情報記憶部２３０等に一時的に保持しておき、ステップＳ１０５の実行時に、当該再送要否判断部２６０内のバッファに移せば良い。
【０１８５】
図２７（Ａ）は、本実施形態に係る親ノードの動作のフローチャートである。
【０１８６】
親ノードは、子ノードからの受信用のスロットにおいて、子ノードからのメッセージの受信を待機する（ステップＳ２００）。
【０１８７】
親ノードは、当該受信用のスロットで子ノードからのメッセージを受信した場合（ステップＳ２０１のＴＲＵＥ）、当該メッセージのペイロードフィールドに含まれているデータ（ペイロード）と同じデータが、情報記憶部２３０に保存されているかを確認する（ステップＳ２０２）。この際、ペイロードフィールドに複数のノードのデータが含まれているときは、ノードごとに確認を行う。一方、親ノードは、当該スロットで子ノードからのメッセージを受信しなかった場合（ステップＳ２０１のＦＡＬＳＥ）、本フローの処理を終了する。再び子ノードからの受信を待機する状況となった場合に、再び受信待機を行う（Ｓ２００）。
【０１８８】
図２７（Ｂ）は、図２７（Ａ）のステップＳ２０２の詳細な動作フローを示す。親ノードは、子ノードから受信したメッセージのペイロードフィールドから各ノードのデータを抽出し、抽出したすべてのデータに対して処理を実行したかを判断する（Ｓ２１０）。すべてのデータに対して処理が実行された場合（ステップＳ２１０のＴＲＵＥ）、本フローの動作を終了する。まだ抽出したデータのうち、まだ処理していないデータが存在するときは、処理するデータを１つ特定し、特定したデータと同じデータが、情報記憶部２３０に保存されているか否かを確認する（ステップＳ２１１）。当該データが情報記憶部２３０に保存されている場合は（ステップＳ２１１のＴＲＵＥ）、当該データを上位ノード（すなわち自ノードの親ノード）へ送信する必要はないと判断する。そして、ステップＳ２１０に戻る。一方、当該データが情報記憶部２３０に保存されていない場合（ステップＳ２０２のＦＡＬＳＥ）、当該データを上位ノードへ中継するため、制御部２５９のバッファ等へ格納し、ステップＳ２１０の処理へ戻る。
【０１８９】
このように一度も上位ノードへ送信したことのないデータについては、中継用のデータとして制御部２５９のバッファへと保存する。一方、以前に送信済みのデータについては、当該バッファには保存しないことで、上位ノードへの送信を回避する。なお、親ノードがデータを上位ノードへ送信するときは、当該上位ノードから見て当該親ノードは、上位ノードの子ノードとなる。このとき、当該親ノードは、図２６のフローに従って子ノードとしての動作を行う。
【０１９０】
以上のように本実施形態によれば、親ノードから送信されるブルームフィルタ（ＡＣＫブルームフィルタまたはＮＡＣＫブルームフィルタ）に、自ノード宛のＡＣＫ情報またはＮＡＣＫ情報が含まれるかを解析し、ＡＣＫ情報が含まれない、またはＮＡＣＫ情報が含まれる場合に、データを再送する。これにより親ノードに確実にデータを届けることができる。再送の際、当該再送のデータを新規のデータと同じメッセージに含めることで、多くの情報を効率よく伝送することが可能である。さらに、親ノードが子ノードから受信したデータを常に上位ノードへと送信するのではなく、既に送信したデータ（すなわち上位ノードへ送信済みであるにもかかわらず、子ノードから再送により受信したデータ）については送信しないようにする。これにより、無線帯域を逼迫することを抑制することが可能となる。
【０１９１】
（その他の実施形態）
上述した全ての実施形態の説明において、その通信は、一例として電波によりなされるものであるとしたが、通信の媒体は、電波に限定されない。例えば、広義の電波としての光、また、音波を媒体とすることも可能である。その場合、無線通信部等の構成を媒体に応じて適宜変形すればよい。
【０１９２】
また上述した実施形態では、無線センサネットワークを例として説明したが、無線ＬＡＮ、Ｗｉ−Ｆｉ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＺｉｇＢｅｅ（登録商標）、ＩＥＥＥ８０２．１５．４、ＬＰＷＡＮ（Ｌｏｗ−Ｐｏｗｅｒ  Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）に分類されるＮＢ−ＩｏＴ（Ｎａｒｏｏｗ−Ｂａｎｄ  Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）、ＬｏＲａＷＡＮなどの無線通信技術を用いて構築される、その他の種類の無線ネットワークでもよい。また無線ネットワークではなく、有線ネットワークでもよいし、無線ネットワークと有線ネットワークのハイブリッドでもよい。有線通信は一般に無線通信よりも伝送の確実性が高く、また無線通信に比べて伝送距離に応じた信号の減衰が小さいため、無線通信では伝送の信頼性が担保しづらい場合やノード間の距離が離れすぎている場合には、無線通信ネットワーク内で有線通信を併用することは有効である。有線通信は一般に無線通信と比べると伝送成功率が高いため、伝送成功率の近似値として１を用いて、前述の第４のランクの算出方法に用いても良い。
【０１９３】
また、無線センサネットワーク等のネットワークにおいて、コンセントレータとは別に、パケットをスニッフしてデータを記録・保管するバックアップノードが存在してもよい。また、各ノードで計測されたデータを、ネットワークに組み込まれたアクチュエータまたは表示装置またはこれらの両方によって、現実世界へとフィードバックされてもよい。また、各ノードの計測データを組み合わせて、人間の動線解析、災害予知、橋や道路、トンネルなどインフラ設備の老朽化の分析、天気予報などに使用することができる。また、無線通信装置から送信するメッセージには、センサデータ以外のデータ、例えば故障・健全性に関する情報や、近隣ノードとのリンク品質情報などの情報も含めることができる。またコンセントレータまたは上位システムから無線通信装置へとデータを送信することもでき、最適経路情報、時分割スロット割当情報、センシング周期指令などを送信してもよい。
【０１９４】
また、上述した実施形態では、無線通信の方式として、ＴＤＭＡ（Ｔｉｍｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ）方式を用いたが、ＣＳＭＡ（Ｃａｒｒｉｅｒ  Ｓｅｎｓｅ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ）方式、ＣＳＭＡ／ＣＡ（Ｃｏｌｌｉｓｉｏｎ  Ａｖｏｉｄａｎｃｅ）方式、ＴＳＣＨ（Ｔｉｍｅ  Ｓｌｏｔｔｅｄ  Ｃｈａｎｎｅｌ  Ｈｏｐｐｉｎｇ）方式、ＦＴＤＭＡ（Ｆｒｅｑｕｅｎｃｙ−Ｔｉｍｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ）方式など、様々な方式が可能である。
【０１９５】
なお、無線通信装置（ノード）の近隣に、本発明の実施形態と異なる他のシステムが存在し、そのシステムの電波が、本発明の実施形態の無線通信装置（ノード）と干渉することもあり得る。このため、個々のスロットの中で、ＣＳＭＡ／ＣＡ  （Ｃｏｌｌｉｓｉｏｎ  Ａｖｏｉｄａｎｃｅ  ）等の方式を組み合わせて使用してもよい。また、リアルタイム性を実現するためにＴＤＭＡ方式のプロトコルを採用する場合があるが、そのような場合においても、本発明の実施形態を適用することが可能である。
【０１９６】
また、ＴＤＭＡを更に発展させた方式として、ＴＳＣＨ（Ｔｉｍｅ  Ｓｌｏｔｔｅｄ  Ｃｈａｎｎｅｌ  Ｈｏｐｐｉｎｇ）という方式もある。ＴＳＣＨでは各ノードが送受信に用いる無線チャネルを変更しながら通信を行う。これにより、ネットワーク全体のスループットを向上させるとともに、一部の特定のチャネルで発生する、周辺の他の無線システムからの電波干渉の影響を最小限に抑えることができる。よって、電波妨害、または電波傍受の影響を受けにくくすることができる。ＴＳＣＨでは１つのタイムスロットにおいて、複数のチャネルを使用することができる。このため、複数の送信ノード・受信ノードペアが、並列で通信を実施することができる。ＴＳＣＨやＴＳＣＨを利用した無線通信規格である６ＴｉＳＣＨ（ＩＰｖ６  ｏｖｅｒ  ＴＳＣＨ）では、１つのタイムスロットと１つの周波数との組み合わせを、セルあるいはリンクと呼ぶ。ＴＳＣＨ、６ＴｉＳＣＨネットワークを用いる場合は、上述した実施形態の説明の記述において、適宜タイムスロットをセルやリンクと読み替えることで、同様の実施が可能である。ＴＳＣＨや６ＴｉＳＣＨ、またそれらを応用した無線通信規格に準拠した無線通信システムに対して本発明を適用できることは言うまでもない。
【０１９７】
上述した実施形態で想定している無線ネットワークの形態の１つは、ノードの動作に省電力性が求められるＬＬＮｓである。このようなネットワークにおいては、各ノードの稼働時間および通信期間は最小限に抑えられ、プロセッサ、回路、無線モジュールのスリープ時間を長めに確保している場合がある。本実施形態に係る無線通信装置でも、このようにしてスリープのタイミングを図るように制御してもよい。スリープの制御は、いかようなアルゴリズムを用いてもよい。
【０１９８】
無線ネットワークの形態においては、周波数ホッピングを使用して通信帯域の増加を図っているシステムも多く、上述した実施形態においても周波数ホッピングを使用することも可能である。スリープを採用しているネットワークにおいては、送信ノードおよび受信ノードの双方ともがスリープを解除している必要がある。そして、周波数ホッピングを採用している場合に、送信ノードおよび受信ノードが、同じ無線チャネルで動作しているときに、通信を正しく行うことが可能となる。
【０１９９】
また、上述した実施形態における動作は、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のハードウェアや装置により直接実行されるものであってもよい。または、ソフトウェア（プログラム）を、ハードウェアである無線通信装置１１０に備えられるコンピュータに実行させることで、情報処理が行われるようにしてもよい。
【０２００】
さらに、上記のような通信形態においては、暗号化通信と組み合わせることも可能である。例えば、ブルームフィルタフィールド（ビットマップフィールド）以外のフィールドを暗号化することにより、ペイロードやその他の重要なデータを隠蔽して通信する。別の例としては、宛先ノードＩＤとは別に、共有鍵をネットワーク内のノードにおいて共有しておくことにより、共有鍵方式の暗号化通信を行うことも可能である。
【０２０１】
なお、上述した実施形態では、ビットマップとしてブルームフィルタを用いたが、与えられたデータを、確定的な射影関係に基づき所定長のビットマップへ射影するアルゴリズムであれば、他のアルゴリズムでも良い。例えばデータの射影は、ビットマップの全体を用いずに、たとえばビットマップの下位Ｘ個のビットのみを、確定的な射影関係に基づき射影するアルゴリズムでもよい。また、ブルームフィルタを拡張したカウンティングフィルタを用いてもよい。
【０２０２】
カウンティングフィルタは、それぞれ数ビットの領域からなる複数のカウンタを備える。ブルームフィルタでは、個々のハッシュ値に対してそれぞれ１ビットが対応づけられたが、カウンティングフィルタでは、個々のハッシュ値がそれぞれカウンタに対応づけられる。カウンティングフィルタの構成例を図２８に示す。６４個のカウンタを含み、一番左の縦列が０番目のカウンタ、一番右側の縦列が６３番目のカウンタである。１つのカウンタが４ビットを備える。
【０２０３】
要素の追加、例えば、ＡＣＫカウンティングフィルタにＩＤを追加する場合には、ノードＩＤのハッシュ値列に対応するカウンタをインクリメントする。例えば図２８の０番目のカウンタは、「０１１１」であるが、インクリメント後の値は、１を加算して、「１１１０」となる。すなわち、０番目のビットを０（第２値）、１番目、２番目、３番目のビットを１（第１値）に設定する。一方、要素を削除する場合には、ノードＩＤのハッシュ値列に対応するカウンタをデクリメントする。例えば、０番目のカウンタは、「０１１１」であるが、デクリメント後の値は、１を減算して、「０１１０」となる。
【０２０４】
このような実装とすることにより、ブルームフィルタの持つ偽陽性を抑制することが可能となり、また、要素の削除も可能となる。また、ハッシュ値の衝突が発生した場合にも、カウンタの値を調べることで、その衝突の回数を知ることも可能となる。
【０２０５】
なお、このインクリメントおよびデクリメントの処理は、ビットマップ生成部２１２やビットマップ検証部２２４により行ってもよいし、専用の処理部を設けることとしてもよい。カウンティングフィルタにおいて、カウンタは、オーバーフローが発生しないように十分大きくしなければならないが、もし、オーバーフローした場合には、要素の追加や削除の際にオーバーフローしたカウンタ自体の値を変更しないようにすることも可能である。
【０２０６】
本実施形態で用いられる用語は、広く解釈されるべきである。例えば用語“プロセッサ”は、汎用目的プロセッサ、中央処理装置（ＣＰＵ）、マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、コントローラ、マイクロコントローラ、状態マシンなどを包含してもよい。状況によって、“プロセッサ”は、特定用途向け集積回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラム可能論理回路  （ＰＬＤ）などを指してもよい。“プロセッサ”は、複数のマイクロプロセッサのような処理装置の組み合わせ、ＤＳＰおよびマイクロプロセッサの組み合わせ、ＤＳＰコアと協働する１つ以上のマイクロプロセッサを指してもよい。  
【０２０７】
別の例として、用語“メモリ”は、電子情報を格納可能な任意の電子部品を包含してもよい。“メモリ”は、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、プログラム可能読み出し専用メモリ（ＰＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、フラッシュメモリ、磁気または光学データストレージを指してもよく、これらはプロセッサによって読み出し可能である。プロセッサがメモリに対して情報を読み出しまたは書き込みまたはこれらの両方を行うならば、メモリはプロセッサと電気的に通信すると言うことができる。メモリは、プロセッサに統合されてもよく、この場合も、メモリは、プロセッサと電気的に通信していると言うことができる。
【０２０８】
また、用語“ストレージ”は、磁気技術、光学技術、または不揮発性メモリを利用して、永久的にデータを記憶できるに任意の装置を包含してもよい。例えば、ストレージは、ＨＤＤ、光学ディスク、ＳＳＤ等でもよい。
【０２０９】
なお、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素を適宜組み合わせることによって種々の発明を形成できる。また例えば、各実施形態に示される全構成要素からいくつかの構成要素を削除した構成も考えられる。さらに、異なる実施形態に記載した構成要素を適宜組み合わせてもよい。
【符号の説明】
【０２１０】
１１０：無線通信装置、１２０：コンセントレータ、２００：ノードデータベース、２１０：送信メッセージ生成部、２２０：受信メッセージ解析部、２３０：情報記憶部、２４０：センサ情報取得部、２５０：無線通信部
【図１】
2018050186.tif 000003
【図２】
2018050186.tif 000004
【図３】
2018050186.tif 000005
【図４】
2018050186.tif 000006
【図５】
2018050186.tif 000007
【図６】
2018050186.tif 000008
【図７】
2018050186.tif 000009
【図８】
2018050186.tif 000010
【図９】
2018050186.tif 000011
【図１０】
2018050186.tif 000012
【図１１】
2018050186.tif 000013
【図１２】
2018050186.tif 000014
【図１３】
2018050186.tif 000015
【図１４】
2018050186.tif 000016
【図１５】
2018050186.tif 000017
【図１６】
2018050186.tif 000018
【図１７】
2018050186.tif 000019
【図１８】
2018050186.tif 000020
【図１９】
2018050186.tif 000021
【図２０】
2018050186.tif 000022
【図２１】
2018050186.tif 000023
【図２２】
2018050186.tif 000024
【図２３】
2018050186.tif 000025
【図２４】
2018050186.tif 000026
【図２５】
2018050186.tif 000027
【図２６】
2018050186.tif 000028
【図２７】
2018050186.tif 000029
【図２８】
2018050186.tif 000030