(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、図面を参照して、実施形態について説明する。
図1は、ノード装置A〜Cとノード装置R1〜R5(リピータ)とGW(ゲートウェイ装置)との9つのノード装置が参加しているアドホックネットワークの一例を示している。アドホックネットワークの例は
図1に限定されない。
【0011】
図1では、説明のために、2つの経路を有するアドホックネットワークの一例を示しているが、より多くの複雑な経路を有するアドホックネットワークにも実施形態を適用できる。例えば、メッシュ状に経路が構成されたアドホックネットワークにも実施形態を適用できる。
【0012】
図1では3種類のノード装置を示している。ノード装置A〜Cは通信性能が低いノード装置である。例えば、ノード装置A〜Cとしてはスマートメータを適用することができる。スマートメータは、電力やガス、水道等の使用量を計測する計測機器であり、通信機能を有している。計測した値は通信機能を利用して送信することができる。
【0013】
各ノード装置はアドホックネットワークに含まれる。通信形態としては、無線通信であってもよいし、有線通信であってもよい。
【0014】
ノード装置R1〜R5はリピータである。ノード装置GWはゲートウェイ装置である。従って、ネットワークに参加している各ノード装置は、スマートメータとリピータとゲートウェイ装置との3種類である。
図1は例示であり、これら3種類のノード装置以外の種類のノード装置がネットワークに参加してもよい。
【0015】
前述したように、スマートメータは通信性能が低い。一方、リピータおよびゲートウェイ装置は通信性能が高い。通信性能が低ければ、通信可能な速度が低速になり、通信性能が高ければ、通信可能な速度が高速になる。実施形態では、リピータとゲートウェイ装置との通信性能を同じ例を示しているが、リピータとゲートウェイ装置との通信性能が異なっていてもよい。
【0016】
実施形態では、フレームを単位としてアドホック通信が行われる。フレームはプロトコルが扱う単位であり、Helloフレームとデータフレームとがあるが、これらに限定されることはない。
【0017】
Helloフレームは、アドホックネットワークで適切な経路(ルート)を選択するために、隣接するノード装置間で通信されるフレームである。データフレームは、アドホックネットワークで通信されるデータである。例えば、スマートメータが計測した電力の情報がデータフレームに含まれる。Helloフレームは第1のデータ(またはデータ)の一例であり、データフレームは第2のデータの一例である。
【0018】
ネットワークを構成するノード装置にはGS(Global Source)およびGD(Global Destination)がある。GSはフレームの送信元のノード装置を示す。GDはフレームの最終的な宛先となるノード装置を示す。GSはグローバル送信元と称されることもある。GDはグローバル宛先と称されることもある。
【0019】
また、ノード装置にはLS(Local Source)およびLD(Local Destination)がある。LDは、あるノード装置を主体としたときに、次にフレームを渡す、隣接するノード装置を示す。LSはLDへフレームを送信する直接の送信元となるノード装置を示す。LSはローカル送信元と称されることもある。LDはローカル宛先と称されることもある。
【0020】
ここで、
図1を参照して、ノード装置AをGSとして、ゲートウェイ装置をGDとしたアドホック通信を行う場合を想定する。アドホックネットワークでは、相互に隣接しているノード装置の間で通信を行う。隣接しているノード装置とは、あるノード装置から送信されたフレームを受信することができる範囲内に位置するノード装置である。従って、ノード装置Aに隣接しているノード装置はノード装置Bおよびノード装置R1である。
【0021】
図1に示すように、ノード装置Aからゲートウェイ装置(ノード装置GW)まで通信を行う経路(ルート)は2つある。1つは経路1として示しており、ノード装置BおよびCを経由する経路である。もう1つは、経路2として示しており、ノード装置R1〜R5のリピータを経由する経路である。経路2は、Highwayとも称される。
【0022】
実施形態では、何れの経路を選択するかはノード装置Aからノード装置GWまでの経路のリンクコスト積算値で決定される。リンクコストは、あるノード装置と隣接するノード装置との間の通信品質をコストで表したものである。従って、リンクコストが低ければ、高速に通信を行うことができ、リンクコストが高ければ、通信速度は低速になる。
【0023】
また、ノード装置Aからノード装置GWまでには複数のノード装置が存在する。隣接するノード装置間にはリンクコストがあり、ノード装置Aからノード装置GWまでの間の経路に1以上のノード装置が存在すれば、当該経路のリンクコストは2つ以上になる。そこで、経路にあるノード装置間のリンクコストを積算した値をリンクコスト積算値としている。
【0024】
リンクコスト積算値が低ければ、GSからGDまで通信速度は高速になる。一方、リンクコスト積算値が高くなれば、GSからGDまでの通信速度は低速になる。従って、通常は、リンクコスト積算値が低い経路が選択される。
図1に示すように、経路1のホップ数は経路2のホップ数よりも少ない。ただし、リンクコスト積算値としては、経路1が「165」であり、経路2が「154」である。
【0025】
従って、ノード装置Aからノード装置GWまでの経路を決定するときには、経路2が選択される。前述したように、経路2のノード装置R1〜R5はリピータであり、高速な通信が可能になっている。このため、ホップ数が多くなっても、通信性能が高いリピータであるノード装置R1〜R5を経由した経路2(Highway)が選択される。
【0026】
リンクコストは、Helloフレームを用いて得ることができる。ネットワークに参加する全てのノード装置は、Helloフレームを隣接している全てのノード装置に送信する。Helloフレームを受信したノード装置は、Helloフレームを送信したノード装置と自身のノード装置との間のリンクコストを演算する。なお、隣接しているノード装置は隣接ノード装置と称されることもあり、自身のノード装置は自ノード装置と称されることもある。
【0027】
リンクコストを演算する1つの手法として、HelloフレームのRSSI(受信信号強度:Received Signal Strength Indicator)の平均値と分散値、およびHelloフレームの受信周期の平均値と分散値を用いることができる。リンクコストを得る手法は当該手法に限定されない。
【0028】
HelloフレームのRSSIおよび受信周期に基づいて得られるリンクコストを補正前リンクコスト(
図1のX)とする。実施形態では、補正前リンクコストXに、Helloフレームを送信してきた隣接ノード装置の通信性能に応じたコスト(以下、ノード装置コストと称することもある)Yを加算する演算を行う。
【0029】
スマートメータの通信速度は低速であるため、スマートメータのノード装置コストYは高くなる。一方、リピータおよびゲートウェイ装置は通信速度が高速であるため、リピータおよびゲートウェイ装置のノード装置コストYは低くなる。
【0030】
補正後リンクコストZは、補正前リンクコストXに対してノード装置コストYを加算した値になる(Z=X+Y)。この補正後リンクコストZは、ノード装置の通信速度を反映した正確なリンクコストとなる。
【0031】
次に、
図2を用いて、ネットワークに参加する1つのノード装置の構成の一例を示す。ノード装置100は、受信部101と演算部102と補正部103とテーブル管理部104とリンクテーブル105とルーティングテーブル106とを備えている。さらに、ノード装置100は、自ノードコスト記憶部107と装置状態管理部108と送信処理部109とタイマ110と送信部111とフレーム処理部112とルーティング決定部113とを備えている。
【0032】
受信部101は、隣接ノード装置からフレームを受信する。受信部101が受信するフレームとしては、Helloフレームとデータフレームとがある。
図2では、Helloフレームを「Hello」と示し、データフレームを「Data」と示している。
【0033】
受信部101は、受信したフレームがHelloフレームとデータフレームとの何れであるかを識別する。そして、受信部101は、Helloフレームを演算部102に出力し、データフレームをフレーム処理部112に出力する。
【0034】
演算部102は、受信したHelloフレームのHello受信周期平均、Hello受信周期分散、RSSI平均およびRSSI分散に基づいて、Helloフレームを送信した隣接ノード装置と自ノード装置100との間のリンクコストを演算する。演算されたリンクコストは前述した補正前リンクコストXになる。
【0035】
補正部103は、Helloフレームに含まれるノード装置コストYを補正前リンクコストXに対して加算することで補正を行う。つまり、補正部103は、演算した補正前リンクコストXに対して、Helloフレームを送信した隣接するノード装置のノード装置コストYを反映している。補正したリンクコストを補正後リンクコストZとする。補正後リンクコストZは「Z=X+Y」となる。
【0036】
テーブル管理部104は、リンクテーブル105およびルーティングテーブル106の管理を行う。テーブル管理部104は、例えばリンクテーブル105およびルーティングテーブル106の更新や参照等を行う。
【0037】
リンクテーブル105は、自身のノード装置100に隣接するノード装置に関する情報やノード装置間の通信品質に関する情報を記憶している。
図3は、リンクテーブル105の要素の一例を示している。リンクテーブル105は、例えば後述する補助記憶装置124に記憶することができる。
【0038】
図3に示したリンクテーブル105の一例は、隣接ノード装置とHello受信周期平均とHello受信周期分散とRSSI平均とRSSI分散と補正前リンクコストと隣接ノード装置コストと補正後リンクコストとの7つのフィールドを含んでいる。これら7つのフィールドは隣接ノードごとに設けられている。リンクテーブル105のフィールドは
図3に示したフィールドに限定されることはない。
【0039】
なお、Hello受信周期平均、Hello受信周期分散、RSSI平均およびRSSI分散については、補正前リンクコストXを演算するための要素であるため、具体的な数値は示していない。
【0040】
Helloフレームには、当該Helloフレームを送信した隣接ノード装置の情報が含まれている。また、Helloフレームから、Hello受信周期平均とHello受信周期分散とRSSI平均とRSSI分散とを得ることができる。前述したように、Helloフレームにはノード装置コストの情報が含まれている。また、補正部103が補正後リンクコストZを出力する。以上の各要素が隣接ノード装置ごとにリンクテーブル105に記憶される。
【0041】
ルーティングテーブル106は、1つのグローバル宛先(GD)のノード装置に対して、任意の1または複数のローカル宛先(LS)のノード装置に対応付けられている。ルーティングテーブル106も、リンクテーブル105と同様に、例えば後述する補助記憶装置124に記憶することができる。ルーティングテーブル106は記憶部の一例である。
【0042】
図4は、ノード装置Aのルーティングテーブル106の一例を示している。なお、
図4のルーティングテーブル106は1つのグローバル宛先に対して3つ以下のローカル宛先を記憶可能な例を示しているが、ローカル宛先の数は3つ以下には限定されない。
【0043】
図1に示したように、ノード装置Aの隣接ノード装置にはノード装置Bとノード装置R1との2つがある。ルーティングテーブル106はグローバル宛先(GD)とローカル宛先(LD)とリンクコスト積算値との3つの要素を含んでいる。グローバル宛先はゲートウェイ装置であるノード装置GWであるため、グローバル宛先にはノード装置GWを示す「GW」が記憶されている。
【0044】
ルーティングテーブル106のローカル宛先にはノード装置R1を示す「R1」とノード装置Bを示す「B」が記憶されている。一例として、ローカル宛先がノード装置R1の場合(経路2の場合)には、ローカル宛先のノード装置R1に対応してコスト積算値「154」が記憶されている。ローカル宛先がノード装置B(経路1の場合)には、ローカル宛先のノード装置Bに対応してコスト積算は「165」が記憶されている。
【0045】
従って、ルーティングテーブル106にはローカル宛先ごとにリンクコスト積算値が記憶されている。
【0046】
自ノードコスト記憶部107は自ノード装置100の通信性能に応じたコスト(ノード装置コスト)を記憶する。前述したように、自身のノード装置100がスマートメータであれば、通信性能が低いため、ノード装置コストは高く設定される。一例として、ノード装置100がスマートメータの場合には、ノード装置コストは「60」に設定される。
【0047】
また、自身のノード装置100がリピータまたはゲートウェイ装置であれば、通信性能が高いため、ノード装置コストは低く設定される。一例として、ノード装置100がリピータまたはゲートウェイ装置の場合には、ノード装置コストは「15」に設定される。この例では、スマートメータに比べてノード装置コストは「1/4」になる。
【0048】
自ノードコスト記憶部107が記憶する自身のノード装置100のノード装置コストは固定されてもよいし、可変であってもよい。装置状態管理部108は、自ノードコスト記憶部107が記憶するノード装置コストの値を変更することが可能である。装置状態管理部108は変更部の一例である。
【0049】
例えば、ノード装置100を起動した直後や輻輳時、ノード装置100がバッテリで駆動される場合等には、装置状態管理部108は値が高くなるようにノード装置コストを変更することができる。詳細については後述する。
【0050】
送信処理部109は、Helloフレームを生成して送信処理を行う。Helloフレームは所定時間ごとに隣接するノード装置に送信される。このために、タイマ110が設定された所定時間をカウントし、所定時間になったときに、送信処理部109に対してHelloフレームを送信させる信号を出力する。
【0051】
送信処理部109は、自身のノード装置100に隣接する全てのノード装置に対してHelloフレームをブロードキャストする。このとき、送信処理部109は、Helloフレームに自身のノード装置100のノード装置コストを含める。Helloフレームが送信されたノード装置を主体として見ると、自身のノード装置100のノード装置コストは、ノード装置コストYとなる。
【0052】
ルーティングテーブル106には、ローカル宛先ごとにリンクコスト積算値が記憶されている。よって、送信処理部109はルーティングテーブル106を参照して、ローカル宛先のノード装置に対応するリンクコスト積算値をHelloフレームに含める。
【0053】
次に、フレーム処理部112について説明する。受信部101はデータフレームを受信したときに、受信したデータフレームをフレーム処理部112に出力する。フレーム処理部112はデータフレームに所定の処理を行う。そして、フレーム処理部112から出力されたデータフレームはルーティング決定部113に入力される。
【0054】
ルーティング決定部113では、ルーティングテーブル106を参照して、次のローカル宛先を決定する。このとき、ルーティング決定部113は、ルーティングテーブル106のリンクコスト積算値が最も低いローカル宛先を選択することが好ましい。リンクコスト積算値が最も低い宛先ノード装置を選択することで、データフレームを最も高速に最終的な宛先であるノード装置GW(ゲートウェイ装置)に送信することができる。
【0055】
そして、送信部111は、ルーティング決定部113で決定されたローカル宛先にデータフレームを送信する。従って、送信部111はデータフレームとHelloフレームとの2種類のフレームを送信する。
【0056】
次に、
図5を参照して、ノード装置100のハードウェアの構成を示す。
図5に示すように、ノード装置100は、プロセッサ121とRAM(Random Access Memory)122とROM(Read Only Memory)123と補助記憶装置124と通信インタフェース125とタイマ126とがバス120を介して接続されている。
【0057】
プロセッサ121はCPU(Central Processing Unit)のような任意の処理回路である。プロセッサ121はRAM122に展開されたプログラムを実行する。ROM123はRAM122に展開されるプログラムを記憶する不揮発性の記憶装置である。RAM122に展開されるプログラムは補助記憶装置124に記憶されていてもよい。補助記憶装置124の一例としては、可搬型記録媒体や半導体メモリ、ハードディスクドライブ等を適用できる。なお、補助記憶装置は記憶装置とも称される。
【0058】
RAM122、ROM123および補助記憶装置124は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
【0059】
一例として、演算部102、補正部103、テーブル管理部104、装置状態管理部108、送信処理部109、フレーム処理部112およびルーティング決定部113は、プロセッサ121により実現されてもよい。リンクテーブル105、ルーティングテーブル106および自ノードコスト記憶部107はRAM122、ROM123または補助記憶装置124により実現されてもよい。受信部101および送信部111は通信インタフェース125により実現されてもよい。
【0060】
通信インタフェース125は他のノード装置と通信するためのインタフェース装置である。
図2に示した受信部101および送信部111は通信インタフェース125に含まれる。タイマ126は
図2に示したタイマ110と同じものである。
【0061】
次に、
図6を参照して、Helloフレームについて説明する。
図6に示すHelloフレームは、アドホックヘッダと時刻とHelloメッセージヘッダと複数のHelloヘッダと署名とパディングとを有している。なお、
図6のHelloフレームは例示であり、これに限定されることはない。
【0062】
アドホックヘッダには、ローカル宛先(LD)、ローカル送信元(LS)、フレームのタイプ、フレームサイズ等の情報が含まれている。HelloメッセージヘッダにはHello情報と固有コストと装置起動経過カウンタとが含まれている。
図6に示しているバイト数は例示であり、
図6のバイト数には限定されない。
【0063】
また、Hello情報にはHelloヘッダの数の情報が含まれている。各HelloヘッダはGDアドレスとホップ数とリンクコスト積算値とを含んでいる。GDアドレスは最終的な宛先のノード装置を示している。ホップ数は最終的な宛先のノード装置までに存在するノード装置の数を示している。リンクコスト積算値は前述したものである。
【0064】
次に、
図7を参照して、ノード装置100のHelloフレームの受信処理について説明する。ノード装置100は、Helloフレームを受信したか否かを判定する(ステップS100)。ノード装置100がHelloフレームを受信しなければ、Helloフレーム受信処理は、次のステップS102には移行しない。
【0065】
ノード装置100の受信部101が隣接するノード装置からHelloフレームを受信したときに、演算部102は、Hello受信周期平均、Hello受信周期分散、RSSI平均およびRSSI分散に基づいて、補正前リンクコストXを演算する(ステップS102)。
【0066】
また、Helloフレームにはノード装置コストが含まれている。補正部103は、演算部102が演算した補正前リンクコストXにノード装置コストY(隣接するノード装置のノード装置コスト)を加算する。これにより、補正部103は、補正前リンクコストXを補正して補正後リンクコストZを得る(ステップS104)。
【0067】
テーブル管理部104はリンクテーブル105を更新する(ステップS106)。隣接するノード装置から送信されたHelloフレームには、当該隣接するノード装置を特定する情報が含まれている。また、受信したHelloフレームに基づいて、Hello受信周期平均、Hello受信周期分散、RSSI平均およびRSSI分散を検出することができる。
【0068】
Helloフレームにはノード装置コストYが含まれており、テーブル管理部104はノード装置コストYを検出する。テーブル管理部104は、補正部103が補正した補正後リンクコストZを取得する。そして、テーブル管理部104はリンクテーブル105の各要素を隣接ノード装置ごとに更新することができる。
【0069】
テーブル管理部104は、ルーティングテーブル106を更新する(ステップS108)。テーブル管理部104は、自身のノード装置100に隣接するノード装置の情報をルーティングテーブル106のLDとして追加することがある。
【0070】
また、テーブル管理部104は、リンクテーブル105を参照する。リンクテーブル105には、Helloフレームを送信してきた隣接ノード装置に対応する補正後リンクコストZが記憶されている。一方、隣接ノード装置から送信されたHelloフレームにはリンクコスト積算値が含まれている。
【0071】
そこで、演算部102は、Helloフレームのリンクコスト積算値にリンクコストの補正後リンクコストZを加算する。そして、テーブル管理部104は、加算した積算値をルーティングテーブル106に記憶する。
【0072】
次に、
図8を参照して、ノード装置100によるHelloフレームの送信処理について説明する。ノード装置100のタイマ110は、所定時間が経過したか否かの判定を行う(ステップS110)。所定時間が経過しなければ、Helloフレーム送信処理は、次のステップS112には移行しない。
【0073】
タイマ110が所定時間に達したと判断した場合には、その旨の信号が送信処理部109に出力される。送信処理部109は、
図6で示したようなHelloフレームを生成する(ステップS112)。このとき、送信処理部109は、ブロードキャストするHelloフレームを生成する。
【0074】
送信処理部109は、自ノードコスト記憶部107を参照して、自身のノード装置コストをHelloフレームに含める(ステップS114)。ノード装置100自身に隣接するノード装置を主体として見ると、ステップS114でHelloフレームに含められたノード装置コストは、隣接するノード装置から送信されたノード装置コストYとなる。
【0075】
次に、送信処理部109はルーティングテーブル106を参照して、Helloフレームに、次のローカル宛先に対応するリンクコスト積算値を含める(ステップS116)。なお、ステップS114よりも先にステップS116の処理が行われてもよい。
【0076】
以上のステップS114およびS116を経た後に、送信処理部109は、自身のノード装置100に隣接する全てのノード装置にHelloフレームを送信する(ステップS118)。
【0077】
以上が、ノード装置100のHelloフレームの受信処理および送信処理である。アドホックネットワークでは、ネットワークに参加する全てのノード装置が、Helloフレームの受信処理および送信処理を行う。
【0078】
次に、
図9を参照して、ノード装置100におけるデータフレームの処理について説明する。ノード装置100の受信部101はデータフレームを受信したか否かを判定する(ステップS120)。受信部101がデータフレームを受信しない間は、データフレームの処理は、次のステップS122には移行しない。
【0079】
受信部101がデータフレームを受信したときには、フレーム処理部112にデータフレームが出力される。そして、フレーム処理部112がデータフレームに対して所定の処理を行い(ステップS122)、ルーティング決定部113に処理後のデータフレームを出力する。
【0080】
ルーティング決定部113は、ルーティングテーブルを参照する(ステップS124)。そして、ルーティング決定部113は、リンクコスト積算値が最も低いローカル宛先(LD)を選択し、データフレームのルートを決定する(ステップS126)。
【0081】
送信部111は、ルーティング決定部113が決定したローカル宛先(LD)のノード装置にデータフレームを送信する(ステップS128)。以上により、ノード装置100のデータフレーム処理が終了する。
【0082】
ネットワークに参加しているノード装置は複数存在しており、各ノード装置において、ルーティング決定部113がデータフレームをグローバル宛先(GD)に送信するための適切なルートを決定している。
【0083】
次に、Helloフレームを用いた経路決定の具体的な一例を説明する。アドホックネットワークとしては、
図1に例示したアドホックネットワークを適用する。グローバル送信元(GS)はノード装置Aである。このノード装置Aはスマートメータであり、この一例では、計測した電力の情報をデータフレームで送信するものとするが、電力を計測するスマートメータには限定されない。また、最終的な宛先であるグローバル宛先(GD)はノード装置GWであるものとする。
【0084】
前述したように、ネットワークに参加している9つのノード装置A〜C、R1〜R5およびGWは、それぞれ隣接するノード装置にHelloフレームを送信している。そこで、最初にノード装置GWに着目する。ノード装置GWはゲートウェイ装置であり、グローバル宛先である。
【0085】
ノード装置GWに隣接するノード装置は、ノード装置Cおよびノード装置R5になる。ここで、ノード装置GWはHelloフレームをブロードキャストし、隣接ノードであるノード装置R5とノード装置CはこのHelloフレームを受信する。
【0086】
図10は、ノード装置R5のリンクテーブル105(の一部)とルーティングテーブル106とノード装置R5から送信されるHelloフレームとの一例を示している。ノード装置R5のリンクテーブル105には、隣接ノード装置と補正前リンクコストとノード装置コストと補正後リンクコストとが記憶されている。
【0087】
ノード装置R5を自身のノード装置100とすると、ノード装置100の演算部102は、隣接するノード装置GWと自身のノード装置100との間の補正前リンクコストXを演算する。ここでは、補正前リンクコストXは「12」になっている。
【0088】
Helloフレームには、隣接するノード装置GWのノード装置コストYが含まれている。ここでは、ノード装置コストYは「15」になっている。よって、補正部103は、補正前リンクコストXにノード装置コストYを加算する。補正後リンクコストZは「27」になる。これらの値がリンクテーブル105に記憶される。
【0089】
ルーティングテーブル106には、LDとしてノード装置GWおよびノード装置R4が記憶されている。ここでは、ノード装置GWに着目するため、ノード装置R4のリンクコスト積算値は示していないが、ノード装置R4のリンクコストにもリンクコスト積算値が記憶されている。
【0090】
ノード装置GWをLDとするリンクコスト積算値は「27」として記憶されている。ノード装置R5はノード装置GWに隣接するノード装置であるため、積算されてきたリンクコストは存在しない。積算するリンクコストをゼロとしてもよい。従って、リンクコスト積算値は補正後リンクコストZと同じ値になる。
【0091】
送信処理部109は、ノード装置R4とノード装置GWと送信するHelloフレームを生成する。このとき、送信処理部109は、ルーティングテーブル106を参照して、リンクコスト積算値「27」の情報とホップ数「1」をHelloフレームに含める。また、送信処理部109は、自ノードコスト記憶部107が記憶しているノード装置R5の通信性能に応じたコスト「15」をHelloフレームに含める。そして、送信処理部109はHelloフレームをブロードキャストし、隣接ノードであるノード装置R4とGWはこのHelloフレームを受信する。
【0092】
次に、
図11を参照して、ノード装置R4について説明する。ノード装置R4を自身のノード装置100としたとき、隣接するノード装置はノード装置R3およびノード装置R5になる。ノード装置R4のリンクテーブル105にはそれぞれのノード装置の補正前リンクコストXとノード装置コストYと補正後リンクコストZとが記憶されている。
【0093】
ここでは、隣接ノード装置R3に着目する。演算部102が演算する補正前リンクコストXは「10」である。ノード装置コストYは「15」である。このノード装置コストYは、ノード装置R5がHelloフレームに含めたノード装置コストである。そして、補正部103が補正した補正後リンクコストは「25」になる。この補正後リンクコスト「25」はリンクテーブル105に記憶される。
【0094】
演算部102は、ノード装置R5から送信されたHelloフレームに含まれているリンクコスト積算値「27」に補正後リンクコスト「25」を加算する。これにより、ルーティングテーブル106においてLDがノード装置R5に対応するリンクコスト積算値は「52(=27+25)」になる。
【0095】
送信処理部109は、Helloフレームを生成する。送信処理部109は、ルーティングテーブル106を参照して、Helloフレームにリンクコスト積算値「52」の情報を含める。また、自ノードコスト記憶部107に記憶されているノード装置R4の通信性能に応じたノード装置コスト「15」とホップ数「2」をHelloフレームに含める。そして、送信処理部109はHelloフレームをブロードキャストし、隣接ノードであるノード装置R3とノード装置R5はこのHelloフレームを受信する。
【0096】
次に、
図12を参照して、ノード装置R3について説明する。ノード装置R3に隣接するノード装置はノード装置R4およびノード装置R2になる。隣接ノード装置R4に着目すると、演算部102が演算する補正前リンクコストXは「10」である。また、隣接ノード装置R4のノード装置コストYは「15」である。よって、補正後リンクコストZは「25」になる。この補正後リンクコストZ「25」はリンクテーブル105に記憶される。
【0097】
演算部102は、ノード装置R4から送信されたHelloフレームに含まれているリンクコスト積算値「52」に補正後リンクコスト「25」を加算する。これにより、ルーティングテーブル106のLDがノード装置R4に対応するリンクコスト積算値は「77(=52+25)」になる。
【0098】
送信処理部109は、Helloフレームを生成する。送信処理部109は、ルーティングテーブル106を参照して、Helloフレームにリンクコスト積算値「77」の情報とホップ数「3」を含める。また、自ノードコスト記憶部107に記憶されているノード装置R3のノード装置コスト「15」を含める。そして、送信処理部109はHelloフレームをブロードキャストし、隣接ノードであるノード装置R2とノード装置R4はこのHelloフレームを受信する。
【0099】
次に、
図13を参照して、ノード装置R2について説明する。ノード装置R2に隣接するノード装置はノード装置R3およびノード装置R1になる。隣接ノード装置R3に着目すると、演算部102が演算する補正前リンクコストXは「10」である。また、隣接ノード装置R4のノード装置コストYは「15」である。よって、補正後リンクコストZは「25」になる。この補正後リンクコスト「25」はリンクテーブル105に記憶される。
【0100】
演算部102は、ノード装置R3から送信されたHelloフレームに含まれているリンクコスト積算値「77」に補正後リンクコスト「25」を加算する。これにより、ルーティングテーブル106においてLDがノード装置R3に対応するリンクコスト積算値は「102(=77+25)」になる。
【0101】
送信処理部109は、Helloフレームを生成する。送信処理部109は、ルーティングテーブル106を参照して、Helloフレームにリンクコスト積算値「102」とホップ数「4」の情報を含める。また、送信処理部109は、自ノードコスト記憶部107に記憶されているノード装置R2のノード装置コスト「15」を含める。そして、送信処理部109はHelloフレームをブロードキャストし、隣接ノードであるノード装置R1とノード装置R3はこのHelloフレームを受信する。
【0102】
次に、
図14を参照して、ノード装置R1について説明する。ノード装置R1に隣接するノード装置はノード装置R2およびノード装置Aになる。隣接ノード装置R2に着目すると、演算部102が演算する補正前リンクコストXは「10」である。また、隣接ノード装置R2のコストは「15」である。よって、補正後リンクコストZは「25」になる。この補正後リンクコスト「25」はリンクテーブル105に記憶される。
【0103】
演算部102は、Helloフレームに含まれているリンクコスト積算値「102」に補正後リンクコスト「25」を加算する。これにより、ルーティングテーブル106のLDがノード装置R2に対応するリンクコスト積算値は「127(=102+25)」になる。
【0104】
送信処理部109は、Helloフレームを生成する。送信処理部109は、ルーティングテーブル106を参照して、Helloフレームにリンクコスト積算値「127」とホップ数「5」の情報を含める。また、送信処理部109は、自ノードコスト記憶部107に記憶されているノード装置R1の通信性能に応じたノード装置コスト「15」を含める。そして、送信処理部109はHelloフレームをブロードキャストし、隣接ノードであるノード装置Aとノード装置R2はこのHelloフレームを受信する。
【0105】
次に、
図15を参照して、ノード装置Aについて説明する。ノード装置Aに隣接するノード装置はノード装置R1およびノード装置Bになる。隣接ノード装置R1に着目すると、演算部102が演算する補正前リンクコストXは「12」である。また、隣接ノード装置R1のノード装置コストYは「15」である。よって、補正後リンクコストZは「27」になる。この補正後リンクコスト「27」はリンクテーブル105に記憶される。
【0106】
演算部102は、ノード装置R1から送信されたHelloフレームに含まれているリンクコスト積算値「127」に補正後リンクコスト「27」を加算する。これにより、ルーティングテーブル106のLDがノード装置R1に対応するリンクコスト積算値は「154(=127+25)」になる。
【0107】
従って、ノード装置Aは経路2のリンクコスト積算値「154」をルーティングテーブル106に記憶させることができる。つまり、ノード装置Aは、最終的な宛先のノード装置GWから隣接ノード装置R1までのリンクコスト積算値「127」に補正後リンクコスト「25」を加算した値を積算値「154」としてルーティングテーブル106に記憶させることができる。
【0108】
経路1についても同様の処理が行われる。つまり、ノード装置Cおよびノード装置Bを経由したノード装置GWからノード装置Aまでのリンクコスト積算値「165」が得られる。このリンクコスト積算値「165」はルーティングテーブル106に記憶される。
【0109】
図1に示すように、ノード装置AがGSとなり、ノード装置GWがGDのときに、経路1または経路2の何れでもデータフレームをノード装置Aからノード装置GWまで通信させることができる。
【0110】
このとき、ノード装置Aのルーティング決定部113は、ルーティングテーブル106を参照する。ルーティングテーブル106にはLDとしてノード装置R1とノード装置Bとが記憶されている。ルーティング決定部113はリンクコスト積算値が低いノード装置R1を次のノード装置として決定する。つまり、経路2が選択される。
【0111】
前述したように、経路1は経路2よりもホップ数が少ない。しかしながら、経路2は通信速度が低いノード装置BおよびC(つまり、スマートメータ)を経路となっている。ノード装置BおよびCの通信性能に応じたコストを考慮したとき、ホップ数は少ないが、経路1はリンクコスト積算値が高くなる。
【0112】
一方、経路2は経路1よりもホップ数は多い。ただし、ノード装置R1〜R5はリピータであり、通信速度が高速である。つまり、ノード装置の通信性能に応じたコストが低くなる。従って、ホップ数は多いが、経路2はリンクコスト積算値が経路1よりも低くなる。
【0113】
経路2は高速な通信性能を持つノード装置R1〜R5を含むHighwayとなっている。リンクコスト積算値は、データフレームを通信するときの経路選択にあたり、データフレームをHighwayに誘導するために用いられる。
【0114】
ただし、常にHighwayの経路2が選択されるとは限らない。例えば、経路2に別のノード装置(リピータ)が参加したときには、リンクコスト積算値としては、経路1の方が低くなる。その場合、ノード装置Aからノード装置GWにデータフレームを通信するときに、通信速度が低いノード装置BおよびCを経由した経路1が選択される。
【0115】
従って、実施形態では、ネットワークに参加する複数のノード装置のうち、GSとなるノード装置からGDとなるノード装置までのルーティングにはリンクコスト積算値が考慮されている。リンクコスト積算値は、経路に存在するノード装置の通信性能に応じたノード装置コストを考慮しているため、適切なルーティングを行うことができる。適切なルーティングが行われることにより、GSとなるノード装置からGDとなるノード装置まで早くデータフレームを届けることができる。
【0116】
これにより、例えば、スマートメータが計測した電力の情報を迅速に最終的な宛先のゲートウェイ装置に送信することができる。
【0117】
図1に示した一例では、ネットワークは経路1と経路2とを有しているが、例えば、ノード装置R2とノード装置Bとが接続された経路がさらに存在する場合を想定する。この場合には、ノード装置R2のルーティング決定部113は、ルーティングテーブル106を参照する。
【0118】
ノード装置R2のルーティングテーブル106にはローカル宛先として、ノード装置R3だけでなく、ノード装置Bも記憶されている。そして、ノード装置R3のコスト積算値およびノード装置Bのコスト積算値も記憶されている。
【0119】
このとき、ノード装置R3を経由する経路2はHighwayになっており、ノード装置Bを経由する経路よりもコスト積算値は低くなる。よって、ノード装置R2のルーティング決定部113はローカル宛先として、ノード装置Bではなく、ノード装置R3を選択する。そして、データフレームはノード装置R2からノード装置R3に送信される。
【0120】
次に、
図2に示した装置状態管理部108を使用した例について説明する。装置状態管理部108はノード装置100の状態を管理している。装置状態管理部108はノード装置100の状態に応じて、自ノードコスト記憶部107に記憶されているノード装置100の通信性能に応じたコストを変更する。
【0121】
装置状態管理部108がコストを変更する第1の例について説明する。第1の例は、ノード装置100を起動した直後に、自ノードコスト記憶部107に記憶されているコストを高くする例である。
【0122】
ノード装置100を起動したときには、通信環境が不安定であり、当該ノード装置100を使用することが適切でない場合がある。このような場合には、装置状態管理部108は、ノード装置100を起動した直後に、自ノードコスト記憶部107に記憶されているノード装置コストを本来のコスト(ノード装置100の通信性能に応じたコスト)よりも高く設定する。
【0123】
これにより、補正後リンクコストZの値が高くなり、起動した直後のノード装置100を使用する経路が選択されにくくなる。自ノードコスト記憶部107のコストの値を非常に高く設定すれば、当該ノード装置100はより使用される可能性が低くなる。
【0124】
第2の例は、ノード装置100がバッテリで駆動されている場合である。ノード装置100が通信を行うためには、電力を消費する。このため、ノード装置100がバッテリで駆動される場合には、電力の消費状況によっては、通信が不安定になる。
【0125】
従って、ノード装置100がバッテリで駆動されている場合には、装置状態管理部108は、自ノードコスト記憶部107が記憶しているノード装置コストを本来のコスト(ノード装置100の通信性能に応じたコスト)よりも高く設定する。これにより、当該ノード装置100を使用した経路が選択される可能性が低くなる。
【0126】
第3の例は、ノード装置100に障害が発生した場合である。この場合には、当該ノード装置100を使用しない経路を選択することが望ましい。このため、装置状態管理部108は、自ノードコスト記憶部107が記憶しているノード装置コストを本来のコスト(ノード装置100の通信性能に応じたコスト)よりも高く設定する。
【0127】
特に、第3の例では、ノード装置100に障害が発生しているため、他の経路を選択させることが望ましい。従って、装置状態管理部108は、自ノードコスト記憶部107が記憶しているノード装置コストを、自身のノード装置100が使用されないような非常に高いコストに設定することが好ましい。
【0128】
第4の例は、ノード装置100が輻輳状態になっている場合である。
図16を用いて説明する。
図16(A)はノード装置N1に経路が集中することで輻輳状態になっている状態を示している。つまり、2つのネットワークNWおよびノード装置GW(ゲートウェイ装置)からの通信がノード装置100(ここでは、ノード装置N1)に集中している。
【0129】
このように、過度にノード装置N1に経路が集中すると、ノード装置N1の処理能力を超過した通信が発生する。このため、ネットワーク全体として通信品質が低下する。
図16(B)は、ノード装置N1が受信するフレームの受信数(実線)と受信エラー(点線)とを示している。
【0130】
受信数および受信エラーの両方がそれぞれの閾値(受信数閾値および受信エラー閾値)を超過している。つまり、ノード装置N1の処理能力を超過した通信が集中している状態になっている。
【0131】
このように、ノード装置N1に経路が集中して輻輳状態になると、輻輳状態を装置状態管理部108が検出する。装置状態管理部108はノード装置N1が輻輳状態になると、自ノードコスト記憶部107に記憶されているコストを本来のコストより高く設定する。
【0132】
これにより、ノード装置N1を経由する経路のリンクコスト積算値が高くなる。従って、ノード装置N1を経由する経路は選択されにくくなり、他の経路に通信が分散される。
図17が他の経路に通信が分散された状態を示している。
【0133】
図17(A)のネットワークでは、ノード装置N1を経由する経路だけでなく、ノード装置N2およびN3の経路も選択される。これにより、通信がノード装置N1に集中することがなくなり、ノード装置N2およびN3に通信が分散される。
【0134】
図17(B)は、
図16(B)と同様に、ノード装置N1が受信するフレームの受信数(実線)と受信エラー(点線)とを示している。
図17(B)に示されるように、ノード装置N1の受信数も受信エラーも共に閾値を下回っている。よって、ノード装置N1は安定的な通信を行うことができる。
【0135】
従って、装置状態管理部108がノード装置N1の輻輳状態に応じて、自ノードコスト記憶部107に記憶されているノード装置コストを本来のコストよりも高く設定している。このため、通信の経路がノード装置N1から他のノード装置N2およびN3に分散される。つまり、ノード装置N1が負担していた通信の一部がノード装置N2およびN3に分散されるため、ノード装置N1の輻輳状態が解消される。これにより、ネットワークは安定的な通信を行うことができる。
【0136】
なお、第1の例〜第4の例において説明した本来のコストとは、ノード装置100の通信性能に応じたコストである。この本来のコストは、予め初期値として自ノードコスト記憶部107に記憶させてもよい。
【0137】
次に、
図18を用いて、
図1とは異なるアドホックネットワークの一例を示す。
図18のネットワークは、エリア1とエリア2とエリア3との3つのエリアに分かれている。図中において、網掛けのノード装置R1〜R9がリピータ、ハッチングのノード装置GWがゲートウェイ装置、これら以外のノード装置がスマートメータであるものとする。
【0138】
図18では、ノード装置R1〜R9を経由する経路によりHighwayが構築される。そして、エリア2およびエリア3の各ノード装置(スマートメータ)は、データフレームがゲートウェイ装置までの通信にかかる時間がより短くなるようにHighwayに誘導される。
【0139】
これは、エリア2およびエリア3の各ノード装置のルーティングテーブル106には、リンクコスト積算値が記憶されているためである。ゲートウェイ装置に対応する1または複数のローカル宛先のうち、リンクコスト積算値が最も低くなるのは、Highwayを経由してノード装置GW(ゲートウェイ)に到達する経路である。
【0140】
よって、図中の太線で示すように、ノード装置(スマートメータ)から送信されたデータフレームは、Highwayを経由して、ノード装置GWに到達する経路が選択される。従って、より適切なルーティングを行うことができる。
【0141】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【0142】
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
ノード装置であって、
相互に隣接しているノード装置の間で通信される第1のデータを受信する受信部と、
前記第1のデータに基づいて、自ノード装置と隣接ノード装置との間のリンクコストを演算する演算部と、
前記隣接ノード装置の通信性能に応じたコストを用いて前記リンクコストを補正する補正部と、
最終的な宛先のノード装置から前記隣接ノード装置までのリンクコストの積算値に前記補正部が補正した前記リンクコストを加算した積算値を前記隣接ノード装置ごとに記憶する記憶部と、
前記自ノード装置の通信性能に応じたコストと前記積算値とを含めた前記第1のデータを他の隣接ノード装置に送信する送信部と、
を備えるノード装置。
(付記2)
前記自ノード装置から前記最終的な宛先のノード装置に第2のデータを送信するときに、前記記憶部を参照して、前記積算値が最も低い隣接ノード装置を選択する決定部、
を備える付記1記載のノード装置。
(付記3)
前記自ノード装置の通信性能に応じたコストを変更する変更部、
を備える付記1または2記載のノード装置。
(付記4)
前記変更部は、前記自ノード装置を起動したときに、前記自ノード装置の通信性能に応じたコストを本来のコストよりも高く変更する、
付記3記載のノード装置。
(付記5)
前記変更部は、前記自ノード装置がバッテリにより駆動されているときに、前記自ノード装置の通信性能に応じたコストを本来のコストよりも高く変更する、
付記3記載のノード装置。
(付記6)
前記変更部は、前記自ノード装置が輻輳状態にあるときに、前記自ノード装置の通信性能に応じたコストを本来のコストよりも高く変更する、
付記3記載のノード装置。
(付記7)
前記変更部は、前記自ノード装置に障害が発生したときに、前記自ノード装置の通信性能に応じたコストを本来のコストよりも高く変更する、
付記3記載のノード装置。
(付記8)
前記第1のデータはHelloフレームであり、前記第2のデータはデータフレームである、
付記1乃至7のうち何れか1項に記載のノード装置。
(付記9)
前記演算部は、前記Helloフレームの受信信号強度の平均値と前記受信信号強度の分散値と前記Helloフレームの受信周期の平均値と前記Helloフレームの受信周期の分散値とに基づいて、補正前の前記リンクコストを演算する、
付記8記載のノード装置。
(付記10)
前記ノード装置はスマートメータであり、前記データフレームは電力とガスと水道とのうち何れか1つの使用量の計測値の情報を含む、
付記9記載のノード装置。
(付記11)
プロセッサと記憶装置とを備えるノード装置であって、
前記プロセッサは、
相互に隣接しているノード装置の間で通信されるデータを受信し、
前記第1のデータに基づいて、自ノード装置と隣接ノード装置との間のリンクコストを演算し、
前記隣接ノード装置の通信性能に応じたコストを用いて前記リンクコストを補正し、
最終的な宛先のノード装置から前記隣接ノード装置までのリンクコストの積算値に前記補正部が補正した前記リンクコストを加算した積算値を前記隣接ノード装置ごとに前記記憶装置に記憶し、
前記自ノード装置の通信性能に応じたコストと前記記憶装置が記憶している前記積算値とを含めた前記データを他の隣接ノード装置に送信する、
ノード装置。
(付記12)
複数のノード装置を含む通信システムであって、
各ノード装置は、
相互に隣接しているノード装置の間で通信されるデータを受信する受信部と、
前記データに基づいて、自ノード装置と隣接ノード装置との間のリンクコストを演算する演算部と、
前記隣接ノード装置の通信性能に応じたコストを用いて前記リンクコストを補正する補正部と、
最終的な宛先のノード装置から前記隣接ノード装置までのリンクコストの積算値に前記補正部が補正した前記リンクコストを加算した積算値を前記隣接ノード装置ごとに記憶する記憶部と、
前記自ノード装置の通信性能に応じたコストと前記記憶部が記憶している前記積算値とを含めた前記データを他の隣接ノード装置に送信する送信部と、
を備える通信システム。
(付記13)
コンピュータに、
相互に隣接しているノード装置の間で通信されるデータを受信し、
前記データに基づいて、自ノード装置と隣接ノード装置との間のリンクコストを演算し、
前記隣接ノード装置の通信性能に応じたコストを用いて前記リンクコストを補正し、
最終的な宛先のノード装置から前記隣接ノード装置までのリンクコストの積算値に前記補正部が補正した前記リンクコストを加算した積算値を前記隣接ノード装置ごとに記憶し、
前記自ノード装置の通信性能に応じたコストと前記積算値とを含めた前記データを他の隣接ノード装置に送信する、
処理を実行させる通信プログラム。
(付記14)
ノード装置が、
相互に隣接しているノード装置の間で通信されるデータを受信し、
前記第1のデータに基づいて、自ノード装置と隣接ノード装置との間のリンクコストを演算し、
前記隣接ノード装置の通信性能に応じたコストを用いて前記リンクコストを補正し、
最終的な宛先のノード装置から前記隣接ノード装置までのリンクコストの積算値に前記補正部が補正した前記リンクコストを加算した積算値を前記隣接ノード装置ごとに記憶し、
前記自ノード装置の通信性能に応じたコストと前記積算値とを含めた前記データを他の隣接ノード装置に送信する、
通信方法。