本発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。
図1は、この発明の実施の形態による無線装置を用いた無線ネットワークシステムの概略図である。無線ネットワークシステム100は、無線装置31〜43を備える。無線装置31〜43は、無線通信空間に配置され、自律的にネットワークを構成している。アンテナ51〜63は、それぞれ、無線装置31〜43に装着される。
例えば、無線装置31から無線装置42へデータを送信する場合、無線装置32,35〜41は、無線装置31からのデータを中継して無線装置42へ届ける。
この場合、無線装置31は、各種の経路を介して無線装置42との間で無線通信を行なうことができる。即ち、無線装置31は、無線装置37,41を介して無線装置42との間で無線通信を行なうことができ、無線装置32,36,39を介して無線装置42との間で無線通信を行なうこともでき、無線装置32,35,38,40を介して無線装置42との間で無線通信を行なうこともできる。
無線装置37,41を介して無線通信を行なう場合、ホップ数が”3”と最も少なく、無線装置32,36,39を介して無線通信を行なう場合、ホップ数が”4”であり、無線装置32,35,38,40を介して無線通信を行なう場合、ホップ数が”5”と最も多い。
従って、無線装置37,41を介して無線通信を行なう経路を選択すると、ホップ数が”3”と最も少なくなる。
しかし、無線装置31−無線装置37−無線装置41−無線装置42の経路によって無線装置31と無線装置42との間で無線通信を行なうことが無線装置31,42間の安定した無線通信を保証するわけではない。
そこで、以下においては、無線ネットワークシステム100において、安定した経路からなるルーティングテーブルを作成し、その作成したルーティングテーブルに基づいて送信元と送信先との間で無線通信を行なう方法について説明する。
なお、送信元と送信先との間で通信経路を確立するプロトコルの例としてOLSRプロトコルを用いる。このOLSRプロトコルは、テーブル駆動型のルーティングプロトコルであり、HelloメッセージおよびTC(Topology Control)メッセージを用いて経路情報を交換し、ルーティングテーブルを作成するプロトコルである。
図2は、図1に示す無線装置31の構成を示す概略ブロック図である。無線装置31は、アンテナ11と、入力部12と、出力部13と、ユーザアプリケーション14と、通信制御部15とを含む。
アンテナ11は、図1に示すアンテナ51〜63の各々を構成する。そして、アンテナ11は、無線通信空間を介して他の無線装置からデータを受信し、その受信したデータを通信制御部15へ出力するとともに、通信制御部15からのデータを無線通信空間を介して他の無線装置へ送信する。
入力部12は、無線装置1の操作者が入力したメッセージおよびデータの宛先を受付け、その受付けたメッセージおよび宛先をユーザアプリケーション14へ出力する。出力部13は、ユーザアプリケーション14からの制御に従ってメッセージを表示する。
ユーザアプリケーション14は、入力部12からのメッセージおよび宛先に基づいてデータを生成して通信制御部15へ出力する。
通信制御部15は、ARPA(Advanced Research Projects Agency)インターネット階層構造に従って、通信制御を行なう複数のモジュールからなる。即ち、通信制御部15は、無線インターフェースモジュール16と、MAC(Media Access Control)モジュール17と、バッファ18と、LLC(Logical Link Control)モジュール19と、IP(Internet Protocol)モジュール20と、ルーティングテーブル21と、TCPモジュール22と、UDPモジュール23と、ルーティングデーモン24とからなる。
無線インターフェースモジュール16は、物理層に属し、所定の規定に従って送信信号または受信信号の変復調を行なうとともに、アンテナ11を介して信号を送受信する。そして、無線インターフェースモジュール16は、アンテナ11が他の無線装置から受信したHelloパケットの受信信号強度を検出し、その検出した受信信号強度をルーティングデーモン24へ出力する。
MACモジュール17は、MAC層に属し、MACプロトコルを実行して、以下に述べる各種の機能を実行する。
即ち、MACモジュール17は、ルーティングデーモン24から受けたHelloパケットを無線インターフェースモジュール16を介してブロードキャストする。
また、MACモジュール17は、データ(パケット)の再送制御等を行なう。
バッファ18は、データリンク層に属し、パケットを一時的に格納する。
LLCモジュール19は、データリンク層に属し、LLCプロトコルを実行して隣接する無線装置との間でリンクの接続および解放を行なう。
IPモジュール20は、インターネット層に属し、IPパケットを生成する。IPパケットは、IPヘッダと、上位のプロトコルのパケットを格納するためのIPデータ部とからなる。そして、IPモジュール20は、TCPモジュール22からデータを受けると、その受けたデータをIPデータ部に格納してIPパケットを生成する。
そうすると、IPモジュール20は、テーブル駆動型のルーティングプロトコルであるOLSRプロトコルに従ってルーティングテーブル21を検索し、生成したIPパケットを送信するための経路を決定する。そして、IPモジュール20は、IPパケットをLLCモジュール19へ送信し、決定した経路に沿ってIPパケットを送信先へ送信する。
ルーティングテーブル21は、インターネット層に属し、後述するように、各送信先に対応付けて経路情報を格納する。
TCPモジュール22は、トランスポート層に属し、TCPパケットを生成する。TCPパケットは、TCPヘッダと、上位のプロトコルのデータを格納するためのTCPデータ部とからなる。そして、TCPモジュール22は、生成したTCPパケットをIPモジュール20へ送信する。
UDPモジュール23は、トランスポート層に属し、ルーティングデーモン24によって作成されたUpdateパケットをブロードキャストし、他の無線装置からブロードキャストされたUpdateパケットを受信してルーティングデーモン24へ出力する。
ルーティングデーモン24は、プロセス/アプリケーション層に属し、他の通信制御モジュールの実行状態を監視するとともに、他の通信制御モジュールからのリクエストを処理する。
また、ルーティングデーモン24は、後述する方法によって、安定な電波環境において送受信される電波の最小強度以上の受信信号強度を決定するための閾値を決定し、その決定した閾値以上の受信信号強度を有するHelloパケットの経路情報に基づいて、最適な経路を算出してルーティングテーブル21をインターネット層に動的に作成する。
更に、ルーティングデーモン24は、無線ネットワークシステム100における経路情報を他の無線装置へ送信するとき、隣接する無線装置に関する情報等の各種のメッセージを含むHelloパケットを作成し、その作成したHelloパケットをMACモジュール17へ出力する。
更に、ルーティングデーモン24は、後述する方法によって、無線装置31の周囲の無線通信空間において電波的な偏りがあるか否かを判定し、電波的な偏りがある場合、閾値を導入せずにルーティングテーブル21に登録された経路情報を維持する。
なお、図1に示す無線装置32〜43の各々も、図2に示す無線装置31の構成と同じ構成からなる。
図3は、IPヘッダの構成図である。IPヘッダは、バージョン、ヘッダ長、サービスタイプ、パケット長、識別番号、フラグ、フラグメントオフセット、生存時間、プロトコル、ヘッダチェックサム、送信元IPアドレス、送信先IPアドレス、およびオプションからなる。
図4は、TCPヘッダの構成図である。TCPヘッダは、送信元ポート番号、送信先ポート番号、シーケンス番号、確認応答(ACK)番号、データオフセット、予約、フラグ、ウィンドサイズ、ヘッダチェックサムおよびアージェントポインタからなる。
送信元ポート番号は、送信元の無線装置で複数のアプリケーションが動作しているときに、TCPパケットを出力したアプリケーションを特定する番号である。また、送信先ポート番号は、送信先の無線装置で複数のアプリケーションが動作しているときに、TCPパケットを届けるアプリケーションを特定する番号である。
TCP通信は、エンド・ツー・エンドのコネクション型通信プロトコルである。TCP通信のコネクション接続を要求する無線装置(以下、「TCP通信接続要求装置」という。)のTCPモジュール22は、コネクションの確立時に、TCPヘッダ内のCode BitにSYN(Synchronize Flag)を設定したコネクションの接続要求を示す第1パケットをTCP通信のコネクション接続を受理する端末(以下、「TCP通信接続受理装置」という。)のTCPモジュール22へ送信する。これを受けて、TCP通信接続受理装置のTCPモジュール22は、TCPヘッダ内のCode BitにSYNおよびACK(確認応答)を設定したコネクションの接続要求受理および接続完了を示す第2パケットをTCP通信接続要求装置のTCPモジュール22へ送信する。更に、これを受けて、TCP通信接続要求装置のTCPモジュール22は、TCPヘッダ内のCode BitをACK(確認応答)に設定したコネクションの接続完了を示す第3パケットをTCP通信接続受理装置のTCPモジュール22へ送信する。
コネクションの切断要求は、TCP通信要求装置およびTCP通信受理装置のいずれの側からでも行なうことができる。TCP通信のコネクション切断を要求する無線装置(以下、「TCP通信切断要求装置」という。)のTCPモジュール22は、コネクションの切断時に、TCPヘッダ内のCode BitをFIN(Finish Flag)に設定したコネクションの切断要求を示す第1パケットをTCP通信のコネクション切断を受理する無線装置(以下、「TCP通信切断受理装置」という。)へ送信する。これを受けて、TCP通信切断受理装置のTCPモジュール22は、TCPヘッダ内のCode BitをACK(確認応答)に設定したコネクションの切断要求受理を示す第2パケットと、TCPヘッダ内のCode BitをFINに設定したコネクションの切断完了を示す第3パケットをTCP通信切断要求装置のTCPモジュール22へ送信する。更に、これを受けて、TCP通信切断要求装置のTCPモジュール22は、TCPヘッダ内のCode
BitをACK(確認応答)に設定したコネクションの切断完了を示す第4パケットをTCP通信切断受理装置のTCPモジュール22へ送信する。
図5は、OLSRプロトコルにおけるパケットPKTの構成図である。パケットPKTは、パケットヘッダPHDと、メッセージヘッダMHD1,MHD2,・・・とからなる。なお、パケットPKTは、UDPモジュール23のポート番号698番を使用して送受信される。
パケットヘッダPHDは、パケット長と、パケットシーケンス番号とからなる。パケット長は、16ビットのデータからなり、パケットのバイト数を表す。また、パケットシーケンス番号は、16ビットのデータからなり、どのパケットが新しいかを区別するために用いられる。そして、パケットシーケンス番号は、新しいパケットが生成される度に“1”づつ増加される。従って、パケットシーケンス番号が大きい程、そのパケットPKTが新しいことを示す。
メッセージヘッダMHD1,MHD2,・・・の各々は、メッセージタイプと、有効時間と、メッセージサイズと、発信元アドレスと、TTLと、ホップ数と、メッセージシーケンス番号と、メッセージと、フラグとからなる。
メッセータイプは、8ビットのデータからなり、メッセージ本体に書かれたメッセージの種類を表し、0〜127は、予約済みである。有効時間は、8ビットのデータからなり、受信後に、このメッセージを管理しなければならない時間を表す。そして、有効時間は、仮数部と、指数部とからなる。
メッセージサイズは、16ビットのデータからなり、メッセージの長さを表す。発信元アドレスは、32ビットのデータからなり、メッセージを生成した無線装置を表す。TTLは、8ビットのデータからなり、メッセージが転送される最大ホップ数を指定する。そして、TTLは、メッセージが転送される時に”1”づつ減少される。そして、TTLが“0”か“1”である場合、メッセージは、転送されない。ホップ数は、8ビットのデータからなり、メッセージの生成元からのホップ数を表す。そして、ホップ数は、最初、“0”に設定され、転送される毎に“1”づつ増加される。メッセージシーケンス番号は、16ビットのデータからなり、各メッセージに割当てられる識別番号を表す。そして、メッセージシーケンス番号は、メッセージが作成される毎に、“1”づつ増加される。メッセージは、送信対象のメッセージである。フラグは、閾値を決定できたか否かを示し、閾値を決定できなかったとき、“1”が格納され、閾値を決定できたとき、“0”が格納される。
OLSRプロトコルにおいては、各種のメッセージが図5に示す構成のパケットPKTを用いて送受信される。
図6は、図2に示すルーティングテーブル21の構成図である。ルーティングテーブル21は、送信先、次の無線装置、ホップ数およびフラグからなる。送信先、次の無線装置、ホップ数およびフラグは、相互に対応付けられている。“送信先”は、送信先の無線装置のIPアドレスを表す。“次の無線装置”は、送信先にパケットPKTを送信するときに、次に送信すべき無線装置のIPアドレスを表す。“ホップ数”は、送信先までのホップ数を表す。例えば、図1において、無線装置31−無線装置32−無線装置36−無線装置39−無線装置42の経路によって無線装置31と無線装置42との間で無線通信が行なわれる場合、無線装置32のルーティングテーブル21のホップ数には、“3”が格納される。フラグは、閾値を導入せずに経路を維持したか否かを示し、閾値を導入せずに経路を維持した場合、“1”が格納され、閾値を導入して経路を維持した場合、“0”が格納される。
図7は、図2に示すルーティングデーモン24の機能ブロック図である。ルーティングデーモン24は、信号強度測定モジュール241と、閾値導入モジュール242と、テーブル作成モジュール243とを含む。
信号強度測定モジュール241は、アンテナ11が受信したHelloパケットの複数の受信信号強度Receive[n]を無線インターフェースモジュール16から受信し、その受信した複数の受信信号強度Receive[n]に基づいてm(mは所定数(例えば、5以上の整数))個の最大値MAX[n]とm個の最大値MAX[n]に対応するm個の最小値MIN[n]とからなるm組の最大値/最小値MAX[n],MIN[n]を検出し、その検出したm組の最大値/最小値MAX[n],MIN[n]を閾値導入モジュール242へ出力する。
なお、mが所定数(=例えば、5以上の整数)に設定されるのは、後述する図10に示すように、5組以上の最大値/最小値MAX[1],MIN[1]〜MAX[m],MIN[m]を検出できれば、その5組以上の最大値/最小値MAX[1],MIN[1]〜MAX[m],MIN[m]に基づいて、安定な電波環境において送受信される電波の全ての受信信号強度を検出するための閾値WIthを信頼性良く決定できるからである。
閾値導入モジュール242は、信号強度測定モジュール241からのm組の最大値/最小値MAX[n],MIN[n]に基づいて、後述する方法によって、閾値WIthを決定し、その決定した閾値WIthをテーブル作成モジュール243へ出力する。
テーブル作成モジュール243は、閾値導入モジュール242から閾値WIthを受けると、無線インターフェースモジュール16から受けたHelloパケットの受信信号強度Receive[n]を閾値WIthと比較し、閾値WIth以上の受信信号強度Receive[n]を有するHelloパケットを抽出し、その抽出したHelloパケットに基づいて、図6に示すルーティングテーブル21を動的に作成する。
また、テーブル作成モジュール243は、自己が搭載された無線装置におけるネイバーリストに基づいて、自己が搭載された無線装置に隣接する隣接無線装置の個数が基準値(例えば、5個)よりも少ないか否かを判定する。より具体的には、テーブル作成モジュール243は、閾値WIthを導入した場合に、ネイバーリストに残る隣接無線装置の個数が基準値よりも少ないか否かを判定する。
そして、テーブル作成モジュール243は、隣接無線装置の個数が基準値よりも少ないとき、閾値WIthを導入せずにルーティングテーブル21に登録された経路情報を維持する。また、テーブル作成モジュール243は、隣接無線装置の個数が基準値以上であるとき、閾値WIthを導入してルーティングテーブル21に登録された経路情報を維持または削除する。
更に、テーブル作成モジュール243は、閾値WIthを導入せずに経路情報を維持した場合、閾値WIthを決定できなかったことを示すフラグFndを含むHelloパケットを作成して他の無線装置へ送信する。
更に、テーブル作成モジュール243は、フラグFndを含むHelloパケットを他の無線装置から受信すると、そのHelloパケットを送信した無線装置を無条件にネイバーリストに登録する。
OLSRプロトコルに従ったルーティングテーブル21の作成について詳細に説明する。無線装置31〜43は、ルーティングテーブル21を作成する場合、HelloメッセージおよびTCメッセージを送受信する。
Helloメッセージは、各無線装置31〜43が有する情報の配信を目的として、定期的に送信される。このHelloメッセージを受信することによって、各無線装置31〜43は、周辺の無線装置に関する情報を収集でき、自己の周辺にどのような無線装置が存在するのかを認識する。
OLSRプロトコルにおいては、各無線装置31〜43は、ローカルリンク情報を管理する。そして、Helloメッセージは、このローカルリンク情報の構築および送信を行なうためのメッセージである。ローカルリンク情報は、「リンク集合」、「隣接無線装置集合」、「2ホップ隣接無線装置集合とそれらの無線装置へのリンク集合」、「MPR(Multipoint Relay)集合」、および「MPRセレクタ集合」を含む。
リンク集合は、直接的に電波が届く無線装置(隣接無線装置)の集合へのリンクのことであり、各リンクは2つの無線装置間のアドレスの組の有効時間によって表現される。なお、有効時間は、そのリンクが単方向なのか双方向なのかを表すためにも利用される。
隣接無線装置集合は、各隣接無線装置のアドレス、およびその無線装置の再送信の積極度(Willingness)等によって構成される。2ホップ隣接無線装置集合は、隣接無線装置に隣接する無線装置の集合を表す。
MPR集合は、MPRとして選択された無線装置の集合である。なお、MPRとは、各パケットPKTを無線ネットワークシステム100の全ての無線装置31〜43へ送信する場合、各無線装置31〜43が1つのパケットPKTを1回だけ送受信することによってパケットPKTを全ての無線装置31〜43へ送信できるように中継無線装置を選択することである。
MPRセレクタ集合は、自己をMPRとして選択した無線装置の集合を表す。
ローカルリンク情報が確立される過程は、概ね、次のようになる。Helloメッセージは、初期の段階では、各無線装置31〜43が自己の存在を知らせるために、自己のアドレスが入ったHelloメッセージを隣接する無線装置へ送信する。これを、無線装置31〜43の全てが行ない、各無線装置31〜43は、自己の周りにどのようなアドレスを持った無線装置が存在するのかを把握する。このようにして、リンク集合および隣接無線装置集合が構築される。
そして、構築されたローカルリンク情報は、再び、Helloメッセージによって定期的に送り続けられる。これを繰返すことによって、各リンクが双方向であるのか、隣接無線装置の先にどのような無線装置が存在するのかが徐々に明らかになって行く。各無線装置31〜43は、このように徐々に構築されたローカルリンク情報を蓄える。
更に、MPRに関する情報も、Helloメッセージによって定期的に送信され、各無線装置31〜43へ告知される。各無線装置31〜43は、自己が送信するパケットPKTの再送信を依頼する無線装置として、いくつかの無線装置をMPR集合として隣接無線装置の中から選択している。そして、このMPR集合に関する情報は、Helloメッセージによって隣接する無線装置へ送信されるので、このHelloメッセージを受信した無線装置は、自己がMPRとして選択してきた無線装置の集合を「MPRセレクタ集合」として管理する。このようにすることにより、各無線装置31〜43は、どの無線装置から受信したパケットPKTを再送信すればよいのかを即座に認識できる。
Helloメッセージの送受信により各無線装置31〜43において、ローカルリンク集合が構築されると、無線ネットワークシステム100全体のトポロジーを知らせるためのTCメッセージが無線装置31〜43へ送信される。このTCメッセージは、MPRとして選択されている全ての無線装置によって定期的に送信される。そして、TCメッセージは、各無線装置とMPRセレクタ集合との間のリンクを含んでいるため、無線ネットワークシステム100の全ての無線装置31〜43は、全てのMPR集合および全てのMPRセレクタ集合を知ることができ、全てのMPR集合および全てのMPRセレクタ集合に基づいて、無線ネットワークシステム100全体のトポロジーを知ることができる。各無線装置31〜43は、無線ネットワークシステム100全体のトポロジーを用いて最短路を計算し、それに基づいて経路表を作成する。
なお、各無線装置31〜43は、Helloメッセージとは別に、TCメッセージを頻繁に交換する。そして、TCメッセージの交換にも、MPRが利用される。
各無線装置31〜43のUDPモジュール23は、上述したHelloメッセージおよびTCメッセージを送受信し、ルーティングデーモン24のテーブル作成モジュール243は、UDPモジュール23が受信したHelloメッセージおよびTCメッセージのうち、閾値WIth以上の受信信号強度を有するHelloメッセージおよびTCメッセージに基づいて無線ネットワークシステム100全体のトポロジーを認識し、その無線ネットワークシステム100全体のトポロジーに基づいて、最短路を計算し、それに基づいて、図6に示すルーティングテーブル21を動的に作成する。
以下、閾値WIthを決定する方法について説明する。なお、図1に示す無線装置36が閾値WIthを決定する場合を例にして説明する。
無線装置36が閾値WIthを決定する場合、無線装置36は、1ホップ内の無線装置32,35,37〜39,41から一定時間内に受信する複数のHelloパケットの受信強度である複数の受信信号強度を検出し、その検出した複数の受信信号強度から受信信号強度の最大値MAX[n]および最小値MIN[n]を抽出する。
より具体的には、無線装置36において、ルーティングデーモン24の信号強度測定モジュール241は、無線装置32から一定時間内に順次受信したm個のHelloパケットのm個の受信信号強度Receive[32]1〜Receive[32]mを無線インターフェースモジュール16から順次受ける。そして、信号強度測定モジュール241は、順次受けるm個の受信信号強度Receive[32]1〜Receive[32]mに基づいて、m個の受信信号強度Receive[32]1〜Receive[32]mの最大値/最小値の組MAX[32],MIN[32]を検出する。
この場合、信号強度測定モジュール241は、最初の受信信号強度Receive[32]1を最大値MAX[32]および最小値MIN[32]に設定し、2番目以降に受信した受信信号強度Receive[32]2〜Receive[32]mを最大値MAX[32]および最小値MIN[32]と比較する。そして、信号強度測定モジュール241は、Receive[32]2〜Receive[32]mが最大値MAX[32]よりも大きければ、受信信号強度Receive[32]2〜Receive[32]mによって最大値MAX[32]を更新し、Receive[32]2〜Receive[32]mが最小値MIN[32]よりも小さければ、受信信号強度Receive[32]2〜Receive[32]mによって最小値MIN[32]を更新して最終的に最大値/最小値の組MAX[32],MIN[32]を検出する。
また、信号強度測定モジュール241は、無線装置35,37,38,39,41から一定時間内に順次受信したm個の受信信号強度Receive[35]1〜Receive[35]m,Receive[37]1〜Receive[37]m,Receive[38]1〜Receive[38]m,Receive[39]1〜Receive[39]m,Receive[41]1〜Receive[41]mを無線インターフェースモジュール16から順次受け、その受けたm個の受信信号強度Receive[35]1〜Receive[35]m,Receive[37]1〜Receive[37]m,Receive[38]1〜Receive[38]m,Receive[39]1〜Receive[39]m,Receive[41]1〜Receive[41]mに基づいて、同様にして、最大値/最小値の組MAX[35],MIN[35];MAX[37],MIN[37];MAX[38],MIN[38];MAX[39],MIN[39];MAX[41],MIN[41]を検出する。
そして、信号強度測定モジュール241は、その検出した6組の最大値/最小値の組MAX[32],MIN[32];MAX[35],MIN[35];MAX[37],MIN[37];MAX[38],MIN[38];MAX[39],MIN[39];MAX[41],MIN[41]を6組の最大値/最小値の組MAX[0],MIN[0];MAX[1],MIN[1];MAX[2],MIN[2];MAX[3],MIN[3];MAX[4],MIN[4];MAX[5],MIN[5]として閾値導入モジュール242へ出力する。
図8は、並べ替えの概念図である。閾値導入モジュール242は、信号強度測定モジュール241から6組の最大値/最小値の組MAX[0],MIN[0];MAX[1],MIN[1];MAX[2],MIN[2];MAX[3],MIN[3];MAX[4],MIN[4];MAX[5],MIN[5]を受けると、6個の最大値MAX[0],MAX[1],MAX[2],MAX[3],MAX[4],MAX[5]が大きい順になるように6組の最大値/最小値の組MAX[0],MIN[0];MAX[1],MIN[1];MAX[2],MIN[2];MAX[3],MIN[3];MAX[4],MIN[4];MAX[5],MIN[5]を並べ替える。
より具体的には、閾値導入モジュール242は、最大値/最小値の組MAX[3],MIN[3]、最大値/最小値の組MAX[4],MIN[4]、最大値/最小値の組MAX[0],MIN[0]、最大値/最小値の組MAX[5],MIN[5]、最大値/最小値の組MAX[1],MIN[1]、最大値/最小値の組MAX[2],MIN[2]の順に並べ替え、最大値/最小値の組MAX[3],MIN[3]、最大値/最小値の組MAX[4],MIN[4]、最大値/最小値の組MAX[0],MIN[0]、最大値/最小値の組MAX[5],MIN[5]、最大値/最小値の組MAX[1],MIN[1]、最大値/最小値の組MAX[2],MIN[2]をそれぞれ最大値/最小値の組{D_MAX[0],D_MIN[0]}、最大値/最小値の組{D_MAX[1],D_MIN[1]}、最大値/最小値の組{D_MAX[2],D_MIN[2]}、最大値/最小値の組{D_MAX[3],D_MIN[3]}、最大値/最小値の組{D_MAX[4],D_MIN[4]}、最大値/最小値の組{D_MAX[5],D_MIN[5]}として設定する。
そうすると、閾値導入モジュール242は、6個の最大値D_MAX[0]〜D_MAX[5]のうち、隣接する2つの最大値の差が最大になるときの2組の最大値/最小値{D_MAX[i],D_MIN[i]};{D_MAX[i+1],D_MIN[i+1]}を検出し、その検出した2組の最大値/最小値{D_MAX[i],D_MIN[i]};{D_MAX[i+1],D_MIN[i+1]}に含まれる2個の最小値D_MIN[i],D_MIN[i+1]の平均値を閾値WIthとして決定する。
閾値WIthを決定するための実験結果について説明する。図9は、受信信号強度およびパケットエラー率と、無線装置の数との関係を示す図である。図9において、縦軸は、受信信号強度およびパケットエラー率を表し、横軸は、無線装置の数を表す。
1ホップ内の複数の無線装置から一定時間内に受信したHelloパケットの受信信号強度の最大値/最小値の組MAX[n],MIN[n]をプロットすると、図9に示すようになる。この場合、●は、受信信号強度の最大値MAX[n]を示し、×は、受信信号強度の最小値MIN[n]を示し、△は、パケットエラー率を示す。
また、図10は、複数の最大値が大きい順に並べ換えられたときの受信信号強度およびパケットエラー率と、無線装置の数との関係を示す図である。図10において、縦軸は、受信信号強度およびパケットエラー率を表し、横軸は、無線装置の数を表す。また、●は、受信信号強度の最大値MAX[n]を示し、×は、受信信号強度の最小値MIN[n]を示し、△は、パケットエラー率を示す。
図9から明らかなように、最大値は、無線装置の数が多くなるに従って上下しており、大きい順に並べられていない。そこで、図10に示すように、最大値が大きい順になるように複数の最大値/最小値の組を並べ替える。
そして、隣接する2つの最大値の差が最大となるときの2組の最大値/最小値{D_MAX(14),D_MIN(14)},{D_MAX(15),D_MIN(15)}が検出され、2個の最小値D_MIN(14),D_MIN(15)の平均値が閾値WIthとして決定される。
図10において、最大値/最小値の組MAX[14],MIN[14]よりも右側の領域においては、受信信号強度の最大値は、大きく低下し、パケットエラー率は、ばらついている。
一方、最大値/最小値の組MAX[15],MIN[15]よりも左側の領域においては、受信信号強度の最大値は、大きく、パケットエラー率は、無線装置の数が増加しても略0%である。従って、最大値/最小値の組MAX[15],MIN[15]よりも左側の領域は、安定な電波環境において送受信される電波の全ての受信信号強度が分布する領域であり、最大値/最小値の組MAX[14],MIN[14]よりも右側の領域は、不安定な電波環境において送受信される電波の全ての受信信号強度が分布する領域である。
その結果、閾値WIth以上の受信信号強度を検出することは、安定な電波環境において送受信される電波を全て検出することになる。
従って、上述した方法によって閾値WIthを決定することにより、安定な電波環境で送受信される電波を全て検出し、不安定な電波環境で送受信される電波を全て排除できる。
閾値導入モジュール242は、閾値WIthを決定すると、その決定した閾値WIthをテーブル作成モジュール243へ出力する。
ルーティングテーブル21の作成方法について説明する。図11は、隣の無線装置に関する情報からなるネイバーリストを示す図である。また、図12は、他のネイバーリストを示す図である。更に、図13は、ネイバーリストおよびルーティングテーブルを示す図である。
図11においては、図1に示す無線装置36が保持するネイバーリストが示され、図12においては、図1に示す無線装置32,35,37,38が保持するネイバーリストが示され、図13においては、図1に示す無線装置39,41が保持するネイバーリストおよび無線装置36が保持するルーティングテーブルが示されている。
無線装置36においては、閾値導入モジュール242は、上述した方法によって閾値WIthを決定し、その決定した閾値WIthをテーブル作成モジュール243へ出力する。
無線装置36のテーブル作成モジュール243は、無線装置32,35,38,37,39,41からそれぞれ受信したHelloパケットPKT1〜PKT6をUDPモジュール23から受け、その受けたHelloパケットPKT1〜PKT6からそれぞれネイバーリスト10B,10C,10D,10E,10F,10Gを読み出す。
そして、テーブル作成モジュール243は、その読み出したネイバーリスト10B,10C,10D,10E,10F,10Gに基づいて、無線装置32,35,37,38,39,41が無線装置36に隣接することを検知し、ネオバーリスト10を作成する。
また、テーブル作成モジュール243は、HelloパケットPKT1〜PKT6を受信したときの受信信号強度Receive[32],Receive[35],Receive[38],Receive[37],Receive[39],Receive[41]を無線インターフェースモジュール16から受ける。
そうすると、テーブル作成モジュール243は、受信信号強度Receive[32],Receive[35],Receive[38],Receive[37],Receive[39],Receive[41]の各々を閾値WIthと比較し、受信信号強度Receive[32],Receive[35],Receive[38],Receive[37],Receive[39],Receive[41]の中から閾値WIth以上の受信信号強度を抽出する。
例えば、受信信号強度Receive[37]のみが閾値WIthよりも小さいとすると、テーブル作成モジュール243は、無線装置37をネイバーリスト10から削除し、ネイバーリスト10Aを作成する。即ち、テーブル作成モジュール243は、無線装置36に隣接する無線装置32,35,37,38,39,41のうち、無線装置36との間の受信信号強度が閾値WIth以上になる無線装置32,35,38,39,41を無線装置36に隣接する無線装置として選択する。
その後、テーブル作成モジュール243は、ネイバーリスト10B,10C,10D,10F,10Gと、トポロジーに関する情報を含むTCメッセージとに基づいて、ルーティングテーブル21Aを作成する(図13の(c)参照)。
テーブル作成モジュール243は、ネイバーリスト10Dを見れば、無線装置38が無線装置36、無線装置39および無線装置40に隣接していることを検知でき、ネイバーリスト10Fを見れば、無線装置39が無線装置36および無線装置40に隣接していることを検知できる。その結果、テーブル作成モジュール243は、無線装置40が無線装置36からのホップ数が“2ホップ”である位置に存在することを検知し、ルーティングテーブル21Aの第1行目の経路を作成する。
また、テーブル作成モジュール243は、ネイバーリスト10Fを見れば、無線装置39が無線装置36および無線装置42に隣接していることを検知でき、ネイバーリスト10Gを見れば、無線装置41が無線装置36、無線装置39および無線装置42に隣接していることを検知できる。その結果、テーブル作成モジュール243は、無線装置42が無線装置36からのホップ数が“2ホップ”である位置に存在することを検知し、ルーティングテーブル21Aの第2行目の経路を作成する。
更に、テーブル作成モジュール243は、ネイバーリスト10Gを見れば、無線装置41が無線装置36、無線装置39および無線装置43に隣接していることを検知できる。その結果、テーブル作成モジュール243は、無線装置43が無線装置36からのホップ数が“2ホップ”である位置に存在することを検知し、ルーティングテーブル21Aの第3行目の経路を作成する。この場合、テーブル作成モジュール243は、閾値WIthを導入してルーティングテーブル21Aを作成したので、ルーティングテーブル21Aのフラグに“0”を格納する。
上述したように、閾値WIthを決定することにより、安定な電波環境において送受信されるHelloパケットに基づいてルーティングテーブル21を作成できる。
その結果、各無線装置に隣接する無線装置の情報が頻繁に変更されず、安定したルーティングテーブル21を作成でき、安定したルーティングが可能である。
図14は、ルーティングテーブルを作成する動作を説明するためのフローチャートである。
一連の動作が開始されると、各無線装置31〜43において、ルーティングデーモン24の信号強度測定モジュール241は、周りのn個の無線装置から受信した複数のHelloパケットの複数の受信信号強度に基づいて、m個の最大値/最小値の組を検出し(ステップS1)、その検出したm個の最大値/最小値の組を閾値導入モジュール242へ出力する。
そして、閾値導入モジュール242は、信号強度測定モジュール241から受けたm個の最大値/最小値の組に基づいて、安定な電波環境において送受信される電波の最小強度以上の受信信号強度を検出するための閾値WIthを設定する(ステップS2)。
そして、テーブル作成モジュール243は、閾値WIthを閾値導入モジュール242から受け、その受けた閾値WIth以上の受信信号強度を有するHelloパケットを受信し、上述した方法によってルーティングテーブル21を作成する(ステップS3)。これによって、一連の動作が終了する。
図15は、図14に示すステップS1の詳細な動作を説明するためのフローチャートである。一連の動作が開始されると、信号強度測定モジュール241は、k=1を設定し(ステップS10)、m=1を設定し(ステップS11)、HelloパケットをUDPモジュール23から受信する(ステップS12)。
そして、無線インターフェースモジュール16は、無線装置k(kは、無線装置を識別する情報である)からHelloパケットを受信すると、そのHelloパケットを受信したときの受信信号強度Receive[k]mを検出してルーティングデーモン24の信号強度測定モジュール241へ出力する。
信号強度測定モジュール241は、無線インターフェースモジュール16から受信信号強度Receive[k]mを受け、無線装置kから受信したHelloパケットの受信信号強度Receive[k]mを検出する(ステップS13)。
そして、信号強度測定モジュール241は、その検出した受信信号強度Receive[k]mを受信信号強度の最大値MAX[k]および最小値MIN[k]として設定する(ステップS14)。つまり、信号強度測定モジュール241は、最大値MAX[k]および最小値[k]を初期化する。
その後、信号強度測定モジュール241は、m=m+1を設定し(ステップS15)、Helloパケットを受信する(ステップS16)。そして、信号強度測定モジュール241は、ステップS13における動作と同じ動作によってステップS16において受信したHelloパケットの受信信号強度Receive[k]m+1を検出する(ステップS17)。
そうすると、信号強度測定モジュール241は、受信信号強度Receive[k]m+1が最大値MAX[k]よりも大きいか否かを判定し(ステップS18)、受信信号強度Receive[k]m+1が最大値MAX[k]よりも大きいとき、受信信号強度Receive[k]m+1を最大値MAX[k]として設定する(ステップS19)。
一方、ステップS18において、受信信号強度Receive[k]m+1が最大値MAX[k]以下であると判定されたとき、信号強度測定モジュール241は、受信信号強度Receive[k]m+1が最小値MIN[k]よりも小さいか否かを更に判定し(ステップS20)、受信信号強度Receive[k]m+1が最小値MIN[k]よりも小さいとき、受信信号強度Receive[k]m+1を最小値MIN[k]として設定する(ステップS21)。
ステップS20において、受信信号強度Receive[k]m+1が最小値MIN[k]以上であると判定されたとき、またはステップS19の後、またはステップS21の後、信号強度測定モジュール241は、mがmax_numよりも小さいか否かを判定し(ステップS22)、mがmax_numよりも小さいとき、一連の動作は、ステップS15へ移行する。そして、ステップS22において、mがmax_numに到達するまで、上述したステップS15〜ステップS22が繰返し実行される。
max_numは、1つの無線装置からHelloパケットを一定時間内に受信する最大受信回数を表し、例えば、max_num=30回に設定される。この30回は、1分間に受信するHelloパケットの個数に基づく。
従って、ステップS22において、1分間にHelloパケットを30回受信したと判定されるまで、ステップS15〜ステップS22が繰返し実行される。
そして、ステップS22において、Helloパケットの受信回数mがmax_num(=30)に到達したと判定されると、信号強度測定モジュール241は、k=nであるか否かを判定し(ステップS23)、k=nでないとき、k=k+1を設定し(ステップS24)、その後、一連の動作は、ステップS11へ移行する。そして、ステップS23において、k=nであると判定されるまで、上述したステップS11〜ステップS24が繰返し実行される。
nは、各無線装置から1ホップ内に存在する無線装置の個数を表し、より具体的には、上述した閾値WIthを決定するための無線装置の個数を表す。そして、nは、例えば、“5”に設定される。1つの無線装置の1ホップ内に5個の無線装置が存在し、5個の無線装置が1つの無線装置へHelloパケットを定期的に送信すれば、その1つの無線装置は、図10に示すような受信信号強度と無線装置の数との関係を取得でき、閾値WIthを信頼性良く決定できるからである。
そして、ステップS23において、k=nであると判定されると、一連の動作は、図14のステップS2へ移行する。
このように、図15に示すフローチャートに従えば、1つの無線装置の信号強度測定モジュール241は、自己の1ホップ内に存在するn個の無線装置の各々からm個のHelloパケットを順次受け、その受けたm個のHelloパケットのm個の受信信号強度に基づいて、n個の無線装置の各々ごとに最大値/最小値の組MAX[k],MIN[k]を検出し、その検出したn組の最大値/最小値MAX[1],MIN[1]〜MAX[n],MIN[n]を閾値導入モジュール242へ出力する。
図16は、図14に示すステップS2の詳細な動作を説明するためのフローチャートである。
一連の動作が開始されると、閾値導入モジュール242は、信号強度測定モジュール241からn組の最大値/最小値MAX[1],MIN[1]〜MAX[n],MIN[n]を受け、n個の最大値MAX[1]〜MAX[n]が大きい順序になるようにn組の最大値/最小値MAX[1],MIN[1]〜MAX[n],MIN[n]を並べ替え(図8参照)、その並べ替えたn組の最大値/最小値をn組の最大値/最小値D_MAX[1],D_MIN[1]〜D_MAX[n],D_MIN[n]として設定する(ステップS31)。
そして、閾値導入モジュール242は、隣接する2つの最大値の差D_MAX[j]−D_MAX[j+1]を順次演算し、差D_MAX[j]−D_MAX[j+1]が最大となる2組の最大値/最小値{D_MAX[i],MIN[i]},{D_MAX[i+1],MIN[i+1]}を検出する(ステップS32)。
その後、閾値導入モジュール242は、最小値MIN[i]と最小値MIN[i+1]との平均(=(MIN[i]+MIN[i+1])/2)を演算し、その演算結果を閾値WIthとして決定する(ステップS33)。
そして、一連の動作は、図14のステップS3へ移行する。
このように、各無線装置は、自己の1ホップ内に存在するn(nは5以上の整数)個の無線装置の各々から所定数(=30個)のHelloパケットを受信し、n個の無線装置の各々について受信信号強度の最大値/最小値の組MAX[k],MIN[k]を検出する。そして、各無線装置は、その検出したn組の最大値/最小値MAX[1],MIN[1]〜MAX[n],MIN[n]をn個の最大値MAX[1]〜MAX[n]が大きい順に配列されるように並べ替え、その並べ替えたn組の最大値/最小値D_MAX[1],D_MIN[1]〜D_MAX[n],D_MIN[n]において、隣接する2つの最大値の差が最大になる2つの最大値D_MAX[i],D_MAX[i+1]を検出し、その検出した2つの最大値D_MAX[i],D_MAX[i+1]に対応する2つの最小値D_MIN[i],D_MIN[i+1]の平均値を閾値WIthとして決定する。
各無線装置に隣接する無線装置が5個以上存在するときは、上述した方法によって閾値WIthを安定して決定できるが、各無線装置に隣接する無線装置が5個よりも少ないとき、上述した方法によって閾値WIthを安定して決定することが困難である。
そこで、各無線装置に隣接する無線装置が5個よりも少ないときは、次の方法によって閾値WIthを決定する。無線装置36に隣接する無線装置が無線装置39のみである場合を例にして説明する。
無線装置39は、送信パワーをP(Pは5以上の整数)個の送信パワーに順次切換え、各送信パワーにおいて一定時間(1分)内に一定個数(m=30個)のHelloパケットを無線装置36へ送信する。
そして、無線装置36の信号強度測定モジュール241は、各送信パワーにおいて受信したm個のHelloパケットのm個の受信信号強度に基づいて各送信パワーにおける受信信号強度の最大値/最小値の組MAX[p],MIN[p]を検出し、その検出したP組の最大値/最小値MAX[1],MIN[1]〜MAX[P],MIN[P]を閾値導入モジュール242へ出力する。
閾値導入モジュール242は、P組の最大値/最小値MAX[1],MIN[1]〜MAX[P],MIN[P]をP個の最大値MAX[1]〜MAX[P]が大きい順に配列されるように並べ替え、その並べ替えたP組の最大値/最小値D_MAX[1],D_MIN[1]〜D_MAX[P],D_MIN[P]において、隣接する2つの最大値の差が最大になる2つの最大値D_MAX[i],MAX[i+1]を検出し、その検出した2つの最大値D_MAX[i],MAX[i+1]に対応する2つの最小値D_MIN[i],MIN[i+1]の平均値を閾値WIthと決定する。
図17は、図14に示すステップS1の詳細な動作を説明するための他のフローチャートである。図17に示すフローチャートは、図15に示すフローチャートのステップS10,S12,S16,S23,S24をそれぞれステップS10A,S12A,S16A,S23A,S24Aに代えたものであり、その他は、図15に示すフローチャートと同じである。
一連の動作が開始されると、信号強度測定モジュール241は、p=1を設定する(ステップS10A)。そして、上述したステップS11が実行された後、信号強度測定モジュール241は、送信パワーPWpで送信されたHelloパケットを受信する(ステップS12A)。その後、上述したステップS13〜S15が実行される。この場合、図15のステップS13,S14に示されるReceive[k]mは、Receive[p]mに読み替えられ、図15のステップS14に示されるMAX[k],MIN[k]は、それぞれ、MAX[p],MIN[p]に読み替えられる。
ステップS15の後、信号強度測定モジュール241は、送信パワーPWpで送信されたHelloパケットを受信する(ステップS16A)。そして、上述したステップS17〜ステップS22が実行される。この場合、Receive[k]m+1,MAX[k],MIN[k]は、それぞれ、Receive[p]m+1,MAX[p],MIN[p]に読み替えられる。
ステップS22において、mがmax_numに到達したと判定されると、信号強度測定モジュール241は、p=Pであるか否かを判定し(ステップS23A)、p=Pでないとき、p=p+1を設定し(ステップS24A)、その後、一連の動作は、ステップS11へ移行する。
そして、ステップS23Aにおいて、p=Pであると判定されるまで、上述したステップS11,S12A,S13〜S15,S16A,S17〜S22,S23A,S24Aが繰返し実行される。つまり、送信パワーPWpがP個の送信パワーの全てに変えられるまで、上述したステップS11,S12A,S13〜S15,S16A,S17〜S22,S23A,S24Aが繰返し実行される。
これにより、P組の最大値/最小値MAX[1],MIN[1]〜MAX[P],MIN[P]が検出される。
そして、ステップS23Aにおいて、p=Pであると判定されると、一連の動作は、図14に示すステップS2へ移行し、図16に示すフローチャートに従って、P組の最大値/最小値MAX[1],MIN[1]〜MAX[P],MIN[P]に基づいて閾値WIthが決定される。
このように、各無線装置は、自己の1ホップ内に存在する1個の無線装置から送信パワーPWをP個に変えながら、各送信パワーPWにおいて所定数(m=30個)のHelloパケットを受信し、P個の送信パワーPWの各々について受信信号強度の最大値/最小値の組MAX[p],MIN[p]を検出する。そして、各無線装置は、その検出したP組の最大値/最小値MAX[1],MIN[1]〜MAX[P],MIN[P]をP個の最大値MAX[1]〜MAX[P]が大きい順に配列されるように並べ替え、その並べ替えたP組の最大値/最小値D_MAX[1],D_MIN[1]〜D_MAX[P],D_MIN[P]において、隣接する2つの最大値の差が最大になる2つの最大値D_MAX[i],D_MAX[i+1]を検出し、その検出した2つの最大値D_MAX[i],D_MAX[i+1]に対応する2つの最小値D_MIN[i],D_MIN[i+1]の平均値を閾値WIthとして決定する。
上述したように、この発明によれば、無線ネットワークシステム100を構成する無線装置31〜43が定期的にブロードキャストするHelloパケットを利用して、各無線装置から受信したHelloパケットの最大受信信号強度/最小受信信号強度MAX[k],MIN[k](またはMAX[p],MIN[p])を検出できる。
従って、各無線装置は、アドホックネットワークにおける通常の動作を利用して安定な電波環境において送受信されるHelloパケットのみを受信し、その受信したHelloパケットに基づいて、安定なルーティングテーブル21を作成できる。その結果、安定なルーティングが可能である。
上述したように、各無線装置に隣接する無線装置の個数が5個以上であれば、1個の無線装置から受信したHelloパケットの受信信号強度の最大値/最小値の組MAX[k],MIN[k]を5個以上の無線装置の各々について検出し、その検出した5組以上の最大値/最小値MAX[k],MIN[k]に基づいて閾値WIthを決定し、各無線装置に隣接する無線装置の個数が5個よりも少なければ、1個の無線装置から受信したHelloパケットの受信信号強度の最大値/最小値の組MAX[p],MIN[p]を5個以上の送信パワーの各々について検出し、その検出した5組以上の最大値/最小値MAX[p],MIN[p]に基づいて閾値WIthを決定する。
従って、この発明においては、Helloパケットを送信する無線装置の個数をカウントし、そのカウント結果に応じて、上述した2つの方法のいずれかによって閾値WIthを決定してもよい。
図18は、ルーティングテーブルを作成する動作を説明するための他のフローチャートである。一連の動作が開始されると、各無線装置31〜43の信号強度測定モジュール241は、ブロードキャストされたHelloパケットの発信元アドレスに基づいて、隣の無線装置の個数N(Nは正の整数)をカウントし(ステップS41)、そのカウントした個数Nが基準値Nstd(例えば、5個)以上であるか否かを判定する(ステップS42)。
そして、隣の無線装置の個数Nが基準値Nstd以上であるとき、信号強度測定モジュール241は、図15に示すフローチャートに従ってn組の最大値/最小値MAX[k],MIN[k]を検出し、その検出したn組の最大値/最小値MAX[k],MIN[k]を閾値導入モジュール242へ出力する。
閾値導入モジュール242は、信号強度測定モジュール241から受けたn組の最大値/最小値MAX[k],MIN[k]に基づいて、図16に示すフローチャートに従って閾値WIthを決定し、その決定した閾値WIthをテーブル作成モジュール243へ出力する(ステップS43)。
一方、ステップS42において、隣の無線装置の個数Nが基準値Nstdよりも小さいと判定されたとき、信号強度測定モジュール241は、図17に示すフローチャートに従ってP組の最大値/最小値MAX[p],MIN[p]を検出し、その検出したP組の最大値/最小値MAX[p],MIN[p]を閾値導入モジュール242へ出力する。
閾値導入モジュール242は、信号強度測定モジュール241から受けたP組の最大値/最小値MAX[p],MIN[p]に基づいて、図16に示すフローチャートに従って閾値WIthを決定し、その決定した閾値WIthをテーブル作成モジュール243へ出力する(ステップS44)。
そして、ステップS43またはステップS44の後、テーブル作成モジュール243は、閾値導入モジュール242から受けた閾値WIth以上の受信信号強度を有するHelloパケットを受信し、上述した方法によってルーティングテーブル21を作成する(ステップS45)。これによって、一連の動作は終了する。
このように、図18に示すフローチャートに従えば、隣接する無線装置の個数に拘わらず、閾値WIthを決定でき、その決定した閾値WIthに基づいて、安定したルーティングテーブル21を作成できる。その結果、安定したルーティングが可能である。
図19は、ルーティングテーブルを作成する動作を説明するための更に他のフローチャートである。この発明においては、図19に示すフローチャートに従ってルーティングテーブル21が作成されてもよい。
図19に示すフローチャートは、図18に示すフローチャートのステップS45を削除し、ステップS46〜ステップS52を追加したものであり、その他は、図18に示すフローチャートと同じである。なお、図19に示すフローチャートにおいては、ステップS43において閾値WIth1が決定され、ステップS44において閾値WIth2が決定される。
ステップS43の後、各無線装置31〜43のテーブル作成モジュール243は、閾値WIth1以上の受信信号強度を有するHelloパケットを受信してルーティングテーブル21を作成する(ステップS46)。
また、ステップS44の後、各無線装置31〜43のテーブル作成モジュール243は、閾値WIth2以上の受信信号強度を有するHelloパケットを受信してルーティングテーブル21を作成する(ステップS47)。そして、各無線装置31〜43の信号強度測定モジュール241は、隣接する無線装置の個数Nが基準値Nstd以上に増加したか否かを判定し(ステップS48)、個数Nが基準値Nstd以上に増加したとき、図15に示すフローチャートに従ってn組の最大値/最小値MAX[k],MIN[k]を検出し、閾値導入モジュール242は、n組の最大値/最小値MAX[k],MIN[k]に基づいて、図16に示すフローチャートに従って閾値WIth3を決定する(ステップS49)。
その後、テーブル作成モジュール243は、閾値WIth3以上の受信信号強度を有するHelloパケットを受信してルーティングテーブル21を作成する(ステップS50)。
一方、ステップS48において、個数Nが基準値Nstd以上に増加していないと判定されたとき、テーブル作成モジュール243は、閾値WIth2を維持してルーティングテーブル21を作成する(ステップS51)。その後、一連の動作は、ステップS48へ移行する。
そして、ステップS46またはステップS50の後、各無線装置31〜43のテーブル作成モジュール243は、隣の無線装置の個数Nが変化(増加または減少)しても、閾値WIth1(またはWIth3)を維持してルーティングテーブル21を作成する(ステップS52)。
これにより、一連の動作が終了する。
図19に示すフローチャートは、隣の無線装置の個数Nが基準値Nstd以上であれば、その後、個数Nが変化しても、最初に決定した閾値WIth1を維持してルーティングテーブル21を作成し(ステップS42の“Yes”,ステップS43,S46,S52参照)、最初、隣の無線装置の個数Nが基準値Nstdに達しないとき、送信パワーを変化させて閾値WIth2を決定し(ステップS42の“No”およびステップS44参照)、隣の無線装置の個数Nが基準値Nstd以上に増加すると、再度、閾値WIth3を決定し、その決定した閾値With3によって閾値WIth1を更新し、その後、閾値WIth3を維持してルーティングテーブル21を作成する(S47〜S52参照)。
即ち、この発明においては、隣の無線装置の個数Nが基準値Nstd以上に増加した場合に、閾値WIthが更新され、それ以外の場合には、閾値WIthは更新されない。
なお、図19に示すフローチャートにおいては、隣接する無線装置の個数Nが一定数増加した場合に、閾値WIthを更新するようにしてもよい。この場合、図19に示すステップS48においては、無線装置の個数Nが一定数増加したか否かが判定される。それ以外は、図19に示すフローチャートと同じである。
図20は、ルーティングテーブルを作成する動作を説明するための更に他のフローチャートである。この発明においては、図20に示すフローチャートに従ってルーティングテーブル21が作成されてもよい。
図20に示すフローチャートは、図19に示すフローチャートのステップS48〜ステップS52をステップS48A〜ステップS52Aに代えたものであり、その他は、図19に示すフローチャートと同じである。
ステップS46またはステップS47の後、信号強度測定モジュール241は、パケットロスを検出する(ステップS48A)。より具体的には、信号強度測定モジュール241は、一定時間内に規定数のパケットを受信しなかったことによりパケットロスを検出する。
そして、信号強度測定モジュール241は、その検出したパケットロスが所定数以上であるか否かを判定する(ステップS49A)。パケットロスが所定数以上でないとき、テーブル作成モジュール243は、閾値WIth1またはWIth2を維持してルーティングテーブル21を作成する(ステップS50A)。その後、一連の動作は、ステップS48Aへ移行する。
一方、ステップS49Aにおいて、パケットロスが所定数以上であると判定されたとき、信号強度測定モジュール241および閾値導入モジュール242は、図15および図16に示すフローチャートに従って、または図17および図16に示すフローチャートに従って閾値WIth4を決定し、その決定した閾値WIth4によって閾値WIth1またはWIth2を更新する(ステップS51A)。
その後、テーブル作成モジュール243は、閾値WIth4以上の受信信号強度を有するHelloパケットを受信してルーティングテーブル21を作成する(ステップS52A)。これによって、一連の動作が終了する。
図20に示すフローチャートは、パケットロスが所定数以上になると、閾値WIthを更新し、それ以外の場合、閾値WIthを更新しない。パケットロスが所定数以上になると、電波環境が不安定になっている可能性が高いので、閾値Withを更新することにしたものである。
図21は、パケットエラー率と実験回数との関係を示す図である。図21において、縦軸は、パケットエラー率を表し、横軸は、実験回数を表す。また、閾値WIth_H,WIth_L,WIth_Jは、それぞれ、図10に示すWIth_H,WIth_L,WIth_Jであり、閾値WIth_Hは、高過ぎる閾値を表し、閾値WIth_Lは、低過ぎる閾値を表し、閾値WIth_Jは、この発明による閾値を表す。更に、WIth_NOは、閾値を設定しなかった場合を表す。
図21から明らかなように、この発明によって決定した閾値WIth_Jを用いた場合、パケットエラー率は、10回の実験回数まで零である。しかし、閾値WIthが高過ぎる場合、閾値WIthが低過ぎる場合、および閾値WIthを設定しなかった場合は、パケットエラー率が実験回数とともに大きく変化する。即ち、閾値WIthが高過ぎる場合、閾値WIthが低過ぎる場合、および閾値WIthを設定しなかった場合は、ルーティングテーブル21が頻繁に書き換えられ、無線ネットワークシステム100内にループが発生し、パケットの到着順序が大幅に入れ替わり、パケットエラー率が増加する。
従って、この発明による方法によって閾値WIthを決定することによって、安定したルーティングテーブル21を作成でき、安定してルーティングを行なえることが実験的にも証明できた。
閾値WIthを導入することによって、安定したルーティングテーブル21を作成することができるが、無線ネットワークシステム100において、無線装置31〜43の配置に偏りがある場合、偏った位置に配置された無線装置が無線ネットワークシステム100から排除されてしまう。
図22は、無線装置の配置に偏りがあるネットワーク構成の概念図である。無線装置32,35は、無線装置36〜43の配置位置から偏った位置に配置されている。このような状況において、無線装置32は、無線装置35〜38から受信した複数のHelloパケットの複数の受信信号強度に基づいて、上述した方法によって閾値WIth(32)を決定する。この場合、無線装置32と無線装置35との距離は、無線装置32と無線装置36,37,38との距離よりも短いため、閾値WIth(32)は、無線装置35から受信したHelloパケットの受信信号強度Receive[35]が大きく反映されて決定される。即ち、閾値WIth(32)は、受信信号強度Receive[35]に近い値に決定される。
そうすると、無線装置32が無線装置36〜38から受信したHelloパケットの受信信号強度Receive[36]〜Receive[38]は、閾値WIth(32)よりも低くなり、無線装置32のテーブル作成モジュール243は、無線装置36〜38をネイバーリストから削除し、無線装置36〜38を経由する経路の経路情報をルーティングテーブル21から削除する。
その結果、無線装置32,35と無線装置36〜43との間で無線通信が行なわれず、無線装置32,35は、無線ネットワークシステム100において孤立する。
そこで、以下においては、上述したような無線装置の孤立が発生するのを防止する方法について説明する。
図23は、ネイバーリスト、ルーティングテーブルおよびHelloパケットを示す図である。無線装置32のテーブル作成モジュール243は、閾値WIth(32)を導入しない場合、ネイバーリスト10Hを作成して保持する。そして、無線装置32のテーブル作成モジュール243は、ネイバーリスト10Hに基づいて、閾値WIth(32)を導入した場合の無線装置32に隣接する隣接無線装置の個数が基準値(例えば、5個)よりも少ないか否かを判定する。
この場合、無線装置32が無線装置36〜38から受信したHelloパケットの受信信号強度Receive[36]〜Receive[38]は、閾値WIth(32)よりも低く、無線装置32が無線装置35から受信したHelloパケットの受信信号強度Receive[35]は、閾値WIth(32)よりも高いので、無線装置32のテーブル作成モジュール243は、閾値WIth(32)を導入した場合の隣接無線装置の個数を“1”とカウントし、隣接無線装置の個数が基準値よりも少ないと判定する(図23の(a)参照)。
そうすると、無線装置32のテーブル作成モジュール243は、閾値WIth(32)を導入せずにネイバーリスト10Hを作成し、その作成したネイバーリスト10Hに基づいて、ルーティングテーブル21Bにおいて無線装置36〜38を経由する経路の経路情報を維持し、無線装置36〜38を経由する経路の経路情報のフラグに“1”を格納する(図23の(b)参照)。
そして、無線装置32のテーブル作成モジュール243は、閾値WIth(32)を導入せずに経路情報を維持した場合、無線装置32において閾値WIth(32)を決定できなかったので、閾値WIth(32)を決定できなかったことを示すフラグを含むHelloパケットHLP1を作成して無線装置35〜38へ送信する。この場合、HelloパケットHLP1は、無線装置32のIPアドレスIPaddress32および閾値WIth(32)を決定できなかったことを示すフラグ“1”を含む(図23の(c)参照)。
無線装置36のテーブル作成モジュール243は、無線装置32からHelloパケットHLP1を受信し、HelloパケットHLP1の送信元である無線装置32のIPアドレスIPaddress32と、フラグ“1”とをHelloパケットHLP1から検出する。そして、無線装置36のテーブル作成モジュール243は、無線装置32において閾値WIth(32)を決定できなかったことを検知し、無線装置32を無条件にネイバーリストに登録し、ネイバーリスト10Jを作成する(図23の(d)参照)。そうすると、無線装置36のテーブル作成モジュール243は、ネイバーリスト10Jに基づいて、無線装置32を経由する経路の経路情報をルーティングテーブル21において維持する。無線装置37,38のテーブル作成モジュール243も、無線装置36のテーブル作成モジュール243と同様にして無線装置32を経由する経路の経路情報をルーティングテーブル21において維持する。
このように、無線装置32のテーブル作成モジュール243は、閾値WIth(32)を導入せずに、無線装置36〜38をネイバーリスト10Hに登録するとともに、無線装置36〜38を経由する経路の経路情報をルーティングテーブル21において維持し、無線装置36〜38のテーブル作成モジュール243は、無線装置32を無条件にネイバーリスト10Jに登録するとともに、無線装置32を経由する経路の経路情報をルーティングテーブル21において維持する。
従って、この発明によれば、無線ネットワークシステム100において、無線装置32,35が孤立するのを防止できる。
図24は、更に他のネイバーリストを示す図である。図22に示すトポロジーにおいて、無線装置32の隣接無線装置は、無線装置35,36であるとする。この場合、無線装置32のテーブル作成モジュール243は、ネイバーリスト10Kを作成し、その作成したネイバーリスト10Kを含むHelloパケットを作成して無線装置35,36へ送信する。
無線装置36のテーブル作成モジュール243は、無線装置32からネイバーリスト10Kを含むHelloパケットを受信し、ネイバーリスト10Kを読み出す。そして、無線装置36のテーブル作成モジュール243は、ネイバーリスト10Kに登録されている隣接無線装置の個数が基準値(例えば、3個)よりも少ないか否かを判定する。無線装置36のテーブル作成モジュール243は、隣接無線装置の個数が基準値よりも少ないとき、無線装置32を自己のネイバーリストに無条件に登録し、隣接無線装置の個数が基準値以上であるとき、閾値WIthを導入して無線装置32を自己のネイバーリストに登録するか否かを決定する。
この場合、ネイバーリスト10Kは、2個の隣接無線装置を含むので(図24の(a)参照)、無線装置36のテーブル作成モジュール243は、隣接無線装置の個数が基準値よりも少ないと判定し、無線装置32を自己のネイバーリストに無条件で登録し、ネイバーリスト10Lを作成する(図24の(b)参照)。そして、無線装置36のテーブル作成モジュール243は、ネイバーリスト10Lに基づいて、無線装置32を経由する経路の経路情報をルーティングテーブル21において維持する。
このように、この発明においては、他の無線装置から受信したネイバーリストに登録されている隣接無線装置の個数が基準値よりも少ないとき、そのネイバーリストを送信した無線装置をネイバーリストに無条件に登録し、そのネイバーリストを送信した無線装置を経由する経路の経路情報をルーティングテーブル21において維持するようにしてもよい。
また、この発明においては、パケットエラー率PERの観測も行ない、受信信号強度が閾値WIthよりも低くても、パケットエラー率がしきい値PER_thよりも低い場合、経路を維持するようにしてもよい。
例えば、図22に示すトポロジーにおいて、無線装置36のIPモジュール20は、無線装置32から受信したパケットのパケットエラー率PERを演算し、その演算したパケットエラー率PER[32]をルーティングデーモン24のテーブル作成モジュール243へ出力する。そして、無線装置36のテーブル作成モジュール243は、無線装置32から受信したHelloパケットの受信信号強度Receive[32]が閾値WIth[36]よりも低くても、パケットエラー率PER[32]がしきい値PER_thよりも低い場合、無線装置32を自己のネイバーリストに登録し、無線装置32を経由する経路の経路情報を維持する。
次に、図22に示す偏りと異なる偏りがある場合について説明する。図25は、無線装置の配置に偏りがある他のネットワーク構成の概念図である。無線装置31〜35は、無線装置36〜43から偏った位置に配置されている。
このような状況において、無線装置35は、無線装置31〜34,36〜38から受信した複数のHelloパケットの複数の受信信号強度に基づいて、上述した方法によって閾値WIth(35)を決定する。この場合、無線装置35と無線装置31〜34との距離は、無線装置35と無線装置36〜38との距離よりも短いため、閾値WIth(35)は、無線装置31〜34から受信したHelloパケットの受信信号強度Receive[31],Receive[32],Receive[33],Receive[34]が大きく反映されて決定される。即ち、閾値WIth(35)は、受信信号強度Receive[31],Receive[32],Receive[33],Receive[34]に近い値に決定される。
そうすると、無線装置35が無線装置36〜38から受信したHelloパケットの受信信号強度Receive[36]〜Receive[38]は、閾値WIth(35)よりも低くなり、無線装置35のテーブル作成モジュール243は、無線装置36〜38をネイバーリストに登録せず、無線装置36〜38を経由する経路の経路情報をルーティングテーブル21に格納しない。
その結果、無線装置31〜35と無線装置36〜43との間で無線通信が行なわれず、無線装置31〜35は、無線ネットワークシステム100において孤立する。
無線装置31〜35が無線ネットワークシステム100において孤立するのを防止するためには、無線装置35が自己のネイバーリストを他の無線装置から受信したネイバーリストと比較し、登録されている無線装置の相違数が基準値(=80〜90%)以上であるとき、閾値WIthを導入せずにネイバーリストを作成し、その作成したネイバーリストに基づいて、経路情報をルーティングテーブル21に格納する。
具体的に説明する。図26は、ネイバーリストおよびルーティングテーブルを示す他の図である。無線装置35のテーブル作成モジュール243は、無線装置35におけるネイバーリスト10M(図26の(a)参照)を作成し、無線装置36からネイバーリスト10N(図26の(b)参照)を含むHelloパケットを受信する。そして、無線装置35のテーブル作成モジュール243は、受信したHelloパケットからネイバーリスト10Nを読み出し、ネイバーリスト10Mに登録されている無線装置とネイバーリスト10Nに登録されている無線装置との相違数をカウントする。図26に示す場合、ネイバーリスト10Mに登録されている4個の無線装置31〜34の全てがネイバーリスト10Nに登録されている無線装置37〜39,41と異なる。従って、無線装置35のテーブル作成モジュール243は、ネイバーリスト10Mに登録されている4個の無線装置31〜34のうち、100%(=4/4×100)がネイバーリスト10Nに登録されている無線装置37〜39,41と異なると判定し、閾値WIth(35)を導入せずに無線装置36をネイバーリスト10Mに登録する。そして、無線装置35のテーブル作成モジュール243は、ネイバーリスト10Mをネイバーリスト10P(図26の(c)参照)に更新するとともに、その更新したネイバーリスト10Pに基づいて、ルーティングテーブル21C(図26の(d)参照)を作成する。この場合、無線装置35のテーブル作成モジュール243は、無線装置36を経由する経路が閾値WIth(35)を導入せずに登録した経路であることを示す“1”をフラグに格納する。
また、無線装置35のテーブル作成モジュール243は、無線装置35において閾値WIth(35)を決定できなかったことを他の無線装置に知らせるために、図23の(c)に示すHelloパケットHLP1と同じ形式のHelloパケットHLP2=[IPaddress35/1]を作成して他の無線装置へ送信する。
無線装置36のテーブル作成モジュール243は、無線装置35からHelloパケットHLP2を受信し、その受信したHelloパケットHLP2から無線装置35において閾値WIth(35)を決定できなかったことを示すフラグ“1”を検知する。そして、無線装置36のテーブル作成モジュール243は、無線装置35を自己のネイバーリストに登録し、無線装置35を登録したネイバーリストに基づいて、無線装置35を経由する経路の経路情報をルーティングテーブル21に登録する。
これによって、無線装置35と無線装置36との間で経路が確保され、無線ネットワークシステム100において、無線装置31〜35が孤立するのを防止できる。
なお、相違数の基準値(=80〜90%)は、固定的でなくてもよく、例えば、隣接無線装置の個数に応じて変えられてもよい。即ち、隣接無線装置の個数が相対的に多くなれば、相違数の基準値(=80〜90%)は、相対的に低く設定され、隣接無線装置の個数が相対的に少なくなれば、相違数の基準値(=80〜90%)は、相対的に高く設定される。
図22および図25に示すトポロジーにおいて、各無線装置31〜43の閾値導入モジュール242は、隣接無線装置の個数が一定数以上増減したとき、またはネイバーリストに登録されている無線装置が一定数以上変更されたとき、または各無線装置からのパケットエラー率の変化率がしきい値以上であるとき、トポロジーに変化があったと判定し、閾値を再決定する。
上述したように、各無線装置31〜43のテーブル作成モジュール243は、各種の方法によって閾値WIthを導入せずにネイバーリストに各無線装置を登録し、その各無線装置を登録したネイバーリストに基づいて、各経路の経路情報をルーティングテーブル21において維持し、または各経路の経路情報をルーティングテーブル21に登録する。そして、各無線装置31〜43のテーブル作成モジュール243は、閾値WIthを導入せずに経路情報を維持または登録したとき、閾値WIthを導入せずに経路情報を維持または登録したことを示すフラグ“1”をルーティングテーブル21に立てるので、各無線装置31〜43のIPモジュール20は、フラグ“1”が立っている経路を除外して各送信先との間で無線通信を行なう。
閾値WIthを導入せずに経路情報を維持または登録するのは、無線ネットワークシステム100において、孤立した無線装置の発生を防止するためであり、閾値WIthを導入せずに維持または登録された経路情報は、本来、通信品質が低い経路である。そこで、制御データ(例えば、Helloパケット)の送受信を継続して接続性を維持するが、閾値WIthを導入せずに維持または登録された経路情報を無線通信経路としては選択しないことにしたものである。
上記においては、図22および図25に示すように無線装置の配置に偏りがある場合、閾値WIthを導入せずに経路情報をルーティングテーブル21において維持し、または閾値WIthを導入せずに経路情報をルーティングテーブル21に登録すると説明したが、図22および図25に示すように無線装置の配置に偏りがある場合、無線通信空間において電波的な偏りあるので、この発明は、一般的には、無線通信空間において電波的な偏りがある場合、閾値WIthを導入せずに経路情報をルーティングテーブル21において維持し、または閾値WIthを導入せずに経路情報をルーティングテーブル21に登録するものであればよい。
図27は、無線ネットワークシステム100において無線装置の孤立が発生するのを抑制する動作を説明するためのフローチャートである。なお、図27に示すフローチャートを無線装置32−無線装置36間の経路を維持または登録する場合を例にして説明する。
一連の動作が開始されると、無線装置32のテーブル作成モジュール243は、上述した動作によって閾値WIthを決定し(ステップS61)、上述した各種の方法によって、無線通信空間において電波的な偏りが有るか否かを判定する(ステップS62)。
そして、無線装置32のテーブル作成モジュール243は、電波的な偏りがあると判定した場合(例えば、無線装置36から受信したHelloパケットの受信信号強度が閾値WIthよりも低く、無線装置32の隣接無線装置の個数が基準値よりも少ない場合)、ステップS61において決定した閾値WIthを導入せずに無線装置36を経由する経路の経路情報をルーティングテーブル21において維持し、または閾値WIthを導入せずに無線装置36を経由する経路の経路情報をルーティングテーブル21に登録する(ステップS63)。
そして、無線装置32のテーブル作成モジュール243は、閾値WIthを決定できなかったことを示す緊急フラグを含むHelloパケットを生成して他の無線装置へ送信する(ステップS64)。
緊急フラグを含むHelloパケットを受信した無線装置36は、緊急フラグを含むHelloパケットを送信した無線装置32を経由する経路を、ルーティングテーブル21において維持し、またはルーティングテーブル21に登録する(ステップS65)。
その後、無線装置32,36のIPモジュール20は、閾値WIthを導入せずにルーティングテーブル21において維持した経路、または閾値WIthを導入せずにルーティングテーブル21に登録した経路を除外して無線通信を行なう(ステップS66)。
一方、ステップS62において、電波的な偏りがないと判定されたとき、無線装置32のテーブル作成モジュール243は、閾値WIthを導入してルーティングテーブル21において経路情報を維持し、または閾値WIthを導入してルーティングテーブル21に経路情報を登録する(ステップS67)。
そして、ステップS66またはステップS67の後、一連の動作は終了する。
上記においては、n組の最大値/最小値MAX[1],MIN[1]〜MAX[n],MIN[n](またはP組の最大値/最小値MAX[1],MIN[1]〜MAX[P],MIN[P])をn個の最大値MAX[1]〜MAX[n](またはP個の最大値MAX[1]〜MAX[P])が大きい順に配列されるように並べ替えると説明したが、この発明においては、これに限らず、n個の最大値MAX[1]〜MAX[n](またはP個の最大値MAX[1]〜MAX[P])が小さい順に配列されるようにn組の最大値/最小値MAX[1],MIN[1]〜MAX[n],MIN[n](またはP組の最大値/最小値MAX[1],MIN[1]〜MAX[P],MIN[P])を並べ替え、その並べ替えたn組の最大値/最小値D_MAX[1],D_MIN[1]〜D_MAX[n],D_MIN[n]において、隣接する2つの最大値の差が最大となる2組の最大値/最小値D_MAX[i],D_MIN[i];D_MAX[i+1],D_MIN[i+1]を検出し、その検出した2組の最大値/最小値D_MAX[i],D_MIN[i];D_MAX[i+1],D_MIN[i+1]に含まれる2つの最小値D_MIN[i],D_MIN[i+1]の平均((D_MIN[i]+D_MIN[i+1])/2)を閾値WIthとして決定してもよい。
また、上記においては、2つの最小値D_MIN[i],D_MIN[i+1]の平均((D_MIN[i]+D_MIN[i+1])/2)を閾値WIthとすると説明したが、この発明においては、これに限らず、2つの最小値D_MIN[i],D_MIN[i+1]の重み付け平均を閾値WIthとしてもよい。
この場合、重み付け平均は、次式により演算される。
(α×(D_MIN[i])+(1−α)×(D_MIN[i+1]))/2
・・・(1)
式(1)において、αは、0<α<1の範囲の実数である。
そして、αは、n個の最大値D_MAX[1]〜D_MAX[n]またはP個の最大値D_MAX[1]〜D_MAX[P]が大きい順に並べられたときは、D_MIN[i]とD_MIN[i+1]との差(=D_MIN[i]−D_MIN[i+1])が相対的に大きくなると、相対的に大きく設定され、差(=D_MIN[i]−D_MIN[i+1])が相対的に小さくなると、相対的に小さく設定される。
差(=D_MIN[i]−D_MIN[i+1])が相対的に大きくなると、最小値D_MAX[i+1]が不安定な電波環境における受信信号強度の最小値(図10のMIN[15]よりも右側に存在する最小値)よりも小さくなる可能性があり、平均((D_MIN[i]+D_MIN[i+1])/2)を閾値WIthとしたのでは、不安定な電波環境において送受信されたHelloパケットを用いてルーティングテーブル21が作成される可能性があるので、安定な電波環境における受信信号強度のみを検出するために最小値D_MIN[i]により近い受信信号強度を閾値WIthとして設定するために上記のように重み付け平均を演算することにしたものである。
また、αは、n個の最大値D_MAX[1]〜D_MAX[n]またはP個の最大値D_MAX[1]〜D_MAX[P]が小さい順に並べられたときは、D_MIN[i+1]とD_MIN[i]との差(=D_MIN[i+1]−D_MIN[i])が相対的に大きくなると、相対的に大きく設定され、差(=D_MIN[i+1]−D_MIN[i])が相対的に小さくなると、相対的に小さく設定される。
このようにして重み付け平均を演算する理由は、上記と同じである。
更に、上記においては、2つの最小値D_MIN[i],D_MIN[i+1]の平均(=(D_MIN[i]+D_MIN[i+1])/2)、または2つの最小値D_MIN[i],D_MIN[i+1]の重み付け平均(式(1)参照)によって閾値WIthを決定すると説明したが、この発明においては、これに限らず、2つの最小値D_MIN[i],D_MIN[i+1]を両端とする範囲に含まれるように閾値WIthを決定してもよい。
更に、上記においては、信頼性を高くして閾値WIthを決定するための隣接無線装置の数を5個として説明したが、この発明においては、これに限らず、信頼性を高くして閾値WIthを決定するための隣接無線装置の数は、5個以外であってもよく、周辺の電波環境に応じて決定されてもよい。
なお、この発明においては、信号強度測定モジュール241および閾値導入モジュール242は、「閾値決定手段」を構成する。
また、テーブル作成モジュール243は、「テーブル作成手段」を構成する。
更に、信号強度測定モジュール241は、「信号強度検出手段」を構成する。
更に、n組の最大値/最小値MAX[1],MIN[1]〜MAX[n],MIN[n]をn組の最大値/最小値D_MAX[1],D_MIN[1]〜D_MAX[n],D_MIN[n]に並べ替える閾値導入モジュール242、またはP組の最大値/最小値MAX[1],MIN[1]〜MAX[P],MIN[P]をP組の最大値/最小値D_MAX[1],D_MIN[1]〜D_MAX[P],D_MIN[P]に並べ替える閾値導入モジュール242は、「並替手段」を構成する。
更に、n組の最大値/最小値D_MAX[1],D_MIN[1]〜D_MAX[n],D_MIN[n]またはP組の最大値/最小値D_MAX[1],D_MIN[1]〜D_MAX[P],D_MIN[P]に基づいて閾値WIthを決定する閾値導入モジュール253は、「設定手段」を構成する。
更に、閾値を導入せずに経路情報をルーティングテーブル21において維持し、または閾値を導入せずに経路情報をルーティングテーブル21に登録するテーブル作成モジュール243は、「経路確保手段」を構成する。
更に、“1”からなるフラグは、「緊急フラグ」を構成し、緊急フラグを含むHelloパケットHLP1を送信するテーブル作成モジュール243は、「送信手段」を構成する。
更に、フラグに“1”が格納された経路を除外して送信元と送信先との間で無線通信を行なうIPモジュール20は、「選択手段」を構成する。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
10,10A,10B,10C,10D,10E,10F,10G,10H,10J,10K,10L,10M,10N,10P ネイバーリスト、11 アンテナ、12 入力部、13 出力部、14 ユーザアプリケーション、15 通信制御部、16 無線インターフェースモジュール、17 MACモジュール、18 バッファ、19 LLCモジュール、20 IPモジュール、21,21A,21B,21C ルーティングテーブル、22 TCPモジュール、23 UDPモジュール、24 ルーティングデーモン、31〜43 無線装置、51〜63 アンテナ、100 無線ネットワークシステム、241 信号強度測定モジュール、242 閾値導入モジュール、243 テーブル作成モジュール。