本発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。
図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モジュール17と、バッファ18と、LLC(Logical Link Control)モジュール19と、IP(Internet Protocol)モジュール20と、ルーティングテーブル21と、TCPモジュール22と、UDPモジュール23と、ルーティングデーモン24とからなる。
無線インターフェースモジュール16は、物理層に属し、所定の規定に従って送信信号または受信信号の変復調を行なうとともに、複数のチャネルから選択したチャネルを用いてアンテナ11を介して信号を送受信する。そして、無線インターフェースモジュール16は、アンテナ11が他の無線装置から受信したHelloパケットの受信信号強度を検出し、その検出した受信信号強度をルーティングデーモン24へ出力する。
また、無線インターフェースモジュール16は、自己が搭載された無線装置が無線通信を中継する中継無線装置である場合、IPモジュール20が隠れ端末を検出すると、隠れ端末として検出された無線装置に対してチャネルの変更を要求するためのチャネル変更要求をアンテナ11を介して送信する。
更に、無線インターフェースモジュール16は、チャネル変更要求を他の無線装置から受信すると、その受信したチャネル変更要求に応じて、無線通信を行なうためのチャネルを変更する。
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パケットを送信先へ送信する。
また、IPモジュール20は、他の無線装置から受信したHelloパケットのパケットロス率PER_Rを演算し、その演算したパケットロス率PER_Rをしきい値PER_thと比較する。そして、IPモジュール20は、パケットロス率PER_Rがしきい値PER_thよりも大きいと判定したとき、自己が搭載された無線装置の送信元側および送信先側のいずれか一方側において自己が搭載された無線装置に隣接する無線装置を隠れ端末として検出する。IPモジュール20は、隠れ端末を検出すると、隠れ端末を検出したことを示す信号Dhidを生成して無線インターフェースモジュール16へ出力する。
ルーティングテーブル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へ出力する。
なお、図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”づつ増加される。メッセージは、送信対象のメッセージである。
OLSRプロトコルにおいては、各種のメッセージが図5に示す構成のパケットPKTを用いて送受信される。
図6は、図2に示すルーティングテーブル21の構成図である。ルーティングテーブル21は、送信先、次の無線装置およびホップ数からなる。送信先、次の無線装置およびホップ数は、相互に対応付けられている。“送信先”は、送信先の無線装置のIPアドレスを表す。“次の無線装置”は、送信先にパケットPKTを送信するときに、次に送信すべき無線装置のIPアドレスを表す。“ホップ数”は、送信先までのホップ数を表す。例えば、図1において、無線装置31−無線装置32−無線装置36−無線装置39−無線装置42の経路によって無線装置31と無線装置42との間で無線通信が行なわれる場合、無線装置32のルーティングテーブル21のホップ数には、“3”が格納される。
図7は、図2に示す無線インターフェースモジュール16の機能ブロック図である。無線インターフェースモジュール16は、無線インターフェース1611〜161j(jは2以上の整数)と、変復調手段162とを含む。なお、図7においては、受信信号強度を検出する無線インターフェースモジュール16の機能は、省略されている。
無線インターフェース1611〜161jは、相互に異なる周波数(=チャネル)を有する。そして、無線インターフェース1611〜161jの各々は、変復調手段162によって変調されたパケットを自己が有するチャネルによってアンテナ11を介して送信するとともに、自己が有するチャネルによってアンテナ11を介してパケットを受信して変復調手段162へ出力する。
変復調手段162は、上位層から受けたパケットを所定の方式によって変調するとともに、その変調したパケットを無線インターフェース1611〜161jのいずれかへ出力する。また、変復調手段162は、無線インターフェース1611〜161jのいずれかから受けたパケットを復調し、その復調したパケットを上位層へ出力する。更に、変復調手段162は、IPモジュール20から信号Dhidを受けると、信号Dhidに応じて、チャネル変更要求Dcchgを生成して無線インターフェース1611〜161jのいずれかへ出力する。
図8は、図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以上の整数)に設定されるのは、後述する図11に示すように、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を動的に作成する。
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へ出力する。
図9は、並べ替えの概念図である。閾値導入モジュール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を決定するための実験結果について説明する。図10は、受信信号強度およびパケットエラー率と、無線装置の数との関係を示す図である。図10において、縦軸は、受信信号強度およびパケットエラー率を表し、横軸は、無線装置の数を表す。
1ホップ内の複数の無線装置から一定時間内に受信したHelloパケットの受信信号強度の最大値/最小値の組MAX[n],MIN[n]をプロットすると、図10に示すようになる。この場合、●は、受信信号強度の最大値MAX[n]を示し、×は、受信信号強度の最小値MIN[n]を示し、△は、パケットエラー率を示す。
また、図11は、複数の最大値が大きい順に並べ換えられたときの受信信号強度およびパケットエラー率と、無線装置の数との関係を示す図である。図11において、縦軸は、受信信号強度およびパケットエラー率を表し、横軸は、無線装置の数を表す。また、●は、受信信号強度の最大値MAX[n]を示し、×は、受信信号強度の最小値MIN[n]を示し、△は、パケットエラー率を示す。
図10から明らかなように、最大値は、無線装置の数が多くなるに従って上下しており、大きい順に並べられていない。そこで、図11に示すように、最大値が大きい順になるように複数の最大値/最小値の組を並べ替える。
そして、隣接する2つの最大値の差が最大となるときの2組の最大値/最小値{D_MAX(14),D_MIN(14)},{D_MAX(15),D_MIN(15)}が検出され、2個の最小値D_MIN(14),D_MIN(15)の平均値が閾値WIthとして決定される。
図11において、最大値/最小値の組MAX[14],MIN[14]よりも右側の領域においては、受信信号強度の最大値は、大きく低下し、パケットエラー率は、ばらついている。
一方、最大値/最小値の組MAX[15],MIN[15]よりも左側の領域においては、受信信号強度の最大値は、大きく、パケットエラー率は、無線装置の数が増加しても略0%である。従って、最大値/最小値の組MAX[15],MIN[15]よりも左側の領域は、安定な電波環境において送受信される電波の全ての受信信号強度が分布する領域であり、最大値/最小値の組MAX[14],MIN[14]よりも右側の領域は、不安定な電波環境において送受信される電波の全ての受信信号強度が分布する領域である。
その結果、閾値WIth以上の受信信号強度を検出することは、安定な電波環境において送受信される電波を全て検出することになる。
従って、上述した方法によって閾値WIthを決定することにより、安定な電波環境で送受信される電波を全て検出し、不安定な電波環境で送受信される電波を全て排除できる。
閾値導入モジュール242は、閾値WIthを決定すると、その決定した閾値WIthをテーブル作成モジュール243へ出力する。
ルーティングテーブル21の作成方法について説明する。図12は、隣の無線装置に関する情報からなるネイバーリストを示す図である。また、図13は、他のネイバーリストを示す図である。更に、図14は、ネイバーリストおよびルーティングテーブルを示す図である。
図12においては、図1に示す無線装置36が保持するネイバーリストが示され、図13においては、図1に示す無線装置32,35,37,38が保持するネイバーリストが示され、図14においては、図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を作成する(図14の(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行目の経路を作成する。
上述したように、閾値WIthを決定することにより、安定な電波環境において送受信されるHelloパケットに基づいてルーティングテーブル21を作成できる。
その結果、各無線装置に隣接する無線装置の情報が頻繁に変更されず、安定したルーティングテーブル21を作成でき、安定したルーティングが可能である。
図15は、ルーティングテーブルを作成する動作を説明するためのフローチャートである。
一連の動作が開始されると、各無線装置31〜43において、ルーティングデーモン24の信号強度測定モジュール241は、周りのn個の無線装置から受信した複数のHelloパケットの複数の受信信号強度に基づいて、m個の最大値/最小値の組を検出し(ステップS1)、その検出したm個の最大値/最小値の組を閾値導入モジュール242へ出力する。
そして、閾値導入モジュール242は、信号強度測定モジュール241から受けたm個の最大値/最小値の組に基づいて、安定な電波環境において送受信される電波の最小強度以上の受信信号強度を検出するための閾値WIthを決定する(ステップS2)。
そして、テーブル作成モジュール243は、閾値WIthを閾値導入モジュール242から受け、その受けた閾値WIth以上の受信信号強度を有するHelloパケットを受信し、上述した方法によってルーティングテーブル21を作成する(ステップS3)。これによって、一連の動作が終了する。
図16は、図15に示すステップ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つの無線装置は、図11に示すような受信信号強度と無線装置の数との関係を取得でき、閾値WIthを信頼性良く決定できるからである。
そして、ステップS23において、k=nであると判定されると、一連の動作は、図15のステップS2へ移行する。
このように、図16に示すフローチャートに従えば、1つの無線装置の信号強度測定モジュール241は、自己の1ホップ内に存在するn個の無線装置の各々からm個のHelloパケットを順次受け、その受けたm個のHelloパケットのm個の受信信号強度に基づいて、n個の無線装置の各々ごとに最大値/最小値の組MAX[k],MIN[k]を検出し、その検出したn組の最大値/最小値MAX[1],MIN[1]〜MAX[n],MIN[n]を閾値導入モジュール242へ出力する。
図17は、図15に示すステップ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]を並べ替え(図9参照)、その並べ替えた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)。
そして、一連の動作は、図15のステップ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と決定する。
図18は、図15に示すステップS1の詳細な動作を説明するための他のフローチャートである。図18に示すフローチャートは、図16に示すフローチャートのステップS10,S12,S16,S23,S24をそれぞれステップS10A,S12A,S16A,S23A,S24Aに代えたものであり、その他は、図16に示すフローチャートと同じである。
一連の動作が開始されると、信号強度測定モジュール241は、p=1を設定する(ステップS10A)。そして、上述したステップS11が実行された後、信号強度測定モジュール241は、送信パワーPWpで送信されたHelloパケットを受信する(ステップS12A)。その後、上述したステップS13〜S15が実行される。この場合、図16のステップS13,S14に示されるReceive[k]mは、Receive[p]mに読み替えられ、図16のステップ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であると判定されると、一連の動作は、図15に示すステップS2へ移行し、図17に示すフローチャートに従って、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を決定してもよい。
図19は、ルーティングテーブルを作成する動作を説明するための他のフローチャートである。一連の動作が開始されると、各無線装置31〜43の信号強度測定モジュール241は、ブロードキャストされたHelloパケットの発信元アドレスに基づいて、隣の無線装置の個数N(Nは正の整数)をカウントし(ステップS41)、そのカウントした個数Nが基準値Nstd(例えば、5個)以上であるか否かを判定する(ステップS42)。
そして、隣の無線装置の個数Nが基準値Nstd以上であるとき、信号強度測定モジュール241は、図16に示すフローチャートに従ってn組の最大値/最小値MAX[k],MIN[k]を検出し、その検出したn組の最大値/最小値MAX[k],MIN[k]を閾値導入モジュール242へ出力する。
閾値導入モジュール242は、信号強度測定モジュール241から受けたn組の最大値/最小値MAX[k],MIN[k]に基づいて、図17に示すフローチャートに従って閾値WIthを決定し、その決定した閾値WIthをテーブル作成モジュール243へ出力する(ステップS43)。
一方、ステップS42において、隣の無線装置の個数Nが基準値Nstdよりも小さいと判定されたとき、信号強度測定モジュール241は、図18に示すフローチャートに従ってP組の最大値/最小値MAX[p],MIN[p]を検出し、その検出したP組の最大値/最小値MAX[p],MIN[p]を閾値導入モジュール242へ出力する。
閾値導入モジュール242は、信号強度測定モジュール241から受けたP組の最大値/最小値MAX[p],MIN[p]に基づいて、図17に示すフローチャートに従って閾値WIthを決定し、その決定した閾値WIthをテーブル作成モジュール243へ出力する(ステップS44)。
そして、ステップS43またはステップS44の後、テーブル作成モジュール243は、閾値導入モジュール242から受けた閾値WIth以上の受信信号強度を有するHelloパケットを受信し、上述した方法によってルーティングテーブル21を作成する(ステップS45)。これによって、一連の動作は終了する。
このように、図19に示すフローチャートに従えば、隣接する無線装置の個数に拘わらず、閾値WIthを決定でき、その決定した閾値WIthに基づいて、安定したルーティングテーブル21を作成できる。その結果、安定したルーティングが可能である。
図20は、ルーティングテーブルを作成する動作を説明するための更に他のフローチャートである。この発明においては、図20に示すフローチャートに従ってルーティングテーブル21が作成されてもよい。
図20に示すフローチャートは、図19に示すフローチャートのステップS45を削除し、ステップS46〜ステップS52を追加したものであり、その他は、図19に示すフローチャートと同じである。なお、図20に示すフローチャートにおいては、ステップ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以上に増加したとき、図16に示すフローチャートに従ってn組の最大値/最小値MAX[k],MIN[k]を検出し、閾値導入モジュール242は、n組の最大値/最小値MAX[k],MIN[k]に基づいて、図17に示すフローチャートに従って閾値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)。
これにより、一連の動作が終了する。
図20に示すフローチャートは、隣の無線装置の個数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は更新されない。
なお、図20に示すフローチャートにおいては、隣接する無線装置の個数Nが一定数増加した場合に、閾値WIthを更新するようにしてもよい。この場合、図20に示すステップS48においては、無線装置の個数Nが一定数増加したか否かが判定される。それ以外は、図20に示すフローチャートと同じである。
図21は、ルーティングテーブルを作成する動作を説明するための更に他のフローチャートである。この発明においては、図21に示すフローチャートに従ってルーティングテーブル21が作成されてもよい。
図21に示すフローチャートは、図20に示すフローチャートのステップS48〜ステップS52をステップS48A〜ステップS52Aに代えたものであり、その他は、図20に示すフローチャートと同じである。
ステップS46またはステップS47の後、信号強度測定モジュール241は、パケットロスを検出する(ステップS48A)。より具体的には、信号強度測定モジュール241は、一定時間内に規定数のパケットを受信しなかったことによりパケットロスを検出する。
そして、信号強度測定モジュール241は、その検出したパケットロスが所定数以上であるか否かを判定する(ステップS49A)。パケットロスが所定数以上でないとき、テーブル作成モジュール243は、閾値WIth1またはWIth2を維持してルーティングテーブル21を作成する(ステップS50A)。その後、一連の動作は、ステップS48Aへ移行する。
一方、ステップS49Aにおいて、パケットロスが所定数以上であると判定されたとき、信号強度測定モジュール241および閾値導入モジュール242は、図16および図17に示すフローチャートに従って、または図18および図17に示すフローチャートに従って閾値WIth4を決定し、その決定した閾値WIth4によって閾値WIth1またはWIth2を更新する(ステップS51A)。
その後、テーブル作成モジュール243は、閾値WIth4以上の受信信号強度を有するHelloパケットを受信してルーティングテーブル21を作成する(ステップS52A)。これによって、一連の動作が終了する。
図21に示すフローチャートは、パケットロスが所定数以上になると、閾値WIthを更新し、それ以外の場合、閾値WIthを更新しない。パケットロスが所定数以上になると、電波環境が不安定になっている可能性が高いので、閾値Withを更新することにしたものである。
図22は、パケットエラー率と実験回数との関係を示す図である。図22において、縦軸は、パケットエラー率を表し、横軸は、実験回数を表す。また、閾値WIth_H,WIth_L,WIth_Jは、それぞれ、図11に示すWIth_H,WIth_L,WIth_Jであり、閾値WIth_Hは、高過ぎる閾値を表し、閾値WIth_Lは、低過ぎる閾値を表し、閾値WIth_Jは、この発明による閾値を表す。更に、WIth_NOは、閾値を設定しなかった場合を表す。
図22から明らかなように、この発明によって決定した閾値WIth_Jを用いた場合、パケットエラー率は、10回の実験回数まで零である。しかし、閾値WIthが高過ぎる場合、閾値WIthが低過ぎる場合、および閾値WIthを設定しなかった場合は、パケットエラー率が実験回数とともに大きく変化する。即ち、閾値WIthが高過ぎる場合、閾値WIthが低過ぎる場合、および閾値WIthを設定しなかった場合は、ルーティングテーブル21が頻繁に書き換えられ、無線ネットワークシステム100内にループが発生し、パケットの到着順序が大幅に入れ替わり、パケットエラー率が増加する。
従って、この発明による方法によって閾値WIthを決定することによって、安定したルーティングテーブル21を作成でき、安定してルーティングを行なえることが実験的にも証明できた。
閾値WIthを導入することによって、安定した電波環境(パケットエラー率が殆ど0%である電波環境、図11参照)で無線通信が行なわれる。従って、各無線装置が異なるチャネルで無線通信を行なえば、パケットエラー率が増加することはない。
しかし、アドホックネットワークを構築するために使用される制御情報(=Helloパケット)のやり取りは、MACレベルで再送がないブロードキャストで行なわれる。そして、例えば、図1に示す無線装置36が無線装置32と無線装置39との間でパケットを中継する場合、無線装置32および無線装置39は、相互に相手を認識しないため、無線装置32および無線装置39が同じチャネルで無線装置36へ同時にパケットを送信すると、無線装置32からのパケットと無線装置39からのパケットとが無線装置36において衝突し、無線装置36においてパケットロスが発生する。このような場合、無線装置32および無線装置39は、相互に隠れ端末の関係になる。
隠れ端末の存在による制御情報(=Helloパケット)の損失具合についての実験結果について説明する。図23は、制御情報(=Helloパケット)の損失具合についての実験に用いた無線装置の配置図である。
無線装置1〜5は、無線装置1’〜5’と、直接、無線通信を行なうことはできず、中継無線装置Rを介して無線装置1’〜5’と無線通信を行なうことができる。そして、無線装置1〜5が中継無線装置Rを経由して無線装置1’〜5’と無線通信を行なうときのルーティングプロトコルとしてFSRが用いられ、無線装置1〜5,1’〜5’および中継無線装置Rは、5秒間隔で制御情報をブロードキャストで配信するものとする。また、トラフィックは、VoIP(Voice over Internet Protocol)による双方向通信を想定し、1パケット当たり、400バイトの音声データを含み、50msec間隔で送信されるものとする。そして、このトラフィックを0セッションから5セッションまで増加させたときのFSRの制御パケットのロス率を計測した。
表1は、トラフィックのパケットロス率、最大バースト長、送受信端末(=無線装置1〜5,1’〜5’)から中継無線装置Rへの制御パケットのロス率および中継無線装置Rから送受信端末(=無線装置1〜5,1’〜5’)への制御パケットのロス率を示す。
表1に示す結果から、送受信端末である無線装置1〜5,1’〜5’から中継無線装置RへのHelloパケットのロス率が中継無線装置Rから無線装置1〜5,1’〜5’へのHelloパケットのロス率よりも高くなっており、セッション数が増加するにつれて、Helloパケットのロス率も増加している。これは、隠れ端末の状態になっている無線装置1〜5,1’〜5’からのパケットが中継無線装置Rにおいて衝突することによって発生していることを表す。
また、VoIPのトラフィックのロス率は、Helloパケットのロス率に比べて小さくなっている。これは、VoIPのトラフィックは、MACレベルで再送のあるユニキャストで送信されるからである。
更に、VoIPのトラフィックは、セッション数が増加するに従って、ロス率および最大バースト長が大きくなっている。これは、トラフィックの増加によって、ルーティングの制御情報のロスが増加し、経路構築が困難になっているためである。
このように、隠れ端末が存在することによって、無線装置1〜5,1’〜5’から中継無線装置RへのHelloパケットのロス率が大きくなる。また、セッション数の増加に伴って最大バースト長が大きくなる。
従って、上述した方法によって閾値WIthを決定し、その決定した閾値WIth以上の受信信号強度を有するHelloパケットに基づいてルーティングテーブル21を作成し、その作成したルーティングテーブル21に基づいてパケットの送受信を行なっている場合に、パケットを中継する中継無線装置Rが受信するパケットのパケットロス率がしきい値よりも大きくなると、隠れ端末が存在することになる。即ち、中継無線装置Rは、自己が受信するパケットのパケットロス率がしきい値よりも大きくなったことを検出することによって隠れ端末を検出できる。
そこで、この発明においては、送信元と送信先との間でパケットを中継する中継無線装置は、自己が受信するパケットのパケットロス率がしきい値よりも大きくなると、送信元側および送信先側のいずれか一方で自己に隣接する無線装置を隠れ端末として検出する。そして、中継無線装置は、その検出した隠れ端末に対して、チャネル変更要求Dcchgを送信してチャネルを変更するように要求する。そして、チャネル変更要求Dcchgを受信した隠れ端末は、自己がパケットの送受信に用いるチャネルを変更する。
これによって、送信元側および送信先側において中継無線装置に隣接する2つの無線装置が相互に隠れ端末の関係になるのが解消される。その結果、制御パケットのロス率が低減され、アドホックネットワークを構築可能である。
図24は、この発明の実施の形態における通信制御方法を示すフローチャートである。なお、図24においては、無線装置36が無線装置32と無線装置39との間でパケットを中継する場合を例にして通信制御方法を説明する。
一連の動作が開始されると、無線装置36の閾値導入モジュール242は、図16および図17に示すフローチャートに従って閾値WIthを決定し(ステップS61)、その決定した閾値WIthをテーブル作成モジュール243へ出力する。
そして、無線装置36のテーブル作成モジュール243は、閾値WIth以上の受信信号強度を有するHelloパケットを受信してルーティングテーブル21を作成する(ステップS62)。
そうすると、無線装置36のIPモジュール20は、作成されたルーティングテーブル21に従って無線装置32と無線装置39との間でパケット(無線通信)を中継する(ステップS63)。
そして、無線装置36のIPモジュール20は、無線装置32から受信したHelloパケットまたは無線装置39から受信したHelloパケットのパケットロス率PER_Rを検出する(ステップS64)。
そうすると、無線装置36のIPモジュール20は、パケットロス率PER_Rがしきい値PER_thよりも大きいか否かを判定する(ステップS65)。そして、パケットロス率PER_Rがしきい値PER_th以下であるとき、隠れ端末が存在しないものとして、一連の動作は終了する。
一方、パケットロス率PER_Rがしきい値PER_thよりも大きいとき、無線装置36(=中継無線装置)のIPモジュール20は、無線装置36(=中継無線装置)の送信元側および送信先側のいずれか一方において、無線装置36(=中継無線装置)に隣接する無線装置32(または無線装置39)を隠れ端末として検出する(ステップS66)。
その後、無線装置36(=中継無線装置)のIPモジュール20は、信号Dhidを生成し、その生成した信号Dhidを無線インターフェースモジュール16の変復調手段162へ出力する。そして、無線装置36(=中継無線装置)の変復調手段162は、IPモジュール20から信号Dhidを受けると、チャネル変更要求Dcchgを生成し、その生成したチャネル変更要求Dcchgを無線インターフェース1611〜161kのいずれかおよびアンテナ11を介して無線装置32(または無線装置39)へ送信する。これによって、無線装置36(=中継無線装置)は、隠れ端末に対して、無線インターフェースを変えるように要求する(ステップS67)。
無線装置32(または無線装置39)の変復調手段162は、チャネル変更要求Dcchgを受信し、その受信したチャネル変更要求Dcchgに応じて、無線インターフェースを変更してパケットを無線装置36へ送信する。より具体的には、無線装置32が無線装置39と同じ無線インターフェース1611を使用している場合、無線装置32の変復調手段162は、チャネル変更要求Dcchgに応じて、例えば、無線インターフェースを無線インターフェース1611から無線インターフェース1612へ変更する。
これによって、無線装置32,39がHelloパケットを同時に無線装置36へ送信しても、Helloパケットのパケットロスが無線装置36において発生することはない。つまり、無線装置32,39が隠れ端末である状態が解消される。そして、一連の動作は終了する。
なお、図24に示すフローチャートのステップS61においては、図16および図17に示すフローチャートに代えて図18および図17に示すフローチャートに従って閾値を決定するようにしてもよい。
図24に示すフローチャートにおいては、中継無線装置が受信するパケットのパケットロス率PER_Rがしきい値PER_thよりも大きいことを検出することによって隠れ端末の存在を検出することを説明したが、この発明においては、これに限らず、中継無線装置における受信品質が基準値よりも低いことを検出することによって、隠れ端末の存在を検出するようにしてもよい。
この場合、ステップS64において、中継無線装置における受信品質が検出され、ステップS65において、受信品質が基準値よりも低いか否かが判定される。
上述したように、この発明においては、安定した電波環境において送受信される電波の最小強度以上の受信信号強度を有する経路を用いて無線通信を行なっている場合に、中継無線装置における受信品質が基準値よりも低いことを検出することによって隠れ端末が存在することを検出する。
従って、この発明によれば、無線ネットワークシステム100において隠れ端末を検出できる。
また、この発明においては、中継無線装置は、隠れ端末を検出すると、その検出した隠れ端末に対して、チャネルを変えるように要求し、隠れ端末は、チャネル変更要求に応じてチャネルを変える。
従って、この発明によれば、ネットワークにおける隠れ端末の発生を抑制してネットワークを構築できる。
上記においては、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個以外であってもよく、周辺の電波環境に応じて決定されてもよい。
更に、上記においては、隠れ端末は、1個であると説明したが、この発明においては、隠れ端末は、複数であってもよい。この場合、中継無線装置は、複数の隠れ端末に対してチャネル変更要求Dcchgを送信する。
なお、この発明においては、信号強度測定モジュール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は、「設定手段」を構成する。
更に、パケットロス率PER_Rがしきい値PER_thよりも大きいことを検出して隠れ端末を検出するIPモジュール20または制御パケットの到着時間間隔Tintが一定時間Tconstよりも長いことを検出して隠れ端末を検出するUDPモジュール23は、「検出手段」を構成する。
更に、無線インターフェース1611〜161jを用いてルーティングテーブル21に従って無線通信を行なうIPモジュール20は、「通信手段」を構成する。
更に、チャネル変更要求Dcchgを送信する変復調手段162は、「要求手段」を構成する。
更に、図24に示すステップS61〜ステップS66は、この発明による「隠れ端末の検出方法」を構成する。
更に、図24に示すフローチャートは、この発明による「通信制御方法」を構成する。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
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 無線ネットワークシステム、162 変復調手段、241 信号強度測定モジュール、242 閾値導入モジュール、243 テーブル作成モジュール、1611〜161k 無線インターフェース。