本発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。
図1は、この発明の実施の形態による無線ネットワークシステムの概略図である。無線ネットワークシステム10は、無線装置M1〜M12を備える。無線装置M1〜M12は、無線通信空間に配置され、自律的にネットワークを構成している。そして、無線装置M1から無線装置M9へデータを送信する場合、無線装置M3〜M8,M10,M12は、無線装置M1からのデータを中継して無線装置M9へ届ける。
この場合、無線装置M1は、各種の経路を介して無線装置M9との間で無線通信を行なうことができる。即ち、無線装置M1は、無線装置M4,M6,M8を介して無線装置M9との間で無線通信を行なうことができ、無線装置M3,M4,M6,M7を介して無線装置M9との間で無線通信を行なうこともできる。
無線装置M4,M6,M8を介して無線通信を行なう場合、ホップ数が“4”と相対的に少なく、無線装置M3,M4,M6,M7を介して無線通信を行なう場合、ホップ数が“5”と相対的に多い。
従って、無線装置M4,M6,M8を介して無線通信を行なう経路を選択すると、ホップ数が“4”と相対的に少なくなるので、一般的には、無線装置M1から無線装置M9への無線通信のスループットが高くなる。
しかし、無線装置M1と無線装置M4との間の受信信号強度が弱いとき、無線装置M1と無線装置M4との間の通信経路が切断される可能性が大きくなり、無線装置M1と無線装置M4との間の通信経路が切断されると、無線装置M1は、無線装置M9と無線通信を行なうための通信経路を確立し直すので、再送信するまでに時間を要する。
そこで、以下においては、各無線装置M1〜M12において送信元と送信先との間で常に好適な経路を用いて無線通信を行なう方法について説明する。
なお、送信元と送信先との間で経路を確立するプロトコルとしてAODVプロトコルを用いる。このAODVプロトコルは、オンデマンド型のルーティングプロトコルであり、ルートリクエストとルートリプライを使ってルートを探索し、ルートを確立するプロトコルである。
図2は、図1に示す無線装置M1の構成を示す概略ブロック図である。無線装置M1は、アンテナ11と、入力部12と、表示部13と、電子メールアプリケーション14と、通信制御部15とを含む。
アンテナ11は、無線通信空間を介して他の無線装置からデータを受信し、その受信したデータを通信制御部15へ出力するとともに、通信制御部15からのデータを無線通信空間を介して他の無線装置へ送信する。
入力部12は、無線装置M1の操作者が入力したメッセージおよびデータの宛先を受付け、その受付けたメッセージおよび宛先を電子メールアプリケーション14へ出力する。表示部13は、電子メールアプリケーション14からの制御に従ってメッセージを表示する。
電子メールアプリケーション14は、入力部12からのメッセージおよび宛先に基づいてデータを生成して通信制御部15へ出力する。
通信制御部15は、ARPA(Advanced Research Projects Agency)インターネット階層構造に従って、通信制御を行なう複数のモジュールからなる。即ち、通信制御部15は、無線インターフェースモジュール16と、MACモジュール17と、LLC(Logical Link Control)モジュール18と、IP(Internet Protocol)モジュール19と、ルーティングテーブル20と、TCPモジュール21と、UDPモジュール22と、SMTP(Simple Mail Transfer Protocol)モジュール23と、ルーティングデーモン24とからなる。
無線インターフェースモジュール16は、物理層に属し、所定の規定に従って送信信号または受信信号の変復調を行なうとともに、アンテナ11を介して信号を送受信する。そして、無線インターフェースモジュール16は、アンテナ11が他の無線装置から受信したHelloパケットの受信信号強度を検出し、その検出した受信信号強度をルーティングデーモン24へ出力する。
MACモジュール17は、MAC層に属し、MACプロトコルを実行して、以下に述べる各種の機能を実行する。
即ち、MACモジュール17は、ルーティングデーモン24から受けたHelloパケットを無線インターフェースモジュール16を介してブロードキャストする。
また、MACモジュール17は、データ(パケット)の再送制御等を行なう。
LLCモジュール18は、データリンク層に属し、LLCプロトコルを実行して隣接する無線装置との間でリンクの接続および解放を行なう。
IPモジュール19は、インターネット層に属し、IPパケットを生成する。IPパケットは、IPヘッダと、上位のプロトコルのパケットを格納するためのIPデータ部とからなる。そして、IPモジュール19は、TCPモジュール21からデータを受けると、その受けたデータをIPデータ部に格納してIPパケットを生成する。
そうすると、IPモジュール19は、オンデマンド型のルーティングプロトコルであるAODVプロトコルに従ってルーティングテーブル20を検索し、生成したIPパケットを送信するための経路を決定する。そして、IPモジュール19は、IPパケットをLLCモジュール18へ送信し、決定した経路に沿ってIPパケットを送信先へ送信する。
ルーティングテーブル20は、インターネット層に属し、後述するように、各送信先アドレスに対応付けて経路情報を格納する。
TCPモジュール21は、トランスポート層に属し、TCPパケットを生成する。TCPパケットは、TCPヘッダと、上位のプロトコルのデータを格納するためのTCPデータ部とからなる。そして、TCPモジュール21は、生成したTCPパケットをIPモジュール19へ送信する。
UDPモジュール22は、トランスポート層に属し、ルーティングデーモン24によって作成されたUpdateパケットをブロードキャストし、他の無線装置からブロードキャストされたUpdateパケットを受信してルーティングデーモン24へ出力する。
SMTPモジュール23は、プロセス/アプリケーション層に属し、電子メールアプリケーション14から受け取ったデータに基づいて、全二重通信チャネルの確保およびメッセージの交換等を行なう。
ルーティングデーモン24は、プロセス/アプリケーション層に属し、他の通信制御モジュールの実行状態を監視するとともに、他の通信制御モジュールからのリクエストを処理する。
また、ルーティングデーモン24は、Helloパケットを他の無線装置から受信して取得した経路情報および無線インターフェースモジュール16から受けた受信信号強度に基づいて、後述する方法によって最適な経路を算出してインターネット層にルーティングテーブル20を動的に作成する。
更に、ルーティングデーモン24は、無線ネットワークシステム10における経路情報を他の無線装置へ送信するとき、隣接する無線装置に関する情報等の各種のメッセージを含むHelloパケットを作成し、その作成したHelloパケットをMACモジュール17へ出力する。
更に、ルーティングデーモン24は、後述するように、他の無線装置から受信したHelloパケットに含まれる経路情報に基づいて、ルーティングテーブル20に格納された経路を好適な経路に更新するとともに、ルーティングテーブル20中に代替経路を確立する。
なお、図1に示す無線装置M2〜M12の各々も、図2に示す無線装置M1の構成と同じ構成からなる。
図3は、IPヘッダの構成図である。IPヘッダは、バージョン、ヘッダ長、サービスタイプ、パケット長、識別番号、フラグ、フラグメントオフセット、生存時間、プロトコル、ヘッダチェックサム、送信元IPアドレス、送信先IPアドレス、およびオプションからなる。
図4は、TCPヘッダの構成図である。TCPヘッダは、送信元ポート番号、送信先ポート番号、シーケンス番号、確認応答(ACK)番号、データオフセット、予約、フラグ、ウィンドサイズ、ヘッダチェックサムおよびアージェントポインタからなる。
送信元ポート番号は、送信元の無線装置で複数のアプリケーションが動作しているときに、TCPパケットを出力したアプリケーションを特定する番号である。また、送信先ポート番号は、送信先の無線装置で複数のアプリケーションが動作しているときに、TCPパケットを届けるアプリケーションを特定する番号である。
TCP通信は、エンド・ツー・エンドのコネクション型通信プロトコルである。TCP通信のコネクション接続を要求する無線装置(以下、「TCP通信接続要求装置」という。)のTCPモジュール21は、コネクションの確立時に、TCPヘッダ内のCode BitにSYN(Synchronize Flag)を設定したコネクションの接続要求を示す第1パケットをTCP通信のコネクション接続を受理する端末(以下、「TCP通信接続受理装置」という。)のTCPモジュール21へ送信する。これを受けて、TCP通信接続受理装置のTCPモジュール21は、TCPヘッダ内のCode BitにSYNおよびACK(確認応答)を設定したコネクションの接続要求受理および接続完了を示す第2パケットをTCP通信接続要求装置のTCPモジュール21へ送信する。更に、これを受けて、TCP通信接続要求装置のTCPモジュール21は、TCPヘッダ内のCode BitをACK(確認応答)に設定したコネクションの接続完了を示す第3パケットをTCP通信接続受理装置のTCPモジュール21へ送信する。
コネクションの切断要求は、TCP通信要求装置およびTCP通信受理装置のいずれの側からでも行なうことができる。TCP通信のコネクション切断を要求する無線装置(以下、「TCP通信切断要求装置」という。)のTCPモジュール21は、コネクションの切断時に、TCPヘッダ内のCode BitをFIN(Finish Flag)に設定したコネクションの切断要求を示す第1パケットをTCP通信のコネクション切断を受理する無線装置(以下、「TCP通信切断受理装置」という。)へ送信する。これを受けて、TCP通信切断受理装置のTCPモジュール21は、TCPヘッダ内のCode BitをACK(確認応答)に設定したコネクションの切断要求受理を示す第2パケットと、TCPヘッダ内のCode BitをFINに設定したコネクションの切断完了を示す第3パケットをTCP通信切断要求装置のTCPモジュール21へ送信する。更に、これを受けて、TCP通信切断要求装置のTCPモジュール21は、TCPヘッダ内のCode BitをACK(確認応答)に設定したコネクションの切断完了を示す第4パケットをTCP通信切断受理装置のTCPモジュール21へ送信する。
図5は、Helloメッセージの構成図である。HelloメッセージHLMは、ヘッダHEDと、経路情報RTIFとからなる。ヘッダHEDは、送信先(dest)と、送信先シーケンス番号(dest_seq)とからなる。
また、経路情報RTIFは、送信先(dest)と、送信先シーケンス番号(dest_seq)と、隣接する無線装置(next)と、ホップ数(hops)と、メトリック(metric)と、フラグ(flag)と、ルートアップデートエントリ(route_update_entries)とからなる。
ヘッダHEDの送信先(dest=)は、HelloメッセージHLMを受信した無線装置がパケットを送信すべき無線装置を表し、ヘッダHEDの送信先シーケンス番号(dest_seq)は、HelloメッセージHLMを受信した無線装置がHelloメッセージHLMを送信した無線装置へ行なう無線通信のシーケンス番号を表す。
経路情報RTIFの送信先(dest)は、送信先の無線装置のIPアドレスを表す。経路情報RTIFの送信先シーケンス番号は、送信先に対する経路情報が生成された順番を表す。従って、送信先シーケンス番号が大きい経路は、相対的に新しい経路であることを表す。
経路情報RTIFの隣接する無線装置(next)は、次にホップする無線装置のIPアドレスを表す。経路情報RTIFのホップ数(hops)は、当該無線装置から送信先の無線装置までの間において、隣接する2つの無線装置間で行なわれる無線通信の回数を表す。
経路情報RTIFのメトリック(metric)は、無線通信の安定度合を表し、受信信号強度に応じて決定される数値が格納される。そして、メトリックは、受信信号強度が相対的に弱いとき、相対的に大きい数値が格納され、受信信号強度が相対的に強いとき、相対的に小さい数値が格納される。受信信号強度をメトリックへ変換する方法については、後述する。
経路情報RTIFのフラグ(flag)は、ルーティングテーブル20に格納された各経路情報によって表される各経路が送信元と送信先との間の無線通信に用いられている経路であるか代替経路であるかを表す。従って、フラグには、送信元と送信先との間の無線通信に用いられている経路であることを示す“FR”、または代替経路であることを示す“AR”が格納される。
経路情報RTIFのルートアップデートエントリ(route_update_entries=1)は、HelloメッセージHLMに含まれる経路情報の数を表す。
図6は、図2に示すルーティングテーブル20の構成図である。ルーティングテーブル20は、送信先アドレス(dest)と、送信先シーケンス番号(dest_seqと、隣接する無線装置のアドレス(NextHopアドレス)と、ホップ数(hops)と、メトリック(metric)と、フラグ(flag)と、トリガータイム(trigger_time)とからなる。送信先アドレス(dest)、送信先シーケンス番号(dest_seq)、隣接する無線装置のアドレス(NextHopアドレス)、ホップ数(hops)、メトリック(metric)、フラグ(flag)およびトリガータイム(trigger_time)は、相互に対応付けられている。
そして、ルーティングテーブル20の送信先アドレス(dest)、送信先シーケンス番号(dest_seq)、隣接する無線装置のアドレス(NextHopアドレス)、ホップ数(hops)、メトリック(metric)およびフラグ(flag)は、それぞれ、HelloメッセージHLMの送信先(dest)、送信先シーケンス番号(dest_seq)、隣接する無線装置(next)、ホップ数(hops)、メトリック(metric)およびフラグ(flag)と同じである。
ルーティングテーブル20のトリガータイムは、Helloパケットを受信してから好適な代替経路を検出するまでの時間が格納される。
他の無線装置から受信した受信信号の受信信号強度をメトリックに変換する方法について説明する。表1は、信号強度とメトリック値との関係を示す。
信号強度が−60dBよりも強いとき、メトリック値は、“1”となり、信号強度が−60dB〜−65dBまでの範囲であるとき、メトリック値は、“2”となり、信号強度が−65dB〜−70dBまでの範囲であるとき、メトリック値は、“4”となり、信号強度が−70dB〜−75dBまでの範囲であるとき、メトリック値は、“8”となり、信号強度が−75dBよりも弱いとき、メトリック値は、“16”となる。
このように、受信信号強度RSSIが相対的に強いとき、メトリック値は、相対的に小さくなり、受信信号強度RSSIが相対的に弱いとき、メトリック値は、相対的に大きくなる。
したがって、メトリック値が相対的に小さいことは、無線通信が相対的に安定であることに相当し、メトリック値が相対的に大きいことは、無線通信が相対的に不安定であることに相当する。
ルーティングデーモン24は、無線インターフェースモジュール16から受信信号強度を受けると、その受けた受信信号強度に対応するメトリック値を表1を参照して検出し、その検出したメトリック値を経路情報を送信した無線装置を介する経路のメトリックに加算してルーティングテーブル20を作成する。
AODVプロトコルに従ったルーティングテーブル20の作成について説明する。無線装置M1〜M12は、Helloパケットを受信する毎にルーティングテーブル20を作成する。
Helloパケットは、各無線装置M1〜M12の無線通信を行なっている無線装置が有する情報の配信を目的とする。このHelloパケットを受信することによって、各無線装置M1〜M12は、周辺の無線装置に関する情報を収集でき、自己の周辺にどのような無線装置が存在するのかを認識する。
そして、各無線装置M1〜M12は、他の無線装置からHelloパケットを受信したとき、Helloパケットの受信信号強度を検出し、その検出した受信信号強度を表1に従ってメトリック値に変換する。
各無線装置M1〜M12は、受信信号強度をメトリック値に変換すると、Helloパケットに含まれる無線装置のIPアドレスをルーティングテーブル20の送信先(dest)および隣接する無線装置(NextHopアドレス)に格納し、Helloパケットに含まれるホップ数(hops)に“1”を加算して加算結果をルーティングテーブル20のホップ数(hops)に格納し、変換したメトリック値をHelloパケットに含まれるメトリック(metric)に加算して加算結果をルーティングテーブル20のメトリック(metric)に格納してルーティングテーブル20を作成する。
無線装置M1〜M12の各々は、順次、上述した動作を繰り返すことにより、自己に隣接する隣接無線装置、その隣接無線装置に更に隣接する無線装置、・・・と、自己から1ホップ内、2ホップ内、3ホップ内、・・・の無線装置の存在を徐々に認識する。
そして、各無線装置M1〜M12は、自己の周囲に存在する各無線装置を送信先とする各最短路をメトリックに基づいて演算してルーティングテーブル20を最終的に作成する。
図7は、図1に示す無線ネットワークシステム10における無線通信の一態様を示す概念図である。また、図8は、ルーティングテーブル20の例を示す図である。
なお、図7において、2つの無線装置間に表示された数値は、受信信号強度RSSIを表1に従って変換したメトリック値を表す。また、点線は、無線通信が行なわれていないことを表し、実線は、無線通信が行なわれていることを表す。
まず、無線装置M1と無線装置M9との間で通信経路を確立する動作について説明する。送信元である無線装置M1は、送信先である無線装置M9との間で通信経路を確立する場合、ルート要求パケットRREQを生成してブロードキャストする。
このルート要求パケットRREQは、送信元Senderと、タイプTypeと、送信先アドレスDSTと、送信先シーケンス番号DSTSeqと、送信元IPアドレスSrcと、送信元シーケンス番号SrcSeqと、ルート要求パケット識別子RREQidと、ホップ数Hopsと、メトリック(Metric)とからなる。
送信元Senderは、ルート要求パケットRREQを送信する無線装置のアドレスであり、ルート要求パケットRREQを受信する各無線装置が送信先から送信元への逆通信経路において次に送信すべき無線装置であると認識するアドレスである。そして、この送信元Senderは、ルート要求パケットRREQを中継する無線装置によって変えられる。
タイプは、ルート要求パケットRREQがルートの確立を要求するパケットであることを示す“RREQ”からなり、この“RREQ”は、変更されない。
送信先アドレスDSTは、確立しようとしている通信経路における最終的な送信先である無線装置のIPアドレスである。そして、送信先IPアドレスは、不変である。
送信先シーケンス番号DSTSeqは、最終的な送信先へ向かう複数の経路のうち、ルート要求パケットRREQの生成元によって受信された最新のシーケンス番号である。
送信元IPアドレスSrcは、ルート要求パケットRREQの生成元のIPアドレスである。従って、この送信元IPアドレスは、不変である。
送信元シーケンス番号SrcSeqは、ルート要求パケットRREQの生成元へ向かう経路において使用されるべき現在のシーケンス番号である。そして、この送信元シーケンス番号は、不変である。
ルート要求パケット識別子RREQidは、順次生成される複数のルート要求パケットRREQの各々を特定するシーケンス番号である。そして、このルート要求パケット識別子RREQidは、一度付与されると、変更されない。
ホップ数Hopsは、ルート要求パケットRREQの生成元からルート要求パケットRREQを中継する各無線装置までのホップ数を表す。従って、このホップ数は、ルート要求パケットRREQを中継する無線装置によって“1”ずつインクリメントされる。
メトリック(Metric)は、送信元から各無線装置(ルート要求パケットRREQを中継する中継器およびルート要求パケットRREQの送信先の無線装置)までのメトリック値の総和からなる。
従って、無線装置M1のルーティングデーモン24は、[Sender1/RREQ/M9/28/Src1/24/3/0/0]からなるルート要求パケットRREQを生成してブロードキャストする。
そして、無線装置M1の隣の無線装置M3,M4,M5は、無線装置M1からのルート要求パケットRREQを受信し、無線装置M3,M4,M5のルーティングデーモン24は、ルート要求パケットRREQを無線装置M1から最初に受信したか否かを判定する。
ルート要求パケットRREQを最初に受信したものである場合、無線装置M4のルーティングデーモン24は、ルート要求パケットRREQ中の送信元Sender1を、無線装置M4が送信元であることを示す送信元Sender4に代え、無線装置M1から無線装置M4までの経路数であるホップ数に“1”を加算するとともに、メトリックに“3”を加算してルート要求パケットRREQ=[Sender4/RREQ/M9/28/Src1/24/3/1/3]を生成し、その生成したルート要求パケットRREQ=[Sender4/RREQ/M9/28/Src1/24/3/1/3]をUDPモジュール22によってブロードキャストする。
また、無線装置M4のルーティングデーモン24は、送信元Sender1に基づいて、無線装置M9から無線装置M1への逆通信経路において無線装置M4が次に送信すべき無線装置が無線装置M1であると認識する。
無線装置M3のルーティングデーモン24は、ルート要求パケットRREQ中の送信元Sender1を、無線装置M3が送信元であることを示す送信元Sender3に代え、無線装置M1から無線装置M3までの経路数であるホップ数に“1”を加算するとともに、メトリックに“2”を加算してルート要求パケットRREQ=[Sender3/RREQ/M9/28/Src1/24/3/1/2]を生成し、その生成したルート要求パケットRREQ=[Sender3/RREQ/M9/28/Src1/24/3/1/2]をUDPモジュール22によってブロードキャストする。
また、無線装置M3のルーティングデーモン24は、送信元Sender1に基づいて、無線装置M9から無線装置M1への逆通信経路において無線装置M3が次に送信すべき無線装置が無線装置M1であると認識する。
無線装置M5も、無線装置M3,M4と同様にしてルート要求パケットRREQを中継する。
このように、無線装置M3,M4,M5は、ルート要求パケットRREQを中継する。
その後、無線装置M6は、ルート要求パケットRREQ=[Sender4/RREQ/M9/28/Src1/24/3/1/3]を無線装置M4から受信し、その受信したルート要求パケットRREQ=[Sender4/RREQ/M9/28/Src1/24/3/1/3]をルート要求パケットRREQ=[Sender6/RREQ/M9/28/Src1/24/3/2/6]に変えてブロードキャストする。
また、無線装置M8は、ルート要求パケットRREQ=[Sender6/RREQ/M9/28/Src1/24/3/2/6]を無線装置M6から受信し、その受信したルート要求パケットRREQ=[Sender6/RREQ/M9/28/Src1/24/3/2/6]をルート要求パケットRREQ=[Sender8/RREQ/M9/28/Src1/24/3/3/9]に変えてブロードキャストする。
そして、送信先である無線装置M9は、ルート要求パケットRREQ=[Sender8/RREQ/M9/28/Src1/24/3/3/9]を無線装置M8から受信する。
そうすると、無線装置M9のルーティングデーモン24は、ルート要求パケットRREQに含まれる送信先アドレス=M9に基づいて自己が送信先であることを検知し、ルート返答パケットRREPを生成する。
この場合、ルート返答パケットRREPは、送信元Senderと、タイプTypeと、送信先アドレスDSTと、送信先シーケンス番号DSTSeqと、ホップ数Hopsと、メトリックMetricとからなる。
送信元Senderは、ルート返答パケットRREPを送信する無線装置のアドレスである。そして、この送信元Senderは、ルート要求パケットRREPを中継する無線装置によって変えられる。
タイプは、ルート返答パケットRREPがルート要求パケットRREQに対する返答であることを示す“RREP”からなり、この“RREP”は、変更されない。
送信先アドレスDSTおよび送信先シーケンス番号DSTSeqは、それぞれ、ルート要求パケットRREQに格納された送信先アドレスDSTおよび送信先シーケンス番号DSTSeqである。
ホップ数Hopsは、ルート返答パケットRREPの生成元からルート返答パケットRREPを中継する各無線装置までのホップ数を表す。従って、このホップ数は、ルート返答パケットRREPを中継する無線装置によって“1”ずつインクリメントされる。
メトリック(Metric)は、ルート返答パケットRREPの送信元から各無線装置(ルート返答パケットRREPを中継する中継器およびルート返答パケットRREPの送信先の無線装置(=無線装置M1))までのメトリック値の総和からなる。
従って、無線装置M9のルーティングデーモン24は、[Sender9/RREP/M9/28/0/0]からなるルート返答パケットRREPを生成し、その生成したルート返答パケットRREP=[Sender9/RREP/M9/28/0/0]をルート要求パケットRREQを受信した経路に沿って送信する。即ち、無線装置M9のルーティングデーモン24は、ルート要求パケットRREQを無線装置M8から受信したので、ルート返答パケットRREPをUDPモジュール22によって無線装置M8へ送信する。
無線装置M8のルーティングデーモン24は、無線装置M9からルート返答パケットRREP=[Sender9/RREP/M9/28/0/0]を受信し、その受信したルート返答パケットRREP=[Sender9/RREP/M9/28/0/0]の送信元Sender9を無線装置M8を示す送信元Sender8に代え、無線装置M8までの経路数であるホップ数に“1”を加算するとともに、メトリックに“3”を加算してルート返答パケットRREP=[Sender8/RREP/M9/28/1/3]を生成し、その生成したルート返答パケットRREP=[Sender8/RREP/M9/28/1/3]をUDPモジュール22によって無線装置M6へ送信する。
そうすると、無線装置M6のルーティングデーモン24は、ルート返答パケットRREP=[Sender8/RREP/M9/28/1/3]を受信し、無線装置M8と同様にして、ルート返答パケットRREP=[Sender6/RREP/M9/28/2/6]を生成し、その生成したルート返答パケットRREP=[Sender6/RREP/M9/28/2/6]をUDPモジュール22によって無線装置M4へ送信する。
そして、無線装置M4のルーティングデーモン24は、ルート返答パケットRREP=[Sender6/RREP/M9/28/2/6]を受信し、その受信したルート返答パケットRREP=[Sender6/RREP/M9/28/2/6]をルート返答パケットRREP=[Src1/Sender4/RREP/M9/28/3/9]に変えて無線装置M1へ送信する。
なお、ルート要求パケットRREQが無線装置M1から無線装置M9へ送信されることによって無線装置M1→無線装置M4→無線装置M6→無線装置M8→無線装置M9の経路が確立されているので、各無線装置M4,M6,M8は、ルート要求パケットRREQを受信した経路に沿ってルート返答パケットRREPを無線装置M1(送信元)へ送信できる。
そして、送信元である無線装置M1のルーティングデーモン24は、送信先である無線装置M9からのルート返答パケットRREPを受信すると、データパケットを生成して送信先の無線装置M9へ送信する。これによって、無線装置M1→無線装置M4→無線装置M6→無線装置M8→無線装置M9からなる通信経路が活性化され、ルーティングテーブル20内のフラグflgが“FR”に変更される。即ち、無線装置M1→無線装置M4→無線装置M6→無線装置M8→無線装置M9からなるアドホックネットワークが自律的に構成される。
そして、無線装置M1,M4,M6,M8は、ルート要求パケットRREQおよびルート返答パケットRREPの送受信を通して図8の(a)〜(d)に示すルーティングテーブル20A,20B,20C,20Dをそれぞれ作成する。
無線装置M1と無線装置M9との間で通信経路が確立された後、無線通信に用いられている経路(=無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)上の各無線装置(無線装置M1,M4,M6,M8,M9のいずれか)は、定期的にHelloパケットを生成してブロードキャストする。
また、無線通信に用いられている経路(=無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)上の無線装置(無線装置M1,M4,M6,M8,M9のいずれか)からHelloパケットを受信した無線装置(無線装置M5等)は、受信したHelloパケットに含まれる経路情報に基づいて、自己のルーティングテーブル20を更新し、好適なルートを見出したときは、その更新したルーティングテーブル20に格納された経路情報を含むHelloパケットを生成してブロードキャストする。
図9は、ルーティングテーブルおよびHelloメッセージの例を示す図である。図9の(a)は、図7に示す無線装置M6がブロードキャストするHelloメッセージHLM1を表し、図9の(b),(d)は、図7に示す無線装置M5が保持するルーティングテーブル20E,20Fを表し、図9の(c)は、図7に示す無線装置M1がブロードキャストするHelloメッセージHLM2を表し、図9の(e)は、図7に示す無線装置M5がブロードキャストするHelloメッセージHLM3を表し、図9の(f)は、図7に示す無線装置M1が保持するルーティングテーブル20Gを表す。
例えば、無線通信に用いられている経路(=無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)上の無線装置M6は、HelloメッセージHLM1を作成し、その作成したHelloメッセージHLM1をHelloパケットに格納してブロードキャストする。
HelloメッセージHLM1は、送信先(dest=M9)と、送信先シーケンス番号(dest_seq=28)と、隣接する無線装置(next=M8)と、ホップ数(hops=2)と、メトリック(metric=6)と、フラグ(flag=FR)と、ルートアップデートエントリ(route_update_entries=1)と、送信先(dest=M6)と、送信先シーケンス番号(dest_seq=24)とからなる。
HelloメッセージHLM1のうち、経路情報RTIFを構成する送信先(dest=M9)、送信先シーケンス番号(dest_seq=28)、隣接する無線装置(next=M8)、ホップ数(hops=2)、メトリック(metric=6)およびフラグ(flag=FR)は、無線装置M6が保持しているルーティングテーブル20C(図8の(c)参照)の送信先(dest=M9)、送信先シーケンス番号(dest_seq=28)、隣接する無線装置(next=M8)、ホップ数(hops=2)、メトリック(metric=6)およびフラグ(flag=FR)と同じである。
また、ルートアップデートエントリ(route_update_entries=1)は、HelloメッセージHLM1に含まれる経路情報の数が“1”であることを表す。
更に、送信先(dest=M6)は、HelloメッセージHLM1を受信した無線装置がパケットを送信すべき送信先が無線装置M6であることを表し、送信先シーケンス番号(dest_seq=24)は、HelloメッセージHLM1を受信した無線装置がHelloメッセージHLM1を送信した無線装置へ行なう無線通信のシーケンス番号が“24”であることを表す。
このように、無線通信に用いられている経路(=無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)上の無線装置M6は、無線通信に用いている経路の経路情報からなるHelloメッセージHLM1を生成してブロードキャストする。
無線通信を行なっている経路上の無線装置M1,M6に隣接する無線装置M5は、無線装置M6からブロードキャストされたHelloメッセージHLM1を受信する。そして、無線装置M5は、無線装置M6から受信したHelloメッセージHLM1に格納された経路情報が自己のルーティングテーブル(図示せず)に格納されていないとき、HelloメッセージHLM1に格納された経路情報によってルーティングテーブル20Eを作成する(図9の(b)参照)。
この場合、無線装置M5は、HelloメッセージHLM1に格納されたホップ数(hops=2)に“1”を加算した“3”をルーティングテーブル20Eのホップ数(hops)に格納し、代替経路であることを示す“AR”をフラグflagに格納し、HelloメッセージHLM1を受信したことを示すためにトリガータイム(trigger_time)に“0”を格納する。
また、無線通信を行なっている経路上の無線装置M1は、HelloメッセージHLM2を作成し、その作成したHelloメッセージHLM2をHelloパケットに格納してブロードキャストする。
HelloメッセージHLM2は、送信先(dest=M9)と、送信先シーケンス番号(dest_seq=28)と、隣接する無線装置(next=M4)と、ホップ数(hops=4)と、メトリック(metric=12)と、フラグ(flag=FR)と、ルートアップデートエントリ(route_update_entries=1)と、送信先(dest=M1)と、送信先シーケンス番号(dest_seq=24)とからなる。
HelloメッセージHLM2のうち、経路情報RTIFを構成する送信先(dest=M9)、送信先シーケンス番号(dest_seq=28)、隣接する無線装置(next=M4)、ホップ数(hops=4)、メトリック(metric=12)およびフラグ(flag=FR)は、無線装置M1が保持しているルーティングテーブル20A(図8の(a)参照)の送信先(dest=M9)、送信先シーケンス番号(dest_seq=28)、隣接する無線装置(next=M4)、ホップ数(hops=4)、メトリック(metric=12)およびフラグ(flag=FR)と同じである。
また、ルートアップデートエントリ(route_update_entries)は、“1”であり、更に、HelloメッセージHLM2を受信した無線装置がパケットを送信すべき送信先(dest)は、無線装置M1であり、HelloメッセージHLM1を受信した無線装置がHelloメッセージHLM1を送信した無線装置へ行なう無線通信のシーケンス番号(dest_seq)は、“24”である。
無線装置M5は、無線装置M6からHelloメッセージHLM1を受信した後、無線装置M1からHelloメッセージHLM2を受信する。そして、無線装置M5は、受信したHelloメッセージHLM2に格納された経路情報の送信先(dest=M9)がルーティングテーブル20Eに保持されている経路情報の送信先(dest=M9)と同じであり、かつ、HelloメッセージHLM2のメトリック(metric=12)がルーティングテーブル20Eに格納されたメトリック(metric=8)に無線装置M1,M5間のメトリック(link_metric=2)を加算した結果(=10)よりも大きいので、ルーティングテーブル20Eに格納された経路情報のトリガータイム(trigger_time)を現在時刻(=20.5秒)に設定する。
これによって、ルーティングテーブル20Eは、ルーティングテーブル20Fに更新される(図9の(d)参照)。
HelloメッセージHLM2のメトリック(metric=12)がルーティングテーブル20Eに格納されたメトリック(metric=8)に無線装置M1,M5間のメトリック(link_metric=2)を加算した結果(=10)よりも大きい場合に、ルーティングテーブル20Eに格納された経路情報のトリガータイム(trigger_time)を現在時刻(=20.5秒)に設定するのは、無線装置M1が送信先の無線装置M9と無線通信を行なう場合、無線装置M4を介して無線装置M9と無線通信を行なうよりも無線装置M5を介して無線装置M9と無線通信を行なう方がメトリック(metric)が小さく、無線通信のスループットを向上できるので、無線装置M1が無線装置M5を介して無線装置M9と無線通信を行なう経路を代替経路ARとして確定するためである。
無線装置M5は、代替経路ARを確定すると、その確立した代替経路ARを示す経路情報を含むHelloメッセージHLM3を作成し、その作成したHelloメッセージHLM3をHelloパケットに格納してブロードキャストする。
HelloメッセージHLM3は、送信先(dest=M9)と、送信先シーケンス番号(dest_seq=28)と、隣接する無線装置(next=M6)と、ホップ数(hops=3)と、メトリック(metric=8)と、フラグ(flag=AR)と、ルートアップデートエントリ(route_update_entries=1)と、送信先(dest=M5)と、送信先シーケンス番号(dest_seq=16)とからなる。
HelloメッセージHLM3のうち、経路情報RTIFを構成する送信先(dest=M9)、送信先シーケンス番号(dest_seq=28)、隣接する無線装置(next=M6)、ホップ数(hops=3)、メトリック(metric=8)およびフラグ(flag=AR)は、無線装置M5が保持しているルーティングテーブル20F(図9の(d)参照)の送信先(dest=M9)、送信先シーケンス番号(dest_seq=28)、隣接する無線装置(next=M6)、ホップ数(hops=3)、メトリック(metric=8)およびフラグ(flag=AR)と同じである(図9の(e)参照)。
無線装置M1は、HelloメッセージHLM3を無線装置M5から受信する。そして、無線装置M1は、HelloメッセージHLM3に格納された経路情報の送信先(dest=M9)がルーティングテーブル20A(図8の(a)参照)に保持している経路情報の送信先(dest=M9)と同じであり、かつ、HelloメッセージHLM3に格納された経路情報のメトリック(metric=8)に無線装置M1,M5間のメトリック(link_metric=2)を加算した結果(=10)がルーティングテーブル20Aに格納されているメトリック(metric=12)よりも小さいので、ルーティングテーブル20Aに格納された経路情報をHelloメッセージHLM3に格納されている経路情報によって更新する。即ち、無線装置M1は、ルーティングテーブル20Aをルーティングテーブル20G(図9の(f)参照)に更新する。
このように、無線通信を行なっている経路(=無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)上の無線装置M1,M6および経路(=無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)に隣接する無線装置M5がHelloメッセージをブロードキャストすることによって、無線装置M5は、代替経路ARを確立でき、無線装置M1は、無線装置M9との間で行なう無線通信の経路を経路(=無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)よりも好適な経路(=無線装置M1−無線装置M5−無線装置M6−無線装置M8−無線装置M9)に更新することができる。
そして、無線装置M1は、経路(=無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)が切断されなくても、この経路の更新を行なうことができる。
即ち、無線装置M1は、経路(=無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)を用いて無線装置M9との間で無線通信を行ないながら、無線装置M5から受信したHelloメッセージHLM3に基づいて、経路(=無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)よりも好適な経路(=無線装置M1−無線装置M5−無線装置M6−無線装置M8−無線装置M9)を検出するとともに、経路(=無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)を好適な経路(=無線装置M1−無線装置M5−無線装置M6−無線装置M8−無線装置M9)に更新し、その更新した好適な経路(=無線装置M1−無線装置M5−無線装置M6−無線装置M8−無線装置M9)を用いて無線装置M9との間で無線通信を行なう。
図10は、ルーティングテーブルおよびHelloメッセージの他の例を示す図である。無線装置M5は、新たな無線通信を無線装置M10との間で開始する場合、ルーティングテーブル20H(図10の(a)参照)を保持している。
ルーティングテーブル20Hは、送信先(dest)が無線装置M9であり、送信先シーケンス番号(dest_seq)が“28”であり、隣接する無線装置(next)が無線装置M6であり、ホップ数(hops)が“3”であり、フラグ(flag)が“AR”であり、トリガータイム(trigger_time)が20.5秒である経路と、送信先(dest)が無線装置M10であり、送信先シーケンス番号(dest_seq)が“32”であり、隣接する無線装置(next)が無線装置M12であり、ホップ数(hops)が“2”であり、フラグ(flag)が“FR”であり、トリガータイム(trigger_time)が0秒である経路とからなる。
そして、無線装置M5は、新たな無線通信を行なっているとき、HelloメッセージHLM4を作成し、その作成したHelloメッセージHLM4をHelloパケットに格納してブロードキャストする。
HelloメッセージHLM4は、送信先(dest=M9,M10)と、送信先シーケンス番号(dest_seq=28,32)と、隣接する無線装置(next=M6,M12)と、ホップ数(hops=3,2)と、メトリック(metric=8,5)と、フラグ(flag=AR,FR)と、ルートアップデートエントリ(route_update_entries=2)と、送信先(dest=M5)と、送信先シーケンス番号(dest_seq=16)とからなる。
HelloメッセージHLM4のうち、経路情報RTIFを構成する送信先(dest=M9,M10)、送信先シーケンス番号(dest_seq=28,32)、隣接する無線装置(next=M6,M12)、ホップ数(hops=3,2)、メトリック(metric=8,5)およびフラグ(flag=AR,FR)は、無線装置M5が保持しているルーティングテーブル20H(図10の(a)参照)の送信先(dest=M9,M10)、送信先シーケンス番号(dest_seq=28,32)、隣接する無線装置(next=M6,M12)、ホップ数(hops=3,2)、メトリック(metric=8,5)およびフラグ(flag=AR,FR)と同じである(図10の(b)参照)。
このように、新たな無線通信を開始した無線装置M5は、自己が保持している経路情報をHelloメッセージHLM4としてブロードキャストする。
図11は、Helloメッセージを送信する動作を説明するためのフローチャートである。一連の動作が開始されると、各無線装置M1〜M12のルーティングデーモン24は、ルートアップデートエントリRUETRを“0”に設定し(ステップS1)、ルーティングテーブル20から経路rtの経路情報を抽出する(ステップS2)。
そして、ルーティングデーモン24は、経路情報からフラグ(flag)を抽出し(ステップS3)、その抽出したフラグ(flag)が無線通信に用いている経路FRを示すか否かを判定する(ステップS4)。
ステップS4において、フラグ(flag)が無線通信に用いている経路FRを示すと判定されたとき、一連の動作は、ステップS7へ移行する。
一方、ステップS4において、フラグ(flag)が無線通信に用いている経路FRを示さないと判定されたとき、即ち、ルーティングテーブル20に代替経路の経路情報が格納されていると判定されたとき、ルーティングデーモン24は、経路rtのトリガータイム(trigger_time)を読出し、現在時刻NOWからトリガータイム(trigger_time)を減算して保持時間HLDT=NOW−trigger_timeを演算する(ステップS5)。
トリガータイム(trigger_time)は、上述したように、Helloメッセージを受信してから代替経路を検知するまでの時間であるので(図9の(b),(d)参照)、現在時刻NOWからトリガータイム(trigger_time)を減算することは、検知された代替経路を各無線装置M1〜M12が保持している保持時間HLDTを演算することに相当する。
そして、各無線装置M1〜M12のルーティングデーモン24は、保持時間HLDTを演算すると、その演算した保持時間HLDTがしきい値TRIG_THよりも短いか否かを判定する(ステップS6)。ステップS6において、保持時間HLDTがしきい値TRIG_TH以上であると判定されたとき、一連の動作は、ステップS9へ移行する。
一方、ステップS6において、保持時間HLDTがしきい値TRIG_THよりも短いと判定されたとき、またはステップS4において、フラグ(flag)が無線通信に用いている経路FRを示すと判定されたとき、各無線装置M1〜M12のルーティングデーモン24は、経路rtの経路情報をHelloメッセージに追加し、ルートアップデータエントリRUETRを“1”だけインクリメントする(ステップS7)。
そして、各無線装置M1〜M12のルーティングデーモン24は、ルーティングテーブル20中に他の経路rtが存在するか否かを判定し(ステップS8)、他の経路rtが存在するとき、ルーティングテーブル20から次の経路rtの経路情報を抽出する(ステップS9)。なお、ステップS9は、ステップS6において、保持時間HLDTがしきい値TRIG_TH以上であると判定されたときにも実行される。
その後、ステップS8において、他の経路rtが存在しないと判定されるまで、上述したステップS3〜ステップS9が繰り返し実行される。
そして、ステップS8において、他の経路rtが存在しないと判定されると、各無線装置M1〜M12のルーティングデーモン24は、ルートアップデータエントリRUETRが零よりも大きいか否かを判定し(ステップS10)、ルートアップデータエントリRUETRが零であるとき、一連の動作は終了する。
一方、ステップS10において、ルートアップデータエントリRUETRが零よりも大きいと判定されると、各無線装置M1〜M12のルーティングデーモン24は、HelloメッセージをHelloパケットに格納してMACモジュール17へ送信し、MACモジュール17は、ルーティングデーモン24からのHelloパケットを無線インターフェースモジュール16およびアンテナ11を介して送信する(ステップS11)。
そして、一連の動作は、終了する。
このように、各無線装置M1〜M12のルーティングデーモン24は、ルーティングテーブル20に格納された経路のうち、無線通信に用いている経路FRをそのままHelloメッセージに格納し、保持時間HLDTがしきい値TRIG_THよりも短い代替経路ARだけをHelloメッセージに格納する(ステップS4〜ステップS7参照)。
即ち、各無線装置M1〜M12のルーティングデーモン24は、ルーティングテーブル20に格納された全ての経路情報をHelloメッセージに含めてブロードキャストするのではなく、保持時間HLDTがしきい値TRIG_THよりも短い代替経路ARと、無線通信に用いている経路FRとをHelloメッセージに含めてブロードキャストする。
従って、Helloメッセージを送受信するときの通信量を削減でき、無線ネットワークシステム10におけるスループットを向上できる。
図12は、Helloメッセージを受信したときの動作を説明するためのフローチャートである。一連の動作が開始されると、各無線装置M1〜M12の無線インターフェースモジュール16は、アンテナ11を介して他の無線装置からHelloメッセージを受信し、Helloメッセージを受信したときの受信信号強度RSSIを検出する。
そして、無線インターフェースモジュール16は、その検出した受信信号強度RSSIをルーティングデーモン24へ送信し、HelloメッセージをUDPモジュール22へ送信する。
UDPモジュール22は、無線インターフェースモジュール16からHelloメッセージを受信し、その受信したHelloメッセージをルーティングデーモン24へ送信する。
そうすると、ルーティングデーモン24は、無線インターフェースモジュール16から受信信号強度RSSIを受信し、UDPモジュール22からHelloメッセージを受信する(ステップS21)。
そして、各無線装置M1〜M12のルーティングデーモン24は、受信したHelloメッセージからルートアップデートエントリRUETRを読出し(ステップS22)、その読出したルートアップデートエントリRUETRが零よりも大きいか否かを判定する(ステップS23)。
そして、ステップS23において、ルートアップデートエントリRUETRが零であると判定されたとき、一連の動作は、終了する。
一方、ステップS23において、ルートアップデートエントリRUETRが零よりも大きいと判定されたとき、各無線装置M1〜M12のルーティングデーモン24は、Helloメッセージから経路ruの経路情報を読出す(ステップS24)。
そして、各無線装置M1〜M12のルーティングデーモン24は、無線インターフェースモジュール16から受信した受信信号強度RSSIを表1に従ってメトリック値に変換してリンクメトリック(link_metric)を取得する。
また、各無線装置M1〜M12のルーティングデーモン24は、Helloメッセージを送信した無線装置(送信元src)を次に送信すべき無線装置nnextに設定する。
更に、各無線装置M1〜M12のルーティングデーモン24は、読出した経路情報からメトリック(metric)を抽出するとともに、その抽出したメトリック(metric)にリンクメトリック(link_metric)を加算し、その加算結果(=link_metric+metric)をメトリック(nmetric)として設定する(ステップS25)。
その後、各無線装置M1〜M12のルーティングデーモン24は、経路ruと送信先が同じである経路rtをルーティングテーブル20から探索し(ステップS26)、経路rtを検出したか否かを判定する(ステップS27)。
ステップS27において、経路rtを検出しなかったと判定されたとき、各無線装置M1〜M12のルーティングデーモン24は、経路ruのフラグが“FR”であるか否かを更に判定する(ステップS28)。そして、ステップS28において、経路ruのフラグが“FR”でないと判定されたとき、一連の動作は、ステップS34へ移行する。
一方、ステップS28において、経路ruのフラグが“FR”であると判定されたとき、各無線装置M1〜M12のルーティングデーモン24は、経路ruの経路情報をルーティングテーブル20に格納してルーティングテーブル20中に代替経路ARを確立し、その確立した代替経路ARのトリガータイム(trigger_time)を“0”に設定する(ステップS29)。そして、ステップS29の後、一連の動作は、ステップS34へ移行する。
一方、ステップS27において、経路rtを検出したと判定されたとき、各無線装置M1〜M12のルーティングデーモン24は、次の条件(A)〜(C)のいずれかが成立するかを更に判定する(ステップS30)。
(A)経路rtにおいて隣接する無線装置(next(rt))が無線装置nnext(=Helloメッセージの送信元src)に等しい
(B)経路ruの送信先シーケンス番号(dest_seq)が経路rtの送信先シーケンス番号(dest_seq)よりも大きい
(C)経路ruの送信先シーケンス番号(dest_seq)が経路rtの送信先シーケンス番号(dest_seq)と同じであり、かつ、メトリック(nmetric)が経路rtのメトリック(metric)よりも小さい
条件(A)は、各無線装置M1〜M12のルーティングテーブル20に格納されている経路rtにおいて隣接する無線装置(next(rt))がHelloメッセージの送信元srcであるか否かを判定するための条件である。即ち、条件(A)は、現在、行なわれている無線通信の経路rtにおいて送信先側において自己に隣接する無線装置からHelloメッセージを受信したか否かを判定するための条件である。
また、条件(B)は、Helloメッセージに格納された経路ruの経路情報がルーティングテーブル20に格納された経路rtの経路情報よりも新しいか否かを判定するための条件である。
更に、条件(C)は、Helloメッセージに格納された経路ruの経路情報がルーティングテーブル20に格納された経路rtの経路情報と同じ新しさであり、かつ、経路ruが経路rtよりも安定しているか否かを判定するための条件である。
ステップS30において、上述した3つの条件(A),(B),(C)のいずれかが成立すると判定されたとき、各無線装置M1〜M12のルーティングデーモン24は、経路ruの経路情報によってルーティングテーブル20中の経路rtの経路情報を更新する(ステップS31)。
上述した3つの条件(A),(B),(C)のうち、いずれかが成立するときは、Helloメッセージに格納された経路がルーティングテーブル20に格納された経路よりも好適であるので、経路ruの経路情報によってルーティングテーブル20中の経路rtの経路情報を更新することにしたものである。従って、条件(A),(B),(C)のうちのいずれかが成立すると判定することは、経路rtよりも好適な経路ruを検出することに相当する。
なお、ステップS31において、経路ruによって更新される経路rtは、送信元と送信先との間の無線通信に用いられている経路、または送信元と送信先との間で無線通信を行なっている無線装置(=無線装置M1,M4,M6,M8,M9)に隣接する無線装置(=無線装置M3,M5,M7,M10)のルーティングテーブル20に保持された経路である。
即ち、ステップS31が現在の通信経路(無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)上の無線装置M1,M4,M6,M8,M9のルーティングデーモン24によって実行される場合、経路rtは、送信元と送信先との間の無線通信に用いられている経路であり、ステップS31が現在の通信経路(無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)外の無線装置(無線装置M5等)によって実行される場合、経路rtは、送信元と送信先との間で無線通信を行なっている無線装置に隣接する無線装置のルーティングテーブル20に保持された経路である。
そして、ステップS31の後、一連の動作は、ステップS34へ移行する。
一方、ステップS30において、上述した3つの条件(A),(B),(C)のいずれも成立しないと判定されたとき、各無線装置M1〜M12のルーティングデーモン24は、次の条件(D),(E)のいずれかが成立するか否かを更に判定する(ステップS32)。
(D)経路rtの送信先シーケンス番号(dest_seq(rt))が経路ruの送信先シーケンス番号(dest_seq(ru))よりも大きい
(E)経路rtの送信先シーケンス番号(dest_seq(rt))が経路ruの送信先シーケンス番号(dest_seq(ru))と同じであり、かつ、経路ruのメトリック(metric(ru))が経路rtのメトリック(metric(rt))にリンクメトリック(link_metric)を加算した加算結果よりも大きい
なお、メトリック(metric(rt))は、ステップS25におけるHelloメッセージ中のmetricである。
条件(D)は、ルーティングテーブル20に格納された経路rtの経路情報がHelloメッセージに格納された経路ruの経路情報よりも新しいか否かを判定するための条件である。
また、条件(E)は、ルーティングテーブル20に格納された経路rtの経路情報がHelloメッセージに格納された経路ruの経路情報と同じ新しさであり、かつ、経路rtが経路ruよりも安定しているか否かを判定するための条件である。
ステップS32において、上述した条件(D),(E)のいずれかが成立すると判定されたとき、各無線装置M1〜M12のルーティングデーモン24は、ルーティングテーブル20に格納された経路rtのトリガータイム(trigger_time)を現在時刻NOWに設定する(ステップS33)。これにより、ステップS29において、ルーティングテーブル20中に格納された代替経路ARが、送信先との無線通信に用いられている経路FRの代替経路として有効になる。つまり、ステップS29において、ルーティングテーブル20中に格納された代替経路ARが代替経路として好適になる。
上述した2つの条件(D),(E)のうち、いずれかが成立するときは、ルーティングテーブル20に格納された経路情報がHelloメッセージに格納された経路情報よりも好適であるので、代替経路ARを送信先との無線通信に用いられている経路FRの代替経路として設定することにしたものである。
そして、ステップS33の後、一連の動作は、ステップS34へ移行する。
ステップS32において、2つの条件(D),(E)のいずれも成立しないと判定されたとき、またはステップS28の“NO”の後、またはステップS29,S31,S33のいずれかの後、各無線装置M1〜M12のルーティングデーモン24は、Helloメッセージ中に他の経路ruが存在するか否かを判定する(ステップS34)。そして、Helloメッセージ中に他の経路ruが存在すると判定されたとき、各無線装置M1〜M12のルーティングデーモン24は、Helloメッセージから次の経路ruの経路情報を読出す(ステップS35)。
その後、一連の動作は、ステップS25へ移行し、ステップS34において、他の経路ruがHelloメッセージ中に存在しないと判定されるまで、上述したステップS25〜ステップS35が繰り返し実行される。
そして、ステップS34において、Helloメッセージ中に他の経路ruが存在しないと判定されると、一連の動作は終了する。
上述したように、各無線装置M1〜M12のルーティングデーモン24は、他の無線装置からHelloメッセージを受信すると、Helloメッセージに格納された経路ruの経路情報をルーティングテーブル20に格納された経路rtの経路情報と比較し、経路ruの経路情報がルーティングテーブル20に格納されていなければ、経路ruの経路情報によってルーティングテーブル20中に新しい経路ARを確立し(ステップS29参照)、経路ruが経路rtよりも好適であれば、経路ruの経路情報によって経路rtの経路情報を更新し(ステップS31参照)、更に、経路rtが経路ruよりも好適であれば、経路rtを、現在、無線通信に用いている経路FRに代わる代替経路ARとして有効にする(ステップS33参照)。
そして、ステップS31が実行されるのは、ステップS27において、経路rtが検出され、更に、ステップS30において、経路ruの方が経路rtよりも好適であると判定された場合であるので、ステップS31が実行されることにより、各無線装置M1〜M12のルーティングテーブル20に格納された経路rtは、好適な経路ruによって更新される。
また、ステップS29が実行されるのは、ステップS27において、経路ruと送信先が同じである経路rtが検出されず、かつ、ステップS28において、経路ruのフラグが“FR”である場合であるので、図12に示すフローチャートが送信元と送信先との間で無線通信を行なっていない無線装置によって実行される場合、その無線装置は、Helloメッセージを受信する毎に、自己が保持するルーティングテーブル20中の経路情報を経路ruの経路情報によって更新する。つまり、その無線装置は、送信元と送信先との間の無線通信に用いられている経路ruの経路情報を自己のルーティングテーブル20に格納する。無線通信を行なっていない無線装置は、通常、送信元と送信先との間の無線通信に用いられている経路ruと送信先が同じである経路rtをルーティングテーブル20中に保持しないからである。
そして、ステップS29において、Helloメッセージ中の経路ruの経路情報が、一旦、無線通信を行なっていない無線装置のルーティングテーブル20に格納された後に、無線通信を行なっていない無線装置が無線通信を行なっている無線装置から新たなHelloメッセージを受信し、ステップS32において、Helloメッセージ中の経路ruが自己のルーティングテーブル20に格納された経路rt(=前回、ステップS29において、自己のルーティングテーブル20に格納された経路ru)と送信先が同じであり、かつ、経路ruのメトリックが経路rtのメトリックよりも大きいと判定されたとき、無線通信を行なっていない無線装置は、ステップS33において、経路rtを経路ru(送信元と送信先との間の無線通信に用いられている経路)の代替経路として有効にする。
その後、無線通信を行なっていない無線装置は、図11に示すフローチャートのステップS4の“NO”→ステップS5→ステップS6の“YES”→ステップS7→ステップS8の“YES”→ステップS10の“YES”→ステップS11の経路を経て、経路ruの代替経路として有効にした経路rtをHelloメッセージに含めて送信する。
従って、無線通信を行なっていない無線装置は、送信元と送信先との間で無線通信を行なっている無線装置からHelloメッセージを受信する毎に、Helloメッセージ中の経路ruと送信先が同じである経路rtを保持するか否かを判定し(図12のステップS27参照)、経路ruと送信先が同じである経路rtを保持し、かつ、経路ruが送信元と送信先との間の無線通信に用いられている経路であるとき(図12のステップS27の“NO”→ステップS28の“YES”参照)、経路ruの経路情報を自己のルーティングテーブル20に格納する(ステップS29参照)。
そして、無線通信を行なっていない無線装置は、一旦、自己のルーティングテーブル20中に保持した経路rtがHelloメッセージに含まれる経路ruよりも好適である場合(図12のステップS32の“YES”参照)、経路rtを経路ruの代替経路として有効し(図12のステップS33参照)、経路rtの経路情報をHelloメッセージに含めて送信する(図11のステップS4の“NO”→ステップS5→ステップS6の“YES”→ステップS7→ステップS8の“YES”→ステップS10の“YES”→ステップS11参照)。
このように、無線通信を行なっていない無線装置は、自らHelloメッセージを送信せずに、自己が保持する経路rtが無線通信に用いられている経路ruよりも好適であると判定された場合に始めて経路rtの経路情報を含むHelloメッセージを送信する。
そうすると、無線通信を行なっている無線装置は、無線通信に用いられている経路ruよりも好適な経路rtを無線通信を行なっていない無線装置から受信でき、経路ruを経路rtに切換えて無線通信を行なうことができる。
その結果、無線通信を行なっている無線装置は、無線通信に用いられている経路ruを切断することなく、経路ruを好適な経路rtに切換えることができ、無線ネットワークシステム10の性能を向上できる。
更に、ステップS33が実行されるのは、ステップS27において、経路rtが検出され、更に、ステップS32において、経路rtの方が経路ruよりも好適であると判定された場合であるので、ステップS33が実行されることにより、各無線装置M1〜M12のルーティングテーブル20に格納された経路rtは、現在、無線通信に用いられている経路ruよりも好適であることが確認される。
従って、ステップS31,S33が実行されることにより、各無線装置M1〜M12のルーティングテーブル20は、好適な経路を格納する。
1個の経路ruの経路情報のみがHelloメッセージに格納されてブロードキャストされ、かつ、ステップS29が実行されて、Helloメッセージを受信したときの動作(即ち、図12に示すフローチャート)が終了した場合、Helloメッセージに格納された経路ruの経路情報によって確立された経路ARは、“0”であるトリガータイム(trigger_time)を有することになるが、ステップS29において確立された経路ARがHelloメッセージに格納されてブロードキャストされるか否かは、トリガータイム(trigger_time)=0を用いて演算された保持時間HLDTがしきい値TRIG_THよりも小さいか否かによって決定される。
従って、ステップS29において、経路ARが確立されてからHelloメッセージを送信するまでの時間がしきい値TRIG_TH以上であれば、経路ARは、Helloメッセージに格納されてブロードキャストされず、ステップS29において、経路ARが確立されてからHelloメッセージを送信するまでの時間がしきい値TRIG_THよりも短ければ、経路ARは、Helloメッセージに格納されてブロードキャストされる。
また、ステップS29において確立された経路ARは、新たなHelloメッセージが受信された時に、ステップS33において、トリガータイム(trigger_time)に現在時刻NOWが格納されれば、現在、無線通信に用いられている経路FRに代わる好適な経路となる。
このように、トリガータイム(trigger_time)を経路情報として導入することによって、他の無線装置から送信されるHelloメッセージに格納された経路ruの経路情報によって、ルーティングテーブル20中の経路rtを無線通信に用いられている経路に代わる代替経路として設定できるとともに、ルーティングテーブル20に格納された経路rtをHelloメッセージに格納してブロードキャストするか否かを判定できる。
上述したように、経路(=無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)を用いて送信元(=無線装置M1)と送信先(=無線装置M9)との間で無線通信が行なわれているときに、経路(=無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)上の無線装置M1,M6は、Helloメッセージを送受信し、送信元である無線装置M1は、現在、無線通信に用いられている経路(=無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)よりも好適な経路(=無線装置M1−無線装置M5−無線装置M6−無線装置M8−無線装置M9)を検出するとともに、経路(=無線装置M1−無線装置M4−無線装置M6−無線装置M8−無線装置M9)を好適な経路(=無線装置M1−無線装置M5−無線装置M6−無線装置M8−無線装置M9)に更新する。
そして、無線装置M1は、更新した好適な経路(=無線装置M1−無線装置M5−無線装置M6−無線装置M8−無線装置M9)に沿って無線装置M9との間で無線通信を行なう。
従って、この発明によれば、無線通信を行なっている無線装置は、送信元と送信先との間の無線通信に用いられている経路が切断されなくても、Helloメッセージに基づいて、現在、無線通信に用いられている経路よりも好適な経路を検出し、その検出した好適な経路によって、現在、無線通信に用いられている経路を更新するので、送信元と送信先との間の無線通信に用いられている経路が頻繁に切断されることがなくなり、従来のように、送信元と送信先との間の無線通信に用いられている経路が切断された場合に送信先との通信経路を確立し直すこともない。その結果、無線ネットワークシステム10の性能を向上できる。
なお、上記においては、受信信号強度RSSIを検出し、その検出した受信信号強度RSSIをメトリック値に変換してルーティングテーブル20のメトリック(mertic)に格納すると説明したが、この発明においては、これに限らず、フレームエラー率FER(Frame Error Ratio)を演算し、その演算したフレームエラー率FERをメトリック値に変換してルーティングテーブル20のメトリック(mertic)に格納するようにしてもよい。
この場合、フレームエラー率FERは、MACモジュール17によって演算され、MACモジュール17は、次の方法によってフレームエラー率FERを演算する。
図13は、フレームエラー率FERを演算する方法を説明するための概念図である。無線装置Aは、タイミングt1で通信要求パケットRTSを無線装置Bへ送信するとともに、通信要求パケットRTSの送信と同時に一定時間CTS_timerを設定し、かつ、通信回数TransmitCntを“1”だけインクリメントする。
そして、無線装置Bは、無線装置Aからの通信要求パケットRTSをタイミングt2で受信するとともに、通信要求パケットRTSに対する通信許可パケットCTSをタイミングt3で無線装置Aへ送信する。そうすると、無線装置Aは、無線装置Bからの通信許可パケットCTSをタイミングt4で受信する。
無線装置Aは、通信許可パケットCTSを無線装置Bから一定時間CTS_timer内に受信したとき、通信誤り数FailCntをカウントせず、無線装置Bからの通信許可パケットCTSを一定時間CTS_timer内に受信しなかったとき、通信誤り数FailCntを“1”だけインクリメントする。
無線装置Aは、通信許可パケットCTSを無線装置Bから一定時間CTS_timer内に受信したとき、タイミングt5でデータDATAを無線装置Bへ送信するとともに、データDATAの送信と同時に一定時間ACK_timerを設定し、かつ、通信回数TransmitCntを“1”だけインクリメントする。そして、無線装置Bは、無線装置AからのデータDATAをタイミングt6で受信するとともに、データDATAに対する確認応答パケットACKをタイミングt7で無線装置Aへ送信する。そうすると、無線装置Aは、無線装置Bからの確認応答パケットACKをタイミングt8で受信する。
無線装置Aは、確認応答パケットACKを無線装置Bから一定時間ACK_timer内に受信したとき、通信誤り数FailCntをカウントせず、無線装置Bからの確認応答パケットACKを一定時間ACK_timer内に受信しなかったとき、通信誤り数FailCntを“1”だけインクリメントする。
無線装置Aは、通信許可パケットCTSを無線装置Bから一定時間CTS_timer内に受信しないとき、再度、通信要求パケットRTSの送信から開始し、通信回数TransmitCntおよび通信誤り数FailCntをカウントする。
無線装置Aは、通信要求パケットRTSに対するCTSパケットの受信、およびデータDATAに対する確認応答パケットACKの受信を所定回数だけ繰り返し行ない、通信回数TransmitCntが所定回数に達すると、次式によりフレームエラー率FERを演算する。
FER=FailCnt/TransmitCnt・・・(1)
無線装置M1〜M12の各々において、MACモジュール17は、上述した動作によって通信回数TransmitCntおよび通信誤り数FailCntをカウントし、そのカウントした通信回数TransmitCntおよび通信誤り数FailCntを用いて式(1)によってフレームエラー率FERを演算する。
そして、MACモジュール17は、フレームエラー率FERを演算すると、その演算したフレームエラー率FERをルーティングデーモン24へ送信する。ルーティングデーモン24は、MACモジュール17から受信したフレームエラー率FERを表2に従ってメトリック値に変換し、ルーティングテーブル20のメトリック(metric)に格納する。
フレームエラー率FERが0.1よりも低いとき、メトリック値は、“1”となり、フレームエラー率FERが0.1≦FER<0.2の範囲であるとき、メトリック値は、“2”となり、フレームエラー率FERが0.2≦FER<0.3の範囲であるとき、メトリック値は、“3”となり、フレームエラー率FERが0.3≦FER<0.4の範囲であるとき、メトリック値は、“4”となり、フレームエラー率FERが0.4≦FER<0.5の範囲であるとき、メトリック値は、“5”となり、フレームエラー率FERが0.5以上であるとき、メトリック値は、“6”となる。
このように、フレームエラー率FERが相対的に低いとき、メトリック値は、相対的に小さくなり、フレームエラー率FERが相対的に高いとき、メトリック値は、相対的に大きくなる。
したがって、フレームエラー率FERに基づいてメトリック値を決定した場合においても、メトリック値が相対的に小さいことは、無線通信が相対的に安定であることに相当し、メトリック値が相対的に大きいことは、無線通信が相対的に不安定であることに相当する。
この発明においては、フレームエラー率FERに基づいてメトリック値を決定する場合、表2に代えて表3に従って、フレームエラー率FERに基づいてメトリック値を決定してもよい。
この場合、メトリック値は、フレームエラー率FERが直線的に高くなるに従って、メトリック値は、2の累乗によって大きくなる。即ち、フレームエラー率FERが直線的に高くなるに従って、メトリック値は、指数関数的に大きくなる。
このように、フレームエラー率FERが直線的に高くなるに従って経路安定指標としてのメトリック値を指数関数的に大きくすることによって(即ち、フレームエラー率FERが直線的に低くなるに従って経路安定指標としてのメトリック値を指数関数的に小さくすることによって)、安定度合がより大きい経路を容易に選択できる。
即ち、フレームエラー率FERが直線的に高くなるに従ってメトリック値を直線的に大きくした場合、フレームエラー率FERの違いによるメトリック値の差は小さくなる。そして、ルーティングテーブル20においては、無線装置M1から無線装置M9までの全体の経路におけるメトリックが格納されるので、フレームエラー率FERが変動しても値が大きく変化しないメトリック値を用いた場合には、送信元から送信先までの複数の経路に付与された複数のメトリックに大きな差が生じないことになる。
これに対し、フレームエラー率FERが直線的に高くなるに従ってメトリック値を指数関数的に大きくした場合、フレームエラー率FERの変化に対してメトリック値が大きく変化するので、メトリックも大きく変化することになり、送信元から送信先までの複数の経路に付与された複数のメトリックに大きな差が生じることになる。
したがって、この発明においては、フレームエラー率FERが直線的に高くなるに従ってメトリック値が指数関数的に大きくなるようにしたものである。
また、この発明においては、フレームエラー率FERに代えてパケットエラー率PER(Packet Error Ratio)、信号対ノイズ比SNR(Signal to Noise Ratio)、信号電力、ビット誤り率、搬送波信号対雑音比、および信号に対する干渉雑音を含む雑音の比のいずれかを用いてもよい。
パケットエラー率PERは、送受信されるパケットの総数に対するCRC(Cyclic Redundancy Check)エラーが生じたパケットの個数の比によって表される。従って、パケットエラー率PERは、MACモジュール17によって演算され、MACモジュール17によってルーティングデーモン24へ送信される。
また、信号対ノイズ比SNRは、信号強度に対するノイズ強度の比によって表される。従って、信号対ノイズ比SNRは、無線インターフェースモジュール16によって演算され、無線インターフェースモジュール16によってルーティングデーモン24へ送信される。
更に、信号電力は、受信した信号の電力を表す。従って、信号電力は、無線インターフェースモジュール16によって検出され、無線インターフェースモジュール16によってルーティングデーモン24へ送信される。
更に、ビット誤り率は、復調したビットの誤り率を表す。従って、ビット誤り率は、無線インターフェースモジュール16によって検出され、無線インターフェースモジュール16によってルーティングデーモン24へ送信される。
更に、搬送波信号対雑音比は、搬送波信号に対する雑音の比を表す。従って、搬送波信号対雑音比は、無線インターフェースモジュール16によって検出され、無線インターフェースモジュール16によってルーティングデーモン24へ送信される。
更に、信号に対する干渉雑音を含む雑音の比は、[干渉雑音を含む雑音]/信号強度を表す。従って、信号に対する干渉雑音を含む雑音の比は、無線インターフェースモジュール16によって検出され、無線インターフェースモジュール16によってルーティングデーモン24へ送信される。
そして、パケットエラー率PER、信号対ノイズ比SNR、信号電力、ビット誤り率、搬送波信号対雑音比、および信号に対する干渉雑音を含む雑音の比の各々は、表2または表3に従ってメトリック値に変換される。
この発明においては、ルーティングテーブル20に格納された経路rtよりも好適な経路ruを検出するルーティングデーモン24は、「経路検出手段」を構成する。この場合、経路rtは、送信元と送信先との間の無線通信に用いられている経路、または送信元と送信先との間の無線通信を行なっている無線装置に隣接する無線装置のルーティングテーブル20に保持された経路である。
また、Helloメッセージを他の無線装置と送受信する無線インターフェースモジュール16、UDPモジュール22およびルーティングデーモン24は、「送受信手段」を構成する。
更に、Helloメッセージは、「経路メッセージ」を構成する。
更に、ルーティングテーブル20は、「経路情報保持手段」を構成する。
更に、ルーティングテーブル20に保持された経路rtをHelloメッセージに含まれる経路ruによって更新するルーティングデーモン24は、「経路情報更新手段」を構成する。
更に、Helloメッセージに含まれる経路ruをルーティングテーブル20に保持された経路rtと比較するルーティングデーモン24は、「比較手段」を構成する。
更に、上述した条件(A),(B),(C)のいずれかが成立すると判定するルーティングデーモン24は、「検出手段」を構成する。
更に、Helloメッセージを送信するルーティングデーモン24、MACモジュール17および無線インターフェースモジュール16は、「送信手段」を構成する。
更に、ルーティングテーブル20に経路情報を格納するルーティングデーモン24は、「経路情報格納手段」を構成する。
更に、現在時刻NOWおよびトリガータイム(trigger_time)に基づいて保持時間HLDTを演算するルーティングデーモン24は、「演算手段」を構成する。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
M1〜M12 無線装置、10 無線ネットワークシステム、11 アンテナ、12 入力部、13 表示部、14 電子メールアプリケーション、15 通信制御部、16 無線インターフェースモジュール、17 MACモジュール、18 LLCモジュール、19 IPモジュール、20,20A,20B,20C,20D,20E,20E,20F,20G,20H ルーティングテーブル、21 TCPモジュール、22 UDPモジュール、23 SMTPモジュール、24 ルーティングデーモン、HLM1〜HLM4 Helloメッセージ。