(57)【要約】【課題】ノード装置の通信性能を考慮した最適なルーティングを行うことができるようにする。【解決手段】受信部１０１は、相互に隣接しているノード装置の間で通信されるＨｅｌｌｏフレームを受信する。演算部１０２が第１のデータに基づいて、自ノード装置１００と隣接ノード装置との間のリンクコストを演算する。補正部１０３は、隣接ノード装置の通信性能に応じたコストを用いてリンクコストを補正する。ルーティングテーブル１０６は、最終的な宛先のノード装置から隣接ノード装置までのリンクコストの積算値に補正部１０３が補正したリンクコストを加算した積算値を隣接ノード装置ごとに記憶する。送信部１１１は、自ノード装置１００の通信性能に応じたコストと積算値とを含めたＨｅｌｌｏフレームを他の隣接ノード装置に送信する。【選択図】図２
2015037253.tif 000002
【特許請求の範囲】
【請求項１】
ノード装置であって、
相互に隣接しているノード装置の間で通信される第１のデータを受信する受信部と、
前記第１のデータに基づいて、自ノード装置と隣接ノード装置との間のリンクコストを演算する演算部と、
前記隣接ノード装置の通信性能に応じたコストを用いて前記リンクコストを補正する補正部と、
最終的な宛先のノード装置から前記隣接ノード装置までのリンクコストの積算値に前記補正部が補正した前記リンクコストを加算した積算値を前記隣接ノード装置ごとに記憶する記憶部と、
前記自ノード装置の通信性能に応じたコストと前記記憶部が記憶している前記積算値とを含めた前記第１のデータを他の隣接ノード装置に送信する送信部と、
を備えるノード装置。
【請求項２】
前記自ノード装置から前記最終的な宛先のノード装置に第２のデータを送信するときに、前記記憶部を参照して、前記積算値が最も低い隣接ノード装置を選択する決定部、
を備える請求項１記載のノード装置。
【請求項３】
前記自ノード装置の通信性能に応じたコストを変更する変更部、
を備える請求項１または２記載のノード装置。
【請求項４】
前記変更部は、前記自ノード装置を起動したときに、前記自ノード装置の通信性能に応じたコストを本来のコストよりも高く変更する、
請求項３記載のノード装置。
【請求項５】
前記変更部は、前記自ノード装置がバッテリにより駆動されているときに、前記自ノード装置の通信性能に応じたコストを本来のコストよりも高く変更する、
請求項３記載のノード装置。
【請求項６】
前記変更部は、前記自ノード装置が輻輳状態にあるときに、前記自ノード装置の通信性能に応じたコストを本来のコストよりも高く変更する、
請求項３記載のノード装置。
【請求項７】
前記変更部は、前記自ノード装置に障害が発生したときに、前記自ノード装置の通信性能に応じたコストを本来のコストよりも高く変更する、
請求項３記載のノード装置。
【請求項８】
複数のノード装置を含む通信システムであって、
各ノード装置は、
相互に隣接しているノード装置の間で通信されるデータを受信する受信部と、
前記データに基づいて、自ノード装置と隣接ノード装置との間のリンクコストを演算する演算部と、
前記隣接ノード装置の通信性能に応じたコストを用いて前記リンクコストを補正する補正部と、
最終的な宛先のノード装置から前記隣接ノード装置までのリンクコストの積算値に前記補正部が補正した前記リンクコストを加算した積算値を前記隣接ノード装置ごとに記憶する記憶部と、
前記自ノード装置の通信性能に応じたコストと前記記憶部が記憶している前記積算値とを含めた前記データを他の隣接ノード装置に送信する送信部と、
を備える通信システム。
【請求項９】
コンピュータに、
相互に隣接しているノード装置の間で通信されるデータを受信し、
前記データに基づいて、自ノード装置と隣接ノード装置との間のリンクコストを演算し、
前記隣接ノード装置の通信性能に応じたコストを用いて前記リンクコストを補正し、
最終的な宛先のノード装置から前記隣接ノード装置までのリンクコストの積算値に前記補正部が補正した前記リンクコストを加算した積算値を前記隣接ノード装置ごとに記憶し、
前記自ノード装置の通信性能に応じたコストと前記積算値とを含めた前記データを他の隣接ノード装置に送信する、
処理を実行させる通信プログラム。
【請求項１０】
ノード装置が、
相互に隣接しているノード装置の間で通信されるデータを受信し、
前記第１のデータに基づいて、自ノード装置と隣接ノード装置との間のリンクコストを演算し、
前記隣接ノード装置の通信性能に応じたコストを用いて前記リンクコストを補正し、
最終的な宛先のノード装置から前記隣接ノード装置までのリンクコストの積算値に前記補正部が補正した前記リンクコストを加算した積算値を前記隣接ノード装置ごとに記憶し、
前記自ノード装置の通信性能に応じたコストと前記積算値とを含めた前記データを他の隣接ノード装置に送信する、
通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ノード装置、通信システム、通信プログラムおよび通信方法に関する。
【背景技術】
【０００２】
アドホックネットワークでは、ノード装置同士が自律的にネットワークを形成する。自律的に通信を行うことにより、使用者が随時通信ルートを設定する必要がなく、サーバやルータ等の通信管理専用の通信端末やインフラを必要しない。
【０００３】
関連する技術として、ルートメトリックを用いてルート検出を行う技術が提案されている。また、経路のメトリック値を検査する場合、検査中の経路と同じノードを共用する他の経路上のトラフィックを考慮する技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００６−５２６９３７号公報
【特許文献２】特表２００３−５３６３３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
アドホックネットワークでは、全てのノード装置が同一の通信性能を有しているとは限らない。ノード装置の通信性能によって通信速度が変化する。ノード装置の通信性能を考慮しないでルーティングした経路は、適切な経路にならない場合がある。
【０００６】
本発明は、１つの側面では、ノード装置の通信性能を考慮した適切なルーティングを行うことを目的とする。
【課題を解決するための手段】
【０００７】
１つの案では、ノード装置は、受信部、演算部、補正部、記憶部および送信部を備える。受信部は、相互に隣接しているノード装置の間で通信される第１のデータを受信する。演算部は、第１のデータに基づいて、自ノード装置と隣接ノード装置との間のリンクコストを演算する。補正部は、前記隣接ノード装置の通信性能に応じたコストを用いて前記リンクコストを補正する。記憶部は、最終的な宛先のノード装置から前記隣接ノード装置までのリンクコストの積算値に前記補正部が補正した前記リンクコストを加算した積算値を前記隣接ノード装置ごとに記憶する。送信部は、前記自ノード装置の通信性能に応じたコストと前記記憶部が記憶している前記積算値とを含めた前記第１のデータを他の隣接ノード装置に送信する。
【発明の効果】
【０００８】
ノード装置の通信性能を考慮した適切なルーティングを行うことができる。
【図面の簡単な説明】
【０００９】
【図１】アドホックネットワークの一例を示す図である。
【図２】ノード装置の構成の一例を示すブロック図である。
【図３】リンクテーブルの一例を示す図である。
【図４】ルーティングテーブルの一例を示す図である。
【図５】ノード装置のハードウェア構成の一例を示す図である。
【図６】Ｈｅｌｌｏフレームのフォーマットの一例を示す図である。
【図７】Ｈｅｌｌｏフレームの受信処理の一例を示すフローチャートである。
【図８】Ｈｅｌｌｏフレームの送信処理の一例を示すフローチャートである。
【図９】データフレームの処理の一例を示すフローチャートである。
【図１０】ノード装置Ｒ５の具体的な一例を示す図である。
【図１１】ノード装置Ｒ４の具体的な一例を示す図である。
【図１２】ノード装置Ｒ３の具体的な一例を示す図である。
【図１３】ノード装置Ｒ２の具体的な一例を示す図である。
【図１４】ノード装置Ｒ１の具体的な一例を示す図である。
【図１５】ノード装置Ａの具体的な一例を示す図である。
【図１６】ノード装置が輻輳状態になったときの一例を示す図である。
【図１７】ノード装置の輻輳状態が解消したときの一例を示す図である。
【図１８】アドホックネットワークの他の例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、実施形態について説明する。図１は、ノード装置Ａ〜Ｃとノード装置Ｒ１〜Ｒ５（リピータ）とＧＷ（ゲートウェイ装置）との９つのノード装置が参加しているアドホックネットワークの一例を示している。アドホックネットワークの例は図１に限定されない。
【００１１】
図１では、説明のために、２つの経路を有するアドホックネットワークの一例を示しているが、より多くの複雑な経路を有するアドホックネットワークにも実施形態を適用できる。例えば、メッシュ状に経路が構成されたアドホックネットワークにも実施形態を適用できる。
【００１２】
図１では３種類のノード装置を示している。ノード装置Ａ〜Ｃは通信性能が低いノード装置である。例えば、ノード装置Ａ〜Ｃとしてはスマートメータを適用することができる。スマートメータは、電力やガス、水道等の使用量を計測する計測機器であり、通信機能を有している。計測した値は通信機能を利用して送信することができる。
【００１３】
各ノード装置はアドホックネットワークに含まれる。通信形態としては、無線通信であってもよいし、有線通信であってもよい。
【００１４】
ノード装置Ｒ１〜Ｒ５はリピータである。ノード装置ＧＷはゲートウェイ装置である。従って、ネットワークに参加している各ノード装置は、スマートメータとリピータとゲートウェイ装置との３種類である。図１は例示であり、これら３種類のノード装置以外の種類のノード装置がネットワークに参加してもよい。
【００１５】
前述したように、スマートメータは通信性能が低い。一方、リピータおよびゲートウェイ装置は通信性能が高い。通信性能が低ければ、通信可能な速度が低速になり、通信性能が高ければ、通信可能な速度が高速になる。実施形態では、リピータとゲートウェイ装置との通信性能を同じ例を示しているが、リピータとゲートウェイ装置との通信性能が異なっていてもよい。
【００１６】
実施形態では、フレームを単位としてアドホック通信が行われる。フレームはプロトコルが扱う単位であり、Ｈｅｌｌｏフレームとデータフレームとがあるが、これらに限定されることはない。
【００１７】
Ｈｅｌｌｏフレームは、アドホックネットワークで適切な経路（ルート）を選択するために、隣接するノード装置間で通信されるフレームである。データフレームは、アドホックネットワークで通信されるデータである。例えば、スマートメータが計測した電力の情報がデータフレームに含まれる。Ｈｅｌｌｏフレームは第１のデータ（またはデータ）の一例であり、データフレームは第２のデータの一例である。
【００１８】
ネットワークを構成するノード装置にはＧＳ（Global Source）およびＧＤ（Global Destination)がある。ＧＳはフレームの送信元のノード装置を示す。ＧＤはフレームの最終的な宛先となるノード装置を示す。ＧＳはグローバル送信元と称されることもある。ＧＤはグローバル宛先と称されることもある。
【００１９】
また、ノード装置にはＬＳ（Local Source)およびＬＤ（Local Destination）がある。ＬＤは、あるノード装置を主体としたときに、次にフレームを渡す、隣接するノード装置を示す。ＬＳはＬＤへフレームを送信する直接の送信元となるノード装置を示す。ＬＳはローカル送信元と称されることもある。ＬＤはローカル宛先と称されることもある。
【００２０】
ここで、図１を参照して、ノード装置ＡをＧＳとして、ゲートウェイ装置をＧＤとしたアドホック通信を行う場合を想定する。アドホックネットワークでは、相互に隣接しているノード装置の間で通信を行う。隣接しているノード装置とは、あるノード装置から送信されたフレームを受信することができる範囲内に位置するノード装置である。従って、ノード装置Ａに隣接しているノード装置はノード装置Ｂおよびノード装置Ｒ１である。
【００２１】
図１に示すように、ノード装置Ａからゲートウェイ装置（ノード装置ＧＷ）まで通信を行う経路（ルート）は２つある。１つは経路１として示しており、ノード装置ＢおよびＣを経由する経路である。もう１つは、経路２として示しており、ノード装置Ｒ１〜Ｒ５のリピータを経由する経路である。経路２は、Ｈｉｇｈｗａｙとも称される。
【００２２】
実施形態では、何れの経路を選択するかはノード装置Ａからノード装置ＧＷまでの経路のリンクコスト積算値で決定される。リンクコストは、あるノード装置と隣接するノード装置との間の通信品質をコストで表したものである。従って、リンクコストが低ければ、高速に通信を行うことができ、リンクコストが高ければ、通信速度は低速になる。
【００２３】
また、ノード装置Ａからノード装置ＧＷまでには複数のノード装置が存在する。隣接するノード装置間にはリンクコストがあり、ノード装置Ａからノード装置ＧＷまでの間の経路に１以上のノード装置が存在すれば、当該経路のリンクコストは２つ以上になる。そこで、経路にあるノード装置間のリンクコストを積算した値をリンクコスト積算値としている。
【００２４】
リンクコスト積算値が低ければ、ＧＳからＧＤまで通信速度は高速になる。一方、リンクコスト積算値が高くなれば、ＧＳからＧＤまでの通信速度は低速になる。従って、通常は、リンクコスト積算値が低い経路が選択される。図１に示すように、経路１のホップ数は経路２のホップ数よりも少ない。ただし、リンクコスト積算値としては、経路１が「１６５」であり、経路２が「１５４」である。
【００２５】
従って、ノード装置Ａからノード装置ＧＷまでの経路を決定するときには、経路２が選択される。前述したように、経路２のノード装置Ｒ１〜Ｒ５はリピータであり、高速な通信が可能になっている。このため、ホップ数が多くなっても、通信性能が高いリピータであるノード装置Ｒ１〜Ｒ５を経由した経路２（Ｈｉｇｈｗａｙ）が選択される。
【００２６】
リンクコストは、Ｈｅｌｌｏフレームを用いて得ることができる。ネットワークに参加する全てのノード装置は、Ｈｅｌｌｏフレームを隣接している全てのノード装置に送信する。Ｈｅｌｌｏフレームを受信したノード装置は、Ｈｅｌｌｏフレームを送信したノード装置と自身のノード装置との間のリンクコストを演算する。なお、隣接しているノード装置は隣接ノード装置と称されることもあり、自身のノード装置は自ノード装置と称されることもある。
【００２７】
リンクコストを演算する１つの手法として、ＨｅｌｌｏフレームのＲＳＳＩ（受信信号強度：Received Signal Strength Indicator）の平均値と分散値、およびＨｅｌｌｏフレームの受信周期の平均値と分散値を用いることができる。リンクコストを得る手法は当該手法に限定されない。
【００２８】
ＨｅｌｌｏフレームのＲＳＳＩおよび受信周期に基づいて得られるリンクコストを補正前リンクコスト（図１のＸ）とする。実施形態では、補正前リンクコストＸに、Ｈｅｌｌｏフレームを送信してきた隣接ノード装置の通信性能に応じたコスト（以下、ノード装置コストと称することもある）Ｙを加算する演算を行う。
【００２９】
スマートメータの通信速度は低速であるため、スマートメータのノード装置コストＹは高くなる。一方、リピータおよびゲートウェイ装置は通信速度が高速であるため、リピータおよびゲートウェイ装置のノード装置コストＹは低くなる。
【００３０】
補正後リンクコストＺは、補正前リンクコストＸに対してノード装置コストＹを加算した値になる（Ｚ＝Ｘ＋Ｙ）。この補正後リンクコストＺは、ノード装置の通信速度を反映した正確なリンクコストとなる。
【００３１】
次に、図２を用いて、ネットワークに参加する１つのノード装置の構成の一例を示す。ノード装置１００は、受信部１０１と演算部１０２と補正部１０３とテーブル管理部１０４とリンクテーブル１０５とルーティングテーブル１０６とを備えている。さらに、ノード装置１００は、自ノードコスト記憶部１０７と装置状態管理部１０８と送信処理部１０９とタイマ１１０と送信部１１１とフレーム処理部１１２とルーティング決定部１１３とを備えている。
【００３２】
受信部１０１は、隣接ノード装置からフレームを受信する。受信部１０１が受信するフレームとしては、Ｈｅｌｌｏフレームとデータフレームとがある。図２では、Ｈｅｌｌｏフレームを「Ｈｅｌｌｏ」と示し、データフレームを「Ｄａｔａ」と示している。
【００３３】
受信部１０１は、受信したフレームがＨｅｌｌｏフレームとデータフレームとの何れであるかを識別する。そして、受信部１０１は、Ｈｅｌｌｏフレームを演算部１０２に出力し、データフレームをフレーム処理部１１２に出力する。
【００３４】
演算部１０２は、受信したＨｅｌｌｏフレームのＨｅｌｌｏ受信周期平均、Ｈｅｌｌｏ受信周期分散、ＲＳＳＩ平均およびＲＳＳＩ分散に基づいて、Ｈｅｌｌｏフレームを送信した隣接ノード装置と自ノード装置１００との間のリンクコストを演算する。演算されたリンクコストは前述した補正前リンクコストＸになる。
【００３５】
補正部１０３は、Ｈｅｌｌｏフレームに含まれるノード装置コストＹを補正前リンクコストＸに対して加算することで補正を行う。つまり、補正部１０３は、演算した補正前リンクコストＸに対して、Ｈｅｌｌｏフレームを送信した隣接するノード装置のノード装置コストＹを反映している。補正したリンクコストを補正後リンクコストＺとする。補正後リンクコストＺは「Ｚ＝Ｘ＋Ｙ」となる。
【００３６】
テーブル管理部１０４は、リンクテーブル１０５およびルーティングテーブル１０６の管理を行う。テーブル管理部１０４は、例えばリンクテーブル１０５およびルーティングテーブル１０６の更新や参照等を行う。
【００３７】
リンクテーブル１０５は、自身のノード装置１００に隣接するノード装置に関する情報やノード装置間の通信品質に関する情報を記憶している。図３は、リンクテーブル１０５の要素の一例を示している。リンクテーブル１０５は、例えば後述する補助記憶装置１２４に記憶することができる。
【００３８】
図３に示したリンクテーブル１０５の一例は、隣接ノード装置とＨｅｌｌｏ受信周期平均とＨｅｌｌｏ受信周期分散とＲＳＳＩ平均とＲＳＳＩ分散と補正前リンクコストと隣接ノード装置コストと補正後リンクコストとの７つのフィールドを含んでいる。これら７つのフィールドは隣接ノードごとに設けられている。リンクテーブル１０５のフィールドは図３に示したフィールドに限定されることはない。
【００３９】
なお、Ｈｅｌｌｏ受信周期平均、Ｈｅｌｌｏ受信周期分散、ＲＳＳＩ平均およびＲＳＳＩ分散については、補正前リンクコストＸを演算するための要素であるため、具体的な数値は示していない。
【００４０】
Ｈｅｌｌｏフレームには、当該Ｈｅｌｌｏフレームを送信した隣接ノード装置の情報が含まれている。また、Ｈｅｌｌｏフレームから、Ｈｅｌｌｏ受信周期平均とＨｅｌｌｏ受信周期分散とＲＳＳＩ平均とＲＳＳＩ分散とを得ることができる。前述したように、Ｈｅｌｌｏフレームにはノード装置コストの情報が含まれている。また、補正部１０３が補正後リンクコストＺを出力する。以上の各要素が隣接ノード装置ごとにリンクテーブル１０５に記憶される。
【００４１】
ルーティングテーブル１０６は、１つのグローバル宛先（ＧＤ）のノード装置に対して、任意の１または複数のローカル宛先（ＬＳ）のノード装置に対応付けられている。ルーティングテーブル１０６も、リンクテーブル１０５と同様に、例えば後述する補助記憶装置１２４に記憶することができる。ルーティングテーブル１０６は記憶部の一例である。
【００４２】
図４は、ノード装置Ａのルーティングテーブル１０６の一例を示している。なお、図４のルーティングテーブル１０６は１つのグローバル宛先に対して３つ以下のローカル宛先を記憶可能な例を示しているが、ローカル宛先の数は３つ以下には限定されない。
【００４３】
図１に示したように、ノード装置Ａの隣接ノード装置にはノード装置Ｂとノード装置Ｒ１との２つがある。ルーティングテーブル１０６はグローバル宛先（ＧＤ）とローカル宛先（ＬＤ）とリンクコスト積算値との３つの要素を含んでいる。グローバル宛先はゲートウェイ装置であるノード装置ＧＷであるため、グローバル宛先にはノード装置ＧＷを示す「ＧＷ」が記憶されている。
【００４４】
ルーティングテーブル１０６のローカル宛先にはノード装置Ｒ１を示す「Ｒ１」とノード装置Ｂを示す「Ｂ」が記憶されている。一例として、ローカル宛先がノード装置Ｒ１の場合（経路２の場合）には、ローカル宛先のノード装置Ｒ１に対応してコスト積算値「１５４」が記憶されている。ローカル宛先がノード装置Ｂ（経路１の場合）には、ローカル宛先のノード装置Ｂに対応してコスト積算は「１６５」が記憶されている。
【００４５】
従って、ルーティングテーブル１０６にはローカル宛先ごとにリンクコスト積算値が記憶されている。
【００４６】
自ノードコスト記憶部１０７は自ノード装置１００の通信性能に応じたコスト（ノード装置コスト）を記憶する。前述したように、自身のノード装置１００がスマートメータであれば、通信性能が低いため、ノード装置コストは高く設定される。一例として、ノード装置１００がスマートメータの場合には、ノード装置コストは「６０」に設定される。
【００４７】
また、自身のノード装置１００がリピータまたはゲートウェイ装置であれば、通信性能が高いため、ノード装置コストは低く設定される。一例として、ノード装置１００がリピータまたはゲートウェイ装置の場合には、ノード装置コストは「１５」に設定される。この例では、スマートメータに比べてノード装置コストは「１／４」になる。
【００４８】
自ノードコスト記憶部１０７が記憶する自身のノード装置１００のノード装置コストは固定されてもよいし、可変であってもよい。装置状態管理部１０８は、自ノードコスト記憶部１０７が記憶するノード装置コストの値を変更することが可能である。装置状態管理部１０８は変更部の一例である。
【００４９】
例えば、ノード装置１００を起動した直後や輻輳時、ノード装置１００がバッテリで駆動される場合等には、装置状態管理部１０８は値が高くなるようにノード装置コストを変更することができる。詳細については後述する。
【００５０】
送信処理部１０９は、Ｈｅｌｌｏフレームを生成して送信処理を行う。Ｈｅｌｌｏフレームは所定時間ごとに隣接するノード装置に送信される。このために、タイマ１１０が設定された所定時間をカウントし、所定時間になったときに、送信処理部１０９に対してＨｅｌｌｏフレームを送信させる信号を出力する。
【００５１】
送信処理部１０９は、自身のノード装置１００に隣接する全てのノード装置に対してＨｅｌｌｏフレームをブロードキャストする。このとき、送信処理部１０９は、Ｈｅｌｌｏフレームに自身のノード装置１００のノード装置コストを含める。Ｈｅｌｌｏフレームが送信されたノード装置を主体として見ると、自身のノード装置１００のノード装置コストは、ノード装置コストＹとなる。
【００５２】
ルーティングテーブル１０６には、ローカル宛先ごとにリンクコスト積算値が記憶されている。よって、送信処理部１０９はルーティングテーブル１０６を参照して、ローカル宛先のノード装置に対応するリンクコスト積算値をＨｅｌｌｏフレームに含める。
【００５３】
次に、フレーム処理部１１２について説明する。受信部１０１はデータフレームを受信したときに、受信したデータフレームをフレーム処理部１１２に出力する。フレーム処理部１１２はデータフレームに所定の処理を行う。そして、フレーム処理部１１２から出力されたデータフレームはルーティング決定部１１３に入力される。
【００５４】
ルーティング決定部１１３では、ルーティングテーブル１０６を参照して、次のローカル宛先を決定する。このとき、ルーティング決定部１１３は、ルーティングテーブル１０６のリンクコスト積算値が最も低いローカル宛先を選択することが好ましい。リンクコスト積算値が最も低い宛先ノード装置を選択することで、データフレームを最も高速に最終的な宛先であるノード装置ＧＷ（ゲートウェイ装置）に送信することができる。
【００５５】
そして、送信部１１１は、ルーティング決定部１１３で決定されたローカル宛先にデータフレームを送信する。従って、送信部１１１はデータフレームとＨｅｌｌｏフレームとの２種類のフレームを送信する。
【００５６】
次に、図５を参照して、ノード装置１００のハードウェアの構成を示す。図５に示すように、ノード装置１００は、プロセッサ１２１とＲＡＭ（Random Access Memory）１２２とＲＯＭ（Read Only Memory)１２３と補助記憶装置１２４と通信インタフェース１２５とタイマ１２６とがバス１２０を介して接続されている。
【００５７】
プロセッサ１２１はＣＰＵ（Central Processing Unit)のような任意の処理回路である。プロセッサ１２１はＲＡＭ１２２に展開されたプログラムを実行する。ＲＯＭ１２３はＲＡＭ１２２に展開されるプログラムを記憶する不揮発性の記憶装置である。ＲＡＭ１２２に展開されるプログラムは補助記憶装置１２４に記憶されていてもよい。補助記憶装置１２４の一例としては、可搬型記録媒体や半導体メモリ、ハードディスクドライブ等を適用できる。なお、補助記憶装置は記憶装置とも称される。
【００５８】
ＲＡＭ１２２、ＲＯＭ１２３および補助記憶装置１２４は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
【００５９】
一例として、演算部１０２、補正部１０３、テーブル管理部１０４、装置状態管理部１０８、送信処理部１０９、フレーム処理部１１２およびルーティング決定部１１３は、プロセッサ１２１により実現されてもよい。リンクテーブル１０５、ルーティングテーブル１０６および自ノードコスト記憶部１０７はＲＡＭ１２２、ＲＯＭ１２３または補助記憶装置１２４により実現されてもよい。受信部１０１および送信部１１１は通信インタフェース１２５により実現されてもよい。
【００６０】
通信インタフェース１２５は他のノード装置と通信するためのインタフェース装置である。図２に示した受信部１０１および送信部１１１は通信インタフェース１２５に含まれる。タイマ１２６は図２に示したタイマ１１０と同じものである。
【００６１】
次に、図６を参照して、Ｈｅｌｌｏフレームについて説明する。図６に示すＨｅｌｌｏフレームは、アドホックヘッダと時刻とＨｅｌｌｏメッセージヘッダと複数のＨｅｌｌｏヘッダと署名とパディングとを有している。なお、図６のＨｅｌｌｏフレームは例示であり、これに限定されることはない。
【００６２】
アドホックヘッダには、ローカル宛先（ＬＤ）、ローカル送信元（ＬＳ）、フレームのタイプ、フレームサイズ等の情報が含まれている。ＨｅｌｌｏメッセージヘッダにはＨｅｌｌｏ情報と固有コストと装置起動経過カウンタとが含まれている。図６に示しているバイト数は例示であり、図６のバイト数には限定されない。
【００６３】
また、Ｈｅｌｌｏ情報にはＨｅｌｌｏヘッダの数の情報が含まれている。各ＨｅｌｌｏヘッダはＧＤアドレスとホップ数とリンクコスト積算値とを含んでいる。ＧＤアドレスは最終的な宛先のノード装置を示している。ホップ数は最終的な宛先のノード装置までに存在するノード装置の数を示している。リンクコスト積算値は前述したものである。
【００６４】
次に、図７を参照して、ノード装置１００のＨｅｌｌｏフレームの受信処理について説明する。ノード装置１００は、Ｈｅｌｌｏフレームを受信したか否かを判定する（ステップＳ１００）。ノード装置１００がＨｅｌｌｏフレームを受信しなければ、Ｈｅｌｌｏフレーム受信処理は、次のステップＳ１０２には移行しない。
【００６５】
ノード装置１００の受信部１０１が隣接するノード装置からＨｅｌｌｏフレームを受信したときに、演算部１０２は、Ｈｅｌｌｏ受信周期平均、Ｈｅｌｌｏ受信周期分散、ＲＳＳＩ平均およびＲＳＳＩ分散に基づいて、補正前リンクコストＸを演算する（ステップＳ１０２）。
【００６６】
また、Ｈｅｌｌｏフレームにはノード装置コストが含まれている。補正部１０３は、演算部１０２が演算した補正前リンクコストＸにノード装置コストＹ（隣接するノード装置のノード装置コスト）を加算する。これにより、補正部１０３は、補正前リンクコストＸを補正して補正後リンクコストＺを得る（ステップＳ１０４）。
【００６７】
テーブル管理部１０４はリンクテーブル１０５を更新する（ステップＳ１０６）。隣接するノード装置から送信されたＨｅｌｌｏフレームには、当該隣接するノード装置を特定する情報が含まれている。また、受信したＨｅｌｌｏフレームに基づいて、Ｈｅｌｌｏ受信周期平均、Ｈｅｌｌｏ受信周期分散、ＲＳＳＩ平均およびＲＳＳＩ分散を検出することができる。
【００６８】
Ｈｅｌｌｏフレームにはノード装置コストＹが含まれており、テーブル管理部１０４はノード装置コストＹを検出する。テーブル管理部１０４は、補正部１０３が補正した補正後リンクコストＺを取得する。そして、テーブル管理部１０４はリンクテーブル１０５の各要素を隣接ノード装置ごとに更新することができる。
【００６９】
テーブル管理部１０４は、ルーティングテーブル１０６を更新する（ステップＳ１０８）。テーブル管理部１０４は、自身のノード装置１００に隣接するノード装置の情報をルーティングテーブル１０６のＬＤとして追加することがある。
【００７０】
また、テーブル管理部１０４は、リンクテーブル１０５を参照する。リンクテーブル１０５には、Ｈｅｌｌｏフレームを送信してきた隣接ノード装置に対応する補正後リンクコストＺが記憶されている。一方、隣接ノード装置から送信されたＨｅｌｌｏフレームにはリンクコスト積算値が含まれている。
【００７１】
そこで、演算部１０２は、Ｈｅｌｌｏフレームのリンクコスト積算値にリンクコストの補正後リンクコストＺを加算する。そして、テーブル管理部１０４は、加算した積算値をルーティングテーブル１０６に記憶する。
【００７２】
次に、図８を参照して、ノード装置１００によるＨｅｌｌｏフレームの送信処理について説明する。ノード装置１００のタイマ１１０は、所定時間が経過したか否かの判定を行う（ステップＳ１１０）。所定時間が経過しなければ、Ｈｅｌｌｏフレーム送信処理は、次のステップＳ１１２には移行しない。
【００７３】
タイマ１１０が所定時間に達したと判断した場合には、その旨の信号が送信処理部１０９に出力される。送信処理部１０９は、図６で示したようなＨｅｌｌｏフレームを生成する（ステップＳ１１２）。このとき、送信処理部１０９は、ブロードキャストするＨｅｌｌｏフレームを生成する。
【００７４】
送信処理部１０９は、自ノードコスト記憶部１０７を参照して、自身のノード装置コストをＨｅｌｌｏフレームに含める（ステップＳ１１４）。ノード装置１００自身に隣接するノード装置を主体として見ると、ステップＳ１１４でＨｅｌｌｏフレームに含められたノード装置コストは、隣接するノード装置から送信されたノード装置コストＹとなる。
【００７５】
次に、送信処理部１０９はルーティングテーブル１０６を参照して、Ｈｅｌｌｏフレームに、次のローカル宛先に対応するリンクコスト積算値を含める（ステップＳ１１６）。なお、ステップＳ１１４よりも先にステップＳ１１６の処理が行われてもよい。
【００７６】
以上のステップＳ１１４およびＳ１１６を経た後に、送信処理部１０９は、自身のノード装置１００に隣接する全てのノード装置にＨｅｌｌｏフレームを送信する（ステップＳ１１８）。
【００７７】
以上が、ノード装置１００のＨｅｌｌｏフレームの受信処理および送信処理である。アドホックネットワークでは、ネットワークに参加する全てのノード装置が、Ｈｅｌｌｏフレームの受信処理および送信処理を行う。
【００７８】
次に、図９を参照して、ノード装置１００におけるデータフレームの処理について説明する。ノード装置１００の受信部１０１はデータフレームを受信したか否かを判定する（ステップＳ１２０）。受信部１０１がデータフレームを受信しない間は、データフレームの処理は、次のステップＳ１２２には移行しない。
【００７９】
受信部１０１がデータフレームを受信したときには、フレーム処理部１１２にデータフレームが出力される。そして、フレーム処理部１１２がデータフレームに対して所定の処理を行い（ステップＳ１２２）、ルーティング決定部１１３に処理後のデータフレームを出力する。
【００８０】
ルーティング決定部１１３は、ルーティングテーブルを参照する（ステップＳ１２４）。そして、ルーティング決定部１１３は、リンクコスト積算値が最も低いローカル宛先（ＬＤ）を選択し、データフレームのルートを決定する（ステップＳ１２６）。
【００８１】
送信部１１１は、ルーティング決定部１１３が決定したローカル宛先（ＬＤ）のノード装置にデータフレームを送信する（ステップＳ１２８）。以上により、ノード装置１００のデータフレーム処理が終了する。
【００８２】
ネットワークに参加しているノード装置は複数存在しており、各ノード装置において、ルーティング決定部１１３がデータフレームをグローバル宛先（ＧＤ）に送信するための適切なルートを決定している。
【００８３】
次に、Ｈｅｌｌｏフレームを用いた経路決定の具体的な一例を説明する。アドホックネットワークとしては、図１に例示したアドホックネットワークを適用する。グローバル送信元（ＧＳ）はノード装置Ａである。このノード装置Ａはスマートメータであり、この一例では、計測した電力の情報をデータフレームで送信するものとするが、電力を計測するスマートメータには限定されない。また、最終的な宛先であるグローバル宛先（ＧＤ）はノード装置ＧＷであるものとする。
【００８４】
前述したように、ネットワークに参加している９つのノード装置Ａ〜Ｃ、Ｒ１〜Ｒ５およびＧＷは、それぞれ隣接するノード装置にＨｅｌｌｏフレームを送信している。そこで、最初にノード装置ＧＷに着目する。ノード装置ＧＷはゲートウェイ装置であり、グローバル宛先である。
【００８５】
ノード装置ＧＷに隣接するノード装置は、ノード装置Ｃおよびノード装置Ｒ５になる。ここで、ノード装置ＧＷはＨｅｌｌｏフレームをブロードキャストし、隣接ノードであるノード装置Ｒ５とノード装置ＣはこのＨｅｌｌｏフレームを受信する。
【００８６】
図１０は、ノード装置Ｒ５のリンクテーブル１０５（の一部）とルーティングテーブル１０６とノード装置Ｒ５から送信されるＨｅｌｌｏフレームとの一例を示している。ノード装置Ｒ５のリンクテーブル１０５には、隣接ノード装置と補正前リンクコストとノード装置コストと補正後リンクコストとが記憶されている。
【００８７】
ノード装置Ｒ５を自身のノード装置１００とすると、ノード装置１００の演算部１０２は、隣接するノード装置ＧＷと自身のノード装置１００との間の補正前リンクコストＸを演算する。ここでは、補正前リンクコストＸは「１２」になっている。
【００８８】
Ｈｅｌｌｏフレームには、隣接するノード装置ＧＷのノード装置コストＹが含まれている。ここでは、ノード装置コストＹは「１５」になっている。よって、補正部１０３は、補正前リンクコストＸにノード装置コストＹを加算する。補正後リンクコストＺは「２７」になる。これらの値がリンクテーブル１０５に記憶される。
【００８９】
ルーティングテーブル１０６には、ＬＤとしてノード装置ＧＷおよびノード装置Ｒ４が記憶されている。ここでは、ノード装置ＧＷに着目するため、ノード装置Ｒ４のリンクコスト積算値は示していないが、ノード装置Ｒ４のリンクコストにもリンクコスト積算値が記憶されている。
【００９０】
ノード装置ＧＷをＬＤとするリンクコスト積算値は「２７」として記憶されている。ノード装置Ｒ５はノード装置ＧＷに隣接するノード装置であるため、積算されてきたリンクコストは存在しない。積算するリンクコストをゼロとしてもよい。従って、リンクコスト積算値は補正後リンクコストＺと同じ値になる。
【００９１】
送信処理部１０９は、ノード装置Ｒ４とノード装置ＧＷと送信するＨｅｌｌｏフレームを生成する。このとき、送信処理部１０９は、ルーティングテーブル１０６を参照して、リンクコスト積算値「２７」の情報とホップ数「１」をＨｅｌｌｏフレームに含める。また、送信処理部１０９は、自ノードコスト記憶部１０７が記憶しているノード装置Ｒ５の通信性能に応じたコスト「１５」をＨｅｌｌｏフレームに含める。そして、送信処理部１０９はＨｅｌｌｏフレームをブロードキャストし、隣接ノードであるノード装置Ｒ４とＧＷはこのＨｅｌｌｏフレームを受信する。
【００９２】
次に、図１１を参照して、ノード装置Ｒ４について説明する。ノード装置Ｒ４を自身のノード装置１００としたとき、隣接するノード装置はノード装置Ｒ３およびノード装置Ｒ５になる。ノード装置Ｒ４のリンクテーブル１０５にはそれぞれのノード装置の補正前リンクコストＸとノード装置コストＹと補正後リンクコストＺとが記憶されている。
【００９３】
ここでは、隣接ノード装置Ｒ３に着目する。演算部１０２が演算する補正前リンクコストＸは「１０」である。ノード装置コストＹは「１５」である。このノード装置コストＹは、ノード装置Ｒ５がＨｅｌｌｏフレームに含めたノード装置コストである。そして、補正部１０３が補正した補正後リンクコストは「２５」になる。この補正後リンクコスト「２５」はリンクテーブル１０５に記憶される。
【００９４】
演算部１０２は、ノード装置Ｒ５から送信されたＨｅｌｌｏフレームに含まれているリンクコスト積算値「２７」に補正後リンクコスト「２５」を加算する。これにより、ルーティングテーブル１０６においてＬＤがノード装置Ｒ５に対応するリンクコスト積算値は「５２（＝２７＋２５）」になる。
【００９５】
送信処理部１０９は、Ｈｅｌｌｏフレームを生成する。送信処理部１０９は、ルーティングテーブル１０６を参照して、Ｈｅｌｌｏフレームにリンクコスト積算値「５２」の情報を含める。また、自ノードコスト記憶部１０７に記憶されているノード装置Ｒ４の通信性能に応じたノード装置コスト「１５」とホップ数「２」をＨｅｌｌｏフレームに含める。そして、送信処理部１０９はＨｅｌｌｏフレームをブロードキャストし、隣接ノードであるノード装置Ｒ３とノード装置Ｒ５はこのＨｅｌｌｏフレームを受信する。
【００９６】
次に、図１２を参照して、ノード装置Ｒ３について説明する。ノード装置Ｒ３に隣接するノード装置はノード装置Ｒ４およびノード装置Ｒ２になる。隣接ノード装置Ｒ４に着目すると、演算部１０２が演算する補正前リンクコストＸは「１０」である。また、隣接ノード装置Ｒ４のノード装置コストＹは「１５」である。よって、補正後リンクコストＺは「２５」になる。この補正後リンクコストＺ「２５」はリンクテーブル１０５に記憶される。
【００９７】
演算部１０２は、ノード装置Ｒ４から送信されたＨｅｌｌｏフレームに含まれているリンクコスト積算値「５２」に補正後リンクコスト「２５」を加算する。これにより、ルーティングテーブル１０６のＬＤがノード装置Ｒ４に対応するリンクコスト積算値は「７７（＝５２＋２５）」になる。
【００９８】
送信処理部１０９は、Ｈｅｌｌｏフレームを生成する。送信処理部１０９は、ルーティングテーブル１０６を参照して、Ｈｅｌｌｏフレームにリンクコスト積算値「７７」の情報とホップ数「３」を含める。また、自ノードコスト記憶部１０７に記憶されているノード装置Ｒ３のノード装置コスト「１５」を含める。そして、送信処理部１０９はＨｅｌｌｏフレームをブロードキャストし、隣接ノードであるノード装置Ｒ２とノード装置Ｒ４はこのＨｅｌｌｏフレームを受信する。
【００９９】
次に、図１３を参照して、ノード装置Ｒ２について説明する。ノード装置Ｒ２に隣接するノード装置はノード装置Ｒ３およびノード装置Ｒ１になる。隣接ノード装置Ｒ３に着目すると、演算部１０２が演算する補正前リンクコストＸは「１０」である。また、隣接ノード装置Ｒ４のノード装置コストＹは「１５」である。よって、補正後リンクコストＺは「２５」になる。この補正後リンクコスト「２５」はリンクテーブル１０５に記憶される。
【０１００】
演算部１０２は、ノード装置Ｒ３から送信されたＨｅｌｌｏフレームに含まれているリンクコスト積算値「７７」に補正後リンクコスト「２５」を加算する。これにより、ルーティングテーブル１０６においてＬＤがノード装置Ｒ３に対応するリンクコスト積算値は「１０２（＝７７＋２５）」になる。
【０１０１】
送信処理部１０９は、Ｈｅｌｌｏフレームを生成する。送信処理部１０９は、ルーティングテーブル１０６を参照して、Ｈｅｌｌｏフレームにリンクコスト積算値「１０２」とホップ数「４」の情報を含める。また、送信処理部１０９は、自ノードコスト記憶部１０７に記憶されているノード装置Ｒ２のノード装置コスト「１５」を含める。そして、送信処理部１０９はＨｅｌｌｏフレームをブロードキャストし、隣接ノードであるノード装置Ｒ１とノード装置Ｒ３はこのＨｅｌｌｏフレームを受信する。
【０１０２】
次に、図１４を参照して、ノード装置Ｒ１について説明する。ノード装置Ｒ１に隣接するノード装置はノード装置Ｒ２およびノード装置Ａになる。隣接ノード装置Ｒ２に着目すると、演算部１０２が演算する補正前リンクコストＸは「１０」である。また、隣接ノード装置Ｒ２のコストは「１５」である。よって、補正後リンクコストＺは「２５」になる。この補正後リンクコスト「２５」はリンクテーブル１０５に記憶される。
【０１０３】
演算部１０２は、Ｈｅｌｌｏフレームに含まれているリンクコスト積算値「１０２」に補正後リンクコスト「２５」を加算する。これにより、ルーティングテーブル１０６のＬＤがノード装置Ｒ２に対応するリンクコスト積算値は「１２７（＝１０２＋２５）」になる。
【０１０４】
送信処理部１０９は、Ｈｅｌｌｏフレームを生成する。送信処理部１０９は、ルーティングテーブル１０６を参照して、Ｈｅｌｌｏフレームにリンクコスト積算値「１２７」とホップ数「５」の情報を含める。また、送信処理部１０９は、自ノードコスト記憶部１０７に記憶されているノード装置Ｒ１の通信性能に応じたノード装置コスト「１５」を含める。そして、送信処理部１０９はＨｅｌｌｏフレームをブロードキャストし、隣接ノードであるノード装置Ａとノード装置Ｒ２はこのＨｅｌｌｏフレームを受信する。
【０１０５】
次に、図１５を参照して、ノード装置Ａについて説明する。ノード装置Ａに隣接するノード装置はノード装置Ｒ１およびノード装置Ｂになる。隣接ノード装置Ｒ１に着目すると、演算部１０２が演算する補正前リンクコストＸは「１２」である。また、隣接ノード装置Ｒ１のノード装置コストＹは「１５」である。よって、補正後リンクコストＺは「２７」になる。この補正後リンクコスト「２７」はリンクテーブル１０５に記憶される。
【０１０６】
演算部１０２は、ノード装置Ｒ１から送信されたＨｅｌｌｏフレームに含まれているリンクコスト積算値「１２７」に補正後リンクコスト「２７」を加算する。これにより、ルーティングテーブル１０６のＬＤがノード装置Ｒ１に対応するリンクコスト積算値は「１５４（＝１２７＋２５）」になる。
【０１０７】
従って、ノード装置Ａは経路２のリンクコスト積算値「１５４」をルーティングテーブル１０６に記憶させることができる。つまり、ノード装置Ａは、最終的な宛先のノード装置ＧＷから隣接ノード装置Ｒ１までのリンクコスト積算値「１２７」に補正後リンクコスト「２５」を加算した値を積算値「１５４」としてルーティングテーブル１０６に記憶させることができる。
【０１０８】
経路１についても同様の処理が行われる。つまり、ノード装置Ｃおよびノード装置Ｂを経由したノード装置ＧＷからノード装置Ａまでのリンクコスト積算値「１６５」が得られる。このリンクコスト積算値「１６５」はルーティングテーブル１０６に記憶される。
【０１０９】
図１に示すように、ノード装置ＡがＧＳとなり、ノード装置ＧＷがＧＤのときに、経路１または経路２の何れでもデータフレームをノード装置Ａからノード装置ＧＷまで通信させることができる。
【０１１０】
このとき、ノード装置Ａのルーティング決定部１１３は、ルーティングテーブル１０６を参照する。ルーティングテーブル１０６にはＬＤとしてノード装置Ｒ１とノード装置Ｂとが記憶されている。ルーティング決定部１１３はリンクコスト積算値が低いノード装置Ｒ１を次のノード装置として決定する。つまり、経路２が選択される。
【０１１１】
前述したように、経路１は経路２よりもホップ数が少ない。しかしながら、経路２は通信速度が低いノード装置ＢおよびＣ（つまり、スマートメータ）を経路となっている。ノード装置ＢおよびＣの通信性能に応じたコストを考慮したとき、ホップ数は少ないが、経路１はリンクコスト積算値が高くなる。
【０１１２】
一方、経路２は経路１よりもホップ数は多い。ただし、ノード装置Ｒ１〜Ｒ５はリピータであり、通信速度が高速である。つまり、ノード装置の通信性能に応じたコストが低くなる。従って、ホップ数は多いが、経路２はリンクコスト積算値が経路１よりも低くなる。
【０１１３】
経路２は高速な通信性能を持つノード装置Ｒ１〜Ｒ５を含むＨｉｇｈｗａｙとなっている。リンクコスト積算値は、データフレームを通信するときの経路選択にあたり、データフレームをＨｉｇｈｗａｙに誘導するために用いられる。
【０１１４】
ただし、常にＨｉｇｈｗａｙの経路２が選択されるとは限らない。例えば、経路２に別のノード装置（リピータ）が参加したときには、リンクコスト積算値としては、経路１の方が低くなる。その場合、ノード装置Ａからノード装置ＧＷにデータフレームを通信するときに、通信速度が低いノード装置ＢおよびＣを経由した経路１が選択される。
【０１１５】
従って、実施形態では、ネットワークに参加する複数のノード装置のうち、ＧＳとなるノード装置からＧＤとなるノード装置までのルーティングにはリンクコスト積算値が考慮されている。リンクコスト積算値は、経路に存在するノード装置の通信性能に応じたノード装置コストを考慮しているため、適切なルーティングを行うことができる。適切なルーティングが行われることにより、ＧＳとなるノード装置からＧＤとなるノード装置まで早くデータフレームを届けることができる。
【０１１６】
これにより、例えば、スマートメータが計測した電力の情報を迅速に最終的な宛先のゲートウェイ装置に送信することができる。
【０１１７】
図１に示した一例では、ネットワークは経路１と経路２とを有しているが、例えば、ノード装置Ｒ２とノード装置Ｂとが接続された経路がさらに存在する場合を想定する。この場合には、ノード装置Ｒ２のルーティング決定部１１３は、ルーティングテーブル１０６を参照する。
【０１１８】
ノード装置Ｒ２のルーティングテーブル１０６にはローカル宛先として、ノード装置Ｒ３だけでなく、ノード装置Ｂも記憶されている。そして、ノード装置Ｒ３のコスト積算値およびノード装置Ｂのコスト積算値も記憶されている。
【０１１９】
このとき、ノード装置Ｒ３を経由する経路２はＨｉｇｈｗａｙになっており、ノード装置Ｂを経由する経路よりもコスト積算値は低くなる。よって、ノード装置Ｒ２のルーティング決定部１１３はローカル宛先として、ノード装置Ｂではなく、ノード装置Ｒ３を選択する。そして、データフレームはノード装置Ｒ２からノード装置Ｒ３に送信される。
【０１２０】
次に、図２に示した装置状態管理部１０８を使用した例について説明する。装置状態管理部１０８はノード装置１００の状態を管理している。装置状態管理部１０８はノード装置１００の状態に応じて、自ノードコスト記憶部１０７に記憶されているノード装置１００の通信性能に応じたコストを変更する。
【０１２１】
装置状態管理部１０８がコストを変更する第１の例について説明する。第１の例は、ノード装置１００を起動した直後に、自ノードコスト記憶部１０７に記憶されているコストを高くする例である。
【０１２２】
ノード装置１００を起動したときには、通信環境が不安定であり、当該ノード装置１００を使用することが適切でない場合がある。このような場合には、装置状態管理部１０８は、ノード装置１００を起動した直後に、自ノードコスト記憶部１０７に記憶されているノード装置コストを本来のコスト（ノード装置１００の通信性能に応じたコスト）よりも高く設定する。
【０１２３】
これにより、補正後リンクコストＺの値が高くなり、起動した直後のノード装置１００を使用する経路が選択されにくくなる。自ノードコスト記憶部１０７のコストの値を非常に高く設定すれば、当該ノード装置１００はより使用される可能性が低くなる。
【０１２４】
第２の例は、ノード装置１００がバッテリで駆動されている場合である。ノード装置１００が通信を行うためには、電力を消費する。このため、ノード装置１００がバッテリで駆動される場合には、電力の消費状況によっては、通信が不安定になる。
【０１２５】
従って、ノード装置１００がバッテリで駆動されている場合には、装置状態管理部１０８は、自ノードコスト記憶部１０７が記憶しているノード装置コストを本来のコスト（ノード装置１００の通信性能に応じたコスト）よりも高く設定する。これにより、当該ノード装置１００を使用した経路が選択される可能性が低くなる。
【０１２６】
第３の例は、ノード装置１００に障害が発生した場合である。この場合には、当該ノード装置１００を使用しない経路を選択することが望ましい。このため、装置状態管理部１０８は、自ノードコスト記憶部１０７が記憶しているノード装置コストを本来のコスト（ノード装置１００の通信性能に応じたコスト）よりも高く設定する。
【０１２７】
特に、第３の例では、ノード装置１００に障害が発生しているため、他の経路を選択させることが望ましい。従って、装置状態管理部１０８は、自ノードコスト記憶部１０７が記憶しているノード装置コストを、自身のノード装置１００が使用されないような非常に高いコストに設定することが好ましい。
【０１２８】
第４の例は、ノード装置１００が輻輳状態になっている場合である。図１６を用いて説明する。図１６（Ａ）はノード装置Ｎ１に経路が集中することで輻輳状態になっている状態を示している。つまり、２つのネットワークＮＷおよびノード装置ＧＷ（ゲートウェイ装置）からの通信がノード装置１００（ここでは、ノード装置Ｎ１）に集中している。
【０１２９】
このように、過度にノード装置Ｎ１に経路が集中すると、ノード装置Ｎ１の処理能力を超過した通信が発生する。このため、ネットワーク全体として通信品質が低下する。図１６（Ｂ）は、ノード装置Ｎ１が受信するフレームの受信数（実線）と受信エラー（点線）とを示している。
【０１３０】
受信数および受信エラーの両方がそれぞれの閾値（受信数閾値および受信エラー閾値）を超過している。つまり、ノード装置Ｎ１の処理能力を超過した通信が集中している状態になっている。
【０１３１】
このように、ノード装置Ｎ１に経路が集中して輻輳状態になると、輻輳状態を装置状態管理部１０８が検出する。装置状態管理部１０８はノード装置Ｎ１が輻輳状態になると、自ノードコスト記憶部１０７に記憶されているコストを本来のコストより高く設定する。
【０１３２】
これにより、ノード装置Ｎ１を経由する経路のリンクコスト積算値が高くなる。従って、ノード装置Ｎ１を経由する経路は選択されにくくなり、他の経路に通信が分散される。図１７が他の経路に通信が分散された状態を示している。
【０１３３】
図１７（Ａ）のネットワークでは、ノード装置Ｎ１を経由する経路だけでなく、ノード装置Ｎ２およびＮ３の経路も選択される。これにより、通信がノード装置Ｎ１に集中することがなくなり、ノード装置Ｎ２およびＮ３に通信が分散される。
【０１３４】
図１７（Ｂ）は、図１６（Ｂ）と同様に、ノード装置Ｎ１が受信するフレームの受信数（実線）と受信エラー（点線）とを示している。図１７（Ｂ）に示されるように、ノード装置Ｎ１の受信数も受信エラーも共に閾値を下回っている。よって、ノード装置Ｎ１は安定的な通信を行うことができる。
【０１３５】
従って、装置状態管理部１０８がノード装置Ｎ１の輻輳状態に応じて、自ノードコスト記憶部１０７に記憶されているノード装置コストを本来のコストよりも高く設定している。このため、通信の経路がノード装置Ｎ１から他のノード装置Ｎ２およびＮ３に分散される。つまり、ノード装置Ｎ１が負担していた通信の一部がノード装置Ｎ２およびＮ３に分散されるため、ノード装置Ｎ１の輻輳状態が解消される。これにより、ネットワークは安定的な通信を行うことができる。
【０１３６】
なお、第１の例〜第４の例において説明した本来のコストとは、ノード装置１００の通信性能に応じたコストである。この本来のコストは、予め初期値として自ノードコスト記憶部１０７に記憶させてもよい。
【０１３７】
次に、図１８を用いて、図１とは異なるアドホックネットワークの一例を示す。図１８のネットワークは、エリア１とエリア２とエリア３との３つのエリアに分かれている。図中において、網掛けのノード装置Ｒ１〜Ｒ９がリピータ、ハッチングのノード装置ＧＷがゲートウェイ装置、これら以外のノード装置がスマートメータであるものとする。
【０１３８】
図１８では、ノード装置Ｒ１〜Ｒ９を経由する経路によりＨｉｇｈｗａｙが構築される。そして、エリア２およびエリア３の各ノード装置（スマートメータ）は、データフレームがゲートウェイ装置までの通信にかかる時間がより短くなるようにＨｉｇｈｗａｙに誘導される。
【０１３９】
これは、エリア２およびエリア３の各ノード装置のルーティングテーブル１０６には、リンクコスト積算値が記憶されているためである。ゲートウェイ装置に対応する１または複数のローカル宛先のうち、リンクコスト積算値が最も低くなるのは、Ｈｉｇｈｗａｙを経由してノード装置ＧＷ（ゲートウェイ）に到達する経路である。
【０１４０】
よって、図中の太線で示すように、ノード装置（スマートメータ）から送信されたデータフレームは、Ｈｉｇｈｗａｙを経由して、ノード装置ＧＷに到達する経路が選択される。従って、より適切なルーティングを行うことができる。
【０１４１】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【０１４２】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
ノード装置であって、
相互に隣接しているノード装置の間で通信される第１のデータを受信する受信部と、
前記第１のデータに基づいて、自ノード装置と隣接ノード装置との間のリンクコストを演算する演算部と、
前記隣接ノード装置の通信性能に応じたコストを用いて前記リンクコストを補正する補正部と、
最終的な宛先のノード装置から前記隣接ノード装置までのリンクコストの積算値に前記補正部が補正した前記リンクコストを加算した積算値を前記隣接ノード装置ごとに記憶する記憶部と、
前記自ノード装置の通信性能に応じたコストと前記積算値とを含めた前記第１のデータを他の隣接ノード装置に送信する送信部と、
を備えるノード装置。
（付記２）
前記自ノード装置から前記最終的な宛先のノード装置に第２のデータを送信するときに、前記記憶部を参照して、前記積算値が最も低い隣接ノード装置を選択する決定部、
を備える付記１記載のノード装置。
（付記３）
前記自ノード装置の通信性能に応じたコストを変更する変更部、
を備える付記１または２記載のノード装置。
（付記４）
前記変更部は、前記自ノード装置を起動したときに、前記自ノード装置の通信性能に応じたコストを本来のコストよりも高く変更する、
付記３記載のノード装置。
（付記５）
前記変更部は、前記自ノード装置がバッテリにより駆動されているときに、前記自ノード装置の通信性能に応じたコストを本来のコストよりも高く変更する、
付記３記載のノード装置。
（付記６）
前記変更部は、前記自ノード装置が輻輳状態にあるときに、前記自ノード装置の通信性能に応じたコストを本来のコストよりも高く変更する、
付記３記載のノード装置。
（付記７）
前記変更部は、前記自ノード装置に障害が発生したときに、前記自ノード装置の通信性能に応じたコストを本来のコストよりも高く変更する、
付記３記載のノード装置。
（付記８）
前記第１のデータはＨｅｌｌｏフレームであり、前記第２のデータはデータフレームである、
付記１乃至７のうち何れか１項に記載のノード装置。
（付記９）
前記演算部は、前記Ｈｅｌｌｏフレームの受信信号強度の平均値と前記受信信号強度の分散値と前記Ｈｅｌｌｏフレームの受信周期の平均値と前記Ｈｅｌｌｏフレームの受信周期の分散値とに基づいて、補正前の前記リンクコストを演算する、
付記８記載のノード装置。
（付記１０）
前記ノード装置はスマートメータであり、前記データフレームは電力とガスと水道とのうち何れか１つの使用量の計測値の情報を含む、
付記９記載のノード装置。
（付記１１）
プロセッサと記憶装置とを備えるノード装置であって、
前記プロセッサは、
相互に隣接しているノード装置の間で通信されるデータを受信し、
前記第１のデータに基づいて、自ノード装置と隣接ノード装置との間のリンクコストを演算し、
前記隣接ノード装置の通信性能に応じたコストを用いて前記リンクコストを補正し、
最終的な宛先のノード装置から前記隣接ノード装置までのリンクコストの積算値に前記補正部が補正した前記リンクコストを加算した積算値を前記隣接ノード装置ごとに前記記憶装置に記憶し、
前記自ノード装置の通信性能に応じたコストと前記記憶装置が記憶している前記積算値とを含めた前記データを他の隣接ノード装置に送信する、
ノード装置。
（付記１２）
複数のノード装置を含む通信システムであって、
各ノード装置は、
相互に隣接しているノード装置の間で通信されるデータを受信する受信部と、
前記データに基づいて、自ノード装置と隣接ノード装置との間のリンクコストを演算する演算部と、
前記隣接ノード装置の通信性能に応じたコストを用いて前記リンクコストを補正する補正部と、
最終的な宛先のノード装置から前記隣接ノード装置までのリンクコストの積算値に前記補正部が補正した前記リンクコストを加算した積算値を前記隣接ノード装置ごとに記憶する記憶部と、
前記自ノード装置の通信性能に応じたコストと前記記憶部が記憶している前記積算値とを含めた前記データを他の隣接ノード装置に送信する送信部と、
を備える通信システム。
（付記１３）
コンピュータに、
相互に隣接しているノード装置の間で通信されるデータを受信し、
前記データに基づいて、自ノード装置と隣接ノード装置との間のリンクコストを演算し、
前記隣接ノード装置の通信性能に応じたコストを用いて前記リンクコストを補正し、
最終的な宛先のノード装置から前記隣接ノード装置までのリンクコストの積算値に前記補正部が補正した前記リンクコストを加算した積算値を前記隣接ノード装置ごとに記憶し、
前記自ノード装置の通信性能に応じたコストと前記積算値とを含めた前記データを他の隣接ノード装置に送信する、
処理を実行させる通信プログラム。
（付記１４）
ノード装置が、
相互に隣接しているノード装置の間で通信されるデータを受信し、
前記第１のデータに基づいて、自ノード装置と隣接ノード装置との間のリンクコストを演算し、
前記隣接ノード装置の通信性能に応じたコストを用いて前記リンクコストを補正し、
最終的な宛先のノード装置から前記隣接ノード装置までのリンクコストの積算値に前記補正部が補正した前記リンクコストを加算した積算値を前記隣接ノード装置ごとに記憶し、
前記自ノード装置の通信性能に応じたコストと前記積算値とを含めた前記データを他の隣接ノード装置に送信する、
通信方法。
【符号の説明】
【０１４３】
１００  ノード装置
１０１  受信部
１０２  演算部
１０３  補正部
１０４  テーブル管理部
１０５  リンクテーブル
１０６  ルーティングテーブル
１０７  自ノードコスト記憶部
１０８  装置状態管理部
１０９  送信処理部
１１０、１２６  タイマ
１１１  送信部
１１２  フレーム処理部
１１３  ルーティング決定部
１２０  バス
１２１  プロセッサ
１２２  ＲＡＭ
１２３  ＲＯＭ
１２４  補助記憶装置
１２５  通信インタフェース
【図１】
2015037253.tif 000003
【図２】
2015037253.tif 000004
【図３】
2015037253.tif 000005
【図４】
2015037253.tif 000006
【図５】
2015037253.tif 000007
【図６】
2015037253.tif 000008
【図７】
2015037253.tif 000009
【図８】
2015037253.tif 000010
【図９】
2015037253.tif 000011
【図１０】
2015037253.tif 000012
【図１１】
2015037253.tif 000013
【図１２】
2015037253.tif 000014
【図１３】
2015037253.tif 000015
【図１４】
2015037253.tif 000016
【図１５】
2015037253.tif 000017
【図１６】
2015037253.tif 000018
【図１７】
2015037253.tif 000019
【図１８】
2015037253.tif 000020