図1は、実施形態にかかる通信方法の例を示す。図1では、アドホックネットワークに参加している通信装置(ノード装置)を丸で示している。ネットワーク中の通信装置は、隣接する通信装置の数や、隣接する通信装置が通信可能な通信装置の数を用いて、配置状態を判定する。以下の説明では、ある通信装置に「隣接する」通信装置とは、ある通信装置から送信されたフレームを受信することができる範囲内に位置する通信装置のことを指すものとする。また、ある通信装置から送信されたフレームを受信できる範囲に位置する通信装置のことを、その通信装置の「隣接装置」と記載することがある。なお、ある通信装置が他の通信装置を介さずに直接通信することができる通信装置は、その通信装置の隣接装置である。以下、通信装置10同士の区別を容易にするために、通信装置10を特定する際に、「ノードN」という文字列、または、アルファベットのNに、各通信装置10を識別する数字を続けて得られる文字列を使用する。
通信装置は、隣接装置との間で通信することにより、隣接装置の総数を特定する。さらに、通信装置は、隣接装置の各々から、その隣接装置が直接通信可能な通信装置の数も取得する。例えば、図1のノードN1はノードN10〜N17との間で直接フレームを送受信でき、ノードN12はノードN1、N11、N13、N18、N2、N20との間でフレームを送受信できるとする。すると、ノードN1は、ノードN1の隣接装置がN10〜N17の8台であることを特定する。一方、ノードN12の隣接装置は、ノードN1、N11、N13、N18、N2、N20の6台である。このため、ノードN12は、ノードN12の隣接装置に対して、ノードN12の隣接装置の数が6であることを通知する。すると、ノードN1は、ノードN12の隣接装置数が6であることを認識する。同様に、ノードN10、N11、N13〜N17も、それぞれ、隣接している通信装置に、隣接装置の総数を通知するので、ノードN1は、各隣接装置について、その隣接装置が他の通信装置を介さずに通信可能な通信装置の数を特定できる。ノードN2、N3を含むその他の通信装置でも、ノードN1と同様に、隣接装置の総数と、各隣接装置が通信可能な通信装置数を特定する。
各通信装置は、予め閾値Th1と閾値Th2を記憶しているものとする。閾値Th1は、ブロードキャストに起因する輻輳が発生する恐れが無視できない程度に、周辺の通信装置が多いエリアであるかを判定するために使用される。閾値Th2は、隣接装置が直接通信可能な装置の数が、情報の到達性を低くする恐れが発生する程度まで小さいかを判定するために使用される。
通信装置は、隣接装置数が閾値Th1未満である場合、周辺に通信装置が少ないため、ブロードキャストによる輻輳が発生しにくいエリアに配置されていると判定するものとする。すると、通信装置は、隣接装置との通信状況に合わせて決定した回数、ブロードキャストフレームの送信を繰り返す。例えば、閾値Th1が4だとする。この場合、ノードN3の隣接装置はノードN21とN22で、隣接装置数は2である。このため、通信装置N3は、ブロードキャストフレームを受信すると、受信したフレームをノードN21、N22との通信品質に応じて決定した回数、ブロードキャストする。
一方、隣接装置数が閾値Th1以上である場合、通信装置は、周辺に通信装置が多いエリアに配置されていると判定する。すると、通信装置は、隣接装置のいずれかで、通信可能な通信装置の数が閾値Th2未満になっているかを判定する。直接通信可能な通信装置の数が閾値Th2未満の隣接装置がブロードキャストフレームの受信に失敗すると、ネットワーク全体にデータが到達しない恐れがある。このため、通信装置は、隣接装置との間の通信品質に応じて決定した回数、ブロードキャストする。例えば、ノードN2の隣接装置がノードN12とN18〜N20の4台であるとすると、ノードN2は、隣接装置の各々について、通信可能な通信装置の数を閾値Th2と比較する。ここで、閾値Th2が3であり、ノードN19が通信可能な通信装置はノードN2とN21の2台であるとする。この場合、通信装置N2は、ブロードキャストフレームを受信すると、ノードN2の隣接装置との間の通信品質に応じた回数、ブロードキャストすることにより、ノードN19へのフレームの送信確率を高める。
いずれの隣接装置でも、通信可能な通信装置の数が閾値Th2以上の場合、通信装置は、通信装置が密集したエリアに配置されていると判定する。すると、通信装置は、ブロードキャストする通信装置として選択された場合には1回フレームをブロードキャストするが、ブロードキャストする通信装置に選択されないとブロードキャストを行わない。例えば、ノードN1は、ブロードキャストする通信装置として選択されたと判定すると、1回ブロードキャストする。なお、ブロードキャストする装置の選択方法は後述する。
このように、実施形態にかかる方法では、各通信装置が、周辺の通信装置の配置の状況を、隣接装置数と、隣接装置が通信可能な通信装置数を用いて判定し、判定結果に応じてブロードキャストの回数を0回以上の範囲で変更する。このため、データの到達性を確保しつつ、ネットワーク中の輻輳を防止できる。
なお、本明細書中では、読みやすくするための便宜上、ネットワーク中で送受信される情報の単位を表現する際に使用する文言を「フレーム」に統一しているにすぎない。このため、実装に応じて、適宜、「フレーム」という文言を「パケット」に読み替えることができるものとする。
<装置構成>
通信装置10は、送信部11、受信部12、フレーム処理部20、記憶部40を備える。フレーム処理部20は、Helloフレーム生成部21、フレーム識別子(Frame identifier、FID)管理部22、フレーム振り分け部23、Helloフレーム処理部24、転送処理部25、アプリケーション処理部26を有する。フレーム処理部20は、さらに、ブロードキャスト処理部30を有する。ブロードキャスト処理部30は、制御部31、配置状態特定部32、および、乗数判定処理部33を有する。乗数判定処理部33は、設定部34と判定部35を有する。記憶部40は、リンクテーブル41、ルーティングテーブル42、回数情報43、ブロードキャスト受信テーブル44を記憶する。
Helloフレーム生成部21は、予め決定された所定の周期でHelloフレームを生成し、送信部11に出力する。送信部11はHelloフレーム生成部21から入力されたHelloフレームを、隣接する通信装置10に送信する。さらに、送信部11は、転送処理部25、アプリケーション処理部26、制御部31などから入力されたフレームを、フレームのローカル宛先に送信する。ここで、「ローカル宛先」(Local Destination、LD)は、フレームを最終的な宛先に送信するために行われる1ホップの転送の際に、宛先として指定される通信装置10のことを指す。さらに、フレームの最終的な宛先を「グローバル宛先」(Global Destination、GD)と記載することがある。関連して、フレームを生成した通信装置10を「グローバル送信元」(Global Source、GS)と記載することがある。また、フレームが1ホップ転送される場合の転送元の通信装置10のことを、「ローカル送信元」(Local Source、LS)と記載することもある。
受信部12は、通信装置10に送信されてきたフレームを受信する。受信部12は、受信したフレームをFID管理部22に出力する。FID管理部22は、入力されたフレームがブロードキャストフレームである場合、ブロードキャストフレーム中のFIDを抽出する。FID管理部22は、所定の期間内に送受信したブロードキャストフレーム中のFIDとフレームの受信数をブロードキャスト受信テーブル44に記録する。FID管理部22は、受信部12から入力されたブロードキャストフレームのFIDが、過去に送受信されたブロードキャストフレームのFIDと一致する場合、受信部12から入力されたブロードキャストフレームを廃棄する。一方、受信部12から入力されたブロードキャストフレームのFIDが、過去に送受信されたブロードキャストフレームのFIDと一致しない場合、FID管理部22は、入力されたフレームをフレーム振り分け部23に出力する。なお、FID管理部22がブロードキャストフレームを特定する方法は任意である。例えば、FID管理部22は、グローバル宛先アドレスがブロードキャストアドレスであるフレームを、ブロードキャストフレームとして扱うことができる。
フレーム振り分け部23は、入力されたフレームに含まれているアドホックヘッダ中のフレームタイプを確認する。フレームタイプの値は、フレームの種類によって異なり、例えば、Helloフレームとデータフレームでは、異なる値となっている。フレーム振り分け部23は、予め、通信装置10が受信する可能性があるフレームの種類の各々に対応するフレームタイプの値を記憶することができ、また、適宜、記憶部40から取得することもできる。フレーム振り分け部23は、HelloフレームをHelloフレーム処理部24に出力する。フレーム振り分け部23は、データフレームが入力された場合、グローバル宛先を確認する。フレーム振り分け部23は、通信装置10に割り振られたアドレス、または、ブロードキャストアドレスがグローバル宛先に指定されているフレームを、アプリケーション処理部26に出力する。一方、グローバル宛先に他の通信装置10が指定されているデータフレームは、転送処理部25に出力される。
Helloフレーム処理部24は、Helloフレームから取得した情報を、リンクテーブル41やルーティングテーブル42に記録する。Helloフレーム処理部24は、Helloフレームの受信強度などを用いて、隣接する通信装置10との間の経路の品質を計算する。Helloフレーム処理部24は、隣接する通信装置についての情報や、隣接する通信装置10との間の経路の品質を、リンクテーブル41に記録する。一方、Helloフレーム処理部24は、フレームのグローバル宛先の通信装置に対応付けてフレームの転送先(ロ―カル宛先)の通信装置を記録することにより、ルーティングテーブル42に経路情報を記録する。リンクテーブル41とルーティングテーブル42の例や使用方法等については、後述する。
転送処理部25は、フレーム振り分け部23などから入力されたフレームのグローバル宛先に応じて、ローカル宛先を決定して、アドホックヘッダを生成する。転送処理部25は、ローカル宛先を決定する際に、ルーティングテーブル42を参照する。転送処理部25は、処理対象のフレームのアドホックヘッダを変更し、送信部11に出力する。
アプリケーション処理部26は、フレーム振り分け部23から入力されたフレームを処理する。アプリケーション処理部26は、ブロードキャストフレームを処理した場合、ブロードキャストの対象となるデータを制御部31に出力する。
制御部31は、アプリケーション処理部26からデータが入力されると、入力されたデータを含むフレームのブロードキャストが要求されたと判定する。制御部31は、配置状態特定部32に、通信装置10の配置状態の特定を要求する。配置状態特定部32は、リンクテーブル41を参照して、通信装置10の隣接装置数を特定する。ここで、隣接装置数は、リンクテーブル41のエントリ数と同じ値である。さらに、通信装置10は、各隣接装置について、その隣接装置に隣接している通信装置10の数を特定する。配置状態特定部32は、通信装置10の隣接装置数と、隣接装置ごとのリンクテーブル41のエントリ数を用いて、通信装置10の配置を特定する。配置の特定方法については後述する。
配置状態特定部32は、特定した配置を制御部31に通知する。制御部31は、特定された配置に応じて、ブロードキャストの回数を決定する。このとき、制御部31は、適宜、回数情報43を参照する。通信装置10の数が少ないエリアに通信装置10が設置されている場合や、直接通信できる装置が少ない通信装置10に隣接している場合、制御部31は、回数情報43を用いて、ブロードキャストの回数を決定する。一方、通信装置10の設置数が多いエリアに通信装置10が設置されている場合、通信装置10がブロードキャストするかの判定を乗数判定処理部33に要求する。設定部34は、適宜、ブロードキャスト受信テーブル44を参照して通信装置10がブロードキャストを行う通信装置10に選択される確率の計算に使用される変数の値を設定する。ブロードキャスト受信テーブル44には、ブロードキャストフレーム中のFIDごとに、ブロードキャストフレームの受信数が記録されている。判定部35は、設定部34で設定された値を用いて計算された確率を用いて乗数判定を行い、通信装置10がブロードキャストするかを制御部31に通知する。設定部34と判定部35での処理は後で説明する。
図3は、通信装置10のハードウェア構成の例を示す図である。通信装置10は、プロセッサ100、バス101(101a〜101c)、タイマIC104、Dynamic Random access Memory(DRAM)106、フラッシュメモリ107、無線モジュール108を備える。通信装置10は、オプションとして、PHYチップ102を含むことができる。バス101a〜101cは、プロセッサ100、PHYチップ102、タイマIC104、DRAM106、フラッシュメモリ107、および、無線モジュール108を、データの入出力が可能になるように接続する。
プロセッサ100は、MicroProcessing Unit(MPU)などの任意の処理回路である。プロセッサ100は、フラッシュメモリ107に格納されたファームウェアなどのプログラムを読み込んで処理を行う。このとき、プロセッサ100は、DRAM106をワーキングメモリとして使用できる。通信装置10において、プロセッサ100は、フレーム処理部20として動作する。通信装置10において、DRAM106は、記憶部40として動作する。通信装置10において、無線モジュール108は、送信部11および受信部12として動作する。PHYチップ102は、有線通信に用いられる。例えば、アドホックネットワークと他のネットワーク中の装置の間の通信を中継するゲートウェイとして動作する通信装置10は、PHYチップ102を介して、他のネットワークとの間の通信を行うことができる。
タイマIC104は、時刻情報の取得、Helloフレームを送信する間隔の計測、隣接する通信装置10からHelloフレームを受信する間隔の計測、フレームを受信してから経過した時間の測定などに用いられる。つまり、タイマIC104は、Helloフレーム生成部21、Helloフレーム処理部24、転送処理部25、アプリケーション処理部26などの一部として動作する。
なお、ファームウェアなどのプログラムは、コンピュータ読み取り可能な記憶媒体に格納されて提供され、通信装置10にインストールされてもよい。また、プログラムは、ネットワークからPHYチップ102や無線モジュール108を介してダウンロードされることにより通信装置10にインストールされてもよい。さらに、実施形態に応じて、DRAM106やフラッシュメモリ107以外の他の種類の記憶装置が利用されることがある。また、通信装置10は、コンピュータによって実現されても良い。
<第1の実施形態>
以下、第1の実施形態を、隣接する通信装置10に関する情報の取得、ブロードキャストフレームの受信処理、配置の特定、ブロードキャストの回数の決定に分けて説明する。以下の説明では、各通信装置10の動作を区別し易くするために、符号の後に、アンダーバー、および、動作を行う通信装置10に割り当てられた番号を記載することがある。ここで、通信装置10に割り当てられた番号は、アルファベットのNに続く数字であるとする。従って、例えば、ノードN1が備えるHelloフレーム生成部21のことを、Helloフレーム生成部21_1と記載することがあるものとする。
〔隣接する通信装置に関する情報の取得〕
まず、通信装置10が、隣接装置の数と、隣接する通信装置10の各々が保持するリンクテーブル41のエントリ数の情報を取得する方法について説明する。なお、リンクテーブル41のエントリ数は、そのリンクテーブル41を保持する通信装置10に隣接している通信装置10の数である。
アドホックネットワーク中の各通信装置10は、その通信装置10が保持している経路情報を含むHelloフレームを、隣接する通信装置10に送信する。例えば、図1に示すノードN10の隣接装置がノードN1、N11、N17、N27である場合、ノードN10は、ノードN1、N11、N17、N27にHelloフレームを送信する。
図4は、フレームのフォーマットの例を示す。図4には、Helloフレーム200とデータフレーム300の例が示されている。データフレーム300については後述する。Helloフレーム200は、アドホックヘッダ201、時刻情報202、Helloメッセージヘッダ203、Helloヘッダ204を備え、さらに、署名情報やパディングを含む。アドホックヘッダ201には、ローカル宛先アドレス、ローカル送信元アドレス、フレームタイプ、フレームサイズなどの情報が含まれている。なお、Helloフレーム以外のフレームもアドホックヘッダを備えており、フレームの種類はタイプの値で識別される。例えば、データフレームではタイプ=1、Helloフレームでは、タイプ=0に設定される。時刻情報202は、Helloフレームが生成された時刻を表わす。Helloフレームでは、Helloフレームを生成した通信装置10に割り当てられたアドレスがローカル送信元アドレスに設定される。また、隣接する全ての通信装置10への送信を示すブロードキャストアドレスが、Helloフレームのローカル宛先アドレスに設定される。
Helloメッセージヘッダ203には、Hello情報、バイアス、装置起動経過カウンタが含まれる。装置起動経過カウンタは、Helloフレームを生成した通信装置10が起動されてからの経過時間を示す。Hello情報は、ゲートウェイ(GW)情報、リザーブ領域、Helloヘッダ数を含む。ゲートウェイ情報は、Helloフレームを生成した通信装置10がゲートウェイとして動作しているかを示す。例えば、ゲートウェイ情報=1はHelloフレームを生成した通信装置10がゲートウェイとして動作していることを表わし、ゲートウェイ情報=0はHelloフレームを生成した通信装置10がゲートウェイとして動作しないことを表わす。Helloヘッダ数は、Helloフレームに含まれるHelloヘッダの数であり、そのHelloフレームで通知する経路情報の数である。
Helloヘッダ204は、Helloフレームを生成した通信装置10が保持している経路情報を通知するために使用される。図4の例では、Helloヘッダ204には、グローバル宛先アドレス、ホップ数、経路品質重み、エントリ数が含まれる。グローバル宛先アドレスは、そのHelloヘッダで通知される経路情報の最終的な宛先となる通信装置10のアドレスである。ホップ数は、Helloフレームを生成した通信装置10から、グローバル宛先までのホップ数である。経路品質重みは、Helloフレームを生成した通信装置10から、グローバル宛先までの経路品質を示す値である。エントリ数は、Helloヘッダに、Helloフレームを生成した通信装置10に至る経路の情報が格納されている場合に有効であり、Helloフレームを生成した通信装置10が保持するリンクテーブル41のエントリ数である。
例えば、図1に示すノードN10は、ノードN10をグローバル宛先とするHelloヘッダに、ノードN10が保持するリンクテーブル41_10のエントリ数を記録する。ノードN10中のHelloフレーム生成部21_10が生成するHelloフレーム200_10に含まれる情報要素の例を以下に示す。
ローカル送信元アドレス:ノードN10
ローカル宛先アドレス :隣接する全ての通信装置10
タイプ :Helloフレーム
時刻 :12:00:00
Helloヘッダ数 :3
Helloヘッダ1
グローバル宛先アドレス:ノードN10
ホップ数 :0
エントリ数 :4
Helloヘッダ2
グローバル宛先アドレス:ノードN27
ホップ数 :1
Helloヘッダ3
グローバル宛先アドレス:GW
ホップ数 :3
Helloフレーム生成部21_10は、Helloフレーム200_10を送信部11_10に出力する。ノードN10の送信部11_10は、ノードN10に隣接する全ての通信装置10にHelloフレーム200_10を送信する。
ノードN1の受信部12_1は、Helloフレーム200_10を受信すると、Helloフレーム200_10をFID管理部22_1に出力する。FID管理部22_1は、Helloフレーム200_10をフレーム振り分け部23_1に出力する。フレーム振り分け部23_1は、入力されたフレームのフレームタイプがHelloフレームであるため、Helloフレーム200_10をHelloフレーム処理部24_1に出力する。Helloフレーム処理部24_1は、Helloフレーム200_10を用いて、ノードN1が保持するリンクテーブル41_1とルーティングテーブル42_1を更新する。
図5は、ノードN1が保持するリンクテーブル41の例を示す。図5の例では、リンクテーブル41には、Helloフレームの送信元となった隣接装置の識別子に対応付けて、その隣接装置との間の経路の通信品質、隣接装置が保持するリンクテーブル41中のエントリ数が記録されている。Helloフレーム処理部24_1は、Helloフレーム200_10に含まれている情報を抽出して、Helloフレームの送信元と、送信元でのエントリ数を、リンクテーブル41_1に記録する。
通信品質は、Helloフレームの受信間隔の平均値、受信間隔の分散値、受信強度の平均値、受信強度の分散値などを用いて計算される。Helloフレーム処理部24_1は、Helloフレームの受信間隔が正しい値に近いほど通信品質を良くし、Helloフレームの受信強度が大きいほど通信品質を良い値とする。さらに、Helloフレーム処理部24_1は、Helloフレームの受信間隔の分散値と受信強度の分散値のいずれについても、小さいほど通信品質を良い値にする。なお、ここで述べた通信品質の計算方法は一例であり、通信品質の計算方法は、実装に応じて変更され得る。Helloフレーム処理部24_1がHelloフレーム200_10を処理することにより、リンクテーブル41_1に、図5中のNo.1の情報が記録される。
図6は、ルーティングテーブル42の例を示す。ルーティングテーブル42は、1つのグローバル宛先に対して、1つ以上の任意の数のローカル宛先を記録することができる。図6に示すルーティングテーブル42は、1つのグローバル宛先に対して、3つ以下のローカル宛先を記憶することができる。Helloフレーム処理部24は、Helloフレームの送信元の通信装置10を、Helloヘッダ中のグローバル宛先に対するローカル宛先として、ルーティングテーブル42に記録する。例えば、ノードN1がノードN10から前述のHelloフレームを受信した場合、Helloフレーム処理部24_1は、ルーティングテーブル42_1のNo.1−3、No.2−1、および、No.3−1のエントリを記録する。
以上の説明では、ノードN1の処理を詳しく説明したが、ノードN11、N17、N27も、ノードN10からHelloフレームを受信すると、ノードN1と同様の処理を行う。さらに、ネットワーク中のいずれの通信装置10も、所定の時間間隔でHelloフレームを隣接する通信装置10に送信する。このため、ネットワーク中の全ての通信装置10は、隣接する通信装置10と、各隣接装置が保持するリンクテーブル41のエントリ数を特定することができる。
〔ブロードキャストフレームの受信処理〕
次に、ブロードキャストフレームのフォーマットと、通信装置10がブロードキャストフレームを受信した場合に行われる処理の例を説明する。
ブロードキャストフレームは、データフレームの一種であるので、図4のデータフレーム300に示すフォーマットを有する。従って、ブロードキャストフレームは、アドホックヘッダ201、データヘッダ301、データペイロード、署名、パディングを含む。データフレーム中のアドホックヘッダ201は、Helloフレームに含まれているアドホックヘッダ201と同様である。データヘッダ301には、グローバル宛先アドレス、グローバル送信元アドレス、フレーム識別子(FID)、HTL(Hop to live)が含まれている。
ブロードキャストフレームでは、データヘッダ301中のグローバル宛先アドレスとして、ブロードキャストアドレスが指定され、グローバル送信元アドレスとして、データフレーム中のデータペイロードを生成した通信装置10のアドレスが設定される。従って、ブロードキャストフレームの場合、データヘッダ301中のグローバル送信元アドレスには、データの配信を開始した通信装置10のアドレスが指定される。例えば、ゲートウェイが、アドホックネットワーク中の各通信装置10にソフトウェアのバージョンアップを行うためのデータを配信する場合、グローバル送信元アドレスには、ゲートウェイのアドレスが設定される。フレーム識別子は、データフレーム毎に割り振られた識別番号である。HTLは、データフレームの有効期限を表す値である。HTLの値は、転送処理部25によって他の通信装置10にフレームを転送される際に、1つずつデクリメントされる。なお、HTL=0となると、データフレームは廃棄される。
図1に示すネットワーク中のノードN1がブロードキャストフレームを受信したとする。すると、受信部12_1は、ブロードキャストフレームをFID管理部22_1に出力する。FID管理部22_1は、ブロードキャストフレーム中のフレーム識別子を抽出し、ブロードキャスト受信テーブル44を参照する。ブロードキャスト受信テーブル44には、これまで受信したブロードキャストフレームのうちで最新のフレームについての、フレーム識別子と、受信回数が記録されている。図7に、ブロードキャスト受信テーブル44の例を示す。例えば、ノードN1が受信したブロードキャストフレームのうちの最新のフレームのフレーム識別子が14であり、ノードN1がフレーム識別子=14のフレームを5つ受信したとする。この場合、ノードN1はブロードキャスト受信テーブル44_1a(図7)を保持している。
FID管理部22_1は、ブロードキャストフレーム中のフレーム識別子の値とブロードキャスト受信テーブル44_1a中のフレーム識別子を比較することにより、受信済みのフレームと同じデータが含まれているブロードキャストフレームを廃棄する。なお、FID管理部22_1は、ブロードキャストフレーム中のフレーム識別子とブロードキャスト受信テーブル44_1a中のフレーム識別子が一致する場合、ブロードキャスト受信テーブル44_1aの受信回数を1つインクリメントする。例えば、FID管理部22_1は、入力されたブロードキャストフレームのFIDが14であれば、そのブロードキャストフレームを廃棄し、ブロードキャスト受信テーブル44_1aの受信回数を5から6に変更する。
一方、入力されたブロードキャストフレームが初めて受信されたフレームである場合、FID管理部22_1は、ブロードキャストフレームをフレーム振り分け部23_1に出力する。さらに、FID管理部22_1は、ブロードキャストフレーム中のフレーム識別子の値を変更し、さらに、受信回数を1に設定する。このとき、FID管理部22_1は、ブロードキャスト受信テーブル44_1を更新する前の受信回数とFIDを設定部34_1に出力する。例えば、ノードN1がフレーム識別子=15のブロードキャストフレームを受信すると、FID管理部22_1は、ブロードキャスト受信テーブル44_1aをブロードキャスト受信テーブル44_1bに更新する。さらに、FID管理部22_1は、FID=14のフレームの受信回数が5回であることを設定部34_1に通知する。
フレーム振り分け部23_1は、FID管理部22_1から入力されたブロードキャストフレームを、アプリケーション処理部26_1に出力する。アプリケーション処理部26_1は、ブロードキャストフレームが入力されると、入力されたフレーム中のデータペイロードを処理する。さらに、アプリケーション処理部26_1は、入力されたブロードキャストフレームをブロードキャストするために、ブロードキャストフレームを制御部31_1に出力する。
制御部31_1は、アプリケーション処理部26_1からブロードキャストフレームが入力されると、入力されたフレームのブロードキャストが要求されたと判定し、配置状態特定部32_1に、ノードN1の配置状態の特定を要求する。配置状態特定部32_1の処理については後述する。以上の説明では、ノードN1での処理を例として説明したが、ブロードキャストフレームを受信したいずれの通信装置10も、ノードN1と同様にブロードキャストフレームを処理する。
〔配置の特定〕
図8は、通信装置10の配置の例を示す。通信装置10の配置は、分散エリアへの配置、密集エリアへの配置、分散エリアと密集エリアの境界への配置の3通りに分類できる。以下、閾値Th1と閾値Th2を用いて、配置の特定方法の例を説明する。閾値Th1は、隣接装置の数と比較される閾値であり、閾値Th2は、隣接装置が保持するリンクテーブルのエントリ数と比較される閾値である。閾値Th1は、ネットワーク中の一部のエリア内で、ブロードキャストによる輻輳の発生が無視できなくなる隣接装置数の最小値である。閾値Th2は、一部の通信装置10がブロードキャストを行わないことによる情報の到達性の低下の原因にならない隣接装置数の下限値である。以下の説明では、配置の決定に使用する閾値が、閾値Th1=4、閾値Th2=3に設定されている場合を例として説明するが、閾値Th1および閾値Th2の値は実装に応じて任意に設定され得る。
「分散エリア」は、ブロードキャストフレームの送信を行っても輻輳が発生しない程度の密度で通信装置10が配置されているエリアである。以下の説明では、隣接装置の数が閾値Th1未満の通信装置10を「分散エリア」に配置された通信装置10と記載することがある。分散エリアでは、図8の配置L1に示すように、通信装置10の密度が相対的に低い。配置L1の破線の円(H1〜H3)は、配置L1中の通信装置10aから送信されたフレームを届けるときのホップ数が同じ領域を表わしている。例えば、H1の円の内側にある3つの通信装置10には、通信装置10aから1ホップでフレームが届く。一方、H1の円とH2の円の間に含まれている通信装置10には通信装置10aから2ホップでフレームが送信され、H3の円上の通信装置10には通信装置10aから3ホップでフレームが送信される。換言すると、配置L1の例では、通信装置10aの隣接装置は、H1の円の内側に位置する3つの通信装置10である。ここでは、閾値Th1=4であるので、通信装置10aは、分散エリアに含まれているといえる。
「密集エリア」は、エリア中の全ての通信装置10がブロードキャストを行うと輻輳が発生するエリアである。以下の説明では、隣接装置の数が閾値Th1以上であり、かつ、全ての隣接装置が通信可能な装置の数も閾値Th2以上である通信装置10を「密集エリア」に配置された通信装置10と記載することがある。密集エリアでは、図8の配置L2に示すように、ネットワーク中に配置されている通信装置10の密度が相対的に高い。配置L2の破線の円(H4〜H6)は、配置L2中の通信装置10bから送信されたフレームを届けるときのホップ数が同じ領域を表わしている。H4は通信装置10bから1ホップ、H5は通信装置10bから2ホップ、H6は通信装置10から3ホップの範囲を示している。配置L2の例では、通信装置10bの隣接装置は、H4の円の内側に位置する8つの通信装置10である。従って、閾値Th1=4であり、通信装置10bの隣接装置の各々が直接通信できる通信装置10の数も閾値Th2を超えている場合、配置L2をとっているエリアは、密集エリアと判定される。密集エリアでは、輻輳を防止するために、密集エリア内の通信装置10のうちで選択された通信装置10がブロードキャストを行い、選択されていない通信装置10はブロードキャストを行わない。ブロードキャストを行う通信装置10の選択については後述する。
図8の配置L3は、分散エリアと密集エリアの境界を含む配置の例である。「密集エリアと分散エリアの境界」に位置する通信装置10は、隣接装置数は密集エリアの基準を満たすが、隣接装置のうちの少なくとも1つにおいて、他の装置を介さずに通信できる通信装置10の数が閾値Th2未満である。
配置L3では、各通信装置10の隣接装置を見やすくするために、互いに隣接する通信装置10間を実線で結んでいる。通信装置10cの隣接装置数は4であるので、通信装置10cは隣接装置数については密集エリアの基準を満たす。しかし、通信装置10cの隣接装置である通信装置10dの隣接装置数は2であるので、通信装置10dは、通信装置10cが含まれるエリアからの情報を通信装置10c以外の装置から受信できない。このため、例えば、通信装置10gからの配信データを通信装置10cが送信しないと、配信データが通信装置10dに到達しないことになってしまう。このため、通信装置10cは、密集エリアと分散エリアの境界に位置する通信装置10として、ブロードキャストを行う。
通信装置10fも通信装置10cと同様に、隣接装置数は閾値Th1以上であるので隣接装置数は密集エリアの基準を満たしている。しかし、通信装置10fが通信装置10eから受信したフレームをブロードキャストしないと、通信装置10fの隣接装置のうち通信装置10e以外の装置には、通信装置10fが通信装置10eから受信したフレームに含まれているデータが配信されない。このため、通信装置10fも、密集エリアと分散エリアの境界に位置する通信装置10として、ブロードキャストを行う。
図9は、配置の特定方法の例を示すフローチャートである。図9を参照しながら、配置状態特定部32が通信装置10の配置を特定する方法の例を説明する。配置の特定の際に、配置状態特定部32は、閾値Th1およびTh2の他に、定数Mと変数mを使用する。定数Mは、図9に示す処理を行っている通信装置10の隣接装置数を表わす。変数mは、リンクテーブル41のエントリ数と閾値Th2との間の比較を行った隣接装置の数を計数するために使用される。
配置状態特定部32は、制御部31から配置の特定を要求されると、通信装置10が保持するリンクテーブル41に含まれているエントリ数(M)を取得する(ステップS1)。リンクテーブル41に含まれているエントリ数は、通信装置10の隣接装置数である。配置状態特定部32は、閾値Th1と隣接装置数Mを比較する(ステップS2)。隣接装置数Mが閾値Th1よりも小さい場合、ブロードキャストを行っても輻輳が発生しないことが予測される。そこで、隣接装置数Mが閾値Th1よりも小さい場合、配置状態特定部32は、通信装置10が分散エリアに配置されていると判定する(ステップS2でNo、ステップS3)。
隣接装置数Mが閾値Th1以上である場合、ブロードキャストにより輻輳が発生する恐れがある。そこで、配置状態特定部32は、通信装置10が密集エリアと分散エリアの境界に配置されているかを判定するための処理を行う。配置状態特定部32は、変数mを1に設定する(ステップS2でYes、ステップS4)。配置状態特定部32は、リンクテーブル41を参照し、m番目の隣接装置が保持しているリンクテーブル41のエントリ数を、閾値Th2と比較する(ステップS5)。すなわち、配置状態特定部32は、m番目の隣接装置が他の装置を介さずに通信可能な通信装置10の数を閾値Th2と比較する。m番目の隣接装置が保持しているリンクテーブル41のエントリ数が閾値Th2未満である場合、配置状態特定部32は、通信装置10が密集エリアと分散エリアの境界に配置されていると判定する(ステップS5でNo、ステップS6)。
一方、m番目の隣接装置が保持しているリンクテーブル41のエントリ数が閾値Th2以上である場合、配置状態特定部32は、変数mを1つインクリメントして、隣接装置数Mと比較する(ステップS5でYes、ステップS7、S8)。変数mが隣接装置数Mの値より大きくなるまで、配置状態特定部32は、ステップS5〜S8を繰り返す(ステップS8でNo)。変数mが隣接装置数Mの値より大きくなると、配置状態特定部32は、いずれの隣接装置でも、リンクテーブル41のエントリ数が閾値Th2以上であるため、通信装置10が密集エリアに位置していると判定する(ステップS8でYes、ステップS9)。配置状態特定部32は、特定した配置を制御部31に通知する。
〔ブロードキャスト回数の決定〕
制御部31は、配置状態特定部32から通信装置10の配置を通知されると、配置に応じて、所定の確率以上の割合でデータの伝播に成功するために、フレームを何回ブロードキャストするかを決定する。例えば、分散エリア中で通信品質の悪い経路を介してフレームを送信するときには、制御部31は、ブロードキャストの回数を大きくして、同じフレームのブロードキャストを繰り返す。一方、密集エリア内でフレームを送信する場合や、通信品質の良い経路を介してフレームを送信する場合、制御部31は、ブロードキャストの回数を少なくして、ネットワーク中で送受信されるフレーム数をなるべく少なくする。
以下、各通信装置10の制御部31が、配置に応じてブロードキャストする回数を決定する方法の例を説明する。
(1)分散エリア、および、密集エリアと分散エリアの境界の通信装置
図10は、分散エリアに設置された通信装置10間の通信の例を示す。図10は、状態C1と状態C2の各々において行われる通信の例を示す。状態C1と状態C2のいずれでも、ノードN41〜N45が分散エリアに含まれているものとする。図10の範囲A41はノードN41から送信されたフレームを受信可能な範囲を示し、範囲A44はノードN44から送信されたフレームを受信可能な範囲を示す。ノードN41の隣接装置は、範囲A41に含まれる通信装置10であり、ノードN44の隣接装置は、範囲A44に含まれる通信装置10である。従って、状態C1と状態C2のいずれにおいても、ノードN41にとっての隣接装置は、ノードN42〜N44であり、ノードN44の隣接装置はノードN41、N43、N45である。
ノードN41中の制御部31_41は、配置状態特定部32_41から、ノードN31が分散エリアに配置されていることを通知されたとする。すると、制御部31_41は、ノードN41からフレームをブロードキャストする回数を決定するために、ノードN41に隣接する通信装置10とノードN41との間の通信品質を特定する。このとき、制御部31_41は、リンクテーブル41_41を参照する。図10の状態C1の例では、各通信装置10間での通信品質は以下のとおりであるとする。
ノードN41とノードN42の間の通信品質:Va
ノードN41とノードN43の間の通信品質:Vb
ノードN41とノードN44の間の通信品質:Vc
次に、制御部31_41は、ブロードキャストする回数を求めるために、回数情報43_41を参照する。
図11は、回数情報43の例を示す。回数情報43は、通信装置10の配置や通信品質と、通信装置10がフレームをブロードキャストする回数を対応付けている。回数情報43は、ネットワーク中に含まれる通信装置10間で共通の値が設定されているものとする。通信品質の計算方法は、図5を参照しながら説明したとおり、実装に応じて変更されうるが、図11の例では、通信品質の値が小さいほど、通信品質が良好であるものとする。各段階でのブロードキャスト回数は、その段階に分類された通信品質の経路を介して通信するノード装置に対して、フレームの送信が成功する確率を所定の値以上にするために求められるフレームの送信回数である。
例えば、図11に示す回数情報43では、通信装置10が分散エリアに配置されている場合、通信品質をG1〜G9の閾値を用いて10段階に分類し、各段階にブロードキャスト回数を対応付けている。図11の例では、閾値G1が示す通信品質よりも経路の通信品質が良いときは、フレームのブロードキャストが1回であっても、フレームの送信に成功する確率が所定の値以上である。一方、経路の品質が、閾値G8で表わされる品質以下であり、かつ、閾値G9で表わされる品質より良い場合、フレームの送信に成功する確率を所定の値以上にするために、通信装置10は、フレームを9回ブロードキャストすることになる。
制御部31_41は、各隣接装置との間の通信品質に対応するブロードキャストの回数を求める。例えば、Va〜Vcの値と、閾値G1〜G9の大きさを比較すると、
G9<Va、
Vb<G1、
G1<Vc<G2
であるとする。すると、制御部31_41は、フレームの送信に成功する確率を所定の値以上にするためのブロードキャスト回数は、ノードN42との間の通信品質を基準にすると10回であると判定する。同様に、制御部31_41は、ノードN43との間の通信品質を基準にするとブロードキャストの回数は1回でよく、ノードN44との間の通信品質を基準にするとブロードキャストの回数は2回となることも、回数情報43から特定する。制御部31_41は、各隣接装置との通信品質を用いて得られたブロードキャストの回数のうちでもっとも大きな値を採用する。従って、状態C1の例では、制御部31_41は、フレームを10回ブロードキャストすることを決定する。
このように、制御部31は、隣接する通信装置10との間の経路の通信品質に応じて、フレームをブロードキャストする回数を決定する。従って、隣接する全ての通信装置10との通信品質が良好である場合、通信装置10は、ブロードキャストの回数を小さく設定できる。
例えば、図10の状態C2において、ノードN44と隣接装置との間の通信品質が以下のとおりであるとする。
ノードN44とノードN41の間の通信品質:Vc
ノードN44とノードN43の間の通信品質:Vd
ノードN44とノードN45の間の通信品質:Ve
ここで、Vdが閾値G1より小さく、G1<Vc<G2、G1<Ve<G2であるとする。すると、制御部31_44は、回数情報43(図11)を用いて、ノードN43との間の通信品質を基準にするとブロードキャストの回数は1回でよく、ノードN41、N45との間の通信品質を基準にするとブロードキャストの回数は2回となることを特定する。そこで、制御部31_44は、ノードN44からのブロードキャストの回数を2回に決定する。すなわち、分散エリアに位置する通信装置10は、隣接装置との間の経路のうちで通信品質が比較的劣悪な経路の品質に合わせて、ブロードキャストする回数を変動させることができる。
制御部31は、ブロードキャストの回数を決定すると、アプリケーション処理部26から入力されたブロードキャストフレームを、決定した回数だけ、送信部11に出力する。送信部11は、制御部31から入力されたフレームをブロードキャストする。
なお、ここでは、制御部31が各隣接装置との間の通信品質に基づいてブロードキャストの回数を求め、得られた回数のうちの最大値を、その通信装置10が行うブロードキャストの回数とする場合を説明したが、これは一例である。例えば、制御部31は、隣接装置との間の通信品質を取得すると、得られた通信品質のうちで最も悪い条件を、ブロードキャストの回数の決定するための基準に決定しても良い。例えば、状態C1の例では、制御部31_41は、ノードN41とノードN42の間の通信品質を、ノードN41からフレームをブロードキャストする回数を求めるための基準に使用する。制御部31は、決定した基準を用いて回数情報43を参照し、基準とする通信品質に対応付けられた回数を、通信装置10がブロードキャストする回数に決定できる。
密集エリアと分散エリアの境界の通信装置10中の制御部31も、分散エリアに配置された通信装置10の制御部31と同様の方法により、フレームをブロードキャストする回数を決定する。このため、密集エリアと分散エリアの境界に位置する通信装置10も、通信品質が比較的劣悪な経路の品質に合わせて、ブロードキャストする回数を変動させることができる。さらに、制御部31は、決定した回数だけ、ブロードキャストフレームを送信部11に出力するので、制御部31で決定された回数だけ、フレームがブロードキャストされる。従って、密集エリアと分散エリアの境界でもデータの到達性が確保される。
(2)密集エリアに配置された通信装置
制御部31は、密集エリアに配置されていることが通知されると、通信装置10自身がブロードキャストフレームを送信しなくても、隣接装置からのブロードキャストにより、データがネットワーク中に伝播される可能性があることを認識する。つまり、密集エリア内では、選択された通信装置10がブロードキャストを行うことによって、データをネットワーク中の全ての通信装置10に伝播できる。そこで、密集エリアに位置していることを通知されると、制御部31は、アプリケーション処理部26から入力されたブロードキャストフレーム中のフレーム識別子とともに、乗数判定の要求を設定部34に出力する。
図12は、乗数判定の例を説明するフローチャートである。図12で説明する処理では、ブロードキャストする通信装置10に選択される確率の計算の際に、変数cを使用する。さらに、設定部34は、変数cの値を調整するために、閾値Th3とTh4を使用する。閾値Th3は、1つのブロードキャストフレームを受信する回数として許容する上限値である。閾値Th3は、ネットワークの輻輳が発生しないと予測される範囲内で、同じブロードキャストフレームを1つの通信装置10が受信できる回数の上限値である。一方、閾値Th4は、1つのブロードキャストフレームを受信する回数として許容する下限値である。換言すると、閾値Th4は、ネットワーク全体に情報を伝播できる程度にブロードキャストフレームの送信が行われているときに、同じブロードキャストフレームを1つの通信装置10が受信する回数の下限値であるといえる。
設定部34は、制御部31から乗数判定が要求されるまで待機している(ステップS21でNo)。乗数判定が要求されると、設定部34は、通信装置10が受信したブロードキャストのフレーム識別子(FID)を取得する(ステップS21でYes、ステップS22)。設定部34は、処理対象のブロードキャストフレームのFIDと異なるFIDを含むブロードキャストフレームの受信履歴があるかを判定する(ステップS23)。処理対象のブロードキャストフレームとはFIDの値が異なるブロードキャストフレームの受信履歴がある場合、FID管理部22は、ブロードキャスト受信テーブル44の更新の際に、更新前のFIDと受信回数を設定部34に通知している。そこで、設定部34は、FID管理部22からFIDと受信回数の通知がない場合、通信装置10が初めてブロードキャストフレームを受信したと判定する(ステップS23でNo)。そこで、設定部34は、定数cを0に設定する(ステップS24)。
一方、FID管理部22から通知されたFIDと制御部31から通知されたFIDが異なる場合、設定部34は、処理対象のフレームのFIDとは異なるFIDが付されたブロードキャストフレームの受信履歴があると判定する(ステップS23でYes)。すると、設定部34は、FID管理部22から通知された受信回数を閾値Th3と比較する(ステップS25)。受信回数が閾値Th3よりも大きい場合、通信装置10は、同じブロードキャストフレームを受信する回数として許容される回数を超えて、1つのブロードキャストフレームを受信していることになる(ステップS25でYes)。すると設定部34は、輻輳が発生する可能性が高いと判定して、通信装置10がフレームをブロードキャストする確率を下げるために、変数cを1つインクリメントする(ステップS26)。
ブロードキャスト受信テーブル44に記録されている受信回数が閾値Th3以下の場合、設定部34は、輻輳が発生する可能性は無視できると判定する(ステップS25でNo)。そこで、次に、設定部34は、データの伝達が損なわれない程度に通信が行われているかを判定するために、受信回数を閾値Th4と比較する(ステップS27)。受信回数が閾値Th4よりも小さい場合、通信装置10が1つのブロードキャストフレームを受信する回数は、データの伝達性が担保されるために求められる回数に達していないことになる(ステップS27でYes)。すると設定部34は、データがネットワークの全体に伝播できない恐れがあると判定して、通信装置10がフレームをブロードキャストする確率を上げるために、変数cを1つデクリメントする(ステップS28)。なお、受信回数が閾値Th4以上の場合、ネットワーク中で送受信されるブロードキャストフレームの数は、輻輳を発生させない程度であり、かつ、データの伝達性を担保するために十分な量である(ステップS27でNo)。従って、乗数判定部33は、閾値Th4≦受信回数≦閾値Th3を満たしている間は、変数cを変更しない。
変数cの設定が終わると、判定部35は、1から2のc乗の値までの範囲で乱数を生成する(ステップS29)。図12の例では、判定部35は、生成した乱数が1である場合、通信装置10自身が、フレームをブロードキャストする通信装置10に選択されたと判定する(ステップS30でYes、ステップS31)。一方、判定部35は、生成した乱数が1ではない場合、通信装置10は、フレームをブロードキャストする通信装置10に選択されていないと判定する(ステップS30でNo、ステップS32)。
判定部35は、乗数判定の結果、通信装置10がブロードキャストする装置として選択されたかを、制御部31に通知する。判定部35から、ブロードキャストする装置として選択されていない旨の通知を受けると、制御部31は、フレームをブロードキャストせずに廃棄する。一方、判定部35から、ブロードキャストする装置として選択された旨の通知を受けると、制御部31は、回数情報43を参照し、密集エリアに含まれる通信装置10に対応付けられている回数を、ブロードキャストの回数に決定する。図11の例では、密集エリア中の通信装置10がブロードキャストする装置として選択されると、フレームを1回ブロードキャストするように設定されている。そこで、密集エリアに配置された通信装置10のうちで、ブロードキャストする装置に選択された通信装置10の制御部31は、ブロードキャストフレームを1回、送信部11に出力する。このため、選択された通信装置10から1回だけ、フレームがブロードキャストされる。
なお、図12では、生成した乱数の値が1である通信装置10がブロードキャストを行う場合を例として説明したが、これは一例に過ぎない。すなわち、ブロードキャストを行う通信装置10に選択されているかを判定するために用いる値は1〜2のc乗までの任意の値にすることができる。
図12を参照しながら述べたように、設定部34は、ブロードキャスト受信テーブル44に記録された受信回数と閾値Th3、Th4との比較結果を用いて、通信装置10がブロードキャストする可能性の大きさを調整している。ここで、ブロードキャスト受信テーブル44に記録された受信回数は、通信装置10が隣接装置から同じブロードキャストを受信した回数である。従って、設定部34は、通信装置10が隣接装置から同じブロードキャストフレームを受信する回数が多いほど、通信装置10自身がブロードキャストを行わなくてもデータが伝達できる可能性が高いと判定して、ブロードキャストを行わない確率を大きくする。このため、ネットワーク中の輻輳が回避されやすい。
図13は、ブロードキャストの回数の決定方法の例を説明するフローチャートである。制御部31は、通信装置10が分散エリアに配置されていることが、配置状態特定部32から通知されているかを判定する(ステップS41)。通信装置10が分散エリアに配置されている場合、制御部31は、通信装置10の隣接装置との間の経路のうちで、通信品質が相対的に悪い経路の品質を、リンクテーブル41から取得する(ステップS41でYes、ステップS42)。制御部31は、通信品質が相対的に悪い経路の品質に対応付けられた回数を、回数情報43から取得し、得られた回数だけ、ブロードキャストフレームを送信部11から送信する(ステップS43)。
通信装置10が分散エリアに配置されていない場合、制御部31は、通信装置10が密集エリアと分散エリアの境界に配置されていることが、配置状態特定部32から通知されているかを判定する(ステップS44)。密集エリアと分散エリアの境界に配置されていることが通知されている場合、制御部31は、ステップS42、S43の処理を行う(ステップS44でYes、ステップS42、S43)。
通信装置10が分散エリアにも、密集エリアと分散エリアの境界にも配置されていない場合、制御部31は、通信装置10が密集エリアに配置されていることが、配置状態特定部32から通知されているかを判定する(ステップS44でNo、ステップS45)。制御部31は、通信装置10が密集エリアにも配置されていない場合、フレームをブロードキャストせずに処理を終了する(ステップS45でNo、ステップS49)。
通信装置10が密集エリアに配置されている場合、制御部31は、ブロードキャストする通信装置10として選択されるかを判定するための処理を、設定部34に依頼する(ステップS46)。なお、ステップS46で行われる処理は、図12を参照しながら説明したとおりである。判定部35は、通信装置10がブロードキャストする装置として選択されているかを判定する(ステップS47)。通信装置10がブロードキャストする装置として選択されている場合、制御部31は、ブロードキャストが1回、行われるように制御する(ステップS47でYes、ステップS48)。一方、通信装置10がブロードキャストする装置として選択されていない場合、制御部31は、ブロードキャストフレームを送信部11に出力せずに破棄する(ステップS47でNo、ステップS49)。
図14は、密集エリアの例を示す。図14を参照しながら、第1の実施形態で送受信されるフレーム数の削減効果の例を述べる。図14に示す密集エリアには、ノードN51〜N68が含まれている。図14において、範囲A51は、ノードN51から送信されたフレームが届く範囲を示す。同様に、範囲A53は、ノードN53から送信されたフレームが届く範囲、範囲A59は、ノードN59から送信されたフレームが届く範囲を示す。従って、ノードN51にとっての隣接装置は、ノードN52〜N59である。ノードN53にとっての隣接装置は、ノードN51、N52、N54、N55、N59〜N64である。さらに、ノードN59にとっての隣接装置は、ノードN51〜N53、N57、N58、N60、N65〜N68である。
例えば、ノードN51がブロードキャストしたフレームをブロードキャストする通信装置10として、ノードN53とN59が選択されたとする。すると、ノードN51は、ノードN51自身がブロードキャストしたフレームを、ノードN53とN59から受信するだけですむので、送信済みのブロードキャストフレームを2回、受信することになる。一方、密集エリアであってもブロードキャストする通信装置10を選択しない場合は、ノードN51は、ノードN52〜N59の全ての隣接装置から、ノードN51自身がブロードキャストしたフレームを受信し直すことになる。すると、ノードN51は、ノードN51自身から送信したブロードキャストフレームを8回も受信することになる。このように、第1の実施形態では、輻輳を防止するために、送受信されるブロードキャストフレームの数を制限できる。
さらに、第1の実施形態にかかる方法では、分散エリアや、密集エリアと分散エリアの境界に配置された通信装置10では、フレームの送信に成功する確率が全ての隣接装置において一定の値以上になるように、ブロードキャストする回数を増やすこともできる。
このように、配置に応じて、個々の通信装置10がブロードキャストの回数を調整することにより、ネットワーク中で送受信されるフレーム数を制限しつつ、データの到達性を担保することができる。このため、データがネットワーク中の全ての通信装置10に確実に届く状況を維持しつつ、ネットワークでの輻輳の発生を防止できる。
<第2の実施形態>
第2の実施形態では、通信装置10の配置に加えて、データが配信される通信経路も考慮して、ブロードキャストフレームを削減する場合について説明する。なお、第2の実施形態では、ブロードキャストフレームの配信元となり得る通信装置10は、ネットワーク中の各通信装置10に認識されているものとする。以下の例では、ブロードキャストフレームの配信元がゲートウェイ(GW)である場合を例として説明する。
図15は、ネットワークで行われる通信の例を示す。ネットワーク中の各通信装置10は、GWとして動作する通信装置10との間の通信経路を確立している。図15は、ネットワーク中の通信装置10がGWにデータを送信する場合の送信経路を示している。図15の例では、ノードN74は、ノードN73、N72を経由してフレームをGWに送信している。同様に、ノードN77は、ノードN72を経由してフレームをGWに送信し、ノードN75は、ノードN71経由でフレームをGWに送信する。さらに、ノードN76、N71、N72は、それぞれ、直接、フレームをGWに送信する。
図15のような通信経路が使用される場合、GWから各通信装置10への通信経路は、図15の矢印の逆向きの経路をたどるものとする。例えば、GWは、ノードN72、N73を経由してノードN74にフレームを送信できる。この場合、ノードN72がGWから受信するフレームの最終的な宛先は、ノードN72〜N74、N77のいずれかである可能性がある。一方、GW宛のフレームの通信経路の末端に位置している通信装置10は、GWがグローバル送信元である受信フレームには、他の通信装置10に転送するフレームは含まれていない。つまり、グローバル送信元がGWに設定されているフレームは、図15に示す経路の逆向きで転送されてくるため、例えば、ノードN74が受信するフレームは、ノードN74が最終的な宛先に設定されているフレームに限られる。ノードN75〜N77についても同様に、グローバル送信元がGWの受信フレームを他の通信装置10に転送しない。換言すると、グローバル送信元がGWとなっているフレームを、GW宛のフレームの通信経路の末端に位置している通信装置10が他の通信装置10に転送しなくても、ネットワーク中の全ての通信装置10にGWから通知された情報を伝播できている。
そこで、第2の実施形態では、各通信装置10がGW宛のフレームを中継しているかを判定し、GW宛のフレームを中継していない通信装置10は、GWから配信された情報を含むフレームをブロードキャストしない。第2の実施形態では、第1の実施形態と同様に、配置によってブロードキャストの回数を調整した上で、GWとの通信経路の末端の通信装置10がブロードキャストを行わないので、ネットワーク中で送受信されるフレーム数をさらに削減できる。
以下、第2の実施形態での通信装置10の処理の例を説明する。第2の実施形態でも、通信装置10の構成は、第1の実施形態と同様であるが、さらに、GW宛フレーム受信記録45を記憶部40に保持している。
転送処理部25は、フレーム振り分け部23からフレームが入力されると、適宜、ルーティングテーブル42を参照して、フレームの転送先を特定する。このとき、転送処理部25は、転送先の特定の他に、グローバル宛先がGWであるかも判定する。転送処理部25は、転送処理を行ったフレームのグローバル宛先がGWである場合、GW宛フレーム受信記録45を生成または更新する。転送処理部25は、さらに、特定した宛先に向けてフレームを転送する。
GW宛フレーム受信記録45の例を図16に示す。GW宛フレーム受信記録45には、ブロードキャストフレームを用いて伝播されるデータの配信元がゲートウェイであることと、ゲートウェイ宛フレームの転送実績の有無、転送を行ってからの経過時間が記録される。転送処理部25は、配信元宛(GW宛)のフレームを受信するたびに経過時間をゼロに設定する。転送処理部25は、経過時間が所定の閾値を超えると転送実績を消去する。例えば、閾値が24時間である場合、最後にGW宛のフレームを転送してから24時間が経過すると、転送処理部25は、GW宛フレーム受信記録45中の転送実績の値を、「有」から「無」に変更した上で、経過時間を初期化する。なお、図16はGW宛フレーム受信記録45の一例を示しており、例えば、経過時間の代わりに、GW宛のフレームを転送した時刻がGW宛フレーム受信記録45に記録されても良い。この場合、GW宛のフレームの転送時刻から所定の時間が経過すると、配信元への転送実績が消去される。
通信装置10自身に宛てられたフレームの処理や、ブロードキャストフレームの受信処理は、第1の実施形態と同様である。従って、ブロードキャストフレームを受信した通信装置10中のアプリケーション処理部26は、第1の実施形態と同様に、ブロードキャストフレームを制御部31に出力する。制御部31は、ブロードキャストフレームが入力されると、第1の実施形態と同様に、配置状態特定部32に配置の特定を要求する。
図17は、第2の実施形態での配置の特定方法の例を示すフローチャートである。配置状態特定部32は、配置の特定が要求されると、ブロードキャストフレームのグローバル送信元(配信元)に宛てたフレームの転送実績があるかを判定する(ステップS61)。ここでは、ブロードキャストフレームのグローバル送信元となる装置は、ゲートウェイであるので、配置状態特定部32は、GW宛フレーム受信記録45を用いて、ゲートウェイ宛のフレームの転送実績があるかを判定する。ゲートウェイ宛のフレームを転送した実績がない場合、配置状態特定部32は、通信装置10が通信経路の末端に配置されていると判定し、判定結果を制御部31に通知する(ステップS62)。一方、ゲートウェイ宛のフレームを転送した実績がある場合、配置状態特定部32は、ステップS63〜S71の処理を行う。ステップS63〜S71の処理は、図9を参照しながら説明したステップS1〜S9の処理と同様である。すなわち、第2の実施形態では、配置状態特定部32は、通信装置10の配置を、通信経路の末端、分散エリア、密集エリア、分散エリアと密集エリアの境界の4通りに分類する。
図18は、第2の実施形態においてブロードキャストの回数を決定する方法の例を示すフローチャートである。制御部31は、配置状態特定部32から配置が通知されると、図18に示す手順でブロードキャストの回数を決定する。制御部31は、通信装置10が通信経路の末端に配置されているかを判定する(ステップS81)。通信装置10が通信経路の末端に配置されている場合、制御部31は、フレームをブロードキャストせずに廃棄する(ステップS81でYes、ステップS82)。通信装置10が通信経路の末端に配置されていないと判定された場合、ステップS83〜S91の処理が行われる。ステップS83〜S91の処理は、図13を参照しながら説明したステップS41〜S49の処理と同様である。従って、第2の実施形態によると、通信経路の末端に位置する通信装置10と、密集エリア中でブロードキャストを行う装置に選択されていない通信装置10は、フレームのブロードキャストを行わない。
第2の実施形態では、通信装置10が配置されている位置がネットワーク中のどこであっても、ブロードキャストされているデータの配信元に宛てたフレームの中継を行っていない通信装置10であれば、フレームをブロードキャストしない。このため、例えば、図15のノードN76のように、GWの近傍に位置する通信装置10や、隣接装置の数が多い通信装置10であっても、フレームをブロードキャストしないですむ場合がある。その結果、データの到達性を維持したままで、ネットワーク中で送受信されるブロードキャストフレームの数を削減できる。
<第3の実施形態>
第3の実施形態では、ブロードキャストされるデータの伝播方向を考慮することにより、ネットワーク中で送受信されるブロードキャストフレームの数をさらに削減する場合について説明する。また、第3の実施形態においても第2の実施形態と同様に、ネットワーク中の各通信装置10は、ブロードキャストフレームに含まれているデータの配信元がゲートウェイであることを予め認識しているものとする。なお、第3の実施形態においても、通信装置10自身に宛てられたフレームやブロードキャストフレームの処理は、第1の実施形態と同様である。
図19は、ネットワーク中の分散エリアで行われる通信の例を示す。範囲A81はノードN81から送信されたフレームが受信される範囲を示し、範囲A84はノードN84から送信されたフレームが受信される範囲を示す。従って、ノードN81の隣接装置は、範囲A81に含まれる通信装置10であり、ノードN84の隣接装置は、範囲A84に含まれる通信装置10である。つまり、ノードN81にとっての隣接装置は、ノードN82〜N84であり、ノードN84の隣接装置はノードN81、N85、N86である。さらに、図19において、破線の矢印は、ノードN81〜N86がゲートウェイにデータフレームを送信する場合に使用される経路の例を示す。実線の矢印は、破線の矢印の逆向きの経路であり、ゲートウェイからノードN81〜N86にデータを送信する場合に使用される。なお、ゲートウェイが配信元となっているブロードキャストフレームのうち、各通信装置10がデータの取得に使用するフレームについても、図19の実線で示す経路で送信されればネットワーク中の全ての通信装置10に到達できるものとする。
第3の実施形態では、転送処理部25は、転送対象のフレームのグローバル宛先がゲートウェイである場合、転送先を特定するだけでなく、転送対象のフレームのローカル送信元(LS)も抽出する。抽出されたローカル送信元は、ゲートウェイ宛のフレームの受信履歴とともに、GW宛フレーム受信記録46に記録される。
図20は、第3の実施形態で使用されるGW宛フレーム受信記録46の例を示す。図20に示すように、第3の実施形態では、通信装置10は、GW宛フレーム受信記録45(図16)の代わりにGW宛フレーム受信記録46を備えるものとする。例えば、ノードN81は、ノードN84からゲートウェイ宛のデータフレームを受信すると、GW宛フレーム受信記録46_81のNo.1のエントリを生成する。同様に、ノードN81は、ノードN82からゲートウェイ宛のデータフレームを受信すると、GW宛フレーム受信記録46_81のNo.2のエントリを生成する。転送処理部25は、GW宛フレーム受信記録45の生成と並行して、フレームの転送処理も行う。ノードN84でも受信フレームはノードN81と同様に処理される。このため、ノードN84は、ノードN85とノードN86の各々から受信したゲートウェイ宛のデータフレームを用いて、GW宛フレーム受信記録46_84を生成する。なお、いずれのエントリでも、そのエントリが生成されたときには、GW宛のフレームの受信からの経過時間に0が設定されるものとする。
通信装置10がブロードキャストフレームを受信したときの処理は、第1および第2の実施形態と同様であるので、アプリケーション処理部26から制御部31にブロードキャストフレームの送信に関する処理が要求される。配置状態特定部32から、通信装置10が分散エリアに配置されていることが通知されると、制御部31は、フレームをブロードキャストする回数を決定するために、これまでに中継したゲートウェイ宛のフレームのローカル送信元を特定する。ここで、通信装置10が中継したゲートウェイ宛のフレームのローカル送信元となっている装置は、ゲートウェイとの通信を行うために通信装置10を経由する経路を用いている。換言すると、通信装置10が中継したゲートウェイ宛のフレームのローカル送信元となっている装置は、通信装置10からブロードキャストフレームを受信しないと、他の経路からはブロードキャストフレームを受信できない可能性がある。そこで第3の実施形態では、制御部31は、これまでに中継したゲートウェイ宛のフレームのローカル送信元のうちで、通信装置10との間の経路の通信品質が相対的に悪い装置との間の経路の品質に合わせて、フレームをブロードキャストする回数を決定する。
例えば、図19のノードN81が分散エリアに配置されていることが制御部31_81に通知されたとする。すると、制御部31_81は、ブロードキャストの回数を決定するために、ゲートウェイ宛のフレームのLSとしてGW宛フレーム受信記録46_81(図20)に記録されている隣接装置のうちでノードN81との間の品質が最も悪い経路を特定する。すなわち、制御部31_81は、GW宛フレーム受信記録46_81とリンクテーブル41_81を参照することにより、ノードN81の隣接装置のうちのノードN82とN84のいずれとの間の経路の品質がより悪いかを決定する。ここでは、ノードN81とノードN82の間の経路の品質よりも、ノードN81とノードN84の間の経路の品質のほうが悪いとする。すると、制御部31_81は、ノードN81とノードN84の間の経路の品質を、回数情報43(図11)に含まれている閾値G1〜G9と比較した結果に応じて、ブロードキャストの回数を決定する。
次にノードN84での処理の例を述べる。配置状態特定部32_84もノードN84が分散エリアに配置されていると判定したとする。すると、制御部31_84は、GW宛フレーム受信記録46_84(図20)を参照することにより、ノードN84が中継したことのあるゲートウェイ宛のフレームの転送元(LS)は、ノードN85とノードN86であることを特定する。そこで、制御部31_84は、ノードN84とノードN85の間の経路と、ノードN84とノードN86の間の経路のうち品質が悪いほうに合わせて、ノードN84がブロードキャストする回数を決定する。
図19に示す例では、ノードN84とノードN84の隣接装置の間の経路のうちで、最も通信品質が最も悪い経路は、ノードN81とノードN84の間の経路である。しかし、制御部31_84は、GW宛フレーム受信記録46_84(図20)にノードN81の情報が無いため、ノードN81とゲートウェイの間の通信経路にノードN84は含まれていないと判定する。そこで、制御部31_84は、ノードN81とノードN84の間の経路の状態に左右されずに、ブロードキャストの回数を決定できる。つまり、制御部31_84は、ノードN84をゲートウェイとの間の通信経路に含む通信装置10との間の経路の品質に合わせて、ブロードキャストの回数を決定できる。
図19と図20を参照しながら分散エリアに配置された通信装置10での処理を説明したが、分散エリアと密集エリアの境界に配置された通信装置10も、分散エリアに配置された通信装置10と同様にブロードキャストの回数を決定する。
図21は、第3の実施形態での制御部31の処理の例を説明するフローチャートである。制御部31は、配置状態特定部32から通知された配置が、分散エリアか分散エリアと密集エリアの境界のいずれかであるかを判定する(ステップS101)。分散エリアに配置されておらず、さらに、分散エリアと密集エリアの境界にも配置されていない場合、制御部31は、密集エリアか通信経路の末端に位置する通信装置10としての処理を行う(ステップS101でNo、ステップS102)。なお、密集エリアか通信経路の末端に位置する通信装置10について、ブロードキャストの回数を決定する方法は、第1および第2の実施形態と同様である。
分散エリアか分散エリアと密集エリアの境界のいずれかに配置されている場合、制御部31は、GW宛フレーム受信記録46を用いて、過去に中継したゲートウェイ宛フレームのローカル送信元の情報を取得する(ステップS101でYes、ステップS103)。制御部31は、過去に中継したゲートウェイ宛フレームのローカル送信元となった通信装置10との間の経路のうち、相対的に通信品質が悪い経路を選択する(ステップS104)。制御部31は、選択した経路の通信品質を回数情報43に含まれている閾値と比較することにより、選択した経路の通信品質に対応付けられたブロードキャストの回数を取得する(ステップS105)。制御部31は、取得した回数だけフレームをブロードキャストする。
このように、第3の実施形態によると、分散エリアや分散エリアと密集エリアの境界に位置する通信装置10は、ゲートウェイ宛のフレームを中継している通信装置10にブロードキャストフレームを送信できるように、ブロードキャストの回数を調整する。このため、隣接装置とゲートウェイとの通信経路に通信装置10が含まれていない場合は、通信装置10はその隣接装置との間の経路の状況に影響されずにブロードキャストの回数を決定できる。換言すると、隣接装置とゲートウェイとの通信経路に通信装置10が含まれていない場合、その隣接装置と通信装置10の間の通信経路の品質が悪くても、他の経路の状況が良好であれば、通信装置10は、ブロードキャストの回数を大きくしない。このため、ネットワーク中で送受信されるブロードキャストフレームの数が削減される。
<第4の実施形態>
第4の実施形態では、データフレームの送受信が、ゲートウェイからネットワーク中の通信装置10に宛てた通信と、各通信装置10からゲートウェイに宛てた通信に使用される場合について、ブロードキャストの回数を最適化する方法の例を説明する。第4の実施形態では、分散エリアと密集エリアの境界の通信装置10を、密集エリアから分散エリアにブロードキャストフレームを送信する装置と、分散エリアから密集エリアにブロードキャストフレームを送信する装置の2つのグループに分類する。以下、配置の決定に使用する情報の取得、配置の決定、ブロードキャストの回数の決定に分けて、第4の実施形態を説明する。
〔配置の決定に使用する情報の取得〕
第4の実施形態では、通信装置10は、GW宛フレーム受信記録46の他に中継情報47を保持している。中継情報47には、通信装置10がゲートウェイ以外の通信装置10に向けて転送したデータフレームのローカル送信元と、そのローカル送信元からのフレームを最後に通信装置10が中継した時刻からの経過時間が含まれている。第4の実施形態では、転送処理部25は、転送対象のフレームについて、転送先を特定するだけでなく、転送対象のフレームのローカル送信元(LS)も抽出する。転送処理部25は、グローバル宛先がゲートウェイであるフレームから抽出したローカル送信元の情報を、ゲートウェイ宛のフレームの受信履歴とともに、GW宛フレーム受信記録46に記録する。一方、転送処理部25は、グローバル宛先がゲートウェイ以外であるフレームから抽出したローカル送信元の情報を、中継情報47に記録する。換言すると、中継情報47は、ゲートウェイから通知された情報を含むフレームを通信装置10に送信する可能性がある隣接装置のリストであるといえる。また、GW宛フレーム受信記録46は、ゲートウェイから通知された情報を含むフレームを通信装置10が送信する対象の隣接装置であるといえる。このため、GW宛フレーム受信記録46か中継情報47に記録されているローカル送信元のいずれかと通信装置10の間の経路を含まない経路は、データフレームの送受信に使用されていないことになる。
図22は、GW宛フレーム受信記録46と中継情報47の例を示す。例えば、図22のケースC3に示すネットワーク中のノードN93は、ノードN94からゲートウェイ宛のデータフレームを受信する。このとき、ノードN93がノードN94から受信するデータフレームに設定されているアドレスは、グローバル宛先がゲートウェイ、ローカル送信元がノードN94に設定されている。そこで、ノードN93の転送処理部25_93は、ノードN94から受信したデータフレームのアドレス情報と受信時刻に基づいて、GW宛フレーム受信記録46_93(図22)を生成する。さらに、ノードN93がデータフレームF1〜F3を受信したとする。ここで、データフレームF1〜F3のアドレス情報は以下のとおりであるとする。
データフレームF1
グローバル送信元アドレス:GW
グローバル宛先アドレス :ノードN97
ローカル送信元アドレス :ノードN90
データフレームF2
グローバル送信元アドレス:GW
グローバル宛先アドレス :ノードN98
ローカル送信元アドレス :ノードN92
データフレームF3
グローバル送信元アドレス:GW
グローバル宛先アドレス :ノードN99
ローカル送信元アドレス :ノードN91
転送処理部25_93は、データフレームF1を転送する際に、データフレームF1の最終的な宛先がノードN97であることと、データフレームF1の転送元がノードN90であることを認識する。そこで、転送処理部25_93は、ノードN93とノードN90の間の経路がデータフレームの送受信に使用されていることに基づいて、中継情報47_93のエントリNo.1を生成する。同様に、転送処理部25_93は、データフレームF2に基づいて中継情報47_93のエントリNo.2、データフレームF3に基づいて中継情報47_93のエントリNo.3を生成する。
一方、ノードN96は、ノードN98とノードN99からゲートウェイ宛のデータフレームを受信し、さらに、ノードN99がグローバル宛先に指定されたデータフレームをノードN95から受信したとする。すると、転送処理部25_96は、ゲートウェイ宛のデータフレームに基づいて、GW宛フレーム受信記録46_96を生成する。さらに、転送処理部25_96は、ノードN99がグローバル宛先に指定されたデータフレームを用いて、中継情報47_96のエントリNo.1を生成する。
その他の通信装置10も、ノードN93、N96と同様に、GW宛フレーム受信記録46と中継情報47を生成する。なお、中継情報47の情報は、エントリに対応付けられているローカル送信元から受信したフレームの中継を最後に行ってから所定の時間が経過すると、転送処理部25により消去されるものとする。
さらに、ネットワーク中のいずれの通信装置10も、第1の実施形態と同様にリンクテーブル41やルーティングテーブル42を生成する。ノードN93が保持するリンクテーブル41_93と、ノードN96が保持するリンクテーブル41_96の例を、図23に示す。
〔配置の決定〕
以下、経路の末端と分散エリアのいずれにも配置されていないと判定された通信装置10についての配置の決定方法について説明する。なお、第4の実施形態でも、経路の末端に位置している通信装置10の特定方法は、第2の実施形態と同様である。また、分散エリアに配置されている通信装置10の特定方法は、第1および第2の実施形態と同様である。
配置状態特定部32は、ゲートウェイ宛のフレームの中継実績があり、さらに、隣接装置の数が閾値Th1を超えている場合、GW宛フレーム受信記録46に含まれているローカル宛先のリストを取得する。ここで、GW宛フレーム受信記録46に含まれているローカル宛先は、通信装置10がゲートウェイからのデータを提供している隣接装置である。例えば、ノードN93の配置状態特定部32_93では、GW宛フレーム受信記録46_93を参照することにより、ノードN93がノードN94にゲートウェイからのデータを提供していることを特定する。
次に、配置状態特定部32は、ゲートウェイからのデータの提供先の通信装置10においての隣接装置の数をリンクテーブル41から取得する。ゲートウェイからのデータの提供先においての隣接装置の数が閾値Th2未満の場合、配置状態特定部32は、通信装置10はゲートウェイからのデータを分散エリアに送信していると判定する。ゲートウェイからのデータの提供先が複数ある場合、1つの提供先でも隣接装置の数が閾値Th2未満であれば、配置状態特定部32は、ゲートウェイからのフレームを分散エリアに送信していると判定する。例えば、ノードN93の場合、リンクテーブル41_93を参照することにより、ノードN94にとっての隣接装置が2台であることを特定する。ここで、閾値Th2=3である場合、配置状態特定部32_93は、ノードN93のことを、ゲートウェイから送信されたデータを分散エリアに送信する通信装置10であると判定する。
一方、ノードN96の場合、配置状態特定部32_96は、GW宛フレーム受信記録46_96を参照することにより、ノードN96がノードN99とノードN98にゲートウェイからのデータを提供していることを特定する。さらに、リンクテーブル41_96(図23)を参照することにより、ノードN98、N99のいずれの通信装置10も、隣接装置の数が閾値Th2を超えていることを特定する。すると、配置状態特定部32_96は、ノードN96がゲートウェイから配信されたデータを分散エリア中の装置に送信していないと判定する。
配置状態特定部32は、ゲートウェイから配信されたデータを分散エリアに送信する通信装置10ではないと判定すると、中継情報47に含まれているローカル宛先のリストを取得する。ここで、中継情報47に含まれているローカル宛先は、通信装置10にゲートウェイからのデータを提供している隣接装置である。例えば、配置状態特定部32_96は、中継情報47_96(図22)を参照することにより、ノードN95がノードN96にゲートウェイからのデータを提供していることを特定する。
次に、配置状態特定部32は、ゲートウェイからのデータを送信してきている装置にとっての隣接装置の数をリンクテーブル41から取得する。ゲートウェイからのデータを送信してきている装置においての隣接装置の数が閾値Th2未満の場合、配置状態特定部32は、通信装置10はゲートウェイからのデータを分散エリア中の装置から受信して、密集エリアに送信していると判定する。なお、ゲートウェイからのデータを送信してくる装置のうちの1台でも隣接装置の数が閾値Th2未満であれば、配置状態特定部32は、通信装置10がゲートウェイからのフレームを分散エリア中の装置から受信し、密集エリアに送信していると判定する。例えば、ノードN96の場合、リンクテーブル41_96(図23)を参照することにより、ノードN95にとっての隣接装置が2台であることを特定する。閾値Th2=3であるので、配置状態特定部32_96は、ノードN96のことを、ゲートウェイから送信されたデータを、分散エリアの装置から取得して密集エリアに送信する通信装置10であると判定する。
なお、配置状態特定部32は、ゲートウェイから送信されたデータを分散エリアに送信する通信装置10ではなく、分散エリアの装置から取得したデータを密集エリアに送信する通信装置10でもない通信装置10を、密集エリアに配置されていると判定する。
図24は、第4の実施形態での配置の特定方法の例を示すフローチャートである。図24の例では、定数X、Yと変数x、yを使用する。定数Xは、GW宛フレーム受信記録46に含まれているローカル送信元(LS)の数であり、定数Yは中継情報47に含まれているローカル送信元の数である。変数x、yは、処理対象としたローカル送信元の数の係数に使用される。なお、図24は配置の特定方法の一例であり、例えば、ステップS117〜S120の前に,ステップS121〜S125の処理を行うように、処理の順序が変更される場合がある。また、ステップS115とステップS116の順序は互いに変更されても良い。
配置状態特定部32は、制御部31から配置の特定を要求されると、GW宛フレーム受信記録46を参照することにより、ゲートウェイをグローバル宛先としたフレームを中継したことがあるかを判定する(ステップS111)。ゲートウェイをグローバル宛先としたフレームを中継したことがない場合、配置状態特定部32は、通信経路の末端に位置する通信装置10であると判定する(ステップS111でNo、ステップS112)。ゲートウェイをグローバル宛先としたフレームを中継したことがある場合、配置状態特定部32は、リンクテーブル41のエントリ数Mが閾値Th1以上であるかを判定する(ステップS111でYes、ステップS113)。リンクテーブル41のエントリ数Mが閾値Th1未満の場合、配置状態特定部32は、通信装置10が分散エリアに配置されていると判定する(ステップS113でNo、ステップS114)。
リンクテーブル41のエントリ数Mが閾値Th1以上の場合、配置状態特定部32は、GW宛フレーム受信記録46を参照して、中継済みのゲートウェイ宛フレームのローカル送信元の数(X)を取得する(ステップS113でYes、ステップS115)。配置状態特定部32は、変数xとyを1に設定する(ステップS116)。配置状態特定部32は、GW宛フレーム受信記録46中のx番目のローカル送信先が保持するリンクテーブル41のエントリ数は、閾値Th2以上であるかを判定する(ステップS117)。このとき、配置状態特定部32は、GW宛フレーム受信記録46中のx番目のローカル送信先についての情報を、リンクテーブル41から取得するものとする。x番目のローカル送信先が保持するリンクテーブル41のエントリ数が、閾値Th2未満である場合、配置状態特定部32は、ゲートウェイから配信されたデータを分散エリアに送信していると判定する(ステップS117でNo、ステップS120)。
一方、GW宛フレーム受信記録46中のx番目のローカル送信先が保持するリンクテーブル41のエントリ数が閾値Th2以上である場合、配置状態特定部32は、変数xを1つインクリメントする(ステップS117でYes、ステップS118)。その後、配置状態特定部32は、変数xが定数Xより大きいかを判定し、変数xが定数Xを超えるまで、ステップS117〜S120の処理を繰り返す(ステップS119でNo)。変数xが定数Xより大きくなる場合は、GW宛フレーム受信記録46中のいずれのローカル送信先でも隣接装置の数が閾値Th2以上である(ステップS119でYes)。すなわち、変数xが定数Xより大きくなる場合、通信装置10は、分散エリア中の通信装置10にデータを送信していない。
GW宛フレーム受信記録46中のいずれのローカル送信先でも隣接装置の数が閾値Th2以上である場合、配置状態特定部32は、中継情報47中に記録されているローカル送信元の数(Y)を取得する(ステップS121)。配置状態特定部32は、中継情報47中のy番目のローカル送信先が保持するリンクテーブル41のエントリ数は、閾値Th2以上であるかを判定する(ステップS122)。なお、配置状態特定部32は、中継情報47中のy番目のローカル送信先についての情報を、リンクテーブル41から取得する。y番目のローカル送信先が保持するリンクテーブル41のエントリ数が、閾値Th2未満である場合、配置状態特定部32は、分散エリア中の装置から受信したフレームを密集エリアに送信していると判定する(ステップS122でNo、ステップS125)。なお、通信装置10が分散エリア中の装置から受信したフレームには、ゲートウェイから配信されたデータが含まれている。
一方、中継情報47中のy番目のローカル送信先が保持するリンクテーブル41のエントリ数が閾値Th2以上である場合、配置状態特定部32は、変数yを1つインクリメントする(ステップS122でYes、ステップS123)。その後、配置状態特定部32は、変数yが定数Yより大きいかを判定し、変数yが定数Yを超えるまで、ステップS122〜S125の処理を繰り返す(ステップS124)。変数yが定数Yより大きくなる場合は、中継情報47中のいずれのローカル送信先でも隣接装置の数が閾値Th2以上である(ステップS124でYes)。すなわち、変数yが定数Yより大きくなる場合、通信装置10は、分散エリア中の装置から受信したフレームを密集エリア中の装置に送信する通信装置10ではない。そこで、配置状態特定部32は、通信装置10が密集エリアに配置されていると判定する(ステップS126)。
〔ブロードキャストの回数の決定〕
制御部31は、配置状態特定部32から配置の判定結果を取得すると、通信装置10の配置に応じてブロードキャストの回数を決定する。通信装置10が分散エリアに配置されている場合と密集エリアに配置されている場合のブロードキャストの回数の決定方法は、第1〜第3の実施形態と同様である。さらに、通信装置10が通信経路の末端に位置している場合、通信装置10は、第2の実施形態と同様にブロードキャストを行わない。
ゲートウェイから配信されたデータを分散エリアに送信している通信装置10であると判定された場合、制御部31は、通信装置10の隣接装置のうちで分散エリアに含まれている装置のうち、通信状況が相対的に悪い装置を特定する。制御部31は、特定した装置へのフレームの送信に成功する確率が予め決められた閾値以上になるように、回数情報43を用いて、ブロードキャストの回数を決定する。すなわち、制御部31は、特定した装置との間の通信経路の品質に回数情報43で対応付けられている回数を、ブロードキャストの回数に決定する。
一方、分散エリアの装置から受信したフレームを密集エリアに送信する通信装置10であると判定された場合、制御部31は、ブロードキャストの回数を1回に設定する。分散エリアの装置から受信したフレームを密集エリアに送信する通信装置10では、ブロードキャストを行わないと、密集エリア中のいずれの通信装置10にもフレームが届かないおそれがあるためである。例えば、図22のノードN96がフレームをブロードキャストしないと、ノードN96がノードN95から受信したフレームはノードN97〜N99に到達しない。このため、ノードN96がフレームをブロードキャストしないと、ノードN97〜N99を含む密集エリアのいずれの通信装置10にもフレームが送られないことになってしまう。しかし、ノードN96のように密集エリアに接している通信装置10が1回ブロードキャストを行えば、密集エリア内ではいずれかの通信装置10がフレームを受信できる可能性が高い。このため、制御部31_96は、ノードN96からのブロードキャストの回数を1回に設定する。
図25は、第4の実施形態においてブロードキャストの回数を決定する方法の例を示すフローチャートである。図25のステップS131〜S134、S137は、図18を参照しながら説明したステップS81〜S85と同様である。
通路の末端に位置する通信装置10でなく、分散エリアに位置する通信装置10でもない場合、制御部31は、ゲートウェイから配信されたデータを分散エリアに送信している装置であるかを判定する(ステップS135)。ゲートウェイから配信されたデータを分散エリアに送信している場合、制御部31は、分散エリア中の隣接装置との間の経路のうちで、通信品質が相対的に悪い経路の品質をリンクテーブル41から取得する(ステップS135でYes、ステップS136)。制御部31は、特定した経路の品質に対応付けられた回数を、回数情報43から取得し、得られた回数だけ、ブロードキャストフレームを送信部11から送信する(ステップS137)。
配信されたデータを分散エリアに送信していない場合、制御部31は、通信装置10が分散エリア中の装置を介してゲートウェイからの配信データを受信し、密集エリア中の装置に送信しているかを判定する(ステップS135でNo、ステップS138)。通信装置10が分散エリア中の装置を介してゲートウェイからの配信データを受信し、密集エリア中の装置に送信している場合、制御部31は、ブロードキャストの回数を1回に設定する(ステップS138でNo、ステップS142)。ステップS139〜S143の処理は、図13を参照しながら説明したステップS45〜S49、および、図18のステップS87〜S91と同様である。
このように、データフレームが配信される方向を考慮することにより、密集エリアと分散エリアの境界に位置している通信装置10であっても、配信されている情報を密集エリアと分散エリアのいずれに配信するかによりブロードキャストの回数を調整できる。このため、ネットワーク中で送受信されるフレームの数が最適化される。
〔シミュレーション結果〕
以下、図26〜図29を参照しながら、第4の実施形態のシミュレーションの結果の例を説明する。
図26は、ネットワークの例を示す。図26に示すネットワークは、グループG1〜G3を含む。図26の例では、グループG1〜G3の中には、それぞれ165台の通信装置10が含まれているものとする。さらに、グループG1とグループG2の間は、3台の通信装置10でつながっており、グループG2とグループG3の間は、6台の通信装置10でつながっている。ここで、1つのグループは、そのグループに含まれている通信装置10からのフレームが受信可能な範囲であるとする。例えば、グループG1に含まれているある通信装置10が送信したフレームは、全ての通信装置10間の経路の状況が良好であれば、グループG1に含まれている他の全ての通信装置10に受信され得る。グループG2、G3についても同様である。図26の例では、ゲートウェイは、グループG1に含まれているものとする。つまり、グループG1には、ゲートウェイの他に、164台の通信装置10が含まれている。従って、図26に示すネットワーク中に含まれる通信装置10の数は、165+3+165+6+165=504台である。なお、図26は、ネットワークの一例であって、実施形態にかかる通信方法を適用するネットワークに含まれる通信装置10の数、グループの数、グループ内の通信装置10の数、グループ間を結ぶ通信装置10の数は任意に変更されうる。
図27は、ブロードキャストが行われる回数のシミュレーション結果の例を示す。図27は、図26に示すネットワークにおいて、ネットワーク中の通信装置10が、1〜99%のいずれかの確率でフレームの受信に失敗するものと仮定したときのシミュレーションの結果である。シミュレーションでは、フレームの受信に失敗する確率は、ネットワーク中の通信装置10にランダムに割り当てられている。さらに、フレームの受信に失敗する確率は、FIDごとに、割り当てが変更されているものとする。図27の例では、FID=1〜30のフレームをゲートウェイから送信したことにより、ネットワーク中で行われるブロードキャストの回数のネットワーク中の各通信装置10での総和を、FIDごとに示している。なお、FIDの値が大きいほど、後にゲートウェイから送信されたフレームであることを示すものとする。例えば、ゲートウェイは、FID=1のフレームをブロードキャストした後で、FID=2のフレームをブロードキャストする。
ここで、ブロードキャストの回数の総和は、ネットワーク中の各通信装置10が行ったブロードキャストの総和である。例えば、ゲートウェイを含むネットワーク中の全ての通信装置10が1回ずつブロードキャストを行う場合、ネットワーク中のブロードキャストの回数の総和は、以下のように計算できる。
総和=165×1+3×1+165×1+6×1+165×1=504回
さらに、複数回ブロードキャストする通信装置10がある場合、その通信装置10のブロードキャストの回数は、総和の計算のときも1以上である。例えば、ノードN1がフレームを4回ブロードキャストしたとする。この場合、総和の計算のときにも、ノードN1のブロードキャストの回数は4回となる。一方、ブロードキャストフレームの受信に失敗した通信装置10や、ブロードキャストしないことを決定した通信装置10はブロードキャストを行わないため、ブロードキャストの回数は0回とする。
図27中のグラフAは、第4の実施形態を図26のネットワークに適用したときのブロードキャストの回数の総和を、FIDに対応付けてプロットした結果である。一方、グラフBは、ブロードキャストフレームの受信に成功した通信装置10が1回ずつ受信フレームをブロードキャストする方式を、図26のネットワークに適用したときのブロードキャストの回数の総和を、FIDに対応付けてプロットした結果である。なお、フレームの受信に失敗する確率の各通信装置10への設定は、グラフAとグラフBで同じである。グラフAでは、FID=5以降のフレームについては、ブロードキャストの総数が、グラフBよりも低くなっている。
図28は、ブロードキャストによりデータを取得できた通信装置10の割合の例を示す。図28は、図27に示す回数のブロードキャストが行われた場合に、図26のネットワークに含まれている通信装置10のうち、ブロードキャストフレームの受信に成功した通信装置10の割合を示している。グラフCは、第4の実施形態を図26のネットワークに適用したことにより、グラフA(図27)に示す回数のブロードキャストが行われた場合に、データを取得できた通信装置10の割合を示している。一方、グラフDは、ブロードキャストフレームの受信に成功した通信装置10が1回ずつ受信フレームをブロードキャストする方式で、グラフB(図27)に示す回数のブロードキャストが行われた場合に、データを取得できた通信装置10の割合を示している。なお、各通信装置10がフレームの受信に失敗する確率の設定は、図27と図28では、FIDごとに同じ設定である。
グラフCに示すように、第4の実施形態を図26のネットワークに適用したときは、FID=2以外のフレームは、全ての通信装置10に到達している。一方、グラフDに示すように、ブロードキャストフレームの受信に成功した通信装置10が1回ずつ受信フレームをブロードキャストする方式では、FID=8、21、29以外のフレームは、ネットワーク中の全ての通信装置10に到達していない。従って、図27と図28より、第4の実施形態にかかる方法は、フレームの到達率をほぼ100%にしつつ、ネットワーク中のフレーム数を抑えることができることが読み取れる。図26のようなネットワークでは、グループ間を接続する通信装置10のうちの1つでもブロードキャストフレームの受信に失敗すると、受信に失敗した通信装置10よりもゲートウェイからのホップ数が大きい通信装置10のグループに含まれている通信装置10がブロードキャストフレームを受信できなくなる。従って、例えば、FID=6、7などのように、グラフDにおいてブロードキャストフレームを受信できた通信装置10の割合が33%程度の場合、グループG1とグループG2の間の通信装置10間での通信状態が悪化していることが考えられる。一方、FID=9、10などのように、グラフDにおいてブロードキャストフレームを受信できた通信装置10の割合が66%程度の場合、グループG2とグループG3の間の通信装置10間での通信状態が悪化していることが考えられる。しかし、第4の実施形態にかかる方法では、通信状態が悪化している経路においては、図11などを参照して説明したように、ブロードキャストの回数を増加させるため、ブロードキャストフレームの受信に成功し易くなっている。このため、FID=6、7、9、10などのように、グラフDで、ブロードキャストフレームを受信できた通信装置10の割合が30%程度まで悪化している状況下においても、グラフCでは、フレームの到達率が高い確率に保たれている。
図29は、1つの通信装置10が同じブロードキャストフレームを受信する回数のシミュレーション結果の例を示す。グラフEは、図27のグラフAに示す回数のブロードキャストが行われた際に、ネットワーク中の通信装置10が受信したブロードキャストフレームの平均数をFIDの関数としてプロットしている。グラフFは、図27のグラフAに示す回数のブロードキャストが行われた際に、ネットワーク中で最も多くブロードキャストフレームを受信した通信装置10での、ブロードキャストフレームの受信数をFIDの関数としてプロットしている。なお、グラフE、Fのいずれも、図26に示すネットワーク中で第4の実施形態に係る通信方法が行われている場合について得られたグラフである。
一方、グラフG、Hは、図26に示すネットワーク中で、ブロードキャストフレームの受信に成功した通信装置が1回ずつ受信フレームをブロードキャストする方式が採用された場合のグラフである。グラフGは、図27のグラフBに示す回数のブロードキャストが行われた際に、ネットワーク中の通信装置10が受信したブロードキャストフレームの平均数をFIDの関数として表わしている。グラフHは、図27のグラフBに示す回数のブロードキャストが行われた際に、ネットワーク中で最も多くブロードキャストフレームを受信した通信装置10での、ブロードキャストフレームの受信数をFIDの関数として表わしている。
図29のグラフEとグラフGを比較すると、FID=4以降では、グラフEの値は、グラフGの値を下回っている。従って、第4の実施形態では、ブロードキャストフレームの受信に成功した通信装置が1回ずつ受信フレームをブロードキャストする方式に比べ、ネットワーク中の個々の通信装置10が受信するフレーム数が削減されているといえる。さらに、グラフFとグラフHを比較すると、グラフFの値がグラフHの値を全てのフレームにおいて下回っている。従って、ネットワーク中で最もブロードキャストフレームの受信が多い装置同士での受信数は、第4の実施形態を採用した場合、ブロードキャストフレームの受信に成功した通信装置が1回ずつ受信フレームをブロードキャストする場合よりも小さくなるといえる。このため、第4の実施形態では、ブロードキャストフレームの受信に成功した通信装置が1回ずつ受信フレームをブロードキャストする方式よりも、通信装置10の処理負荷が低下しているといえる。
図26〜図29を参照しながら述べたシミュレーション結果より、第4の実施形態を用いると、ネットワーク中で送受信されるフレーム数を削減しつつ、ブロードキャストフレームの到達可能性を向上させられることが分かる。
第4の実施形態で説明したように、データフレームの送受信がゲートウェイとネットワーク中の通信装置10の間で行われる場合としては、センサや公共料金のメータからゲートウェイに測定値を通知するネットワークなどが考えられる。センサや公共料金のメータは、測定箇所が密集している場合は、図26に示したように、1つの通信装置10にとっての隣接装置の数が膨大になる場合がありえる。第4の実施形態では、通信経路に使用されている通信装置10を、GW宛フレーム受信記録46や中継情報47を用いて特定した上で、通信経路に使用されている通信装置10の中から、分散エリアや密集エリアにフレームを送信する通信装置10が選択される。このため、隣接装置の数が膨大になっても効率的に、分散エリアや密集エリアにフレームを送信する通信装置10を特定できる。さらに特定した配置に応じて、適切なブロードキャストの回数を指定できる。
<その他>
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
通信装置10の設置状況に応じて、特定の種類の配置の通信装置10についてブロードキャストの回数を調整するように変形することもできる。例えば、分散エリア中の通信装置10の影響が無視できる系では、密集エリアのみをブロードキャストの回数の調整の対象とできる。この場合、密集エリアでは、第1の実施形態で述べたように選択された通信装置10がブロードキャストを行い、選択されていない通信装置10はブロードキャストを行わない。また、第2の実施形態で述べたように、通信経路の末端の通信装置10はブロードキャストを行わないように設定しつつ、密集エリアや分散エリアなどのその他の配置においてはブロードキャストの回数の調整を行わないようにすることもできる。さらに、密集エリアに配置された通信装置10でブロードキャストの回数を調整した上で、通信経路の末端の通信装置10がブロードキャストを行わないようにするが、分散エリアなどではブロードキャストの回数の調整を行わないこともできる。
第4の実施形態では、データフレームの送受信が、ゲートウェイとネットワーク中の通信装置10の間で行われる場合を例として説明したが、他の通信装置10間でデータフレームの送受信が行われるシステムでも第4の実施形態を使用することもできる。この場合、転送処理部25は、転送処理の際にデータフレームのグローバル送信元をチェックする。グローバル送信元がブロードキャストフレームに含まれるデータの配信元である場合、転送処理部25は、データフレームのローカル送信元を中継情報47に記録する。
アプリケーション処理部26は、ブロードキャストの対象となるデータと共に、ブロードキャストフレームの受信を制御部31に通知する信号を制御部31に出力しても良い。この場合、制御部31は、ブロードキャストフレームの受信を通知する信号が入力されたことをトリガとして、配置状態特定部32に配置状態の特定を要求する。
また、通信装置10は、通信装置10が保持するリンクテーブル41に含まれているエントリ数を、Helloフレーム中のHelloヘッダの代わりに、Helloメッセージヘッダに含めることもできる。Helloヘッダにリンクテーブル41のエントリ数が含まれる場合、各Halloヘッダにエントリ数を記録する領域が含まれないため、Helloフレームの大きさを小さくすることができる。
第2〜第4の実施形態では、ブロードキャストフレームの配信元がゲートウェイである場合を例として説明したが、ブロードキャストフレームの配信元はゲートウェイに限られない。ゲートウェイ以外の装置がブロードキャストフレームの配信元となる場合、GW宛フレーム受信記録45の代わりに、ブロードキャストフレームの配信元となる通信装置10の識別子に対応付けて、配信元宛のフレームの転送実績などの情報が記録される。