以下、図面に基づいて、本願の開示する通信装置、経路構築方法及び経路構築プログラムの実施例を詳細に説明する。尚、本実施例により、開示技術が限定されるものではない。
図1は、本実施例の通信システムの一例を示す説明図である。図1に示す通信システム1は、有線ネットワークシステム(以下、単に有線システムと称する)2と、マルチホップネットワークシステム(以下、単にマルチホップシステムと称する)3とを有する。有線システム2は、例えば、WAN(Wide Area Network)で構築し、通信システム1全体を監視するサーバ4を有する。また、マルチホップシステム3は、自律型マルチホップ方式のアドホック通信ネットワークで構築し、通信ユニット5と、中継ユニット6と、ゲートウェイ(以下、単にGWと称する)7とを有する。尚、通信ユニット5、中継ユニット6及びGW7は、通信装置である。
通信ユニット5、中継ユニット6及びGW7は、自律型マルチホップ方式の無線通信でデータを送信する。GW7は、マルチホップシステム3内の通信ユニット5及び中継ユニット6等と自律型マルチホップ方式の無線で通信すると共に、有線システム2内のサーバ4と有線で通信する。
図1に示す通信システム1は、例えば、家庭内の電力量をサーバ4側で収集して管理するシステムである。通信ユニット5は、例えば、家庭内に配置された、図示せぬ電力計に接続するユニットである。そして、サーバ4は、通信ユニット5を通じて各家庭内に配置された電力計から電力量を収集し、これら収集された家庭内の電力量を管理することになる。各通信ユニット5は、電力計から収集された電力量を定期的にGW7経由の上り経路でサーバ4に送信する。更に、サーバ4は、例えば、通信ユニット5を制御する制御データをGW7経由の下り経路で各通信ユニット5に送信する。尚、本システム内の電力計は、家庭内に固定配置されるため、例えば、通信ユニット5も固定配置されたものとなる。
図2は、GW7のハードウェア構成の一例を示すブロック図である。図2に示すGW7は、ネットワークインタフェース11と、無線インタフェース12と、補助記憶装置13と、メモリ14と、プロセッサ15とを有する。ネットワークインタフェース11は、有線システム2と接続する通信インタフェースである。無線インタフェース12は、マルチホップシステム3と接続するインタフェースである。補助記憶装置13は、後述する経路テーブル等の経路情報に関わる各種情報を記憶する、例えば、フラッシュメモリである。メモリ14は、各種プログラムの各種情報を記憶するものである。プロセッサ15は、GW7全体を制御するものである。
図3は、GW7の機能構成の一例を示すブロック図である。プロセッサ15は、メモリ14に格納されたプログラムに基づき各種プロセスとなる機能を構成する。図3に示すプロセッサ15は、ネットワーク通信部21と、無線通信部22と、フレーム解析部23と、データ生成部24と、データ取得部25と、設定情報取得部26と、GW情報生成部27と、経路制御部28と、記憶部29と、制御部30とを機能する。ネットワーク通信部21は、ネットワークインタフェース11を通じて有線システム2との有線通信を制御する。無線通信部22は、無線インタフェース12を通じてマルチホップシステム3との無線通信を制御する。
フレーム解析部23は、無線インタフェース12を通じてマルチホップシステム3内の通信ユニット5、中継ユニット6及びGW7のフレームを解析する。データ生成部24は、データを生成する。データ取得部25は、データを取得する。設定情報取得部26は、設定情報を取得する。経路制御部28は、自律型マルチホップ方式の通信経路を制御する。GW情報生成部27は、自GW7の負荷、例えば、収容ユニット台数及び転送トラフィック量等を含むGW情報を生成する。記憶部29は、後述する経路テーブル31及びフレーム転送テーブル33等の各種テーブルを管理するものである。制御部30は、プロセッサ15全体を制御する。
図4は、経路テーブル31のテーブル構成の一例を示す説明図である。図4に示す経路テーブル31は、最終宛先(GD:Global Destination)31A、送信元(GS:Global Source)31B及び隣接宛先(LD:Local Destination)31Cを対応付けた経路情報を管理するものである。尚、経路情報は、上り経路又は下り経路の経路情報である。最終宛先31Aは、データの最終宛先のIP/MACアドレスである。送信元31Bは、データの送信元のIP/MACアドレスである。隣接宛先31Cは、データを最終宛先に送信する際に隣接する宛先側ユニットのIP/MACアドレスである。隣接宛先31Cは、隣接宛先として優先的に使用する優先順位として、第1位の隣接宛先LD1と、第2位の隣接宛先LD2と、第3位の隣接宛先LD3とを有する。
また、第1位の隣接宛先LD1は、更新時刻31D及びカウント値31Eを有する。第1位の隣接宛先LD1内の更新時刻31Dは、第1位の隣接宛先LD1を通信に使用した最新時刻である。第1位の隣接宛先LD1内のカウント値31Eは、第1の隣接宛先LD1を使用してデータ送信に成功した成功回数である。また、第2位の隣接宛先LD2は、更新時刻31D及びカウント値31Eを有する。第2位の隣接宛先LD2内の更新時刻31Dは、第2位の隣接宛先LD2を通信に使用した最新時刻である。第2位の隣接宛先LD2内のカウント値31Eは、第2の隣接宛先LD2を使用してデータ送信に成功した成功回数である。また、第3位の隣接宛先LD3は、更新時刻31D及びカウント値31Eを有する。第3位の隣接宛先LD3内の更新時刻31Dは、第3位の隣接宛先LD3を通信に使用した最新時刻である。第3位の隣接宛先LD3内のカウント値31Eは、第3の隣接宛先LD3を使用してデータ送信に成功した成功回数である。
第1位の隣接宛先LD1には、同一GD及びGSの経路情報内に複数の隣接宛先がある場合、当該経路情報に関わる上り経路で直近に受信したデータに基づき生成された下り経路の隣接宛先が設定される。第2位の隣接宛先LD2及び第3位の隣接宛先LD3は、下り経路の隣接宛先のカウント値31E及び更新時刻31Dに基づき設定するものである。尚、更新時間31Dからの経過時間が一定時間内で、かつ、カウント値31Eが高い、すなわち成功実績が高い方の隣接宛先を第2位の隣接宛先LD2に設定するものである。
図5は、フレーム転送テーブル33のテーブル構成の一例を示す説明図である。図5に示すフレーム転送テーブル33は、転送フレームの識別情報(FID:Frame Identification)33A毎に、送信元(GS)33B、フラグ33C及び隣接送信元(LS)33Dを管理するものである。更に、フレーム転送テーブル33は、FID33A毎に、第1の隣接宛先(LD1)33E、第2位の隣接宛先(LD2)33F、第3位の隣接宛先(LD3)33G及び最新隣接宛先(LAST)33Hを管理するものである。FID33Aは、転送フレームを識別するIDである。送信元(GS)33Bは、転送フレームの送信元を識別するIP/MACアドレスである。フラグ33Cは、転送フレームの転送を試したカウント値である。
隣接送信元(LS)33Dは、転送フレームを中継した送信元の隣接ユニットのIP/MACアドレスである。第1位の隣接宛先(LD1)33Eは、転送フレームを最終宛先に転送する際に使用する優先順位が第1位の隣接宛先ユニットのIP/MACアドレスである。第2位の隣接宛先(LD2)33Fは、転送フレームを最終宛先に転送する際に使用する優先順位が第2位の隣接宛先ユニットのIP/MACアドレスである。第3位の隣接宛先(LD3)33Gは、転送フレームを最終宛先に転送する際に使用する優先順位が第3位の隣接宛先ユニットのIP/MACアドレスである。最新隣接宛先33Hは、転送フレームを最終宛先に転送する際に最後に使用した隣接宛先ユニットのIP/MACアドレスである。尚、最新隣接宛先33Hは、例えば、隣接宛先(LD1〜LD3)の何れか一つである。
図6は、フレーム構成の一例を示す説明図である。図6に示すフレーム34は、最終宛先D−GDと、送信元D−GSと、隣接宛先D−LDと、隣接送信元D−LSと、フラグ34Aと、データ34Bとを有する。D−GDは、フレーム34の最終宛先を示すものである。D−GSは、フレーム34の送信元を示すものである。D−LDは、フレーム34の最終宛先D−GD方向の隣接ユニットを示すものである。D−LSは、フレーム34の送信元D−GS方向の隣接ユニットを示すものである。フラグ34Aは、当該フレーム34の送信失敗を識別するフラグである。尚、フラグ34Aは、送信失敗の場合、「1」に設定されるものである。データ34Bは、フレーム34に搭載するデータである。
図7は、通信ユニット5のハードウェア構成の一例を示すブロック図である。図7に示す通信ユニット5は、外部装置入力部51と、無線インタフェース52と、補助記憶装置53と、メモリ54と、プロセッサ55とを有する。外部装置入力部51は、例えば、電力量を計測する電力計等の外部装置と接続するインタフェースである。無線インタフェース52は、マルチホップシステム3と無線接続するインタフェースである。補助記憶装置53は、各種情報を記憶するフラッシュメモリである。メモリ54は、例えば、経路構築プログラム等の各種プログラムの情報を記憶するメモリである。プロセッサ55は、通信ユニット5全体を制御する。尚、中継ユニット6のハードウェア構成は、図7に示す通信ユニット5とほぼ同一の構成であり、例えば、外部装置入力部51を除いた構成である。
図8は、通信ユニット5の機能構成の一例を示すブロック図である。図8に示すプロセッサ55は、メモリ54に格納されたプログラムに基づき各種プロセスとなる機能を構成する。図8に示すプロセッサ55は、無線通信部61と、フレーム解析部62と、データ生成部63と、データ取得部64と、設定情報取得部65と、経路制御部66と、記憶部67と、制御部68とを機能する。無線通信部61は、無線インタフェース52を通じてマルチホップシステム3との無線通信を制御する。
フレーム解析部62は、無線インタフェース52を通じてマルチホップシステム3内のGW7、通信ユニット5や中継ユニット6のフレームを解析する。データ生成部63は、データを生成する。データ取得部64は、データを取得する。設定情報取得部65は、設定情報を取得する。経路制御部66は、自律型マルチホップ方式の通信経路を制御する。経路制御部66は、経路テーブル31を参照し、最終宛先31Aの隣接宛先LD1〜LD3に基づき最終宛先のデータを送信する。記憶部67は、図4に示す経路テーブル31及び図5に示すフレーム転送テーブル33等を管理するものである。記憶部67は、主GWアドレス領域に主GW7のIP/MACアドレス、副GWアドレス領域に副GW7のIP/MACアドレスを対応付けて管理する。尚、主GW7は、通信ユニット5が運用時に使用するGW7であり、副GW7は、例えば、主GW7の障害時や保守時に使用する他のGW7である。
制御部68は、抽出部68Aと、生成部68Bと、制御部68Cとを有する。抽出部68Aは、上り経路が構築された後、上り経路で上りデータを受信した場合に、上りデータ内の送信元D−GSを抽出する。尚、上りデータは、例えば、電力計で計測された電力量である。そして、各通信ユニット5は、例えば、定期的に上り経路で上りデータをGW7経由でサーバ4に送信する。生成部68Bは、抽出された送信元D−GSを最終宛先GDとして上り経路と逆経路の下り経路を構築する経路情報を生成する。制御部68Cは、生成された下り経路の経路情報を経路テーブル31に登録する。更に、制御部68Cは、上り経路で直近に受信したデータに基づき生成された経路情報内の隣接宛先を第1位の隣接宛先LD1に設定する。また、制御部68Cは、隣接宛先を使用した時刻を監視し、隣接宛先LD毎の通信使用時刻を更新時刻31Dに登録し、その送信成功回数をカウント値31Eに登録する。尚、制御部68Cは、下り経路の経路情報の第1位の隣接宛先LD1を選定する際、上り経路の更新時刻を使用するが、更新時刻が同一時刻の場合、カウント値31Eが高い方を選定するものである。
制御部68Cは、同一最終宛先GD及び送信元GSの下り経路の経路情報が複数ある場合、上り経路で直近に受信したデータに基づき生成された下り経路の隣接宛先を隣接宛先LD1に設定する。更に、制御部68Cは、更新時刻31Dからの経過時間が一定時間以内、かつ、カウント値31Eが高い方の隣接宛先を第2位の隣接宛先LD2に設定し、次位の隣接宛先を第3位の隣接宛先LD3に設定する。尚、一定時間とは、例えば、3日である。また、制御部68Cは、第2位の隣接宛先LD2及び第3位の隣接宛先LD3の更新時刻31Dからの経過時間が一定時間を超えた場合、第2位の隣接宛先LD2及び第3位の隣接宛先LD3を経路情報から削除する。また、制御部68Cは、上り経路のデータ送信が失敗した場合、上り経路に対応する下り経路の経路情報内の送信失敗の隣接宛先を削除する。
通信ユニット5は、経路情報内の隣接宛先LD1〜LD3に基づき、最終宛先GDにデータを送信する。図9は、各上り経路の一例を示す説明図である。図9では、2台のGW7A及び7Bと、複数台の通信ユニット5A〜5Lとを有し、通信ユニット5Hは、最終宛先GW7Aに対して3本の上り経路80Aを構築したとする。第1の上り経路80Aは、通信ユニット5H→通信ユニット5D→通信ユニット5A→GW7Aである。第2の上り経路80Bは、通信ユニット5H→通信ユニット5B→GW7Aである。第3の上り経路80Cは、通信ユニット5H→通信ユニット5D→通信ユニット5B→GW7Aである。この際、通信ユニット5Hは、最終宛先GW7Aに対して上り経路でデータを送信する場合、例えば、第1の上り経路80Aを優先的に使用する。通信ユニット5Hは、第1の上り経路80Aでのデータ送信が失敗した場合、例えば、第2の上り経路80Bを使用する。更に、通信ユニット5Hは、第2の上り経路80Bでのデータ送信が失敗した場合、例えば、第3の上り経路80Cを使用する。
図10は、各下り経路の一例を示す説明図である。図10では、図9の3本の上り経路80A〜80Cのデータ送信に応じて3本の下り経路81A〜81Cを構築したものとする。第1の下り経路81Aは、GW7A→通信ユニット5A→通信ユニット5D→通信ユニット5Hである。第2の下り経路81Bは、GW7A→通信ユニット5B→通信ユニット5Hである。第3の下り経路81Cは、GW7A→通信ユニット5B→通信ユニット5D→通信ユニット5Hである。この際、GW7Aは、最終宛先GDの通信ユニット5Hに対して下り経路でデータを送信する場合、例えば、第1の下り経路81Aを使用する。GW7Aは、第1の下り経路81Aでのデータ送信が失敗した場合、例えば、第2の下り経路81Bを使用する。更に、GW7Aは、第2の下り経路81Bでのデータ送信が失敗した場合、例えば、第3の下り経路81Cを使用する。
次に本実施例の通信システム1の動作について説明する。図11Aは、Helloフレームによる上り経路構築の一例を示す説明図である。説明の便宜上、1台のGW7A、4台の通信ユニット5A、5D、5D及び5Hの通信システム1で説明する。図11Aに示す通信ユニット5Aは、GW7AからのHelloフレームに応じて、最終宛先GDにGW7A、隣接宛先LD1にGW7Aを上り経路の経路情報として経路テーブル31に登録する。更に、通信ユニット5Dは、通信ユニット5AからのHelloフレームに応じて、最終宛先GDにGW7A、隣接宛先LD1に通信ユニット5Aを上り経路の経路情報として経路テーブル31に登録する。通信ユニット5Hは、通信ユニット5DからのHelloフレームに応じて、最終宛先GDにGW7A、隣接宛先LD1に通信ユニット5Dを上り経路の経路情報として経路テーブル31に登録する。その結果、通信ユニット5A、5D及び5Hは、GW7Aとの上り経路を新規に構築したことになる。
図11Bは、上りデータ受信による下り経路構築の一例を示す説明図である。図11Bの通信ユニット5Hは、D−GDにGW7A、D−GSに通信ユニット5H、D−LDに通信ユニット5D及びD−LSに通信ユニット5Hを含む上りデータを上り経路で送信する。通信ユニット5Dは、通信ユニット5Hから上りデータを受信した場合、最終宛先GDにGW7A、送信元GSに通信ユニット5H、隣接宛先LD1にGW7Aの上り経路の経路情報として経路テーブル31内に更新登録する。更に、通信ユニット5Dは、D−GSの通信ユニット5Hを最終宛先GDとし、隣接宛先LD1に通信ユニット5Hの下り経路の経路情報として経路テーブル31に更新登録する。その結果、通信ユニット5Dは、通信ユニット5Hとの下り経路を新規に構築したことになる。通信ユニット5Dは、D−GDにGW7A、D−GSに通信ユニット5H、D−LDに通信ユニット5A及びD−LSに通信ユニット5Dを含む上りデータを上り経路で送信する。
通信ユニット5Aは、通信ユニット5Dから上りデータを受信した場合、最終宛先GDにGW7A、送信元GSに通信ユニット5H、隣接宛先LDにGW7Aの上り経路の経路情報として経路テーブル31内に更新登録する。更に、通信ユニット5Aは、D−GSの通信ユニット5Hを最終宛先GDとし、隣接宛先LD1に通信ユニット5Dの下り経路の経路情報として経路テーブル31に更新登録する。その結果、通信ユニット5Aは、通信ユニット5Hとの下り経路を新規に構築したことになる。そして、通信ユニット5Aは、D−GDにGW7A、D−GSに通信ユニット5H、D−LDにGW7A及びD−LSに通信ユニット5Aを含む上りデータを上り経路で送信する。
図11Cは、下りデータ送信の一例を示す説明図である。図11CのGW7Aは、D−GDに通信ユニット5H、D−GSにGW7A、D−LDに通信ユニット5A及びD−LSにGW7Aを含む下りデータを下り経路で送信する。通信ユニット5Aは、GW7Aから下りデータを受信した場合、最終宛先GDに通信ユニット5H、送信元GSにGW7A、隣接宛先LD1に通信ユニット5Dの下りの経路情報として経路テーブル31内に更新登録する。そして、通信ユニット5Aは、D−GDに通信ユニット5H、D−GSにGW7A、D−LDに通信ユニット5D及びD−LSに通信ユニット5Aを含む下りデータを下り経路で送信する。通信ユニット5Dは、通信ユニット5Aから下りデータを受信した場合、最終宛先GDに通信ユニット5H、送信元GSにGW7A、隣接宛先LD1に通信ユニット5Hの下りの経路情報として経路テーブル31内に更新登録する。そして、通信ユニット5Dは、D−GDに通信ユニット5H、D−GSにGW7A、D−LDに通信ユニット5H及びD−LSに通信ユニット5Dを含む下りデータを下り経路で送信する。
図11Dは、上りデータ受信による対向側経路の下り経路構築の一例を示す説明図である。図11Dでは、通信ユニット5Aと対向する対向側経路上の通信ユニット5Bは、GW7Aとの間のHelloフレームで上り経路を構築する。更に、通信ユニット5Dは、通信ユニット5Bとの間のHelloフレームで上り経路を構築する。その後、通信ユニット5Dは、最終宛先GDにGW7A、送信元GSに通信ユニット5H、第1位の隣接宛先LD1に通信ユニット5B、第2位の隣接宛先LD2に通信ユニット5Aの上り経路の経路情報として経路テーブル31に登録するものとする。通信ユニット5Hは、D−GDにGW7A、D−GSに通信ユニット5H、D−LDに通信ユニット5D及びD−LSに通信ユニット5Hを含む上りデータを上り経路で送信する。通信ユニット5Dは、D−GDにGW7A、D−GSに通信ユニット5H、D−LDに通信ユニット5B及びD−LSに通信ユニット5Dを含む上りデータを上り経路で送信する。
通信ユニット5Bは、通信ユニット5Dから上りデータを受信した場合、最終宛先GDにGW7A、送信元GSに通信ユニット5H、隣接宛先LDにGW7Aを経路情報として経路テーブル31内に更新登録する。更に、通信ユニット5Bは、データ内のD−GSの通信ユニット5Hを最終宛先GDとし、隣接宛先LDに通信ユニット5Dの下り経路の経路情報として経路テーブル31に登録する。その結果、通信ユニット5Bは、通信ユニット5Dとの下り経路を新規に構築したことになる。
そして、通信ユニット5Bは、D−GDにGW7A、D−GSに通信ユニット5H、D−LDにGW7A及びD−LSに通信ユニット5Bを含む上りデータを上り経路で送信する。更に、GW7Aは、最終宛先GDに通信ユニット5H、送信元GSにGW7A、第1位の隣接宛先LD1に通信ユニット5B、第2位の隣接宛先LD2に通信ユニット5Aの下り経路の経路情報として経路テーブル31に更新登録する。
図11Eは、対向側経路の下りデータ送信の一例を示す説明図である。図11Eでは、GW7Aは、D−GDに通信ユニット5H、D−GSにGW7A、D−LDに通信ユニット5B及びD−LSにGW7Aを含む下りデータを下り経路で送信する。通信ユニット5Bは、GW7Aから上りデータを受信した場合、最終宛先GDに通信ユニット5H、送信元GSにGW7A、隣接宛先LDに通信ユニット5Dの下り経路の経路情報として経路テーブル31に更新登録する。そして、通信ユニット5Bは、D−GDに通信ユニット5H、D−GSにGW7A、D−LDに通信ユニット5D及びD−LSに通信ユニット5Bを含む下りデータを下り経路で送信する。更に、通信ユニット5Dは、D−GDに通信ユニット5H、D−GSにGW7A、D−LDに通信ユニット5H及びD−LSに通信ユニット5Dを含む下りデータを下り経路で送信する。
図11Fは、対向側経路の下り経路障害時の下りデータ送信の一例を示す説明図である。図11Fでは、GW7Aは、D−GDが通信ユニット5Hのフレームを下り経路で送信する際、経路テーブル31を参照し、第1位の隣接宛先LD1の通信ユニット5Bにデータを送信する。しかし、GW7Aは、通信ユニット5Bへのデータ送信が失敗した場合、第2位の隣接宛先LD2の通信ユニット5Aにデータを送信する。GW7Aは、D−GDに通信ユニット5H、D−GSにGW7A、D−LDに通信ユニット5A及びD−LSにGW7Aを含む下りデータを下り経路の通信ユニット5A経由で通信ユニット5Dに送信する。そして、通信ユニット5Dは、D−GDに通信ユニット5H、D−GSにGW7A、D−LDに通信ユニット5H及びD−LSに通信ユニット5Dを含む下りデータを下り経路の通信ユニット5Hに送信する。
図12及び図13は、データ受信処理に関わる通信ユニット5(又はGW7)の処理動作の一例を示すフローチャートである。データ受信処理は、上り経路の構築後、上り経路でデータを受信した場合に、データ内のD−GSを最終宛先GDとして下り経路を構築する経路情報を登録する処理である。尚、説明の便宜上、特に言及しない限り、通信ユニット5を主体にしてデータ受信処理を説明するが、GW7主体で当該データ受信処理を実行しても良い。
通信ユニット5内のプロセッサ55内の無線通信部61は、データを受信したか否かを判定する(ステップS11)。プロセッサ55内の制御部68Cは、データを受信した場合(ステップS11肯定)、データ内の最終宛先D−GDがGW7であるか否かを判定する(ステップS12)。制御部68Cは、最終宛先D−GDがGW7の場合(ステップS12肯定)、上り経路の上りデータと判定し、データ内のフラグ34Aが「1」であるか否かを判定する(ステップS13)。尚、フラグ34Aが「1」の場合、送信の失敗のデータを識別するものである。上り経路とは、例えば、図11Bに示すように通信ユニット5DからGW7Aへの経路である。
制御部68Cは、データ内のフラグ34Aが「1」でない場合(ステップS13否定)、GS31BがD−GS、GD31AがD−GDの上り経路の経路情報内の第1位の隣接宛先LD1に対してデータを送信する(ステップS14)。
制御部68Cは、GS31BがD−GD、GD31AがD−GSの下り経路の経路情報が経路テーブル31内に登録済みであるか否かを判定する(ステップS15)。制御部68Cは、GS31BがD−GD、GD31AがD−GSの下り経路の経路情報が経路テーブル31内に登録済みでない場合(ステップS15否定)、下り経路の経路情報を経路テーブル31内に登録する(ステップS16)。
制御部68Cは、経路テーブル31内のGD31AにD−GS、GS31BにD−GD、第1位の隣接宛先LD1にD−LS、更新時刻31Dに現在時刻、カウント値31Eに+1の下り経路の経路情報として新規登録する。つまり、制御部68Cは、上り経路と逆経路の下り経路を構築する。尚、下り経路は、例えば、図11Bに示すようにGW7Aから通信ユニット5Dへの経路である。
制御部68Cは、ステップS16の下り経路の経路情報を経路テーブル31内に登録後、データを受信したか否かを判定すべく、ステップS11に移行する。制御部68Cは、GS31BがD−GD、GD31AがD−GSの下り経路の経路情報が経路テーブル31内に登録済みの場合(ステップS15肯定)、該当経路情報内の第1位の隣接宛先LD1内にD−LSがあるか否かを判定する(ステップS17)。
制御部68Cは、該当下り経路の経路情報内の第1位の隣接宛先LD1内にD−LSがある場合(ステップS17肯定)、経路情報内の第1位の隣接宛先LD1内の更新時刻31Dに現在時刻、カウント値31Eに+1を登録する(ステップS18)。そして、制御部68Cは、データを受信したか否かを判定すべく、ステップS11に移行する。
制御部68Cは、該当下り経路の経路情報内の第1位の隣接宛先LD1内にD−LSがない場合(ステップS17否定)、該当下り経路の経路情報内の第2位の隣接宛先LD2の内容を第3位の隣接宛先LD3に上書きする(ステップS19)。更に、制御部68Cは、第1位の隣接宛先LD1の内容を第2位の隣接宛先LD2に上書きする(ステップS19)。すなわち、制御部68Cは、該当の経路情報内の第1位の隣接宛先LD1を空きにする。更に、制御部68Cは、該当下り経路の経路情報内の第1位の隣接宛先LD1にD−LS、更新時刻31Dに現在時刻、カウント値31Eに+1を登録し(ステップS20)、図12に示す処理動作を終了する。
制御部68Cは、データ内のフラグ34Aが「1」である場合(ステップS13肯定)、送信失敗のデータと判定し、代替経路でデータ送信又は代替経路がない場合には1ホップ前に戻す(ステップS21)。尚、代替経路とは、第1位の隣接宛先LD1でデータ送信が失敗した場合の代替経路である。例えば、通信ユニット5は、第1位の隣接宛先LD1でデータ送信が失敗した場合、第2位の隣接宛先LD2でデータ送信し、第2位の隣接宛先LD2でデータ送信が失敗した場合、第3位の隣接宛先LD3でデータ送信する。そして、第3位の隣接宛先LD3でデータ送信が失敗した場合、1ホップ前のユニットにデータを戻す。
制御部68Cは、代替経路でデータ送信、又は1ホップ前にデータを戻した場合、失敗した代替経路(上り経路)に対応した下り経路の経路情報を経路テーブル31内から削除し(ステップS22)、図12に示す処理動作を終了する。
また、制御部68Cは、データを受信したのではない場合(ステップS11否定)、データを受信したか否かを判定すべく、ステップS11に移行する。また、制御部68Cは、データ内のD−GDがGW7でない場合(ステップS12否定)、下り経路の下りデータと判定し、図13に示すM1に移行する。
図13に示すM1において制御部68Cは、下り経路のデータ内のフラグ34Aが「1」であるか否かを判定する(ステップS31)。制御部68Cは、データ内のフラグ34Aが「1」でない場合(ステップS31否定)、GS31BがD−GS、GD31AがD−GDの下り経路の経路情報内の第1位の隣接宛先LD1に対してデータを送信する(ステップS32)。制御部68Cは、下り経路の経路情報内の第1位の隣接宛先LD1内の更新時刻31Dに現在時刻、カウント値31Eに+1を登録し(ステップS33)、図12に示すM2に移行する。
制御部68Cは、下り経路の下りデータ内のフラグ34Aが「1」である場合(ステップS31肯定)、GS31BがD−GS及びGD31AがD−GDの下り経路の経路情報内の隣接宛先LD1〜LD3内にD−LSがあるか否かを判定する(ステップS34)。制御部68Cは、隣接宛先LD1〜LD3内にD−LSがある場合(ステップS34肯定)、D−LSに該当する隣接宛先LD*に対応したカウント値31Eを−1、更新時刻31Dをリセットする(ステップS35)。尚、制御部68Cは、前回の隣接宛先LD*のデータ送信が失敗したことになるため、そのカウント値31Eを−1デクリメントし、その更新時刻31Dをリセットするものである。隣接宛先LD*は、例えば、LD1、LD2やLD3である。
制御部68Cは、D−LSに該当する隣接宛先LD*の次位の隣接宛先(LD*+1)があるか否かを判定する(ステップS36)。制御部68Cは、隣接宛先(LD*+1)がある場合(ステップS36肯定)、隣接宛先(LD*+1)にデータを送信し(ステップS37)、隣接宛先(LD*+1)内の更新時刻31Dに現在時刻、カウント値31Eに+1を登録する(ステップS38)。そして、制御部68Cは、図12に示すM2に移行する。尚、制御部68Cは、例えば、第2位の隣接宛先LD2へのデータ送信が失敗し、第3位の隣接宛先LD3にデータ送信する場合、第3位の隣接宛先LD3内の更新時刻31D及びカウント値31Eに更新登録する。
制御部68Cは、GS31BがD−GS及びGD31AがD−GDの下り経路の経路情報内の隣接宛先LD1〜LD3内にD−LSがない場合(ステップS34否定)、自局がGW7であるか否かを判定する(ステップS39)。制御部68Cは、自局がGW7でない場合(ステップS39否定)、GD31AがD−GS、GS31BがD−GDの経路情報内の第1位の隣接宛先LD1に対してフラグ34Aが「1」のデータを送信する(ステップS40)。その結果、通信ユニット5は、下り経路の最終宛先GD宛のデータ送信を中止して1ホップ前にデータを戻す。そして、制御部68Cは、図12に示すM2に移行する。
また、自局がGW7の場合(ステップS39肯定)、GW7のプロセッサ15が処理動作する。GW7の制御部30は、自局がGW7の場合(ステップS39肯定)、データ内の最終宛先D−GDに送信できる他のGW7があるか否かを判定する(ステップS41)。制御部30は、最終宛先D−GDに送信できる他のGW7がない場合(ステップS41否定)、最終宛先GDに対してフラッディングで経路構築する(ステップS42)。制御30は、GS31BがD−GS及びGD31AがD−GDの下り経路の経路情報内の隣接宛先LD1にデータを送信し(ステップS43)、図12に示すM2に移行する。
制御部68Cは、他のGW7がある場合(ステップS41肯定)、他のGW7に対して最終宛先GDのデータの送信を要求し(ステップS44)、図12に示すM2に移行する。その結果、通信ユニット5は、下り経路の最終宛先GD宛のデータ送信を他のGW7経由で送信することになる。
また、制御部68Cは、隣接宛先(LD*+1)がない場合(ステップS36否定)、自局がGW7であるか否かを判定すべく、ステップS39に移行する。
本実施例の通信ユニット5は、GW7との上り経路の構築後、上り経路を通じてデータを受信した場合に、データ内のD−GSを最終宛先GD31Aとして下り経路の経路情報を経路テーブル31内に登録する。その結果、片側のHelloフレームで上り経路は勿論のこと下り経路をも構築するため、制御フレームの通信量を減らしてネットワーク負荷を軽減できる。また、制御フレーム等の通信量を減らしてネットワーク負荷を軽減するため、例えば、920MHz〜950MHzの狭帯域の近距離無線通信のネットワークに有用である。
更に、通信ユニット5は、上り経路の構築後、上り経路で直近に受信したデータに基づき生成された下り経路の隣接宛先を第1位の隣接宛先LD1に設定する。その結果、通信ユニット5は、直近で通信が成功した上り経路の逆経路である下り経路を使用するため、最終宛先に対するデータ到達の確率が高まる。
更に、通信ユニット5は、下り経路の第2位の隣接宛先LD2及び第3位の隣接宛先LD3を更新時刻31D及びカウント値31Eに基づく通信実績に応じて最終宛先の隣接宛先を設定する。そして、通信ユニット5は、最終宛先に対する第1位の隣接宛先LD1でデータ送信が失敗した場合でも、最終宛先に対して第2位の隣接宛先LD2でデータ送信を実行する。更に、通信ユニット5は、最終宛先に対して第2位の隣接宛先LD2でデータ送信が失敗した場合でも、最終宛先に対して第3位の隣接宛先LD3でデータを送信する。その結果、通信ユニット5は、最終宛先に対する複数の下り経路の代替経路を確保することでデータ到達の信頼性を確保できる。しかも、最終宛先に対するデータ到達の確率を高めながら、従来のようなフラッディングの使用機会を減らしてネットワーク負荷を軽減できる。
更に、通信ユニット5は、下り経路の複数の隣接宛先LD1〜LD3に対するデータ送信が失敗した場合でも、1ホップ前のユニットにデータを戻し、当該ユニットからデータを最終宛先に送信する。その結果、最終宛先に対するデータ到達の確率を高めながら、フラッディングの使用機会を減らしてネットワーク負荷を軽減できる。
更に、通信ユニット5は、1ホップ前のユニットにデータを戻して最終宛先に対するデータ送信が失敗した場合でも、他のGW7に対して別経路で最終宛先に対するデータの送信を依頼する。その結果、最終宛先に対するデータ到達の確率が高まるため、フラッディングの使用機会を減らしてネットワーク負荷を軽減できる。
尚、上記実施例では、上り経路の構築後、上り経路でデータ、すなわち実データを受信した場合に下り経路を構築したが、上り経路の構築に応じて上り経路に実データではなく、ダミーデータを自動送信しても良い。そして、通信ユニット5は、上り経路でダミーデータを受信した場合に下り経路を構築できる。
また、通信ユニット5は、上り経路の構築後に同一のD−GD及びD−GSのダミーデータを3本の代替経路に送信しても良い。この場合、通信ユニット5は、3本の上り経路に実データを送信しなくても、3本の下り経路を構築できる。
また、構築すべき代替経路の本数を指定する代替経路数をダミーデータ内に登録しても良い。この場合、通信ユニット5は、上り経路でダミーデータを受信した場合に、ダミーデータ内の代替経路数に基づき、代替経路数の範囲内で、下り経路の代替経路を構築する。また、当該ダミーデータを受信した通信ユニット5は、代替経路数の代替経路が構築できない場合、残りの代替経路数を更新したダミーデータを次の通信ユニット5に送信する。そして、通信ユニット5は、当該ダミーデータを受信し、ダミーデータ内の残りの代替経路数に基づき下り経路の代替経路を構築する。例えば、代替経路数が3本の場合、3本の代替経路数を含むダミーデータを受信した通信ユニット5は、代替経路数3本の範囲内で2本の代替経路を構築した場合、残り代替経路数1本のダミーデータを次の通信ユニット5に送信する。そして、次の通信ユニット5は、ダミーデータ内の残り代替経路数が1本のため、1本の代替経路を構築する。その結果、上り経路の上りデータを待つことなく、ダミーデータで3本の代替経路を構築できる。
また、上記実施例では、上り経路の構築後、上り経路で実データを受信した場合に上り経路の下り経路を構築したが、上り経路の構築に応じてD−GD及びD−GSの同一データ内容の実データを3経路に送信しても良い。この場合、通信ユニット5は、3本の上り経路で同一実データを受信した場合、3本の下り経路を構築できる。その結果、各上り経路の上りデータを待つことなく、同一内容の実データで3本の代替経路を構築する。この際、下り経路の隣接宛先LDの優先順位は、ホップ数及び電波強度に加え、最終宛先にデータが到達した順に優先順位を決定しても良い。尚、データが到達した順としたのは、電波が混んでなく、中継の通信ユニット5の処理も少なく、一定の電波強度を満たした場合には最適な経路とみなせるからである。
また、上記実施例では、アドホック通信として、自律型マルチホップ方式の無線通信を採用した通信システム1を例示して説明したが、無線通信に限定されるものではなく、赤外線通信や有線通信等にも適用可能である。
また、上記実施例では、経路情報内の隣接宛先LDを3個としたが、これらに限定されるものではなく、適宜変更可能である。
また、上記実施例では、上り経路が構築された後、上り経路で受信したデータで下り経路を構築するようにしたが、下り経路が構築された後、下り経路で受信したデータで上り経路を構築しても良い。
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
更に、各装置で行われる各種処理機能は、CPU(Central Processing Unit)(又はMPU(Micro Processing Unit)、MCU(Micro Controller Unit)等のマイクロ・コンピュータ)上で、その全部又は任意の一部を実行するようにしても良い。また、各種処理機能は、CPU(又はMPU、MCU等のマイクロ・コンピュータ)で解析実行するプログラム上、又はワイヤードロジックによるハードウェア上で、その全部又は任意の一部を実行するようにしても良いことは言うまでもない。
ところで、本実施例で説明した各種の処理は、予め用意されたプログラムを通信機器で実行することで実現できる。そこで、以下では、上記実施例と同様の機能を有するプログラムを実行する通信機器の一例を説明する。図14は、経路構築プログラムを実行する通信機器の一例を示す説明図である。
図14に示す経路構築プログラムを実行する通信機器100は、通信インタフェース111と、RAM(Random Access Memory)112と、ROM(Read Only Memory)113と、プロセッサ114とを有する。通信インタフェース111は、他の通信機器と無線通信する。プロセッサ114は、通信機器100全体を制御する。
そして、ROM113には、上記実施例と同様の機能を発揮する経路構築プログラムが予め記憶されている。尚、ROM113ではなく、図示せぬドライブで読取可能な記録媒体に経路構築プログラムが記録されていても良い。また、記録媒体としては、例えば、CD−ROM、DVDディスク、USBメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ等でも良い。経路構築プログラムとしては、図14に示すように、抽出プログラム113A、生成プログラム113B及び制御プログラム113Cである。尚、プログラム113A〜113Cについては、適宜統合又は分散してもよい。また、RAM112には、最終宛先及び送信元を対応付けた隣接宛先に関わる経路情報が記憶してある。
そして、プロセッサ114が、これらのプログラム113A〜113CをROM113から読み出し、これらの読み出された各プログラムを実行する。そして、プロセッサ114は、図14に示すように、各プログラム113A〜113Cを、抽出プロセス114A、生成プロセス114B及び制御プロセス114Cとして機能することになる。
プロセッサ114は、最終宛先と送信元との間の第1の経路が構築された後、当該第1の経路でデータを受信した場合に、当該データ内の送信元を抽出する。プロセッサ114は、抽出された送信元を最終宛先に変換して隣接宛先を含む、前記第1の経路と逆経路の第2の経路を構築する経路情報を生成する。更に、プロセッサ114は、生成された第2の経路の経路情報をRAM112に登録する。プロセッサ114は、同一の最終宛先に対応する第2の経路の経路情報の隣接宛先が複数登録された場合に、第1の経路で直近に受信したデータで生成された第2の経路の経路情報の隣接宛先を第1位の隣接宛先として優先的に選定する。その結果、データ到達の確率を高めながら、経路構築に要する負荷が軽減できる。
以上、本実施例を含む実施の形態に関し、更に以下の付記を開示する。
(付記1)最終宛先及び送信元を対応付けた隣接宛先に関わる経路情報を記憶した記憶部と、
前記経路情報内の選定された隣接宛先に基づき、他の通信装置と自律型マルチホップ方式で通信する通信部と、
前記最終宛先と前記送信元との間の第1の経路が構築された後、当該第1の経路でデータを受信した場合に、当該データ内の送信元を抽出する抽出部と、
前記抽出された前記送信元を前記最終宛先に変換して隣接宛先を含む、前記第1の経路と逆経路の第2の経路を構築する経路情報を生成する生成部と、
前記生成された第2の経路の経路情報を前記記憶部に登録し、同一の最終宛先に対応する第2の経路の経路情報内の隣接宛先が複数登録された場合に、前記複数の隣接宛先の内、前記第1の経路で直近に受信したデータに基づき生成された前記第2の経路の経路情報の隣接宛先を、当該第2の経路で最終宛先にデータを優先的に送信する第1位の隣接宛先として選定する制御部と
を有することを特徴とする通信装置。
(付記2)前記制御部は、
前記第1の経路で直近の同一のタイミングで受信したデータに基づき生成された第2の経路の経路情報内の隣接宛先が複数登録された場合に、当該第2の経路の経路情報内の複数の隣接宛先の内、各隣接宛先に対応した各第1の経路側の通信実績に基づき、前記第1位の隣接宛先を選定することを特徴とする付記1に記載の通信装置。
(付記3)前記制御部は、
前記同一の最終宛先の第2の経路の経路情報内の隣接宛先が複数登録された場合に、当該経路情報内の前記第1位の隣接宛先にデータを送信し、当該データの送信が失敗した場合、当該経路情報内の当該第1位の隣接宛先以外の他の隣接宛先にデータを送信すること特徴とする付記1に記載の通信装置。
(付記4)前記制御部は
前記同一の最終宛先の第2の経路の経路情報内の各隣接宛先に対するデータ送信が全て失敗した場合、他の通信装置に対して最終宛先に対するデータ送信を依頼することを特徴とする付記3に記載の通信装置。
(付記5)前記抽出部は、
前記第1の経路が構築された後、当該第1の経路でダミーデータを受信した場合に、当該ダミーデータ内の送信元を抽出することを特徴とする付記1に記載の通信装置。
(付記6)前記制御部は、
前記第1の経路が構築された後、当該第1の経路で代替経路数を含むダミーデータを受信した場合に、当該代替経路数に基づき、当該ダミーデータを当該第1の経路上の他の通信装置に送信することを特徴とする付記1に記載の通信装置。
(付記7)最終宛先の通信装置と、送信元の通信装置と、前記最終宛先の通信装置と前記送信元の通信装置との間を通信で中継する中継側の通信装置とを有する通信システムであって、
前記中継側の通信装置は、
最終宛先及び送信元を対応付けた隣接宛先に関わる経路情報を記憶した記憶部と、
前記経路情報内の選定された隣接宛先に基づき、他の通信装置と自律型マルチホップ方式で通信する通信部と、
前記最終宛先の通信装置と前記送信元の通信装置との間の第1の経路が構築された後、当該第1の経路でデータを受信した場合に、当該データ内の送信元を抽出する抽出部と、
前記抽出された前記送信元を前記最終宛先に変換して隣接宛先を含む、前記第1の経路と逆経路の第2の経路を構築する経路情報を生成する生成部と、
前記生成された第2の経路の経路情報を前記記憶部に登録し、同一の最終宛先に対応する第2の経路の経路情報内の隣接宛先が複数登録された場合に、前記複数の隣接宛先の内、前記第1の経路で直近に受信したデータに基づき生成された前記第2の経路の経路情報の隣接宛先を、当該第2の経路で最終宛先にデータを優先的に送信する第1位の隣接宛先として選定する制御部と
を有し、
前記送信元の通信装置は、
前記第1の経路が構築された後、当該第1の経路で前記通信装置に前記データを送信することを特徴とする通信システム。
(付記8)前記送信元の通信装置は、
前記第1の経路が構築された後、当該第1の経路で各通信装置にダミーデータを送信することを特徴とする付記7に記載の通信システム。
(付記9)前記送信元の通信装置は、
前記第1の経路が構築された後、当該第1の経路で各通信装置に実データを送信することを特徴とする付記7に記載の通信システム。
(付記10)最終宛先及び送信元を対応付けた隣接宛先に関わる経路情報を記憶した記憶部を参照し、前記経路情報内の選定された隣接宛先に基づき、他の通信装置と自律型マルチホップ方式で通信する通信装置の経路構築方法であって、
前記通信装置は、
前記最終宛先と前記送信元との間の第1の経路が構築された後、当該第1の経路でデータを受信した場合に、当該データ内の送信元を抽出し、
前記抽出された前記送信元を前記最終宛先に変換して隣接宛先を含む、前記第1の経路と逆経路の第2の経路を構築する経路情報を生成し、
前記生成された第2の経路の経路情報を前記記憶部に登録し、同一の最終宛先に対応する第2の経路の経路情報内の隣接宛先が複数登録された場合に、前記複数の隣接宛先の内、前記第1の経路で直近に受信したデータに基づき生成された前記第2の経路の経路情報の隣接宛先を、当該第2の経路で最終宛先にデータを優先的に送信する第1位の隣接宛先として選定する
各処理を実行することを特徴とする経路構築方法。
(付記11)最終宛先及び送信元を対応付けた隣接宛先に関わる経路情報を記憶した記憶部を参照し、前記経路情報内の選定された隣接宛先に基づき、他の通信装置と自律型マルチホップ方式で通信する通信インタフェースと、プロセッサとを有する通信機器の経路構築プログラムであって、
前記プロセッサに、
前記最終宛先と前記送信元との間の第1の経路が構築された後、当該第1の経路でデータを受信した場合に、当該データ内の送信元を抽出し、
前記抽出された前記送信元を前記最終宛先に変換して隣接宛先を含む、前記第1の経路と逆経路の第2の経路を構築する経路情報を生成し、
前記生成された第2の経路の経路情報を前記記憶部に登録し、同一の最終宛先に対応する第2の経路の経路情報内の隣接宛先が複数登録された場合に、前記複数の隣接宛先の内、前記第1の経路で直近に受信したデータに基づき生成された前記第2の経路の経路情報の隣接宛先を、当該第2の経路で最終宛先にデータを優先的に送信する第1位の隣接宛先として選定する
各処理を実行させることを特徴とする経路構築プログラム。