本発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。
図1は、この発明の実施の形態による無線装置を用いた無線ネットワークシステムの概略図である。無線ネットワークシステム10は、無線装置0〜9を備える。無線装置0〜9は、無線通信空間に配置され、自律的にネットワークを構成している。アンテナA0〜A9は、それぞれ、無線装置0〜9に装着される。
例えば、無線装置0から無線装置8へデータを送信する場合、無線装置1〜7,9は、無線装置0からのデータを中継して無線装置8へ届ける。
この場合、無線装置0は、各種の経路を介して無線装置8との間で無線通信を行なうことができる。即ち、無線装置0は、無線装置2,5を介して無線装置8との間で無線通信を行なうことができ、無線装置3,6,9を介して無線装置8との間で無線通信を行なうこともでき、無線装置1,2,6,9を介して無線装置8との間で無線通信を行なうこともできる。
無線装置2,5を介して無線通信を行なう場合、ホップ数が”3”と最も少なく、無線装置3,6,9を介して無線通信を行なう場合、ホップ数が”4”であり、無線装置1,2,6,9を介して無線通信を行なう場合、ホップ数が”5”と最も多い。
従って、無線装置2,5を介して無線通信を行なう経路を選択すると、ホップ数が”3”と最も少なくなる。
しかし、無線装置0−無線装置2−無線装置5−無線装置8の経路によって無線装置0と無線装置8との間で無線通信を行なっていても、新たな無線装置が無線ネットワークシステム10に追加され、無線装置0〜9におけるルーティングテーブルが再計算されると、無線装置0−無線装置2−無線装置5−無線装置8の経路よりもホップ数が少ない経路によって無線装置0と無線装置8との間で無線通信が行なわれる。即ち、経路の切換えが生じる。このような経路の切換えが頻繁に生じると、無線ネットワークシステム10が安定しない。
また、ホップ数のより少ない経路を選択して無線通信を行なうと、無線通信が1つの経路に集中し、その1つの経路の通信負荷が大きくなる。その結果、無線ネットワークシステム10の全体においては、通信負荷が相対的に大きい経路と通信負荷が相対的に小さい経路とが存在し、無線ネットワークシステム10の全体において通信負荷が偏在する。
そこで、以下においては、無線ネットワークシステム10を安定化させる方法について説明する。また、その安定化させた無線ネットワークシステム10において通信負荷を分散させる方法について説明する。
なお、送信元と送信先との間で通信経路を確立するプロトコルとしてOLSRプロトコルを基本として用いる。このOLSRプロトコルは、テーブル駆動型のルーティングプロトコルであり、HelloメッセージおよびTC(Topology Control)メッセージを用いて経路情報を交換し、ルーティングテーブルを作成するプロトコルである。
図2は、図1に示す無線装置0の構成を示す概略ブロック図である。無線装置0は、アンテナ11と、入力部12と、出力部13と、ユーザアプリケーション14と、通信制御部15とを含む。
アンテナ11は、図1に示すアンテナA0〜A9の各々を構成する。そして、アンテナ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と、SMTP(Simple Mail Transfer Protocol)モジュール24と、ルーティングデーモン25とからなる。
無線インターフェースモジュール16は、物理層に属し、所定の規定に従って送信信号または受信信号の変復調を行なうとともに、アンテナ11を介して信号を送受信する。そして、無線インターフェースモジュール16は、アンテナ11が他の無線装置から受信したHelloパケットをUDPモジュール23へ出力する。
MACモジュール17は、MAC層に属し、MACプロトコルを実行して、以下に述べる各種の機能を実行する。
即ち、MACモジュール17は、IPモジュール20から受信したHelloパケットを無線インターフェースモジュール16を介してブロードキャストする。
また、MACモジュール17は、データ(パケット)の再送制御等を行なう。そして、MACモジュール17は、データ(パケット)の再送回数が所定値を超えるとリンクが切断されたことを検知し、リンクが切断されたことをルーティングデーモン25に通知する。
バッファ18は、データリンク層に属し、パケットを一時的に格納する。
LLCモジュール19は、データリンク層に属し、LLCプロトコルを実行して隣接する無線装置との間でリンクの接続および解放を行なう。
IPモジュール20は、インターネット層に属する。そして、IPモジュール20は、無線ネットワークシステム10における経路情報を他の無線装置へ送信するとき、隣接する無線装置に関する情報等の各種のメッセージを含むHelloパケットを作成し、その作成したHelloパケットをMACモジュール17へ送信する。
また、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は、後述する方法によって、無線通信が実際に行なわれている経路の経路情報をルーティングテーブル21において維持する。即ち、IPモジュール20は、無線通信が継続している期間、その無線通信が継続している経路の経路情報を変更せずに維持する。
更に、IPモジュール20は、無線通信が停止されると、後述する方法によって、ルーティングテーブル21をチェックし、そのチェック結果に応じてルーティングテーブル21を更新する。
ルーティングテーブル21は、インターネット層に属し、後述するように、各送信先に対応付けて経路情報を格納する。
TCPモジュール22は、トランスポート層に属し、TCPパケットを生成する。TCPパケットは、TCPヘッダと、上位のプロトコルのデータを格納するためのTCPデータ部とからなる。そして、TCPモジュール22は、生成したTCPパケットをIPモジュール20へ送信する。
UDPモジュール23は、トランスポート層に属し、ルーティングデーモン25によって作成されたUpdate情報を含んだTCメッセージをブロードキャストし、他の無線装置からブロードキャストされたUpdate情報を含んだTCメッセージを受信してルーティングデーモン25へ出力する。
SMTPモジュール24は、プロセス/アプリケーション層に属し、ユーザアプリケーション14から受け取ったデータに基づいて、全二重通信チャネルの確保およびメッセージの交換等を行なう。
ルーティングデーモン25は、プロセス/アプリケーション層に属し、他の通信制御モジュールの実行状態を監視するとともに、他の通信制御モジュールからのリクエストを処理する。
また、ルーティングデーモン25は、OLSRプロトコルに従って比較的近くに存在する他の端末装置と経路情報を定期的に交換し合い、取得した経路情報に基づいて、最適な経路を算出してルーティングテーブル21をインターネット層に動的に作成する。
なお、図1に示す無線装置1〜9の各々も、図2に示す無線装置0の構成と同じ構成からなる。
図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は、インデックス、送信先、次の無線装置、総合メトリックおよびフローカウンタ値からなる。インデックス、送信先、次の無線装置、総合メトリックおよびフローカウンタ値は、相互に対応付けられている。
“インデックス”は、ルーティングテーブル21の各経路情報を特定し、1,2,3,・・・が格納される。
“送信先”は、送信先の無線装置のIPアドレスを表す。“次の無線装置”は、送信先にパケットPKTを送信するときに、次に送信すべき無線装置のIPアドレスを表す。
“総合メトリック”は、送信先までのホップ数および隣接する無線装置間のフローを考慮して決定された送信先までの通信負荷を表す。“総合メトリック”については、後に詳述する。
“フローカウンタ値”は、無線通信が送信先まで行なわれているか、または送信先まで行なわれている無線通信の個数を表す。より具体的には、フローカウンタ値には、0,1,2,・・・が格納される。“0”は、無線通信が送信先まで行なわれていないことを表し、1,2,・・・の各々は、無線通信が送信先まで行なわれていることを表すとともに、送信先までの無線通信の個数を表す。
OLSRプロトコルに従ったルーティングテーブル21の作成について詳細に説明する。無線装置0〜9は、ルーティングテーブル21を作成する場合、HelloメッセージおよびTCメッセージを送受信する。
Helloメッセージは、各無線装置0〜9が有する情報の配信を目的として、定期的に送信される。このHelloメッセージを受信することによって、各無線装置0〜9は、周辺の無線装置に関する情報を収集でき、自己の周辺にどのような無線装置が存在するのかを認識する。
OLSRプロトコルにおいては、各無線装置0〜9は、ローカルリンク情報を管理する。そして、Helloメッセージは、このローカルリンク情報の構築および送信を行なうためのメッセージである。ローカルリンク情報は、「リンク集合」、「隣接無線装置集合」、「2ホップ隣接無線装置集合とそれらの無線装置へのリンク集合」、「MPR(Multipoint Relay)集合」、および「MPRセレクタ集合」を含む。
リンク集合は、直接的に電波が届く無線装置(隣接無線装置)の集合へのリンクのことであり、各リンクは2つの無線装置間のアドレスの組の有効時間によって表現される。なお、有効時間は、そのリンクが単方向なのか双方向なのかを表すためにも利用される。
隣接無線装置集合は、各隣接無線装置のアドレス、およびその無線装置の再送信の積極度(Willingness)等によって構成される。2ホップ隣接無線装置集合は、隣接無線装置に隣接する無線装置の集合を表す。
MPR集合は、MPRとして選択された無線装置の集合である。なお、MPRとは、各パケットPKTを無線ネットワークシステム10の全ての無線装置0〜9へ送信する場合、各無線装置0〜9が1つのパケットPKTを1回だけ送受信することによってパケットPKTを全ての無線装置0〜9へ送信できるように中継無線装置を選択することである。
MPRセレクタ集合は、自己をMPRとして選択した無線装置の集合を表す。
ローカルリンク情報が確立される過程は、概ね、次のようになる。Helloメッセージは、初期の段階では、各無線装置0〜9が自己の存在を知らせるために、自己のアドレスが入ったHelloメッセージを隣接する無線装置へ送信する。これを、無線装置0〜9の全てが行ない、各無線装置0〜9は、自己の周りにどのようなアドレスを持った無線装置が存在するのかを把握する。このようにして、リンク集合および隣接無線装置集合が構築される。
そして、構築されたローカルリンク情報は、再び、Helloメッセージによって定期的に送り続けられる。これを繰返すことによって、各リンクが双方向であるのか、隣接無線装置の先にどのような無線装置が存在するのかが徐々に明らかになって行く。各無線装置0〜9は、このように徐々に構築されたローカルリンク情報を蓄える。
更に、MPRに関する情報も、Helloメッセージによって定期的に送信され、各無線装置0〜9へ告知される。各無線装置0〜9は、自己が送信するパケットPKTの再送信を依頼する無線装置として、いくつかの無線装置をMPR集合として隣接無線装置の中から選択している。そして、このMPR集合に関する情報は、Helloメッセージによって隣接する無線装置へ送信されるので、このHelloメッセージを受信した無線装置は、自己がMPRとして選択してきた無線装置の集合を「MPRセレクタ集合」として管理する。このようにすることにより、各無線装置0〜9は、どの無線装置から受信したパケットPKTを再送信すればよいのかを即座に認識できる。
Helloメッセージの送受信により各無線装置0〜9において、ローカルリンク集合が構築されると、無線ネットワークシステム10全体のトポロジーを知らせるためのTCメッセージが無線装置0〜9へ送信される。このTCメッセージは、MPRとして選択されている全ての無線装置によって定期的に送信される。そして、TCメッセージは、各無線装置とMPRセレクタ集合との間のリンクを含んでいるため、無線ネットワークシステム10の全ての無線装置0〜9は、全てのMPR集合および全てのMPRセレクタ集合を知ることができ、全てのMPR集合および全てのMPRセレクタ集合に基づいて、無線ネットワークシステム10全体のトポロジーを知ることができる。各無線装置0〜9は、無線ネットワークシステム10全体のトポロジーを用いて最短路を計算し、それに基づいて経路表を作成する。
なお、各無線装置0〜9は、Helloメッセージとは別に、TCメッセージを頻繁に交換する。そして、TCメッセージの交換にも、MPRが利用される。
各無線装置0〜9のUDPモジュール23は、上述したHelloメッセージおよびTCメッセージを送受信し、ルーティングデーモン25は、UDPモジュール23が受信したHelloメッセージおよびTCメッセージに基づいて無線ネットワークシステム10全体のトポロジーを認識し、その無線ネットワークシステム10全体のトポロジーに基づいて、最短路を計算し、それに基づいて、図6に示すルーティングテーブル21を動的に作成する。
図7は、フローテーブルの構成図である。フローテーブル30は、フローと、経路特定情報と、フロー最新通信時刻とからなる。“フロー”は、ソケット情報によって特定される送信元からソケット情報によって特定される送信先までの無線通信の流れを表す。
ソケット情報は、無線装置のIPアドレスと、無線装置において実行されるアプリケーションを特定するポート番号とからなる。従って、フローテーブル30における送信元および送信先とは、各無線装置を特定するIPアドレスと、そのIPアドレスによって特定された無線装置において実行されるアプリケーションを特定するポート番号とによって特定されるものであり、IPアドレスのみによって特定されるルーティングテーブル21の送信先とは異なるものである。
“経路特定情報”は、ルーティングテーブル21の各経路情報によって示される各経路を特定するものであり、具体的には、ルーティングテーブル21の“インデックス”が格納される。“フロー最新通信時刻”は、フローが開始された最新の時刻を表す。
図8は、トポロジーテーブルの構成図である。トポロジーテーブル40は、基準となる無線装置(無線装置0〜9のいずれか)であるoriginatorと、originatorに隣接する無線装置N[n1](n1=0,1,・・)と、originatorと無線装置N[n1]との間のメトリックM[n1]とからなる。
図9は、ルーティングテーブル21、フローテーブル30およびトポロジーテーブル40の具体例を示す図である。図9に示すルーティングテーブル21A、フローテーブル30Aおよびトポロジーテーブル40Aは、無線装置0によって保持される。
ルーティングテーブル21Aにおいて、インデックス“1”の経路は、送信先が無線装置4であり、次の無線装置が無線装置1であり、総合メトリックが“6”であり、フローカウンタ値が“1”である経路である。
トポロジーテーブル40A(図9の(c)参照)のサブテーブル40A−1によれば、無線装置0(Originator=0)と無線装置1(N[0]=1)との間のメトリックM[0]は、M[0]=“3”であり、サブテーブル40A−4によれば、無線装置1(Originator=1)と無線装置4(N[1]=4)との間のメトリックM[1]は、M[1]=“3”であるので、無線装置4を送信先とする経路の総合メトリックは、3+3=6となる。
そして、フローカウンタ値が“1”であるので、無線装置0−無線装置1−無線装置4の経路において無線通信が実際に行なわれていることを表す。
また、ルーティングテーブル21Aにおいて、インデックス“2”の経路は、送信先が無線装置7であり、次の無線装置が無線装置1であり、総合メトリックが“8”であり、フローカウンタ値が“1”である経路である。
トポロジーテーブル40A(図9の(c)参照)のサブテーブル40A−7によれば、無線装置4(Originator=4)と無線装置7(N[2]=7)との間のメトリックM[2]は、M[2]=“2”であり、無線装置0と無線装置4との間の総合メトリックは、上述したように“6”であるので、無線装置7を送信先とする経路の総合メトリックは、6+2=8となる。
そして、フローカウンタ値が“1”であるので、無線装置0−無線装置1−無線装置4−無線装置7の経路において無線通信が実際に行なわれていることを表す。
更に、ルーティングテーブル21Aにおいて、インデックス“3”の経路は、送信先が無線装置8であり、次の無線装置が無線装置2であり、総合メトリックが“6”であり、フローカウンタ値が“1”である経路である。
トポロジーテーブル40A(図9の(c)参照)のサブテーブル40A−1によれば、無線装置0(Originator=0)と無線装置2(N[1]=2)との間のメトリックM[1]は、M[1]=“2”であり、サブテーブル40A−2によれば、無線装置2(Originator=2)と無線装置5(N[2]=5)との間のメトリックM[2]は、M[2]=“2”であり、サブテーブル40A−6によれば、無線装置5(Originator=5)と無線装置8(N[1]=8)との間のメトリックM[1]は、M[1]=“2”であるので、無線装置2を経由して無線装置8を送信先とする経路の総合メトリックは、2+2+2=6となる。
そして、フローカウンタ値が“1”であるので、無線装置0−無線装置2−無線装置5−無線装置8の経路において無線通信が実際に行なわれていることを表す。
更に、ルーティングテーブル21Aにおいて、インデックス“4”の経路は、送信先が無線装置8であり、次の無線装置が無線装置3であり、総合メトリックが“8”であり、フローカウンタ値が“1”である経路である。
トポロジーテーブル40A(図9の(c)参照)のサブテーブル40A−1によれば、無線装置0(Originator=0)と無線装置3(N[2]=3)との間のメトリックM[2]は、M[2]=“2”であり、サブテーブル40A−3によれば、無線装置3(Originator=3)と無線装置6(N[1]=6)との間のメトリックM[1]は、M[1]=“2”であり、サブテーブル40A−5によれば、無線装置6(Originator=6)と無線装置9(N[1]=9)との間のメトリックM[1]は、M[1]=“2”であり、サブテーブル40A−8によれば、無線装置9(Originator=9)と無線装置8(N[2]=8)との間のメトリックM[2]は、M[2]=“2”であるので、無線装置3を経由して無線装置8を送信先とする経路の総合メトリックは、2+2+2+2=8となる。
そして、フローカウンタ値が“1”であるので、無線装置0−無線装置3−無線装置6−無線装置9−無線装置8の経路において無線通信が実際に行なわれていることを表す(図9の(a)参照)。
なお、隣接する2つの無線装置間のメトリックLMは、
LM=(無線通信の個数)+1・・・(1)
によって演算される。式(1)における“1”は、隣接する2つの無線装置間のホップ数=1を考慮したものである。
例えば、無線装置0と無線装置1との間では、送信先を無線装置4,7とする2つの無線通信が行なわれているので、無線装置0と無線装置1との間のメトリックは、2+1=3となる(サブテーブル40A−1,40A−3参照)。
このように、この発明においては、隣接する2つの無線装置間のメトリックは、実際に行なわれている無線通信の個数と隣接する2つの無線装置間のホップ数とを考慮して演算され、無線通信の個数が相対的に多くなればメトリックは相対的に大きくなる。
上述したように、4個の経路に沿って4個の無線通信が行なわれているので、フローテーブル30Aにおいては、4個の無線通信に対応して、4個のフローf1(0.1→8.1),f2(0.2→8.2),f3(0.3→7.3),f4(0.4→4.4)が記載されている。
この場合、フローf1(0.1→8.1)において、“0.1”の“0”は、送信元である無線装置0のIPアドレスを表し、“0.1”の“1”は、無線装置0において実行されているアプリケーションを特定するポート番号を表す。また、“8.1”の“8”は、送信先である無線装置8のIPアドレスを表し、“8.1”の“1”は、無線装置8において実行されているアプリケーションを特定するポート番号を表す。
フローf2(0.2→8.2),f3(0.3→7.3),f4(0.4→4.4)についても同じである。
このように、フローf1(0.1→8.1),f2(0.2→8.2),f3(0.3→7.3),f4(0.4→4.4)は、ソケット情報(IPアドレスおよびポート番号)によって特定された送信元からソケット情報によって特定された送信先へ無線通信が行なわれていることを表す。
そして、フローf1(0.1→8.1),f2(0.2→8.2),f3(0.3→7.3),f4(0.4→4.4)に対応して経路特定情報“3”,“4”,“2”,“1”がフローテーブル30Aに格納される。この経路特定情報“3”,“4”,“2”,“1”は、ルーティングテーブル21Aのインデックス“3”,“4”,“2”,“1”と同じである。
従って、フローテーブル30Aの経路特定情報を検出すれば、各フローf1〜f4(=無線通信)が実行されている経路を特定することができる。
また、フローf1(0.1→8.1),f2(0.2→8.2),f3(0.3→7.3),f4(0.4→4.4)に対応してフロー最新通信時刻t1,t2,t3,t4が格納される。このフロー最新通信時刻t1,t2,t3,t4は、それぞれ、フローf1(0.1→8.1),f2(0.2→8.2),f3(0.3→7.3),f4(0.4→4.4)が開始された時刻を表す。そして、フロー最新通信時刻t1,t2,t3,t4は、それぞれ、フローf1(0.1→8.1),f2(0.2→8.2),f3(0.3→7.3),f4(0.4→4.4)が停止されたか否かを判定するために用いられる。
即ち、フロー最新通信時刻t1,t2,t3,t4から一定時間内に次のパケットが来なければ、そのフローf1(0.1→8.1),f2(0.2→8.2),f3(0.3→7.3),f4(0.4→4.4)は、停止されたものと判定されるので、フロー最新通信時刻t1,t2,t3,t4は、フローf1(0.1→8.1),f2(0.2→8.2),f3(0.3→7.3),f4(0.4→4.4)が停止されたか否かを判定する基準となるものである(図9の(b)参照)。
図1に示す無線装置0〜9の配置構造によれば、トポロジーテーブル40Aは、図9の(c)に示すようにサブテーブル40A−1〜40A−8からなる。
図10は、ルーティングデーモン25が作成したルーティングテーブル21を再計算する動作を説明するためのフローチャートである。また、図11は、再計算されたルーティングテーブルの構成図である。
なお、ルーティングテーブル21の再計算は、無線装置0のIPモジュール20によって行なわれる。この場合、無線装置0のIPモジュール20は、図9の(b),(c)に示すフローテーブル30Aおよびトポロジーテーブル40Aを保持している。また、再計算されるときのルーティングテーブル21は、図9の(a)に示すルーティングテーブル21Aからなる。
一連の動作が開始されると、IPモジュール20は、空のルーティングテーブルを作成する(ステップS1)。即ち、IPモジュール20は、図11に示すように、“インデックス”、“送信先”、“次の無線装置”、“総合メトリック”および“フローカウンタ値”のみからなるサブテーブル21B−1を作成する。
その後、IPモジュール20は、現在のルーティングテーブル21Aを参照して、現在、無線通信が行なわれている経路をフローカウンタ値により検出し、その検出した経路をルーティングテーブル21Bにコピーする(ステップS2)。
この場合、ルーティングテーブル21Aにおいて、インデックス=1〜4によって表される4個の経路情報の4個のフローカウンタ値は全て“1”であるので、4個の経路情報を全てルーティングテーブル21Bへコピーする。即ち、IPモジュール20は、図11に示すサブテーブル21B−2をルーティングテーブル21Bへコピーする。
このコピーによって、IPモジュール20は、現在、無線通信が行なわれている4個の経路を示す4個の経路情報を維持する。即ち、IPモジュール20は、サブテーブル21B−2に含まれる経路情報を変更することなく維持する。その結果、送信先を無線装置4,7,8,8とする4個の経路は、ルーティングテーブルの再計算の対象とならず、無線通信が行なわれている限り、そのまま維持される。
ステップS2の後、IPモジュール20は、トポロジーテーブル40Aを参照して、無線装置0から1ホップの経路をルーティングテーブル21Bに追加する(ステップS3)。即ち、IPモジュール20は、無線装置0と無線装置1との間の経路、無線装置0と無線装置2との間の経路および無線装置0と無線装置3との間の経路からなるサブテーブル21B−3をルーティングテーブル21Bに追加する。
この場合、無線装置1,2,3を送信先とする無線通信は、実際には行なわれていないので、送信先“1”,“2”,“3”に対応するフローカウンタ値には、“0”が格納される。
また、無線装置1,2,3を送信先とするときの総合メトリックは、図9の(c)に示すトポロジーテーブル40Aのサブテーブル40A−1を参照して演算される。
1ホップの経路がルーティングテーブル21Bに追加されると、IPモジュール20は、トポロジーテーブル40Aを参照して、無線装置0から2ホップの経路をルーティングテーブル21Bに追加する(ステップS4)。即ち、IPモジュール20は、トポロジーテーブル40Aのサブテーブル40A−1〜40A−4を参照して、無線装置0−無線装置2−無線装置5からなる経路と、無線装置0−無線装置3−無線装置6からなる経路とを含むサブテーブル21B−4をルーティングテーブル21Bに追加する。
この場合、無線装置5,6を送信先とする無線通信は、実際には行なわれていないので、送信先“5”,“6”に対応するフローカウンタ値には、“0”が格納される。
また、無線装置5,6を送信先とするときの総合メトリックは、トポロジーテーブル40Aのサブテーブル40A−1〜40A−3を参照して演算される。
なお、サブテーブル21B−4が無線装置4を送信先とする経路を含まないのは、無線装置4を送信先とする経路は、ルーティングテーブル21Bのサブテーブル21B−2に既に含まれているからである。
2ホップの経路がルーティングテーブル21Bに追加されると、IPモジュール20は、トポロジーテーブル40Aを参照して、無線装置0から3ホップの経路をルーティングテーブル21Bに追加する(ステップS5)。即ち、IPモジュール20は、トポロジーテーブル40Aのサブテーブル40A−5〜40A−7を参照して、無線装置0−無線装置3−無線装置6−無線装置9からなる経路を含むサブテーブル21B−5をルーティングテーブル21Bに追加する。
この場合、無線装置9を送信先とする無線通信は、実際には行なわれていないので、送信先“9”に対応するフローカウンタ値には、“0”が格納される。
また、無線装置9を送信先とするときの総合メトリックは、トポロジーテーブル40Aのサブテーブル40A−1,40A−3,40A−5を参照して演算される。
なお、サブテーブル21B−5が無線装置7,8を送信先とする経路を含まないのは、無線装置7,8を送信先とする経路は、ルーティングテーブル21Bのサブテーブル21B−2に既に含まれているからである。
これによって、一連の動作は終了する。
なお、4ホップの経路、5ホップの経路、・・・が存在すれば、ステップS5の後、これらの経路がルーティングテーブル21Bに追加される。
上述したように、この発明においては、ルーティングテーブル21を再計算するとき、無線通信が行なわれている経路が存在すれば、無線通信が行なわれている経路を新しいルーティングテーブル21Bへコピーすることによって無線通信が行なわれている経路を維持したまま、新しいルーティングテーブル21Bが計算される。
その結果、ルーティングテーブル21Bに基づいて新たなパケットを送信するための経路が決定される場合、IPモジュール20は、無線通信が行なわれている経路を変更しないので、パケットを無線装置4,7,8,8まで送信するための経路が頻繁に切換えられることがない。その結果、無線ネットワークシステム10を安定化できる。
図12は、新しいフローが開始されるときの動作を説明するためのフローチャートである。また、図13は、新しいフローが開始されるときのフローテーブルおよびルーティングテーブルを示す図である。
新しいフローが開始されるとき、無線装置0のIPモジュール20は、図13の(a)に示すフローテーブル30Bを保持しており、新しいフローが開始されるときのルーティングテーブル21は、図13の(b)に示すルーティングテーブル21Cからなる。
即ち、新しいフローが開始されるとき、無線装置0を送信元とし、無線装置8を送信先とし、無線装置2を次の無線装置とするインデックス=“3”の経路において1個の無線通信が行なわれており、その他の経路においては、無線通信が行なわれていない(図13の(a),(b)参照)。
このような状況において、新しいフローが開始されると、無線装置0のIPモジュール20は、TCPモジュール22からTCPパケットを受信する。即ち、新しいパケットが到着する(ステップS11)。
そうすると、無線装置0のIPモジュール20は、TCPパケットのTCPヘッダ(図4参照)を参照して“送信元ポート番号”および“送信先ポート番号”を検出し、その検出した“送信元ポート番号”および“送信先ポート番号”と、無線装置0のIPアドレスと、送信先である無線装置8のIPアドレスとに基づいて、新しいフローのフロー情報を取得する(ステップS12)。例えば、無線装置0のIPモジュール20は、f2(0.2→8.2)からなるフロー情報を取得する。
そして、無線装置0のIPモジュール20は、フローテーブル30Bのフローf1(0.1→8.1)を参照し(ステップS13)、新しいフローがフローテーブル30B中に存在するか否かを判定する(ステップS14)。
そして、新しいフローがフローテーブル30B中に存在するとき、無線装置0のIPモジュール20は、フローf1(0.1→8.1)のフロー最新通信時刻t1を更新する(ステップS15)。
その後、一連の動作は、ステップS13へ移行し、ステップS14において新しいフローがフローテーブル30Bに存在しないと判定されるまで、各フローのフロー最新通信時刻が更新される。
そして、ステップS14において、新しいフローがフローテーブル30B中に存在しないと判定されると、無線装置0のIPモジュール20は、ルーティングテーブル21C(図13の(b)参照)を参照して、総合メトリックが最小である経路を選択する(ステップS16)。
この場合、IPモジュール20は、インデックス=“4”によって示される経路を選択する。インデックス=“4”によって示される経路は、無線装置8を送信先とし、無線装置3を次の無線装置とする総合メトリックが“4”である経路である。そして、この経路は、無線通信が行なわれていない(フローカウンタ値=0)。
無線通信が行なわれていないとき、隣接する2つの無線装置間のメトリックは、式(1)より、0+1=1となるので、無線装置8を送信先とする経路の総合メトリックは、1+1+1+1=4となる。
従って、無線装置0のIPモジュール20は、新しいフローを送信先である無線装置8まで送信するための経路をインデックス=“4”によって示される経路と決定する。
新しいフローを送信するための経路が決定されると、無線装置0のIPモジュール20は、新しいフロー情報(“f2(0.2→8.2)”,“4”,“t2”)をフローテーブル30Bに追加してフローテーブル30C(図13の(c)参照)を作成する(ステップS17)。
そして、無線装置0のIPモジュール20は、無線装置0−無線装置3−無線装置6−無線装置9−無線装置8からなる経路の隣接する2つの無線装置間のメトリックを式(1)により、1+1=2と演算し、無線装置3を経由して送信先である無線装置8までの総合メトリックを2+2+2+2=8と演算する。
そして、ルーティングテーブル21Cのインデックス=“4”によって示される経路の総合メトリックを“4”から“8”へ更新し、フローカウンタ値を“0”から“1”へ更新してルーティングテーブル21D(図13の(d)参照)を作成する(ステップS18)。
これによって、一連の動作は終了する。
上述したように、新しいフロー(無線通信)の要求があったとき、IPモジュール20は、新しいフロー(無線通信)と同じフロー(無線通信)がフローテーブル30B中に存在しなければ、現在、無線通信を行なっている経路(ルーティングテーブル21Cのインデックス=“3”によって示される経路)をそのまま維持したまま、新しいフロー(無線通信)を送信先まで送信するための経路を決定する(ステップS16参照)。従って、2つのフローf1,f2をそれぞれインデックス=“3”,“4”によって示される経路に分散させることによって無線ネットワークシステム10全体の通信負荷を分散させることができる。
この場合、IPモジュール20は、新しいフローf2(0.2→8.2)の送信元のIPアドレス(=0)および送信先のIPアドレス(=8)がフローテーブル30Bに存在するフローf1(0.1→8.1)の送信元のIPアドレス(=0)および送信先のIPアドレス(=8)と同じであっても、新しいフローf2(0.2→8.2)の送信元のポート番号(=2)および送信先のポート番号(=2)がフローテーブル30Bに存在するフローf1(0.1→8.1)の送信元のポート番号(=1)および送信先のポート番号(=1)と異なれば、新しいフロー(無線通信)を送信先まで送信するための経路を決定する。
そして、IPモジュール20は、新しいフロー(無線通信)を送信先まで送信するための経路のフローカウンタ値を無線通信を行なっていないことを示す“0”から無線通信を行なっていることを示す“1”へ変更する(ステップS18参照)。
そして、インデックス=“4”で示される経路のフローカウンタ値を“0”から“1”に変更した後、IPモジュール20は、インデックス=“3”,“4”によって示される経路を無線通信が行なわれている経路として維持の対象とする。
また、IPモジュール20は、新しいフロー情報をフローテーブル30Bに追加する(ステップS17参照)。
更に、IPモジュール20は、インデックス=“4”によって示される経路を新しいフロー(f2(0.2→8.2))を送信するための経路として決定すると、無線通信が行なわれていないときの総合メトリック=“4”を新しいフロー(f2(0.2→8.2))を考慮して総合メトリックを総合メトリック=“8”と演算する(ステップS18参照)。
そして、総合メトリックは、式(1)によって演算された2つの隣接無線装置間のメトリックの総和であり、その値が相対的に大きければ新しいフロー(f2(0.2→8.2))のための経路として決定され難くなる。その結果、総合メトリックは、送信先までの通信負荷を示す経路指標となる。
従って、IPモジュール20は、実際に行なわれている無線通信(=新しいフロー(f2(0.2→8.2)))の個数が相対的に多いほど(この場合は、無線通信の個数が0個から1個に増加)、通信負荷の度合が相対的に大きくなるように総合メトリックを演算する。
図14は、フローが停止されたときの動作を説明するためのフローチャートである。また、図15は、フローが停止されたときのフローテーブルおよびルーティングテーブルを示す図である。
フローが停止されたとき、無線装置0のIPモジュール20は、図15の(a)に示すフローテーブル30Dを保持しており、フローが停止されたときのルーティングテーブル21は、図15の(b)に示すルーティングテーブル21Aからなる。
即ち、フローが停止されたとき、無線装置0を送信元とし、無線装置4,7,8,8を送信先とし、それぞれ無線装置1,1,2,3を次の無線装置とする4個の経路において無線通信が行なわれている(図15の(a),(b)参照)。
このような状況において、フローが停止されたときの動作が開始されると、無線装置0のIPモジュール20は、k=1を設定し(ステップS21)、現在の時刻Tnowをタイマー(図示せず)から取得する(ステップS22)。
そして、無線装置0のIPモジュール20は、フローfkが停止されたか否かを判定する(ステップS23)。より具体的には、IPモジュール20は、フローテーブル30D(図15の(a)参照)からフローf1(0.1→8.1)に対応するフロー最新通信時刻t1を取得し、フロー最新通信時刻t1から現在の時刻Tnowまでの間に新しいパケットを上位層から取得したか否かを判定することによって、フローf1が停止したか否かを判定する。
この場合、無線装置0のIPモジュール20は、フロー最新通信時刻t1から現在の時刻Tnowまでの間に新しいパケットを上位層から取得したとき、フローf1は停止されていないと判定し、フロー最新通信時刻t1から現在の時刻Tnowまでの間に新しいパケットを上位層から取得しなかったとき、フローf1は停止されていると判定する。
フローテーブル30Dの他のフローf2〜f4についても、同様な方法によってフローが停止されたか否かが判定される。
ステップS23において、フローfkが停止されていないと判定されたとき、一連の動作は、ステップS29へ移行する。
一方、ステップS23において、フローfkが停止されたと判定されたとき、無線装置0のIPモジュール20は、フローテーブル30D(図15の(a)参照)を参照して、フローfkの経路特定情報と同じインデックスを有する経路をルーティングテーブル21A(図15の(b)参照)から取得する(ステップS24)。この場合、IPモジュール20は、インデックス=“4”によって特定される経路を取得する。
その後、無線装置0のIPモジュール20は、経路rtのフローカウンタ値flow_cntを“1”だけ減少(“1”→“0”)する(ステップS25)。そして、無線装置0のIPモジュール20は、(1)フローカウンタ値flow_cnt=0であり、(2)送信先が経路rtと同じである経路rt2が存在し、さらに、(3)経路rt2の総合メトリックが経路rtの総合メトリックよりも小さいか否かを判定する(ステップS26)。
そして、無線装置0のIPモジュール20は、上記の(1)〜(3)の全てが成立するとき、ルーティングテーブル21A(図15の(b)参照)から経路rt(=インデックス=“4”の経路)を削除する(ステップS27)。
この場合、ルーティングテーブル21A(図15の(a)参照)は、ルーティングテーブル21Eへ更新される(図15の(c)参照)。
上記の(1)〜(3)の全てが成立するとき、経路rtがルーティングテーブル21Aから削除されるのは、経路rtにおける無線通信が停止されており、経路rtよりも総合メトリックが小さい経路rt2(代替経路)が存在するので、経路rtの送信先と同じ送信先への無線通信が要求された場合、より小さい総合メトリックを有する経路rt2(即ち、送信先までの通信負荷が経路rtよりも小さい経路)によって、要求された無線通信を行なうことができるからである。
一方、ステップS26において、上記の(1)〜(3)のいずれか1個が成立しないとき、フローfk(=f2)をフローテーブル30D(図15の(a)参照)から削除する(ステップS28)。 この場合、フローテーブル30Dは、フローテーブル30Eへ更新される(図15の(d)参照)。
上記の(1)〜(3)のいずれか1個が成立しない場合としては、(A)フローカウンタ値flow_cntが“0”でない場合、(B)送信先が経路rtと同じである経路rt2が存在しない場合、(C)経路rt2の総合メトリックが経路rtの総合メトリック以上である場合、(D)フローカウンタ値flow_cntが“0”でなく、かつ、送信先が経路rtと同じである経路rt2が存在しない場合、(E)フローカウンタ値flow_cntが“0”でなく、かつ、経路rt2の総合メトリックが経路rtの総合メトリック以上である場合、(F)送信先が経路rtと同じである経路rt2が存在せず、かつ、経路rt2の総合メトリックが経路rtの総合メトリック以上である場合、および(G)フローカウンタ値flow_cntが“0”でなく、かつ、送信先が経路rtと同じである経路rt2が存在せず、さらに、経路rt2の総合メトリックが経路rtの総合メトリック以上である場合が存在する。
ステップS28の後、またはステップS23において“No”と判定されたとき、無線装置0のIPモジュール20は、k=K(Kは、フローテーブル30Dのフロー数の最大数=4)であるか否かを判定し(ステップS29)、k=Kでないとき、k=k+1を設定する(ステップS30)。
そして、一連の動作は、ステップS23へ移行し、ステップS29において、k=Kであると判定されるまで、上述したステップS23〜ステップS30が繰り返し実行される。即ち、フローテーブル30Dの全てのフローf1〜f4について、フローテーブル30Dおよびルーティングテーブル21Aの更新が終了するまで、ステップS23〜ステップS30が繰り返し実行される。
そして、ステップS29において、k=Kであると判定されると、一連の動作が終了する。
上述したように、フローfkが停止されると、無線装置0のIPモジュール20は、その停止されたフローfkの経路rtのフローカウンタ値flow_cntを“1”だけ減少し、フローカウンタ値flow_cntを減少した後にルーティングテーブル21Aをチェックし(ステップS26の判定)、そのチェック結果に基づいて、ルーティングテーブル21Aおよびフローテーブル30Dを更新し、またはフローテーブル30Dのみを更新する。
また、フローfkが停止されると、その停止されたフローfkのフローカウンタ値が“0”であり、その停止されたフローの経路rtよりも総合メトリックが小さい経路rt2(代替経路)が存在するとき(ステップS26の“Yes”)、無線装置0のIPモジュール20は、経路rtを削除することによりルーティングテーブル21Aをルーティングテーブル21Eへ更新するとともに、フローfkを削除してフローテーブル30Dをフローテーブル30Eへ更新する。
即ち、フローfkが停止されると、その停止されたフローfkのフローカウンタ値が“0”であり、その停止されたフローの経路rtよりも総合メトリックが小さい経路rt2(代替経路)が存在するとき(ステップS26の“Yes”)、無線装置0のIPモジュール20は、ルーティングテーブル21Aおよびフローテーブル30Dを更新する。
更に、上記の(1)〜(3)のいずれかが成立しないとき、無線装置0のIPモジュール20は、フローfkをフローテーブル30Dから削除してフローテーブル30Dをフローテーブル30Eへ更新する。
即ち、上記の(1)〜(3)のいずれかが成立しないとき、無線装置0のIPモジュール20は、フローテーブル30Dのみを更新し、ルーティングテーブル21Aをそのまま維持する。
更に、図14に示すフローチャートは、K個のフローf1〜fKが停止された場合について実行されるので、無線装置0のIPモジュール20は、K個のフローf1〜fKに対応するフローテーブルおよびルーティングテーブルをチェックし、そのチェック結果に基づいて、フローテーブルおよびルーティングテーブルを更新し、またはフローテーブルのみを更新する。
上述したように、隣接する2つの無線装置間のメトリックは、その2つの無線装置間のフロー数に“1”を加えた値であり、ルーティングテーブル21における総合メトリックは、送信元から送信先までの間に存在する2つの無線装置間のメトリックの総和である。
そして、総合メトリックは、フロー数が多くなれば相対的に大きくなり、総合メトリックが大きくなれば、その経路は、パケットを送信先まで送信するための経路として決定され難くなる。
従って、総合メトリックは、送信元から送信先までのホップ数と、2つの無線装置間のフロー数とを考慮して決定される通信負荷である。
また、上記においては、2つの無線装置間のリンクメトリックLMは、式(1)によって演算されると説明したが、この発明においては、これに限らず、リンクメトリックLMは、次の式(2)および式(3)によって演算されてもよい。
LM=int(TA−B/β)・・・(2)
TA−B=γ・TA,NA+α[TA,B]+1・・・(3)
なお、α,β,γは、定数である。TA,NAは、無線装置Aと、無線装置Aの周囲に存在する無線装置とのトラック数(=フロー数)の総和であり、TA,Bは、無線装置Aから無線装置Bへ向かうトラック数(=フロー数)である。
図16は、リンクメトリックLMを演算する方法を説明するための図である。無線装置B,C,Dが無線装置Aに隣接して存在する。そして、無線装置Aから無線装置B,C,Dへそれぞれ向かう1個のフローが存在するものとする(図16の(a)参照)。
そうすると、式(3)におけるTA,NAは、無線装置Aから無線装置Bへ向かう1個のフローと、無線装置Aから無線装置Cへ向かう1個のフローと、無線装置Aから無線装置Dへ向かう1個のフローとの総和として演算される。
定数αは、0<α<1の範囲の実数からなる。βは、正の実数からなる。γは、γ≧0である。
式(3)によりTA−Bを演算した後、TA−BをリンクメトリックLMに変換する方法は、図16の(b)に示されている。このように、TA−Bは、各レベルに応じて、“1”〜“6”のいずれかのメトリックに変換される。
式(2)および式(3)を用いて無線装置Aと無線装置Cとの間のリンクメトリックLMを演算することにより、無線装置Aと無線装置Cとの間のフロー数のみならず、無線装置Aと無線装置B,Dとの間のフロー数も考慮してリンクメトリックLMが演算される。
従って、無線装置Aと無線装置Bとの間のフロー数、または無線装置Aと無線装置Dとの間のフロー数が増加しても、無線装置Aと無線装置Cとの間のリンクメトリックが大きくなる。
その結果、式(2)および(3)を用いて、リンクメトリックを演算することによって、より周囲の無線通信の状況を考慮してリンクメトリック、最終的には総合メトリックを決定でき、無線ネットワークシステム10の全体における通信負荷を考慮してパケットを送信先まで送信するための経路を決定できる。
この発明においては、ルーティングテーブル21を保持するインターネット電子制御部15は、「テーブル保持手段」を構成する。
また、図10に示すステップS2に従って無線通信が行なわれている経路の経路情報をコピーするIPモジュール20は、「経路情報維持手段」を構成する。この場合、経路情報維持手段(IPモジュール20)は、ルーティングテーブル21Aにおいて重複しない経路情報をコピーする。
更に、図11に示すルーティングテーブル21Bのサブテーブル21B−1〜21B−5によって示される10個の経路情報は、[n(nは正の整数)個の経路情報]を構成する。そして、n個の経路情報は、各無線装置がルーティングテーブル21に保持しているn個の送信先に対する経路情報である。
更に、図11に示すルーティングテーブル21Bのサブテーブル21B−1によって示される4個の経路情報は、[m(mは1≦m≦nを満たす整数)個の経路情報]を構成する。そして、m個の経路情報は、無線通信が実際に行なわれているm個の経路に対応する経路情報である。図14に示すフローチャートは、無線通信が実際に行なわれている経路について実行されるので、停止された無線通信(=フロー)の個数を示すKは、1≦K≦mを満たす整数となる。
更に、ルーティングテーブル21を参照して、各送信先までの経路を決定するIPモジュール20は、「経路決定手段」を構成する。
更に、ルーティングテーブル21の総合メトリックは、対応する送信先までの通信負荷の度合を示す「総合経路指標」を構成する。
更に、トポロジーテーブル40Aに従って各送信先までの総合メトリックを演算するIPモジュール20は、「経路指標演算手段」を構成する。
更に、図12に示すステップS16に従って総合メトリックが最小である経路を新しいフローに対する経路と決定するIPモジュール20は、「経路決定手段」を構成する。
更に、フローカウンタ値に格納される0,1,2,・・・の各数値は、実際に行なわれている無線通信の有無または個数を示す「フラグ」を構成する。
更に、フローテーブル30A,30B,30C,30D,30Eを保持するIPモジュール20は、「フローテーブル保持手段」を構成する。
更に、図14に示すフローチャートに従ってルーティングテーブル21Aおよびフローテーブル30Dをチェックし、そのチェック結果に応じてルーティングテーブル21Aおよびフローテーブル30D、またはフローテーブル30Dを更新するIPモジュール20は、「テーブル更新手段」を構成する。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
0〜9 無線装置、10 無線ネットワークシステム、A0〜A9,11 アンテナ、12 入力部、13 出力部、14 ユーザアプリケーション、15 通信制御部、16 無線インターフェースモジュール、17 MACモジュール、18 バッファ、19 LLCモジュール、20 IPモジュール、21,21A,21B,21C,21D,21E ルーティングテーブル、21B−1〜21B−5,40A−1〜40A−8 サブテーブル、22 TCPモジュール、23 UDPモジュール、24 SMTPモジュール、25 ルーティングデーモン、30,30A,30B,30C,30D,30E フローテーブル、40,40A トポロジーテーブル。