(57)【特許請求の範囲】
【請求項１】
マルチホップ通信システムに含まれる親機として動作する通信装置であって、
前記マルチホップ通信システムに含まれる少なくとも１つの子機にＨｅｌｌｏパケットを送信する通信部と、
前記通信装置の累積起動回数を示す起動回数情報を前記Ｈｅｌｌｏパケットに含めて前記通信部に送信させる制御部とを備える
通信装置。
【請求項２】
さらに、前記子機との通信に使用される暗号鍵が記憶される記憶部を備え、
前記制御部は、前記通信装置が起動されるごとに前記記憶部に記憶された暗号鍵を変更する
請求項１に記載の通信装置。
【請求項３】
前記通信部は、前記暗号鍵を前記子機に送信し、
前記制御部は、
前記暗号鍵を送信した前記子機の認証情報を前記記憶部に記憶し、
前記通信装置が起動されると、前記記憶部に記憶されていた前記認証情報を削除する
請求項２に記載の通信装置。
【請求項４】
マルチホップ通信システムに含まれる子機として動作する通信装置であって、
前記マルチホップ通信システムに含まれる親機の累積起動回数を示す起動回数情報を含むＨｅｌｌｏパケットを受信する通信部と、
記憶部と、
受信された前記Ｈｅｌｌｏパケットに含まれる前記起動回数情報を前記記憶部に記憶し、記憶された前記起動回数情報を用いた情報処理を行う制御部とを備える
通信装置。
【請求項５】
前記親機は、当該親機が起動されるごとに、前記通信装置との通信に使用される暗号鍵を変更し、
前記記憶部には、さらに、前記通信部が前記親機から受信した暗号鍵が記憶され、
前記制御部は、さらに、
前記通信部がＨｅｌｌｏパケットを受信した場合、受信されたＨｅｌｌｏパケットに含まれる第一の起動回数情報が、前記記憶部に記憶されている第二の起動回数情報と一致するかを判定し、
前記第一の起動回数情報が前記第二の起動回数情報と一致すると判定した場合、前記記憶部に記憶されている暗号鍵を用いて前記親機と通信を行う
請求項４に記載の通信装置。
【請求項６】
前記制御部は、前記第一の起動回数情報が、前記第二の起動回数情報と異なると判定した場合、前記親機から当該親機との通信に使用される暗号鍵を取得するための認証処理を行う
請求項５に記載の通信装置。
【請求項７】
前記マルチホップ通信システムには、さらに、前記親機とは異なる他の親機が含まれ、
前記制御部は、さらに、
前記親機から暗号鍵を取得するための第一認証処理を行い、
前記第一認証処理の後に前記通信部がＨｅｌｌｏパケットを受信した場合、受信されたＨｅｌｌｏパケットに含まれる第一の起動回数情報が、前記記憶部に記憶されている第二の起動回数情報と一致するかを判定し、
前記第一の起動回数情報が前記第二の起動回数情報と異なると判定した場合、前記他の親機から当該他の親機との通信に使用される暗号鍵を取得するための第二認証処理を行う
請求項４に記載の通信装置。
【請求項８】
前記制御部は、さらに、受信された前記Ｈｅｌｌｏパケットに含まれる前記起動回数情報を含むＨｅｌｌｏパケットを生成し、生成したＨｅｌｌｏパケットを前記通信部に送信させる
請求項４に記載の通信装置。
【請求項９】
前記通信部は、前記マルチホップ通信システムに含まれる、前記通信装置とは異なる他の複数の子機のそれぞれから前記親機の起動回数情報を含むＨｅｌｌｏパケットを受信し、
前記制御部は、さらに、
受信されたＨｅｌｌｏパケットに含まれる第一の起動回数情報と、前記記憶部に記憶されている第二の起動回数情報とを比較し、
前記第一の起動回数情報が前記第二の起動回数情報よりも少ない累積起動回数を示すと判定した場合、前記親機にデータを送信するための中継局となる子機を前記他の複数の子機の中から選択する際に、前記第一の起動回数情報を含むＨｅｌｌｏパケットを送信した子機を前記中継局の候補から除外する
請求項４に記載の通信装置。
【請求項１０】
前記通信部は、前記マルチホップ通信システムに含まれる、前記通信装置とは異なる他の複数の子機のそれぞれから前記親機の起動回数情報を含むＨｅｌｌｏパケットを受信し、
前記制御部は、さらに、
受信された複数のＨｅｌｌｏパケットに含まれる複数の起動回数情報を比較し、
前記比較の結果に基づいて、最も累積起動回数が多いことを示す起動回数情報を送信した子機を、前記親機にデータを送信するための中継局として選択する
請求項４に記載の通信装置。
【請求項１１】
前記マルチホップ通信システムには、さらに、前記親機とは異なる他の親機が含まれ、
前記制御部は、さらに、
前記親機から暗号鍵を取得するための第一認証処理を行い、
前記第一認証処理の後に前記通信部が前記親機の識別子を含むＨｅｌｌｏパケットを所定期間以上受信しなかった場合、前記他の親機から当該他の親機との通信に使用される暗号鍵を取得するための第二認証処理を行う
請求項４に記載の通信装置。
【請求項１２】
マルチホップ通信システムであって、
親機と、子機とを備え、
前記親機は、
前記子機にＨｅｌｌｏパケットを送信する第一通信部と、
前記親機の累積起動回数を示す起動回数情報を前記Ｈｅｌｌｏパケットに含めて前記第一通信部に送信させる第一制御部とを備え、
前記子機は、
前記起動回数情報を含むＨｅｌｌｏパケットを受信する第二通信部と、
記憶部と、
受信された前記Ｈｅｌｌｏパケットに含まれる前記起動回数情報を前記記憶部に記憶する第二制御部とを備える
マルチホップ通信システム。
【請求項１３】
マルチホップ通信システムが実行する通信方法であって、
前記マルチホップ通信システムは、親機と、子機とを備え、
前記親機は、
前記親機の累積起動回数を示す起動回数情報をＨｅｌｌｏパケットに含めて送信し、
前記子機は、
前記起動回数情報を含む前記Ｈｅｌｌｏパケットを受信し、
受信された前記Ｈｅｌｌｏパケットに含まれる前記起動回数情報を前記子機が備える記憶部に記憶する
通信方法。
【請求項１４】
請求項１３に記載の通信方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチホップ通信システム、並びに、マルチホップ通信システムにおいて用いられる通信装置及び通信方法に関する。
【背景技術】
【０００２】
従来、子機が他の子機を中継局として親機と通信を行うマルチホップ通信システムが知られている。特許文献１には、マルチホップ通信ネットワークにおける暗号鍵の構築方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１７４０８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
マルチホップ通信システムにおいて、他の子機を中継局として親機と通信を行う子機（親機と直接通信ができない子機）は、親機の動作状態を直接的に知ることができない。例えば、親機が起動するごとに暗号鍵を変更するようなシステムにおいては、親機が再起動され暗号鍵が変更されているにもかかわらず、子機が変更前の暗号鍵を用いた通信を試みてしまう場合がある。
【０００５】
本発明は、親機の動作状態を子機が容易に知ることができるマルチホップ通信システム並びに、マルチホップ通信システムにおいて用いられる通信装置及び通信方法を提供する。
【課題を解決するための手段】
【０００６】
本発明の一態様に係る通信装置は、マルチホップ通信システムに含まれる親機として動作する通信装置であって、前記マルチホップ通信システムに含まれる少なくとも１つの子機にＨｅｌｌｏパケットを送信する通信部と、前記通信装置の累積起動回数を示す起動回数情報を前記Ｈｅｌｌｏパケットに含めて前記通信部に送信させる制御部とを備える。
【０００７】
本発明の一態様に係る通信装置は、マルチホップ通信システムに含まれる子機として動作する通信装置であって、前記マルチホップ通信システムに含まれる親機の累積起動回数を示す起動回数情報を含むＨｅｌｌｏパケットを受信する通信部と、記憶部と、受信された前記Ｈｅｌｌｏパケットに含まれる前記起動回数情報を前記記憶部に記憶し、記憶された前記起動回数情報を用いた情報処理を行う制御部とを備える。
【０００８】
本発明の一態様に係るマルチホップ通信システムは、マルチホップ通信システムであって、親機と、子機とを備え、前記親機は、前記子機にＨｅｌｌｏパケットを送信する第一通信部と、前記親機の累積起動回数を示す起動回数情報を前記Ｈｅｌｌｏパケットに含めて前記第一通信部に送信させる第一制御部とを備え、前記子機は、前記起動回数情報を含むＨｅｌｌｏパケットを受信する第二通信部と、記憶部と、受信された前記Ｈｅｌｌｏパケットに含まれる前記起動回数情報を前記記憶部に記憶する第二制御部とを備える。
【０００９】
本発明の一態様に係る通信方法は、マルチホップ通信システムが実行する通信方法であって、前記マルチホップ通信システムは、親機と、子機とを備え、前記親機は、前記親機の累積起動回数を示す起動回数情報をＨｅｌｌｏパケットに含めて送信し、前記子機は、前記起動回数情報を含む前記Ｈｅｌｌｏパケットを受信し、受信された前記Ｈｅｌｌｏパケットに含まれる前記起動回数情報を前記子機が備える記憶部に記憶する。
【００１０】
本発明の一態様に係るプログラムは、上記通信方法をコンピュータに実行させるためのプログラムである。
【発明の効果】
【００１１】
本発明のマルチホップ通信システム、並びに、本発明のマルチホップ通信システムにおいて用いられる通信装置及び通信方法によれば、子機は、親機の動作状態を容易に知ることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態に係るマルチホップ通信システムの機能構成を示すブロック図である。
【図２】図２は、サブメッセージのフォーマットの一例を示す図である。
【図３】図３は、属性情報のフォーマットの一例を示す図である。
【図４】図４は、起動回数情報として用いられる属性情報の一例である。
【図５】図５は、実施の形態に係るマルチホップ通信システムの動作例１を示すシーケンス図である。
【図６】図６は、起動回数判定処理のフローチャートである。
【図７】図７は、変形例に係る起動回数判定処理のフローチャートである。
【図８】図８は、実施の形態に係るマルチホップ通信システムの動作例２を示すシーケンス図である。
【図９】図９は、実施の形態に係るマルチホップ通信システムの動作例３を示すシーケンス図である。
【発明を実施するための形態】
【００１３】
以下、実施の形態について図面を参照しながら説明する。なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
【００１４】
なお、各図は模式図であり、必ずしも厳密に図示されたものではない。また、各図において、実質的に同一の構成に対しては同一の符号を付し、重複する説明は省略または簡略化される場合がある。
【００１５】
（実施の形態）
［構成］
まず、実施の形態に係るマルチホップ通信システムの機能構成について説明する。図１は、マルチホップ通信システムの機能構成を示すブロック図である。なお、図１では、複数の子機のうち子機２０ａのみが詳細に図示され、かつ、以下では主として子機２０ａについての説明がなされるが、マルチホップ通信システム１００に含まれる他の子機（例えば、子機２０ｂ及び２０ｃ）についても子機２０ａと同様の構成である。
【００１６】
図１に示されるように、マルチホップ通信システム１００は、親機１０と、子機２０ａ、子機２０ｂ、及び子機２０ｃを含む複数の子機とを備える。マルチホップ通信システム１００が備える子機の数は、特に限定されない。マルチホップ通信システム１００においては、例えば、ツリー型トポロジを有する、マスタースレーブ型の通信ネットワークが用いられる。
【００１７】
マスタースレーブ型の通信ネットワークにおいては、一般に、親機１０が複数の子機それぞれまでのルート（ルート情報）を管理し、複数の子機のそれぞれは、少なくとも親ノードまでのルートを管理する。マスタースレーブ型の通信ネットワークにおいては、一般に、データが伝送されるルートの一端は、親機１０であり、データが伝送されるルートの他端は、複数の子機のいずれかになる。
【００１８】
まず、親機１０の構成について説明する。親機１０は、マルチホップ通信システム１００に含まれる親機として動作する通信装置の一例であって、第一通信部１１と、第一制御部１２と、第一記憶部１３とを備える。親機１０は、例えば、マルチホップ通信システム１００に含まれる複数の子機からデータを取得（集約）し、管理する。
【００１９】
第一通信部１１は、子機（例えば、子機２０ａ）が備える第二通信部２１と通信するための通信インターフェースである。第一通信部１１は、具体的には、通信モジュール（通信回路）である。
【００２０】
第一通信部１１は、例えば、第一制御部１２の制御に基づいて、マルチホップ通信システム１００に含まれる少なくとも１つの子機（例えば、子機２０ａ）にＨｅｌｌｏパケットを送信する。
【００２１】
Ｈｅｌｌｏパケットは、当該Ｈｅｌｌｏパケットを送信する通信装置が、通信可能な状態である（生存している）ことを他の通信装置に通知するために、所定期間ごとにブロードキャスト送信されるパケット（信号）である。所定期間は、例えば、１０ｓ（秒）である。なお、親機１０の起動後、初回のＨｅｌｌｏパケットは、例えば、起動してから１００ｍｓ後に送信される。
【００２２】
Ｈｅｌｌｏパケットは、親機１０として動作する通信装置だけでなく子機として動作する通信装置によってもブロードキャスト送信される。Ｈｅｌｌｏパケットには、送信元の通信装置の識別子、または、親機１０として動作する通信装置から送信元の通信装置までのルート情報（ホップ数及び経由する通信装置の識別子）などが含まれ、通信ルートの構築または通信ルートの変更などにも用いられる。
【００２３】
なお、以下の実施の形態の説明では、通信装置の識別子は、通信装置のＩＤ及び通信用のアドレスとして使用されるが、通信装置のＩＤとアドレスとは別々に設けられてもよい。通信装置の識別子は、例えば、ＭＡＣアドレスである。
【００２４】
第一通信部１１と第二通信部２１とが行う通信は、有線または無線のどのような通信であってもよく、特に限定されない。例えば、第一通信部１１と第二通信部２１とは、電力線搬送通信（ＰＬＣ：Ｐｏｗｅｒ  Ｌｉｎｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）を行うが、有線ＬＡＮを用いた有線通信を行ってもよい。また、第一通信部１１と第二通信部２１とは、特定小電力無線、ＺｉｇＢｅｅ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、または、Ｗｉ−Ｆｉ（登録商標）などの通信規格を用いた無線通信を行ってもよい。
【００２５】
第一制御部１２は、第一通信部１１を制御する制御装置であり、例えば、第一通信部１１を通じて、子機２０ａからデータを受信する。また、第一制御部１２は、第一通信部１１に、後述する起動回数情報を含むＨｅｌｌｏパケット、及び、後述する暗号鍵などを送信させる。第一制御部１２は、具体的には、第一記憶部１３に記憶された制御プログラムを実行するプロセッサであるが、マイクロコンピュータ、または専用回路などにより実現されてもよい。
【００２６】
第一記憶部１３は、第一制御部１２が実行する制御プログラム、及び、親機１０からマルチホップ通信システム１００に含まれる複数の子機それぞれまでのルート情報などが記憶される記憶装置である。また、第一記憶部１３には、本実施の形態では、第一記憶部１３には、起動回数情報、及び、暗号鍵も記憶される。第一記憶部１３は、例えば、半導体メモリなどにより実現される。
【００２７】
上述の起動回数情報は、親機１０の累積起動回数を示す情報である。起動回数情報は、具体的には、例えば、親機１０が起動されるごとに＋１ずつインクリメントされる数値（カウント値）であるが、親機１０が起動されるごとに−１ずつデクリメントされる数値であってもよい。なお、起動回数情報は、親機１０の累積起動回数を示すのであれば、どのような情報であってもよい。
【００２８】
上述の暗号鍵は、複数の子機それぞれとの通信に使用される。暗号鍵は、具体的には、複数の子機との通信においてデータの暗号化に使用される。なお、本実施の形態では、暗号鍵は、複数の子機に対して１つ生成され、親機１０が起動されるごとに変更（更新）される。しかしながら、暗号鍵は、複数の子機のそれぞれに対して１つずつ生成されてもよい。この場合は、第一記憶部１３には、子機の識別子と、当該子機の暗号鍵とが対応付けて記憶される。
【００２９】
次に、子機２０ａについて説明する。子機２０ａは、マルチホップ通信システム１００に含まれる子機として動作する通信装置の一例であって、第二通信部２１と、第二制御部２２と、第二記憶部２３とを備える。
【００３０】
第二通信部２１は、第一通信部１１、または、他の子機が備える第二通信部２１と通信するための通信インターフェースである。第二通信部２１は、具体的には、第一通信部１１と同種の通信モジュール（通信回路）である。第二通信部２１は、例えば、第二制御部２２の制御に基づいてＨｅｌｌｏパケットを送信する。また、第二通信部２１は、マルチホップ通信システムに含まれる親機の累積起動回数を示す起動回数情報を含むＨｅｌｌｏパケットを、親機１０または他の子機から受信する。
【００３１】
第二制御部２２は、第二通信部２１を制御する制御装置であり、例えば、第二通信部２１に、データ及びＨｅｌｌｏパケットなどを送信させる。第二制御部２２は、具体的には、第二記憶部２３に記憶された制御プログラムを実行するプロセッサであるが、マイクロコンピュータ、または専用回路などにより実現されてもよい。
【００３２】
第二記憶部２３は、第二制御部２２が実行する制御プログラム、隣接ノードテーブル、並びに、第二通信部２１によって受信された暗号鍵及び起動回数情報などが記憶される記憶装置である。第二記憶部２３は、具体的には、例えば、半導体メモリなどにより実現される。
【００３３】
以上説明したマルチホップ通信システム１００においては、親機１０の第一制御部１２は、親機１０の累積起動回数を示す起動回数情報をＨｅｌｌｏパケットに含めて第一通信部１１に送信させる。
【００３４】
これにより、このようなＨｅｌｌｏパケットを受信した子機２０ａは、親機１０の累積起動回数を知ることができる。つまり、子機２０ａは、親機１０の動作状態を容易に知ることができる。
【００３５】
また、子機２０ａの第二制御部２２は、さらに、第二通信部２１によって受信されたＨｅｌｌｏパケットに含まれる起動回数情報を、第二記憶部２３に記憶する。
【００３６】
これにより、第二制御部２２は、起動回数情報を記憶した後に受信されたＨｅｌｌｏパケットに含まれる第一の起動回数情報と、第二記憶部２３に記憶されている第二の起動回数情報とを比較することで、親機１０が再起動されたか否かを判定することができる。
【００３７】
なお、累積起動回数は、例えば、親機１０（ＭＡＳＴＥＲ）に関する情報を通知するためのサブメッセージであるＭＡＳＴＥＲ  ＩＮＦＯサブメッセージとして新規に規定されるとよい。この場合、サブメッセージの属性情報のフォーマットをＴＬＶ（Ｔｙｐｅ−Ｌｅｎｇｔｈ−Ｖａｌｕｅ）形式とすることで、サブメッセージに拡張性を持たせることができる。図２は、サブメッセージのフォーマットの一例を示す図である。
【００３８】
図２に示されるように、サブメッセージの先頭から１バイトのフィールドには、サブメッセージのタイプが格納される。ＭＡＳＴＥＲ  ＩＮＦＯサブメッセージに対応するタイプとして、例えば、「１０」が格納される。次の１バイトのフィールドには、サブメッセージのレングス（サブメッセージタイプから属性までのレングス）が格納される。サブメッセージのレングスの後には、各種属性情報が格納される。属性情報は、可変長である。図３は、属性情報のフォーマットの一例を示す図である。
【００３９】
図３に示されるように、属性情報の先頭から１バイトのフィールドには、属性情報のタイプが格納される。次の１バイトのフィールドには、属性情報のレングス（属性情報のタイプから値までのレングス）が格納される。属性情報のレングスの後には、値が格納される。この値は、可変長である。
【００４０】
このような属性情報として、例えば、図４に示されるように起動回数情報が規定されるとよい。図４は、起動回数情報として用いられる属性情報の一例である。図４に示されるように、起動回数情報は、例えば、属性情報のタイプが「１」である、２バイトの長さの値（０以上６５５３５以下）として規定されるとよい。この値は、累積起動回数を示し、累積起動回数が６５５３５を超えると０に戻る。
【００４１】
［動作例１］
次に、マルチホップ通信システム１００の動作例１について説明する。図５は、マルチホップ通信システム１００の動作例１を示すシーケンス図である。なお、以下の動作例１では、子機２０ａは、親機１０と直接通信可能な子機であり、子機２０ｂは、子機２０ａの中継により親機１０との通信が可能な子機であるとする。
【００４２】
まず、親機１０、子機２０ａ、及び子機２０ｂのそれぞれが起動される（Ｓ１１〜Ｓ１３）。ここで、親機１０の第一制御部１２は、起動回数情報を０から１にインクリメントして第一記憶部１３に記憶する。以下、起動回数情報をｃｎｔとも記載し、ステップＳ１１ではｃｎｔ＝１となる。
【００４３】
また、親機１０の第一制御部１２は、暗号鍵Ａを生成し（Ｓ１４）、生成した暗号鍵Ａを、第一記憶部１３に記憶する。暗号鍵Ａは、親機１０と複数の子機との通信に使用される。
【００４４】
次に、第一制御部１２は、起動回数情報（ｃｎｔ＝１）を含むＨｅｌｌｏパケットを、第一通信部１１にブロードキャスト送信させる（Ｓ１５）。このＨｅｌｌｏパケットには、親機１０の識別子が送信元を示す情報として含まれる。子機２０ａの第二通信部２１は、起動回数情報（ｃｎｔ＝１）を含むＨｅｌｌｏパケットを受信する（Ｓ１６）。
【００４５】
次に、子機２０ａの第二制御部２２は、暗号鍵Ａを取得するための認証処理を行う（Ｓ１７）。認証処理においては、まず、子機２０ａの第二通信部２１が子機２０ａの識別子を認証情報として含む認証要求を第一通信部１１に送信する。第一通信部１１が子機２０ａの認証要求を受信すると、第一制御部１２は、子機２０ａの認証情報を第一記憶部１３に記憶する。そして、第一制御部１２は、暗号鍵Ａを第一記憶部１３から読み出し、読み出した暗号鍵Ａを、子機２０ａの識別子（アドレス）を指定して第一通信部１１に送信させる。つまり、親機１０は、子機２０ａに暗号鍵Ａを配布する。
【００４６】
次に、子機２０ａの第二制御部２２は、ステップＳ１６において第二通信部２１が受信したＨｅｌｌｏパケットに含まれる起動回数情報（ｃｎｔ＝１）を第二記憶部２３に記憶する（Ｓ１８）。子機２０ａの第二制御部２２は、さらに、ステップＳ１６において受信されたＨｅｌｌｏパケットに含まれる起動回数情報（ｃｎｔ＝１）と、子機２０ａの識別子（送信元のアドレス）とを含むＨｅｌｌｏパケットを生成し、生成したＨｅｌｌｏパケットを第二通信部２１にブロードキャスト送信させる（Ｓ１９）。子機２０ｂの第二通信部２１は、起動回数情報（ｃｎｔ＝１）を含むＨｅｌｌｏパケットを受信する（Ｓ２０）。
【００４７】
次に、子機２０ｂの第二制御部２２は、親機１０から当該親機１０との通信に使用される暗号鍵Ａを取得するための認証処理を行う（Ｓ２１）。認証処理においては、まず、子機２０ｂの第二通信部２１が子機２０ｂの識別子を認証情報として含む認証要求を子機２０ａの第二通信部２１に送信する。認証要求は、子機２０ａ（第二通信部２１）の中継により、第一通信部１１に送信される。
【００４８】
第一通信部１１が子機２０ｂの認証要求を受信すると、第一制御部１２は、子機２０ｂの認証情報を第一記憶部１３に記憶する。そして、第一制御部１２は、暗号鍵Ａを第一記憶部１３から読み出し、読み出した暗号鍵Ａを、子機２０ｂの識別子（アドレス）を指定して第一通信部１１に送信させる。暗号鍵Ａは、子機２０ａによって中継されて子機２０ｂに配布される。つまり、親機１０は、子機２０ｂに暗号鍵Ａを配布する。
【００４９】
なお、暗号鍵Ａは、例えば、公開鍵として使用されてもよい。つまり、第一制御部１２は、暗号鍵Ａを秘密鍵によって暗号化し、暗号化された暗号鍵Ａを第一通信部１１に送信させてもよい。この場合、秘密鍵は、第一記憶部１３及び複数の子機それぞれの第二記憶部２３にあらかじめ記憶される。
【００５０】
子機２０ｂの第二制御部２２は、ステップＳ２０において第二通信部２１が受信したＨｅｌｌｏパケットに含まれる起動回数情報（ｃｎｔ＝１）を第二記憶部２３に記憶する（Ｓ２２）。子機２０ｂの第二制御部２２は、さらに、ステップＳ２０において受信されたＨｅｌｌｏパケットに含まれる起動回数情報（ｃｎｔ＝１）と、子機２０ｂの識別子（送信元のアドレス）とを含むＨｅｌｌｏパケットを生成し、生成したＨｅｌｌｏパケットを第二通信部２１にブロードキャスト送信させる（Ｓ２３）。
【００５１】
その後、親機１０が停止し、再起動する（Ｓ２４）。親機１０の停止及び再起動は、例えば、ユーザによって人為的に行われる場合もあるし、親機１０のネットワークにおいて通信状態が悪いときなどに自動的に行われる場合もある。
【００５２】
そうすると、親機１０の第一制御部１２は、起動回数情報を１から２にインクリメントして第一記憶部１３に記憶する。また、親機１０の第一制御部１２は、再起動をトリガとして暗号鍵Ａとは異なる暗号鍵Ｂを生成し（Ｓ２５）、生成した暗号鍵Ｂを、第一記憶部１３に記憶する。暗号鍵Ａは、削除される。このように、第一制御部１２は、親機１０が起動されるごとに第一記憶部１３に記憶された暗号鍵を変更する。
【００５３】
また、第一制御部１２は、第一記憶部１３に記憶されていた認証情報（暗号鍵Ａを配布するための認証処理時に第一記憶部１３に記憶された認証情報）を削除する。このように、古い認証情報を削除することで安全性を高めることができる。
【００５４】
次に、第一制御部１２は、起動回数情報（ｃｎｔ＝２）を含むＨｅｌｌｏパケットを、第一通信部１１にブロードキャスト送信させる（Ｓ２６）。このＨｅｌｌｏパケットには、親機１０の識別子が送信元のアドレスとして含まれる。子機２０ａの第二通信部２１は、起動回数情報（ｃｎｔ＝２）を含むＨｅｌｌｏパケットを受信する（Ｓ２７）。
【００５５】
子機２０ａの第二通信部２１が起動回数情報（ｃｎｔ＝２）を含むＨｅｌｌｏパケットを受信すると、子機２０ａの第二制御部２２は、起動回数判定処理を行う（Ｓ２８）。図６は、起動回数判定処理のフローチャートである。
【００５６】
起動回数判定処理においては、子機２０ａの第二制御部２２は、受信されたＨｅｌｌｏパケットに含まれる第一の起動回数情報が、第二記憶部２３に記憶されている第二の起動回数情報と一致するかを判定する（Ｓ４１）。なお、ここでの一致とは、第一の起動回数情報が示す累積起動回数と、第二の起動回数情報が示す累積起動回数とが実質的に一致することを意味する。この場合、第一の起動回数情報は、ステップＳ２７で受信されたＨｅｌｌｏパケットに含まれる起動回数情報であり、第二の起動回数情報は、ステップＳ１８において第二記憶部２３に記憶された起動回数情報である。
【００５７】
ここでは、第一の起動回数情報は、ｃｎｔ＝１であり、第二の起動回数情報であるｃｎｔ＝２と一致しない。したがって、第一の起動回数情報が第二の起動回数情報と異なると判定され（Ｓ４１でＮｏ）、子機２０ａの第二制御部２２は、再度認証処理を行う（Ｓ４２）。これにより、図５に示されるように、暗号鍵Ｂが子機２０ａに配布される（Ｓ２９）。
【００５８】
なお、図６において、第一の起動回数情報が第二の起動回数情報と一致すると判定された場合（Ｓ４１でＹｅｓ）、親機１０の暗号鍵は変更されていないと考えられる。このため、子機２０ａは、第二記憶部２３に記憶されている暗号鍵Ａを用いて親機１０と通信を行う。
【００５９】
その後、子機２０ａの第二制御部２２は、ステップＳ２７において第二通信部２１が受信したＨｅｌｌｏパケットに含まれる起動回数情報（ｃｎｔ＝２）を第二記憶部２３に記憶する（Ｓ３０）。子機２０ａの第二制御部２２は、さらに、ステップＳ２７において受信されたＨｅｌｌｏパケットに含まれる起動回数情報（ｃｎｔ＝２）と、子機２０ａの識別子（送信元のアドレス）とを含むＨｅｌｌｏパケットを生成し、生成したＨｅｌｌｏパケットを第二通信部２１にブロードキャスト送信させる（Ｓ３１）。子機２０ｂの第二通信部２１は、起動回数情報（ｃｎｔ＝２）を含むＨｅｌｌｏパケットを受信する（Ｓ３２）。
【００６０】
子機２０ｂの第二通信部２１が起動回数情報（ｃｎｔ＝２）を含むＨｅｌｌｏパケットを受信すると、子機２０ｂの第二制御部２２は、起動回数判定処理を行う（Ｓ３３）。起動回数判定処理は、図６を用いて説明した処理と同様である。ここでは、第一の起動回数情報は、第二の起動回数情報と異なると判定され、子機２０ｂの第二制御部２２は、再度認証処理を行い、この結果、暗号鍵Ｂが子機２０ｂに配布される（Ｓ３４）。これにより、子機２０ｂは、暗号鍵Ｂを用いて暗号化したデータを、子機２０ａを中継局として親機１０宛に送信することができる（Ｓ３５）。
【００６１】
以上説明したように、親機１０がＨｅｌｌｏパケットに起動回数情報を含めて送信することにより、子機２０ａは、親機１０の再起動を検知できる。また、子機２０ａが親機１０の起動回数情報を含むＨｅｌｌｏパケットを送信することにより、子機２０ｂも親機１０の再起動を検知できる。つまり、マルチホップ通信システム１００に含まれる複数の子機は、少なくともＨｅｌｌ０パケットの送信周期（例えば、１０秒）ごとに親機１０の再起動を検知できる。言い換えれば、マルチホップ通信システム１００においては、子機２０ａ及び子機２０ｂは、親機１０の動作状態を容易に知ることができる。
【００６２】
［動作例１の変形例］
なお、上記動作例１では、第一の起動回数情報と第二の起動回数情報とが異なると判定された場合、同じ親機１０に対して再認証処理を行ったが、マルチホップ通信システム１００に複数の親機が含まれる場合、別の親機に対して認証処理を行ってもよい。図７は、このような起動回数判定処理のフローチャートである。なお、以下では、親機１０に対して既に認証処理を行った子機２０ａが、親機１０の起動回数情報を用いて起動回数判定処理を行うものとして説明が行われる。子機２０ａの第二記憶部２３には、親機１０とは異なる他の親機までのルート情報が記憶されているものとする。
【００６３】
図７に示される起動回数判定処理においては、子機２０ａの第二制御部２２は、受信されたＨｅｌｌｏパケットに含まれる第一の起動回数情報が、第二記憶部２３に記憶されている第二の起動回数情報と一致するかを判定する（Ｓ５１）。
【００６４】
第一の起動回数情報が第二の起動回数情報と一致すると判定された場合（Ｓ５１でＹｅｓ）、子機２０ａは、第二記憶部２３に既に記憶されている暗号鍵を用いて親機１０と通信を行う。
【００６５】
一方、第一の起動回数情報が第二の起動回数情報と異なると判定された場合（Ｓ５１でＮｏ）、子機２０ａの第二制御部２２は、親機１０とは異なる他の親機に対して認証処理を行う（Ｓ５２）。具体的には、子機２０ａの第二通信部２１は、子機２０ａの識別子を認証情報として含む認証要求を、他の親機の識別子を宛先に指定して送信する。これにより、子機２０ａは、他の親機との通信に用いられる暗号鍵を当該他の親機から取得することができる。
【００６６】
以上のような起動回数判定処理により、子機２０ａは、起動回数情報に基づいて、再起動が行われたために通信状態が悪いと推定される親機１０のネットワークに代えて、通信状態がよいと思われる他の親機のネットワークに参入することができる。
【００６７】
［動作例２］
マルチホップ通信システム１００が備える子機は、起動回数情報に基づいて他の子機を中継局として選択してもよい。以下、このようなマルチホップ通信システム１００の動作例２について説明する。図８は、マルチホップ通信システム１００の動作例２を示すシーケンス図である。
【００６８】
なお、以下の動作例２では、子機２０ａ及び子機２０ｃは、親機１０と直接通信可能な子機であり、子機２０ｂは、子機２０ａまたは子機２０ｃの中継により親機１０との通信が可能な子機であって、途中から親機１０のネットワークに参入するものとする。また、動作例２では、動作例１で説明した詳細な事項については説明が省略される場合がある。
【００６９】
まず、親機１０、子機２０ａ、及び子機２０ｃのそれぞれが起動される（Ｓ６１〜Ｓ６３）。ここで、親機１０の第一制御部１２は、起動回数情報を０から１にインクリメントして第一記憶部１３に記憶する。また、親機１０の第一制御部１２は、暗号鍵Ａを生成し（Ｓ１４）、生成した暗号鍵Ａを、第一記憶部１３に記憶する。
【００７０】
次に、第一制御部１２は、起動回数情報（ｃｎｔ＝１）を含むＨｅｌｌｏパケットを、第一通信部１１にブロードキャスト送信させる（Ｓ６４）。
【００７１】
子機２０ａの第二通信部２１は、起動回数情報（ｃｎｔ＝１）を含むＨｅｌｌｏパケットを受信し（Ｓ６５）、子機２０ａの第二制御部２２は、受信されたＨｅｌｌｏパケットに含まれる起動回数情報（ｃｎｔ＝１）を子機２０ａの第二記憶部２３に記憶する。同様に、子機２０ｃの第二通信部２１は、起動回数情報（ｃｎｔ＝１）を含むＨｅｌｌｏパケットを受信し（Ｓ６６）、子機２０ｃの第二制御部２２は、受信されたＨｅｌｌｏパケットに含まれる起動回数情報（ｃｎｔ＝１）を子機２０ｃの第二記憶部２３に記憶する。
【００７２】
そして、子機２０ａの第二制御部２２は、暗号鍵Ａを取得するための認証処理を行い（Ｓ６７）、起動回数情報（ｃｎｔ＝１）及び子機２０ａの識別子を含むＨｅｌｌｏパケットを子機２０ａの第二通信部２１にブロードキャスト送信させる（Ｓ６８）。ここで、子機２０ｂが親機１０のネットワークに参入するために起動される（Ｓ６９）。
【００７３】
その後、子機２０ｃの第二制御部２２は、暗号鍵Ａを取得するための認証処理を行い（Ｓ７０）、起動回数情報（ｃｎｔ＝１）及び子機２０ｃの識別子を含むＨｅｌｌｏパケットを子機２０ｃの第二通信部２１にブロードキャスト送信させる（Ｓ７１）。子機２０ｃの第二通信部２１が送信したＨｅｌｌｏパケットは、子機２０ｂの第二通信部２１によって受信され（Ｓ７２）、子機２０ｂの第二記憶部２３には、起動回数情報（ｃｎｔ＝１）が子機２０ｃの識別子と対応付けて記憶される。
【００７４】
なお、ステップＳ７２においてＨｅｌｌｏパケットを受信した後には、待機時間が設けられる。例えば、他の子機がＨｅｌｌｏパケット送信する可能性がある期間が待機時間とされ、待機時間の経過後に認証処理が開始される。
【００７５】
一方で、親機１０は、停止し、再起動する（Ｓ７３）。そうすると、親機１０の第一制御部１２は、起動回数情報を１から２にインクリメントして第一記憶部１３に記憶する。第一制御部１２は、暗号鍵Ｂを生成し、生成した暗号鍵Ｂを第一記憶部１３に記憶する。
【００７６】
次に、第一制御部１２は、起動回数情報（ｃｎｔ＝２）を含むＨｅｌｌｏパケットを、第一通信部１１にブロードキャスト送信させる（Ｓ７４）。
【００７７】
子機２０ａの第二通信部２１は、起動回数情報（ｃｎｔ＝２）を含むＨｅｌｌｏパケットを受信する（Ｓ７５）。子機２０ａの第二制御部２２は、暗号鍵Ｂを取得するための認証処理を行い（Ｓ７６）、起動回数情報（ｃｎｔ＝２）及び子機２０ａの識別子を含むＨｅｌｌｏパケットを子機２０ａの第二通信部２１にブロードキャスト送信させる（Ｓ７７）。子機２０ａの第二通信部２１が送信したＨｅｌｌｏパケットは、子機２０ｂの第二通信部２１によって受信され（Ｓ７８）、子機２０ｂの第二記憶部２３には、起動回数情報（ｃｎｔ＝２）が子機２０ａの識別子と対応付けて記憶される。
【００７８】
一方で、子機２０ｃの第二通信部２１は、通信状態の悪化等により、ステップＳ７４において送信されたＨｅｌｌｏパケットを受信しない。
【００７９】
以上のような例において、子機２０ｂの第二制御部２２は、受信された複数のＨｅｌｌｏパケットに含まれる複数の起動回数情報を比較する。より具体的には、子機２０ｂの第二制御部２２は、子機２０ｂの第二記憶部２３に記憶された複数の起動回数情報であって、送信元の子機の識別子と対応づけられた複数の起動回数情報を比較する。
【００８０】
そして、子機２０ｂの第二制御部２２は、比較の結果に基づいて、最も起動回数が多いことを示す起動回数情報を送信した子機である子機２０ａを、親機にデータを送信するための中継局として選択する。例えば、子機２０ｂの第二通信部２１は、子機２０ａの第二通信部２１に認証要求を送信することにより親機１０と認証処理を行う（Ｓ７９）。
【００８１】
親機再起動を検知していない（インクリメントされた起動回数情報を受信していない）子機２０ｃを経由して親機１０に接続しようとすると、データ（例えば、認証要求）が親機１０に到達しない場合がある。子機２０ｂが最も累積起動回数が多いことを示す起動回数情報を送信した子機２０ａを中継局として選択すれば、このような不具合を抑制できる。
【００８２】
［動作例２の変形例］
なお、子機２０ｂの第二通信部２１が、第二記憶部２３に記憶されている第二の起動回数情報よりも少ない累積起動回数を示す第一の起動回数情報を受信する場合が考えられる。このような起動回数情報を含むＨｅｌｌｏパケットを送信した子機は、親機１０と通信できていない可能性があるため、このような子機が中継局として選択されると、データ（例えば、認証要求）が親機１０に到達しない可能性がある。
【００８３】
そこで、子機２０ｂは、第一の起動回数情報が第二の起動回数情報よりも少ない累積起動回数を示すと判定した場合、親機１０にデータを送信するための中継局となる子機を選択する際に、第一の起動回数情報を含むＨｅｌｌｏパケットを送信した子機を中継局の候補から除外してもよい。これにより、データが親機１０に到達しない不具合を抑制できる。
【００８４】
なお、図４で説明したように、起動回数情報は、２バイトの情報であるため０以上６５５３５以下の値をとる。起動回数情報は、起動ごとにインクリメントされ、６５５３５を超えると０に戻る。このように、起動回数情報がサイクリックな値であることを考慮して、例えば、現在の値から９９９９前の値は、無効にされてもよい。
【００８５】
既に受信済みの起動回数情報が示す累積起動回数をＹ、新たに受信された起動回数情報が示す累積起動回数をＸとすると、Ｙ＞Ｘの場合には、（Ｙ−Ｘ）＜１００００を満たす場合に、新たに受信された起動回数情報が無効にされる。また、Ｙ＜Ｘの場合には、（６５５３５−Ｘ）＋Ｙ＋１＜１００００を満たすときに、新たに受信された起動回数情報が無効にされる。
【００８６】
［動作例３］
マルチホップ通信システム１００に複数の親機が含まれる場合、一の親機の識別子を含むＨｅｌｌｏパケットを所定期間以上受信しなかった子機は、他の親機に対して認証処理を行ってもよい。以下、このようなマルチホップ通信システム１００の動作例について説明する。図９は、マルチホップ通信システム１００の動作例３を示すシーケンス図である。
【００８７】
なお、以下の動作例３では、子機２０ａは、親機１０及び親機１０ａと直接通信が可能な子機であり、子機２０ｂは、子機２０ａの中継により親機１０及び親機１０ａとの通信が可能な子機であるとする。親機１０、親機１０ａ、子機２０ａ、及び子機２０ｂは、既に起動済みであるとする。また、動作例３では、動作例１及び動作例２で説明した詳細な事項については説明が省略される場合がある。
【００８８】
まず、第一制御部１２は、親機１０の識別子（ＮＥＴＩＤ）を含むＨｅｌｌｏパケットを、親機１０の第一通信部１１にブロードキャスト送信させる（Ｓ８１）。以下の説明では、親機の識別子をＮＥＴＩＤと記載し、親機１０は、ＮＥＴＩＤ＝Ｍ１であるとする。
【００８９】
子機２０ａの第二通信部２１は、識別子（ＮＥＴＩＤ＝Ｍ１）を含むＨｅｌｌｏパケットを受信し（Ｓ８２）、子機２０ａの第二制御部２２は、当該Ｈｅｌｌｏパケットを受信した時刻を子機２０ａの第二記憶部２３に記憶する。
【００９０】
次に、子機２０ａの第二制御部２２は、親機１０に対する認証処理を行う（Ｓ８３）。子機２０ａの第二制御部２２は、さらに、識別子（ＮＥＴＩＤ＝Ｍ１）を含むＨｅｌｌｏパケットを生成し、生成したＨｅｌｌｏパケットを第二通信部２１にブロードキャスト送信させる（Ｓ８４）。子機２０ｂの第二通信部２１は、識別子（ＮＥＴＩＤ＝Ｍ１）を含むＨｅｌｌｏパケットを受信し（Ｓ８５）、子機２０ｂの第二制御部２２は、当該Ｈｅｌｌｏパケットを受信した時刻を子機２０ｂの第二記憶部２３に記憶する。
【００９１】
次に、子機２０ｂの第二制御部２２は、親機１０から当該親機１０との通信に使用される暗号鍵を取得するための認証処理を、子機２０ａを中継局として親機１０に対して行う（Ｓ８６）。
【００９２】
その後、親機１０が停止すると（Ｓ８７）、識別子（ＮＥＴＩＤ＝Ｍ１）を含むＨｅｌｌｏパケットは送信されなくなる。
【００９３】
子機２０ａの第二制御部２２は、子機２０ａの第二通信部２１が最後に識別子（ＮＥＴＩＤ＝Ｍ１）を含むＨｅｌｌｏパケットを受信してから、所定期間Ｔ以上経過したことを検出すると、認証解除を行う（Ｓ８８）。
【００９４】
このとき、親機１０ａの第一制御部１２は、親機１０ａの識別子（ＮＥＴＩＤ＝Ｍ２）を含むＨｅｌｌｏパケットを、親機１０ａの第一通信部１１にブロードキャスト送信させる（Ｓ８９）。子機２０ａの第二通信部２１は、識別子（ＮＥＴＩＤ＝Ｍ２）を含むＨｅｌｌｏパケットを受信し（Ｓ９０）、子機２０ａの第二制御部２２は、当該Ｈｅｌｌｏパケットを受信した時刻を子機２０ａの第二記憶部２３に記憶する。
【００９５】
次に、子機２０ａの第二制御部２２は、親機１０ａに対する認証処理を行う（Ｓ９１）。子機２０ａの第二制御部２２は、さらに、識別子（ＮＥＴＩＤ＝Ｍ２）を含むＨｅｌｌｏパケットを生成し、生成したＨｅｌｌｏパケットを第二通信部２１にブロードキャスト送信させる（Ｓ９２）。
【００９６】
ここで、図９の例では、子機２０ｂの第二通信部２１は、当該第二通信部２１が最後に識別子（ＮＥＴＩＤ＝Ｍ１）を含むＨｅｌｌｏパケットを受信してから所定期間Ｔの経過前に、識別子（ＮＥＴＩＤ＝Ｍ２）を含むＨｅｌｌｏパケットを受信している。しかしながら、このＨｅｌｌｏパケットは、親機１０の識別子（ＮＥＴＩＤ＝Ｍ１）を含むＨｅｌｌｏパケットではない。
【００９７】
したがって、子機２０ｂの第二制御部２２は、その後、子機２０ｂの第二通信部２１が最後に識別子（ＮＥＴＩＤ＝Ｍ１）を含むＨｅｌｌｏパケットを受信してから、所定期間Ｔ以上経過したことを検出する。そうすると、子機２０ｂの第二制御部２２は、認証解除を行い（Ｓ９４）、ステップＳ９３において受信されたＨｅｌｌｏパケットに含まれる識別子（ＮＥＴＩＤ＝Ｍ２）に基づいて、親機１０ａから当該親機１０ａとの通信に使用される暗号鍵を取得するための認証処理を、子機２０ａを中継局として親機１０ａに対して行う（Ｓ９５）。
【００９８】
以上説明したように、マルチホップ通信システム１００に複数の親機が含まれる場合、子機２０ａの第二制御部２２は、さらに、親機１０から暗号鍵を取得するための第一認証処理を行う。第一認証処理の後に子機２０ａの第二通信部２１が親機１０の識別子を含むＨｅｌｌｏパケットを所定期間Ｔ以上受信しなかった場合、他の親機１０ａから当該他の親機１０ａとの通信に使用される暗号鍵を取得するための第二認証処理を行う。子機２０ｂも同様の動作を行う。
【００９９】
このように、所定期間Ｔ以上Ｈｅｌｌｏパケットが受信されないことを検知することにより、子機２０ａ及び子機２０ｂは、親機１０が停止した後も、他の親機１０ａのネットワークに参入して通信を復旧することができる。
【０１００】
［まとめ］
以上説明したように、マルチホップ通信システム１００に含まれる親機１０として動作する通信装置は、マルチホップ通信システム１００に含まれる少なくとも１つの子機２０ａにＨｅｌｌｏパケットを送信する第一通信部１１と、上記通信装置の累積起動回数を示す起動回数情報をＨｅｌｌｏパケットに含めて第一通信部１１に送信させる第一制御部１２とを備える。
【０１０１】
これにより、子機２０ａは、通信装置の生存確認とルート情報の通知とを目的として一般的に用いられるＨｅｌｌｏパケットの受信により、親機１０の累積起動回数を取得することができる。つまり、子機２０ａは、親機１０の動作状態を容易に知ることができる。
【０１０２】
また、上記通信装置は、さらに、子機２０ａとの通信に使用される暗号鍵が記憶される第一記憶部１３を備え、第一制御部１２は、上記通信装置が起動されるごとに第一記憶部１３に記憶された暗号鍵を変更してもよい。
【０１０３】
これにより、子機２０ａは、ルート情報の通知等を目的として一般的に用いられるＨｅｌｌｏパケットの受信により、暗号鍵が変更されているか否かを判定することができる。
【０１０４】
また、第一通信部１１は、暗号鍵を子機２０ａに送信し、第一制御部１２は、暗号鍵を送信した子機２０ａの認証情報を第一記憶部１３に記憶し、上記通信装置が起動されると、第一記憶部１３に記憶されていた認証情報を削除してもよい。
【０１０５】
このように、古い認証情報を削除することによって、安全性が高められる。
【０１０６】
また、マルチホップ通信システム１００に含まれる子機２０ａとして動作する通信装置は、マルチホップ通信システム１００に含まれる親機１０の累積起動回数を示す起動回数情報を含むＨｅｌｌｏパケットを受信する第二通信部２１と、第二記憶部２３と、受信されたＨｅｌｌｏパケットに含まれる起動回数情報を第二記憶部２３に記憶し、記憶された起動回数情報を用いた情報処理を行う第二制御部２２とを備える。
【０１０７】
これにより、子機２０ａは、ルート情報の通知等を目的として一般的に用いられるＨｅｌｌｏパケットの受信により、親機１０の累積起動回数を取得することができる。つまり、子機２０ａは、親機１０の動作状態を容易に知ることができる。また、第二制御部２２は、例えば、認証処理または中継局の選択などの、起動回数情報を用いた情報処理を行うことができる。
【０１０８】
また、親機１０は、当該親機１０が起動されるごとに、上記通信装置との通信に使用される暗号鍵を変更し、第二記憶部２３には、さらに、第二通信部２１が親機１０から受信した暗号鍵が記憶されてもよい。第二制御部２２は、さらに、第二通信部２１がＨｅｌｌｏパケットを受信した場合、受信されたＨｅｌｌｏパケットに含まれる第一の起動回数情報が、第二記憶部２３に記憶されている第二の起動回数情報と一致するかを判定してもよい。第二制御部２２は、第一の起動回数情報が第二の起動回数情報と一致すると判定した場合、第二記憶部２３に記憶されている暗号鍵を用いて親機１０と通信を行ってもよい。
【０１０９】
これにより、親機１０が再起動していないときには、子機２０ａは、第二記憶部２３に記憶されている暗号鍵を用いて親機１０と通信を継続することができる。
【０１１０】
また、第二制御部２２は、第一の起動回数情報が、第二の起動回数情報と異なると判定した場合、親機１０から当該親機１０との通信に使用される暗号鍵を取得するための認証処理を行ってもよい。
【０１１１】
これにより、親機１０が再起動しているときには、子機２０ａは、変更後の暗号鍵を取得することができる。
【０１１２】
また、マルチホップ通信システム１００には、さらに、親機１０とは異なる他の親機が含まれてもよい。第二制御部２２は、さらに、親機１０から暗号鍵を取得するための第一認証処理を行い、第一認証処理の後に第二通信部２１がＨｅｌｌｏパケットを受信した場合、受信されたＨｅｌｌｏパケットに含まれる第一の起動回数情報が、第二記憶部２３に記憶されている第二の起動回数情報と一致するかを判定してもよい。そして、第二制御部２２は、第一の起動回数情報が第二の起動回数情報と異なると判定した場合、他の親機から当該他の親機との通信に使用される暗号鍵を取得するための第二認証処理を行ってもよい。
【０１１３】
これにより、子機２０ａは、起動回数情報に基づいて、再起動が行われたために通信状態が悪いと推定される親機１０のネットワークに代えて、通信状態がよいと思われる他の親機のネットワークに参入することができる。
【０１１４】
また、第二制御部２２は、さらに、受信されたＨｅｌｌｏパケットに含まれる起動回数情報を含むＨｅｌｌｏパケットを生成し、生成したＨｅｌｌｏパケットを第二通信部２１に送信させてもよい。
【０１１５】
これにより、親機１０と直接通信ができない子機２０ｂも、Ｈｅｌｌｏパケットの受信により、親機１０の累積起動回数を取得することができる。つまり、子機２０ｂは、親機１０の動作状態を容易に知ることができる。
【０１１６】
また、子機２０ｂの第二通信部２１は、マルチホップ通信システム１００に含まれる、子機２０ｂとは異なる他の複数の子機のそれぞれから親機１０の起動回数情報を含むＨｅｌｌｏパケットを受信してもよい。また、子機２０ｂの第二制御部２２は、さらに、受信されたＨｅｌｌｏパケットに含まれる第一の起動回数情報と、子機２０ｂの第二記憶部２３に記憶されている第二の起動回数情報とを比較してもよい。子機２０ｂの第二制御部２２は、第一の起動回数情報が第二の起動回数情報よりも少ない累積起動回数を示すと判定した場合、親機１０にデータを送信するための中継局となる子機を他の複数の子機の中から選択する際に、第一の起動回数情報を含むＨｅｌｌｏパケットを送信した子機を中継局の候補から除外してもよい。
【０１１７】
更新された起動回数情報を受信していない子機２０ｃは、親機１０と通信できていない可能性がある。子機２０ｂがこのような子機２０ｃを経由して親機１０に接続しようとすると、データが親機１０に到達しない場合があるが、このような構成によれば、データが親機１０に到達しない不具合を抑制することができる。
【０１１８】
また、子機２０ｂの第二通信部２１は、マルチホップ通信システム１００に含まれる、子機２０ｂとは異なる他の複数の子機のそれぞれから親機１０の起動回数情報を含むＨｅｌｌｏパケットを受信してもよい。また、子機２０ｂの第二制御部２２は、さらに、受信された複数のＨｅｌｌｏパケットに含まれる複数の起動回数情報を比較してもよい。子機２０ｂの第二制御部２２は、比較の結果に基づいて、最も累積起動回数が多いことを示す起動回数情報を送信した子機を、親機１０にデータを送信するための中継局として選択してもよい。
【０１１９】
これにより、データが親機１０に到達しない不具合を抑制することができる。
【０１２０】
また、マルチホップ通信システム１００には、さらに、親機１０とは異なる他の親機１０ａが含まれ、子機２０ａの第二制御部２２は、さらに、親機１０から暗号鍵を取得するための第一認証処理を行ってもよい。そして、子機２０ａの第二制御部２２は、第一認証処理の後に子機２０ａの第二通信部２１が親機１０の識別子を含むＨｅｌｌｏパケットを所定期間Ｔ以上受信しなかった場合、他の親機１０ａから当該他の親機との通信に使用される暗号鍵を取得するための第二認証処理を行ってもよい。
【０１２１】
このように、所定期間Ｔ以上Ｈｅｌｌｏパケットが受信されないことを検知することにより、子機２０ａは、親機１０が停止した後も、他の親機１０ａのネットワークに参入して通信を復旧することができる。
【０１２２】
また、マルチホップ通信システム１００は、親機１０と、子機２０ａとを備える。親機１０は、子機２０ａにＨｅｌｌｏパケットを送信する第一通信部１１と、親機１０の累積起動回数を示す起動回数情報をＨｅｌｌｏパケットに含めて第一通信部１１に送信させる第一制御部１２とを備える。子機２０ａは、起動回数情報を含むＨｅｌｌｏパケットを受信する第二通信部２１と、第二記憶部２３と、受信されたＨｅｌｌｏパケットに含まれる起動回数情報を第二記憶部２３に記憶する第二制御部２２とを備える。
【０１２３】
これにより、子機２０ａは、Ｈｅｌｌｏパケットの受信により、親機１０の累積起動回数を取得することができる。つまり、子機２０ａは、親機１０の動作状態を容易に知ることができる。
【０１２４】
また、マルチホップ通信システム１００が実行する通信方法において、マルチホップ通信システム１００は、親機１０と、子機２０ａとを備える。親機１０は、親機１０の累積起動回数を示す起動回数情報をＨｅｌｌｏパケットに含めて送信する。子機２０ａは、起動回数情報を含むＨｅｌｌｏパケットを受信し、受信されたＨｅｌｌｏパケットに含まれる起動回数情報を子機２０ａが備える第二記憶部２３に記憶する。
【０１２５】
これにより、子機２０ａは、Ｈｅｌｌｏパケットの受信により、親機１０の累積起動回数を取得することができる。つまり、子機２０ａは、親機１０の動作状態を容易に知ることができる。
【０１２６】
（その他の実施の形態）
以上、実施の形態に係るマルチホップ通信システムについて説明したが、本発明は、上記実施の形態に限定されるものではない。
【０１２７】
上記実施の形態で説明した親機として動作する通信装置、または、子機として動作する通信装置の具体的な態様は、特に限定されない。例えば、空調機器、スマートメータ、または照明機器などが通信装置として使用されてもよい。また、親機と子機とは同種の通信端末である必要はなく、子機がスマートメータである場合に、親機は、子機から取得したデータを管理するコンセントレータ（サーバ）等であってもよい。
【０１２８】
なお、上記実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、ＣＰＵまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。
【０１２９】
また、各構成要素は、回路でもよい。これらの回路は、全体として１つの回路を構成してもよいし、それぞれ別々の回路でもよい。また、これらの回路は、それぞれ、汎用的な回路でもよいし、専用の回路でもよい。
【０１３０】
また、上記実施の形態において、特定の処理部が実行する処理を別の処理部が実行してもよい。また、複数の処理の順序が変更されてもよいし、複数の処理が並行して実行されてもよい。
【０１３１】
なお、本発明の包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムまたは記録媒体の任意な組み合わせで実現されてもよい。例えば、本発明は、マルチホップ通信システム、または、マルチホップ通信システムに含まれる親機もしくは子機が実行する通信方法として実現されてもよいし、このような通信方法をコンピュータに実行させるためのプログラムとして実現されてもよい。
【０１３２】
以上、一つまたは複数の態様に係るマルチホップ通信システム並びに、マルチホップ通信システムにおいて用いられる通信装置及び通信方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。
【符号の説明】
【０１３３】
１０、１０ａ  親機
１１  第一通信部（通信部）
１２  第一制御部（制御部）
１３  第一記憶部（記憶部）
２０ａ、２０ｂ、２０ｃ  子機
２１  第二通信部（通信部）
２２  第二制御部（制御部）
２３  第二記憶部（記憶部）
１００  マルチホップ通信システム
【図１】
0006436038.tif 000002
【図２】
0006436038.tif 000003
【図３】
0006436038.tif 000004
【図４】
0006436038.tif 000005
【図５】
0006436038.tif 000006
【図６】
0006436038.tif 000007
【図７】
0006436038.tif 000008
【図８】
0006436038.tif 000009
【図９】
0006436038.tif 000010