JPWO2012073312A1 - 無線通信装置および無線ネットワークにおける経路決定方法 - Google Patents

無線通信装置および無線ネットワークにおける経路決定方法 Download PDF

Info

Publication number
JPWO2012073312A1
JPWO2012073312A1 JP2012546594A JP2012546594A JPWO2012073312A1 JP WO2012073312 A1 JPWO2012073312 A1 JP WO2012073312A1 JP 2012546594 A JP2012546594 A JP 2012546594A JP 2012546594 A JP2012546594 A JP 2012546594A JP WO2012073312 A1 JPWO2012073312 A1 JP WO2012073312A1
Authority
JP
Japan
Prior art keywords
node
wireless communication
communication device
route
link
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012546594A
Other languages
English (en)
Other versions
JP5464278B2 (ja
Inventor
健太郎 池本
健太郎 池本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Application granted granted Critical
Publication of JP5464278B2 publication Critical patent/JP5464278B2/ja
Publication of JPWO2012073312A1 publication Critical patent/JPWO2012073312A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/005Discovery of network devices, e.g. terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/02Communication route or path selection, e.g. power-based or shortest path routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/02Communication route or path selection, e.g. power-based or shortest path routing
    • H04W40/12Communication route or path selection, e.g. power-based or shortest path routing based on transmission quality or channel quality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/24Connectivity information management, e.g. connectivity discovery or connectivity update
    • H04W40/248Connectivity information update
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/18Self-organising networks, e.g. ad-hoc networks or sensor networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

無線ネットワークにおいて使用される無線通信装置は、記憶部、取得部、選択部、送信部を備える。記憶部は、自装置に隣接する隣接無線通信装置を識別する情報を記憶する。取得部は、隣接無線通信装置の中の第1の無線通信装置から、第1の無線通信装置に隣接する第2の無線通信装置を識別する情報を取得する。選択部は、データの宛先に応じて、隣接無線通信装置を選択する。送信部は、選択部により選択される隣接無線通信装置へデータを送信する。選択部は、第2の無線通信装置を識別する情報が記憶部に記憶されていないときは、隣接無線通信装置を選択する処理において第1の無線通信装置の優先度を低くする。

Description

本発明は、無線ネットワークにおいて使用される無線通信装置および無線ネットワークにおける経路決定方法に係わる。
近年、各無線端末が自律的に相互に接続するアドホックネットワークの研究が進められている。アドホックネットワークにおいては、アクセスポイントは設置されず、各無線端末が経路情報を有する。そして、各無線端末は、ある隣接端末から受信したパケットを、経路情報に基づいて他の隣接端末へ中継する。この構成により、アドホックネットワークは、所望の宛先へパケットを送信できる。
ところで、アドホックネットワークにおいては、電波強度の変化や無線端末の移動などに伴い、ネットワーク環境が頻繁に変化する。このため、アドホックネットワークに接続する各無線端末は、他の無線端末との間で通信を行う前に経路制御を行う。例えば、アドホックネットワークに新たに接続した無線端末は、隣接する無線端末へ存在情報をブロードキャストする。存在情報を受信した無線端末は、その存在情報に対応する経路情報を生成し、さらに、その経路情報を隣接無線端末へ送信する。この結果、新たな無線端末に係わる経路情報は、ネットワーク上の無線端末に通知される。
なお、関連する技術として、下記の経路情報中継方法が提案されている。すなわち、アドホックネットワークに接続するノード各々は、隣接ノードから経路情報を受信する。ノード各々は、受信した経路情報について、経路情報で示される経路の品質を示す品質情報を取得する。ノード各々は、受信した経路情報について、パケットの宛先となるノードが同一である経路情報が複数受信されているか否かを、所定の周期ごとに判定する。ノード各々は、判定した結果、宛先となるノードが同一である経路情報が複数受信されている場合には、複数受信された経路情報各々について品質情報各々を比較し、比較の結果最も高い品質であることを示す品質情報に対応する経路情報を選択する。ノード各々は、選択した経路情報を、隣接ノードに対して中継する。(例えば、特許文献1)
特開2009−267532号公報
従来のアドホックネットワークにおいては、隠れ端末に起因する問題への対策が十分でなかった。以下、図1を参照しながら、隠れ端末に起因する問題について説明する。
図1に示すアドホックネットワークには、ノードGW、A〜Eが接続されている。ここで、ノードAは、ノードGWと良好な通信を行うことができるものとする。ノードB、Cは、ノードGWからの電波を受信できるが、ノードGWとの通信の品質は良好ではない。ノードD、Eは、ノードGWからの電波を受信できない。そして、ノードGWは、各ノードA〜Eからデータを収集するものとする。
上記アドホックネットワークにおいて、ノードBは、下記の経路情報を保持しているものとする。
「データパケットの宛先がノードGWであるときは、そのデータパケットをノードAへ送信する」
この場合、ノードBは、ノードGW宛てのデータパケットを生成すると、そのデータパケットをノードAへ送信する。そうすると、ノードAは、ノードBから受信したデータパケットをノードGWへ転送する。これにより、ノードGWは、ノードBのデータを受信する。このとき、ノードGWは、受信したデータパケットに対応するACKパケットをノードAへ返送する。以降、ノードBは、必要に応じて、同様の経路でノードGWへデータパケットを送信するものとする。このとき、ノードAは、ノードBからデータパケットを受信すると共に、ノードGWからACKパケットを受信する。ただし、ノードGWおよびノードBは、相互に通信可能である。よって、ノードGWおよびノードBは、例えばCSMA/CA(Carrier Sense Multiple Access Collision Avoidance)を利用して、互いに送信タイミングを制御することができる。この結果、ノードAにおけるパケット衝突が回避または抑制される。
また、ノードDは、下記の経路情報を保持しているものとする。
「データパケットの宛先がノードGWであるときは、そのデータパケットをノードAへ送信する」
この場合、ノードDは、ノードBと同様に、ノードAへデータパケットを送信する。そうすると、ノードAは、受信したデータパケットをノードGWへ転送し、ノードGWは、受信したデータパケットに対応するACKパケットをノードAへ返送する。このケースでは、ノードAは、ノードDからデータパケットを受信すると共に、ノードGWからACKパケットを受信する。
しかしながら、ノードGWからの電波はノードDには届かない。また、ノードDからの電波はノードGWには届かない。すなわち、ノードGWにとってノードDは「隠れ端末」であり、ノードDにとってノードGWは「隠れ端末」である。したがって、ノードGWおよびノードDは、パケット衝突を回避するための送信タイミング制御を行うことができない。この結果、ノードDが、ノードGWを宛先とするデータパケットをノードAへ送信すると、ノードAにおいてパケット衝突が発生し得る。
ここで、ノードDは、他のノード(例えば、ノードE)から送信された、ノードGWを宛先とするデータパケットを中継することができる。この場合、ノードDは、ノードEから送信されたデータパケットをノードAへ転送し、ノードAは、そのデータパケットをノードGWへ転送する。したがって、この場合も、ノードAにおいてパケット衝突が発生し得る。
このように、各ノード(無線端末)が、隠れ端末を考慮することなく、単純に経路情報に従ってパケットを転送すると、パケット衝突の発生頻度が高くなる。そして、パケット衝突の発生頻度が高くなると、通信速度が低下し、輻輳が発生するおそれがある。すなわち、従来技術においては、隠れ端末に起因する問題への対策が十分ではなく、通信効率が低下することがあった。
本発明の課題は、無線ネットワークの通信効率を向上させることである。
本発明の1つの態様に係る無線通信装置は、複数の無線通信装置が接続される無線ネットワークにおいて使用され、自装置に隣接する隣接無線通信装置を識別する情報を記憶する記憶部と、前記隣接無線通信装置の中の第1の無線通信装置から、前記第1の無線通信装置に隣接する第2の無線通信装置を識別する情報を取得する取得部と、データの宛先に応じて、隣接無線通信装置を選択する選択部と、前記選択部により選択される隣接無線通信装置へ前記データを送信する送信部と、を備える。前記選択部は、前記第2の無線通信装置を識別する情報が前記記憶部に記憶されていないときは、前記隣接無線通信装置を選択する処理において前記第1の無線通信装置の優先度を低くする。
本発明の1つの態様に係る経路決定方法は、複数の無線通信装置が接続される無線ネットワークにおいて使用され、無線通信装置に隣接する隣接無線通信装置を識別する情報を記憶部に記憶し、前記隣接無線通信装置の中の第1の無線通信装置から、前記第1の無線通信装置に隣接する第2の無線通信装置を識別する情報を取得し、前記第2の無線通信装置を識別する情報が前記記憶部に記憶されているか否かを判定し、前記第2の無線通信装置を識別する情報が前記記憶部に記憶されていないときは、前記第1の無線通信装置を経由する経路の優先度を低くする。
開示の装置または方法によれば、無線ネットワークの通信効率が向上する。
隠れ端末に起因する問題を説明する図である。 実施形態の無線ネットワークの構成を説明する図である。 ノード装置の構成を示す図である。 ノード装置の機能を説明するブロック図である。 リンク重みについて説明する図である。 リンクテーブルの一例を示す図である。 ルーティングテーブルの一例を示す図である。 Helloパケットのフォーマットを示す図である。 リンクテーブルおよびルーティングテーブルの生成について説明する図である。 周期テーブルの実施例を示す図である。 ノード装置の処理手順の概要を示す図である。 経路決定方法の実施例を示す図(その1)である。 経路決定方法の実施例を示す図(その2)である。 経路決定方法の実施例を示す図(その3)である。 リンクテーブルを更新する処理を示すフローチャートである。 ルーティングテーブルを更新する処理を示すフローチャート(その1)である。 ルーティングテーブルを更新する処理を示すフローチャート(その2)である。 隠れ端末処理の一例を示すフローチャートである。 評価値を算出する処理を示すフローチャートである。 Helloパケットを送信する処理を示すフローチャートである。 他の実施形態の経路決定方法を説明する図である。 隠れ端末の数を考慮して経路を決定する方法を説明する図である。
図2は、実施形態の無線ネットワークの構成を説明する図である。実施形態の無線ネットワークは、アドホックネットワークであり、複数の無線端末が接続されている。以下の説明では、各無線端末のことを「ノード装置」または単に「ノード」と呼ぶことがある。図2に示す例では、無線ネットワークは、ノードn1〜n14を備えている。
図2において、ノード間を接続する破線は、無線リンクを表す。例えばノードn6は、ノードn3、n5、n10、n11との間に無線リンクを有している。すなわち、ノードn6から送信される電波(すなわち、無線信号)は、ノードn3、n5、n10、n11に到達し、また、ノードn3、n5、n10、n11からそれぞれ送信される電波は、ノードn6に到達する。なお、以下の説明では、無線リンクで相互に接続される1組のノードは、互いに「隣接」しているものとする。すなわち、ノードn3、n5、n10、n11は、ノードn6に隣接している。換言すれば、ノードn3、n5、n10、n11は、ノードn6の「隣接ノード」である。
各ノードは、定期的に、Helloパケットをブロードキャストする。ただし、この実施形態では、「ブロードキャスト」は、すべてのノードにパケットを送信するものではなく、すべての隣接ノードにパケットを送信することを意味する。したがって、例えば、ノードn6は、ノードn3、n5、n10、n11へHelloパケットを送信する。このとき、各ノードn3、n5、n10、n11は、ノードn6から受信したHelloパケットを他のノードへは転送しない。
Helloパケットは、ノードが存在することを他のノードに通知するために使用される。例えば、ノードn6がHelloパケットをブロードキャストすると、ノードn3、n5、n10、n11は、そのHelloパケットを受信する。そうすると、ノードn3は、隣接ノードとしてノードn6が存在することを認識する。ノードn5、n10、n11も同様に、隣接ノードとしてノードn6が存在することを認識する。
Helloパケットは、上述したように、各ノードから送信される。したがって、例えば、ノードn3がHelloパケットを送信すると、ノードn1、n2、n6がそのHelloパケットを受信する。このとき、各ノードn1、n2、n6は、隣接ノードとしてノードn3が存在することを認識する。このようにして、各ノードは、自ノードに隣接するノードを認識する。
図3は、ノード装置(すなわち、無線端末)の構成を示す図である。ノード装置1は、通信部10、記憶部20、制御部30を備える。通信部10は、アンテナ、送信機、受信機を備え、無線インタフェースを提供する。記憶部20は、例えば半導体メモリであり、制御部30によって使用される。また、記憶部20は、不揮発性メモリを含む。制御部30は、CPUを含み、ノード装置1の動作を制御する。なお、特に図示しないが、ノード装置1は、入力デバイスを接続するための入力インタフェースおよび/または出力デバイスを接続するための出力インタフェースを備えるようにしてもよい。
図4は、ノード装置の機能を説明するブロック図である。なお、図4においては、無線ネットワークの構築に直接的に係わらない機能については省略されている。
記憶部20は、制御部30により処理されるデータを記憶する。また、記憶部20は、ルーティングテーブル21、リンクテーブル22、周期テーブル23、ワークテーブル24を格納する。
ルーティングテーブル21は、経路情報を格納する。経路情報は、宛先となる無線端末にパケットを送信する経路を表す。換言すると、経路情報は、パケットの宛先ノードとパケットを中継する隣接ノードとの対応関係を表す。また、ルーティングテーブル21は、経路情報により特定される経路の品質を表す品質情報も記憶する。なお、ルーティングテーブル21は、経路情報受信部31がHelloパケットを受信したときに、ルーティングテーブル更新部33により更新される。
リンクテーブル22は、リンク情報を格納する。リンク情報は、自ノードと隣接ノードとの間のリンクの品質を表す。なお、リンクテーブル22は、経路情報受信部31がHelloパケットを受信したときに、リンクテーブル更新部32により更新される。
周期テーブル23は、各隣接ノードについて周期情報を格納する。周期情報は、隣接ノードから送信されるHelloパケットの受信周期を表す。なお、周期テーブル23は、経路情報受信部31がHelloパケットを受信したときに、リンクテーブル更新部32により更新される。周期情報は、この例では、隣接ノードとの間のリンクの評価値またはリンク重みを計算するために使用される。ワークテーブル24は、ルーティングテーブル21と同じ構造を有し、ルーティングテーブル21に格納するための経路情報および品質情報を一時的に格納する。
制御部30は、経路情報受信部31、リンクテーブル更新部32、ルーティングテーブル更新部33、経路情報送信部34、パケット送受信部35を備える。なお、制御部30は、この例では、プロセッサを用いてプログラムを実行することにより、経路情報受信部31、リンクテーブル更新部32、ルーティングテーブル更新部33、経路情報送信部34、パケット送受信部35を実現する。この場合、プログラムは、記憶部20の不揮発性メモリ内に予め格納されてもよい。また、プログラムは、可搬型の記録媒体からノード装置1に提供されるようにしてもよい。可搬型の記録媒体は、例えば、CD−ROM、DVD、USBメモリ等の半導体メモリである。さらに、プログラムサーバからノード装置1へプログラムを提供してもよい。
経路情報受信部31は、隣接ノードからHelloパケットを受信し、そのHelloパケットから経路情報を取得する。なお、後で説明するが、Helloパケットは、ノードが存在することを通知するために使用されると共に、経路情報を伝送するためにも使用される。また、経路情報受信部31は、受信したHelloパケットを、リンクテーブル更新部32およびルーティングテーブル更新部33に渡す。
リンクテーブル更新部32は、リンクテーブル22に格納されているリンク情報を更新する。ここで、リンクテーブル更新部32は、経路情報受信部31から受け取るHelloパケットに基づいて、リンクテーブル22に格納されているリンク情報を更新する。また、リンクテーブル更新部32は、リンク情報の更新に際して、周期テーブル23に格納されている周期情報を更新し、更新した周期情報に基づいてリンク情報を更新する。
ルーティングテーブル更新部33は、ルーティングテーブル21に格納されている経路情報を更新する。具体的には、ルーティングテーブル更新部33は、経路情報受信部31から受け取るHelloパケットに基づいて、ルーティングテーブル21に格納されている経路情報を更新する。
経路情報送信部34は、ルーティングテーブル21に格納されている経路情報およびリンクテーブル22に格納されているリンク情報に基づいて、Helloパケットを生成する。そして、経路情報送信部34は、生成したHelloパケットを隣接ノードへブロードキャストする。
パケット送受信部35は、隣接ノードからパケットを受信する。また、パケット送受信部35は、ルーティングテーブル21を参照し、受信パケットの宛先に対応する隣接ノードを特定する。そして、パケット送受信部35は、特定した隣接ノードへ、受信パケットを送信する。
なお、リンクテーブル22は、隣接無線端末を識別する情報を記憶する記憶部の一例である。経路情報受信部31は、第1の無線端末に隣接する第2の無線端末を識別する情報を取得する取得部の一例である。ルーティングテーブル更新部33は、宛先ごとに対応する隣接無線端末を選択する選択部の一例である。パケット送受信部35は、選択部により選択される隣接無線端末へパケットを送信する送信部の一例である。経路情報送信部34は、評価値を隣接無線端末へ通知する通知部の一例である。
図5は、リンク重みについて説明する図である。なお、図5においては、無線ネットワークが備える多数のノードの中の一部のノード(G、X、Y、Z、A)のみが描かれている。
ノードG、Xは、それぞれノードZに隣接している。ノードX、Y、Zは、それぞれノードGに隣接している。ノードG、Z、Aは、それぞれノードXに隣接している。ノードG、Aは、それぞれノードYに隣接している。ノードX、Yは、それぞれノードAに隣接している。なお、「隣接」は、ノード間で相互に電波が到達することを表す。
リンク重みは、ノード間の無線リンクの品質または通信コストを表す指標である。この実施形態では、品質の良いリンクのリンク重みは小さく、品質の悪いリンクのリンク重みは大きい。また、ノード間のリンク重みは、1組のリンク評価値に基づいて算出される。例えば、ノードGからノードZへ向かうリンクの評価値は「9」であり、ノードZからノードGへ向かうリンクの評価値は「11」である。そして、ノード間のリンク重みは、1組のリンク評価値の平均で表わされる。よって、ノードG、Z間のリンク重みは「10」である。同様に、ノードX、Z間のリンク重みは「100」である。すなわち、このケースは、ノードX、Z間のリンクよりも、ノードG、Z間のリンクの方が、品質が良いことを表している。なお、リンク評価値の検出方法については、後で説明する。
図6は、リンクテーブル22の一例を示す。なお、図6は、図5に示すノードGが有するリンクテーブル22を示している。
リンクテーブル22には、隣接ノードとの間のリンクについてのリンク情報が登録される。リンク情報は、「隣接ノード」「往路リンク評価値」「復路リンク評価値」「リンク重み」を含む。「隣接ノード」は、リンクの接続先のノードを識別する。「往路リンク評価値」は、隣接ノードにとっての往路リンクの品質を表す。「復路リンク評価値」は、隣接ノードにとっての復路リンクの品質を表す。「リンク重み」は、「往路リンク評価値」および「復路リンク評価値」の平均を表す。
例えば、図6に示す第1レコードに登録されているリンク情報は、以下の内容を表している。
隣接ノード:Z
往路リンク評価値(ノードZからノードGへ向かうリンクの品質):11
復路リンク評価値(ノードGからノードZへ向かうリンクの品質):9
リンク重み(ノードGとノードZとの間のリンクの品質):10
図7は、ルーティングテーブル21の一例を示す。なお、図7は、図5に示すノードYが有するルーティングテーブル21を示している。
ルーティングテーブル21には、宛先ノードごとに経路情報および品質情報が登録される。具体的には、ルーティングテーブル21には、「宛先ノード」「隣接ノード」「経路重み」「リンク重み」「隠れ端末重み」「評価値」が登録される。「宛先ノード」は、パケットの宛先ノードを識別する。「隣接ノード」は、宛先ノードへパケットを送信するための最適な経路上に位置する隣接ノードを表す。「経路重み」は、「隣接ノード」から「宛先ノード」までの経路の通信コストを表す。具体的には、「経路重み」は、「隣接ノード」から「宛先ノード」までの経路上の各リンクのリンク重みの総和を表す。「リンク重み」は、「隣接ノード」との間のリンク重みを表す。「隠れ端末重み」は、宛先ノードへの経路上に隠れ端末が存在するか否かに応じて決定される。例えば、隠れ端末が存在しなければ「隠れ端末重み=0」であり、隠れ端末が存在するときは「隠れ端末重み=10」である。「評価値」は、宛先ノードへの経路に係わる総通信コストに相当し、例えば「経路重み」「リンク重み」「隠れ端末重み」の和により算出される。
例えば、図7に示す第1レコードには、宛先ノードGについての経路情報および品質情報が登録されている。ここで、宛先ノードが隣接ノードであるときは、「宛先ノード」および「隣接ノード」は同一である。よって、「隣接ノード」にも「ノードG」が書き込まれている。また、ノードY、G間の「リンク重み」は、図5に示すように「6」である。更に、宛先ノードが隣接ノードであるときは、「経路重み」および「隠れ端末重み」はいずれもゼロである。したがって、宛先ノードGについての「評価値」には「6」が書き込まれる。
図7に示す第2レコードには、宛先ノードZについての経路情報および品質情報が登録されている。この例では、「隣接ノード」として「ノードG」が書き込まれている。すなわち、第2レコードには、ノードYからノードZへの経路として、ノードGを経由する経路が登録されている。「経路重み」は、ノードYからノードZへの経路上のリンク重みの和から、ノードY、G間のリンク重みを差し引いた値を表している。すなわち、「経路重み」は、ノードG、Z間のリンク重みを表す。
なお、第2レコードの「リンク重み」は、ノードY、G間のリンク重みであり、第1レコードにおいて「リンク重み」として記録されている。即ち、第2レコードにおいて「リンク重み」が記録されていなくても、第1レコードを参照すれば、第2レコードの「評価値」を算出することができる。したがって、「宛先ノード」が「隣接ノード」でないレコードにおいては、「リンク重み」を省略できる。
「隠れ端末重み」は、ネクストホップノードの転送先ノードと直接的に通信可能か否かに応じて決定される。ここで、「隣接ノード」がネクストホップノードに相当する。また、転送先ノードは、宛先ノードへ向かう経路上での、ネクストホップノードの隣接ノードに相当する。そして、ネクストホップノードの転送先ノードと直接的に通信可能なときは「隠れ端末重み=0」であり、ネクストホップノードの転送先ノードと直接的に通信できないときは「隠れ端末重み=10」である。図5に示す例では、ノードYからノードZへの経路において、ノードYのネクストホップはノードGであり、ノードGの転送先はノードZである。ところが、図5に示すように、ノードZから送信される電波は、ノードYには到達しない。すなわち、ノードYは、ネクストホップの転送先であるノードZと直接的に通信できない。このため、図6に示す第2レコードにおいて「隠れ端末重み=10」が書き込まれている。したがって、「ノードY、G間のリンク重み=10」「ノードG、Z間のリンク重み=6」「隠れ端末重み=10」を加算することにより、「評価値=26」が得られる。
ここで、図5を参照しながら隠れ端末について簡単に説明する。図5において、ノードY、Zは、上述したように、直接的に通信を行うことができない。すなわち、ノードYにとってノードZは隠れ端末であり、ノードZにとってノードYは隠れ端末である。この場合、ノードY、Zは、CSMA/CA等を利用してパケット衝突を回避するための送信タイミング制御を行うことができない。よって、例えば、ノードY、Zが同時にパケットを送信すると、ノードGにおいてパケット衝突が発生する。パケット衝突が発生すると、たとえば再送処理が実行されるので、通信速度が低下してしまう。この結果、通信効率が低下する。
このように、宛先ノードへの経路上に隠れ端末が存在するときは、パケット衝突に起因して通信効率が低下する。したがって、上述の例では、ノードYは、ノードZへパケットを送信するための経路を選択する際に、ネクストホップノードGを経由する経路の優先度を低くする。図7に示す例では、ネクストホップノードGを経由してノードZへ向かう経路に「隠れ端末重み=10」が設定されている。この場合、ネクストホップノードGを経由してノードZへ向かう経路の「評価値」が大きくなる。ここで、実施形態のノード装置は、宛先ノードへパケットを送信するため経路が複数存在する場合、最適経路として、評価値が最小の経路を選択する。したがって、上述のようにして隠れ端末重みが加算される経路は、最適な経路を選択する際に、優先度が低くなる。すなわち、隠れ端末が存在する経路は、最適経路として選択されにくくなる。
また、ノードYは、隠れ端末が存在するか否かを表す隠れ端末情報を隣接ノードに通知する。この通知は、例えば、Helloパケットにより実現される。上述の例では、ノードYは、「ノードYからノードGを経由してノードZへ向かう経路には、隠れ端末が存在する」を表す隠れ端末情報をノードAに通知する。そうすると、ノードAは、ノードZを宛先とするパケットを送信する際に、ノードYを経由する経路の優先度を低くする。この場合、ノードAは、ノードZを宛先とするパケットを、例えばノードXへ送信する。この結果、ノードAからノードZへのパケット転送に際して、ノードGにおけるパケット衝突が回避または抑制され、通信効率が向上する。
図8は、Helloパケットのフォーマットを示す図である。Helloパケットは、アドホックヘッダ、宛先ノード、隣接ノード、往路リンク評価値、隠れ端末情報、評価値を含む。アドホックヘッダは、アドホックネットワークにおいてパケットを伝送するために必要な情報を格納する。なお、アドホックヘッダは、Helloパケットの送信元ノードを識別する情報を含むようにしてもよい。宛先ノード、隣接ノード、評価値は、この例では、図7に示すルーティングテーブルに登録される対応するエントリと同じである。往路リンク評価値は、隣接ノードにとっての往路リンクの品質を表す。隠れ端末情報は、図7に示すルーティングテーブルに記録される隠れ端末重みに相当する。ただし、隠れ端末情報は、隠れ端末が存在するか否かを表す情報(例えば、フラグ情報)であってもよい。
図9は、リンクテーブル及びルーティングテーブルの生成について説明する図である。ここでは、ノードZおよびノードGが新たにリンクテーブルおよびルーティングテーブルを生成するものとする。なお、図9においては、隠れ端末を考慮しないものとする。
まず、ノードZは、HelloパケットA1をブロードキャストする。このとき、ノードZは、隣接ノードの存在を認識していないものとする。この場合、HelloパケットA1は有効なデータを有していない。
HelloパケットA1は、ノードZの電波が到達する領域内のすべてのノードにより受信される。すなわち、HelloパケットA1は、ノードZの隣接ノードによって受信される。この例では、ノードGのみがHelloパケットA1を受信するものとする。
ノードGは、HelloパケットA1を受信すると、リンクテーブル22Gおよびルーティングテーブル21Gにおいてそれぞれ新たなレコードを生成する。このとき、ノードGは、リンクテーブル22Gの新たなレコードの「宛先ノード」に、HelloパケットA1の送信元であるノードZを記録する。また、ノードGは、HelloパケットA1の受信に際して、ノードZからノードGへのリンク(すなわち、ノードZにとっての往路リンク)の品質を検出する。この例では、リンク評価値=11が得られるものとする。そうすると、ノードGは、リンクテーブル22Gにおいて、「ノードZ」に対応づけて「往路リンク評価値=11」を記録する。さらに、ノードGは、ルーティングテーブル21Gの新たなレコードにおいて、「宛先ノード」および「隣接ノード」としてノードZを記録する。
続いて、ノードGは、HelloパケットA2をブロードキャストする。このとき、ノードGは、ノードZからHelloパケットA1を受信したことにより、ノードZが隣接ノードであることを認識している。この場合、HelloパケットA2は、ノードZを宛先とする経路情報および品質情報を格納する。すなわち、HelloパケットA2の「宛先ノード」「隣接ノード」には、それぞれルーティングテーブル21Gの「宛先ノード」「隣接ノード」が書き込まれる。また、ノードGは、HelloパケットA2を利用して、ノードZからノードGへのリンクの品質を、ノードZに通知する。すなわち、ノードGのリンクテーブル22Gに記録されている「往路リンク評価値=11」が、HelloパケットA2の「往路リンク評価値」に書き込まれる。
HelloパケットA2は、ノードGの電波が到達する領域内のすべてのノードにより受信される。すなわち、HelloパケットA2は、ノードGの隣接ノードによって受信される。この例では、ノードZのみがHelloパケットA2を受信するものとする。
ノードZは、HelloパケットA2を受信すると、リンクテーブル22Zおよびルーティングテーブル21Zにおいてそれぞれ新たなレコードを生成する。このとき、ノードZは、リンクテーブル22Zの新たなレコードの「宛先ノード」に、HelloパケットA2の送信元であるノードGを記録する。また、ノードZは、HelloパケットA2の受信に際して、ノードGからノードZへのリンク(すなわち、ノードGにとっての往路リンク)の品質を検出する。この例では、リンク評価値=9が得られる。そうすると、ノードZは、リンクテーブル22Zにおいて、「ノードG」に対応づけて「往路リンク評価値=9」を記録する。
ノードZは、HelloパケットA2から「往路リンク評価値」を読み出す。ここで、HelloパケットA2により通知される「往路リンク評価値」は、ノードGにおいて検出された、ノードZからノードGへのリンクの品質を表す。すなわち、HelloパケットA2により通知される「往路リンク評価値」は、ノードGにとっての復路リンクの品質を表す。ここで、ノードGにとっての往路リンクは、ノードZにとっては復路リンクである。よって、ノードZは、HelloパケットA2により通知される「往路リンク評価値」を、リンクテーブル22Zの「復路リンク評価値」に書き込む。この例では、ノードZは、リンクテーブル22Zにおいて、「ノードG」に対応づけて「復路リンク評価値=11」を記録する。さらに、ノードZは、往路リンク評価値と復路リンク評価値の平均を算出し、その算出結果をリンクテーブル22Zの「リンク重み」に書き込む。この例では、リンクテーブル22Zにおいて、隣接ノードGとの間のリンクに対して「リンク重み=10」が記録されている。
さらに、ノードZは、ルーティングテーブル21Zにおいて、ノードGと宛先とするレコードを作成する。この場合、「隣接ノード」はノードGである。また、ルーティングテーブル21Zの「リンク重み」には、リンクテーブル22Zの「リンク重み」が記録される。さらに、ルーティングテーブル21Zの「評価値」には、ルーティングテーブル21Zの「リンク重み」および「経路重み」の和が書き込まれる。ただし、この例では、経路重みはゼロである。
つづいて、ノードZは、HelloパケットA3をブロードキャストする。このとき、ノードZは、HelloパケットA3を利用して、ノードGからノードZへのリンクの品質を、ノードGに通知する。すなわち、ノードZのリンクテーブル22Zに記録されている「往路リンク評価値=9」が、HelloパケットA3の「往路リンク評価値」に書き込まれる。また、ルーティングテーブル21Zに記録されている「評価値=10」が、HelloパケットA3の「評価値」に書き込まれる。さらに、HelloパケットA3の「宛先ノード」「隣接ノード」には、それぞれルーティングテーブル21Zの「宛先ノード」「隣接ノード」が書き込まれる。
ノードGは、ノードZからHelloパケットA3を受信すると、リンクテーブル22Gおよびルーティングテーブル21Gを更新する。即ち、ノードGは、HelloパケットA3の「往路リンク評価値=9」を、リンクテーブル22Gの「復路リンク評価値」に書き込む。また、ノードGは、リンクテーブル22Gにおいて、「往路リンク評価値」および「復路リンク評価値」の平均を「リンク重み」に書き込む。さらに、ノードGは、上述したノードZにおける手順と同様に、ルーティングテーブル21Gの「リンク重み」および「評価値」を書き込む。
上述のようにして生成されるリンクテーブル22Z、22G、およびルーティングテーブル21Z、21Gは、以下の内容を表す。
リンクテーブル22Z:
(1)ノードZは、隣接ノードGを有する
(2)ノードZ、G間のリンク重みは「10」
ルーティングテーブル21Z:
(1)宛先は、ノードG
(2)ノードZから宛先ノードへパケットを送信するとき、ネクストホップはノードG
(3)ノードZからネクストホップノードまでのリンク重みは「10」
(4)ノードZから宛先ノードまでの評価値は「10」
リンクテーブル22G:
(1)ノードGは、隣接ノードZを有する
(2)ノードG、Z間のリンク重みは「10」
ルーティングテーブル21G:
(1)宛先は、ノードZ
(2)ノードGから宛先ノードへパケットを送信するとき、ネクストホップはノードZ
(3)ノードGからネクストホップノードまでのリンク重みは「10」
(4)ノードGから宛先ノードまでの評価値は「10」
このように、各ノード装置は、隣接ノードとの間でHelloパケットを送信および受信することにより、リンクテーブル22およびルーティングテーブル21を生成する。なお、各ノード装置は、上述したように、Helloパケットを定期的に送信する。したがって、各ノード装置は、Helloパケットを受信するごとに、リンクテーブル22およびルーティングテーブル21を更新する。
また、各ノード装置は、上述したように、Helloパケットを利用して、隣接ノードとの間のリンクの品質を検出する。ここで、ノード装置は、例えば、Helloパケットの受信間隔に基づいてリンクの品質を検出する。すなわち、実施形態のアドホックネットワークでは、各ノード装置は、それぞれ予め決められた周期でHelloパケットを繰り返し送信する。したがって、仮に、リンクの品質が良好であれば、ノード装置において隣接ノードからHelloパケットを受信する時間間隔は、一定となるはずである。換言すれば、リンクの品質が悪いときは、ノード装置において隣接ノードからHelloパケットを受信する時間間隔のばらつきが大きくなる。そこで、ノード装置は、周期テーブル23を利用してHelloパケットの受信周期をモニタする。
図10は、周期テーブル23の実施例である。なお、図10は、ノードZが備える周期テーブル23を示している。
周期テーブル23は、各隣接ノードに対してそれぞれ生成される。この例では、ノードZは、隣接ノードG、Xを有する。よって、ノードZは、ノードGから送信されるHelloパケットの受信周期を記録するための周期テーブル23G、およびノードXから送信されるHelloパケットの受信周期を記録するための周期テーブル23Xを備える。そして、周期テーブル23(23G、23X)は、受信したHelloパケットを識別する「ID」、Helloパケットを受信した時間間隔を表す「周期」、Helloパケットを受信した時刻を表す「受信時刻」を記録する。
周期テーブル23Gには、ノードZがノードGからHelloパケット1〜4を受信した時刻が記録されている。「周期」は、連続する2つのHelloパケットの受信時刻の差分により算出される。例えば、Helloパケット4の受信時刻が「0.05」であり、Helloパケット3の受信時刻が「0.03」である。この場合「周期=0.02」が得られる。
ノード装置は、たとえば、周期テーブル23に蓄積される「周期」の標準偏差に基づいて、リンクの評価値を算出する。図10に示す実施例では、ノードGからHelloパケットを受信する周期の標準偏差は小さく、ノードXからHelloパケットを受信する周期の標準偏差は大きい。したがって、ノードGからノードZへ向かうリンクの品質は良好であり、リンクの評価値は小さくなる。一方、ノードXからノードZへ向かうリンクの品質は良好ではなく、リンクの評価値は大きくなる。
なお、各ノード装置は、他の方法でリンクの品質を検出してもよい。例えば、ノード装置は、隣接ノードから送信されるHelloパケットの受信レベル(例えば、受信電波強度)に基づいてリンクの品質を検出してもよい。
図11は、ノード装置の処理手順の概要を示す図である。なお、図11は、Helloパケットの送信および受信に係わる動作を示している。また、各ノード装置は、定期的にHelloパケットをブロードキャストする。
経路情報受信部31は、隣接ノードから送信されるHelloパケットを受信する。経路情報受信部31がHelloパケットを受信すると、リンクテーブル更新部32がリンクテーブル22を更新し、ルーティングテーブル更新部33がルーティングテーブル21を更新する。すなわち、ノード装置がHelloパケットを受信することに、リンクテーブル22およびルーティングテーブル21が更新される。また、リンクテーブル更新部32は、Helloパケットの受信時刻を周期テーブル23に書き込む。
ノード装置は、図4では不図示のタイマを備える。このタイマは、予め決められた時間が経過するごとにタイマイベント信号を出力する。そして、経路情報送信部34は、タイマイベント信号が生成されると、ルーティングテーブル21およびリンクテーブル22を参照してHelloパケットを生成し、隣接ノードへブロードキャストする。
次に、図12〜図14を参照しながら、経路決定方法の実施例を説明する。なお、以下の説明では、図5に示すネットワークにおいて、ノード間でHelloパケットを送信および受信することでネットワークが構築されるものとする。また、各ノード装置は、それぞれ自分の隣接ノードを認識しているものとする。
<手順1(図12)>
ノードZは、図12(a)に示すように、HelloパケットZをブロードキャストする。ここで、ノードZから送信される電波は、ノードG、Xには到達するが、ノードY、Aには到達しない。また、ノードZは、先に、ノードG、XからHelloパケットを受信し、ノードG、XからノードZへ向かうリンクの品質を検出しているものとする。この場合、ノードZは、図12(b)に示すHelloパケットZを生成して送信する。
HelloパケットZには、ノードGを宛先とする経路情報および品質情報、およびノードXを宛先とする経路情報および品質情報が格納されている。ここで、たとえば、ノードGを宛先とする経路情報は、パケットの転送先がノードGであることを表している。また、ノードGを宛先とする品質情報は、ノードGからノードZへ向かうリンクの評価値、およびノードZからノードGへの経路の評価値を含んでいる。なお、Helloパケットは、複数の宛先について、経路情報および品質情報を格納することができる。
ノードGは、ノードZからHelloパケットZを受信すると、リンクテーブル22およびルーティングテーブル21を更新する。この例では、ノードGは、図12(c)に示すように、ノードG、Z間のリンクを表すリンク情報をリンクテーブル22に登録する。このリンク情報は、以下の内容を表す。
(1)ノードGは、隣接ノードZを有する
(2)往路リンク評価値(ノードZからノードGへ向かうリンクの品質)は「11」
(3)復路リンク評価値(ノードGからノードZへ向かうリンクの品質)は「9」
(4)リンク重み(ノードG、Z間のリンクの品質)は「10」
また、ノードGは、図12(d)に示すように、ノードGからノードZへの経路についての経路情報および品質情報をルーティングテーブル21に登録する。この経路情報および品質情報は、以下の内容を表す。
(1)宛先は、ノードZ
(2)ノードGから宛先ノードZへの経路において、ネクストホップはノードZ
(3)ネクストホップノードZから宛先ノードZまでの経路重みは「0」
(4)ノードGからネクストホップノードZまでのリンク重みは「10」
(5)隠れ端末なし
(6)ノードGから宛先ノードZまでの評価値は「10」
ノードXも、ノードZからHelloパケットZを受信すると、リンクテーブル22およびルーティングテーブル21を更新する。この例では、ノードXは、図12(c)に示すように、ノードX、Z間のリンクを表すリンク情報をリンクテーブル22に登録する。ただし、ノードZ、X間のリンク品質(リンク重み=100)は、非常に悪い。ここで、この実施例では、各ノード装置は、品質の悪い経路の情報をルーティングテーブル21に登録しないものとする。したがって、ノードXは、HelloパケットZを受信したときに、宛先ノードZについての情報をルーティングテーブル21に登録しない。
<手順2(図13)>
手順2においては、手順1においてHelloパケットZを受信したノード装置がHelloパケットを送信する。なお、ここでは、ノードGがHelloパケットを送信する手順について説明し、ノードXがHelloパケットを送信する手順については説明を省略する。
ノードGは、図13(a)に示すように、HelloパケットGをブロードキャストする。ここで、ノードGから送信される電波は、ノードZ、Y、Xに到達するものとする。また、ノードGは、先に、ノードZ、Y、XからそれぞれHelloパケットを受信し、ノードZ、Y、XからノードGへ向かうリンクの品質を検出しているものとする。この場合、ノードGは、図13(b)に示すHelloパケットGを生成して送信する。HelloパケットGには、ノードYを宛先とする経路情報および品質情報、ノードXを宛先とする経路情報および品質情報、ノードZを宛先とする経路情報および品質情報が格納されている。
ノードYは、ノードGからHelloパケットGを受信すると、リンクテーブル22およびルーティングテーブル21を更新する。この例では、ノードYは、図13(c)に示すように、ノードY、G間のリンクを表すリンク情報をリンクテーブル22に登録する。このリンク情報は、以下の内容を表す。
(1)ノードYは、隣接ノードGを有する
(2)往路リンク評価値(ノードGからノードYへ向かうリンクの品質)は「6」
(3)復路リンク評価値(ノードYからノードGへ向かうリンクの品質)は「6」
(4)リンク重み(ノードY、G間のリンクの品質)は「6」
また、ノードYは、図13(d)に示すように、ノードYからノードG、Zへの経路についての経路情報および品質情報を登録する。ここで、ノードYからノードGへの経路の経路情報および品質情報は以下の内容を表す。
(1)宛先は、ノードG
(2)ノードYから宛先ノードGへの経路において、ネクストホップはノードG
(3)ネクストホップノードGから宛先ノードGまでの経路重みは「0」
(4)ノードYからネクストホップノードGまでのリンク重みは「6」
(5)隠れ端末なし
(6)ノードYから宛先ノードGまでの評価値は「6」
また、ノードYからノードZへの経路の経路情報および品質情報は以下の内容を表す。
(1)宛先は、ノードZ
(2)ノードYから宛先ノードZへの経路において、ネクストホップはノードG
(3)ネクストホップノードGから宛先ノードZまでの経路重みは「10」
(4)ノードYからネクストホップノードGまでのリンク重みは「6」
(5)隠れ端末あり(隠れ端末重み=10)
(6)ノードYから宛先ノードZまでの評価値は「26」
ここで、ノード装置は、例えば以下の方法で、隠れ端末が存在するか否かを判定する。すなわち、ノード装置は、Helloパケットを受信すると、そのHelloパケットに格納されている情報の「宛先ノード」について、ネクストホップの転送先を特定する。例えば、ノードYは、宛先ノードZについてネクストホップの転送先を特定する。図13に示す例では、図13(d)に示すノードYのルーティングテーブルにおいて、「宛先ノード=Z」に対して「隣接ノード=G」が記録されている。よって、ノードYからノードZへ向かう経路において、ネクストホップはノードGである。また、図13(b)に示すように、ノードGから送信されるHelloパケットGにおいて、「宛先ノード=Z」に対して「隣接ノード=Z」が記録されている。よって、ノードYからノードZへ向かう経路において、ネクストホップ(すなわち、ノードG)の転送先は、ノードZである。このようにして、ノードYは、ノードZを宛先とする経路において、ネクストホップの転送先として「ノードZ」を特定する。
続いて、ノードYは、上述のようにして特定したネクストホップの転送先(すなわち、ノードZ)が、ノードYのリンクテーブル22に登録されているか否かをチェックする。この例では、図13(c)に示すように、ノードYのリンンクテーブルに「ノードZ」は登録されていない。この場合、ノードYは、ノードZからの電波を受信できないと判定する。すなわち、ノードYは、ノードZが隠れ端末であると判定する。そうすると、ノードYは、図13(d)に示すノードYのルーティングテーブルにおいて「隠れ端末重み=10」を書き込む。さらに、ノードYは、「経路重み」「リンク重み」「隠れ端末重み」の和を計算することにより、「評価値=26」を得る。
ノードXは、ノードGからHelloパケットGを受信すると、リンクテーブル22およびルーティングテーブル21を更新する。ここで、ノードXは、上述した手順1において、ノードZから受信したHelloパケットZに基づいて、リンクテーブル22にノードX、Z間のリンク情報を既に登録している。そして、ノードXは、ノードGから受信したHelloパケットGに基づいて、図13(c)に示すように、ノードX、G間のリンクを表すリンク情報をリンクテーブル22に追加する。
また、ノードXは、図13(d)に示すように、ノードXからノードG、Zへの経路についての経路情報および品質情報をルーティングテーブル21に登録する。ここで、ノードXからノードGへの経路の経路情報および品質情報は、リンク重みおよび評価値が異なるが、基本的に、上述したノードYからノードGへの経路と同じである。したがって、この経路について説明は省略する。
一方、ノードXからノードZへの経路の経路情報および品質情報は以下の内容を表す。
(1)宛先は、ノードZ
(2)ノードXから宛先ノードZへの経路において、ネクストホップはノードG
(3)ネクストホップノードGから宛先ノードZまでの経路重みは「10」
(4)ノードYからネクストホップノードGまでのリンク重みは「9」
(5)隠れ端末なし(隠れ端末重み=0)
(6)ノードYから宛先ノードZまでの評価値は「19」
ここで、ノードXは、ノードYと同様に、隠れ端末の有無を検出する。この例では、ノードXは、まず、宛先ノードZについてネクストホップの転送先を特定する。この場合、図13(d)に示すノードXのルーティングテーブルにおいて、「宛先ノード=Z」に対して「隣接ノード=G」が記録されている。よって、ノードXからノードZへ向かう経路において、ネクストホップはノードGである。また、図13(b)に示すように、ノードGから送信されるHelloパケットGにおいて、「宛先ノード=Z」に対して「隣接ノード=Z」が記録されている。よって、ノードYからノードZへ向かう経路においても、ネクストホップ(すなわち、ノードG)の転送先は、ノードZである。このようにして、ノードXは、ノードZを宛先とする経路において、ネクストホップの転送先として「ノードZ」を特定する。
続いて、ノードXは、上述のようにして特定したネクストホップの転送先(すなわち、ノードZ)が、ノードXのリンクテーブル22に登録されているか否かをチェックする。この例では、図13(c)に示すように、ノードXのリンンクテーブルに「ノードZ」が登録されている。この場合、ノードXはノードZからの電波を受信でき、また、ノードZはノードXからの電波を受信できる。すなわち、ノードXは、「ノードZは隠れ端末ではない」と判定する。そうすると、図13(d)に示すノードXのルーティングテーブルにおいて、「宛先ノード=Z」に対応する「隠れ端末重み」として「0」が設定される。したがって、ノードXは、「経路重み」「リンク重み」「隠れ端末重み」の和を計算することにより、「評価値=19」を得る。
このように、各ノード装置は、宛先ノードへの経路において、ネクストホップの転送先が隠れ端末であるか否かを判定する。ここで、ネクストホップの転送先が隠れ端末であるときは、図1を参照しながら説明したように、パケット衝突が発生して通信効率が低下する。このため、ノード装置は、宛先ノードへの経路においてネクストホップの転送先が隠れ端末であれば、その経路についての評価値に「隠れ端末重み」を加算することにより、評価値を大きくする。この結果、この経路の優先度は低下する。
一方、宛先ノードへの経路においてネクストホップの転送先が隠れ端末でなければ、ノード装置は、例えばCSMA/CAを利用してパケット衝突を回避できる。したがって、宛先ノードへの経路においてネクストホップの転送先が隠れ端末でなければ、その経路についての評価値に「隠れ端末重み」は加算されない。
<手順3(図14)>
手順3においては、手順2でHelloパケットGを受信した各ノード装置がHelloパケットを送信する。以下、ノードXがHelloパケットXを送信し、ノードYがHelloパケットYを送信する手順について説明する。
ノードXは、図14(a)および図14(b)に示すように、ノードG、Z、Aを宛先とする経路情報/品質情報を含むHelloパケットXを生成して送信する。HelloパケットXに格納される各宛先ノードについての経路情報/品質情報は、図13(d)に示すノードXのルーティングテーブル21から生成される。ただし、往路リンク評価値は、図13(c)に示すノードXのリンクテーブル22が参照される。なお、図13(d)においては、ノードAを宛先とする情報は省略されている。
同様に、ノード装置Yは、図14(a)および図14(b)に示すように、ノードG、Z、Aを宛先とする経路情報/品質情報を含むHelloパケットYを送信する。HelloパケットYに格納される各宛先についての経路情報/品質情報は、図13(d)に示すノードYのルーティングテーブル21および図13(c)に示すノードYのリンクテーブル22から生成される。
ノードAは、ノードXからHelloパケットXを受信し、ノードYからHelloパケットYを受信する。そうすると、ノードAは、HelloパケットX、Yに基づいて、リンクテーブル22およびルーティングテーブル21を更新する。この例では、ノードAは、図14(c)に示すように、ノードA、X間のリンクを表すリンク情報、およびノードA、Y間のリンクを表すリンク情報をリンクテーブル22に登録する。
また、ノードAは、HelloパケットX、Yに基づいて、ノードAから各宛先ノードへの経路についての経路情報および品質情報を登録する。図14(d)においては、ノードAからノードZへ向かう2つの経路について、それぞれ経路情報および品質情報が示されている。なお、図14(d)においては、他の宛先ノードについて情報は省略されている。
ノードAからノードXを経由してノードZへ向かう経路の経路情報および品質情報は以下の内容を表す。
(1)宛先は、ノードZ
(2)ノードAから宛先ノードZへの経路において、ネクストホップはノードX
(3)ネクストホップノードXから宛先ノードZまでの経路の重みは「19」
(4)ノードAからネクストホップノードXまでのリンク重みは「5」
(5)隠れ端末あり(隠れ端末重み=10)
(6)ノードAから宛先ノードZまでの評価値は「34」
「隣接ノード(すなわち、ネクストホップノード)=X」は、HelloパケットXの送信元を検出することによって得られる。「経路重み=19」は、HelloパケットXに格納されている「宛先ノード=Z」に対応する「評価値」から得られる。「リンク重み=5」は、図14(c)に示すノードAのリンクテーブル22から得られる。「隠れ端末重み」は、図13を参照しながら説明したように、ネクストホップの転送先がリンクテーブル22に登録されているか否かに基づいて判定される。この経路においては、ネクストホップはノードXであり、その転送先はノードGである。ところが、図14(c)に示すように、ノードAのリンクテーブル22にノードGは登録されていない。よって、「隠れ端末重み=10」が得られる。したがって、ノードAからノードXを経由してノードZへ向かう経路について、「経路重み」「リンク重み」「隠れ端末重み」を加算することにより、「評価値=34」が得られる。
同様に、ノードAからノードYを経由してノードZへ向かう経路の経路情報および品質情報は以下の内容を表す。
(1)宛先は、ノードZ
(2)ノードAから宛先ノードZへの経路において、ネクストホップはノードY
(3)ネクストホップノードYから宛先ノードZまでの経路の重みは「26」
(4)ノードAからネクストホップノードYまでのリンク重みは「5」
(5)隠れ端末あり(隠れ端末重み=10)
(6)ノードAから宛先ノードZまでの評価値は「41」
「隣接ノード(すなわち、ネクストホップノード)=Y」は、HelloパケットYの送信元を検出することによって得られる。「経路重み=26」は、HelloパケットYに格納されている「宛先ノード=Z」に対応する「評価値」から得られる。「リンク重み=5」は、図14(c)に示すノードAのリンクテーブル22から得られる。「隠れ端末重み」は、上述のように、ネクストホップの転送先がリンクテーブル22に登録されているか否かに基づいて判定される。この経路においては、ネクストホップはノードYであり、その転送先はノードGである。ところが、図14(c)に示すように、ノードAのリンクテーブル22にノードGは登録されていない。よって、「隠れ端末重み=10」が得られる。したがって、ノードAからノードYを経由してノードZへ向かう経路について、「経路重み」「リンク重み」「隠れ端末重み」を加算することにより、「評価値=41」が得られる。
ノードAは、宛先ノードごとに、最適な経路を選択する。このとき、ルーティングテーブル21の「評価値」が最小となっている経路が、最適経路として選択される。したがって、図14に示す例では、ノードAは、ノードZを宛先とする経路として、ノードXを経由する経路を選択する。
ここで、ノードAからノードXを経由してノードZへ至る経路(以下、経路A/X/Zと呼ぶ)、およびノードAからノードYを経由してノードZへ至る経路(以下、経路A/Y/Zと呼ぶ)を比較する。経路A/X/Zのリンク重みの和W(A/X/Z)、および経路A/X/Zのリンク重みの和W(A/Y/Z)は、図5に示す例では、それぞれ下記の通りである。
W(A/X/Z)= (5+5)/2 + (9+9)/2 + (11+9)/2 =24
W(A/Y/Z)= (6+4)/2 + (6+6)/2 + (11+9)/2 =21
すなわち、リンク重みのみを考慮すると、経路A/X/Zよりも経路A/Y/Zの方が評価値は小さい。また、ノードAにとって、ノードGが隠れ端末であることは、経路A/X/Zおよび経路A/Y/Zにおいて同じである。
しかし、経路A/X/Zにおいては、ノードXにとってノードZは隠れ端末ではないので、ノードXにおいて、ノードZに係わる隠れ端末重みはゼロである。これに対して、経路A/Y/Zにおいては、ノードYにとってノードZは隠れ端末なので、ノードYにおいて、ノードZに係わる「隠れ端末重み=10」が加算される。この結果、ノードAにおいて宛先ノードZについて最終的に得られる評価値は、経路A/X/Zよりも経路A/Y/Zの方が大きくなる。
ここで、実施形態のアドホックネットワークにおいて、各ノード装置は、パケットの宛先に基づいてルーティングテーブル21を参照し、その宛先に対応する経路の中で評価値が最小の経路を選択する。したがって、ノードAは、ノードZを宛先とするパケットを生成または受信したときは、図14(d)に示すルーティングテーブルから経路A/X/Zを選択する。すなわち、ノードAは、上記パケットをノードXへ送信する。そうすると、このパケットは、ノードXおよびノードGを経由してノードZへ伝送される。このとき、ノードXおよびノードZは、CSMA/CAを利用して送信タイミングを制御するので、ノードGにおけるパケット衝突は回避または抑制される。
このように、実施形態の経路決定方法によれば、アドホックネットワークがパケットを宛先へ転送する際、隠れ端末が存在する経路は選択されにくく、隠れ端末が存在しない経路は選択されやすい。このため、実施形態のアドホックネットワークにおいては、パケット衝突が抑制され、通信効率が向上する。
なお、図12〜図14に示す実施例では、経路情報がノード装置を伝搬する過程で、隠れ端末重みが累積的に加算される。例えば、図13においてノードYによってノードZに対応する隠れ端末重みが加算され、さらに図14においてノードAによってノードGに対応する隠れ端末重みが加算される。したがって、宛先ノードまでの経路上で隠れ端末が多くなると、その経路の評価地が大きくなり、その経路は最適経路として選択されにくくなる。
次に、フローチャートを参照しながら、リンクテーブル22を更新する処理、ルーティングテーブル21を更新する処理、評価値を算出する処理、パケットを送信する処理について説明する。
図15は、リンクテーブル22を更新する処理を示すフローチャートである。この処理は、各ノードにおいて、リンクテーブル更新部32によって実行される。
ステップS1〜S2において、リンクテーブル更新部32は、隣接ノードから送信されるHelloパケットを待ち受ける。そして、リンクテーブル更新部32は、Helloパケットを受信すると、そのHelloパケットの送信元ノードを特定する。
ステップS3において、リンクテーブル更新部32は、ステップS2で特定した送信元ノードに対応する周期テーブルが存在するか否かを判定する。対応する周期テーブルが存在しないときは、ステップS4において、リンクテーブル更新部32は、送信元ノードに対応する周期テーブルを作成し、「ID=1」で識別されるレコードを作成する。つづいて、ステップS5において、リンクテーブル更新部32は、このレコードに、Helloパケットの受信時刻を書き込む。このとき、リンクテーブル更新部32は、例えば、初期値として受信時刻「0:00」を書き込む。さらに、ステップS6において、リンクテーブル更新部32は、このレコードに、「周期」の初期値を設定する。周期の初期値は、例えば「0:00」である。ただし、リンクテーブル更新部32は、必ずしも周期の初期値を設定する必要はない。
対応する周期テーブルが既に存在するときは(ステップS3:Yes)、ステップS7において、リンクテーブル更新部32は、周期テーブルの最上位に新たなレコードを追加する。つづいて、ステップS8において、リンクテーブル更新部32は、新たなレコードに、Helloパケットの受信時刻を書き込む。また、ステップS9において、リンクテーブル更新部32は、ステップS8で新たに書き込んだ受信時刻と、直前のHelloパケットの受信時刻との差分を算出し、「周期」として設定する。そして、ステップS10において、リンクテーブル更新部32は、「周期」についての標準偏差を算出する。さらに、リンクテーブル更新部32は、周期の標準偏差から往路リンク評価値を導出する。なお、周期の標準偏差と往路リンク評価値との間の関係式は、特に限定されるものではないが、標準偏差が大きいほど評価値も大きくなるものとする。
ステップS11において、リンクテーブル更新部32は、リンクテーブルにおいて、Helloパケットの送信元ノードのレコードを新たに作成する。ただし、リンクテーブルに送信元ノードのレコードが既に存在するときは、リンクテーブル更新部32は、送信元ノードのレコードを識別する。そして、ステップS12において、リンクテーブル更新部32は、受信したHelloパケットに基づいて得られる往路リンク評価値を、リンクテーブルにおいて送信元ノードに対応づけて格納(または、上書き)する。
ステップS13において、リンクテーブル更新部32は、受信したHelloパケットが往路リンク評価値を含んでいるか否かを判定する。Helloパケットが往路リンク評価値を含んでいないときは、ステップS14において、リンクテーブル更新部32は、ステップS10で算出した往路リンク評価値を、「リンク重み」としてリンクテーブルに設定(または、上書き)する。
Helloパケットが往路リンク評価値を含むときは、ステップS15において、リンクテーブル更新部32は、受信したHelloパケットに含まれる往路リンク評価値を、リンクテーブルの送信元ノードに対応づけて、復路リンク評価値として格納(または、上書き)する。また、ステップS16において、リンクテーブル更新部32は、往路リンク評価値および復路リンク評価値の平均を算出し、その算出結果を「リンク重み」としてリンクテーブルに設定(または、上書き)する。
このように、リンクテーブル更新部32は、隣接ノードからHelloパケットを受信すると、リンクテーブル22を更新する。この結果、各ノード装置のリンクテーブル22には、隣接ノードとの間のリンクを表すリンク情報が格納される。
図16および図17は、ルーティングテーブル21を更新する処理を示すフローチャートである。この処理は、各ノードにおいて、ルーティングテーブル更新部33により実行される。
ステップS21〜S22の処理は、基本的に、ステップS1〜S2と同じである。ただし、ステップS21〜S22は、ルーティングテーブル更新部33により実行される。すなわち、ルーティングテーブル更新部33は、受信したHelloパケットの送信元ノードを特定する。
ステップS23において、ルーティングテーブル更新部33は、ワークテーブル24に新たなレコードを作成する。ステップS24〜S25において、ルーティングテーブル更新部33は、ステップS22で特定した送信元ノードを、この新たなレコードの「宛先ノード」および「隣接ノード」にそれぞれ設定する。
ステップS26において、ルーティングテーブル更新部33は、送信元ノードを用いてリンクテーブル22を検索し、Helloパケットの送信元ノードに対応する「リンク重み」を取得する。ステップS27において、ルーティングテーブル更新部33は、ワークテーブル24において、「宛先ノード」および「隣接ノード」がHelloパケットの送信元ノードと一致するレコードの「リンク重み」に、ステップS26で取得したリンク重みを書き込む。
ステップS28において、ルーティングテーブル更新部33は、ワークテーブル24に作成したレコードと同一の「宛先ノード」および「隣接ノード」を有するレコードがルーティングテーブル21に存在するか否かを判定する。ルーティングテーブル21にそのようなレコードが存在しないときは、ステップS29において、ルーティングテーブル更新部33は、ワークテーブル24に作成したレコードを、ルーティングテーブル21に追加する。一方、ルーティングテーブル21に上述のレコードが存在するときは、ステップS30において、ルーティングテーブル更新部33は、ワークテーブル24の対応するレコードの内容で、ルーティングテーブル21を更新する。
ステップS31において、ルーティングテーブル更新部33は、Helloパケットが情報を含んでいるか否かを判定する。Helloパケットが情報を含んでいないときは、ステップS32〜S42はスキップされ、ルーティングテーブル更新部33の処理はステップS43に移行する。一方、Helloパケットが情報を含むときは、ルーティングテーブル更新部33は、各宛先ノードについてステップS32〜S42の処理を実行する。
ステップS32において、ルーティングテーブル更新部33は、Helloパケットに格納されている経路情報の「宛先ノード」または「隣接ノード」が自ノードであるか否かを判定する。「宛先ノード」または「隣接ノード」の少なくとも一方が自ノードであるときは、ステップS32〜S40はスキップされ、ルーティングテーブル更新部33の処理はステップS41に移行する。
一方、「宛先ノード」および「隣接ノード」がいずれも自ノードでないときは(ステップS32:No)、ステップS33において、ルーティングテーブル更新部33は、ワークテーブル24に新たなレコードを作成する。そして、ステップS34において、ルーティングテーブル更新部33は、Helloパケットに格納されている「宛先ノード」を、ステップS33で作成したレコードの「宛先ノード」に書き込む。また、ステップS35において、ルーティングテーブル更新部33は、Helloパケットの送信元ノードを、ステップS33で作成したレコードの「隣接ノード」に書き込む。
ステップS36において、ルーティングテーブル更新部33は、隠れ端末処理を実行する。隠れ端末処理は、後で詳しく説明するが、隠れ端末重みを決定する処理を含む。ステップS37において、ルーティングテーブル更新部33は、Helloパケットに格納されている「評価値」を、ステップS33で作成したレコードの「経路重み」に書き込む。
ステップS38〜S40は、基本的に、ステップS28〜S30と同じである。すなわち、ルーティングテーブル更新部33は、ワークテーブル24を利用して生成した情報をルーティングテーブル21に書き込む。
ステップS41〜S42において、ルーティングテーブル更新部33は、受信したHelloパケットに格納されている各宛先ノードについての情報がすべて処理されたか否かを判定する。このとき、未処理の宛先ノードが残っていれば、ルーティングテーブル更新部33は、Helloパケットから次の宛先ノードの情報を取得し、ステップS32に戻る。そして、Helloパケットに格納されているすべての宛先ノードについてステップS32〜S40の処理が終了すると、ステップS43において、ルーティングテーブル更新部33は、評価値を算出してルーティングテーブル21に格納する。
図18は、隠れ端末処理の一例を示すフローチャートである。隠れ端末処理は、図17のステップS36に相当し、ルーティングテーブル更新部33により実行される。
ステップS51において、ルーティングテーブル更新部33は、処理対象の宛先ノードへの経路において、ネクストホップの転送先ノードを特定する。ここで、「処理対象の宛先ノード」は、図17に示すフローチャートにおいて、Helloパケットに経路情報が格納されている宛先ノードの中から選択された1つの宛先ノードを意味する。ネクストホップは、例えば、Helloパケットの送信元ノードである。また、ネクストホップの転送先ノードは、例えば、Helloパケットに格納されている、処理対象の宛先ノードについての「隣接ノード」により特定される。
ステップS52において、ルーティングテーブル更新部33は、ネクストホップの転送先ノードが、リンクテーブル22において「隣接ノード」として登録されているか否かを判定する。そして、ネクストホップの転送先ノードがリンクテーブル22に登録されていれば、ルーティングテーブル更新部33は、ステップS53において、ワークテーブル24の対応するレコードに「隠れ端末重み=0」を設定する。一方、ネクストホップの転送先ノードがリンクテーブル22に登録されていなければ、ルーティングテーブル更新部33は、ステップS54において、ワークテーブル24の対応するレコードに「隠れ端末重み=10」を設定する。
なお、ワークテーブル24の内容は、図17のステップS39またはS40において、ルーティングテーブル21に書き込まれる。したがって、ルーティングテーブル更新部33がステップS39またはS40を実行することにより、ルーティングテーブル21の対応するレコードに「隠れ端末重み」が設定される。
図19は、宛先ノードについての評価値を算出する処理を示すフローチャートである。この処理は、図17のステップS43に相当し、ルーティングテーブル更新部33により実行される。また、ルーティングテーブル更新部33は、ルーティングテーブル21の各レコードについて図19のフローチャートの処理を実行する。
なお、以下の説明では、ルーティングテーブル21において、「宛先ノード」が「隣接ノード」ではないレコードにおいては、「リンク重み」が省略されているものとする。リンク重みの省略については、図7を参照しながら説明した通りである。
ステップS61において、ルーティングテーブル更新部33は、ルーティングテーブル21の処理対象レコードに「リンク重み」が格納されているか否かを判定する。処理対象レコードに「リンク重み」が格納されていれば、ステップS62において、ルーティングテーブル更新部33は、処理対象レコードに格納されている「リンク重み」を、そのレコードの「評価値」に書き込む。
処理対象レコードに「リンク重み」が格納されていないときは、ステップS63において、ルーティングテーブル更新部33は、処理対象レコードの「隣接ノード」を、「宛先ノード」および「隣接ノード」として有するレコードをルーティングテーブル21において検索する。そして、ステップS64において、ルーティングテーブル更新部33は、ステップS63の検索により特定されたレコードから「リンク重み」を取得する。
例えば、図13(d)に示すノードXのルーティングテーブルにおいて、「宛先ノードZ」を有するレコードが処理対象レコードであるものとする。この場合、処理対象レコードの「隣接ノード」は、ノードGである。そうすると、ステップS63において、このルーティングテーブルから、「宛先ノードG」および「隣接ノードG」を有するレコードが抽出される。この結果、ステップS64において、「リンク重み=9」が得られる。
ステップS65において、ルーティングテーブル更新部33は、処理対象レコードの「経路重み」、ステップS64で取得した「リンク重み」、ステップS53〜S54で決定した「隠れ端末重み」の和を算出する。そして、ルーティングテーブル更新部33は、この算出結果を、「評価値」としてルーティングテーブル21に格納する。
ステップS66〜S67において、ルーティングテーブル更新部33は、ルーティングテーブル21に未処理のレコードが残っているか否かを判定する。そして、未処理のレコードが残っていれば、ルーティングテーブル更新部33は、次のレコードに対してステップS61〜S65を実行する。
図20は、Helloパケットを送信する処理を示すフローチャートである。この処理は、タイマがタイマイベント信号を生成したときに、経路情報送信部34により実行される。なお、タイマは、所定の時間間隔でタイマイベント信号を生成する。
ステップS71において、経路情報送信部34は、タイマイベント信号を待ち受ける。そして、経路情報送信部34は、タイマイベント信号を受信すると、ステップS72〜S76を実行する。
ステップS72において、経路情報送信部34は、自ノード内にルーティングテーブル21が作成されているか否かを判定する。ルーティングテーブル21が作成されてないときは、経路情報送信部34は、ステップS73〜S75をスキップし、ステップS76においてHelloパケットを送信する。この場合、経路情報送信部34は、空のHelloパケット(すなわち、経路情報等を格納していないHelloパケット)を送信する。
ルーティングテーブル21が存在するときは、ステップS73において、経路情報送信部34は、ルーティングテーブル内の各レコードを「宛先ノード」毎にグループ化する。ステップS74において、経路情報送信部34は、宛先グループ毎に、「評価値」に基づいて、各レコードに順位を付ける。このとき、宛先グループ毎に、最も評価値の小さいレコード、2番目に評価値の小さいレコード、3番目に評価値の小さいレコードに対して、それぞれ「第1位」「第2位」「第3位」が付与される。
ステップS75において、経路情報送信部34は、ルーティングテーブル21から、宛先グループ毎に、第1位のレコードを抽出する。そして、経路情報送信部34は、各宛先グループから抽出したレコードの内容を格納するHelloパケットを生成する。すなわち、各宛先ノードについて、最も評価値の小さい経路(すなわち、最も品質または効率が高い経路)についての情報がHelloパケットに格納される。
具体的には、経路情報送信部34は、ルーティングテーブル21の「宛先ノード」「隣接ノード」「隠れ端末重み」「評価値」を、それぞれ、Helloパケットの「宛先ノード」「隣接ノード」「隠れ端末情報」「評価値」に設定する。ただし、Helloパケットの「往路リンク評価値」は、リンクテーブル22の対応するレコードから取得する。
この後、経路情報送信部34は、ステップS76において、Helloパケットを送信する。これにより、各ノード装置が保持する経路情報は、それぞれその隣接ノードに通知される。さらに、隣接ノードから経路情報を受信したノード装置は、その経路情報を他の隣接ノードに通知する。このようにして、経路情報は、アドホックネットワーク内の各ノード装置に通知される。
このように、実施形態の経路決定方法においては、ノード装置は、宛先ノードへの最適経路の評価値を隣接ノードに通知する。このとき、経路の評価値は、リンクの品質を表すリンク重みだけでなく、隠れ端末の有無に応じて決まる隠れ端末重みを含んでいる。すなわち、ノード装置から隣接ノードへ通知される情報は、隠れ端末の影響を含んでいる。したがって、上述した経路決定方法においては、ノード装置は、必ずしも、隠れ端末が存在するか否かを直接的に表す情報を隣接ノードに通知する必要はない。例えば、図8に示すHelloパケットは、必ずしも「隠れ端末情報」を格納する必要はない。
なお、上述の説明では、隠れ端末重みは「10」であるが、ネットワークの構成または運用ポリシ等に基づいて決定することが好ましい。例えば、ネットワークの通信効率がリンクの品質に強く依存する場合には、リンク重みと比較して隠れ端末重みを小さくする。或いは、ネットワークの通信効率が隠れ端末に起因するパケット衝突に強く依存する場合には、リンク重みと比較して隠れ端末重みを大きくしてもよい。
<他の実施形態(1)>
図6〜図20に示す実施形態では、各経路の評価値は、リンク重み(経路重みを含む)および隠れ端末重みの和で表わされる。そして、各宛先について、評価値が最小の経路が最適経路として選択される。しかし、各ノード装置は、他の基準に基づいて最適経路を選択してもよい。
図21は、他の実施形態の経路決定方法を説明する図である。なお、図21は、あるノード装置が備えるルーティングテーブル21を示している。このルーティングテーブル21には、宛先ノードGWについての経路情報/品質情報が格納されている。
図21に示す例では、宛先ノードGWに対して、経路n1(隣接ノードn1を経由する経路)、経路n2(隣接ノードn2を経由する経路)、経路n3(隣接ノードn3を経由する経路)、経路n4(隣接ノードn4を経由する経路)が登録されている。また、各経路の評価値は、それぞれ、宛先ノードGWまでのリンク重みの和を表している。
隠れ端末フラグは、ネクストホップノードの転送先ノードが隠れ端末であるか否を表している。たとえば、第1レコード(経路n1)は、宛先ノードGWへの経路において、ネクストホップノード(隣接ノードn1)の転送先ノードが隠れ端末であることを表している。また、第2レコード(経路n2)は、宛先ノードGWへの経路において、ネクストホップノード(隣接ノードn2)の転送先ノードが隠れ端末ではないことを表している。なお、ネクストホップノードの転送先ノードが隠れ端末か否かを判定する方法は、図6〜図20に示す実施形態と同じである。
ルーティングテーブル更新部33は、以下の手順で、宛先ノードについて各経路の順位を決定する。
(1)隠れ端末フラグがOFFの経路を抽出する
(2)上記(1)で抽出された経路の中で、評価値の小さい順に「順位」を付与する
(3)残りの経路に対して、評価値の小さい順に「順位」を付与する
図21に示すルーティングテーブル21においては、手順(1)により経路n2、n4が抽出される。続いて、手順(2)により、「経路n2:第1位」「経路n4:第2位」が得られる。さらに、手順(3)により、「経路n1:第3位」「経路n3:第4位」が得られる。
このように、図21に示す実施形態においても、隠れ端末が存在する経路の優先度は低くなる。すなわち、隠れ端末が存在する経路は、選択されにくくなる。なお、すべての経路において隠れ端末が存在するときは、ルーティングテーブル更新部33は、手順(3)のみを実行する。この場合、ルーティングテーブル更新部33は、評価値のみに基づいて経路を選択する。
経路情報送信部34は、隣接ノードにHelloパケットを送信する。このHelloパケットの「隠れ端末情報」には、ルーティングテーブル21の「隠れ端末フラグ」が書き込まれる。すなわち、ノード装置は、隣接ノードに対して、隠れ端末が存在するか否かを通知する。そして、各ノード装置は、隠れ端末が存在するか否かを表す隠れ端末情報を隣接ノードから受け取ると、その隠れ端末情報を参照して宛先ノードへの最適経路を決定する。具体的には、ノード装置は、隣接ノードが隠れ端末を有するときは、その隣接ノードの優先度を低くする。
<他の実施形態(2)>
図22は、隠れ端末の数を考慮して経路を決定する方法を説明する図である。図22に示す例では、ノードAから宛先ノードGWへの経路として、下記の3つが存在するものとする。また、下記の3つの経路は、ノードBのルーティングテーブル21に登録されているものとする。
経路n1:ノードB、n1、n4を経由して宛先ノードGWへ至る経路
経路n2:ノードB、n2を経由して宛先ノードGWへ至る経路
経路n3:ノードB、n3、n5、n6を経由して宛先ノードGWへ至る経路
また、図22において、ノードAは、ノードB、n3から送信される電波を受信できるが、ノードn1、n2から送信される電波は受信できないものとする。すなわち、ノードAのリンクテーブル22には、ノードB、n3が登録されているが、ノードn1、n2は登録されていない。
更に、ノードBは、宛先ノードGWについて、経路n1〜n3の経路情報をノードAに通知するものとする。なお、図20に示すフローチャートでは、経路情報送信部34は、各宛先ノードについて最適経路の経路情報を隣接ノードに通知する。これに対して、図22に示す実施形態では、経路情報送信部34は、各宛先ノードについてルーティングテーブル21に格納されている、すべてのまたは所定数の経路の経路情報を隣接ノードに通知する。
ノードAは、ノードBから経路n1〜n3の経路情報を受信すると、各経路について隠れ端末の有無を検出する。この例では、ノードAは、ノードn3の電波を受信できるが、ノードn1、n2の電波を受信できない。したがって、ノードAは、ノードn1、n2はは隠れ端末であると判定する。すなわち、ノードAは、ノードBを経由する経路上に2つの隠れ端末が存在することを検出する。
ノードAのルーティングテーブル更新部33は、隠れ端末の数に応じて隠れ端末重みを決定する。例えば、隠れ端末重みは、隠れ端末の数に比例するように決定してもよい。この場合、図22に示す例では、ノードAのルーティングテーブル更新部33は、ノードBを経由する経路の隠れ端末重みを「20」とする。
このように、隠れ端末の数を考慮して経路を決定する方法においては、隠れ端末の少ない経路を介してパケットが転送される。したがって、パケット衝突の確率が低下し、通信効率がさらに向上する。
<他の実施形態(3)>
各ノード装置は、予め決められた特定のノード装置を宛先とする場合に限って、隠れ端末を考慮するようにしてもよい。特定のノード装置は、例えば、ゲートウェイノードである。ゲートウェイノードは、特に限定されるものではないが、アドホックネットワークの外部のサーバと接続し、アドホックネットワーク内の各ノードからデータを収集してサーバ装置へ送信する。
この場合、ルーティングテーブル更新部33は、図17に示すステップS36(隠れ端末処理)を実行する前に、宛先ノードがゲートウェイノードであるか否かを判定する。そして、宛先ノードがゲートウェイノードであるときに、ルーティングテーブル更新部33は、ステップS36の隠れ端末処理を実行する。一方、宛先ノードがゲートウェイノードでなければ、ルーティングテーブル更新部33は、ステップS36をスキップする。
この方法によれば、特定のノード宛てのデータの送信効率が向上する。したがって、この方法は、あるノード装置(例えば、ゲートウェイノード)が各ノードのデータを収集するシステムにおいて特に好ましい。
<他の実施形態(4)>
図6〜図20に示す実施形態では、各ノード装置がそれぞれ自分のルーティングテーブルの内容を隣接ノードに通知する。これに対して、他の実施形態のアドホックネットワークにおいては、予め決められた特定のノード装置(例えば、上述のゲートウェイノード)のルーティングテーブルの内容のみが各ノードに通知される。すなわち、例えば、ゲートウェイノードは、そのゲートウェイノードを宛先とする経路情報を送信する。そして、他のノード装置は、ゲートウェイノードから送信された、ゲートウェイを宛先とする経路情報を受信して保持すると共に、その経路情報をそれぞれ隣接ノードに転送する。
このようなネットワークにおいては、経路情報の送信および受信に係わるトラヒックが少なくなる。したがって、データの通信効率が向上する。特に、ゲートウェイノードが各ノードのデータを収集するシステムにおいては、各ノード装置は、ゲートウェイノード宛ての経路情報のみを有していればよいので、この方式は有用である。

Claims (11)

  1. 複数の無線通信装置が接続される無線ネットワークにおいて使用される無線通信装置であって、
    自装置に隣接する隣接無線通信装置を識別する情報を記憶する記憶部と、
    前記隣接無線通信装置の中の第1の無線通信装置から、前記第1の無線通信装置に隣接する第2の無線通信装置を識別する情報を取得する取得部と、
    データの宛先に応じて、隣接無線通信装置を選択する選択部と、
    前記選択部により選択される隣接無線通信装置へ前記データを送信する送信部と、を備え、
    前記選択部は、前記第2の無線通信装置を識別する情報が前記記憶部に記憶されていないときは、前記隣接無線通信装置を選択する処理において前記第1の無線通信装置の優先度を低くする
    ことを特徴とする無線通信装置。
  2. 請求項1に記載の無線通信装置であって、
    宛先ごとに、前記宛先との間の通信品質に応じて決まる第1の重み、および前記第2の無線通信装置を識別する情報が前記記憶部に記憶されているか否かに応じて決まる第2の重み、に基づいて評価値を算出する算出部をさらに備え、
    前記選択部は、前記評価値に基づいて宛先に対応する隣接無線通信装置を選択する
    ことを特徴とする無線通信装置。
  3. 請求項2に記載の無線通信装置であって、
    前記評価値を隣接無線通信装置へ通知する通知部をさらに備える
    ことを特徴とする無線通信装置。
  4. 請求項3に記載の無線通信装置であって、
    前記通知部は、予め決められた時間間隔で、前記評価値を格納するデータを隣接無線通信装置へブロードキャストする
    ことを特徴とする無線通信装置。
  5. 請求項1に記載の無線通信装置であって、
    前記選択部は、前記第2の無線通信装置を識別する情報が前記記憶部に記憶されていないときは、前記第1の無線通信装置以外の隣接無線通信装置を選択する
    ことを特徴とする無線通信装置。
  6. 請求項1に記載の無線通信装置であって、
    前記選択部は、前記記憶部に識別情報が記憶されていない第2の無線通信装置の数が多いほど、前記第1の無線通信装置の優先度を低くする
    ことを特徴とする無線通信装置。
  7. 請求項1に記載の無線通信装置であって、
    前記選択部は、予め決められた所定の宛先についてのみ、前記第2の無線通信装置を識別する情報が前記記憶部に記憶されているか否かに応じて、前記第1の無線通信装置の優先度を調整する
    ことを特徴とする無線通信装置。
  8. 各無線通信装置がそれぞれ宛先への経路の中で最小の評価値の経路を選択してデータを転送する無線ネットワークにおいて使用される無線通信装置であって、
    前記宛先への経路において、ネクストホップの転送先を特定する特定部と、
    前記特定部により特定されるネクストホップの転送先が隠れ端末であるか否かを判定する判定部と、
    前記ネクストホップの転送先が隠れ端末であるときは、前記ネクストホップの転送先が隠れ端末でないときと比較して、前記宛先への経路の評価値を大きくする算出部、
    を有することを特徴とする無線通信装置。
  9. 請求項8に記載の無線通信装置であって、
    前記宛先への経路の評価値を隣接無線通信装置へ通知する通知部をさらに備える
    ことを特徴とする無線通信装置。
  10. 複数の無線通信装置が接続される無線ネットワークにおいて使用される経路決定方法であって、
    無線通信装置に隣接する隣接無線通信装置を識別する情報を記憶部に記憶し、
    前記隣接無線通信装置の中の第1の無線通信装置から、前記第1の無線通信装置に隣接する第2の無線通信装置を識別する情報を取得し、
    前記第2の無線通信装置を識別する情報が前記記憶部に記憶されているか否かを判定し、
    前記第2の無線通信装置を識別する情報が前記記憶部に記憶されていないときは、前記第1の無線通信装置を経由する経路の優先度を低くする
    ことを特徴とする経路決定方法。
  11. 請求項10に記載の経路決定方法であって、
    各無線通信装置は、それぞれ、宛先と前記宛先への経路が経由する隣接無線通信装置との対応関係を記録する経路表を備え、
    前記複数の無線通信装置の中の特定無線通信装置は、前記特定無線通信装置を宛先とする経路表を送信し、
    各無線通信装置は、前記特定無線通信装置を宛先とする経路表を保持すると共に、前記特定無線通信装置を宛先とする経路表を隣接無線通信装置へ転送する
    ことを特徴とする経路決定方法。
JP2012546594A 2010-11-29 2010-11-29 無線通信装置および無線ネットワークにおける経路決定方法 Expired - Fee Related JP5464278B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/071291 WO2012073312A1 (ja) 2010-11-29 2010-11-29 無線通信装置および無線ネットワークにおける経路決定方法

Publications (2)

Publication Number Publication Date
JP5464278B2 JP5464278B2 (ja) 2014-04-09
JPWO2012073312A1 true JPWO2012073312A1 (ja) 2014-05-19

Family

ID=46171300

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012546594A Expired - Fee Related JP5464278B2 (ja) 2010-11-29 2010-11-29 無線通信装置および無線ネットワークにおける経路決定方法

Country Status (3)

Country Link
US (1) US9578587B2 (ja)
JP (1) JP5464278B2 (ja)
WO (1) WO2012073312A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6207300B2 (ja) * 2013-08-21 2017-10-04 株式会社Nttドコモ 移動局及び移動通信システム
US10243831B2 (en) * 2013-10-24 2019-03-26 Sas Institute Inc. Linked network scoring update
JP6171868B2 (ja) * 2013-11-11 2017-08-02 富士通株式会社 ノード装置、経路入れ替え方法、及び、プログラム
JP2019121921A (ja) * 2018-01-05 2019-07-22 株式会社モバイルテクノ 通信制御装置および通信制御方法
EP4173241A2 (en) * 2020-07-13 2023-05-03 Huawei Technologies Co., Ltd. Parameterized method for network subgraph root node selection

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2001269827A1 (en) * 2000-06-16 2002-01-02 The Regents Of The University Of California Bandwidth efficient source tracing (best) routing protocol for wireless networks
JP3997847B2 (ja) * 2002-06-17 2007-10-24 日本電気株式会社 最適経路計算方法、及び最適経路計算プログラム
US7395351B1 (en) * 2003-01-28 2008-07-01 Sprint Spectrum L.P. Method for assigning link weights in a communications network
JP4118828B2 (ja) * 2004-03-03 2008-07-16 日本電信電話株式会社 間欠動作型マルチホップ無線ネットワークの経路制御方法
JP2005303827A (ja) * 2004-04-14 2005-10-27 Ntt Docomo Inc 無線基地局、通信経路制御方法およびパケット転送方法
DE102006014308A1 (de) * 2006-03-10 2007-09-13 Rohde & Schwarz Gmbh & Co. Kg Verfahren zur Multi-Hop-Datenübertragung in einem ad-hoc-Netz mit versteckten Knoten
US8681810B2 (en) * 2006-04-13 2014-03-25 Qualcomm Incorporated Dynamic carrier sensing thresholds
US9043487B2 (en) * 2006-04-18 2015-05-26 Cisco Technology, Inc. Dynamically configuring and verifying routing information of broadcast networks using link state protocols in a computer network
JP5132944B2 (ja) * 2007-01-26 2013-01-30 三菱電機株式会社 通信装置
JP4941397B2 (ja) 2008-04-22 2012-05-30 富士通株式会社 経路情報中継方法および無線端末
WO2010096029A1 (en) * 2009-02-18 2010-08-26 Thomson Licensing Distributed channel selection method for wireless networks
KR101068667B1 (ko) * 2009-09-28 2011-09-28 한국과학기술원 히든 노드 및 감지 간섭을 고려한 라우팅 경로 설정 방법, 그 시스템 및 이를 기록한 기록매체

Also Published As

Publication number Publication date
JP5464278B2 (ja) 2014-04-09
US20130242746A1 (en) 2013-09-19
WO2012073312A1 (ja) 2012-06-07
US9578587B2 (en) 2017-02-21

Similar Documents

Publication Publication Date Title
JP5376068B2 (ja) 無線通信装置および無線ネットワークにおける迂回経路探索方法
US10003532B2 (en) Communication method and communication apparatus
JP2003249936A (ja) 無線装置およびその通信経路制御方法、コンピュータプログラム
JP5464278B2 (ja) 無線通信装置および無線ネットワークにおける経路決定方法
US9439128B2 (en) Node device and communication method for generating cluster
JP6036841B2 (ja) 通信制御方法、ネットワークシステム、および通信装置
JP5725173B2 (ja) 無線局、ルーティング方法、無線通信システムおよびルーティング用プログラム
US20140198666A1 (en) Data transfer method and node apparatus that uses the same
JP5705030B2 (ja) 通信システム
JP5821467B2 (ja) 無線端末
JP5958293B2 (ja) 通信方法、通信プログラム、および、ノード装置
JP5533168B2 (ja) ノード及び無線通信システム
JP2011217141A (ja) 無線通信装置及びデータ中継方法
JP5716836B2 (ja) 無線マルチホップネットワークの監視方法
CN104754649A (zh) 一种数据传输方法与无线Mesh节点
JP2015097348A (ja) 通信方法、通信装置、通信プログラム、および、通信システム
US9374849B2 (en) Node and link formation method
KR101056910B1 (ko) 다중 송신율로 데이터를 송신하는 애드-훅 라우팅 기반의 무선 센서 네트워크에서 패킷 송신 경로를 결정하는 방법
US8576779B2 (en) Radio communication apparatus and packet forwarding method
JP4311325B2 (ja) ネットワークシステムおよびノードおよび利己的なノードの検出方法
KR101666610B1 (ko) 통신 경로 설정을 위한 망 시스템, 액세스 포인트와, 액세스 포인트 제어 장치 및 그 제어방법
JP5119603B2 (ja) 無線端末装置、及びプログラム

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140106

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees