(57)【要約】【課題】ネットワークの負荷を抑えることを課題とする。【解決手段】任意の特定端末１０は、要求制御情報受信部１１が、存在確認を求める要求制御情報を他の端末から受信し、要求制御情報中継部１２が、受信した要求制御情報を中継する。また、存在制御情報生成部１３が、要求制御情報から発信源端末２０を識別し、識別した発信源端末２０を、特定端末１０が存在することを示す存在制御情報の最終宛先として設定して存在制御情報を生成する。そして、存在制御情報統合部１４が、発信源端末２０から特定端末１０までの通信経路上で経由した端末数が相対的に多ければ相対的に短い時間となるように所定の待機時間を設定し、設定した待機時間内に他の端末から受信した存在制御情報と、生成した存在制御情報とを統合する。その後、存在制御情報返信部１５が、統合した存在制御情報を、他の端末に送信する。【選択図】図１
2011009969.tif 000002
【特許請求の範囲】
【請求項１】
複数の端末が接続されたネットワークにおける任意の特定端末が、存在確認を求める要求制御情報を他の端末から受信して、該要求制御情報を処理する制御方法であって、
特定端末が、
存在確認を求める要求制御情報を他の端末から受信する受信ステップと、
前記受信ステップによって受信された前記要求制御情報を、前記他の端末とは異なる端末に中継する中継ステップと、
前記受信ステップによって受信された前記要求制御情報から該要求制御情報を最初に送信した端末である発信源端末を識別し、識別した該発信源端末を、前記特定端末が存在することを示す存在制御情報の最終宛先として設定して存在制御情報を生成する生成ステップと、
前記発信源端末から前記特定端末までの通信経路上で経由した端末数が相対的に多ければ相対的に短い時間となるように所定の待機時間を設定し、設定した待機時間内に他の端末から受信した存在制御情報と、前記生成ステップによって生成された存在制御情報とを統合する統合ステップと、
前記統合ステップによって統合された存在制御情報を、前記要求制御情報を該特定端末に送信した前記他の端末に送信する返信ステップと
を含んだことを特徴とする制御方法。
【請求項２】
前記統合ステップは、同一の端末が存在することを示す存在制御情報を複数の通信経路から複数受信した場合には、最も品質の高い通信経路に対応する存在制御情報を選択し、選択した存在制御情報と、前記生成ステップによって生成された存在制御情報とを統合することを特徴とする請求項１に記載の制御方法。
【請求項３】
前記要求制御情報には、該要求制御情報の最終宛先が設定されていないことを特徴とする請求項１に記載の制御方法。
【請求項４】
前記要求制御情報には、該要求制御情報の最終宛先が設定されており、
前記特定端末は、
前記返信ステップにおいて、該要求制御情報の最終宛先として自ノードが設定されているか否かに関わらず、前記存在制御情報を送信することを特徴とする請求項１に記載の制御方法。
【請求項５】
前記特定端末は、
前記受信ステップにおいて、受信した前記要求制御情報に含まれる該要求制御情報を一意に識別する識別情報を記憶テーブルに記憶し、
前記中継ステップにおいて、前記記憶テーブルを参照し、受信した前記要求制御情報に含まれる前記識別情報と一致する識別情報が該記憶テーブルに存在するか否かを判定し、存在する場合は、該要求制御情報を前記異なる端末に中継しないことを特徴とする請求項１に記載の制御方法。
【請求項６】
複数の端末が接続されたネットワークにおける任意の特定端末として、存在確認を求める要求制御情報を他の端末から受信して、該要求制御情報を処理する制御装置であって、
存在確認を求める要求制御情報を他の端末から受信する受信部と、
前記受信部によって受信された前記要求制御情報を、前記他の端末とは異なる端末に中継する中継部と、
前記受信部によって受信された前記要求制御情報から該要求制御情報を最初に送信した端末である発信源端末を識別し、識別した該発信源端末を、前記特定端末が存在することを示す存在制御情報の最終宛先として設定して存在制御情報を生成する生成部と、
前記発信源端末から前記特定端末までの通信経路上で経由した端末数が相対的に多ければ相対的に短い時間となるように所定の待機時間を設定し、設定した待機時間内に他の端末から受信した存在制御情報と、前記生成部によって生成された存在制御情報とを統合する統合部と、
前記統合部によって統合された存在制御情報を、前記要求制御情報を該特定端末に送信した前記他の端末に送信する返信部と
を備えたことを特徴とする制御装置。
【請求項７】
前記統合部は、同一の端末が存在することを示す存在制御情報を複数の通信経路から複数受信した場合には、最も品質の高い通信経路に対応する存在制御情報を選択し、選択した存在制御情報と、前記生成ステップによって生成された存在制御情報とを統合することを特徴とする請求項６に記載の制御装置。
【請求項８】
複数の端末が接続されたネットワークにおける任意の特定端末が、存在確認を求める要求制御情報を他の端末から受信して、該要求制御情報を処理する制御プログラムを記憶する記憶媒体であって、
特定端末が、
存在確認を求める要求制御情報を他の端末から受信する受信手順と、
前記受信手順によって受信された前記要求制御情報を、前記他の端末とは異なる端末に中継する中継手順と、
前記受信手順によって受信された前記要求制御情報から該要求制御情報を最初に送信した端末である発信源端末を識別し、識別した該発信源端末を、前記特定端末が存在することを示す存在制御情報の最終宛先として設定して存在制御情報を生成する生成手順と、
前記発信源端末から前記特定端末までの通信経路上で経由した端末数が相対的に多ければ相対的に短い時間となるように所定の待機時間を設定し、設定した待機時間内に他の端末から受信した存在制御情報と、前記生成手順によって生成された存在制御情報とを統合する統合手順と、
前記統合手順によって統合された存在制御情報を、前記要求制御情報を該特定端末に送信した前記他の端末に送信する返信手順と
を実行することを特徴とする制御プログラムを記憶する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御方法、制御装置及び記憶媒体に関する。
【背景技術】
【０００２】
近年、無線端末（例えば「ノード」）が自律分散的に相互接続するアドホックネットワークの研究が進められている。アドホックネットワークにおいては、アクセスポイントは設置されず、各ノードが、隣接ノードから受信したパケットを通信経路情報に基づき他の隣接ノードに中継することで、通信経路を形成する。
【０００３】
ところで、アドホックネットワークにおいては、電波強度の変化やノードの移動などに伴いネットワーク環境が頻繁に変化する。このため、アドホックネットワークに接続する各ノードは、他ノードとの間で通信を行う前に通信経路制御を行う。
【０００４】
例えば、従来、各ノードは、ピュアフラッディングと呼ばれる手法によって通信経路制御を行っている。具体的には、各ノードは、自ノードが認知している他ノードとの通信経路を確認することを目的として、他ノードを最終宛先とする要求制御情報（例えば「ＨＥＬＬＯパケット」）を送信する。すると、ＨＥＬＬＯパケットを受信した各ノードは、最終宛先が自ノードであるか否かを判定し、最終宛先が自ノードである場合には、自ノードが存在することを示す存在制御情報（例えば「ＲＥＧＩＳＴＥＲパケット」）を返信する。一方、最終宛先が自ノードでない場合には、ＨＥＬＬＯパケットを隣接ノードに中継する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−４７９８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記した従来の手法では、ネットワークの負荷が高くなってしまうという課題があった。すなわち、ＨＥＬＬＯパケットの発信源となる発信源ノードは、自ノードが認知している他ノードの数分ＨＥＬＬＯパケットを送信しなければならず、他ノードが増えれば増えるほど、ＨＥＬＬＯパケットはネットワークの負荷要因となっていた。
【０００７】
開示の技術は、上記に鑑みてなされたものであって、ネットワークの負荷を抑えることが可能な制御方法、制御装置及び記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本願の開示する制御方法、制御装置及び記憶媒体は、一つの態様において、複数の端末が接続されたネットワークにおける任意の特定端末が、存在確認を求める要求制御情報を他の端末から受信して、該要求制御情報を処理する制御方法である。特定端末は、存在確認を求める要求制御情報を他の端末から受信する受信ステップを含む。また、特定端末は、前記受信ステップによって受信された前記要求制御情報を、前記他の端末とは異なる端末に中継する中継ステップを含む。また、特定端末は、前記受信ステップによって受信された前記要求制御情報から該要求制御情報を最初に送信した端末である発信源端末を識別し、識別した該発信源端末を、前記特定端末が存在することを示す存在制御情報の最終宛先として設定して存在制御情報を生成する生成ステップを含む。また、特定端末は、前記発信源端末から前記特定端末までの通信経路上で経由した端末数が相対的に多ければ相対的に短い時間となるように所定の待機時間を設定し、設定した待機時間内に他の端末から受信した存在制御情報と、前記生成ステップによって生成された存在制御情報とを統合する統合ステップを含む。また、特定端末は、前記統合ステップによって統合された存在制御情報を、前記要求制御情報を該特定端末に送信した前記他の端末に送信する返信ステップを含む。
【発明の効果】
【０００９】
本願の開示する制御方法、制御装置及び記憶媒体の一つの態様によれば、ネットワークの負荷を抑えることが可能になるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１におけるネットワークシステムの構成を示すブロック図である。
【図２】図２は、実施例１におけるネットワークシステムの処理手順を示すシーケンス図である。
【図３】図３は、実施例２におけるアドホックネットワークシステムの概要を説明するための図である。
【図４】図４は、実施例２におけるアドホックネットワークシステムの構成を示すブロック図である。
【図５−１】図５−１は、実施例２におけるパケット及びルーティングテーブルを説明するための図である。
【図５−２】図５−２は、実施例２におけるパケット及びルーティングテーブルを説明するための図である。
【図６】図６は、ノードにおける処理手順の全体を説明するためのフローチャートである。
【図７】図７は、ルーティングテーブルの更新処理を説明するためのフローチャートである。
【図８】図８は、ＨＥＬＬＯパケットの中継処理を説明するためのフローチャートである。
【図９】図９は、ＲＥＧＩＳＴＥＲパケットの返信処理を説明するためのフローチャートである。
【図１０】図１０は、ＲＥＧＩＳＴＥＲパケットの生成処理を説明するためのフローチャートである。
【図１１−１】図１１−１は、実施例３におけるパケット及びルーティングテーブルを説明するための図である。
【図１１−２】図１１−２は、実施例３におけるパケット及びルーティングテーブルを説明するための図である。
【図１２】図１２は、制御プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１１】
以下、本願の開示する制御方法、制御装置及び記憶媒体の実施例を説明する。なお、以下の実施例により本発明が限定されるものではない。
【実施例１】
【００１２】
［実施例１におけるネットワークシステムの構成］
まず、図１を用いて、実施例１におけるネットワークシステムの構成を説明する。図１は、実施例１におけるネットワークシステムの構成を示すブロック図である。
【００１３】
図１に示すように、実施例１におけるネットワーク１には、複数の端末が接続されている。ここで、特定端末１０は、任意の端末であり、存在確認を求める要求制御情報を他の端末から受信して、該要求制御情報を処理する。また、発信源端末２０は、要求制御情報を最初に送信した端末である。
【００１４】
図１に示すように、特定端末１０は、要求制御情報受信部１１と、要求制御情報中継部１２と、存在制御情報生成部１３と、存在制御情報統合部１４と、存在制御情報返信部１５とを備える。
【００１５】
要求制御情報受信部１１は、要求制御情報を他の端末から受信する。
【００１６】
要求制御情報中継部１２は、要求制御情報受信部１１によって受信された要求制御情報を、要求制御情報を特定端末１０に送信した端末とは異なる端末に中継する。
【００１７】
存在制御情報生成部１３は、要求制御情報受信部１１によって受信された要求制御情報から発信源端末２０を識別する。また、存在制御情報生成部１３は、識別した発信源端末２０を、特定端末１０が存在することを示す存在制御情報の最終宛先として設定して存在制御情報を生成する。
【００１８】
存在制御情報統合部１４は、発信源端末２０から特定端末１０までの通信経路上で経由した端末数が相対的に多ければ相対的に短い時間となるように所定の待機時間を設定する。そして、存在制御情報統合部１４は、設定した待機時間内に他の端末から受信した存在制御情報と、存在制御情報生成部１３によって生成された存在制御情報とを統合する。
【００１９】
存在制御情報返信部１５は、存在制御情報統合部１４によって統合された存在制御情報を、要求制御情報を特定端末１０に送信した端末に送信する。
【００２０】
［実施例１におけるネットワークシステムの処理手順］
次に、図２を用いて、実施例１におけるネットワークシステムの処理手順を説明する。図２は、実施例１におけるネットワークシステムの処理手順を示すシーケンス図である。
【００２１】
図２に示すように、特定端末１０が要求制御情報を受信する（ステップＳ１）。
【００２２】
要求制御情報を受信した特定端末１０は、要求制御情報を端末３０に中継する（ステップＳ２）。
【００２３】
ここで、特定端末１０は、発信源端末２０から特定端末１０までの通信経路上で経由した端末数が相対的に多ければ相対的に短い時間となるように所定の待機時間を設定し、設定した待機時間内、他の端末３０から存在制御情報を受信する（ステップＳ３、Ｓ４）。
【００２４】
そして、特定端末１０は、特定端末１０が存在することを示す存在制御情報を生成し、生成した存在制御情報と、設定した待機時間内に他の端末から受信した存在制御情報とを統合する（ステップＳ５）。具体的には、特定端末１０は、ステップＳ１において受信した要求制御情報から発信源端末２０を識別し、識別した該発信源端末２０を、特定端末１０が存在することを示す存在制御情報の最終宛先として設定して存在制御情報を生成する。そして、特定端末１０は、生成した存在制御情報と他の端末から受信した存在制御情報とを統合する。
【００２５】
その後、特定端末１０は、ステップＳ５において統合した統合済み存在制御情報を、要求制御情報を特定端末１０に送信した端末３０に送信する（ステップＳ６）。
【００２６】
なお、実施例１においては、特定端末１０が、ステップＳ２において要求制御情報を中継し、待機時間を経過した後に、ステップＳ５において存在制御情報を生成し、統合する処理手順を説明したが、これに限られるものではない。例えば、存在制御情報を生成する処理とステップＳ２の処理とが併行して行われ、待機時間を経過した後に、存在制御情報を統合する処理を行ってもよい。
【００２７】
［実施例１の効果］
上記してきたように、実施例１によれば、要求制御情報を受信した特定端末１０は、要求制御情報を他の端末に中継し、かつ、存在制御情報を発信源端末２０に返信する。また、特定端末１０は、発信源端末２０から特定端末１０までの通信経路上で経由した端末数が相対的に多ければ相対的に短い時間となるように設定された待機時間待機し、その間に他の端末から受信した存在制御情報と、自端末にて生成した存在制御情報とを統合する。言い換えると、発信源端末２０からの距離が近ければ近い特定端末１０ほど長い待機時間を設定し、待機時間内に他の端末から収集した存在制御情報をまとめて発信源端末２０に返信する。このため、パケットの数が減少し、ネットワークの負荷を抑えることが可能になる。
【実施例２】
【００２８】
［実施例２におけるアドホックネットワークシステムの概要］
続いて、本願の開示する制御方法、制御装置及び記憶媒体の実施例として、アドホックネットワークシステムを説明する。まず、図３を用いて、実施例２におけるアドホックネットワークシステムの概要を説明する。図３は、実施例２におけるアドホックネットワークシステムの概要を説明するための図である。
【００２９】
図３に示すように、実施例２におけるアドホックネットワークには、少なくともノードＸ、ノードＹ、ノードＺが接続されている。ここで、ノードＹ及びノードＺは、任意のノードであり、存在確認を求めるＨＥＬＬＯパケットを他のノードから受信して、該ＨＥＬＬＯパケットを処理する。また、ノードＸは、ＨＥＬＬＯパケットを最初に送信した送信元ノードである。
【００３０】
図３に示すように、ノードＸがＨＥＬＬＯパケットを送信し、ノードＹがＨＥＬＬＯパケットを受信する（ステップＳ１０）。
【００３１】
ＨＥＬＬＯパケットを受信したノードＹは、ノードＸとは異なるノードＺにＨＥＬＬＯパケットを中継し、ノードＺがＨＥＬＬＯパケットを受信する（ステップＳ１１）。また、ＨＥＬＬＯパケットを受信したノードＺは、ノードＹとは異なるノードにＨＥＬＬＯパケットを中継する（ステップＳ１２）。
【００３２】
ここで、ノードＺは、ノードＸからノードＺまでの通信経路上で経由した端末数が相対的に多ければ相対的に短い時間となるように所定の待機時間を設定し、設定した待機時間内、他のノードからＲＥＧＩＳＴＥＲパケットを受信する（ステップＳ１３）。
【００３３】
そして、ノードＺは、ノードＺが存在することを示すＲＥＧＩＳＴＥＲパケットを生成し、生成したＲＥＧＩＳＴＥＲパケットと、設定した待機時間内に他のノードから受信したＲＥＧＩＳＴＥＲパケットとを統合する（ステップＳ１４）。具体的には、ノードＺは、ステップＳ１１において受信したＨＥＬＬＯパケットから送信元ノードとしてノードＸを識別し、識別したノードＸを、ノードＺが存在することを示すＲＥＧＩＳＴＥＲパケットの最終宛先として設定してＲＥＧＩＳＴＥＲパケットを生成する。そして、ノードＺは、生成したＲＥＧＩＳＴＥＲパケットと他のノードから受信したＲＥＧＩＳＴＥＲパケットとを統合する。
【００３４】
その後、ノードＺは、ステップＳ１４において統合した統合済みＲＥＧＩＳＴＥＲパケットを、ＨＥＬＬＯパケットをノードＺに送信したノードＹに送信する（ステップＳ１５）。
【００３５】
一方、ノードＹは、ノードＸからノードＹまでの通信経路上で経由した端末数が相対的に多ければ相対的に短い時間となるように所定の待機時間を設定し、設定した待機時間内、他のノードからＲＥＧＩＳＴＥＲパケットを受信する（ステップＳ１６）。ここで、ノードＺが設定した待機時間とノードＹが設定した待機時間とを比較すると、図３に示すように、ノードＺが設定した待機時間の方が相対的に短い時間であることがわかる。
【００３６】
そして、ノードＹは、ノードＹが存在することを示すＲＥＧＩＳＴＥＲパケットを生成し、生成したＲＥＧＩＳＴＥＲパケットと、設定した待機時間内に他のノードから受信したＲＥＧＩＳＴＥＲパケットとを統合する（ステップＳ１７）。具体的には、ノードＹは、ステップＳ１０において受信したＨＥＬＬＯパケットから送信元ノードとしてノードＸを識別し、識別したノードＸを、ノードＹが存在することを示すＲＥＧＩＳＴＥＲパケットの最終宛先として設定してＲＥＧＩＳＴＥＲパケットを生成する。そして、ノードＹは、生成したＲＥＧＩＳＴＥＲパケットと、ノードＺから受信したＲＥＧＩＳＴＥＲパケットとを統合する。
【００３７】
その後、ノードＹは、ステップＳ１７において統合した統合済みＲＥＧＩＳＴＥＲパケットを、ＨＥＬＬＯパケットをノードＹに送信したノードＸに送信する（ステップＳ１８）。
【００３８】
このようなことから、実施例２によれば、ＨＥＬＬＯパケットを受信したノードＹは、ＨＥＬＬＯパケットを他のノードＺに中継し、かつ、ＲＥＧＩＳＴＥＲパケットをノードＸに返信する。また、ノードＹは、送信元ノードから自ノードまでの通信経路上で経由したノード数が相対的に多ければ相対的に短い時間となるように設定された待機時間待機し、その間に他のノードから受信したＲＥＧＩＳＴＥＲパケットと、自ノードにて生成したＲＥＧＩＳＴＥＲパケットとを統合する。言い換えると、送信元ノードからの距離が近ければ近いノードほど長い待機時間を設定し、待機時間内に他のノードから収集したＲＥＧＩＳＴＥＲパケットをまとめて送信元ノードに返信する。このため、パケットの数が減少し、ネットワークの負荷を抑えることが可能になる。
【００３９】
［実施例２におけるアドホックネットワークシステムの構成］
次に、図４及び図５−１、図５−２を用いて、実施例２におけるアドホックネットワークシステムの構成を説明する。図４は、実施例２におけるアドホックネットワークシステムの構成を示すブロック図である。図５−１及び図５−２は、実施例２におけるパケット及びルーティングテーブルを説明するための図である。
【００４０】
図４に示すように、ノード１００は、通信部１１０と、記憶部１２０と、制御部１３０とを備える。
【００４１】
通信部１１０は、無線通信可能な無線モジュール及びアンテナなどである。
【００４２】
記憶部１２０は、制御部１３０による各種処理に用いるデータを記憶し、特に、ルーティングテーブル部１２１と、ワークデータ部１２２とを備える。
【００４３】
ルーティングテーブル部１２１は、通信経路情報を記憶する。ここで、通信経路情報とは、宛先となるノードにパケットを送信する際の通信経路を示す情報である。言い換えると、通信経路情報とは、パケットの宛先となるノードと、パケットを中継するノードとの対応関係を示す情報である。また、ルーティングテーブル部１２１は、対応関係を示す情報の他に、通信経路の品質を示す品質情報や、通信経路情報を取得したパケットを一意に識別するＦＩＤ（Frame  ID）、待機時間を管理するタイマーを記憶する。
【００４４】
具体的には、ルーティングテーブル部１２１は、後述するパケット受信部１３１によってパケットが受信された場合に、後述するルーティングテーブル更新部１３２によって更新されることで通信経路情報を記憶する。また、ルーティングテーブル部１２１が記憶する通信経路情報は、後述するＨＥＬＬＯパケット中継部１３３による処理、ＲＥＧＩＳＴＥＲパケット返信部１３５による処理などに利用される。
【００４５】
例えば、ルーティングテーブル部１２１は、図５−１に示すように、通信経路情報（図５−１及び図５−２において「ルーティングテーブル」と示す）を記憶する。すなわち、ルーティングテーブル部１２１は、パケットの宛先となるノードを示す宛先ノード（『宛先』）と、パケットを中継するノードの内、自ノードと相互に接続するノードを示す隣接ノード（『隣接』）とを対応付けて記憶する。また、ルーティングテーブル部１２１は、宛先ノードとの間でパケットを送受信する通信経路の品質（『品質』）と、通信経路情報を取得したパケットを一意に識別するＦＩＤ（『ＦＩＤ』）と、待機時間を管理するタイマー（『タイマー』）とを対応付けて記憶する。ここで、品質は、例えばホップ数から算出される値である。また、タイマーは、予め設定された最大値からホップ数を差し引くことで算出される値であって、時間の経過ごとに『１』差し引くことで算出される値である。
【００４６】
具体的に例を挙げて説明すると、例えば、図５−１のＳ１０２に示すように、ルーティングテーブル部１２１は、宛先ノード『Ｗ』、品質『１』、隣接ノード『Ｗ』、ＦＩＤ『１』、タイマー『３』の通信経路情報を記憶する。すなわち、ルーティングテーブル部１２１は、ノード『Ｗ』を宛先としてパケットを送信する場合には隣接ノード『Ｗ』に送信する通信経路があり、経路の品質が『１』であることを記憶する。また、ルーティングテーブル部１２１は、当該通信経路情報を取得したパケットを一意に識別するＦＩＤが『１』であり、待機時間が現時点で『３』であることを記憶する。
【００４７】
ワークデータ部１２２は、ルーティングテーブル部１２１や、ＨＥＬＬＯパケット、ＲＥＧＩＳＴＥＲパケットと同じ構造の記憶領域を持つ。ワークデータ部１２２は、ルーティングテーブル部１２１に格納する前の不確定な通信経路情報を一時的に記憶したり、ＨＥＬＬＯパケット、ＲＥＧＩＳＴＥＲパケットを生成する際の不確定な情報を一時的に記憶する。
【００４８】
制御部１３０は、ノード１００を制御して各種処理を実行する。制御部１３０は、特に、パケット受信部１３１と、ルーティングテーブル更新部１３２と、ＨＥＬＬＯパケット中継部１３３と、ＲＥＧＩＳＴＥＲパケット統合部１３４と、ＲＥＧＩＳＴＥＲパケット返信部１３５とを備える。
【００４９】
パケット受信部１３１は、ＨＥＬＬＯパケットやＲＥＧＩＳＴＥＲパケットを他のノードから受信する。具体的には、パケット受信部１３１は、隣接ノードから通信部１１０を介してパケットを受信すると、受信したパケットがＨＥＬＬＯパケットであるかＲＥＧＩＳＴＥＲパケットであるか、あるいは通常のデータパケットであるかを判定する。
【００５０】
パケット受信部１３１は、受信したパケットがＨＥＬＬＯパケットもしくはＲＥＧＩＳＴＥＲパケットであると判定した場合には、受信したパケットをルーティングテーブル更新部１３２に送る。一方、受信したパケットが通常のデータパケットであると判定した場合には、通常のデータパケット処理を行い、処理を終了する。
【００５１】
ルーティングテーブル更新部１３２は、ルーティングテーブル部１２１によって記憶される通信経路情報（ルーティングテーブル）を更新する。具体的には、ルーティングテーブル更新部１３２は、パケット受信部１３１からＨＥＬＬＯパケットもしくはＲＥＧＩＳＴＥＲパケットを受け取ると、ＨＥＬＬＯパケットもしくはＲＥＧＩＳＴＥＲパケットを一意に識別するＦＩＤを用いてルーティングテーブルを参照する。そして、ルーティングテーブル更新部１３２は、ＨＥＬＬＯパケットもしくはＲＥＧＩＳＴＥＲパケットに含まれるＦＩＤと一致するＦＩＤがルーティングテーブルに存在するか否かを判定する。ルーティングテーブル更新部１３２は、存在しないと判定した場合には、ルーティングテーブル更新処理を行い、存在すると判定した場合には、そのまま処理を終了する。
【００５２】
また、ルーティングテーブル更新部１３２は、ＨＥＬＬＯパケットについてルーティングテーブル更新処理を行った場合には、その後、ＨＥＬＬＯパケットをＨＥＬＬＯパケット中継部１３３に送る。一方、ルーティングテーブル更新部１３２は、ＲＥＧＩＳＴＥＲパケットについてルーティングテーブル更新処理を行った場合には、その後、ＲＥＧＩＳＴＥＲパケットをＲＥＧＩＳＴＥＲパケット統合部１３４に送る。なお、ルーティングテーブル更新処理については、処理手順を説明する際に詳述する。
【００５３】
ＨＥＬＬＯパケット中継部１３３は、ＨＥＬＬＯパケットを他のノードに中継する。具体的には、ＨＥＬＬＯパケット中継部１３３は、ルーティングテーブル更新部１３２からＨＥＬＬＯパケットを受け取ると、ＨＥＬＬＯパケットの中継処理を行う。また、ＨＥＬＬＯパケット中継部１３３は、ＨＥＬＬＯパケットの中継処理を行うと、その後、ルーティングテーブル更新部１３２から受け取ったＨＥＬＬＯパケットを、ＲＥＧＩＳＴＥＲパケット統合部１３４に送る。なお、ＨＥＬＬＯパケットの中継処理については、処理手順を説明する際に詳述する。
【００５４】
ＲＥＧＩＳＴＥＲパケット統合部１３４は、ＨＥＬＬＯパケットの送信元ノードに返信するＲＥＧＩＳＴＥＲパケットを生成し、生成したＲＥＧＩＳＴＥＲパケットと、待機時間内に他のノードから受信したＲＥＧＩＳＴＥＲパケットとを統合する。具体的には、ＲＥＧＩＳＴＥＲパケット統合部１３４は、ルーティングテーブル部１２１が管理するルーティングテーブルのタイマーが『０』になるまで待機し、タイマーが『０』になると、ＲＥＧＩＳＴＥＲパケットの生成処理（統合処理を含む）を行い、その後、統合済みのＲＥＧＩＳＴＥＲパケットをＲＥＧＩＳＴＥＲパケット返信部１３５に送る。なお、ＲＥＧＩＳＴＥＲパケットの生成処理については、処理手順を説明する際に詳述する。
【００５５】
ＲＥＧＩＳＴＥＲパケット返信部１３５は、統合済みのＲＥＧＩＳＴＥＲパケットを、ＨＥＬＬＯパケットの送信元ノードに返信する。具体的には、ＲＥＧＩＳＴＥＲパケット返信部１３５は、ＲＥＧＩＳＴＥＲパケット統合部１３４からＲＥＧＩＳＴＥＲパケットを受け取ると、ＲＥＧＩＳＴＥＲパケットを送信し、その後、処理を終了する。
【００５６】
［実施例２におけるアドホックネットワークシステムの処理手順］
次に、図５−１〜図１０を用いて、実施例２におけるアドホックネットワークシステムの処理手順を説明する。図５−１及び図５−２は、実施例２におけるパケット及びルーティングテーブルを説明するための図である。
【００５７】
［ノードにおける処理手順の全体］
まず、図６を用いて、ノードにおける処理手順の全体を説明する。図６は、ノードにおける処理手順の全体を説明するためのフローチャートである。
【００５８】
図６に示すように、ノード１００において、パケット受信部１３１が、パケットを受信する（ステップＳ２０１）。
【００５９】
ここで、ＨＥＬＬＯパケットは、例えば図５−１に示すような構造のパケットである。具体的には、ＨＥＬＬＯパケットを最初に送信したノードを示す送信元ノード（『送信元』）、送信元ノードからの通信経路の品質を示すホップ数（『ホップ数』）、隣接ノード（『隣接』）、ＨＥＬＬＯパケットを一意に識別するＦＩＤ（『ＦＩＤ』）を有する。すなわち、例えばノードＸがステップＳ１０１において送信したＨＥＬＬＯパケットは、ノード『Ｗ』が送信元ノードであること、送信元ノードＷからのホップ数が『１』であること、隣接ノードは自ノード『Ｗ』であること、ＦＩＤは『１』であることを示す情報を含む。
【００６０】
また、ＲＥＧＩＳＴＥＲパケットは、例えば図５−１に示すような構造のパケットである。具体的には、ＲＥＧＩＳＴＥＲパケットを最初に送信したノードを示す送信元ノード（『送信元』）、送信元ノードからの通信経路の品質を示すホップ数（『ホップ数』）を有する。また、ＲＥＧＩＳＴＥＲパケットの最終宛先となるノードを示す宛先ノード（『宛先』）、隣接ノード（『隣接』）、ＲＥＧＩＳＴＥＲパケットを一意に識別するＦＩＤ（『ＦＩＤ』）を有する。すなわち、例えばノードＺがステップＳ１０８において送信したＲＥＧＩＳＴＥＲパケットは、ノード『Ｚ』が送信元ノードであること、送信元ノードＺからのホップ数が『１』であることを示す情報を含む。また、最終宛先となるノードはノード『Ｗ』であること、隣接ノードは自ノード『Ｚ』であること、ＦＩＤは『１』であることを示す情報を含む。
【００６１】
そして、パケット受信部１３１は、受信したパケットがＨＥＬＬＯパケットであるか（ステップＳ２０２）、ＲＥＧＩＳＴＥＲパケットであるか（ステップＳ２０７）、あるいは通常のデータパケットであるかを判定する。
【００６２】
受信したパケットがＨＥＬＬＯパケットであると判定した場合には（ステップＳ２０２肯定）、パケット受信部１３１は、受信したパケットをルーティングテーブル更新部１３２に送る。
【００６３】
すると、ルーティングテーブル更新部１３２は、ＨＥＬＬＯパケットに含まれるＦＩＤを用いてルーティングテーブルを参照し、ＨＥＬＬＯパケットに含まれるＦＩＤと一致するＦＩＤがルーティングテーブルに存在するか否かを判定する（ステップＳ２０３）。
【００６４】
一致するＦＩＤが存在すると判定した場合には（ステップＳ２０３否定）、ルーティングテーブル更新部１３２は、そのまま処理を終了する。一方、一致するＦＩＤが存在しないと判定した場合には（ステップＳ２０３肯定）、ルーティングテーブル更新部１３２は、後述するルーティングテーブル更新処理を行い（ステップＳ２０４）、その後、ＨＥＬＬＯパケットをＨＥＬＬＯパケット中継部１３３に送る。
【００６５】
すると、ＨＥＬＬＯパケット中継部１３３は、ホップ数が予め設定されたＭＡＸ値であるか否かを判定し（ステップＳ２０５）、ＭＡＸ値である場合には（ステップＳ２０５肯定）、そのまま処理を終了する。すなわち、実施例２におけるアドホックネットワークでは、ホップ数にＭＡＸ値を設定することで、ＨＥＬＬＯパケットが無限に中継されることがないよう、制限をかけている。
【００６６】
一方、ＭＡＸ値でない場合には（ステップＳ２０５否定）、ＨＥＬＬＯパケット中継部１３３は、後述するＨＥＬＬＯパケットの中継処理を行い（ステップＳ２０６）、その後、処理を終了する。
【００６７】
一方、ステップＳ２０２において、受信したパケットがＨＥＬＬＯパケットでないと判定した場合には（ステップＳ２０２否定）、パケット受信部１３１は、次に、受信したパケットがＲＥＧＩＳＴＥＲパケットであるか否かを判定する（ステップＳ２０７）。
【００６８】
受信したパケットがＲＥＧＩＳＴＥＲパケットであると判定した場合には（ステップＳ２０７肯定）、パケット受信部１３１は、受信したパケットをルーティングテーブル更新部１３２に送る。
【００６９】
すると、ルーティングテーブル更新部１３２は、ＲＥＧＩＳＴＥＲパケットに含まれるＦＩＤを用いてルーティングテーブルを参照し、ＲＥＧＩＳＴＥＲパケットに含まれるＦＩＤと一致するＦＩＤがルーティングテーブルに存在するか否かを判定する（ステップＳ２０８）。
【００７０】
一致するＦＩＤが存在すると判定した場合には（ステップＳ２０８否定）、ルーティングテーブル更新部１３２は、そのまま処理を終了する。一方、一致するＦＩＤが存在しないと判定した場合には（ステップＳ２０８肯定）、ルーティングテーブル更新部１３２は、後述するルーティングテーブル更新処理を行い（ステップＳ２０９）、その後、ＲＥＧＩＳＴＥＲパケットをＲＥＧＩＳＴＥＲパケット統合部１３４に送る。
【００７１】
すると、ＲＥＧＩＳＴＥＲパケット統合部１３４は、まず、ＲＥＧＳＩＴＥＲパケットの宛先が自ノードであるか否かを判定する（ステップＳ２１０）。自ノードであると判定した場合には（ステップＳ２１０否定）、そのまま処理を終了する。
【００７２】
一方、自ノードでないと判定した場合には（ステップＳ２１０肯定）、ＲＥＧＩＳＴＥＲパケット統合部１３４は、ワークデータ部１２２に、ＲＥＧＩＳＴＥＲパケットと同じ構造を持つ一時的な記憶領域としてワークパケットを設定する。そして、ＲＥＧＩＳＴＥＲパケット統合部１３４は、設定したワークパケットにＲＥＧＩＳＴＥＲパケットをコピーし（ステップＳ２１１）、その後、処理を終了する。
【００７３】
一方、ステップＳ２０７において、受信したパケットがＲＥＧＩＳＴＥＲパケットでないと判定した場合には（ステップＳ２０７否定）、パケット受信部１３１は、受信したパケットが通常のデータパケットであると判定し、通常のデータパケット処理を行い（ステップＳ２１２）、処理を終了する。
【００７４】
［ルーティングテーブルの更新処理］
次に、図７を用いて、ルーティングテーブルの更新処理を説明する。図７は、ルーティングテーブルの更新処理を説明するためのフローチャートである。なお、ルーティングテーブルの更新処理は、ＨＥＬＬＯパケットを用いて更新する場合とＲＥＧＩＳＴＥＲパケットを用いて更新する場合とでほとんど異ならないため、以下では、ＨＥＬＬＯパケットを用いて更新する場合を説明する。
【００７５】
ルーティングテーブル更新部１３２は、まず、ＨＥＬＬＯパケットから、送信元ノードを識別する（ステップＳ２０４−１）。例えば、図５−１に示すノードＸのルーティングテーブル更新部１３２は、ステップＳ１０１において受信したＨＥＬＬＯパケットから、送信元ノード『Ｗ』を識別する。
【００７６】
次に、ルーティングテーブル更新部１３２は、ワークデータ部１２２に、ルーティングテーブルと同じ構造を持つ一時的な記憶領域としてワークテーブルを設定し、設定したワークテーブルにレコードを新規作成する（ステップＳ２０４−２）。
【００７７】
続いて、ルーティングテーブル更新部１３２は、ワークテーブルに新規作成したレコードの『宛先』に、ステップＳ２０４−１において識別した送信元ノードを設定する（ステップＳ２０４−３）。例えば、ルーティングテーブル更新部１３２は、ワークテーブルに新規作成したレコードの『宛先』に送信元ノード『Ｗ』を設定する。
【００７８】
また、ルーティングテーブル更新部１３２は、受信したＨＥＬＬＯパケットから隣接ノードを識別し、ワークテーブルに新規作成したレコードの『隣接』に、識別した隣接ノードを設定する（ステップＳ２０４−４）。例えば、ルーティングテーブル更新部１３２は、ステップＳ１０１において受信したＨＥＬＬＯパケットから隣接ノード『Ｗ』を識別し、ワークテーブルに新規作成したレコードの『隣接』に、識別した隣接ノード『Ｗ』を設定する。
【００７９】
また、ルーティングテーブル更新部１３２は、受信したＨＥＬＬＯパケットからホップ数を識別し、ワークテーブルに新規作成したレコードの『品質』に、識別したホップ数を設定する（ステップＳ２０４−５）。例えば、ルーティングテーブル更新部１３２は、ステップＳ１０１において受信したＨＥＬＬＯパケットからホップ数『１』を識別し、ワークテーブルに新規作成したレコードの『品質』に、識別したホップ数『１』を設定する。
【００８０】
また、ルーティングテーブル更新部１３２は、受信したＨＥＬＬＯパケットからＦＩＤを識別し、ワークテーブルに新規作成したレコードの『ＦＩＤ』に、識別したＦＩＤを設定する（ステップＳ２０４−６）。例えば、ルーティングテーブル更新部１３２は、ステップＳ１０１において受信したＨＥＬＬＯパケットからＦＩＤ『１』を識別し、ワークテーブルに新規作成したレコードの『ＦＩＤ』に、識別したＦＩＤ『１』を設定する。
【００８１】
続いて、ルーティングテーブル更新部１３２は、ＨＥＬＬＯパケットがＲＥＧＩＳＴＥＲパケットであるか否かを判定する（ステップＳ２０４−７）。ＲＥＧＩＳＴＥＲパケットである場合には（ステップＳ２０４−７肯定）、ルーティングテーブル更新部１３２は、ワークテーブルに新規作成したレコードの『タイマー』に『０』を設定する（ステップＳ２０４−８）。一方、ＲＥＧＩＳＴＥＲパケットでない場合には（ステップＳ２０４−７否定）、ルーティングテーブル更新部１３２は、予め設定されたタイマーのＭＡＸ値からホップ数を差し引くことでタイマー値を算出する。そして、ルーティングテーブル更新部１３２は、ワークテーブルに新規作成したレコードの『タイマー』に、算出したタイマー値を設定する（ステップＳ２０４−９）。例えば、図５−１に示すノードＸのルーティングテーブル更新部１３２は、ステップＳ１０１において受信したＨＥＬＬＯパケットからホップ数『１』を識別し、タイマーのＭＡＸ値『４』からホップ数『１』を差し引くことでタイマー値『３』を算出する。そして、ルーティングテーブル更新部１３２は、ワークテーブルに新規作成したレコードの『タイマー』に、算出したタイマー値『３』を設定する。
【００８２】
なお、上記したように、タイマーのＭＡＸ値からホップ数を差し引くことでタイマー値を算出するからこそ、送信元ノードからの距離が近ければ近いノードほど長い待機時間を設定することになる。
【００８３】
ステップＳ２０４−８の後もしくはステップＳ２０４−９の後、ルーティングテーブル更新部１３２は、ルーティングテーブルに同一の『宛先』及び『隣接』のレコードがあるか否かを判定する（ステップＳ２０４−１０）。そして、ある場合には（ステップＳ２０４−１０肯定）、ルーティングテーブル更新部１３２は、ワークテーブルに新規作成したレコードを、ルーティングテーブルに上書きして（ステップＳ２０４−１１）、処理を終了する。例えば、図５−１に示すノードＸのルーティングテーブル更新部１３２は、ステップＳ１０１において受信したＨＥＬＬＯパケットから、ステップＳ１０２に示すようにルーティングテーブルを更新する。
【００８４】
一方、ない場合には（ステップＳ２０４−１０否定）、ルーティングテーブル更新部１３２は、ワークテーブルに新規作成したレコードを、ルーティングテーブルに新規追加して（ステップＳ２０４−１２）、処理を終了する。
【００８５】
［ＨＥＬＬＯパケットの中継処理］
次に、図８を用いて、ＨＥＬＬＯパケットの中継処理を説明する。図８は、ＨＥＬＬＯパケットの中継処理を説明するためのフローチャートである。
【００８６】
ＨＥＬＬＯパケット中継部１３３は、まず、ワークデータ部１２２に、ＨＥＬＬＯパケットと同じ構造を持つ一時的な記憶領域としてワークパケットを設定し、設定したワークパケットに、受信したＨＥＬＬＯパケットをコピーする（ステップＳ２０５−１）。例えば、図５−１に示すノードＺのＨＥＬＬＯパケット中継部１３３は、ステップＳ１０１において受信したＨＥＬＬＯパケットをワークパケットにコピーする。
【００８７】
次に、ＨＥＬＬＯパケット中継部１３３は、ワークパケットにコピーされた『ホップ数』に１を加え、新たなホップ数を設定する（ステップＳ２０５−２）。例えば、ＨＥＬＬＯパケット中継部１３３は、ワークパケットに新たなホップ数『２』を設定する。
【００８８】
また、ＨＥＬＬＯパケット中継部１３３は、ワークパケットにコピーされた『隣接』に自ノードを設定する（ステップＳ２０５−３）。例えば、ＨＥＬＬＯパケット中継部１３３は、『隣接』に自ノード『Ｘ』を設定する。
【００８９】
また、ＨＥＬＬＯパケット中継部１３３は、ワークパケットにコピーされた『ＦＩＤ』に、そのまま『ＦＩＤ』を設定する（ステップＳ２０５−４）。例えば、ＨＥＬＬＯパケット中継部１３３は、『ＦＩＤ』にＦＩＤ『１』を設定する。
【００９０】
そして、ＨＥＬＬＯパケット中継部１３３は、新規のＨＥＬＬＯパケットを生成し、生成した新ＨＥＬＬＯパケットにワークパケットの内容を設定する（ステップＳ２０５−５）。
【００９１】
その後、ＨＥＬＬＯパケット中継部１３３は、ステップＳ２０５−５で生成したＨＥＬＬＯパケットを送信する（ステップＳ２０５−６）。例えば、図５−１に示すノードＸのＨＥＬＬＯパケット中継部１３３は、生成したＨＥＬＬＯパケットをノードＹに送信する（ステップＳ１０３を参照）。
【００９２】
［ＲＥＧＩＳＴＥＲパケットの返信処理］
次に、図９を用いて、ＲＥＧＩＳＴＥＲパケットの返信処理を説明する。図９は、ＲＥＧＩＳＴＥＲパケットの返信処理を説明するためのフローチャートである。
【００９３】
ＲＥＧＩＳＴＥＲパケット統合部１３４が、クロックイベントがあるか否かを判定している（ステップＳ３０１）。クロックイベントがない場合には（ステップＳ３０１否定）、ＲＥＧＩＳＴＥＲパケット統合部１３４は、クロックイベントがあるか否かを判定する処理に戻る。
【００９４】
クロックイベントがある場合（ステップＳ３０１肯定）、ＲＥＧＩＳＴＥＲパケット統合部１３４は、ルーティングテーブル部１２１に記憶されているタイマー値それぞれから『１』を差し引き、差し引いた後のタイマー値を格納する（ステップＳ３０２）。
【００９５】
そして、ＲＥＧＩＳＴＥＲパケット統合部１３４は、タイマー値が全て『０』となったか否かを判定し（ステップＳ３０３）、『０』となっていない場合には（ステップＳ３０３否定）、再び、クロックイベントがあるか否かを判定する処理に戻る。
【００９６】
一方、『０』となった場合には（ステップＳ３０３肯定）、ＲＥＧＩＳＴＥＲパケット統合部１３４は、後述するＲＥＧＩＳＴＥＲパケット生成処理を行い（ステップＳ３０４）、その後、統合済みのＲＥＧＩＳＴＥＲパケットをＲＥＧＩＳＴＥＲパケット返信部１３５に送る。
【００９７】
すると、ＲＥＧＩＳＴＥＲパケット返信部１３５は、ＲＥＧＩＳＴＥＲパケット統合部１３４から受け取った統合済みのＲＥＧＩＳＴＥＲパケットを送信する（ステップＳ３０５）。例えば、図５−１及び図５−２に示すノードＸのＲＥＧＩＳＴＥＲパケット返信部１３５は、ステップＳ１０２において待機を開始したタイマー『３』が、ステップＳ１１３において『０』になるまで待機する。ステップＳ１１２からステップＳ１１３のルーティングテーブルの遷移は、タイマーが『０』になるまで待機することを示すものである。そして、ＲＥＧＩＳＴＥＲパケット返信部１３５は、待機時間内に受信したステップＳ１１１のＲＥＧＩＳＴＥＲパケットを統合し、統合済みのＲＥＧＩＳＴＥＲパケットを、ステップＳ１１４においてノードＷに送信する。
【００９８】
なお、図５−１及び図５−２に示すように、他のノードＹ、ノードＺも同様に、所定時間待機し、待機時間内に受信したＲＥＧＩＳＴＥＲパケットと、自ノードにて生成したＲＥＧＩＳＴＥＲパケットとを統合した上で、ＲＥＧＩＳＴＥＲパケットを返信している。
【００９９】
［ＲＥＧＩＳＴＥＲパケットの生成処理］
次に、図１０を用いて、ＲＥＧＩＳＴＥＲパケットの生成処理を説明する。図１０は、ＲＥＧＩＳＴＥＲパケットの生成処理を説明するためのフローチャートである。
【０１００】
ＲＥＧＩＳＴＥＲパケット統合部１３４は、新規のＲＥＧＩＳＴＥＲパケットを生成するために、新ＲＥＧＩＳＴＥＲパケットの新規フィールドを生成する（ステップＳ３０４−１）。例えば、図５−２に示すノードＸのＲＥＧＩＳＴＥＲパケット返信部１３４は、『送信元』、『ホップ数』、『宛先』、『隣接』、『ＦＩＤ』の空フィールドを生成する。
【０１０１】
次に、ＲＥＧＩＳＴＥＲパケット統合部１３４は、空フィールド『送信元』に自ノードを設定する（ステップＳ３０４−２）。例えば、ＲＥＧＩＳＴＥＲパケット統合部１３４は、『送信元』に自ノード『Ｘ』を設定する。
【０１０２】
また、ＲＥＧＩＳＴＥＲパケット統合部１３４は、空フィールド『ホップ数』に１を設定する（ステップＳ３０４−３）。
【０１０３】
また、ＲＥＧＩＳＴＥＲパケット統合部１３４は、空フィールド『宛先』に、ＨＥＬＬＯパケットの送信元ノードを設定する（ステップＳ３０４−４）。例えば、図５−２に示すノードＸのＲＥＧＩＳＴＥＲパケット統合部１３４は、ステップＳ１０１において受信したＨＥＬＬＯパケットについてルーティングテーブルの更新処理にて識別した送信元ノード『Ｗ』を設定する。
【０１０４】
また、ＲＥＧＩＳＴＥＲパケット統合部１３４は、空フィールド『隣接』に自ノードを設定する（ステップＳ３０４−５）。例えば、ＲＥＧＩＳＴＥＲパケット統合部１３４は、『隣接』に自ノード『Ｘ』を設定する。
【０１０５】
また、ＲＥＧＩＳＴＥＲパケット統合部１３４は、空フィールド『ＦＩＤ』に、ＨＥＬＬＯパケットの『ＦＩＤ』を設定する（ステップＳ３０４−６）。例えば、図５−２に示すノードＸのＲＥＧＩＳＴＥＲパケット統合部１３４は、ステップＳ１０１において受信したＨＥＬＬＯパケットに含まれるＦＩＤ『１』を設定する。
【０１０６】
続いて、ＲＥＧＩＳＴＥＲパケット統合部１３４は、ワークデータ部１２２のワークパケットにＲＥＧＩＳＴＥＲパケットのコピーがあるか否かを判定する（ステップＳ３０４−７）。
【０１０７】
コピーがない場合には（ステップＳ３０４−７否定）、ＲＥＧＩＳＴＥＲパケット統合部１３４は、このまま生成処理を終了し、生成したＲＥＧＩＳＴＥＲパケットを、ＲＥＧＩＳＴＥＲパケット返信部１３５に送る。
【０１０８】
一方、コピーがある場合には（ステップＳ３０４−７肯定）、ＲＥＧＩＳＴＥＲパケット統合部１３４は、ワークパケットにコピーされた『ホップ数』に１を加え、新たなホップ数を設定する（ステップＳ３０４−８）。例えば、図５−２に示すノードＸのＲＥＧＩＳＴＥＲパケット中継部１３５は、ワークパケットにノードＺを送信元とするＲＥＧＩＳＴＥＲパケットのコピーがある場合、ワークパケットに新たなホップ数『３』を設定する。
【０１０９】
また、ＲＥＧＩＳＴＥＲパケット統合部１３４は、ワークパケットにコピーされた『隣接』に自ノードを設定する（ステップＳ３０４−９）。例えば、図５−２に示すノードＸのＲＥＧＩＳＴＥＲパケット中継部１３５は、『隣接』に自ノード『Ｘ』を設定する。
【０１１０】
また、ＲＥＧＩＳＴＥＲパケット統合部１３４は、ワークパケットにコピーされた『ＦＩＤ』に、そのまま『ＦＩＤ』を設定する（ステップＳ３０４−１０）。例えば、図５−２に示すノードＸのＲＥＧＩＳＴＥＲパケット統合部１３４は、『ＦＩＤ』にＦＩＤ『１』を設定する。なお、ＲＥＧＩＳＴＥＲパケット中継部１３５は、ワークパケットにコピーされた『送信元』および『宛先』に変更を加えない。
【０１１１】
そして、ＲＥＧＩＳＴＥＲパケット統合部１３４は、新ＲＥＧＩＳＴＥＲパケットにワークパケットの内容を追記することでＲＥＧＩＳＴＥＲパケットを統合する（ステップＳ３０４−１１）。例えば、図５−２に示すノードＸのＲＥＧＩＳＴＥＲパケット統合部１３４は、ステップＳ１１４に示すように、送信元『Ｚ』、ホップ数『３』、宛先『Ｗ』、隣接『Ｘ』、ＦＩＤ『１』のＲＥＧＩＳＴＥＲパケットを、送信元『Ｘ』、ホップ数『１』、宛先『Ｗ』、隣接『Ｘ』、ＦＩＤ『１』のＲＥＧＩＳＴＥＲパケットに統合する。
【０１１２】
その後、ＲＥＧＩＳＴＥＲパケット統合部１３４は、再び、ワークパケットにＲＥＧＩＳＴＥＲパケットのコピーがあるか否かを判定する処理に戻る。図５−２に示すノードＸのＲＥＧＩＳＴＥＲパケット統合部１３４の場合には、ワークパケットにノードＹを送信元とするＲＥＧＩＳＴＥＲパケットのコピーがさらにあるので、このＲＥＧＩＳＴＥＲパケットについても統合することになる。
【０１１３】
［実施例２の効果］
上記してきたように、実施例２によれば、複数のノードが接続されたアドホックネットワークにおける任意のノードは、存在確認を求めるＨＥＬＬＯパケットを他のノードから受信すると、受信したＨＥＬＬＯパケットを、他のノードとは異なるノードに中継する。また、ノードは、受信したＨＥＬＬＯパケットから、ＨＥＬＬＯパケットを最初に送信したノードである発信源ノードを識別し、識別した発信源ノードを、ノードが存在することを示すＲＥＧＩＳＴＥＲパケットの最終宛先として設定してＨＥＬＬＯパケットを生成する。また、ノードは、送信元ノードから自ノードまでの通信経路上で経由したノード数が相対的に多ければ相対的に短い時間となるように所定の待機時間を設定し、設定した待機時間内に他のノードから受信したＲＥＧＩＳＴＥＲパケットと、生成したＲＥＧＩＳＴＥＲパケットとを統合する。そして、ノードは、統合したＲＥＧＩＳＴＥＲパケットを、ＨＥＬＬＯパケットを自ノードに送信した他のノードに送信する。
【０１１４】
このようなことから、実施例２によれば、ＨＥＬＬＯパケットを受信したノードは、ＨＥＬＬＯパケットを他のノードに中継し、かつ、ＲＥＧＩＳＴＥＲパケットを返信する。また、ノードは、送信元ノードから自ノードまでの通信経路上で経由したノード数が相対的に多ければ相対的に短い時間となるように設定された待機時間待機し、その間に他のノードから受信したＲＥＧＩＳＴＥＲパケットと、自ノードにて生成したＲＥＧＩＳＴＥＲパケットとを統合する。言い換えると、送信元ノードからの距離が近ければ近いノードほど長い待機時間を設定し、待機時間内に他のノードから収集したＲＥＧＩＳＴＥＲパケットをまとめて送信元ノードに返信する。このため、パケットの数が減少し、ネットワークの負荷を抑えることが可能になる。
【０１１５】
また、実施例２において説明したように、ＨＥＬＬＯパケットの最終宛先が設定されているといないとに関わらず、各ノードは、ＲＥＧＩＳＴＥＲパケットを返信する。すなわち、ＨＥＬＬＯパケットに、ＨＥＬＬＯパケットの最終宛先が設定されていない場合であっても、各ノードは、ＲＥＧＩＳＴＥＲパケットを返信する。一方、ＨＥＬＬＯパケットの最終宛先が設定されている場合にも、各ノードは、ＨＥＬＬＯパケットの最終宛先として自ノードが設定されているか否かに関わらず、ＲＥＧＩＳＴＥＲパケットを返信する。
【０１１６】
また、実施例２において説明したように、各ノードは、受信したＨＥＬＬＯパケットに含まれるＦＩＤをルーティングテーブルに記憶する。そして、各ノードは、受信したＨＥＬＬＯパケットに含まれるＦＩＤと一致するＦＩＤがルーティングテーブルに存在するか否かを判定し、存在する場合は、ＨＥＬＬＯパケットを他のノードに中継しない。このようなことから、実施例２によれば、同じＨＥＬＬＯパケットが中継され続けるといった事態を防止することも可能になる。
【実施例３】
【０１１７】
次に、図１１−１及び図１１−２を用いて、実施例３におけるアドホックネットワークシステムを説明する。図１１−１及び図１１−２は、実施例３におけるパケット及びルーティングテーブルを説明するための図である。なお、図１１−１及び図１１−２においては、タイマーＭＡＸ値が『６』であることを想定している。
【０１１８】
実施例３におけるアドホックネットワークは、送信元ノードと所定のノードとの間に複数の通信経路が存在することを想定している。このため、各ノードは、同一のノードが存在することを示すＲＥＧＩＳＴＥＲパケットを、複数の通信経路から複数受信する場合がある。そこで、実施例３における各ノードは、ＲＥＧＩＳＴＥＲパケットを複数の通信経路から複数受信した場合に、最も品質の高い通信経路に対応するＲＥＧＩＳＴＥＲパケットを選択し、選択したＲＥＧＩＳＴＥＲパケットと、自ノードにて生成したＲＥＧＩＳＴＥＲパケットとを統合する。
【０１１９】
例えば、図１１−１及び図１１−２の例では、送信元ノードＷからノードＺまでの通信経路として、ノードＷ〜ノードＸ〜ノードＺの通信経路と、ノードＷ〜ノードＸ〜ノードＹ〜ノードＺの通信経路とが存在する。このため、ステップＳ２０３−１に示すように、ノードＸは、ＨＥＬＬＯパケットをノードＺに直接中継する場合がある。
【０１２０】
ノードＺは、ステップＳ２０３−１において受信したＨＥＬＬＯパケットに基づいて、ステップＳ２０４においてルーティングテーブルを更新し、ステップＳ２０５においてＨＥＬＬＯパケットを中継する。また、ノードＺは、ステップＳ２０７においてもＨＥＬＬＯパケットを受信する。このＨＥＬＬＯパケットは、図１１−１に示すように、ステップＳ２０３−２においてノードＸからノードＹに中継され、その後、ノードＹからノードＺに中継されたものである。
【０１２１】
このように、実施例３において、ノードＺは、ノードＸから直接中継されたＨＥＬＬＯパケットと、ノードＹ経由で中継されたＨＥＬＬＯパケットの２つを受信している。このため、ノードＺは、図１１−２のステップＳ２０９及びステップＳ２１１に示すように、ノードＸとノードＹとのそれぞれに対して、ＲＥＧＩＳＴＥＲパケットを送信する。
【０１２２】
さて、実施例３におけるノードＸも、実施例２と同様、タイマーが『０』になるまで待機する。例えば、図１１−２のステップＳ２１４に示すルーティングテーブルが管理するタイマーが『０』になるまで待機する。そして、タイマーが『０』になると、ノードＸは、実施例２と同様、ＲＥＧＩＳＴＥＲパケットの統合を行うことになるが、実施例３においては、最も品質の高い通信経路に対応するＲＥＧＩＳＴＥＲパケットを選択し、選択したＲＥＧＩＳＴＥＲパケットのみを統合の対象とする。
【０１２３】
例えば、図１１−２に示すように、ノードＸは、ノードＺを送信元とするＲＥＧＩＳＴＥＲパケットを、ステップＳ２０９とステップＳ２１３との２回受信している。一方は、送信元『Ｚ』、ホップ数『１』、宛先『Ｗ』、隣接『Ｚ』、ＦＩＤ『１』とするＲＥＧＩＳＴＥＲパケットである。他方は、送信元『Ｚ』、ホップ数『２』、宛先『Ｗ』、隣接『Ｙ』、ＦＩＤ『１』とするＲＥＧＩＳＴＥＲパケットである。
【０１２４】
ここで、実施例３におけるノードＸは、両ＲＥＧＩＳＴＥＲパケットのホップ数を比較し、ホップ数がより小さい値のＲＥＧＩＳＴＥＲパケットを、最も品質の高い通信経路に対応するＲＥＧＩＳＴＥＲパケットであるとして選択する。例えば、ノードＸは、送信元『Ｚ』、ホップ数『１』、宛先『Ｗ』、隣接『Ｚ』、ＦＩＤ『１』とするＲＥＧＩＳＴＥＲパケットを選択する。
【０１２５】
この結果、図１１−２のステップＳ２１５に示すように、ノードＸは、ノードＺを送信元とするＲＥＧＩＳＴＥＲパケットを２つ重複して統合するのではなく、選択した１つのＲＥＧＩＳＴＥＲパケットのみを統合する。なお、ノードＺを送信元とするＲＥＧＩＳＴＥＲパケットのホップ数が『２』となっているのは、ノードＸは、他のノードから受信したＲＥＧＩＳＴＥＲパケットを統合する際に、ホップ数に『１』を加えているからである。
【０１２６】
このようなことから、実施例３によれば、送信元ノードと所定のノードとの間に複数の通信経路が存在する場合にも、最も品質の高い通信経路に対応するＲＥＧＩＳＴＥＲパケットを選択して統合する結果、情報としての価値の低いＲＥＧＩＳＴＥＲパケットが送信されることがなくなり、ネットワークの負荷はより軽減されることになる。
【実施例４】
【０１２７】
以上、実施例のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【０１２８】
［コンピュータ］
上記の実施例で説明した各種の処理は、予め用意されたプログラムを、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの記憶媒体が記憶し、コンピュータが記憶媒体からプログラムを読み出して実行することによって実現することができる。そこで、以下では、図１２を用いて、上記の実施例と同様の機能を有する制御プログラムを記憶媒体から読み出して実行するコンピュータの一例を説明する。図１２は、制御プログラムを実行するコンピュータを示す図である。
【０１２９】
図１２に示すように制御プログラム（コンピュータ）４０は、キャッシュ４１、ＲＡＭ（Random  Access  Memory）４２、ＨＤＤ（Hard  Disk  Drive）４３、ＲＯＭ（Read  Only  Memory）４４およびＣＰＵ（Central  Processing  Unit）４５をバス４６で接続して構成される。ここで、コンピュータ４０は、記憶媒体から制御プログラムを読み出し、ＲＯＭ４４に、要求制御情報受信プログラム４４ａ、要求制御情報中継プログラム４４ｂ、存在制御情報生成プログラム４４ｃ、存在制御情報統合プログラム４４ｄ、及び存在制御情報返信プログラム４４ｅを格納する。
【０１３０】
そして、ＣＰＵ４５が、これらのプログラム４４ａ〜４４ｅを読み出して実行することで、図１２に示すように、各プログラム４４ａ〜４４ｅは、要求制御情報受信プロセス４５ａ、要求制御情報中継プロセス４５ｂ、存在制御情報生成プロセス４５ｃ、存在制御情報統合プロセス４５ｄ、及び存在制御情報返信プロセス４５ｅとなる。なお、各プロセス４５ａ〜４５ｅは、図１に示した、要求制御情報受信部１１、要求制御情報中継部１２、存在制御情報生成部１３、存在制御情報統合部１４、及び存在制御情報返信部１５に各々対応する。
【符号の説明】
【０１３１】
１  ネットワーク
１０  特定端末
１１  要求制御情報受信部
１２  要求制御情報中継部
１３  存在制御情報生成部
１４  存在制御情報統合部
１５  存在制御情報返信部
２０  発信源端末
３０  端末
１００  ノード
１１０  通信部
１２０  記憶部
１２１  ルーティングテーブル部
１２２  ワークデータ部
１３０  制御部
１３１  パケット受信部
１３２  ルーティングテーブル更新部
１３３  ＨＥＬＬＯパケット中継部
１３４  ＲＥＧＩＳＴＥＲパケット統合部
１３５  ＲＥＧＩＳＴＥＲパケット返信部
【図１】
2011009969.tif 000003
【図２】
2011009969.tif 000004
【図３】
2011009969.tif 000005
【図４】
2011009969.tif 000006
【図５−１】
2011009969.tif 000007
【図５−２】
2011009969.tif 000008
【図６】
2011009969.tif 000009
【図７】
2011009969.tif 000010
【図８】
2011009969.tif 000011
【図９】
2011009969.tif 000012
【図１０】
2011009969.tif 000013
【図１１−１】
2011009969.tif 000014
【図１１−２】
2011009969.tif 000015
【図１２】
2011009969.tif 000016