(57)【要約】  無線ネットワークにおいて使用される無線通信装置は、記憶部、取得部、選択部、送信部を備える。記憶部は、自装置に隣接する隣接無線通信装置を識別する情報を記憶する。取得部は、隣接無線通信装置の中の第１の無線通信装置から、第１の無線通信装置に隣接する第２の無線通信装置を識別する情報を取得する。選択部は、データの宛先に応じて、隣接無線通信装置を選択する。送信部は、選択部により選択される隣接無線通信装置へデータを送信する。選択部は、第２の無線通信装置を識別する情報が記憶部に記憶されていないときは、隣接無線通信装置を選択する処理において第１の無線通信装置の優先度を低くする。
2012073312.tif 000002
【特許請求の範囲】
【請求項１】
複数の無線通信装置が接続される無線ネットワークにおいて使用される無線通信装置であって、
自装置に隣接する隣接無線通信装置を識別する情報を記憶する記憶部と、
前記隣接無線通信装置の中の第１の無線通信装置から、前記第１の無線通信装置に隣接する第２の無線通信装置を識別する情報を取得する取得部と、
データの宛先に応じて、隣接無線通信装置を選択する選択部と、
前記選択部により選択される隣接無線通信装置へ前記データを送信する送信部と、を備え、
前記選択部は、前記第２の無線通信装置を識別する情報が前記記憶部に記憶されていないときは、前記隣接無線通信装置を選択する処理において前記第１の無線通信装置の優先度を低くする
ことを特徴とする無線通信装置。
【請求項２】
請求項１に記載の無線通信装置であって、
宛先ごとに、前記宛先との間の通信品質に応じて決まる第１の重み、および前記第２の無線通信装置を識別する情報が前記記憶部に記憶されているか否かに応じて決まる第２の重み、に基づいて評価値を算出する算出部をさらに備え、
前記選択部は、前記評価値に基づいて宛先に対応する隣接無線通信装置を選択する
ことを特徴とする無線通信装置。
【請求項３】
請求項２に記載の無線通信装置であって、
前記評価値を隣接無線通信装置へ通知する通知部をさらに備える
ことを特徴とする無線通信装置。
【請求項４】
請求項３に記載の無線通信装置であって、
前記通知部は、予め決められた時間間隔で、前記評価値を格納するデータを隣接無線通信装置へブロードキャストする
ことを特徴とする無線通信装置。
【請求項５】
請求項１に記載の無線通信装置であって、
前記選択部は、前記第２の無線通信装置を識別する情報が前記記憶部に記憶されていないときは、前記第１の無線通信装置以外の隣接無線通信装置を選択する
ことを特徴とする無線通信装置。
【請求項６】
請求項１に記載の無線通信装置であって、
前記選択部は、前記記憶部に識別情報が記憶されていない第２の無線通信装置の数が多いほど、前記第１の無線通信装置の優先度を低くする
ことを特徴とする無線通信装置。
【請求項７】
請求項１に記載の無線通信装置であって、
前記選択部は、予め決められた所定の宛先についてのみ、前記第２の無線通信装置を識別する情報が前記記憶部に記憶されているか否かに応じて、前記第１の無線通信装置の優先度を調整する
ことを特徴とする無線通信装置。
【請求項８】
各無線通信装置がそれぞれ宛先への経路の中で最小の評価値の経路を選択してデータを転送する無線ネットワークにおいて使用される無線通信装置であって、
前記宛先への経路において、ネクストホップの転送先を特定する特定部と、
前記特定部により特定されるネクストホップの転送先が隠れ端末であるか否かを判定する判定部と、
前記ネクストホップの転送先が隠れ端末であるときは、前記ネクストホップの転送先が隠れ端末でないときと比較して、前記宛先への経路の評価値を大きくする算出部、
を有することを特徴とする無線通信装置。
【請求項９】
請求項８に記載の無線通信装置であって、
前記宛先への経路の評価値を隣接無線通信装置へ通知する通知部をさらに備える
ことを特徴とする無線通信装置。
【請求項１０】
複数の無線通信装置が接続される無線ネットワークにおいて使用される経路決定方法であって、
無線通信装置に隣接する隣接無線通信装置を識別する情報を記憶部に記憶し、
前記隣接無線通信装置の中の第１の無線通信装置から、前記第１の無線通信装置に隣接する第２の無線通信装置を識別する情報を取得し、
前記第２の無線通信装置を識別する情報が前記記憶部に記憶されているか否かを判定し、
前記第２の無線通信装置を識別する情報が前記記憶部に記憶されていないときは、前記第１の無線通信装置を経由する経路の優先度を低くする
ことを特徴とする経路決定方法。
【請求項１１】
請求項１０に記載の経路決定方法であって、
各無線通信装置は、それぞれ、宛先と前記宛先への経路が経由する隣接無線通信装置との対応関係を記録する経路表を備え、
前記複数の無線通信装置の中の特定無線通信装置は、前記特定無線通信装置を宛先とする経路表を送信し、
各無線通信装置は、前記特定無線通信装置を宛先とする経路表を保持すると共に、前記特定無線通信装置を宛先とする経路表を隣接無線通信装置へ転送する
ことを特徴とする経路決定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、無線ネットワークにおいて使用される無線通信装置および無線ネットワークにおける経路決定方法に係わる。
【背景技術】
【０００２】
近年、各無線端末が自律的に相互に接続するアドホックネットワークの研究が進められている。アドホックネットワークにおいては、アクセスポイントは設置されず、各無線端末が経路情報を有する。そして、各無線端末は、ある隣接端末から受信したパケットを、経路情報に基づいて他の隣接端末へ中継する。この構成により、アドホックネットワークは、所望の宛先へパケットを送信できる。【０００３】
ところで、アドホックネットワークにおいては、電波強度の変化や無線端末の移動などに伴い、ネットワーク環境が頻繁に変化する。このため、アドホックネットワークに接続する各無線端末は、他の無線端末との間で通信を行う前に経路制御を行う。例えば、アドホックネットワークに新たに接続した無線端末は、隣接する無線端末へ存在情報をブロードキャストする。存在情報を受信した無線端末は、その存在情報に対応する経路情報を生成し、さらに、その経路情報を隣接無線端末へ送信する。この結果、新たな無線端末に係わる経路情報は、ネットワーク上の無線端末に通知される。【０００４】
なお、関連する技術として、下記の経路情報中継方法が提案されている。すなわち、アドホックネットワークに接続するノード各々は、隣接ノードから経路情報を受信する。ノード各々は、受信した経路情報について、経路情報で示される経路の品質を示す品質情報を取得する。ノード各々は、受信した経路情報について、パケットの宛先となるノードが同一である経路情報が複数受信されているか否かを、所定の周期ごとに判定する。ノード各々は、判定した結果、宛先となるノードが同一である経路情報が複数受信されている場合には、複数受信された経路情報各々について品質情報各々を比較し、比較の結果最も高い品質であることを示す品質情報に対応する経路情報を選択する。ノード各々は、選択した経路情報を、隣接ノードに対して中継する。（例えば、特許文献１）
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２６７５３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来のアドホックネットワークにおいては、隠れ端末に起因する問題への対策が十分でなかった。以下、図１を参照しながら、隠れ端末に起因する問題について説明する。
図１に示すアドホックネットワークには、ノードＧＷ、Ａ〜Ｅが接続されている。ここで、ノードＡは、ノードＧＷと良好な通信を行うことができるものとする。ノードＢ、Ｃは、ノードＧＷからの電波を受信できるが、ノードＧＷとの通信の品質は良好ではない。ノードＤ、Ｅは、ノードＧＷからの電波を受信できない。そして、ノードＧＷは、各ノードＡ〜Ｅからデータを収集するものとする。【０００７】
上記アドホックネットワークにおいて、ノードＢは、下記の経路情報を保持しているものとする。
「データパケットの宛先がノードＧＷであるときは、そのデータパケットをノードＡへ送信する」【０００８】
この場合、ノードＢは、ノードＧＷ宛てのデータパケットを生成すると、そのデータパケットをノードＡへ送信する。そうすると、ノードＡは、ノードＢから受信したデータパケットをノードＧＷへ転送する。これにより、ノードＧＷは、ノードＢのデータを受信する。このとき、ノードＧＷは、受信したデータパケットに対応するＡＣＫパケットをノードＡへ返送する。以降、ノードＢは、必要に応じて、同様の経路でノードＧＷへデータパケットを送信するものとする。このとき、ノードＡは、ノードＢからデータパケットを受信すると共に、ノードＧＷからＡＣＫパケットを受信する。ただし、ノードＧＷおよびノードＢは、相互に通信可能である。よって、ノードＧＷおよびノードＢは、例えばＣＳＭＡ／ＣＡ（Carrier Sense Multiple Access Collision Avoidance）を利用して、互いに送信タイミングを制御することができる。この結果、ノードＡにおけるパケット衝突が回避または抑制される。【０００９】
また、ノードＤは、下記の経路情報を保持しているものとする。
「データパケットの宛先がノードＧＷであるときは、そのデータパケットをノードＡへ送信する」【００１０】
この場合、ノードＤは、ノードＢと同様に、ノードＡへデータパケットを送信する。そうすると、ノードＡは、受信したデータパケットをノードＧＷへ転送し、ノードＧＷは、受信したデータパケットに対応するＡＣＫパケットをノードＡへ返送する。このケースでは、ノードＡは、ノードＤからデータパケットを受信すると共に、ノードＧＷからＡＣＫパケットを受信する。【００１１】
しかしながら、ノードＧＷからの電波はノードＤには届かない。また、ノードＤからの電波はノードＧＷには届かない。すなわち、ノードＧＷにとってノードＤは「隠れ端末」であり、ノードＤにとってノードＧＷは「隠れ端末」である。したがって、ノードＧＷおよびノードＤは、パケット衝突を回避するための送信タイミング制御を行うことができない。この結果、ノードＤが、ノードＧＷを宛先とするデータパケットをノードＡへ送信すると、ノードＡにおいてパケット衝突が発生し得る。【００１２】
ここで、ノードＤは、他のノード（例えば、ノードＥ）から送信された、ノードＧＷを宛先とするデータパケットを中継することができる。この場合、ノードＤは、ノードＥから送信されたデータパケットをノードＡへ転送し、ノードＡは、そのデータパケットをノードＧＷへ転送する。したがって、この場合も、ノードＡにおいてパケット衝突が発生し得る。【００１３】
このように、各ノード（無線端末）が、隠れ端末を考慮することなく、単純に経路情報に従ってパケットを転送すると、パケット衝突の発生頻度が高くなる。そして、パケット衝突の発生頻度が高くなると、通信速度が低下し、輻輳が発生するおそれがある。すなわち、従来技術においては、隠れ端末に起因する問題への対策が十分ではなく、通信効率が低下することがあった。【００１４】
本発明の課題は、無線ネットワークの通信効率を向上させることである。
【課題を解決するための手段】
【００１５】
本発明の１つの態様に係る無線通信装置は、複数の無線通信装置が接続される無線ネットワークにおいて使用され、自装置に隣接する隣接無線通信装置を識別する情報を記憶する記憶部と、前記隣接無線通信装置の中の第１の無線通信装置から、前記第１の無線通信装置に隣接する第２の無線通信装置を識別する情報を取得する取得部と、データの宛先に応じて、隣接無線通信装置を選択する選択部と、前記選択部により選択される隣接無線通信装置へ前記データを送信する送信部と、を備える。前記選択部は、前記第２の無線通信装置を識別する情報が前記記憶部に記憶されていないときは、前記隣接無線通信装置を選択する処理において前記第１の無線通信装置の優先度を低くする。【００１６】
本発明の１つの態様に係る経路決定方法は、複数の無線通信装置が接続される無線ネットワークにおいて使用され、無線通信装置に隣接する隣接無線通信装置を識別する情報を記憶部に記憶し、前記隣接無線通信装置の中の第１の無線通信装置から、前記第１の無線通信装置に隣接する第２の無線通信装置を識別する情報を取得し、前記第２の無線通信装置を識別する情報が前記記憶部に記憶されているか否かを判定し、前記第２の無線通信装置を識別する情報が前記記憶部に記憶されていないときは、前記第１の無線通信装置を経由する経路の優先度を低くする。
【発明の効果】
【００１７】
開示の装置または方法によれば、無線ネットワークの通信効率が向上する。
【図面の簡単な説明】
【００１８】
【図１】隠れ端末に起因する問題を説明する図である。
【図２】実施形態の無線ネットワークの構成を説明する図である。
【図３】ノード装置の構成を示す図である。
【図４】ノード装置の機能を説明するブロック図である。
【図５】リンク重みについて説明する図である。
【図６】リンクテーブルの一例を示す図である。
【図７】ルーティングテーブルの一例を示す図である。
【図８】Ｈｅｌｌｏパケットのフォーマットを示す図である。
【図９】リンクテーブルおよびルーティングテーブルの生成について説明する図である。
【図１０】周期テーブルの実施例を示す図である。
【図１１】ノード装置の処理手順の概要を示す図である。
【図１２】経路決定方法の実施例を示す図（その１）である。
【図１３】経路決定方法の実施例を示す図（その２）である。
【図１４】経路決定方法の実施例を示す図（その３）である。
【図１５】リンクテーブルを更新する処理を示すフローチャートである。
【図１６】ルーティングテーブルを更新する処理を示すフローチャート（その１）である。
【図１７】ルーティングテーブルを更新する処理を示すフローチャート（その２）である。
【図１８】隠れ端末処理の一例を示すフローチャートである。
【図１９】評価値を算出する処理を示すフローチャートである。
【図２０】Ｈｅｌｌｏパケットを送信する処理を示すフローチャートである。
【図２１】他の実施形態の経路決定方法を説明する図である。
【図２２】隠れ端末の数を考慮して経路を決定する方法を説明する図である。
【発明を実施するための形態】
【００１９】
図２は、実施形態の無線ネットワークの構成を説明する図である。実施形態の無線ネットワークは、アドホックネットワークであり、複数の無線端末が接続されている。以下の説明では、各無線端末のことを「ノード装置」または単に「ノード」と呼ぶことがある。図２に示す例では、無線ネットワークは、ノードｎ１〜ｎ１４を備えている。
【００２０】
図２において、ノード間を接続する破線は、無線リンクを表す。例えばノードｎ６は、ノードｎ３、ｎ５、ｎ１０、ｎ１１との間に無線リンクを有している。すなわち、ノードｎ６から送信される電波（すなわち、無線信号）は、ノードｎ３、ｎ５、ｎ１０、ｎ１１に到達し、また、ノードｎ３、ｎ５、ｎ１０、ｎ１１からそれぞれ送信される電波は、ノードｎ６に到達する。なお、以下の説明では、無線リンクで相互に接続される１組のノードは、互いに「隣接」しているものとする。すなわち、ノードｎ３、ｎ５、ｎ１０、ｎ１１は、ノードｎ６に隣接している。換言すれば、ノードｎ３、ｎ５、ｎ１０、ｎ１１は、ノードｎ６の「隣接ノード」である。
【００２１】
各ノードは、定期的に、Ｈｅｌｌｏパケットをブロードキャストする。ただし、この実施形態では、「ブロードキャスト」は、すべてのノードにパケットを送信するものではなく、すべての隣接ノードにパケットを送信することを意味する。したがって、例えば、ノードｎ６は、ノードｎ３、ｎ５、ｎ１０、ｎ１１へＨｅｌｌｏパケットを送信する。このとき、各ノードｎ３、ｎ５、ｎ１０、ｎ１１は、ノードｎ６から受信したＨｅｌｌｏパケットを他のノードへは転送しない。
【００２２】
Ｈｅｌｌｏパケットは、ノードが存在することを他のノードに通知するために使用される。例えば、ノードｎ６がＨｅｌｌｏパケットをブロードキャストすると、ノードｎ３、ｎ５、ｎ１０、ｎ１１は、そのＨｅｌｌｏパケットを受信する。そうすると、ノードｎ３は、隣接ノードとしてノードｎ６が存在することを認識する。ノードｎ５、ｎ１０、ｎ１１も同様に、隣接ノードとしてノードｎ６が存在することを認識する。
【００２３】
Ｈｅｌｌｏパケットは、上述したように、各ノードから送信される。したがって、例えば、ノードｎ３がＨｅｌｌｏパケットを送信すると、ノードｎ１、ｎ２、ｎ６がそのＨｅｌｌｏパケットを受信する。このとき、各ノードｎ１、ｎ２、ｎ６は、隣接ノードとしてノードｎ３が存在することを認識する。このようにして、各ノードは、自ノードに隣接するノードを認識する。
【００２４】
図３は、ノード装置（すなわち、無線端末）の構成を示す図である。ノード装置１は、通信部１０、記憶部２０、制御部３０を備える。通信部１０は、アンテナ、送信機、受信機を備え、無線インタフェースを提供する。記憶部２０は、例えば半導体メモリであり、制御部３０によって使用される。また、記憶部２０は、不揮発性メモリを含む。制御部３０は、ＣＰＵを含み、ノード装置１の動作を制御する。なお、特に図示しないが、ノード装置１は、入力デバイスを接続するための入力インタフェースおよび／または出力デバイスを接続するための出力インタフェースを備えるようにしてもよい。
【００２５】
図４は、ノード装置の機能を説明するブロック図である。なお、図４においては、無線ネットワークの構築に直接的に係わらない機能については省略されている。
記憶部２０は、制御部３０により処理されるデータを記憶する。また、記憶部２０は、ルーティングテーブル２１、リンクテーブル２２、周期テーブル２３、ワークテーブル２４を格納する。
【００２６】
ルーティングテーブル２１は、経路情報を格納する。経路情報は、宛先となる無線端末にパケットを送信する経路を表す。換言すると、経路情報は、パケットの宛先ノードとパケットを中継する隣接ノードとの対応関係を表す。また、ルーティングテーブル２１は、経路情報により特定される経路の品質を表す品質情報も記憶する。なお、ルーティングテーブル２１は、経路情報受信部３１がＨｅｌｌｏパケットを受信したときに、ルーティングテーブル更新部３３により更新される。
【００２７】
リンクテーブル２２は、リンク情報を格納する。リンク情報は、自ノードと隣接ノードとの間のリンクの品質を表す。なお、リンクテーブル２２は、経路情報受信部３１がＨｅｌｌｏパケットを受信したときに、リンクテーブル更新部３２により更新される。
【００２８】
周期テーブル２３は、各隣接ノードについて周期情報を格納する。周期情報は、隣接ノードから送信されるＨｅｌｌｏパケットの受信周期を表す。なお、周期テーブル２３は、経路情報受信部３１がＨｅｌｌｏパケットを受信したときに、リンクテーブル更新部３２により更新される。周期情報は、この例では、隣接ノードとの間のリンクの評価値またはリンク重みを計算するために使用される。ワークテーブル２４は、ルーティングテーブル２１と同じ構造を有し、ルーティングテーブル２１に格納するための経路情報および品質情報を一時的に格納する。
【００２９】
制御部３０は、経路情報受信部３１、リンクテーブル更新部３２、ルーティングテーブル更新部３３、経路情報送信部３４、パケット送受信部３５を備える。なお、制御部３０は、この例では、プロセッサを用いてプログラムを実行することにより、経路情報受信部３１、リンクテーブル更新部３２、ルーティングテーブル更新部３３、経路情報送信部３４、パケット送受信部３５を実現する。この場合、プログラムは、記憶部２０の不揮発性メモリ内に予め格納されてもよい。また、プログラムは、可搬型の記録媒体からノード装置１に提供されるようにしてもよい。可搬型の記録媒体は、例えば、ＣＤ−ＲＯＭ、ＤＶＤ、ＵＳＢメモリ等の半導体メモリである。さらに、プログラムサーバからノード装置１へプログラムを提供してもよい。
【００３０】
経路情報受信部３１は、隣接ノードからＨｅｌｌｏパケットを受信し、そのＨｅｌｌｏパケットから経路情報を取得する。なお、後で説明するが、Ｈｅｌｌｏパケットは、ノードが存在することを通知するために使用されると共に、経路情報を伝送するためにも使用される。また、経路情報受信部３１は、受信したＨｅｌｌｏパケットを、リンクテーブル更新部３２およびルーティングテーブル更新部３３に渡す。
【００３１】
リンクテーブル更新部３２は、リンクテーブル２２に格納されているリンク情報を更新する。ここで、リンクテーブル更新部３２は、経路情報受信部３１から受け取るＨｅｌｌｏパケットに基づいて、リンクテーブル２２に格納されているリンク情報を更新する。また、リンクテーブル更新部３２は、リンク情報の更新に際して、周期テーブル２３に格納されている周期情報を更新し、更新した周期情報に基づいてリンク情報を更新する。
【００３２】
ルーティングテーブル更新部３３は、ルーティングテーブル２１に格納されている経路情報を更新する。具体的には、ルーティングテーブル更新部３３は、経路情報受信部３１から受け取るＨｅｌｌｏパケットに基づいて、ルーティングテーブル２１に格納されている経路情報を更新する。
【００３３】
経路情報送信部３４は、ルーティングテーブル２１に格納されている経路情報およびリンクテーブル２２に格納されているリンク情報に基づいて、Ｈｅｌｌｏパケットを生成する。そして、経路情報送信部３４は、生成したＨｅｌｌｏパケットを隣接ノードへブロードキャストする。
【００３４】
パケット送受信部３５は、隣接ノードからパケットを受信する。また、パケット送受信部３５は、ルーティングテーブル２１を参照し、受信パケットの宛先に対応する隣接ノードを特定する。そして、パケット送受信部３５は、特定した隣接ノードへ、受信パケットを送信する。
【００３５】
なお、リンクテーブル２２は、隣接無線端末を識別する情報を記憶する記憶部の一例である。経路情報受信部３１は、第１の無線端末に隣接する第２の無線端末を識別する情報を取得する取得部の一例である。ルーティングテーブル更新部３３は、宛先ごとに対応する隣接無線端末を選択する選択部の一例である。パケット送受信部３５は、選択部により選択される隣接無線端末へパケットを送信する送信部の一例である。経路情報送信部３４は、評価値を隣接無線端末へ通知する通知部の一例である。
【００３６】
図５は、リンク重みについて説明する図である。なお、図５においては、無線ネットワークが備える多数のノードの中の一部のノード（Ｇ、Ｘ、Ｙ、Ｚ、Ａ）のみが描かれている。
【００３７】
ノードＧ、Ｘは、それぞれノードＺに隣接している。ノードＸ、Ｙ、Ｚは、それぞれノードＧに隣接している。ノードＧ、Ｚ、Ａは、それぞれノードＸに隣接している。ノードＧ、Ａは、それぞれノードＹに隣接している。ノードＸ、Ｙは、それぞれノードＡに隣接している。なお、「隣接」は、ノード間で相互に電波が到達することを表す。
【００３８】
リンク重みは、ノード間の無線リンクの品質または通信コストを表す指標である。この実施形態では、品質の良いリンクのリンク重みは小さく、品質の悪いリンクのリンク重みは大きい。また、ノード間のリンク重みは、１組のリンク評価値に基づいて算出される。例えば、ノードＧからノードＺへ向かうリンクの評価値は「９」であり、ノードＺからノードＧへ向かうリンクの評価値は「１１」である。そして、ノード間のリンク重みは、１組のリンク評価値の平均で表わされる。よって、ノードＧ、Ｚ間のリンク重みは「１０」である。同様に、ノードＸ、Ｚ間のリンク重みは「１００」である。すなわち、このケースは、ノードＸ、Ｚ間のリンクよりも、ノードＧ、Ｚ間のリンクの方が、品質が良いことを表している。なお、リンク評価値の検出方法については、後で説明する。
【００３９】
図６は、リンクテーブル２２の一例を示す。なお、図６は、図５に示すノードＧが有するリンクテーブル２２を示している。
リンクテーブル２２には、隣接ノードとの間のリンクについてのリンク情報が登録される。リンク情報は、「隣接ノード」「往路リンク評価値」「復路リンク評価値」「リンク重み」を含む。「隣接ノード」は、リンクの接続先のノードを識別する。「往路リンク評価値」は、隣接ノードにとっての往路リンクの品質を表す。「復路リンク評価値」は、隣接ノードにとっての復路リンクの品質を表す。「リンク重み」は、「往路リンク評価値」および「復路リンク評価値」の平均を表す。
【００４０】
例えば、図６に示す第１レコードに登録されているリンク情報は、以下の内容を表している。
隣接ノード：Ｚ
往路リンク評価値（ノードＺからノードＧへ向かうリンクの品質）：１１
復路リンク評価値（ノードＧからノードＺへ向かうリンクの品質）：９
リンク重み（ノードＧとノードＺとの間のリンクの品質）：１０
【００４１】
図７は、ルーティングテーブル２１の一例を示す。なお、図７は、図５に示すノードＹが有するルーティングテーブル２１を示している。
【００４２】
ルーティングテーブル２１には、宛先ノードごとに経路情報および品質情報が登録される。具体的には、ルーティングテーブル２１には、「宛先ノード」「隣接ノード」「経路重み」「リンク重み」「隠れ端末重み」「評価値」が登録される。「宛先ノード」は、パケットの宛先ノードを識別する。「隣接ノード」は、宛先ノードへパケットを送信するための最適な経路上に位置する隣接ノードを表す。「経路重み」は、「隣接ノード」から「宛先ノード」までの経路の通信コストを表す。具体的には、「経路重み」は、「隣接ノード」から「宛先ノード」までの経路上の各リンクのリンク重みの総和を表す。「リンク重み」は、「隣接ノード」との間のリンク重みを表す。「隠れ端末重み」は、宛先ノードへの経路上に隠れ端末が存在するか否かに応じて決定される。例えば、隠れ端末が存在しなければ「隠れ端末重み＝０」であり、隠れ端末が存在するときは「隠れ端末重み＝１０」である。「評価値」は、宛先ノードへの経路に係わる総通信コストに相当し、例えば「経路重み」「リンク重み」「隠れ端末重み」の和により算出される。
【００４３】
例えば、図７に示す第１レコードには、宛先ノードＧについての経路情報および品質情報が登録されている。ここで、宛先ノードが隣接ノードであるときは、「宛先ノード」および「隣接ノード」は同一である。よって、「隣接ノード」にも「ノードＧ」が書き込まれている。また、ノードＹ、Ｇ間の「リンク重み」は、図５に示すように「６」である。更に、宛先ノードが隣接ノードであるときは、「経路重み」および「隠れ端末重み」はいずれもゼロである。したがって、宛先ノードＧについての「評価値」には「６」が書き込まれる。
【００４４】
図７に示す第２レコードには、宛先ノードＺについての経路情報および品質情報が登録されている。この例では、「隣接ノード」として「ノードＧ」が書き込まれている。すなわち、第２レコードには、ノードＹからノードＺへの経路として、ノードＧを経由する経路が登録されている。「経路重み」は、ノードＹからノードＺへの経路上のリンク重みの和から、ノードＹ、Ｇ間のリンク重みを差し引いた値を表している。すなわち、「経路重み」は、ノードＧ、Ｚ間のリンク重みを表す。
【００４５】
なお、第２レコードの「リンク重み」は、ノードＹ、Ｇ間のリンク重みであり、第１レコードにおいて「リンク重み」として記録されている。即ち、第２レコードにおいて「リンク重み」が記録されていなくても、第１レコードを参照すれば、第２レコードの「評価値」を算出することができる。したがって、「宛先ノード」が「隣接ノード」でないレコードにおいては、「リンク重み」を省略できる。
【００４６】
「隠れ端末重み」は、ネクストホップノードの転送先ノードと直接的に通信可能か否かに応じて決定される。ここで、「隣接ノード」がネクストホップノードに相当する。また、転送先ノードは、宛先ノードへ向かう経路上での、ネクストホップノードの隣接ノードに相当する。そして、ネクストホップノードの転送先ノードと直接的に通信可能なときは「隠れ端末重み＝０」であり、ネクストホップノードの転送先ノードと直接的に通信できないときは「隠れ端末重み＝１０」である。図５に示す例では、ノードＹからノードＺへの経路において、ノードＹのネクストホップはノードＧであり、ノードＧの転送先はノードＺである。ところが、図５に示すように、ノードＺから送信される電波は、ノードＹには到達しない。すなわち、ノードＹは、ネクストホップの転送先であるノードＺと直接的に通信できない。このため、図６に示す第２レコードにおいて「隠れ端末重み＝１０」が書き込まれている。したがって、「ノードＹ、Ｇ間のリンク重み＝１０」「ノードＧ、Ｚ間のリンク重み＝６」「隠れ端末重み＝１０」を加算することにより、「評価値＝２６」が得られる。
【００４７】
ここで、図５を参照しながら隠れ端末について簡単に説明する。図５において、ノードＹ、Ｚは、上述したように、直接的に通信を行うことができない。すなわち、ノードＹにとってノードＺは隠れ端末であり、ノードＺにとってノードＹは隠れ端末である。この場合、ノードＹ、Ｚは、ＣＳＭＡ／ＣＡ等を利用してパケット衝突を回避するための送信タイミング制御を行うことができない。よって、例えば、ノードＹ、Ｚが同時にパケットを送信すると、ノードＧにおいてパケット衝突が発生する。パケット衝突が発生すると、たとえば再送処理が実行されるので、通信速度が低下してしまう。この結果、通信効率が低下する。
【００４８】
このように、宛先ノードへの経路上に隠れ端末が存在するときは、パケット衝突に起因して通信効率が低下する。したがって、上述の例では、ノードＹは、ノードＺへパケットを送信するための経路を選択する際に、ネクストホップノードＧを経由する経路の優先度を低くする。図７に示す例では、ネクストホップノードＧを経由してノードＺへ向かう経路に「隠れ端末重み＝１０」が設定されている。この場合、ネクストホップノードＧを経由してノードＺへ向かう経路の「評価値」が大きくなる。ここで、実施形態のノード装置は、宛先ノードへパケットを送信するため経路が複数存在する場合、最適経路として、評価値が最小の経路を選択する。したがって、上述のようにして隠れ端末重みが加算される経路は、最適な経路を選択する際に、優先度が低くなる。すなわち、隠れ端末が存在する経路は、最適経路として選択されにくくなる。
【００４９】
また、ノードＹは、隠れ端末が存在するか否かを表す隠れ端末情報を隣接ノードに通知する。この通知は、例えば、Ｈｅｌｌｏパケットにより実現される。上述の例では、ノードＹは、「ノードＹからノードＧを経由してノードＺへ向かう経路には、隠れ端末が存在する」を表す隠れ端末情報をノードＡに通知する。そうすると、ノードＡは、ノードＺを宛先とするパケットを送信する際に、ノードＹを経由する経路の優先度を低くする。この場合、ノードＡは、ノードＺを宛先とするパケットを、例えばノードＸへ送信する。この結果、ノードＡからノードＺへのパケット転送に際して、ノードＧにおけるパケット衝突が回避または抑制され、通信効率が向上する。
【００５０】
図８は、Ｈｅｌｌｏパケットのフォーマットを示す図である。Ｈｅｌｌｏパケットは、アドホックヘッダ、宛先ノード、隣接ノード、往路リンク評価値、隠れ端末情報、評価値を含む。アドホックヘッダは、アドホックネットワークにおいてパケットを伝送するために必要な情報を格納する。なお、アドホックヘッダは、Ｈｅｌｌｏパケットの送信元ノードを識別する情報を含むようにしてもよい。宛先ノード、隣接ノード、評価値は、この例では、図７に示すルーティングテーブルに登録される対応するエントリと同じである。往路リンク評価値は、隣接ノードにとっての往路リンクの品質を表す。隠れ端末情報は、図７に示すルーティングテーブルに記録される隠れ端末重みに相当する。ただし、隠れ端末情報は、隠れ端末が存在するか否かを表す情報（例えば、フラグ情報）であってもよい。
【００５１】
図９は、リンクテーブル及びルーティングテーブルの生成について説明する図である。ここでは、ノードＺおよびノードＧが新たにリンクテーブルおよびルーティングテーブルを生成するものとする。なお、図９においては、隠れ端末を考慮しないものとする。
【００５２】
まず、ノードＺは、ＨｅｌｌｏパケットＡ１をブロードキャストする。このとき、ノードＺは、隣接ノードの存在を認識していないものとする。この場合、ＨｅｌｌｏパケットＡ１は有効なデータを有していない。
【００５３】
ＨｅｌｌｏパケットＡ１は、ノードＺの電波が到達する領域内のすべてのノードにより受信される。すなわち、ＨｅｌｌｏパケットＡ１は、ノードＺの隣接ノードによって受信される。この例では、ノードＧのみがＨｅｌｌｏパケットＡ１を受信するものとする。
【００５４】
ノードＧは、ＨｅｌｌｏパケットＡ１を受信すると、リンクテーブル２２Ｇおよびルーティングテーブル２１Ｇにおいてそれぞれ新たなレコードを生成する。このとき、ノードＧは、リンクテーブル２２Ｇの新たなレコードの「宛先ノード」に、ＨｅｌｌｏパケットＡ１の送信元であるノードＺを記録する。また、ノードＧは、ＨｅｌｌｏパケットＡ１の受信に際して、ノードＺからノードＧへのリンク（すなわち、ノードＺにとっての往路リンク）の品質を検出する。この例では、リンク評価値＝１１が得られるものとする。そうすると、ノードＧは、リンクテーブル２２Ｇにおいて、「ノードＺ」に対応づけて「往路リンク評価値＝１１」を記録する。さらに、ノードＧは、ルーティングテーブル２１Ｇの新たなレコードにおいて、「宛先ノード」および「隣接ノード」としてノードＺを記録する。
【００５５】
続いて、ノードＧは、ＨｅｌｌｏパケットＡ２をブロードキャストする。このとき、ノードＧは、ノードＺからＨｅｌｌｏパケットＡ１を受信したことにより、ノードＺが隣接ノードであることを認識している。この場合、ＨｅｌｌｏパケットＡ２は、ノードＺを宛先とする経路情報および品質情報を格納する。すなわち、ＨｅｌｌｏパケットＡ２の「宛先ノード」「隣接ノード」には、それぞれルーティングテーブル２１Ｇの「宛先ノード」「隣接ノード」が書き込まれる。また、ノードＧは、ＨｅｌｌｏパケットＡ２を利用して、ノードＺからノードＧへのリンクの品質を、ノードＺに通知する。すなわち、ノードＧのリンクテーブル２２Ｇに記録されている「往路リンク評価値＝１１」が、ＨｅｌｌｏパケットＡ２の「往路リンク評価値」に書き込まれる。
【００５６】
ＨｅｌｌｏパケットＡ２は、ノードＧの電波が到達する領域内のすべてのノードにより受信される。すなわち、ＨｅｌｌｏパケットＡ２は、ノードＧの隣接ノードによって受信される。この例では、ノードＺのみがＨｅｌｌｏパケットＡ２を受信するものとする。
【００５７】
ノードＺは、ＨｅｌｌｏパケットＡ２を受信すると、リンクテーブル２２Ｚおよびルーティングテーブル２１Ｚにおいてそれぞれ新たなレコードを生成する。このとき、ノードＺは、リンクテーブル２２Ｚの新たなレコードの「宛先ノード」に、ＨｅｌｌｏパケットＡ２の送信元であるノードＧを記録する。また、ノードＺは、ＨｅｌｌｏパケットＡ２の受信に際して、ノードＧからノードＺへのリンク（すなわち、ノードＧにとっての往路リンク）の品質を検出する。この例では、リンク評価値＝９が得られる。そうすると、ノードＺは、リンクテーブル２２Ｚにおいて、「ノードＧ」に対応づけて「往路リンク評価値＝９」を記録する。
【００５８】
ノードＺは、ＨｅｌｌｏパケットＡ２から「往路リンク評価値」を読み出す。ここで、ＨｅｌｌｏパケットＡ２により通知される「往路リンク評価値」は、ノードＧにおいて検出された、ノードＺからノードＧへのリンクの品質を表す。すなわち、ＨｅｌｌｏパケットＡ２により通知される「往路リンク評価値」は、ノードＧにとっての復路リンクの品質を表す。ここで、ノードＧにとっての往路リンクは、ノードＺにとっては復路リンクである。よって、ノードＺは、ＨｅｌｌｏパケットＡ２により通知される「往路リンク評価値」を、リンクテーブル２２Ｚの「復路リンク評価値」に書き込む。この例では、ノードＺは、リンクテーブル２２Ｚにおいて、「ノードＧ」に対応づけて「復路リンク評価値＝１１」を記録する。さらに、ノードＺは、往路リンク評価値と復路リンク評価値の平均を算出し、その算出結果をリンクテーブル２２Ｚの「リンク重み」に書き込む。この例では、リンクテーブル２２Ｚにおいて、隣接ノードＧとの間のリンクに対して「リンク重み＝１０」が記録されている。
【００５９】
さらに、ノードＺは、ルーティングテーブル２１Ｚにおいて、ノードＧと宛先とするレコードを作成する。この場合、「隣接ノード」はノードＧである。また、ルーティングテーブル２１Ｚの「リンク重み」には、リンクテーブル２２Ｚの「リンク重み」が記録される。さらに、ルーティングテーブル２１Ｚの「評価値」には、ルーティングテーブル２１Ｚの「リンク重み」および「経路重み」の和が書き込まれる。ただし、この例では、経路重みはゼロである。
【００６０】
つづいて、ノードＺは、ＨｅｌｌｏパケットＡ３をブロードキャストする。このとき、ノードＺは、ＨｅｌｌｏパケットＡ３を利用して、ノードＧからノードＺへのリンクの品質を、ノードＧに通知する。すなわち、ノードＺのリンクテーブル２２Ｚに記録されている「往路リンク評価値＝９」が、ＨｅｌｌｏパケットＡ３の「往路リンク評価値」に書き込まれる。また、ルーティングテーブル２１Ｚに記録されている「評価値＝１０」が、ＨｅｌｌｏパケットＡ３の「評価値」に書き込まれる。さらに、ＨｅｌｌｏパケットＡ３の「宛先ノード」「隣接ノード」には、それぞれルーティングテーブル２１Ｚの「宛先ノード」「隣接ノード」が書き込まれる。
【００６１】
ノードＧは、ノードＺからＨｅｌｌｏパケットＡ３を受信すると、リンクテーブル２２Ｇおよびルーティングテーブル２１Ｇを更新する。即ち、ノードＧは、ＨｅｌｌｏパケットＡ３の「往路リンク評価値＝９」を、リンクテーブル２２Ｇの「復路リンク評価値」に書き込む。また、ノードＧは、リンクテーブル２２Ｇにおいて、「往路リンク評価値」および「復路リンク評価値」の平均を「リンク重み」に書き込む。さらに、ノードＧは、上述したノードＺにおける手順と同様に、ルーティングテーブル２１Ｇの「リンク重み」および「評価値」を書き込む。
【００６２】
上述のようにして生成されるリンクテーブル２２Ｚ、２２Ｇ、およびルーティングテーブル２１Ｚ、２１Ｇは、以下の内容を表す。
【００６３】
リンクテーブル２２Ｚ：
（１）ノードＺは、隣接ノードＧを有する
（２）ノードＺ、Ｇ間のリンク重みは「１０」
【００６４】
ルーティングテーブル２１Ｚ：
（１）宛先は、ノードＧ
（２）ノードＺから宛先ノードへパケットを送信するとき、ネクストホップはノードＧ
（３）ノードＺからネクストホップノードまでのリンク重みは「１０」
（４）ノードＺから宛先ノードまでの評価値は「１０」
【００６５】
リンクテーブル２２Ｇ：
（１）ノードＧは、隣接ノードＺを有する
（２）ノードＧ、Ｚ間のリンク重みは「１０」
【００６６】
ルーティングテーブル２１Ｇ：
（１）宛先は、ノードＺ
（２）ノードＧから宛先ノードへパケットを送信するとき、ネクストホップはノードＺ
（３）ノードＧからネクストホップノードまでのリンク重みは「１０」
（４）ノードＧから宛先ノードまでの評価値は「１０」
【００６７】
このように、各ノード装置は、隣接ノードとの間でＨｅｌｌｏパケットを送信および受信することにより、リンクテーブル２２およびルーティングテーブル２１を生成する。なお、各ノード装置は、上述したように、Ｈｅｌｌｏパケットを定期的に送信する。したがって、各ノード装置は、Ｈｅｌｌｏパケットを受信するごとに、リンクテーブル２２およびルーティングテーブル２１を更新する。
【００６８】
また、各ノード装置は、上述したように、Ｈｅｌｌｏパケットを利用して、隣接ノードとの間のリンクの品質を検出する。ここで、ノード装置は、例えば、Ｈｅｌｌｏパケットの受信間隔に基づいてリンクの品質を検出する。すなわち、実施形態のアドホックネットワークでは、各ノード装置は、それぞれ予め決められた周期でＨｅｌｌｏパケットを繰り返し送信する。したがって、仮に、リンクの品質が良好であれば、ノード装置において隣接ノードからＨｅｌｌｏパケットを受信する時間間隔は、一定となるはずである。換言すれば、リンクの品質が悪いときは、ノード装置において隣接ノードからＨｅｌｌｏパケットを受信する時間間隔のばらつきが大きくなる。そこで、ノード装置は、周期テーブル２３を利用してＨｅｌｌｏパケットの受信周期をモニタする。
【００６９】
図１０は、周期テーブル２３の実施例である。なお、図１０は、ノードＺが備える周期テーブル２３を示している。
【００７０】
周期テーブル２３は、各隣接ノードに対してそれぞれ生成される。この例では、ノードＺは、隣接ノードＧ、Ｘを有する。よって、ノードＺは、ノードＧから送信されるＨｅｌｌｏパケットの受信周期を記録するための周期テーブル２３Ｇ、およびノードＸから送信されるＨｅｌｌｏパケットの受信周期を記録するための周期テーブル２３Ｘを備える。そして、周期テーブル２３（２３Ｇ、２３Ｘ）は、受信したＨｅｌｌｏパケットを識別する「ＩＤ」、Ｈｅｌｌｏパケットを受信した時間間隔を表す「周期」、Ｈｅｌｌｏパケットを受信した時刻を表す「受信時刻」を記録する。
【００７１】
周期テーブル２３Ｇには、ノードＺがノードＧからＨｅｌｌｏパケット１〜４を受信した時刻が記録されている。「周期」は、連続する２つのＨｅｌｌｏパケットの受信時刻の差分により算出される。例えば、Ｈｅｌｌｏパケット４の受信時刻が「０．０５」であり、Ｈｅｌｌｏパケット３の受信時刻が「０．０３」である。この場合「周期＝０．０２」が得られる。
【００７２】
ノード装置は、たとえば、周期テーブル２３に蓄積される「周期」の標準偏差に基づいて、リンクの評価値を算出する。図１０に示す実施例では、ノードＧからＨｅｌｌｏパケットを受信する周期の標準偏差は小さく、ノードＸからＨｅｌｌｏパケットを受信する周期の標準偏差は大きい。したがって、ノードＧからノードＺへ向かうリンクの品質は良好であり、リンクの評価値は小さくなる。一方、ノードＸからノードＺへ向かうリンクの品質は良好ではなく、リンクの評価値は大きくなる。
【００７３】
なお、各ノード装置は、他の方法でリンクの品質を検出してもよい。例えば、ノード装置は、隣接ノードから送信されるＨｅｌｌｏパケットの受信レベル（例えば、受信電波強度）に基づいてリンクの品質を検出してもよい。
【００７４】
図１１は、ノード装置の処理手順の概要を示す図である。なお、図１１は、Ｈｅｌｌｏパケットの送信および受信に係わる動作を示している。また、各ノード装置は、定期的にＨｅｌｌｏパケットをブロードキャストする。
【００７５】
経路情報受信部３１は、隣接ノードから送信されるＨｅｌｌｏパケットを受信する。経路情報受信部３１がＨｅｌｌｏパケットを受信すると、リンクテーブル更新部３２がリンクテーブル２２を更新し、ルーティングテーブル更新部３３がルーティングテーブル２１を更新する。すなわち、ノード装置がＨｅｌｌｏパケットを受信することに、リンクテーブル２２およびルーティングテーブル２１が更新される。また、リンクテーブル更新部３２は、Ｈｅｌｌｏパケットの受信時刻を周期テーブル２３に書き込む。
【００７６】
ノード装置は、図４では不図示のタイマを備える。このタイマは、予め決められた時間が経過するごとにタイマイベント信号を出力する。そして、経路情報送信部３４は、タイマイベント信号が生成されると、ルーティングテーブル２１およびリンクテーブル２２を参照してＨｅｌｌｏパケットを生成し、隣接ノードへブロードキャストする。
【００７７】
次に、図１２〜図１４を参照しながら、経路決定方法の実施例を説明する。なお、以下の説明では、図５に示すネットワークにおいて、ノード間でＨｅｌｌｏパケットを送信および受信することでネットワークが構築されるものとする。また、各ノード装置は、それぞれ自分の隣接ノードを認識しているものとする。
【００７８】
＜手順１（図１２）＞
ノードＺは、図１２（ａ）に示すように、ＨｅｌｌｏパケットＺをブロードキャストする。ここで、ノードＺから送信される電波は、ノードＧ、Ｘには到達するが、ノードＹ、Ａには到達しない。また、ノードＺは、先に、ノードＧ、ＸからＨｅｌｌｏパケットを受信し、ノードＧ、ＸからノードＺへ向かうリンクの品質を検出しているものとする。この場合、ノードＺは、図１２（ｂ）に示すＨｅｌｌｏパケットＺを生成して送信する。
【００７９】
ＨｅｌｌｏパケットＺには、ノードＧを宛先とする経路情報および品質情報、およびノードＸを宛先とする経路情報および品質情報が格納されている。ここで、たとえば、ノードＧを宛先とする経路情報は、パケットの転送先がノードＧであることを表している。また、ノードＧを宛先とする品質情報は、ノードＧからノードＺへ向かうリンクの評価値、およびノードＺからノードＧへの経路の評価値を含んでいる。なお、Ｈｅｌｌｏパケットは、複数の宛先について、経路情報および品質情報を格納することができる。
【００８０】
ノードＧは、ノードＺからＨｅｌｌｏパケットＺを受信すると、リンクテーブル２２およびルーティングテーブル２１を更新する。この例では、ノードＧは、図１２（ｃ）に示すように、ノードＧ、Ｚ間のリンクを表すリンク情報をリンクテーブル２２に登録する。このリンク情報は、以下の内容を表す。
【００８１】
（１）ノードＧは、隣接ノードＺを有する
（２）往路リンク評価値（ノードＺからノードＧへ向かうリンクの品質）は「１１」
（３）復路リンク評価値（ノードＧからノードＺへ向かうリンクの品質）は「９」
（４）リンク重み（ノードＧ、Ｚ間のリンクの品質）は「１０」
【００８２】
また、ノードＧは、図１２（ｄ）に示すように、ノードＧからノードＺへの経路についての経路情報および品質情報をルーティングテーブル２１に登録する。この経路情報および品質情報は、以下の内容を表す。
【００８３】
（１）宛先は、ノードＺ
（２）ノードＧから宛先ノードＺへの経路において、ネクストホップはノードＺ
（３）ネクストホップノードＺから宛先ノードＺまでの経路重みは「０」
（４）ノードＧからネクストホップノードＺまでのリンク重みは「１０」
（５）隠れ端末なし
（６）ノードＧから宛先ノードＺまでの評価値は「１０」
【００８４】
ノードＸも、ノードＺからＨｅｌｌｏパケットＺを受信すると、リンクテーブル２２およびルーティングテーブル２１を更新する。この例では、ノードＸは、図１２（ｃ）に示すように、ノードＸ、Ｚ間のリンクを表すリンク情報をリンクテーブル２２に登録する。ただし、ノードＺ、Ｘ間のリンク品質（リンク重み＝１００）は、非常に悪い。ここで、この実施例では、各ノード装置は、品質の悪い経路の情報をルーティングテーブル２１に登録しないものとする。したがって、ノードＸは、ＨｅｌｌｏパケットＺを受信したときに、宛先ノードＺについての情報をルーティングテーブル２１に登録しない。
【００８５】
＜手順２（図１３）＞
手順２においては、手順１においてＨｅｌｌｏパケットＺを受信したノード装置がＨｅｌｌｏパケットを送信する。なお、ここでは、ノードＧがＨｅｌｌｏパケットを送信する手順について説明し、ノードＸがＨｅｌｌｏパケットを送信する手順については説明を省略する。
【００８６】
ノードＧは、図１３（ａ）に示すように、ＨｅｌｌｏパケットＧをブロードキャストする。ここで、ノードＧから送信される電波は、ノードＺ、Ｙ、Ｘに到達するものとする。また、ノードＧは、先に、ノードＺ、Ｙ、ＸからそれぞれＨｅｌｌｏパケットを受信し、ノードＺ、Ｙ、ＸからノードＧへ向かうリンクの品質を検出しているものとする。この場合、ノードＧは、図１３（ｂ）に示すＨｅｌｌｏパケットＧを生成して送信する。ＨｅｌｌｏパケットＧには、ノードＹを宛先とする経路情報および品質情報、ノードＸを宛先とする経路情報および品質情報、ノードＺを宛先とする経路情報および品質情報が格納されている。
【００８７】
ノードＹは、ノードＧからＨｅｌｌｏパケットＧを受信すると、リンクテーブル２２およびルーティングテーブル２１を更新する。この例では、ノードＹは、図１３（ｃ）に示すように、ノードＹ、Ｇ間のリンクを表すリンク情報をリンクテーブル２２に登録する。このリンク情報は、以下の内容を表す。
【００８８】
（１）ノードＹは、隣接ノードＧを有する
（２）往路リンク評価値（ノードＧからノードＹへ向かうリンクの品質）は「６」
（３）復路リンク評価値（ノードＹからノードＧへ向かうリンクの品質）は「６」
（４）リンク重み（ノードＹ、Ｇ間のリンクの品質）は「６」
【００８９】
また、ノードＹは、図１３（ｄ）に示すように、ノードＹからノードＧ、Ｚへの経路についての経路情報および品質情報を登録する。ここで、ノードＹからノードＧへの経路の経路情報および品質情報は以下の内容を表す。
【００９０】
（１）宛先は、ノードＧ
（２）ノードＹから宛先ノードＧへの経路において、ネクストホップはノードＧ
（３）ネクストホップノードＧから宛先ノードＧまでの経路重みは「０」
（４）ノードＹからネクストホップノードＧまでのリンク重みは「６」
（５）隠れ端末なし
（６）ノードＹから宛先ノードＧまでの評価値は「６」
【００９１】
また、ノードＹからノードＺへの経路の経路情報および品質情報は以下の内容を表す。
【００９２】
（１）宛先は、ノードＺ
（２）ノードＹから宛先ノードＺへの経路において、ネクストホップはノードＧ
（３）ネクストホップノードＧから宛先ノードＺまでの経路重みは「１０」
（４）ノードＹからネクストホップノードＧまでのリンク重みは「６」
（５）隠れ端末あり（隠れ端末重み＝１０）
（６）ノードＹから宛先ノードＺまでの評価値は「２６」
【００９３】
ここで、ノード装置は、例えば以下の方法で、隠れ端末が存在するか否かを判定する。すなわち、ノード装置は、Ｈｅｌｌｏパケットを受信すると、そのＨｅｌｌｏパケットに格納されている情報の「宛先ノード」について、ネクストホップの転送先を特定する。例えば、ノードＹは、宛先ノードＺについてネクストホップの転送先を特定する。図１３に示す例では、図１３（ｄ）に示すノードＹのルーティングテーブルにおいて、「宛先ノード＝Ｚ」に対して「隣接ノード＝Ｇ」が記録されている。よって、ノードＹからノードＺへ向かう経路において、ネクストホップはノードＧである。また、図１３（ｂ）に示すように、ノードＧから送信されるＨｅｌｌｏパケットＧにおいて、「宛先ノード＝Ｚ」に対して「隣接ノード＝Ｚ」が記録されている。よって、ノードＹからノードＺへ向かう経路において、ネクストホップ（すなわち、ノードＧ）の転送先は、ノードＺである。このようにして、ノードＹは、ノードＺを宛先とする経路において、ネクストホップの転送先として「ノードＺ」を特定する。
【００９４】
続いて、ノードＹは、上述のようにして特定したネクストホップの転送先（すなわち、ノードＺ）が、ノードＹのリンクテーブル２２に登録されているか否かをチェックする。この例では、図１３（ｃ）に示すように、ノードＹのリンンクテーブルに「ノードＺ」は登録されていない。この場合、ノードＹは、ノードＺからの電波を受信できないと判定する。すなわち、ノードＹは、ノードＺが隠れ端末であると判定する。そうすると、ノードＹは、図１３（ｄ）に示すノードＹのルーティングテーブルにおいて「隠れ端末重み＝１０」を書き込む。さらに、ノードＹは、「経路重み」「リンク重み」「隠れ端末重み」の和を計算することにより、「評価値＝２６」を得る。
【００９５】
ノードＸは、ノードＧからＨｅｌｌｏパケットＧを受信すると、リンクテーブル２２およびルーティングテーブル２１を更新する。ここで、ノードＸは、上述した手順１において、ノードＺから受信したＨｅｌｌｏパケットＺに基づいて、リンクテーブル２２にノードＸ、Ｚ間のリンク情報を既に登録している。そして、ノードＸは、ノードＧから受信したＨｅｌｌｏパケットＧに基づいて、図１３（ｃ）に示すように、ノードＸ、Ｇ間のリンクを表すリンク情報をリンクテーブル２２に追加する。
【００９６】
また、ノードＸは、図１３（ｄ）に示すように、ノードＸからノードＧ、Ｚへの経路についての経路情報および品質情報をルーティングテーブル２１に登録する。ここで、ノードＸからノードＧへの経路の経路情報および品質情報は、リンク重みおよび評価値が異なるが、基本的に、上述したノードＹからノードＧへの経路と同じである。したがって、この経路について説明は省略する。
【００９７】
一方、ノードＸからノードＺへの経路の経路情報および品質情報は以下の内容を表す。
【００９８】
（１）宛先は、ノードＺ
（２）ノードＸから宛先ノードＺへの経路において、ネクストホップはノードＧ
（３）ネクストホップノードＧから宛先ノードＺまでの経路重みは「１０」
（４）ノードＹからネクストホップノードＧまでのリンク重みは「９」
（５）隠れ端末なし（隠れ端末重み＝０）
（６）ノードＹから宛先ノードＺまでの評価値は「１９」
【００９９】
ここで、ノードＸは、ノードＹと同様に、隠れ端末の有無を検出する。この例では、ノードＸは、まず、宛先ノードＺについてネクストホップの転送先を特定する。この場合、図１３（ｄ）に示すノードＸのルーティングテーブルにおいて、「宛先ノード＝Ｚ」に対して「隣接ノード＝Ｇ」が記録されている。よって、ノードＸからノードＺへ向かう経路において、ネクストホップはノードＧである。また、図１３（ｂ）に示すように、ノードＧから送信されるＨｅｌｌｏパケットＧにおいて、「宛先ノード＝Ｚ」に対して「隣接ノード＝Ｚ」が記録されている。よって、ノードＹからノードＺへ向かう経路においても、ネクストホップ（すなわち、ノードＧ）の転送先は、ノードＺである。このようにして、ノードＸは、ノードＺを宛先とする経路において、ネクストホップの転送先として「ノードＺ」を特定する。
【０１００】
続いて、ノードＸは、上述のようにして特定したネクストホップの転送先（すなわち、ノードＺ）が、ノードＸのリンクテーブル２２に登録されているか否かをチェックする。この例では、図１３（ｃ）に示すように、ノードＸのリンンクテーブルに「ノードＺ」が登録されている。この場合、ノードＸはノードＺからの電波を受信でき、また、ノードＺはノードＸからの電波を受信できる。すなわち、ノードＸは、「ノードＺは隠れ端末ではない」と判定する。そうすると、図１３（ｄ）に示すノードＸのルーティングテーブルにおいて、「宛先ノード＝Ｚ」に対応する「隠れ端末重み」として「０」が設定される。したがって、ノードＸは、「経路重み」「リンク重み」「隠れ端末重み」の和を計算することにより、「評価値＝１９」を得る。
【０１０１】
このように、各ノード装置は、宛先ノードへの経路において、ネクストホップの転送先が隠れ端末であるか否かを判定する。ここで、ネクストホップの転送先が隠れ端末であるときは、図１を参照しながら説明したように、パケット衝突が発生して通信効率が低下する。このため、ノード装置は、宛先ノードへの経路においてネクストホップの転送先が隠れ端末であれば、その経路についての評価値に「隠れ端末重み」を加算することにより、評価値を大きくする。この結果、この経路の優先度は低下する。
【０１０２】
一方、宛先ノードへの経路においてネクストホップの転送先が隠れ端末でなければ、ノード装置は、例えばＣＳＭＡ／ＣＡを利用してパケット衝突を回避できる。したがって、宛先ノードへの経路においてネクストホップの転送先が隠れ端末でなければ、その経路についての評価値に「隠れ端末重み」は加算されない。
【０１０３】
＜手順３（図１４）＞
手順３においては、手順２でＨｅｌｌｏパケットＧを受信した各ノード装置がＨｅｌｌｏパケットを送信する。以下、ノードＸがＨｅｌｌｏパケットＸを送信し、ノードＹがＨｅｌｌｏパケットＹを送信する手順について説明する。
【０１０４】
ノードＸは、図１４（ａ）および図１４（ｂ）に示すように、ノードＧ、Ｚ、Ａを宛先とする経路情報／品質情報を含むＨｅｌｌｏパケットＸを生成して送信する。ＨｅｌｌｏパケットＸに格納される各宛先ノードについての経路情報／品質情報は、図１３（ｄ）に示すノードＸのルーティングテーブル２１から生成される。ただし、往路リンク評価値は、図１３（ｃ）に示すノードＸのリンクテーブル２２が参照される。なお、図１３（ｄ）においては、ノードＡを宛先とする情報は省略されている。
【０１０５】
同様に、ノード装置Ｙは、図１４（ａ）および図１４（ｂ）に示すように、ノードＧ、Ｚ、Ａを宛先とする経路情報／品質情報を含むＨｅｌｌｏパケットＹを送信する。ＨｅｌｌｏパケットＹに格納される各宛先についての経路情報／品質情報は、図１３（ｄ）に示すノードＹのルーティングテーブル２１および図１３（ｃ）に示すノードＹのリンクテーブル２２から生成される。
【０１０６】
ノードＡは、ノードＸからＨｅｌｌｏパケットＸを受信し、ノードＹからＨｅｌｌｏパケットＹを受信する。そうすると、ノードＡは、ＨｅｌｌｏパケットＸ、Ｙに基づいて、リンクテーブル２２およびルーティングテーブル２１を更新する。この例では、ノードＡは、図１４（ｃ）に示すように、ノードＡ、Ｘ間のリンクを表すリンク情報、およびノードＡ、Ｙ間のリンクを表すリンク情報をリンクテーブル２２に登録する。
【０１０７】
また、ノードＡは、ＨｅｌｌｏパケットＸ、Ｙに基づいて、ノードＡから各宛先ノードへの経路についての経路情報および品質情報を登録する。図１４（ｄ）においては、ノードＡからノードＺへ向かう２つの経路について、それぞれ経路情報および品質情報が示されている。なお、図１４（ｄ）においては、他の宛先ノードについて情報は省略されている。
【０１０８】
ノードＡからノードＸを経由してノードＺへ向かう経路の経路情報および品質情報は以下の内容を表す。
【０１０９】
（１）宛先は、ノードＺ
（２）ノードＡから宛先ノードＺへの経路において、ネクストホップはノードＸ
（３）ネクストホップノードＸから宛先ノードＺまでの経路の重みは「１９」
（４）ノードＡからネクストホップノードＸまでのリンク重みは「５」
（５）隠れ端末あり（隠れ端末重み＝１０）
（６）ノードＡから宛先ノードＺまでの評価値は「３４」
【０１１０】
「隣接ノード（すなわち、ネクストホップノード）＝Ｘ」は、ＨｅｌｌｏパケットＸの送信元を検出することによって得られる。「経路重み＝１９」は、ＨｅｌｌｏパケットＸに格納されている「宛先ノード＝Ｚ」に対応する「評価値」から得られる。「リンク重み＝５」は、図１４（ｃ）に示すノードＡのリンクテーブル２２から得られる。「隠れ端末重み」は、図１３を参照しながら説明したように、ネクストホップの転送先がリンクテーブル２２に登録されているか否かに基づいて判定される。この経路においては、ネクストホップはノードＸであり、その転送先はノードＧである。ところが、図１４（ｃ）に示すように、ノードＡのリンクテーブル２２にノードＧは登録されていない。よって、「隠れ端末重み＝１０」が得られる。したがって、ノードＡからノードＸを経由してノードＺへ向かう経路について、「経路重み」「リンク重み」「隠れ端末重み」を加算することにより、「評価値＝３４」が得られる。
【０１１１】
同様に、ノードＡからノードＹを経由してノードＺへ向かう経路の経路情報および品質情報は以下の内容を表す。
【０１１２】
（１）宛先は、ノードＺ
（２）ノードＡから宛先ノードＺへの経路において、ネクストホップはノードＹ
（３）ネクストホップノードＹから宛先ノードＺまでの経路の重みは「２６」
（４）ノードＡからネクストホップノードＹまでのリンク重みは「５」
（５）隠れ端末あり（隠れ端末重み＝１０）
（６）ノードＡから宛先ノードＺまでの評価値は「４１」
【０１１３】
「隣接ノード（すなわち、ネクストホップノード）＝Ｙ」は、ＨｅｌｌｏパケットＹの送信元を検出することによって得られる。「経路重み＝２６」は、ＨｅｌｌｏパケットＹに格納されている「宛先ノード＝Ｚ」に対応する「評価値」から得られる。「リンク重み＝５」は、図１４（ｃ）に示すノードＡのリンクテーブル２２から得られる。「隠れ端末重み」は、上述のように、ネクストホップの転送先がリンクテーブル２２に登録されているか否かに基づいて判定される。この経路においては、ネクストホップはノードＹであり、その転送先はノードＧである。ところが、図１４（ｃ）に示すように、ノードＡのリンクテーブル２２にノードＧは登録されていない。よって、「隠れ端末重み＝１０」が得られる。したがって、ノードＡからノードＹを経由してノードＺへ向かう経路について、「経路重み」「リンク重み」「隠れ端末重み」を加算することにより、「評価値＝４１」が得られる。
【０１１４】
ノードＡは、宛先ノードごとに、最適な経路を選択する。このとき、ルーティングテーブル２１の「評価値」が最小となっている経路が、最適経路として選択される。したがって、図１４に示す例では、ノードＡは、ノードＺを宛先とする経路として、ノードＸを経由する経路を選択する。
【０１１５】
ここで、ノードＡからノードＸを経由してノードＺへ至る経路（以下、経路Ａ／Ｘ／Ｚと呼ぶ）、およびノードＡからノードＹを経由してノードＺへ至る経路（以下、経路Ａ／Ｙ／Ｚと呼ぶ）を比較する。経路Ａ／Ｘ／Ｚのリンク重みの和Ｗ（A/X/Z）、および経路Ａ／Ｘ／Ｚのリンク重みの和Ｗ（A/Y/Z）は、図５に示す例では、それぞれ下記の通りである。
【０１１６】
Ｗ（A/X/Z）＝ (5+5)/2 + (9+9)/2 + (11+9)/2 ＝２４
Ｗ（A/Y/Z）＝ (6+4)/2 + (6+6)/2 + (11+9)/2 ＝２１
【０１１７】
すなわち、リンク重みのみを考慮すると、経路Ａ／Ｘ／Ｚよりも経路Ａ／Ｙ／Ｚの方が評価値は小さい。また、ノードＡにとって、ノードＧが隠れ端末であることは、経路Ａ／Ｘ／Ｚおよび経路Ａ／Ｙ／Ｚにおいて同じである。
【０１１８】
しかし、経路Ａ／Ｘ／Ｚにおいては、ノードＸにとってノードＺは隠れ端末ではないので、ノードＸにおいて、ノードＺに係わる隠れ端末重みはゼロである。これに対して、経路Ａ／Ｙ／Ｚにおいては、ノードＹにとってノードＺは隠れ端末なので、ノードＹにおいて、ノードＺに係わる「隠れ端末重み＝１０」が加算される。この結果、ノードＡにおいて宛先ノードＺについて最終的に得られる評価値は、経路Ａ／Ｘ／Ｚよりも経路Ａ／Ｙ／Ｚの方が大きくなる。
【０１１９】
ここで、実施形態のアドホックネットワークにおいて、各ノード装置は、パケットの宛先に基づいてルーティングテーブル２１を参照し、その宛先に対応する経路の中で評価値が最小の経路を選択する。したがって、ノードＡは、ノードＺを宛先とするパケットを生成または受信したときは、図１４（ｄ）に示すルーティングテーブルから経路Ａ／Ｘ／Ｚを選択する。すなわち、ノードＡは、上記パケットをノードＸへ送信する。そうすると、このパケットは、ノードＸおよびノードＧを経由してノードＺへ伝送される。このとき、ノードＸおよびノードＺは、ＣＳＭＡ／ＣＡを利用して送信タイミングを制御するので、ノードＧにおけるパケット衝突は回避または抑制される。
【０１２０】
このように、実施形態の経路決定方法によれば、アドホックネットワークがパケットを宛先へ転送する際、隠れ端末が存在する経路は選択されにくく、隠れ端末が存在しない経路は選択されやすい。このため、実施形態のアドホックネットワークにおいては、パケット衝突が抑制され、通信効率が向上する。
【０１２１】
なお、図１２〜図１４に示す実施例では、経路情報がノード装置を伝搬する過程で、隠れ端末重みが累積的に加算される。例えば、図１３においてノードＹによってノードＺに対応する隠れ端末重みが加算され、さらに図１４においてノードＡによってノードＧに対応する隠れ端末重みが加算される。したがって、宛先ノードまでの経路上で隠れ端末が多くなると、その経路の評価地が大きくなり、その経路は最適経路として選択されにくくなる。
【０１２２】
次に、フローチャートを参照しながら、リンクテーブル２２を更新する処理、ルーティングテーブル２１を更新する処理、評価値を算出する処理、パケットを送信する処理について説明する。
【０１２３】
図１５は、リンクテーブル２２を更新する処理を示すフローチャートである。この処理は、各ノードにおいて、リンクテーブル更新部３２によって実行される。
ステップＳ１〜Ｓ２において、リンクテーブル更新部３２は、隣接ノードから送信されるＨｅｌｌｏパケットを待ち受ける。そして、リンクテーブル更新部３２は、Ｈｅｌｌｏパケットを受信すると、そのＨｅｌｌｏパケットの送信元ノードを特定する。
【０１２４】
ステップＳ３において、リンクテーブル更新部３２は、ステップＳ２で特定した送信元ノードに対応する周期テーブルが存在するか否かを判定する。対応する周期テーブルが存在しないときは、ステップＳ４において、リンクテーブル更新部３２は、送信元ノードに対応する周期テーブルを作成し、「ＩＤ＝１」で識別されるレコードを作成する。つづいて、ステップＳ５において、リンクテーブル更新部３２は、このレコードに、Ｈｅｌｌｏパケットの受信時刻を書き込む。このとき、リンクテーブル更新部３２は、例えば、初期値として受信時刻「０：００」を書き込む。さらに、ステップＳ６において、リンクテーブル更新部３２は、このレコードに、「周期」の初期値を設定する。周期の初期値は、例えば「０：００」である。ただし、リンクテーブル更新部３２は、必ずしも周期の初期値を設定する必要はない。
【０１２５】
対応する周期テーブルが既に存在するときは（ステップＳ３：Ｙｅｓ）、ステップＳ７において、リンクテーブル更新部３２は、周期テーブルの最上位に新たなレコードを追加する。つづいて、ステップＳ８において、リンクテーブル更新部３２は、新たなレコードに、Ｈｅｌｌｏパケットの受信時刻を書き込む。また、ステップＳ９において、リンクテーブル更新部３２は、ステップＳ８で新たに書き込んだ受信時刻と、直前のＨｅｌｌｏパケットの受信時刻との差分を算出し、「周期」として設定する。そして、ステップＳ１０において、リンクテーブル更新部３２は、「周期」についての標準偏差を算出する。さらに、リンクテーブル更新部３２は、周期の標準偏差から往路リンク評価値を導出する。なお、周期の標準偏差と往路リンク評価値との間の関係式は、特に限定されるものではないが、標準偏差が大きいほど評価値も大きくなるものとする。
【０１２６】
ステップＳ１１において、リンクテーブル更新部３２は、リンクテーブルにおいて、Ｈｅｌｌｏパケットの送信元ノードのレコードを新たに作成する。ただし、リンクテーブルに送信元ノードのレコードが既に存在するときは、リンクテーブル更新部３２は、送信元ノードのレコードを識別する。そして、ステップＳ１２において、リンクテーブル更新部３２は、受信したＨｅｌｌｏパケットに基づいて得られる往路リンク評価値を、リンクテーブルにおいて送信元ノードに対応づけて格納（または、上書き）する。
【０１２７】
ステップＳ１３において、リンクテーブル更新部３２は、受信したＨｅｌｌｏパケットが往路リンク評価値を含んでいるか否かを判定する。Ｈｅｌｌｏパケットが往路リンク評価値を含んでいないときは、ステップＳ１４において、リンクテーブル更新部３２は、ステップＳ１０で算出した往路リンク評価値を、「リンク重み」としてリンクテーブルに設定（または、上書き）する。
【０１２８】
Ｈｅｌｌｏパケットが往路リンク評価値を含むときは、ステップＳ１５において、リンクテーブル更新部３２は、受信したＨｅｌｌｏパケットに含まれる往路リンク評価値を、リンクテーブルの送信元ノードに対応づけて、復路リンク評価値として格納（または、上書き）する。また、ステップＳ１６において、リンクテーブル更新部３２は、往路リンク評価値および復路リンク評価値の平均を算出し、その算出結果を「リンク重み」としてリンクテーブルに設定（または、上書き）する。
【０１２９】
このように、リンクテーブル更新部３２は、隣接ノードからＨｅｌｌｏパケットを受信すると、リンクテーブル２２を更新する。この結果、各ノード装置のリンクテーブル２２には、隣接ノードとの間のリンクを表すリンク情報が格納される。
【０１３０】
図１６および図１７は、ルーティングテーブル２１を更新する処理を示すフローチャートである。この処理は、各ノードにおいて、ルーティングテーブル更新部３３により実行される。
【０１３１】
ステップＳ２１〜Ｓ２２の処理は、基本的に、ステップＳ１〜Ｓ２と同じである。ただし、ステップＳ２１〜Ｓ２２は、ルーティングテーブル更新部３３により実行される。すなわち、ルーティングテーブル更新部３３は、受信したＨｅｌｌｏパケットの送信元ノードを特定する。
【０１３２】
ステップＳ２３において、ルーティングテーブル更新部３３は、ワークテーブル２４に新たなレコードを作成する。ステップＳ２４〜Ｓ２５において、ルーティングテーブル更新部３３は、ステップＳ２２で特定した送信元ノードを、この新たなレコードの「宛先ノード」および「隣接ノード」にそれぞれ設定する。
【０１３３】
ステップＳ２６において、ルーティングテーブル更新部３３は、送信元ノードを用いてリンクテーブル２２を検索し、Ｈｅｌｌｏパケットの送信元ノードに対応する「リンク重み」を取得する。ステップＳ２７において、ルーティングテーブル更新部３３は、ワークテーブル２４において、「宛先ノード」および「隣接ノード」がＨｅｌｌｏパケットの送信元ノードと一致するレコードの「リンク重み」に、ステップＳ２６で取得したリンク重みを書き込む。
【０１３４】
ステップＳ２８において、ルーティングテーブル更新部３３は、ワークテーブル２４に作成したレコードと同一の「宛先ノード」および「隣接ノード」を有するレコードがルーティングテーブル２１に存在するか否かを判定する。ルーティングテーブル２１にそのようなレコードが存在しないときは、ステップＳ２９において、ルーティングテーブル更新部３３は、ワークテーブル２４に作成したレコードを、ルーティングテーブル２１に追加する。一方、ルーティングテーブル２１に上述のレコードが存在するときは、ステップＳ３０において、ルーティングテーブル更新部３３は、ワークテーブル２４の対応するレコードの内容で、ルーティングテーブル２１を更新する。
【０１３５】
ステップＳ３１において、ルーティングテーブル更新部３３は、Ｈｅｌｌｏパケットが情報を含んでいるか否かを判定する。Ｈｅｌｌｏパケットが情報を含んでいないときは、ステップＳ３２〜Ｓ４２はスキップされ、ルーティングテーブル更新部３３の処理はステップＳ４３に移行する。一方、Ｈｅｌｌｏパケットが情報を含むときは、ルーティングテーブル更新部３３は、各宛先ノードについてステップＳ３２〜Ｓ４２の処理を実行する。
【０１３６】
ステップＳ３２において、ルーティングテーブル更新部３３は、Ｈｅｌｌｏパケットに格納されている経路情報の「宛先ノード」または「隣接ノード」が自ノードであるか否かを判定する。「宛先ノード」または「隣接ノード」の少なくとも一方が自ノードであるときは、ステップＳ３２〜Ｓ４０はスキップされ、ルーティングテーブル更新部３３の処理はステップＳ４１に移行する。
【０１３７】
一方、「宛先ノード」および「隣接ノード」がいずれも自ノードでないときは（ステップＳ３２：Ｎｏ）、ステップＳ３３において、ルーティングテーブル更新部３３は、ワークテーブル２４に新たなレコードを作成する。そして、ステップＳ３４において、ルーティングテーブル更新部３３は、Ｈｅｌｌｏパケットに格納されている「宛先ノード」を、ステップＳ３３で作成したレコードの「宛先ノード」に書き込む。また、ステップＳ３５において、ルーティングテーブル更新部３３は、Ｈｅｌｌｏパケットの送信元ノードを、ステップＳ３３で作成したレコードの「隣接ノード」に書き込む。
【０１３８】
ステップＳ３６において、ルーティングテーブル更新部３３は、隠れ端末処理を実行する。隠れ端末処理は、後で詳しく説明するが、隠れ端末重みを決定する処理を含む。ステップＳ３７において、ルーティングテーブル更新部３３は、Ｈｅｌｌｏパケットに格納されている「評価値」を、ステップＳ３３で作成したレコードの「経路重み」に書き込む。
【０１３９】
ステップＳ３８〜Ｓ４０は、基本的に、ステップＳ２８〜Ｓ３０と同じである。すなわち、ルーティングテーブル更新部３３は、ワークテーブル２４を利用して生成した情報をルーティングテーブル２１に書き込む。
【０１４０】
ステップＳ４１〜Ｓ４２において、ルーティングテーブル更新部３３は、受信したＨｅｌｌｏパケットに格納されている各宛先ノードについての情報がすべて処理されたか否かを判定する。このとき、未処理の宛先ノードが残っていれば、ルーティングテーブル更新部３３は、Ｈｅｌｌｏパケットから次の宛先ノードの情報を取得し、ステップＳ３２に戻る。そして、Ｈｅｌｌｏパケットに格納されているすべての宛先ノードについてステップＳ３２〜Ｓ４０の処理が終了すると、ステップＳ４３において、ルーティングテーブル更新部３３は、評価値を算出してルーティングテーブル２１に格納する。
【０１４１】
図１８は、隠れ端末処理の一例を示すフローチャートである。隠れ端末処理は、図１７のステップＳ３６に相当し、ルーティングテーブル更新部３３により実行される。
ステップＳ５１において、ルーティングテーブル更新部３３は、処理対象の宛先ノードへの経路において、ネクストホップの転送先ノードを特定する。ここで、「処理対象の宛先ノード」は、図１７に示すフローチャートにおいて、Ｈｅｌｌｏパケットに経路情報が格納されている宛先ノードの中から選択された１つの宛先ノードを意味する。ネクストホップは、例えば、Ｈｅｌｌｏパケットの送信元ノードである。また、ネクストホップの転送先ノードは、例えば、Ｈｅｌｌｏパケットに格納されている、処理対象の宛先ノードについての「隣接ノード」により特定される。
【０１４２】
ステップＳ５２において、ルーティングテーブル更新部３３は、ネクストホップの転送先ノードが、リンクテーブル２２において「隣接ノード」として登録されているか否かを判定する。そして、ネクストホップの転送先ノードがリンクテーブル２２に登録されていれば、ルーティングテーブル更新部３３は、ステップＳ５３において、ワークテーブル２４の対応するレコードに「隠れ端末重み＝０」を設定する。一方、ネクストホップの転送先ノードがリンクテーブル２２に登録されていなければ、ルーティングテーブル更新部３３は、ステップＳ５４において、ワークテーブル２４の対応するレコードに「隠れ端末重み＝１０」を設定する。
【０１４３】
なお、ワークテーブル２４の内容は、図１７のステップＳ３９またはＳ４０において、ルーティングテーブル２１に書き込まれる。したがって、ルーティングテーブル更新部３３がステップＳ３９またはＳ４０を実行することにより、ルーティングテーブル２１の対応するレコードに「隠れ端末重み」が設定される。
【０１４４】
図１９は、宛先ノードについての評価値を算出する処理を示すフローチャートである。この処理は、図１７のステップＳ４３に相当し、ルーティングテーブル更新部３３により実行される。また、ルーティングテーブル更新部３３は、ルーティングテーブル２１の各レコードについて図１９のフローチャートの処理を実行する。
【０１４５】
なお、以下の説明では、ルーティングテーブル２１において、「宛先ノード」が「隣接ノード」ではないレコードにおいては、「リンク重み」が省略されているものとする。リンク重みの省略については、図７を参照しながら説明した通りである。
【０１４６】
ステップＳ６１において、ルーティングテーブル更新部３３は、ルーティングテーブル２１の処理対象レコードに「リンク重み」が格納されているか否かを判定する。処理対象レコードに「リンク重み」が格納されていれば、ステップＳ６２において、ルーティングテーブル更新部３３は、処理対象レコードに格納されている「リンク重み」を、そのレコードの「評価値」に書き込む。
【０１４７】
処理対象レコードに「リンク重み」が格納されていないときは、ステップＳ６３において、ルーティングテーブル更新部３３は、処理対象レコードの「隣接ノード」を、「宛先ノード」および「隣接ノード」として有するレコードをルーティングテーブル２１において検索する。そして、ステップＳ６４において、ルーティングテーブル更新部３３は、ステップＳ６３の検索により特定されたレコードから「リンク重み」を取得する。
【０１４８】
例えば、図１３（ｄ）に示すノードＸのルーティングテーブルにおいて、「宛先ノードＺ」を有するレコードが処理対象レコードであるものとする。この場合、処理対象レコードの「隣接ノード」は、ノードＧである。そうすると、ステップＳ６３において、このルーティングテーブルから、「宛先ノードＧ」および「隣接ノードＧ」を有するレコードが抽出される。この結果、ステップＳ６４において、「リンク重み＝９」が得られる。
【０１４９】
ステップＳ６５において、ルーティングテーブル更新部３３は、処理対象レコードの「経路重み」、ステップＳ６４で取得した「リンク重み」、ステップＳ５３〜Ｓ５４で決定した「隠れ端末重み」の和を算出する。そして、ルーティングテーブル更新部３３は、この算出結果を、「評価値」としてルーティングテーブル２１に格納する。
【０１５０】
ステップＳ６６〜Ｓ６７において、ルーティングテーブル更新部３３は、ルーティングテーブル２１に未処理のレコードが残っているか否かを判定する。そして、未処理のレコードが残っていれば、ルーティングテーブル更新部３３は、次のレコードに対してステップＳ６１〜Ｓ６５を実行する。
【０１５１】
図２０は、Ｈｅｌｌｏパケットを送信する処理を示すフローチャートである。この処理は、タイマがタイマイベント信号を生成したときに、経路情報送信部３４により実行される。なお、タイマは、所定の時間間隔でタイマイベント信号を生成する。
【０１５２】
ステップＳ７１において、経路情報送信部３４は、タイマイベント信号を待ち受ける。そして、経路情報送信部３４は、タイマイベント信号を受信すると、ステップＳ７２〜Ｓ７６を実行する。
【０１５３】
ステップＳ７２において、経路情報送信部３４は、自ノード内にルーティングテーブル２１が作成されているか否かを判定する。ルーティングテーブル２１が作成されてないときは、経路情報送信部３４は、ステップＳ７３〜Ｓ７５をスキップし、ステップＳ７６においてＨｅｌｌｏパケットを送信する。この場合、経路情報送信部３４は、空のＨｅｌｌｏパケット（すなわち、経路情報等を格納していないＨｅｌｌｏパケット）を送信する。
【０１５４】
ルーティングテーブル２１が存在するときは、ステップＳ７３において、経路情報送信部３４は、ルーティングテーブル内の各レコードを「宛先ノード」毎にグループ化する。ステップＳ７４において、経路情報送信部３４は、宛先グループ毎に、「評価値」に基づいて、各レコードに順位を付ける。このとき、宛先グループ毎に、最も評価値の小さいレコード、２番目に評価値の小さいレコード、３番目に評価値の小さいレコードに対して、それぞれ「第１位」「第２位」「第３位」が付与される。
【０１５５】
ステップＳ７５において、経路情報送信部３４は、ルーティングテーブル２１から、宛先グループ毎に、第１位のレコードを抽出する。そして、経路情報送信部３４は、各宛先グループから抽出したレコードの内容を格納するＨｅｌｌｏパケットを生成する。すなわち、各宛先ノードについて、最も評価値の小さい経路（すなわち、最も品質または効率が高い経路）についての情報がＨｅｌｌｏパケットに格納される。
【０１５６】
具体的には、経路情報送信部３４は、ルーティングテーブル２１の「宛先ノード」「隣接ノード」「隠れ端末重み」「評価値」を、それぞれ、Ｈｅｌｌｏパケットの「宛先ノード」「隣接ノード」「隠れ端末情報」「評価値」に設定する。ただし、Ｈｅｌｌｏパケットの「往路リンク評価値」は、リンクテーブル２２の対応するレコードから取得する。
【０１５７】
この後、経路情報送信部３４は、ステップＳ７６において、Ｈｅｌｌｏパケットを送信する。これにより、各ノード装置が保持する経路情報は、それぞれその隣接ノードに通知される。さらに、隣接ノードから経路情報を受信したノード装置は、その経路情報を他の隣接ノードに通知する。このようにして、経路情報は、アドホックネットワーク内の各ノード装置に通知される。
【０１５８】
このように、実施形態の経路決定方法においては、ノード装置は、宛先ノードへの最適経路の評価値を隣接ノードに通知する。このとき、経路の評価値は、リンクの品質を表すリンク重みだけでなく、隠れ端末の有無に応じて決まる隠れ端末重みを含んでいる。すなわち、ノード装置から隣接ノードへ通知される情報は、隠れ端末の影響を含んでいる。したがって、上述した経路決定方法においては、ノード装置は、必ずしも、隠れ端末が存在するか否かを直接的に表す情報を隣接ノードに通知する必要はない。例えば、図８に示すＨｅｌｌｏパケットは、必ずしも「隠れ端末情報」を格納する必要はない。
【０１５９】
なお、上述の説明では、隠れ端末重みは「１０」であるが、ネットワークの構成または運用ポリシ等に基づいて決定することが好ましい。例えば、ネットワークの通信効率がリンクの品質に強く依存する場合には、リンク重みと比較して隠れ端末重みを小さくする。或いは、ネットワークの通信効率が隠れ端末に起因するパケット衝突に強く依存する場合には、リンク重みと比較して隠れ端末重みを大きくしてもよい。
【０１６０】
＜他の実施形態（１）＞
図６〜図２０に示す実施形態では、各経路の評価値は、リンク重み（経路重みを含む）および隠れ端末重みの和で表わされる。そして、各宛先について、評価値が最小の経路が最適経路として選択される。しかし、各ノード装置は、他の基準に基づいて最適経路を選択してもよい。
【０１６１】
図２１は、他の実施形態の経路決定方法を説明する図である。なお、図２１は、あるノード装置が備えるルーティングテーブル２１を示している。このルーティングテーブル２１には、宛先ノードＧＷについての経路情報／品質情報が格納されている。
【０１６２】
図２１に示す例では、宛先ノードＧＷに対して、経路ｎ１（隣接ノードｎ１を経由する経路）、経路ｎ２（隣接ノードｎ２を経由する経路）、経路ｎ３（隣接ノードｎ３を経由する経路）、経路ｎ４（隣接ノードｎ４を経由する経路）が登録されている。また、各経路の評価値は、それぞれ、宛先ノードＧＷまでのリンク重みの和を表している。
【０１６３】
隠れ端末フラグは、ネクストホップノードの転送先ノードが隠れ端末であるか否を表している。たとえば、第１レコード（経路ｎ１）は、宛先ノードＧＷへの経路において、ネクストホップノード（隣接ノードｎ１）の転送先ノードが隠れ端末であることを表している。また、第２レコード（経路ｎ２）は、宛先ノードＧＷへの経路において、ネクストホップノード（隣接ノードｎ２）の転送先ノードが隠れ端末ではないことを表している。なお、ネクストホップノードの転送先ノードが隠れ端末か否かを判定する方法は、図６〜図２０に示す実施形態と同じである。
【０１６４】
ルーティングテーブル更新部３３は、以下の手順で、宛先ノードについて各経路の順位を決定する。
【０１６５】
（１）隠れ端末フラグがＯＦＦの経路を抽出する
（２）上記（１）で抽出された経路の中で、評価値の小さい順に「順位」を付与する
（３）残りの経路に対して、評価値の小さい順に「順位」を付与する
【０１６６】
図２１に示すルーティングテーブル２１においては、手順（１）により経路ｎ２、ｎ４が抽出される。続いて、手順（２）により、「経路ｎ２：第１位」「経路ｎ４：第２位」が得られる。さらに、手順（３）により、「経路ｎ１：第３位」「経路ｎ３：第４位」が得られる。
【０１６７】
このように、図２１に示す実施形態においても、隠れ端末が存在する経路の優先度は低くなる。すなわち、隠れ端末が存在する経路は、選択されにくくなる。なお、すべての経路において隠れ端末が存在するときは、ルーティングテーブル更新部３３は、手順（３）のみを実行する。この場合、ルーティングテーブル更新部３３は、評価値のみに基づいて経路を選択する。
【０１６８】
経路情報送信部３４は、隣接ノードにＨｅｌｌｏパケットを送信する。このＨｅｌｌｏパケットの「隠れ端末情報」には、ルーティングテーブル２１の「隠れ端末フラグ」が書き込まれる。すなわち、ノード装置は、隣接ノードに対して、隠れ端末が存在するか否かを通知する。そして、各ノード装置は、隠れ端末が存在するか否かを表す隠れ端末情報を隣接ノードから受け取ると、その隠れ端末情報を参照して宛先ノードへの最適経路を決定する。具体的には、ノード装置は、隣接ノードが隠れ端末を有するときは、その隣接ノードの優先度を低くする。
【０１６９】
＜他の実施形態（２）＞
図２２は、隠れ端末の数を考慮して経路を決定する方法を説明する図である。図２２に示す例では、ノードＡから宛先ノードＧＷへの経路として、下記の３つが存在するものとする。また、下記の３つの経路は、ノードＢのルーティングテーブル２１に登録されているものとする。
【０１７０】
経路ｎ１：ノードＢ、ｎ１、ｎ４を経由して宛先ノードＧＷへ至る経路
経路ｎ２：ノードＢ、ｎ２を経由して宛先ノードＧＷへ至る経路
経路ｎ３：ノードＢ、ｎ３、ｎ５、ｎ６を経由して宛先ノードＧＷへ至る経路
【０１７１】
また、図２２において、ノードＡは、ノードＢ、ｎ３から送信される電波を受信できるが、ノードｎ１、ｎ２から送信される電波は受信できないものとする。すなわち、ノードＡのリンクテーブル２２には、ノードＢ、ｎ３が登録されているが、ノードｎ１、ｎ２は登録されていない。
【０１７２】
更に、ノードＢは、宛先ノードＧＷについて、経路ｎ１〜ｎ３の経路情報をノードＡに通知するものとする。なお、図２０に示すフローチャートでは、経路情報送信部３４は、各宛先ノードについて最適経路の経路情報を隣接ノードに通知する。これに対して、図２２に示す実施形態では、経路情報送信部３４は、各宛先ノードについてルーティングテーブル２１に格納されている、すべてのまたは所定数の経路の経路情報を隣接ノードに通知する。
【０１７３】
ノードＡは、ノードＢから経路ｎ１〜ｎ３の経路情報を受信すると、各経路について隠れ端末の有無を検出する。この例では、ノードＡは、ノードｎ３の電波を受信できるが、ノードｎ１、ｎ２の電波を受信できない。したがって、ノードＡは、ノードｎ１、ｎ２はは隠れ端末であると判定する。すなわち、ノードＡは、ノードＢを経由する経路上に２つの隠れ端末が存在することを検出する。
【０１７４】
ノードＡのルーティングテーブル更新部３３は、隠れ端末の数に応じて隠れ端末重みを決定する。例えば、隠れ端末重みは、隠れ端末の数に比例するように決定してもよい。この場合、図２２に示す例では、ノードＡのルーティングテーブル更新部３３は、ノードＢを経由する経路の隠れ端末重みを「２０」とする。
【０１７５】
このように、隠れ端末の数を考慮して経路を決定する方法においては、隠れ端末の少ない経路を介してパケットが転送される。したがって、パケット衝突の確率が低下し、通信効率がさらに向上する。
【０１７６】
＜他の実施形態（３）＞
各ノード装置は、予め決められた特定のノード装置を宛先とする場合に限って、隠れ端末を考慮するようにしてもよい。特定のノード装置は、例えば、ゲートウェイノードである。ゲートウェイノードは、特に限定されるものではないが、アドホックネットワークの外部のサーバと接続し、アドホックネットワーク内の各ノードからデータを収集してサーバ装置へ送信する。
【０１７７】
この場合、ルーティングテーブル更新部３３は、図１７に示すステップＳ３６（隠れ端末処理）を実行する前に、宛先ノードがゲートウェイノードであるか否かを判定する。そして、宛先ノードがゲートウェイノードであるときに、ルーティングテーブル更新部３３は、ステップＳ３６の隠れ端末処理を実行する。一方、宛先ノードがゲートウェイノードでなければ、ルーティングテーブル更新部３３は、ステップＳ３６をスキップする。
【０１７８】
この方法によれば、特定のノード宛てのデータの送信効率が向上する。したがって、この方法は、あるノード装置（例えば、ゲートウェイノード）が各ノードのデータを収集するシステムにおいて特に好ましい。
【０１７９】
＜他の実施形態（４）＞
図６〜図２０に示す実施形態では、各ノード装置がそれぞれ自分のルーティングテーブルの内容を隣接ノードに通知する。これに対して、他の実施形態のアドホックネットワークにおいては、予め決められた特定のノード装置（例えば、上述のゲートウェイノード）のルーティングテーブルの内容のみが各ノードに通知される。すなわち、例えば、ゲートウェイノードは、そのゲートウェイノードを宛先とする経路情報を送信する。そして、他のノード装置は、ゲートウェイノードから送信された、ゲートウェイを宛先とする経路情報を受信して保持すると共に、その経路情報をそれぞれ隣接ノードに転送する。
【０１８０】
このようなネットワークにおいては、経路情報の送信および受信に係わるトラヒックが少なくなる。したがって、データの通信効率が向上する。特に、ゲートウェイノードが各ノードのデータを収集するシステムにおいては、各ノード装置は、ゲートウェイノード宛ての経路情報のみを有していればよいので、この方式は有用である。
【図１】
2012073312.tif 000003
【図２】
2012073312.tif 000004
【図３】
2012073312.tif 000005
【図４】
2012073312.tif 000006
【図５】
2012073312.tif 000007
【図６】
2012073312.tif 000008
【図７】
2012073312.tif 000009
【図８】
2012073312.tif 000010
【図９】
2012073312.tif 000011
【図１０】
2012073312.tif 000012
【図１１】
2012073312.tif 000013
【図１２】
2012073312.tif 000014
【図１３】
2012073312.tif 000015
【図１４】
2012073312.tif 000016
【図１５】
2012073312.tif 000017
【図１６】
2012073312.tif 000018
【図１７】
2012073312.tif 000019
【図１８】
2012073312.tif 000020
【図１９】
2012073312.tif 000021
【図２０】
2012073312.tif 000022
【図２１】
2012073312.tif 000023
【図２２】
2012073312.tif 000024
【手続補正書】
【提出日】平成25年11月18日(2013.11.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の無線通信装置が接続される無線ネットワークにおいて使用される無線通信装置であって、
自装置との間で電波の送受信が可能な隣接無線通信装置を識別する情報を記憶する記憶部と、
前記隣接無線通信装置の中の第１の無線通信装置から、前記第１の無線通信装置との間で電波の送受信が可能な第２の無線通信装置を識別する情報を取得する取得部と、
データの宛先に応じて、隣接無線通信装置を選択する選択部と、
前記選択部により選択される隣接無線通信装置へ前記データを送信する送信部と、を備え、
前記選択部は、自装置と前記第２の無線通信装置との間で電波の送受信ができずに前記第２の無線通信装置を識別する情報が前記記憶部に記憶されていないときは、前記隣接無線通信装置を選択する処理において前記第１の無線通信装置の優先度を低くする
ことを特徴とする無線通信装置。
【請求項２】
複数の無線通信装置が接続される無線ネットワークにおいて使用される無線通信装置であって、
自装置に隣接する隣接無線通信装置を識別する情報を記憶する記憶部と、
前記隣接無線通信装置の中の第１の無線通信装置から、前記第１の無線通信装置に隣接する第２の無線通信装置を識別する情報を取得する取得部と、
自装置と宛先との間の各経路について、前記宛先との間の通信品質に応じて決まる第１の重み、および前記第２の無線通信装置を識別する情報が前記記憶部に記憶されているか否かに応じて決まる第２の重み、に基づいて評価値を算出する算出部と、
前記評価値に基づいて宛先に対応する隣接無線通信装置を選択する選択部と、
前記選択部により選択される隣接無線通信装置へ前記データを送信する送信部と、
を有する無線通信装置。
【請求項３】
請求項２に記載の無線通信装置であって、
前記評価値を隣接無線通信装置へ通知する通知部をさらに備える
ことを特徴とする無線通信装置。
【請求項４】
請求項３に記載の無線通信装置であって、
前記通知部は、予め決められた時間間隔で、前記評価値を格納するデータを隣接無線通信装置へブロードキャストする
ことを特徴とする無線通信装置。
【請求項５】
請求項１に記載の無線通信装置であって、
前記選択部は、前記第２の無線通信装置を識別する情報が前記記憶部に記憶されていないときは、前記第１の無線通信装置以外の隣接無線通信装置を選択する
ことを特徴とする無線通信装置。
【請求項６】
複数の無線通信装置が接続される無線ネットワークにおいて使用される無線通信装置であって、
自装置に隣接する隣接無線通信装置を識別する情報を記憶する記憶部と、
前記隣接無線通信装置の中の第１の無線通信装置から、前記第１の無線通信装置に隣接する第２の無線通信装置を識別する情報を取得する取得部と、
データの宛先に応じて、隣接無線通信装置を選択する選択部と、
前記選択部により選択される隣接無線通信装置へ前記データを送信する送信部と、を備え、
前記選択部は、前記隣接無線通信装置を選択する処理において、前記記憶部に識別情報が記憶されていない第２の無線通信装置の数が多いほど、前記第１の無線通信装置の優先度を低くする
ことを特徴とする無線通信装置。
【請求項７】
複数の無線通信装置が接続される無線ネットワークにおいて使用される無線通信装置であって、
自装置に隣接する隣接無線通信装置を識別する情報を記憶する記憶部と、
前記隣接無線通信装置の中の第１の無線通信装置から、前記第１の無線通信装置に隣接する第２の無線通信装置を識別する情報を取得する取得部と、
データの宛先に応じて、隣接無線通信装置を選択する選択部と、
前記選択部により選択される隣接無線通信装置へ前記データを送信する送信部と、を備え、
前記選択部は、前記隣接無線通信装置を選択する処理において、予め決められた所定の宛先についてのみ、前記第２の無線通信装置を識別する情報が前記記憶部に記憶されているか否かに応じて、前記第１の無線通信装置の優先度を調整する
ことを特徴とする無線通信装置。
【請求項８】
複数の無線通信装置が接続される無線ネットワークにおいて使用される経路決定方法であって、
前記複数の無線通信装置の中の１つの無線通信装置において、
自装置との間で電波の送受信が可能な隣接無線通信装置を識別する情報を記憶部に記憶し、
前記隣接無線通信装置の中の第１の無線通信装置から、前記第１の無線通信装置との間で電波の送受信が可能な第２の無線通信装置を識別する情報を取得し、
前記第２の無線通信装置を識別する情報が前記記憶部に記憶されているか否かを判定し、
自装置と前記第２の無線通信装置との間で電波の送受信ができずに前記第２の無線通信装置を識別する情報が前記記憶部に記憶されていないときは、前記第１の無線通信装置を経由する経路の優先度を低くする
ことを特徴とする経路決定方法。
【請求項９】
請求項８に記載の経路決定方法であって、
各無線通信装置は、それぞれ、宛先と前記宛先への経路が経由する隣接無線通信装置との対応関係を記録する経路表を備え、
前記複数の無線通信装置の中の特定無線通信装置は、前記特定無線通信装置を宛先とする経路表を送信し、
各無線通信装置は、前記特定無線通信装置を宛先とする経路表を保持すると共に、前記特定無線通信装置を宛先とする経路表を隣接無線通信装置へ転送する
ことを特徴とする経路決定方法。
【国際調査報告】
2012073312.tif 000025
2012073312.tif 000026
2012073312.tif 000027
2012073312.tif 000028
2012073312.tif 000029
2012073312.tif 000030