(57)【特許請求の範囲】
【請求項１】
コンピュータは、
少なくとも１つの中継装置を介した、通信先との通信経路を設定した第１テーブル、および、前記通信先と通信可能な通信経路と該通信経路に含まれる中継装置の数とを関連付ける第２テーブルを記憶する記憶部を有し、
前記コンピュータに、
前記第１テーブルに設定された全ての通信経路による通信が不可となった場合に、前記第２テーブルを参照して、通信が不可となった前記通信経路よりも前記中継装置の数が多い通信経路を用いた前記通信先との通信に切替える、
処理を実行させることを特徴とする通信制御プログラム。
【請求項２】
前記切替える処理は、前記記憶部を参照して、隣接する中継装置から前記通信先までの通信経路に含まれる中継装置の数が、自コンピュータから前記通信先の通信経路に含まれる中継装置の数に所定値を加算した数である場合に、前記隣接する中継装置を経由する通信経路を用いた前記通信先との通信に切り替えることを特徴とする請求項１に記載の通信制御プログラム。
【請求項３】
前記切替える処理は、切り替えた通信経路による通信が不可になった場合には、通信が不可となった通信経路を除いて、新たな通信経路を用いた前記通信先との通信に切り替えることを特徴とする請求項２に記載の通信制御プログラム。
【請求項４】
前記切替える処理は、前記通信先に送信するパケットに含まれる迂回転送数が閾値未満である場合に、通信が不可となった前記通信経路よりも前記中継装置の数が多い通信経路を用いた前記通信先との通信に切替え、前記パケットの迂回転送数に所定数を加算して、前記パケットを前記通信先に送信することを特徴とする請求項１に記載の通信制御プログラム。
【請求項５】
コンピュータが実行する通信制御方法であって、
前記コンピュータは、通信先との通信経路を設定した第１テーブル、および、前記通信先と通信可能な通信経路と該通信経路に含まれる中継装置の数とを関連付ける第２テーブルを記憶する記憶部を有し、
前記コンピュータは、
前記第１テーブルに設定された全ての通信経路による通信が不可となった場合に、前記第２テーブルを参照して、通信が不可となった前記通信経路よりも前記中継装置の数が多い通信経路を用いた前記通信先との通信に切替える、
処理を実行する通信制御方法。
【請求項６】
少なくとも１つの中継装置を介した、通信先との通信経路を設定した第１テーブル、および、前記通信先と通信可能な通信経路と該通信経路に含まれる中継装置の数とを関連付ける第２テーブルを記憶する記憶部と、
前記第１テーブルに設定された全ての通信経路による通信が不可となった場合に、前記第２テーブルを参照して、通信が不可となった前記通信経路よりも前記中継装置の数が多い通信経路を用いた前記通信先との通信に切替える通信制御部と
を有することを特徴とする通信制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信制御プログラム等に関する。
【背景技術】
【０００２】
アドホックネットワークに含まれる各ノードは、隣接ノード間でハローパケットを送受信し、最終的な宛先に至る複数の経路を構築する。宛先に至る複数の経路の情報は、ルーティングテーブルに登録される。各ノードは、経路を構築した後も、定期的にハローパケットを送受信して各経路の通信品質を計算し、経路の維持や最適な経路を学習し、随時ルーティングテーブルの更新を行う。各ノードは、同一の宛先に至る複数の経路が存在する場合には、各経路に優先順位を設定し、優先順位の高い経路を選択してデータを送信する。また、各ノードはハローパケットの送受信を利用して、隣接ノードとの電波強度や、宛先に至るホップ数等を対応付けたリンクテーブルを生成する。
【０００３】
図２２は、従来のアドホックネットワークの一例を示す図である。図２２に示すように、このアドホックネットワークは、ノード１０ａ，１０ｂ，１０ｃ，１０ｄ，１０ｅ，１０ｆ，１０ｇ，１０ｈ，１０ｓ，１０ｘを有する。
【０００４】
図２３は、従来のルーティングおよびリンクテーブルの一例を示す図である。図２３では一例として、ノード１０ｄのルーティングテーブル１ｄと、リンクテーブル２ｄの一例を示す。図２３に示すように、ルーティングテーブル１ｄは、ＧＤ（Global  Destination）とＬＤ（Local  Destination）と対応付ける。ＧＤはパケットの宛先を示し、ＬＤは、パケットを宛先に送信する場合の転送先となる隣接ノードを示す。なお、上側のＬＤほど優先順位が高いＬＤであることを示す。ＬＤの優先順位は、リンクテーブルの評価値等を基に判定される。
【０００５】
リンクテーブル２ｄは、ノード識別情報と、ホップ数と、電波強度と、評価値とを対応付ける。ノード識別情報は、隣接のノードを一意に識別する情報である。ホップ数は、所定の宛先に至るまでにパケットが経由するノードの数＋１である。電波強度は、隣接ノードと自装置との間の電波強度である。評価値は、電波強度等により算出される値である。
【０００６】
図２３に示すルーティングテーブル１ｄの例では、ノード１０ｘにパケットを送信する場合において、ノード１０ａ，１０ｂ，１０ｃのいずれかを転送先とする旨が示される。なお、優先順位の大小関係は、ノード１０ａ＞ノード１０ｂ＞ノード１０ｃとなる。このため、ノード１０ｄが、ノード１０ｘにパケットを送信する場合には、ルーティングテーブル１ｄに基づき、ノード１０ａにパケットを送信する。ノード１０ｄは、パケット転送に失敗した場合には、他のノード、例えば、ノード１０ｂにパケットを再度送信する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−３０１４４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来技術では、一時的な通信障害によりパケットを通信先に送信することができないという問題がある。
【０００９】
図２４は、従来技術の問題点を説明するための図である。例えば、図２４に示すように、ノード１０ｘとノード１０ａ，１０ｂ，１０ｃとの間に障害物２０が発生し、ノード１０ｘとノード１０ａ，１０ｂ，１０ｃとの間で無線通信が切断されたものとする。また、障害物２０が一時的なものである場合でも、ハローパケットを利用してルーティングテーブルの経路変更する処理が間に合わない。そうすると、例えば、ノード１０ｄは、ルーティングテーブル１ｄに基づいて、何れのノード１０ａ，１０ｂ，１０ｃにノード１０ｘ宛のパケットを転送したとしても、係るパケットをノード１０ｘに到達させることができない。
【００１０】
１つの側面では、パケットを通信先に送信することができる通信制御プログラム、通信制御方法および通信制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
第１の案では、コンピュータは、下記の処理を実行する。コンピュータは、少なくとも１つの中継装置を介した、通信先との予め設定された通信経路による通信が不可となった場合、通信先と通信可能な通信経路と当該通信経路に含まれる通信装置の数を示す情報とを関連付けて記憶する記憶部を参照する。コンピュータは、参照した結果に基づき、通信が不可となった通信経路よりも中継装置の数が多い通信経路を用いた通信先との通信に切替える。
【発明の効果】
【００１２】
本発明の１実施態様によれば、パケットを通信先に送信することができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、本実施例に係るアドホックネットワークの一例を示す図である。
【図２】図２は、パターン１を説明するためのアドホックネットワークを示す図である。
【図３】図３は、パターン１を説明するための各ノードのルーティングテーブルの一例を示す図である。
【図４】図４は、パターン１を説明するためのノードのリンクテーブルの一例を示す図である。
【図５】図５は、パターン２を説明するためのアドホックネットワークの一例を示す図である。
【図６】図６は、パターン２を説明するための各ノードのルーティングテーブルの一例を示す図である。
【図７】図７は、パターン２を説明するためのノードのリンクテーブルの一例を示す図である。
【図８】図８は、パターン３を説明するためのアドホックネットワークの一例を示す図である。
【図９】図９は、パターン３を説明するための各ノードのルーティングテーブルの一例を示す図である。
【図１０】図１０は、パターン３を説明するための各ノードのリンクテーブルの一例を示す図である。
【図１１】図１１は、パケットのデータ構造の一例を示す図（１）である。
【図１２】図１２は、パターン４を説明するためのアドホックネットワークの一例を示す図である。
【図１３】図１３は、パターン４を説明するための各ノードのルーティングテーブルの一例を示す図である。
【図１４】図１４は、パターン４を説明するための各ノードのリンクテーブルの一例を示す図である。
【図１５】図１５は、パケットのデータ構造の一例を示す図（２）である。
【図１６】図１６は、パターン５を説明するためのアドホックネットワークの一例を示す図である。
【図１７】図１７は、パターン５を説明するための各ノードのルーティングテーブルの一例を示す図である。
【図１８】図１８は、パターン５を説明するための各ノードのリンクテーブルの一例を示す図である。
【図１９】図１９は、本実施例に係るノードの構成を示す機能ブロック図である。
【図２０】図２０は、本実施例に係るノードの処理手順の一例を示す図である。
【図２１】図２１は、通信制御プログラムを実行するコンピュータの一例を示す図である。
【図２２】図２２は、従来のアドホックネットワークの一例を示す図である。
【図２３】図２３は、従来のルーティングおよびリンクテーブルの一例を示す図である。
【図２４】図２４は、従来技術の問題点を説明するための図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する通信制御プログラム、通信制御方法および通信制御装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１５】
図１は、本実施例に係るアドホックネットワークの一例を示す図である。図１に示すように、このアドホックネットワークは、ノード１００ａ，１００ｂ，１００ｃ，１００ｄ，１００ｅ，１００ｆ，１００ｇ，１００ｈ，１００ｓ，１００ｘを有する。以下の説明では、ノード１００ａ〜１００ｘをまとめて適宜、ノード１００と表記する。ノード１００は、通信制御装置の一例である。
【００１６】
ノード１００は、隣接するノード間でハローパケットを送受信し、最終的な宛先に至る複数の通信経路を構築する。ノード１００は、宛先に至る複数の通信経路の情報を、ルーティングテーブルに登録する。また、ノード１００は、ハローパケットの送受信を利用して、リンクテーブルを生成する。ノード１００は、如何なる従来技術を利用して、ルーティングテーブルおよびリンクテーブルを生成してもよい。
【００１７】
ここで、ノード１００は、一時的な障害物の影響により、ルーティングテーブルに設定した通信経路による通信が不可となった場合に、リンクテーブルを基にして、ルーティングテーブルに設定されたノード以外のノードを経由する通信経路に切り替える処理を行う。以下において、ノード１００の処理についてより詳細に説明する。
【００１８】
以下において、複数のパターン別に、本実施例に係るアドホックネットワークのノード１００が実行する処理について説明する。まず、正常なネットワークが構築されている状態において、一時的な障害物が発生することで、通信不可となり、経路迂回を行って宛先までパケットを送信するパターン１について説明する。
【００１９】
図２は、パターン１を説明するためのアドホックネットワークを示す図である。図３は、パターン１を説明するための各ノードのルーティングテーブルの一例を示す図である。図３では、一例として、ノード１００ａ，１００ｂ，１００ｃ，１００ｄ，１００ｈ，１００ｇのルーティングテーブルを示す。ノード１００ａのルーティングテーブルを、ルーティングテーブル１５０ａとする。ノード１００ｂのルーティングテーブルを、ルーティングテーブル１５０ｂとする。ノード１００ｃのルーティングテーブルを、ルーティングテーブル１５０ｃとする。ノード１００ｄのルーティングテーブルを、ルーティングテーブル１５０ｄとする。ノード１００ｈのルーティングテーブルを、ルーティングテーブル１５０ｈとする。ノード１００ｇのルーティングテーブルを、ルーティングテーブル１５０ｇとする。ノード１００ｆ，１００ｅのルーティングテーブルは図示を省略する。以下の説明では、ルーティングテーブル１５０ａ，１５０ｂ，１５０ｃ，１５０ｄ，１５０ｈ，１５０ｇをまとめて適宜、ルーティングテーブル１５０と表記する。
【００２０】
図３に示すように、ルーティングテーブル１５０は、ＧＤ（Global  Destination）と、ＬＤ（Local  Destination）と、使用禁止フラグとを対応付ける。ＧＤは、パケットの最終的な宛先を示す。ＬＤは、パケットをＧＤに送信する場合に転送先となる隣接のノードを示す。使用禁止フラグは、パケットを送信することを許容するノードであるか否かを示すフラグである。パケットを送信することを許容するノードである場合には、使用禁止フラグは「ＯＦＦ」となり、転送先にパケットを送信することを許容しないノードである場合には、使用禁止フラグは「ＯＮ」となる。
【００２１】
図４は、パターン１を説明するためのノードのリンクテーブルの一例を示す図である。図４では一例として、ノード１００ｄのリンクテーブル１６０ｄを示す。図４に示すように、このリンクテーブル１６０ｄは、ノード識別情報と、ホップ数と、電波強度と、評価値と、迂回禁止フラグとを対応付ける。ノード識別情報は、隣接ノードを一意に識別する情報である。ホップ数は、ＧＤに至るまでにパケットが経由するノードの数＋１である。本実施例では一例として、ＧＤをノード１００ｘとした場合のホップ数を示す。
【００２２】
電波強度は、隣接ノードとノード１００ｄとの間の電波強度を示す。評価値は、転送先からＧＤに至るノード間の電波強度に基づき算出される値である。本実施例では、評価値が低いほど、パケットを送信する場合のノードの優先度が高いものとする。迂回禁止フラグは、後述するように、リンクテーブル１６０ｄに基づき、パケットの転送先を判定する場合に、パケットを送信することを許容するノードであるか否かを示すフラグである。パケットを送信することを許容するノードである場合には、迂回禁止フラグは「ＯＦＦ」となり、転送先にパケットを送信することを許容しないノードである場合には、迂回禁止フラグは「ＯＮ」となる。
【００２３】
図２の説明に戻る。図２のステップＳ１０は、正常時のアドホックネットワークの一例を示すものである。ノード１００は、ルーティングテーブルに基づいて、パケットを宛先に送信する。例えば、ノード１００ｄは、パケットをノード１００ｘに送信する場合には、ルーティングテーブル１５０ｄに基づいて、パケットを隣接ノードに送信する。
【００２４】
図２のステップＳ１１は、障害物２０ａが発生した場合のアドホックネットワークの一例を示すものである。障害物２０ａにより、ノード１００ｘと、ノード１００ａ，１００ｂ，１００ｃとの間の無線通信が切断される。以下では、ノード１００ｄを起点として、ノード１００ｘ宛にパケット送信を試みる場合について説明する。
【００２５】
（１）ノード１００ｄは、ノード１００ｘに対してデータ通信を行う場合に、ルーティングテーブル１５０ｄに基づいて、第１候補であるノード１００ａにパケットを送信する。
【００２６】
（２）ノード１００ａは、ルーティングテーブル１５０ａに基づいて、第１候補であるノード１００ｘにパケットを送信するが応答がないため、ルーティングテーブル１５０ａのノード１００ｘに対応する使用禁止フラグを「ＯＮ」にする。これにより、ノード１００ａは、ルーティングテーブル１５０ａを、ルーティングテーブル１５０ａ１に更新する。
【００２７】
（３）ノード１００ａは、ルーティングテーブル１５０ａ１に基づいて、第２候補であるノード１００ｂにパケットを送信する。
【００２８】
（４）ノード１００ｂは、ルーティングテーブル１５０ｂに基づいて、第１候補であるノード１００ｘにパケットを送信するが応答がないため、ルーティングテーブル１５０ｂのノード１００ｘに対応する使用禁止フラグを「ＯＮ」にする。これにより、ノード１００ｂは、ルーティングテーブル１５０ｂを、ルーティングテーブル１５０ｂ１に更新する。
【００２９】
（５）ノード１００ｂは、ルーティングテーブル１５０ｂ１に基づいて、第３候補であるノード１００ｃにパケットを送信する。ここで、ノード１００ｂは、（３）において、第２候補のノード１００ａからパケットを受信しているので、ノード１００ａにパケットを送信しない。
【００３０】
（６）ノード１００ｃは、ルーティングテーブル１５０ｃに基づいて、第１候補であるノード１００ｘにパケットを送信するが応答がないため、ルーティングテーブル１５０ｃのノード１００ｘに対応する使用禁止フラグを「ＯＮ」にする。これにより、ノード１００ｃは、ルーティングテーブル１５０ｃを、ルーティングテーブル１５０ｃ１に更新する。
【００３１】
（７）ノード１００ｃは、ルーティングテーブル１５０ｃ１に基づいて、第３候補であるノード１００ｄにパケットを送信する。ここで、ノード１００ｃは、（５）において、第２候補のノード１００ｂからパケットを受信しているので、ノード１００ｂにパケットを送信しない。
【００３２】
（８）ノード１００ｄは、ノード１００ａに送信したパケットを、ノード１００ｃから受信するため、ルーティングテーブル１５０ｄについて、ノード１００ａ，１００ｃに対応する使用禁止フラグを「ＯＮ」にする。これにより、ノード１００ｄは、ルーティングテーブル１５０ｄを、ルーティングテーブル１５０ｄ１に更新する。
【００３３】
図２のステップＳ１２について説明する。（９）ノード１００ｄは、ルーティングテーブル１５０ｄ１に基づき、使用禁止フラグが「ＯＮ」となっていないノード１００ｂに対してパケットを送信する。
【００３４】
（１０）ノード１００ｂは、（５）においてノード１００ｃに送信したパケットをノード１００ｄから再度受信したことになるため、ルーティングテーブル１５０ｂの全ての経路について、パケットを送信不能であると判定する。これにより、ノード１００ｂは、ノード１００ｄにパケットを返送する。
【００３５】
（１１）ノード１００ｄは、ノード１００ｂからデータを返送されたため、ルーティングテーブル１５０ｄ１について、ノード１００ｂに対応する使用禁止フラグを「ＯＮ」にする。これにより、ノード１００ｄは、ルーティングテーブル１５０ｄ１を、ルーティングテーブル１５０ｄ２に更新する。
【００３６】
（１２）ノード１００ｄは、ルーティングテーブル１５０ｄ２について、全ての使用禁止フラグが「ＯＮ」となったため、リンクテーブル１６０に基づいて、ノード１００ｘに到達可能なノードを検出する。例えば、ノード１００ｄは、下記の条件１、条件２、条件３を満たすノードを検出する。
【００３７】
条件１：自装置（ノード１００ｄ）のホップ数（２）に１を加算したホップ数（３）となるノード。
条件２：リンクテーブル（リンクテーブル１６０ｄ）中の迂回禁止フラグが「ＯＦＦ」となるノード。ただし、ルーティングテーブル（ルーティングテーブル１５０ｄ２）で、使用禁止フラグが「ＯＮ」となるノードを除く。
条件３：条件２に該当するノードのうち、評価値が最小となるノード。
【００３８】
なお、ノード１００ｄは、条件１〜３を満たすノードを検出する場合に、ルーティングテーブル１５０ｄのＬＤに設定されているノードを、検出対象から除外する。例えば、ノード１００ｄは、ノード１００ａ〜１００ｃについて、既にルーティングテーブル１５０ｄの経路として採用されているため、検出対象から除外する。
【００３９】
ノード１００ｄは、条件１〜３を満たすノードを、リンクテーブル１６０ｄを基に検索すると、ノード１００ｈが、条件１〜３を満たす。このため、ノード１００ｄは、ノード１００ｈを、パケットの新たな転送先として検出する。図４を用いて説明すると、条件１および条件２を満たすノードは、ノード１００ｈとなる。また、ノード１００ｈは、条件３も満たす。このため、ノード１００ｄは、ノード１００ｈを検出する。
【００４０】
ここで、条件１の根拠について説明する。ノード１００は、自装置のホップ数に１を加算したホップ数よりも大きいノードを選択すると、係るノードにパケットを送信後に、再度パケットが戻ってくる可能性が高くなる。例えば、図１、図４を参照すると、ノード１００ｄのホップ数よりもホップ数の大きくなるノード１００は、ノード１００ｅ，１００ｆとなる。ノード１００ｄは、ＧＤをノード１００ｘとするパケットをノード１００ｅ，１００ｆに送信してしまうと、かかるパケットを再度ノード１００ｅ，１００ｆから受信する可能性が高く、ループが発生する。
【００４１】
図２のステップＳ１３について説明する。（１３）ノード１００ｄは、（１２）において検出したノード１００ｈに対してパケットを送信する。（１４）ノード１００ｈは、ルーティングテーブル１５０ｈに基づき、第１候補であるノード１００ｇにパケットを送信する。
【００４２】
（１５）ノード１００ｇは、ルーティングテーブル１５０ｇに基づき、第１候補であるノード１００ｘにパケットを送信する。
【００４３】
上記のように、ノード１００が（１）〜（１５）の処理を実行することにより、ルーティングテーブル１５０の全経路についてパケット送信に失敗した場合でも、パケットをＧＤに送信することができる。
【００４４】
続いて、パターン１においてパケットを迂回させて送信してから最適ルートが復旧するまでの間にノード１００ｄが再度パケットを送信するパターン２について説明する。図５は、パターン２を説明するためのアドホックネットワークの一例を示す図である。図６は、パターン２を説明するための各ノードのルーティングテーブルの一例を示す図である。
【００４５】
図６では、一例として、ノード１００ｄ，１００ｈ，１００ｇ，１００ｊ，１００ｋのルーティングテーブルを示す。ノード１００ｄのルーティングテーブルを、ルーティングテーブル１５０ｄ２とする。ノード１００ｈのルーティングテーブルを、ルーティングテーブル１５０ｈとする。ノード１００ｇのルーティングテーブルを、ルーティングテーブル１５０ｇとする。ノード１００ｊのルーティングテーブルを、ルーティングテーブル１５０ｊとする。ノード１００ｋのルーティングテーブルを、ルーティングテーブル１５０ｋとする。
【００４６】
図７は、パターン２を説明するためのノードのリンクテーブルの一例を示す図である。図７では一例として、ノード１００ｄのリンクテーブル１６０ｄを示す。
【００４７】
図５のステップＳ２０について説明する。（２１）ノード１００ｄは、ＧＤをノード１００ｘに設定したパケットを送信する場合に、ルーティングテーブル１５０ｄ２を参照する。ノード１００ｄは、ルーティングテーブル１５０ｄ２について、全ての使用禁止フラグが「ＯＮ」となったため、リンクテーブル１６０ｄに基づいて、ノード１００ｘに到達可能なノードを検出する。例えば、ノード１００ｄは、上記の条件１、条件２、条件３を満たすノード１００ｈを検出する。ノード１００ｄは、ノード１００ｈにパケットを送信する。
【００４８】
（２２）ノード１００ｈは、ルーティングテーブル１５０ｈに基づき、第１候補であるノード１００ｇにパケットを送信する。（２３）ノード１００ｇは、ルーティングテーブル１５０ｇに基づき、第１候補であるノード１００ｘにパケットを送信する。
【００４９】
図５のステップＳ２１について説明する。ステップＳ２１は、障害物２０ａに加えて、障害物２０ｂが発生した一例を示す。障害物２０ｂにより、ノード１００ｇと、ノード１００ｘとの間の無線通信が切断される。なお、障害物２０ｂが発生するまで、ノード１００ｄは、ノード１００ｈ，１００ｇを介して、パケットをノード１００ｘに送信しているものとする。
【００５０】
（２４）ノード１００ｇは、ノード１００ｘにパケットを送信するが応答がないため、ルーティングテーブル１５０ｇのノード１００ｘに対応する使用禁止フラグを「ＯＮ」にする。これにより、ノード１００ｇは、ルーティングテーブル１５０ｇを、ルーティングテーブル１５０ｇ１に更新する。
【００５１】
（２５）ノード１００ｇは、ルーティングテーブル１５０ｇ１のＧＤに至る全ての経路について、パケットを送信不能であると判定し、パケットをノード１００ｈに返送する。ノード１００ｈは、パケットをノード１００ｇから再受信したことになるため、ルーティングテーブル１５０ｈのノード１００ｇに対応する使用禁止フラグを「ＯＮ」にする。これにより、ノード１００ｈは、ルーティングテーブル１５０ｈを、ルーティングテーブル１５０ｈ１に更新する。
【００５２】
（２６）ノード１００ｈは、ルーティングテーブル１５０ｈ１のＧＤに至る全ての経路について、パケットを送信不可能であると判定し、パケットをノード１００ｄに返送する。ノード１００ｄは、パケットをノード１００ｈから再受信したことになるため、リンクテーブル１６０ｄのノード１００ｈに対応する迂回禁止フラグを「ＯＮ」にする。これにより、ノード１００ｄは、リンクテーブル１６０ｄを、リンクテーブル１６０ｄ１に更新する。
【００５３】
（２７）ノード１００ｄは、ルーティングテーブル１５０ｄ２について、全ての使用禁止フラグが「ＯＮ」であり、かつ、迂回ルートで利用していたノード１００ｈの迂回禁止フラグが「ＯＮ」となったため、再度、条件１〜３を満たすノードを検出する。ノード１００ｄは、条件１〜３を満たすノードを、リンクテーブル１６０ｄ１を基に検索すると、ノード１００ｊが、条件１〜３を満たす。このため、ノード１００ｄは、ノード１００ｊを、パケットの新たな迂回先として検出する。
【００５４】
（２８）ノード１００ｄは、（２７）において検出したノード１００ｊに対してパケットを送信する。（２９）ノード１００ｊは、ルーティングテーブル１５０ｊに基づき、第１候補であるノード１００ｋにパケットを送信する。（３０）ノード１００ｋは、ルーティングテーブル１５０ｋに基づき、第１候補であるノード１００ｘにパケットを送信する。
【００５５】
上記のように、ノード１００が（２４）〜（３０）の処理を実行することにより、迂回経路で通信が切断された場合でも、他の迂回経路を検出して、パケットをＧＤに送信することができる。なお、ノード１００は、迂回経路を用いてパケットを転送する場合に、パケットに格納される迂回転送数に１を加算する。ノード１００は、迂回転送数が、自身の保持する迂回転送数閾値よりも小さい場合にのみ、迂回先のノード１００にパケットを送信する。なお、ノード１００は、迂回転送数が、自身の保持する迂回転送数閾値以上である場合には、パケットの送信元であるノード１００ｄ宛に、パケットを返送する。迂回転送数に関する具体的な処理の説明は後述する。
【００５６】
続いて、迂回ルートのノードがパケットを送信する場合に、更に迂回ルートを利用するパターン３について説明する。図８は、パターン３を説明するためのアドホックネットワークの一例を示す図である。図９は、パターン３を説明するための各ノードのルーティングテーブルの一例を示す図である。
【００５７】
図９では一例として、ノード１００ｄ，１００ｈ，１００ｐ，１００ｑのルーティングテーブルを示す。ノード１００ｄのルーティングテーブルを、ルーティングテーブル１５０ｄ２とする。ノード１００ｈのルーティングテーブルを、ルーティングテーブル１５０ｈとする。ノード１００ｐのルーティングテーブルを、ルーティングテーブル１５０ｐとする。ノード１００ｑのルーティングテーブルを、ルーティングテーブル１５０ｑとする。
【００５８】
図１０は、パターン３を説明するための各ノードのリンクテーブルの一例を示す図である。図１０では一例として、ノード１００ｄ，１００ｈ，１００ｐのリンクテーブルを示す。ノード１００ｄのリンクテーブルを、リンクテーブル１６０ｄとする。ノード１００ｈのリンクテーブルを、リンクテーブル１６０ｈとする。ノード１００ｐのリンクテーブルを、リンクテーブル１６０ｐとする。
【００５９】
図８のステップＳ３０について説明する。（３１）ノード１００ｄは、ＧＤをノード１００ｘに設定したパケットを送信する場合に、ルーティングテーブル１５０ｄ２を参照する。ノード１００ｄは、ルーティングテーブル１５０ｄ２について、全ての使用禁止フラグが「ＯＮ」となったため、リンクテーブル１６０ｄに基づいて、ノード１００ｘに到達可能なノードを検出する。例えば、ノード１００ｄは、上記の条件１、条件２、条件３を満たすノード１００ｈを検出する。ノード１００ｄは、ノード１００ｈにパケットを送信する。
【００６０】
図１１は、パケットのデータ構造の一例を示す図（１）である。図１１に示すように、例えば、パケットは、ＬＤと、ＬＳと、ＧＤと、ＧＳと、迂回転送数と、実データとを対応付ける。ここで、ＬＤおよびＧＤに関する説明は、上記の説明と同様である。ＬＳ（Local  Source）は、パケットの転送元となる隣接ノードを示す。ＧＳ（Global  Source）は、パケットをはじめに送信したノードを示す。迂回転送数は、迂回経路によるパケットの転送を行った回数を示すものである。実データは、各ノード１００が計測したセンサデータ等のユーザデータが含まれる。
【００６１】
例えば、上記（３１）でノード１００ｄがノード１００ｈに送信するパケットは、図１１のパケット３０ａとなる。ノード１００ｄは、パケット３０ａのＬＤに「ノード１００ｈ」を設定し、ＬＳに「ノード１００ｄ」を設定し、ＧＤに「ノード１００ｘ」を設定し、ＧＳに「ノード１００ｄ」を設定する。また、ノード１００ｄは、迂回転送数に初期値の「１」を設定する。パケットは転送される度に、ＬＤ、ＬＳに格納されるノードの情報が更新される。以下の説明では、特記する場合を除き、パケットのデータ構造に関する説明を省略する。
【００６２】
図８の説明に戻る。（３２）ノード１００ｈは、ルーティングテーブル１５０ｈに基づき、第１候補であるノード１００ｇにパケットを送信する。（３３）ノード１００ｇは、ルーティングテーブル１５０ｇに基づき、第１候補であるノード１００ｘにパケットを送信する。
【００６３】
図８のステップＳ３１について説明する。ステップＳ３１は、障害物２０ａが、更に、ノード１００ｈと、ノード１００ｇ，１００ｌ，１００ｍとの間の無線通信を切断したものとする。ノード１００ｄは、ノード１００ｈとノード１００ｇとの間に無線通信が切断されるまで、ノード１００ｈ，１００ｇを介して、パケットをノード１００ｘに送信しているものとする。
【００６４】
（３４）ノード１００ｈは、ノード１００ｇにパケットを送信するが応答がないため、ルーティングテーブル１５０ｈのノード１００ｇに対応する使用禁止フラグを「ＯＮ」にする。
【００６５】
（３５）ノード１００ｈは、第２候補であるノード１００ｌにパケットを送信するが応答がないため、ルーティングテーブル１５０ｈのノード１００ｌに対応する使用禁止フラグを「ＯＮ」にする。
【００６６】
（３６）ノード１００ｈは、第３候補であるノード１００ｍにパケットを送信するが応答がないため、ルーティングテーブル１５０ｈのノード１００ｍに対応する使用禁止フラグを「ＯＮ」にする。上記（３４）〜（３６）により、ノード１００ｈは、図１０に示すように、ルーティングテーブル１５０ｈを、ルーティングテーブル１５０ｈ１に更新する。
【００６７】
（３７）ノード１００ｈは、ルーティングテーブル１５０ｈ１のＧＤに至る全ての経路について、パケット送信不能であると判定する。パターン３では、ノード１００ｈがリンクテーブル１６０ｈを基にして、迂回先となる隣接ノードを検出する場合について説明する。ノード１００ｈは、条件１〜条件３を満たすノードを、リンクテーブル１６０ｈを基に検索すると、ノード１００ｐが、条件１〜条件３を満たす。
【００６８】
ノード１００ｈは、ノード１００ｐに対してパケットを送信する。ノード１００ｈが、ノード１００ｐに対して送信するパケットのデータ構造は、図１１のパケット３０ｂに示すものとなる。ノード１００ｈは、パケット３０ｂのＬＤに「ノード１００ｐ」を設定し、ＬＳに「ノード１００ｈ」を設定し、ＧＤに「ノード１００ｘ」を設定し、ＧＳに「ノード１００ｄ」を設定する。また、ノード１００ｈは、迂回転送数に１を加算することで、迂回転送数を「２」に設定する。ノード１００ｈは、迂回転送数が、自身の保持する迂回転送数閾値よりも小さい場合にのみ、迂回先のノード１００ｐにパケットを送信する。なお、ノード１００ｈは、迂回転送数が、自身の保持する迂回転送数閾値以上である場合には、パケットの送信元であるノード１００ｄ宛に、パケットを返送する。以下の説明では、迂回転送数が、自身の保持する迂回転送数閾値よりも小さい場合について説明する。
【００６９】
（３８）ノード１００ｐは、ルーティングテーブル１５０ｐに基づき、第１候補であるノード１００ｑにパケットを送信する。（３９）ノード１００ｑは、ルーティングテーブル１５０ｑに基づき、第１候補であるノード１００ｘにパケットを送信する。
【００７０】
上記のように、ノード１００が（３１）〜（３９）の処理を実行することにより、迂回経路先で、更に通信が切断された場合でも、他の迂回経路を検出して、パケットをＧＤに送信することができる。
【００７１】
続いて、迂回経路のノードがパケットを送信する場合に、更に迂回経路を利用するパターン４について説明する。図１２は、パターン４を説明するためのアドホックネットワークの一例を示す図である。図１３は、パターン４を説明するための各ノードのルーティングテーブルの一例を示す図である。
【００７２】
図１３では、一例として、ノード１００ｄ，１００ｈ，１００ｐ，１００ｑのルーティングテーブルを示す。ノード１００ｄのルーティングテーブルを、ルーティングテーブル１５０ｄ２とする。ノード１００ｈのルーティングテーブルを、ルーティングテーブル１５０ｈとする。ノード１００ｐのルーティングテーブルを、ルーティングテーブル１５０ｐとする。ノード１００ｑのルーティングテーブルを、ルーティングテーブル１５０ｑとする。
【００７３】
図１４は、パターン４を説明するための各ノードのリンクテーブルの一例を示す図である。図１４では一例として、ノード１００ｈ，１００ｐのリンクテーブルを示す。ノード１００ｈのリンクテーブルを、リンクテーブル１６０ｈとする。ノード１００ｐのリンクテーブルを、リンクテーブル１６０ｐとする。
【００７４】
図１２の説明に戻る。（４１）ノード１００ｄは、ＧＤをノード１００ｘに設定したパケットを送信する場合に、ルーティングテーブル１５０ｄ２を参照する。ノード１００ｄは、ルーティングテーブル１５０ｄ２について、全ての使用禁止フラグが「ＯＮ」となったため、リンクテーブル１６０ｄに基づいて、ノード１００ｘに到達可能なノードを検出する。例えば、ノード１００ｄは、上記の条件１、条件２、条件３を満たすノード１００ｈを検出する。ノード１００ｄは、ノード１００ｈにパケットを送信する。係る（４１）の処理は、図８の（３１）の処理に対応する。
【００７５】
図１５は、パケットのデータ構造の一例を示す図（２）である。例えば、上記（４１）でノード１００ｄがノード１００ｈに送信するパケットは、図１５のパケット３０ａとなる。ノード１００ｄは、パケット３０ａのＬＤに「ノード１００ｈ」を設定し、ＬＳに「ノード１００ｄ」を設定し、ＧＤに「ノード１００ｘ」を設定し、ＧＳに「ノード１００ｄ」を設定する。また、ノード１００ｄは、迂回転送数に初期値の「１」を設定する。パケットは転送される度に、ＬＤ、ＬＳに格納されるノードの情報が更新される。以下の説明では、特記する場合を除き、パケットのデータ構造に関する説明を省略する。
【００７６】
図１２の説明に戻る。（４２）ノード１００ｈは、ルーティングテーブル１５０ｈに基づいて、第１候補であるノード１００ｇにパケットを送信するが応答がないため、ルーティングテーブル１５０ｈのノード１００ｇに対応する使用禁止フラグを「ＯＮ」にする。
【００７７】
（４３）ノード１００ｈは、第２候補であるノード１００ｌにパケットを送信するが応答がないため、ルーティングテーブル１５０ｈのノード１００ｌに対応する使用禁止フラグを「ＯＮ」にする。
【００７８】
（４４）ノード１００ｈは、第３候補であるノード１００ｍにパケットを送信するが応答がないため、ルーティングテーブル１５０ｈのノード１００ｍに対応する使用禁止フラグを「ＯＮ」にする。上記（４２）〜（４４）により、ノード１００ｈは、ルーティングテーブル１５０ｈを、ルーティングテーブル１５０ｈ１に更新する。
【００７９】
（４５）ノード１００ｈは、ルーティングテーブル１５０ｈ１のＧＤに至る全ての経路について、パケット送信不能であると判定する。パターン４では、ノード１００ｈがリンクテーブル１６０ｈを基にして、迂回先となる隣接ノードを検出する場合について説明する。ノード１００ｈは、条件１〜条件３を満たすノードを、ルーティングテーブル１６０ｈを基に検索すると、ノード１００ｐが、条件１〜条件３を満たす。
【００８０】
ノード１００ｈは、ノード１００ｐに対してパケットを送信する。ノード１００ｈが、ノード１００ｐに対して送信するパケットのデータ構造は、図１５のパケット３０ｂに示すものとなる。ノード１００ｈは、パケット３０ｂのＬＤに「ノード１００ｐ」を設定し、ＬＳに「ノード１００ｈ」を設定し、ＧＤに「ノード１００ｘ」を設定し、ＧＳに「ノード１００ｄ」を設定する。また、ノード１００ｄは、迂回転送数に１を加算することで、迂回転送数を「２」に設定する。ノード１００ｈは、迂回転送数が、自身の保持する迂回転送数閾値よりも小さい場合にのみ、迂回先のノード１００ｐにパケットを送信する。なお、ノード１００ｈは、迂回転送数が、自身の保持する迂回転送数閾値以上である場合には、パケットの送信元であるノード１００ｄ宛に、パケットを返送する。以下の説明では、迂回転送数が、自身の保持する迂回転送数閾値よりも小さい場合について説明する。
【００８１】
（４６）ノード１００ｐは、ルーティングテーブル１５０ｐに基づき、第１候補であるノード１００ｑにパケットを送信するが応答がないため、ルーティングテーブル１５０ｐのノード１００ｑに対応する使用禁止フラグを「ＯＮ」にする。
【００８２】
（４７）ノード１００ｐは、ルーティングテーブル１５０ｐに基づき、第２候補であるノード１００ｒにパケットを送信するが応答がないため、ルーティングテーブル１５０ｐのノード１００ｒに対応する使用禁止フラグを「ＯＮ」にする。
【００８３】
（４８）ノード１００ｐは、ルーティングテーブル１５０ｐに基づき、第３候補であるノード１００ｔにパケットを送信するが応答がないため、ルーティングテーブル１５０ｐのノード１００ｔに対応する使用禁止フラグを「ＯＮ」にする。上記（４６）〜（４８）により、ノード１００ｐは、ルーティングテーブル１５０ｐを、ルーティングテーブル１５０ｐ１に更新する。
【００８４】
（４９）ノード１００ｐは、ルーティングテーブル１５０ｐ１のＧＤに至る全ての経路について、パケット送信不能であると判定する。パターン４では、ノード１００ｐがリンクテーブル１６０ｐを基にして、迂回先となる隣接ノードを検出する場合について説明する。ノード１００ｐは、条件１〜条件３を満たすノードを、ルーティングテーブル１６０ｐを基に検索すると、例えば、ノード１００ｖが、条件１〜条件３を満たす。
【００８５】
ここで、ノード１００ｐが、ノード１００ｖに対して送信する予定のパケットのデータ構造は、図１５のパケット３０ｃに示すものとなる。ノード１００ｐは、パケット３０ｃのＬＤに「ノード１００ｖ」を設定し、ＬＳに「ノード１００ｐ」を設定し、ＧＤに「ノード１００ｘ」を設定し、ＧＳに「ノード１００ｄ」を設定する。また、ノード１００ｐは、迂回転送数に１を加算することで、迂回転送数を「３」に設定する。ノード１００ｐは、迂回転送数が、自身の保持する迂回転送数閾値よりも小さい場合にのみ、迂回先のノード１００ｖにパケットを送信する。以下の説明では、迂回転送数が、自身の保持する迂回転送数閾値以上である場合について説明する。このため、ノード１００ｐは、パケットをノード１００ｖに送信することをやめる。
【００８６】
（５０）ノード１００ｐは、迂回転送数が上限に達しているため、パケットをノード１００ｈに返送する。（５１）ノード１００ｈは、リンクテーブル１６０ｈに基づいて、別の迂回経路がある場合は、該当するノードにパケットを送信する。ノード１００ｈは、別の迂回経路がない場合には、パケットをノード１００ｄに送信する。
【００８７】
上記のように、ノード１００が（４１）〜（５１）の処理を実行することにより、迂回経路を利用して、ＧＤにパケットを送信することを試み、迂回転送数が上限に達してしまった場合には、パケットを送信することを抑止する。これにより、アドホックネットワークのトラフィック量の増加することを防ぐことができる。
【００８８】
続いて、リンクテーブルを用いた迂回経路からルーティングテーブルを用いた経路に復旧するパターン５について説明する。図１６は、パターン５を説明するためのアドホックネットワークの一例を示す図である。図１７は、パターン５を説明するための各ノードのルーティングテーブルの一例を示す図である。
【００８９】
図１７では一例として、ノード１００ａ，１００ｂ，１００ｃ，１００ｄ，１００ｈ，１００ｇのルーティングテーブルを示す。ノード１００ａのルーティングテーブルを、ルーティングテーブル１５０ａとする。ノード１００ｂのルーティングテーブルをルーティングテーブル１５０ｂとする。ノード１００ｃのルーティングテーブルをルーティングテーブル１５０ｃとする。ノード１００ｄのルーティングテーブルをルーティングテーブル１５０ｄとする。ノード１００ｈのルーティングテーブルをルーティングテーブル１５０ｈとする。ノード１００ｇのルーティングテーブルをルーティングテーブル１５０ｇとする。
【００９０】
図１８は、パターン５を説明するための各ノードのリンクテーブルの一例を示す図である。図１８では一例として、ノード１００ａ、１００ｄのリンクテーブルを示す。ノード１００ａのリンクテーブルをリンクテーブル１６０ａとする。ノード１００ｄのリンクテーブルをリンクテーブル１６０ｄとする。
【００９１】
図１６のステップＳ５０について説明する。（６１）障害物が無くなると、ノード１００ｘから送信されるハローパケットが、ノード１００ａ，１００ｂ，１００ｃ，１００ｓ，１００ｇに到達するようになる。（６２）ノード１００ａは、ノード１００ｘからハローパケットを受信すると、リンクテーブル１６０ａを更新する。例えば、ノード１００ａは、ノード識別情報「ノード１００ｘ」に対応する電波強度を「良」、評価値「１」に更新する。ノード１００ｂ，１００ｃ，１００ｓ，１００ｇも、ノード１００ａと同様にして、リンクテーブルを更新する。
【００９２】
（６３）ノード１００ａは、ルーティングテーブル１５０ａの見直しを行う。ノード１００ａは、ノード１００ｘからハローパケットを受信したため、ルーティングテーブル１５０ａのＬＤ「１００ｘ」に対応する使用禁止フラグを「ＯＦＦ」に設定する。ノード１００ｂ，１００ｃ，１００ｓも同様に、ルーティングテーブル１５０のＬＤ「１００ｘ」に対応する使用禁止フラグを「ＯＦＦ」に設定する。
【００９３】
図１６のステップＳ５１について説明する。（６４）ノード１００ａは、ノード１００ｂ，１００ｄに対してハローパケットを送信する。（６５）ノード１００ｄは、ハローパケットを受信すると、リンクテーブル１６０ｄを更新する。例えば、ノード１００ｄは、リンクテーブル１６０ｄのノード識別情報「ノード１００ａ」に対応するホップ数を「２」に更新し、評価値を「２」に更新する。ノード１００ｂも同様にして、リンクテーブル１６０ｂを更新する。ノード１００ｂのリンクテーブルの図示を省略する。
【００９４】
（６６）ノード１００ｄは、ルーティングテーブル１５０ｄの見直しを行う。ノード１００ｄは、ノード１００ａからハローパケットを受信したため、ルーティングテーブル１５０ｄのＬＤ「１００ａ」に対応する使用禁止フラグを「ＯＦＦ」に設定する。また、ノード１００ｄは、リンクテーブル１６０ｄの更新に伴い、ノード１００ａを第１候補のＬＤに設定し、ノード１００ｈを第２候補のＬＤに設定する。これにより、ノード１００ｄは、ルーティングテーブル１５０ｄをルーティングテーブル１５０ｄ１に更新する。ノード１００ｂも同様にして、ルーティングテーブル１５０ｂを、ルーティングテーブル１５０ｂ１に更新する。
【００９５】
図１６のステップＳ５２について説明する。（６７）ノード１００ｂは、ハローパケットをノード１００ａ，１００ｃ，１００ｄに送信し、ノード１００ａ，１００ｃ，１００ｄは、ハローパケットを受信する。
【００９６】
（６８）ノード１００ｄは、リンクテーブル１６０ｄの見直しを行う。例えば、ノード１００ｄは、リンクテーブル１６０ｄのノード識別情報「ノード１００ｂ」に対応するホップ数を「２」に更新し、評価値を「２」に更新する。これにより、ノード１００ｄは、リンクテーブル１６０ｄを、リンクテーブル１６０ｄ１に更新する。図示を省略するが、ノード１００ａ，１００ｃも同様に、リンクテーブルの見直しを行う。
【００９７】
（６９）ノード１００ｄは、ルーティングテーブル１５０ｄ１の見直しを行う。ノード１００ｄは、ノード１００ｂからハローパケットを受信したため、ルーティングテーブル１５０ｄ１のＬＤ「１００ｂ」に対応する使用禁止フラグを「ＯＦＦ」に設定する。これにより、ノード１００ｄは、ルーティングテーブル１５０ｄ１を、ルーティングテーブル１５０ｄ２に更新する。
【００９８】
同様にして、ノード１００ａ，１００ｃも、ルーティングテーブル１５０ａ，１５０ｃの見直しを行う。ノード１００ａは、ルーティングテーブル１５０ａのＬＤ「１００ｂ」に対応する使用禁止フラグを「ＯＦＦ」に設定する。これにより、ノード１００ａは、ルーティングテーブル１５０ａを、ルーティングテーブル１５０ａ１に更新する。また、ノード１００ｃは、ルーティングテーブル１５０ｃのＬＤ「１００ｂ」に対応する使用禁止フラグを「ＯＦＦ」に設定する。これにより、ノード１００ｃは、ルーティングテーブル１５０ｃを、ルーティングテーブル１５０ｃ１に更新する。
【００９９】
図１６のステップＳ５３について説明する。（７０）ノード１００ｃは、ハローパケットをノード１００ｂ，１００ｄに送信し、ノード１００ｂ，１００ｄは、ハローパケットを受信する。
【０１００】
（７１）ノード１００ｄは、リンクテーブル１６０ｄ１の見直しを行う。例えば、ノード１００ｄは、リンクテーブル１６０ｄのノード識別情報「１００ｃ」に対応するホップ数を「２」に更新し、評価値を「２」に更新する。これにより、ノード１００ｄは、リンクテーブル１６０ｄ１を、リンクテーブル１６０ｄ２に更新する。図示を省略するが、ノード１００ｂも同様に、リンクテーブルの見直しを行う。
【０１０１】
（７２）ノード１００ｄは、ルーティングテーブル１５０ｄ２の見直しを行う。ノード１００ｄは、ノード１００ｃからハローパケットを受信し、リンクテーブル１６０ｄ２に示すように更新したため、ＬＤの第３候補を「ノード１００ｃ」に更新し、使用禁止フラグを「ＯＦＦ」に設定する。これにより、ノード１００ｄは、ルーティングテーブル１５０ｄ２をルーティングテーブル１５０ｄ３に更新する。同様に、ノード１００ｂも、ルーティングテーブル１５０ｂ１を、ルーティングテーブル１５０ｂ２に更新する。
【０１０２】
図１６のステップＳ５４について説明する。（７３）ノード１００ｓは、ハローパケットをノード１００ｄに送信し、ノード１００ｄは、ハローパケットを受信する。
【０１０３】
（７４）ノード１００ｄは、リンクテーブル１６０ｄ２の見直しを行う。例えば、ノード１００ｄは、リンクテーブル１６０ｄ２のノード識別情報「１００ｓ」に対応するホップ数を「２」に更新し、評価値を「３」に更新する。これにより、ノード１００ｄは、リンクテーブル１６０ｄ２を、リンクテーブル１６０ｄ３に更新する。
【０１０４】
（７５）ノード１００ｄは、ルーティングテーブル１５０ｄ３の見直しを行う。ここで、ノード１００ｓの評価値が、既に第１候補〜第３候補を上回る評価値でない。このため、ノード１００ｄは、ルーティングテーブル１５０ｄ３の情報をそのままにする。
【０１０５】
上記のように、ノード１００が（６１）〜（７５）の処理を実行することにより、障害物２０ａが発生する前の通信経路を利用したデータ通信を元通りに行うことが出来る。
【０１０６】
次に、上述したパターン１〜パターン５の処理を実行するノード１００の構成の一例について説明する。図１９は、本実施例に係るノードの構成を示す機能ブロック図である。図１９に示すように、このノード１００は、通信部１１０、入力部１２０、表示部１３０、記憶部１４０、制御部１８０を有する。
【０１０７】
通信部１１０は、無線通信を利用して、他のノードと無線通信を実行する処理部である。通信部１１０は、通信装置の一例である。後述する制御部１８０は、ハローパケットやその他のパケットを、通信部を介して送受信する。
【０１０８】
入力部１２０は、ノード１００に各種の情報を入力する入力装置である。例えば、入力部１２０は、タッチパネルや入力ボタンに対応する。表示部１３０は、制御部１８０から出力される各種の情報を表示する表示装置である。例えば、表示部１３０は、液晶ディスプレイ、タッチパネル等に対応する。
【０１０９】
記憶部１４０は、ルーティングテーブル１５０と、リンクテーブル１６０と、迂回転送数閾値１７０とを有する。記憶部１４０は、例えば、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子などの記憶装置に対応する。
【０１１０】
ルーティングテーブル１５０は、図３等で説明したように、ＧＤと、ＬＤと、使用禁止フラグとを対応付けた情報である。ＧＤ、ＬＤ、使用禁止フラグに関する説明は、上記の説明と同様である。
【０１１１】
リンクテーブル１６０は、図４等で説明したように、ノード識別情報と、ホップ数と、電波強度と、評価値と、迂回禁止フラグとを対応付けた情報である。ノード識別情報、ホップ数、電波強度、評価値、迂回禁止フラグに関する説明は、上記の説明と同様である。
【０１１２】
迂回転送数閾値１７０は、パターン３等で説明したパケットに格納された迂回転送数と比較される閾値である。迂回転送数閾値は、ノード１００毎に固有の値が設定される。ノード１００は、パケットに格納された迂回転送数が、迂回転送数閾値１７０よりも小さい場合にのみ、迂回先のノードにパケットを送信する。
【０１１３】
制御部１８０は、更新部１８０ａと通信制御部１８０ｂとを有する。制御部１８０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）や、ＦＰＧＡ（Field  Programmable  Gate  Array）などの集積装置に対応する。また、制御部１８０は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等の電子回路に対応する。
【０１１４】
更新部１８０ａは、隣接するノードとパケットを送受信することで、ルーティングテーブル１５０、リンクテーブル１６０を更新する処理部である。更新部１８０ａは、パケットを受信した場合には、パケットのＬＳに対応するノード１００に応答を送信する。
【０１１５】
更新部１８０ａが、ルーティングテーブル１５０を更新する処理の一例について説明する。更新部１８０ａは、パケットを送受信する過程において、所定のＧＤに到達するＬＤを判定し、ルーティングテーブル１５０に設定する。例えば、更新部１８０ａがパケットを受信し、係るパケットのＧＳに「ノード１００ｘ」が設定され、ＬＳに「ノード１００ａ」が設定されている場合には、ＧＤ「１００ｘ」に到達するＬＤは「１００ａ」であると判定する。更新部１８０ａは、同一のＧＤに到達するＬＤが複数存在する場合には、リンクテーブル１６０の評価値を参照し、評価値の値が低いＬＤほど、優先順位を上げる。
【０１１６】
更新部１８０ａは、ルーティングテーブル１５０に設定されたＬＤのノード１００にパケットを送信し、送信したノード１００から応答を受け付けない場合には、該当するＬＤの使用禁止フラグを「ＯＮ」に設定する。また、更新部１８０ａは、使用禁止フラグが「ＯＮ」となるＬＤのノード１００から、パケットを受信した場合には、使用禁止フラグを「ＯＦＦ」に設定する。
【０１１７】
更新部１８０ａが、リンクテーブル１６０を更新する処理の一例について説明する。更新部１８０ａは、隣接するノードとパケットを送受信する過程において、ホップ数、電波強度、評価値を更新する。例えば、更新部１８０ａは、パケットを受信し、係るパケットのＧＳに「ノード１００ｘ」が設定され、ＬＳに「ノード１００ａ」が設定され、ホップ数に「２」が設定されている場合に、ノード１００ａに対応するホップ数を「２」に設定する。
【０１１８】
更新部１８０ａは、パケットを送受信する場合の電波強度を検出し、検出した電波強度の情報を、リンクテーブル１６０に設定する。例えば、ノード１００ａから受信したパケットの電波強度が「良」である場合には、ノード１００ａに対応する電波強度を「良」に設定する。また、更新部１８０ａは、パケットを送受信する過程において、隣接するノードからＧＤのノードに至るまでの電波強度を収集し、収集した電波強度に基づいて、評価値を算出する。例えば、更新部１８０ａは、電波強度とこの電波強度に対応する評価値とを対応付けたテーブルを保持し、係るテーブルに基づき、評価値を算出する。更新部１８０ａは、算出した評価値を、リンクテーブル１６０に設定する。
【０１１９】
また、更新部１８０ａは、パケットを受信し、受信したパケットのＧＤが、自ノードでない場合に、パケットの情報を更新して、隣接するノードにパケットを転送する。例えば、更新部１８０ａは、ハローパケットのＬＳを自ノードに設定し、ＬＤを隣接するノードに設定し、ホップ数に１を加算することで、パケットを更新する。また、更新部１８０ａは、パケットに、自ノードと隣接ノードとの電波強度の情報を格納する。
【０１２０】
通信制御部１８０ｂは、パケットを送信する場合に、ルーティングテーブル１５０を基にして、送信先となるノード１００を判定する処理部である。例えば、通信制御部１８０ｂは、ルーティングテーブル１５０を参照し、使用禁止フラグが「ＯＦＦ」となっているＬＤの内、優先順位の最も高いＬＤを、送信先として判定し、係るＬＤのノードにパケットを送信する。
【０１２１】
ここで、通信制御部１８０ｂは、ルーティングテーブル１５０の使用禁止フラグが全て「ＯＮ」になっている場合には、ルーティングテーブル１５０に設定された通信経路とは別の迂回経路を用いた通信先との通信に切り替える。例えば、係る迂回経路は、図２等で説明したノード１００ｂ，１００ｈ，１００ｇを経由する経路であり、ルーティングテーブル１５０に設定された経路よりも、中継するノード１００の数が多い経路となる。
【０１２２】
具体的に、通信制御部１８０ｂは、リンクテーブル１６０を基にして、上述した条件１、条件２、条件３を満たすノードを、リンクテーブル１６０から検出し、検出したノード１００にパケットを送信する。通信制御部１８０ｂは、抽出したノード１００にパケットを送信した後、パケットが返送された場合には、該当するリンクテーブルの迂回禁止フラグを「ＯＮ」に設定し、上記の処理を繰り返し実行する。
【０１２３】
なお、通信制御部１８０ｂは、パケットを送信する場合に、パケットの迂回転送数に「１」を加算する。ここで、通信制御部１８０ｂは、パケットの迂回転送数が、迂回転送数閾値１７０以上となる場合には、パケットを送信する処理を抑止する。この場合には、例えば、通信制御部１８０ｂは、ルーティングテーブル１５０の使用禁止フラグが「ＯＦＦ」となるまで待機する。
【０１２４】
次に、本実施例に係るノードの処理手順の一例について説明する。図２０は、本実施例に係るノードの処理手順の一例を示す図である。図２０に示すように、ノード１００の通信制御部１８０ｂは、パケットを受信し（ステップＳ１０１）、ルーティングテーブル１５０の使用禁止フラグが全て「ＯＮ」であるか否かを判定する（ステップＳ１０２）。
【０１２５】
通信制御部１８０ｂは、使用禁止フラグが全て「ＯＮ」でない場合には（ステップＳ１０２，Ｎｏ）、ルーティングテーブル１５０を基にして、ノード１００を選択し、パケットを送信し（ステップＳ１０３）、ステップＳ１０６に移行する。
【０１２６】
一方、通信制御部１８０ｂは、使用禁止フラグが全て「ＯＮ」である場合には（ステップＳ１０２，Ｙｅｓ）、リンクテーブル１６０を基にして、条件１、条件２、条件３を満たすノード１００を選択する（ステップＳ１０４）。通信制御部１８０ｂは、選択したノード１００にパケットを送信し（ステップＳ１０５）、ステップＳ１０６に移行する。なお、ステップＳ１０５において、通信制御部１８０ｂは、パケットの迂回転送数が、迂回転送閾値１７０以上となる場合には、パケットを送信することを抑止し、パケットのＧＳにパケットを返送する。
【０１２７】
ノード１００の更新部１８０ａは、パケットを送信したノード１００から応答を受信したか否かを判定する（ステップＳ１０６）。更新部１８０ａは、ノードから応答を受信していない場合には（ステップＳ１０６，Ｎｏ）、ルーティングテーブル１５０を更新し（ステップＳ１０７）、ステップＳ１０２に移行する。
【０１２８】
一方、更新部１８０ａは、ノードから応答を受信した場合には（ステップＳ１０６，Ｙｅｓ）、送信結果に基づいて、ルーティングテーブル１５０およびリンクテーブル１６０を更新する（ステップＳ１０８）。例えば、更新部１８０ａは、ステップＳ１０８において、隣接のノードにパケットを送信できなかった場合には、ルーティングテーブル１５０の該当する使用禁止フラグを「ＯＮ」に設定する。また、更新部１８０ａは、迂回経路先のノードがパケットを送信できなかった場合には、リンクテーブル１６０の該当する迂回禁止フラグを「ＯＮ」に設定する。
【０１２９】
通信制御部１８０ｂは、送信結果に基づき、パケットを送信できた場合には、（ステップＳ１０９，Ｙｅｓ）、処理を終了する。通信制御部１８０ｂは、送信結果に基づき、パケットを送信できなかった場合には（ステップＳ１０９，Ｎｏ）、ステップＳ１０２に移行する。
【０１３０】
次に、本実施例に係るノード１００の効果について説明する。ノード１００は、ルーティングテーブル１５０に予め設定された通信経路による通信が不可となった場合に、リンクテーブル１６０を参照して、通信が不可となった前記通信経路よりも前記中継装置の数が多い通信経路を用いた前記通信先との通信に切替える。これによって、一時的に障害物が発生して、リンクテーブル１５０の通信経路が利用できない場合でも、パケットを通信先に送信することができる。
【０１３１】
ノード１００は、リンクテーブル１５０を参照し、条件１、条件２、条件３を満たす隣接ノードを判定し、判定した隣接ノードを経由する迂回経路を用いた通信先との通信に切り替える。これにより、パケットを送信した場合に、パケットがループすることを防止しつつ、パケットを通信先に送信することができる。
【０１３２】
ノード１００は、迂回経路を利用して、パケットを送信する場合に、利用中の迂回経路による通信先との通信が利用できなくなった場合に、利用できない迂回経路を除いて、他の迂回経路を選択し、通信を継続する。このため、現在利用中の迂回経路が利用できなくなっても、他の迂回経路に切り替えて、通信先と通信を行うことができる。
【０１３３】
ノード１００は、迂回経路を利用する場合に、迂回転送数をインクリメントし、迂回転送数が迂回転送数閾値１７０未満の場合に、迂回経路にパケットを送信する。このため、迂回経路を使用したパケットによるトラフィック量の増加を防止することができる。
【０１３４】
次に、上記実施例に示したノード１００と同様の機能を実現する通信制御プログラムを実行するコンピュータの一例について説明する。図２１は、通信制御プログラムを実行するコンピュータの一例を示す図である。
【０１３５】
図２１に示すように、コンピュータ３００は、各種演算処理を実行するＣＰＵ３０１と、ユーザからのデータの入力を受け付ける入力装置３０２と、ディスプレイ３０３とを有する。また、コンピュータ３００は、記憶媒体からプログラム等を読取る読み取り装置３０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信装置３０５とを有する。また、コンピュータ３００は、各種情報を一時記憶するＲＡＭ３０６と、ハードディスク装置３０７とを有する。そして、各装置３０１〜３０７は、バス３０８に接続される。
【０１３６】
ハードディスク装置３０７は、通信制御プログラム３０７ａを有する。ＣＰＵ３０１は、通信制御プログラム３０７ａを読み出してＲＡＭ３０６に展開する。通信制御プログラム３０７ａは、通信制御プロセス３０６ａとして機能する。通信制御プロセス３０６ａの処理は、通信制御部１８０ｂの処理に対応する。
【０１３７】
なお、通信制御プログラム３０７ａについては、必ずしも最初からハードディスク装置３０７に記憶させておかなくても良い。例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ２００が通信制御プログラム３０７ａを読み出して実行するようにしてもよい。
【０１３８】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１３９】
（付記１）コンピュータに、
少なくとも１つの中継装置を介した、通信先との予め設定された通信経路による通信が不可となった場合、前記通信先と通信可能な通信経路と当該通信経路に含まれる中継装置の数を示す情報とを関連付けて記憶する記憶部を参照して、通信が不可となった前記通信経路よりも前記中継装置の数が多い通信経路を用いた前記通信先との通信に切替える、
ことを実行させることを特徴とする通信制御プログラム。
【０１４０】
（付記２）前記切り替える処理は、前記記憶部を参照して、隣接する中継装置から前記通信先までの通信経路に含まれる中継装置の数が、自コンピュータから前記通信先の通信経路に含まれる中継装置の数に所定値を加算した数である場合に、前記隣接する中継装置を経由する通信経路を用いた前記通信先との通信に切り替えることを特徴とする付記１に記載の通信制御プログラム。
【０１４１】
（付記３）前記切り替える処理は、切り替えた通信経路による通信が不可になった場合には、通信が不可となった通信経路を除いて、新たな通信経路を用いた前記通信先との通信に切り替えることを特徴とする付記２に記載の通信制御プログラム。
【０１４２】
（付記４）前記切り替える処理は、前記通信先に送信するパケットに含まれる迂回転送数が閾値未満である場合に、通信が不可となった前記通信経路よりも前記中継装置の数が多い通信経路を用いた前記通信先との通信に切替え、前記パケットの迂回転送数に所定数を加算して、前記パケットを前記通信先に送信することを特徴とする付記１に記載の通信制御プログラム。
【０１４３】
（付記５）コンピュータが実行する通信制御方法であって、
少なくとも１つの中継装置を介した、通信先との予め設定された通信経路による通信が不可となった場合、前記通信先と通信可能な通信経路と当該通信経路に含まれる中継装置の数を示す情報とを関連付けて記憶する記憶部を参照して、通信が不可となった前記通信経路よりも前記中継装置の数が多い通信経路を用いた前記通信先との通信に切替える、
ことを実行する通信制御方法。
【０１４４】
（付記６）前記切り替える処理は、前記記憶部を参照して、隣接する中継装置から前記通信先までの通信経路に含まれる中継装置の数が、自コンピュータから前記通信先の通信経路に含まれる中継装置の数に所定値を加算した数である場合に、前記隣接する中継装置を経由する通信経路を用いた前記通信先との通信に切り替えることを特徴とする付記５に記載の通信制御方法。
【０１４５】
（付記７）前記切り替える処理は、切り替えた通信経路による通信が不可になった場合には、通信が不可となった通信経路を除いて、新たな通信経路を用いた前記通信先との通信に切り替えることを特徴とする付記６に記載の通信制御方法。
【０１４６】
（付記８）前記切り替える処理は、前記通信先に送信するパケットに含まれる迂回転送数が閾値未満である場合に、通信が不可となった前記通信経路よりも前記中継装置の数が多い通信経路を用いた前記通信先との通信に切替え、前記パケットの迂回転送数に所定数を加算して、前記パケットを前記通信先に送信することを特徴とする付記５に記載の通信制御方法。
【０１４７】
（付記９）少なくとも１つの中継装置を介した、通信先との予め設定された通信経路による通信が不可となった場合、前記通信先と通信可能な通信経路と当該通信経路に含まれる中継装置の数を示す情報とを関連付けて記憶する記憶部を参照して、通信が不可となった前記通信経路よりも前記中継装置の数が多い通信経路を用いた前記通信先との通信に切替える通信制御部
を有することを特徴とする通信制御装置。
【０１４８】
（付記１０）前記通信制御部は、前記記憶部を参照して、隣接する中継装置から前記通信先までの通信経路に含まれる中継装置の数が、自コンピュータから前記通信先の通信経路に含まれる中継装置の数に所定値を加算した数である場合に、前記隣接する中継装置を経由する通信経路を用いた前記通信先との通信に切り替えることを特徴とする付記９に記載の通信制御装置。
【０１４９】
（付記１１）前記通信制御部は、切り替えた通信経路による通信が不可になった場合には、通信が不可となった通信経路を除いて、新たな通信経路を用いた前記通信先との通信に切り替えることを特徴とする付記１０に記載の通信制御装置。
【０１５０】
（付記１２）前記通信制御部は、前記通信先に送信するパケットに含まれる迂回転送数が閾値未満である場合に、通信が不可となった前記通信経路よりも前記中継装置の数が多い通信経路を用いた前記通信先との通信に切替え、前記パケットの迂回転送数に所定数を加算して、前記パケットを前記通信先に送信することを特徴とする付記９に記載の通信制御装置。
【符号の説明】
【０１５１】
１００    ノード
１５０    ルーティングテーブル
１６０    リンクテーブル
１８０ａ  更新部
１８０ｂ  通信制御部
【図１】
0006413674.tif 000002
【図２】
0006413674.tif 000003
【図３】
0006413674.tif 000004
【図４】
0006413674.tif 000005
【図５】
0006413674.tif 000006
【図６】
0006413674.tif 000007
【図７】
0006413674.tif 000008
【図８】
0006413674.tif 000009
【図９】
0006413674.tif 000010
【図１０】
0006413674.tif 000011
【図１１】
0006413674.tif 000012
【図１２】
0006413674.tif 000013
【図１３】
0006413674.tif 000014
【図１４】
0006413674.tif 000015
【図１５】
0006413674.tif 000016
【図１６】
0006413674.tif 000017
【図１７】
0006413674.tif 000018
【図１８】
0006413674.tif 000019
【図１９】
0006413674.tif 000020
【図２０】
0006413674.tif 000021
【図２１】
0006413674.tif 000022
【図２２】
0006413674.tif 000023
【図２３】
0006413674.tif 000024
【図２４】
0006413674.tif 000025