(57)【特許請求の範囲】
【請求項１】
マルチホップ無線アドホックネットワークを構成するノードにおける経路制御方法であって、
他のノードからデータパケットを受信した場合に、そのデータパケットの送信元のノードを宛先ノードとする前記データパケットの送信経路の逆経路を、ノード経路情報として保持する経路保持ステップと、
前記ノード経路情報の宛先ノード宛てのデータパケットを中継する場合、または前記ノード経路情報の宛先ノード宛てにデータパケットを送信する場合に、前記ノード経路情報に基づいてデータパケットを送信するデータパケット送信ステップと、
他のノードからデータパケットを受信した場合に、前記データパケットに基づいてそのデータパケットの送信元がルートノードであるか否かを判断するルートノード判断ステップと、
を含み、
前記経路保持ステップでは、前記データパケットの送信元がルートノードであった場合に、そのデータパケットの送信経路の逆経路を前記ノード経路情報として保持する、ことを特徴とする経路制御方法。
【請求項２】
マルチホップ無線アドホックネットワークを構成するノードにおける経路制御方法であって、
他のノードからデータパケットを受信した場合に、そのデータパケットの送信元のノードを宛先ノードとする前記データパケットの送信経路の逆経路を、ノード経路情報として保持する経路保持ステップと、
前記ノード経路情報の宛先ノード宛てのデータパケットを中継する場合、または前記ノード経路情報の宛先ノード宛てにデータパケットを送信する場合に、前記ノード経路情報に基づいてデータパケットを送信するデータパケット送信ステップと、
所定の経路検索メッセージを用いてパケットの宛先ノードへの経路を取得し、取得した経路を探索経路情報として保持する経路検索ステップと、
を含み、
前記経路保持ステップでは、前記ノード経路情報を前記探索経路情報と独立に保持し、
前記データパケット送信ステップでは、前記ノード経路情報と前記探索経路情報に同一の宛先ノードに関する経路情報がある場合、前記ノード経路情報を用いてデータパケットを送信する、
ことを特徴とする経路制御方法。
【請求項３】
所定の経路検索メッセージを用いてパケットの宛先ノードへの経路を取得し、取得した経路を探索経路情報として保持する経路検索ステップ、
をさらに含み、
前記経路保持ステップでは、前記ノード経路情報を前記探索経路情報と独立に保持し、
前記データパケット送信ステップでは、前記ノード経路情報と前記探索経路情報に同一の宛先ノードに関する経路情報がある場合、前記ノード経路情報を用いてデータパケットを送信する、
ことを特徴とする請求項１に記載の経路制御方法。
【請求項４】
前記ノード経路情報として送信元ノードと宛先ノードとを含む、
ことを特徴とする請求項２または３に記載の経路制御方法。
【請求項５】
前記データパケット送信ステップを実施後、前記データパケット送信ステップで用いた前記ノード経路情報を消去する経路消去ステップ、
をさらに含むことを特徴とする請求項２、３または４に記載の経路制御方法。
【請求項６】
所定の経路検索メッセージを用いてパケットの宛先ノードへの経路を取得し、取得した経路を探索経路情報として保持する経路検索ステップ、
をさらに含み、
前記経路保持ステップでは、前記ノード経路情報を前記探索経路情報の一部として保持することとし、前記探索経路情報に前記ノード経路情報の宛先ノードと同一の宛先ノードに関する経路情報が含まれる場合に、その経路情報を前記ノード経路情報の経路に書き換える、
ことを特徴とする請求項１または２に記載の経路制御方法。
【請求項７】
マルチホップ無線アドホックネットワークを構成するノードであって、
他のノードからデータパケットを受信した場合に、そのデータパケットの送信元のノードを宛先ノードとする前記データパケットの送信経路の逆経路を、ノード経路情報として保持する経路保持手段と、
前記ノード経路情報の宛先ノード宛てのデータパケットを中継する場合、または前記ノード経路情報の宛先ノード宛てにデータパケットを送信する場合に、前記ノード経路情報に基づいてデータパケットを送信する送信手段と、
を備え、
前記経路保持手段は、他のノードからデータパケットを受信した場合に、前記データパケットに基づいてそのデータパケットの送信元がルートノードであるか否かを判断し、前記データパケットの送信元がルートノードであった場合に、そのデータパケットの送信経路の逆経路を前記ノード経路情報として保持する、
ことを特徴とするノード。
【請求項８】
マルチホップ無線アドホックネットワークを構成するノードであって、
他のノードからデータパケットを受信した場合に、そのデータパケットの送信元のノードを宛先ノードとする前記データパケットの送信経路の逆経路を、ノード経路情報として保持する経路保持手段と、
前記ノード経路情報の宛先ノード宛てのデータパケットを中継する場合、または前記ノード経路情報の宛先ノード宛てにデータパケットを送信する場合に、前記ノード経路情報に基づいてデータパケットを送信する送信手段と、
所定の経路検索メッセージを用いてパケットの宛先ノードへの経路を取得し、取得した経路を探索経路情報として保持する経路検索手段と、
を備え、
前記経路保持手段は、前記ノード経路情報を前記探索経路情報と独立に保持し、
前記送信手段は、前記ノード経路情報と前記探索経路情報に同一の宛先ノードに関する経路情報がある場合、前記ノード経路情報を用いてデータパケットを送信する、
ことを特徴とするノード。
【請求項９】
請求項７または８に記載のノードを備えることを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチホップ無線アドホックネットワークにおける経路制御方法に関する。
【背景技術】
【０００２】
センサー情報の収集や制御機器の遠隔操作のために、マルチホップ無線アドホックネットワークを用いる技術が注目されている。マルチホップ通信では、送信先との距離が長かったり見通しがなかったりなど直接通信ができない場合に、中間に存在する他のノードを中継して通信を行う。そのため、マルチホップ通信は、広いエリアをカバーすることができる。マルチホップ通信を採用する通信システムでは、無線通信技術やアドレス割当技術などの要素技術とともに、中継機能を実現するための経路制御技術が必要である。
【０００３】
中継機能を実現するための経路制御技術として検討される経路制御プロトコルの多くは、ＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）のＭＡＮＥＴ（Ｍｏｂｉｌｅ  Ａｄｈｏｃ  Ｎｅｔｗｏｒｋ）ワーキンググループで考案、策定が進められている。ＭＡＮＥＴの経路制御プロトコルは、経路情報の生成タイミングの観点から、大きくプロアクティブ型とリアクティブ型に分類される。プロアクティブ型は周期的な制御メッセージの交換により各ノードが経路情報を常に保持する方式である。リアクティブ型は通信要求が生じた時だけに経路情報を取得する方式であり、オーバーヘッドが比較的少ない方式である。
【０００４】
従来の代表的な経路制御プロトコルとして、オンデマンド型ルーティングプロトコルがある（たとえば、非特許文献１参照）。オンデマンド型ルーティングプロトコルはリアクティブ型プロトコルであり、各ノードが経路テーブルを保持するホップバイホップ経路制御方式を採用している。
【０００５】
オンデマンド型ルーティングプロトコルでは、経路探索要求メッセージ（ＲＲＥＱ：Ｒｏｕｔｅ  Ｒｅｑｕｅｓｔ）、経路探索応答メッセージ（ＲＲＥＰ：Ｒｏｕｔｅ  Ｒｅｐｌｙ）などの経路探索メッセージを用いて経路制御を行う。
【０００６】
また、一般的に、経路制御では、経路探索手順により得られた経路の有効時間は短く設定され、連続したパケットのやり取りを除き、パケットのやり取りが発生するごとに経路探索手順を行う。このため、任意のノード間で順方向と逆方向の通信が行なわれる場合、各ノードが経路の情報を持たない状態で新たに経路探索手順が実施されるため、各経路探索手順では、経路検索結果として同一の経路が得られる。したがって、任意のノード間で送受信されるパケットは順方向と逆方向の両方向とも同一の経路を用いて通信が行われる。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】ＲＦＣ３５６１  “Ａｄ  Ｈｏｃ  Ｏｎ−Ｄｅｍａｎｄ  Ｄｉｓｔａｎｃｅ  Ｖｅｃｔｏｒ  （ＡＯＤＶ）  Ｒｏｕｔｉｎｇ”，Ｊｕｌｙ  ２００３
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来のオンデマンド型ルーティングプロトコルでは、パケットの送信のたびに経路探索手順が行われる。そのため、経路探索手順に要するトラフィックが増大する、という問題があった。
【０００９】
一方、狭帯域な無線メディアを用いたマルチホップ通信などのように無線リソースに制約がある場合には、経路探索手順が行われる頻度を抑えるために、経路探索手順により求めた経路の有効時間を長く設定することが考えられる。ところが、経路の有効時間を長く設定すると経路の有効期限内に複数の探索先について経路探索手順を行う場合がある。このような場合、経路探索ごとに経路テーブルが更新されることになり、結果として同一のノード間で送受信されるパケットが順方向と逆方向で異なる非対称経路が用いられるケースが発生する。順方向と逆方向の経路が異なると、通信経路の把握が困難になり、ネットワーク管理や障害検出が困難になる、という問題があった。
【００１０】
本発明は、上記に鑑みてなされたものであって、経路探索手順に要するトラフィックを増大させることなく、ノード間で送受信されるパケットを順方向と逆方向で同一の経路（対称経路）で転送することができる経路制御方法、ノードおよび通信システムを得ることを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、本発明は、マルチホップ無線アドホックネットワークを構成するノードにおける経路制御方法であって、他のノードからデータパケットを受信した場合に、そのデータパケットの送信元のノードを宛先ノードとする前記データパケットの送信経路の逆経路を、ノード経路情報として保持する経路保持ステップと、前記ノード経路情報の宛先ノード宛てのデータパケットを中継する場合、または前記ノード経路情報の宛先ノード宛てにデータパケットを送信する場合に、前記ノード経路情報に基づいてデータパケットを送信するデータパケット送信ステップと、他のノードからデータパケットを受信した場合に、前記データパケットに基づいてそのデータパケットの送信元がルートノードであるか否かを判断するルートノード判断ステップと、を含み、前記経路保持ステップでは、前記データパケットの送信元がルートノードであった場合に、そのデータパケットの送信経路の逆経路を前記ノード経路情報として保持する、ことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、各ノードは、データパケットを受信した場合に、そのデータパケットの送信経路の逆経路を保持し、データパケットの送信時または中継時に、そのデータパケットの宛先が保持している逆経路に対応する宛先のノードであった場合に、保持している逆経路を用いてそのデータパケットを送信するようにしたので、経路の有効時間を長く設定する場合に、ノード間で送受信されるパケットを順方向と逆方向で同一の経路（対称経路）で転送することができる、という効果を奏する。
【００１３】
また、順方向と逆方向で同一の経路で転送することにより、ネットワーク管理の容易化（例えば、各ノードの送受信パケット数などのネットワーク管理項目の簡易化、管理インターフェースにおける経路情報の表示、など）、ネットワーク内の障害検出の容易化、などを実現することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施の形態１の通信システムの経路制御手順の一例を示すメッセージフロー図である。
【図２】図２は、オンデマンド型ルーティングプロトコルを用いた経路制御手順を実施する場合のメッセージフロー図である。
【図３】図３は、経路の有効時間を長く設定した従来の経路探索手順の一例を示すメッセージフロー図である。
【図４】図４は、従来の経路制御手順が実施された後の各ノードの経路テーブルの一例を示す図である。
【図５】図５は、実施の形態１の各ノードの経路テーブルおよび経路キャッシュの一例を示す図である。
【図６】図６は、実施の形態１のノードが実施するデータ転送の処理手順の一例を示すフローチャートである。
【図７】図７は、実施の形態２の通信システムの経路制御手順の一例を示すメッセージフロー図である。
【図８】図８は、実施の形態２の各ノードの経路テーブルの一例を示す図である。
【図９】図９は、実施の形態２のノードが実施するデータ転送の処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下に、本発明にかかる経路制御方法、ノードおよび通信システムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１６】
実施の形態１．
図１は、本発明にかかる通信システムの実施の形態１の経路制御手順の一例を示すメッセージフロー図である。本実施の形態の通信システムは、無線アドホックネットワークを構成する複数のノードを備える。図１では、本実施の形態の通信システムを構成するノードとしてルートノードＲ，ノードＡ，ノードＢ，ノードＣ，ノードＤの動作を示している。「Ｒ」は、ルートノードを示している。また、ＲＲＥＱは経路探索要求メッセージ、ＲＲＥＰは経路探索応答メッセージを意味する。
【００１７】
無線アドホックネットワークがセンサー情報のデータ収集システムや制御機器の遠隔操作システムとして用いられる場合、ルートノードＲが、ネットワーク内のノードＡ〜Ｄと定期的にデータを送受信する。無線リソースに制約がある場合には、経路探索手順が行われる頻度を抑えるために、経路探索手順により求めた経路の有効時間を長く設定する。このようなシステムの場合、ルートノードＲは各ノードＡ〜Ｄへの経路情報を保持し、各ノードＡ〜ＤはルートノードＲへの経路情報を保持することになり、ルートノードＲをルート（根）とするツリー（木）構造のネットワークが構築されることになる。本実施の形態では、このように経路の有効時間を長く設定することとする。
【００１８】
つぎに、図１を用いて本実施の形態の動作を説明する。ルートノードＲは、ノードＣへのデータ発生などを契機として、ノードＣへ経路探索手順を開始し、まず、ノードＣへの経路を探索するためのＲＲＥＱ（経路探索要求メッセージ）をブロードキャストする（ステップＳ１１）。ＲＲＥＱを受信したノードＡは、自身が保持する経路テーブルに、そのＲＲＥＱが送信された経路の逆経路であるルートノードＲへの経路を格納する（ステップＳ１２）。
【００１９】
なお、各ノードは、送信先と次ホップの情報を含む経路テーブルを保持することとし、その送信先ごとにその送信先へパケットを届けるために「次にどのノードに転送すれば良いか」（次ホップの情報）を保持していることとする。ステップＳ１１では、具体的には、図１の経路テーブルＡ−１として示すように、経路テーブルに送信先のノードとしてルートノードＲ（図１ではルートノードＲの識別子としてＲと記載）を、次ホップ（図１では次と省略）としてルートノードＲを格納する。なお、ＲＲＥＱには、そのＲＲＥＱの宛先ノード、送信元ノードおよび転送元ノード（前ホップ）を識別する情報がそれぞれ含まれているとする。
【００２０】
ノードＡは、つぎに、ＲＲＥＱをブロードキャストする（ステップＳ１３）。ＲＲＥＱをノードＡから受信したノードＣは、自身が保持する経路テーブルにルートノードＲへの経路を格納する（ステップＳ１４）。具体的には、図１の経路テーブルＣ−１に示すように、に送信先をルートノードＲとし、次ホップをノードＡとするエントリを追加する。
【００２１】
ノードＣは、受信したＲＲＥＱが自局宛であることを識別し、ＲＲＥＰ（経路探索応答メッセージ）を作成し、自身が保持する経路テーブル（経路テーブルＣ−１）を参照して、ＲＲＥＱの送信元であるルートノードＲへの次ホップであるノードＡに生成したＲＲＥＰを送信する（ステップＳ１５）。ＲＲＥＰを受信したノードＡは、経路テーブルにノードＣへの経路エントリを追加する（ステップＳ１６）と共に、経路テーブルを参照して、ルートノードＲにＲＲＥＰを送信する（ステップＳ１７）。ステップＳ１６では、具体的には図１の経路テーブルＡ−２に示すように、送信先をノードＣとし次ホップをノードＣとするエントリを追加する。
【００２２】
ノードＡからＲＲＥＰを受信したルートノードＲは、自身が保持する経路テーブルにノードＣへのエントリを格納する（ステップＳ１８）。具体的には、図１の経路テーブルＲ−１に示すように、送信先をノードＣとし次ホップをノードＡとするエントリを格納する。
【００２３】
その後、ルートノードＲは、ノードＤへのデータ発生などを契機として、ノードＤへ経路探索手順を開始し、まず、ノードＤへの経路を検索するためのＲＲＥＱをブロードキャストする（ステップＳ１９）。ＲＲＥＱを受信したノードＢは、自身が保持する経路テーブルに受信したＲＲＥＱの逆経路であるルートノードＲへの経路を格納し（ステップＳ２０）、ＲＲＥＱをブロードキャストする（ステップＳ２１）。具体的には、図１の経路テーブルＢ−１に示すように、送信先をルートノードＲとし次ホップをルートノードＲとするエントリを格納する。
【００２４】
ノードＢからＲＲＥＱを受信したノードＣは、自身が保持する経路テーブルに、受信したＲＲＥＱの逆経路であるルートノードＲへの経路を格納するとともに（ステップＳ２２）、ＲＲＥＱをブロードキャストする（ステップＳ２３）。なお、ステップＳ２２で経路を格納するまでは、経路テーブルＣ−１に示すようにルートノードＲに対応する次ホップはノードＡと格納されている。この場合、ステップＳ２２では、図１の経路テーブルＣ−２に示すように、ルートノードＲを送信先とするエントリの次ホップをノードＢに書き換える。このように、各ノードは、自身が保持する経路テーブルに送信先が同一のエントリが既にある場合には、あらたに受信したＲＲＥＱ等の経路に基づいて次ホップを更新する。
【００２５】
ノードＣからＲＲＥＱを受信したノードＤは、ＲＲＥＱの受信経路に基づいて経路テーブルにルートノードＲへの経路を格納する（ステップＳ２４）。具体的には、図１の経路テーブルＤ−１に示すように送信先をルートノードＲとし次ホップをノードＣとするエントリを格納する。
【００２６】
ノードＤは受信したＲＲＥＱが自局宛であることを識別し、ＲＲＥＰを作成し、自身が保持する経路テーブル（経路テーブルＤ−１）を参照して、ＲＲＥＱの送信元のルートノードＲへの次ホップであるノードＣにＲＲＥＰを送信する（ステップＳ２５）。ＲＲＥＰを受信したノードＣは、自身が保持する経路テーブルにノードＤへのエントリを格納し（ステップＳ２６）、経路テーブルを参照して宛先ルートノードＲへの次ホップであるノードＢへＲＲＥＰを送信する（ステップＳ２７）。ステップＳ２６では、具体的には、図１の経路テーブルＣ−３に示すように、ノードＤを送信先とし次ホップをノードＤとするエントリを追加する。
【００２７】
ノードＣからＲＲＥＰを受信したノードＢは、自身が保持する経路テーブルにノードＤへの経路を追加し（ステップＳ２８）、経路テーブルを参照して宛先ルートノードＲへの次ホップであるルートノードＲへＲＲＥＰを送信する（ステップＳ２９）。ステップＳ２８では、具体的には、図１の経路テーブルＢ−２に示すように、ノードＤを送信先とし次ホップをノードＣとするエントリを追加する。
【００２８】
ＲＲＥＰを受信したルートノードＲは、自身が保持する経路テーブルにノードＤへの経路を追加する（ステップＳ３０）。具体的には、図１の経路テーブルＲ−２に示すように、ノードＤを送信先とし次ホップをノードＢとするエントリを追加する。
【００２９】
以上のステップＳ３０までを行った状態で、ルートノードＲでノードＣへの送信データ（Ｄａｔａ）が発生したとする（ステップＳ３１）。ルートノードＲは、自身が保持する経路テーブル（経路テーブルＲ−２の状態）に基づいて送信先をノードＣとする場合の次ホップであるノードＡを求め、ノードＡへ向けてＤａｔａを送信する（ステップＳ３２）。なお、Ｄａｔａには、宛先のノードと送信元のノードとおよび経緯したノードに関する情報が含まれているとする。
【００３０】
ルートノードＲからＤａｔａを受信したノードＡは、Ｄａｔａに基づいて送信元がルートノードであるルートノードＲであることを認識し、経路キャッシュとしてＤａｔａの送信経路の逆経路を格納する（ステップＳ３３）。経路キャッシュには送信元と送信先（宛先）と次ホップを含むこととする。具体的には、ステップＳ３３では、図１の経路キャッシュＡｔ−１に示すように、送信先をルートノードＲとし、送信元をノードＣとし、次ホップをルートノードＲとするエントリを格納する。
【００３１】
ノードＡは、つぎに、保持している経路テーブル（経路テーブルＡ−２の状態）を参照し、ノードＣへの次ホップであるノードＣにＤａｔａを送信する（ステップＳ３４）。ノードＡからＤａｔａを受信したノードＣは、Ｄａｔａに含まれる送信元ノード、送信先ノードおよび前ホップのノードの情報に基づいて、経路キャッシュにＤａｔａの送信経路の逆経路を格納する（ステップＳ３５）。具体的には、図１の経路キャッシュＣｔ−１に示すように、送信先をルートノードＲとし、送信元をノードＣとし、次ホップをノードＡとするエントリを格納する。
【００３２】
Ｄａｔａを受信したノードＣでは、アプリケーションが、受信したＤａｔａに対応してルートノードＲへの送信データ（Ｄａｔａ）が発生する動作が想定される。この時点では、ノードＣでは、ルートノードＲへの経路として経路テーブル（経路テーブルＣ−３の状態）では次ホップはノードＢと設定されており、経路キャッシュ（経路キャッシュＣｔ−１の状態）では、次ホップはノードＡと設定されている。このように経路テーブルと経路キャッシュに同一の送信先のデータが存在する場合には、経路キャッシュの経路を優先して参照とすることとする。したがって、ノードＣは、ルートノードＲへのＤａｔａを、自身が保持する経路キャッシュを参照して、次ホップであるノードＡへ送信する（ステップＳ３６）。保持している経路キャッシュを用いたデータ送信を終了すると、ノードＣは、図１の経路キャッシュＣｔ−２に示すように経路キャッシュの情報をクリアする（ステップＳ３７）。
【００３３】
ノードＣからＤａｔａを受信したノードＡは、経路キャッシュ（経路キャッシュＡｔ−１の状態）を優先的に参照し、Ｄａｔａの送信先のルートノードＲへの次ホップであるルートノードＲへＤａｔａを送信する（ステップＳ３８）、送信を完了すると、図１の経路キャッシュＡ−２に示すように、経路キャッシュの情報をクリアする（ステップＳ３９）。
【００３４】
このように、本実施の形態では、ルートノードＲからのＤａｔａの転送の際に、転送経路上の各ノードでは、そのＤａｔａの送信経路の逆経路を経路キャッシュとして保持する。その経路キャッシュを用いた送信を終了すると経路キャッシュをクリアしている。また、経路キャッシュと経路テーブルの両方に送信先のノードが存在する場合には、経路キャッシュを優先して参照するようにしている。すなわち、各ノードは、経路キャッシュを保持する経路保持手段と、経路キャッシュを優先して参照してデータパケットを送信する送信手段と、を備えている。
【００３５】
ここで、従来の無線アドホックネットワークでの経路制御手順について説明する。図２は、本実施の形態の通信システムと同様の構成の通信システムにおいて従来のオンデマンド型ルーティングプロトコルを用いた経路制御手順を実施する場合のメッセージフロー図である。
【００３６】
まず、ルートノードＲは、ノードＣへのデータが発生した場合（Ｓ４１）、図１で説明した本実施の形態と同様のステップＳ１１〜ステップＳ１８を実施し、ノードＣへの経路探索を実施する。そして、発生したデータ（Ｄａｔａ）を保持している経路テーブル（経路テーブルＲ−１の状態）に基づいて、ノードＡへ送信する（ステップＳ４２）。ノードＡは、自身が保持する経路テーブル（経路テーブルＡ−２の状態）に基づいて、ＤａｔａをノードＣへ転送する（ステップＳ４３）。
【００３７】
ノードＣは、ノードＡからＤａｔａを受信すると、ルートノードＲ宛てのＤａｔａを生成し、生成したＤａｔａを保持している経路テーブル（経路テーブルＣ−１の状態）に基づいてノードＡへ送信する（ステップＳ４４）。ノードＡは、ノードＣから受信したＤａｔａを、経路テーブル（経路テーブルＡ−２の状態）に基づいてルートノードＲへ送信する（ステップＳ４５）。
【００３８】
同様に、ルートノードＲで、ノードＤへのデータが発生したとする（ステップＳ４６）。オンデマンド型ルーティングプロトコルを用いる場合は、経路探索手順により確立された各経路の有効時間は短く、ここでは、ノードＤへのデータが発生した時点でステップＳ１１〜ステップＳ１８により各ノードが格納したルートノードＲとノードＣ間の経路に関するエントリはクリアされているとする。
【００３９】
ルートノードＲは、ノードＤへの経路を探索するための経路探索手順を開始し、まず、ＲＲＥＱをブロードキャストする（ステップＳ４７）。ブロードキャストによりルートノードＲが送信したＲＲＥＱは、ノードＡおよびノードＢが受信する。各ノードでの中継処理は、中継対象のメッセージ等を受信してからランダムな時間後に中継処理が完了し、中継先に転送されるとする。２つの経路がある場合には、先に中継処理が終了したノードから送信された中継経路が有効となる。ここでは、ノードＢの中継処理が先に処理され、ノードＢの処理が有効になる場合を想定する。
【００４０】
ＲＲＥＱを受信したノードＢは、自身が保持する経路テーブルにＲＲＥＱの送信経路の逆経路を格納し（ステップＳ４８）、ＲＲＥＱをブロードキャストする（ステップＳ４９）。具体的には、図２の経路テーブルＢ−１に示すように、ルートノードＲを送信先とし次ホップをルートノードＲとするエントリを格納する。
【００４１】
ノードＢからＲＲＥＱを受信したノードＣは、自身が保持する経路テーブルにＲＲＥＱの送信経路の逆経路を格納し（ステップＳ５０）、ＲＲＥＱをブロードキャストする（ステップＳ５１）。具体的には、図２の経路テーブルＣ−２に示すように、ルートノードＲを送信先とし次ホップをノードＢとするエントリを格納する。
【００４２】
ノードＣからＲＲＥＱを受信したノードＤは、自身が保持する経路テーブルにＲＲＥＱの送信経路の逆経路を格納する（ステップＳ５２）。具体的には、図２の経路テーブルＤ−１に示すように、ルートノードＲを送信先とし次ホップをノードＣとするエントリを格納する。
【００４３】
また、ノードＤは、受信したＲＲＥＱが自局宛であることを識別し、ＲＲＥＰを作成し、自身が保持する経路テーブル（図２の経路テーブルＤ−１の状態）を参照して、ＲＲＥＰの宛先であるルートノードＲへの次ホップであるノードＣにＲＲＥＰを送信する（ステップＳ５３）。ノードＤからＲＲＥＰを受信したノードＣは、経路テーブルにＲＲＥＰの送信経路の逆経路を格納し（ステップＳ５４）、経路テーブルを参照してＲＲＥＰをノードＢへ送信する（ステップＳ５５）。ステップＳ５４では、具体的には、図２の経路テーブルＣ−３に示すように、ノードＤを送信先とし次ホップをノードＤとするエントリを格納する。
【００４４】
ノードＣからＲＲＥＰを受信したノードＢは、経路テーブルにＲＲＥＰの送信経路の逆経路を格納し（ステップＳ５６）、経路テーブルを参照してＲＲＥＰをルートノードＲへ送信する（ステップＳ５７）。ステップＳ５６では、具体的には、図２の経路テーブルＢ−２に示すように、ノードＤを送信先とし次ホップをノードＣとするエントリを格納する。
【００４５】
ノードＢからＲＲＥＰを受信したルートノードＲは、経路テーブルにＲＲＥＰの送信経路の逆経路を格納する（ステップＳ５８）。具体的には、図２の経路テーブルＲ−２に示すように、ノードＤを送信先とし次ホップをノードＢとするエントリを格納する。
【００４６】
このようにして、ノードＤへの経路の探索を終了したルートノードＲは、経路テーブルを参照し、Ｄａｔａの宛先であるノードＤへの次ホップであるノードＢへ、Ｄａｔａを送信する（ステップＳ５９）。Ｄａｔａを受信したノードＢは、自身が保持する経路テーブルを参照し、ノードＣへＤａｔａを送信し（ステップＳ６０）、Ｄａｔａを受信したノードＣは、自身が保持する経路テーブルを参照し、ノードＤへＤａｔａを送信する（ステップＳ６１）。
【００４７】
Ｄａｔａを受信したノードＤでは、アプリケーション等がそのＤａｔａに対応して、ルートノードＲを宛先とするＤａｔａを生成する。そして、ノードＤは、生成したＤａｔａを、保持する経路テーブルを参照してノードＣへ送信する（ステップＳ６２）。Ｄａｔａを受信したノードＣは、自身が保持する経路テーブルを参照して、ＤａｔａをノードＢへ送信する（ステップＳ６３）。Ｄａｔａを受信したノードＢは、自身が保持する経路テーブルを参照して、ＤａｔａをルートノードＲへ送信する（ステップＳ６４）。
【００４８】
以上のように、オンデマンド型ルーティングプロトコルでは、経路の有効時間を短くし、送信データが発生するごとに経路探索手順を行うため、ノード間で送受信されるパケットは順方向と逆方向の両方向とも同一の経路を用いて通信が行われる。しかし、パケットの送信のたびに経路探索手順が行われるため、経路探索手順に要するトラフィックが増大する。
【００４９】
これに対し、トラフィックの増大を防ぐために経路の有効時間を長く設定した従来技術もある。図３は、経路の有効時間を長く設定した従来の経路探索手順の一例を示すメッセージフロー図である。図３を用いて、経路の有効時間を長く設定した従来の経路探索手順を説明する。ルートノード１が上述のルートノードＲに対応し、ノード２−１，２−２，２−３，２−４が、それぞれノードＡ，Ｂ，Ｃ，Ｄに対応している。
【００５０】
ステップＳ１１〜ステップＳ３１は、図１で説明した本実施の形態の動作と同様である。ステップＳ３１で、送信先Ｃの送信データ（Ｄａｔａ）が発生すルートノードＲは、保持している経路情報（図３の経路情報Ｒ−２の状態）に基づいて、ノードＡへＤａｔａを送信する（ステップＳ７１）。Ｄａｔａを受信したノードＡは、保持している経路テーブル（図３の経路テーブルＡ−２の状態）に基づいてノードＣへＤａｔａを送信する（ステップＳ７２）。
【００５１】
ノードＣは、Ｄａｔａを受信すると、アプリケーション等がルートノードＲへのＤａｔａを生成し、生成したＤａｔａを保持している経路テーブル（図３の経路テーブルＣ−３の状態）に基づいて、ノードＢへ送信する（ステップ７３）。Ｄａｔａを受信したノードＢは、保持している経路テーブル（経路テーブルＢ−２の状態）に基づいてＤａｔａをルートノードＲへ送信する（ステップＳ７４）。
【００５２】
以上のように、経路の有効期限内に複数の探索先について経路探索手順を行うと、同一送信先の情報については経路探索ごとに経路テーブルが更新され、ノード間で送受信されるパケットが順方向と逆方向で異なる非対称経路が用いられるケースが発生する。
【００５３】
図３の例について、補足して説明する。図４は、従来の経路制御手順が実施された後の各ノードの経路テーブルの一例を示す図である。図中のＲ，Ａ，Ｂ，Ｃ，ＤはそれぞれルートノードＲ，ノードＡ，ノードＢ，ノードＣ，ノードＤを示している。図４では、図３のステップＳ７１〜ステップＳ７４が実施される時点（ステップＳ３０までが実施されている）での、経路テーブルを示している。
【００５４】
この状態で、ルートノードＲがノードＣへＤａｔａを送信する場合、各ノードは、自身が経路テーブルに基づいてデータの送信を行い、ノードＡを経由した経路で送信される（ステップＳ７１，７２）。これに対し、ノードＣでルートノードＲへの送信データが発生した場合、各ノードは、自身が経路テーブルに基づいてデータの送信を行い、ノードＢを経由した経路で送信される。したがって、ルートノードＲとノードＣ間のデータ送受信が、順方向と逆方向で異なる経路、すなわち非対称な経路で行われることになる。これに対し、本実施の形態では、図１で説明したとおり、経路キャッシュを用いることにより順方向と逆方向で同一の経路を用いることができる。
【００５５】
つぎに、本実施の形態の経路制御について、補足して説明する。図５は、本実施の形態の各ノードの経路テーブルおよび経路キャッシュの一例を示す図である。図中のＲ，Ａ，Ｂ，Ｃ，ＤはそれぞれルートノードＲ，ノードＡ，ノードＢ，ノードＣ，ノードＤを示している。図５は、図１で示したステップＳ３４までが実施された後の各ノードの経路テーブルおよび経路キャッシュの状態を示している。
【００５６】
この状態で、ノードＣでルートノードＲへのＤａｔａが発生した場合、ノードＣは経路キャッシュ（図５の経路キャッシュＣｔ−１）を優先的に参照し、ノードＡにＤａｔａを送信する（ステップＳ３６）。Ｄａｔａを受信したノードＡは、経路キャッシュ（図５の経路キャッシュＡ−１）を参照しルートノードＲに、Ｄａｔａを送信する（ステップＳ３８）。このように、本実施の形態では、ルートノードＲからノードＣへの経路と、ノードＣからルートノードＲへの経路は、同一の経路（対称経路）となる。
【００５７】
ここで、たとえば、ルートノードＲからノードＤへのデータ伝送に対する応答ではなく、ノードＤで、新たにルートノードＲ宛のＤａｔａが発生した場合の動作を説明する。ノードＤは、自身が保持する経路テーブル（図５の経路テーブルＤ−１）を参照し、ノードＣにＤａｔａを送信する（ステップＳ７５）。Ｄａｔａを受信したノードＣは、自身が保持する経路キャッシュ（経路キャッシュＣ−１）を優先的に参照するが、送信元がノードＤで送信先がルートノードＲの経路のエントリは格納されていない。そこで、ノードＣは、経路テーブル（経路テーブルＣ−３）を参照し、ルートノードＲの送信先に対応する次ホップであるノードＢにＤａｔａを送信する（ステップＳ７６）。Ｄａｔａを受信したノードＢは、経路テーブル（図５の経路テーブルＢ−２）を参照し、ルートノードＲへＤａｔａを送信する（ステップＳ７７）。
【００５８】
以上のように、経路キャッシュは、送信元と送信先の対をキーとして格納しており、経路キャッシュに格納されている送信元および送信先のデータについては、各ノードが保持している経路テーブルを用いた従来通りの動作を行うことができる。これにより、従来の経路制御プロトコルに備わる多様な機能を生かしながら、対称経路による通信を実現できる。
【００５９】
また、データパケットの送信元がルートノードである場合についてのみ、受信したデータの送信経路の逆経路を経路キャッシュに格納するようにすると、一般のノードからの送信されたデータパケットによる影響を除くことができ、通信システム全体を管理する役割を担う、ルートノードからの順方向の経路に対して逆方向の経路を一致させることができる。
【００６０】
つぎに、本実施の形態の各ノードの動作を説明する。図６は、本実施の形態のノードが実施するデータ転送の処理手順の一例を示すフローチャートである。まず、ノードは、データパケットを受信する（ステップＳ８１）と、受信したデータパケットの送信元がルートノードであるかどうかを判別する（ステップＳ８２）。送信元がルートノードである場合（ステップＳ８２  Ｙｅｓ）、経路キャッシュにそのデータパケットの送信経路の逆経路を登録（格納）する（ステップＳ８３）。ここで、経路キャッシュは、前述のように送信元、送信先、次ホップの情報を含む。
【００６１】
ステップＳ８３の後、受信したデータパケットの送信先が自局かどうかを判別し（ステップＳ８４）、送信先が自局である場合（ステップＳ８４  Ｙｅｓ）は処理終了し、アプリケーションにデータパケットを渡す。
【００６２】
また、ステップＳ８２で送信元がルートノードでないと判別した場合（ステップＳ８２  Ｎｏ）は、ステップＳ８４に進む。
【００６３】
送信先が自局でない場合（ステップＳ８４  Ｎｏ）、および自身がデータパケットを送信する場合（ステップＳ９１）は、経路キャッシュを優先的に参照し、経路キャッシュに受信したデータパケットまたは送信するデータパケットの送信先および送信元に対応するエントリが登録されているかを判断する（ステップＳ９２）。経路キャッシュに登録がある場合（ステップＳ９２  Ｙｅｓ）は、経路キャッシュに格納された次ホップのノードへデータパケットを送信する（ステップＳ９３）。ステップＳ９３の送信が完了したら、経路キャッシュの該当エントリを削除し（ステップＳ９４）、処理を終了する。
【００６４】
ステップＳ９２で経路キャッシュに登録がないと判断した場合（ステップＳ９２  Ｎｏ）は、経路テーブルを参照し、経路テーブルに受信したデータパケットまたは送信するデータパケットの送信先に該当するエントリがあるか否かを判断する（ステップＳ９５）。経路テーブルに該当するエントリが無い場合（ステップＳ９５  Ｎｏ）、従来通りのその送信先への経路を探索するための経路探索手順を実行し（ステップＳ９６）、ステップＳ９７へ進む。
【００６５】
経路テーブルに該当するエントリが有る場合（ステップＳ９５  Ｙｅｓ）、経路テーブルに格納された次ホップのノードへデータパケットを送信し（ステップＳ９７）、処理を終了する。
【００６６】
以上のように、本実施の形態では、経路の有効時間を長く設定し、各ノードは従来と同様の経路テーブルを保持するとともに、ルートノードからのデータパケットを受信した場合に、そのデータパケットの送信経路の逆経路の送信元ノードと送信先ノードと次ホップノードとを経路キャッシュとして保持する。そして、各ノードは経路テーブルと経路キャッシュの両方に対応するエントリがある場合、経路キャッシュの経路を優先して用いるようにした。そのため、経路探索手順に要するトラフィックを増大させることなく、経路探索のためのトラフィックルートノードから各ノードへの経路と、ノードからルートノードへの経路を対称経路とすることができる。
【００６７】
また、経路キャッシュに該当しないデータパケットについては、経路テーブルを用いた従来通りの動作を行うことができ、従来の経路制御プロトコルに備わる多様な機能を生かしながら、対称経路による通信を実現できる。また、経路キャッシュを用いてノードからルートノードへのデータ伝送が完了する時点で経路キャッシュをクリアしている。これにより、タイマを用いて経路キャッシュをクリアする必要がなく、一時的な経路として対称経路による通信を実現できる。
【００６８】
実施の形態２．
図７は、本発明にかかる通信システムの実施の形態２の経路制御手順の一例を示すメッセージフロー図である。本実施の形態の通信システムの構成は、実施の形態１と同様である。図７では、実施の形態１と同様に、本実施の形態の通信システムを構成するノードとしてルートノードＲ，ノードＡ，ノードＢ，ノードＣ，ノードＤの動作を示している。ルートノードＲは、ルートノードを示している。
【００６９】
実施の形態１では、各ノードが経路テーブルとは別に経路キャッシュを備えたが、本実施の形態では、経路テーブルと経路キャッシュを区別せず、ルートノードからのデータパケットを受信した場合に、経路テーブルを更新する。
【００７０】
図７を用いて本実施の形態の動作を説明する。ステップＳ１１〜ステップＳ３２は、実施の形態１の図１で説明した動作と同様である。ステップＳ３２の後、ルートノードＲからＤａｔａを受信したノードＡは、Ｄａｔａの送信元がルートノードであるルートノードＲであることを判別し、ルートノードＲへの逆経路を経路テーブルへ格納するが、この場合、経路テーブル（図７の経路テーブルＡ−２の状態）にはすでにこの経路は格納済みであるため変更はない。ノードＡは、経路テーブルを参照し、次ホップであるノードＣにＤａｔａを送信する（ステップＳ１０１）。
【００７１】
Ｄａｔａを受信したノードＣは、Ｄａｔａの送信元がルートノードであるルートノードＲであることを判別し、ルートノードＲへの逆経路を経路テーブルへ格納する（ステップＳ１０２）。具体的には、図７の経路テーブルＣ−４に示すように、ルートノードＲを送信先とし次ホップをノードＡとするエントリを格納する。ここで、ステップＳ１０２の実施前には、ルートノードＲへの次ホップは、図７の経路テーブルＣ−３に示すようにノードＢであったが、ステップＳ１０２の実施により、経路テーブルＣ−４ではルートノードＲへの次ホップはノードＡに更新される。
【００７２】
Ｄａｔａを受信したノードＣでは、アプリケーションが、ルートノードＲへのデータ（Ｄａｔａ）を生成するとする。ノードＣは、自身が保持する経路テーブル（図７の経路テーブルＣ−４の状態）を参照し、生成したＤａｔａをノードＡへ送信する（ステップＳ１０３）。Ｄａｔａを受信したノードＡは、自身が保持する経路テーブル（図７の経路テーブルＡ−２の状態）を参照し、ルートノードＲへＤａｔａを送信する（ステップＳ１０４）。
【００７３】
以上のように、ルートノードであるルートノードＲからのデータパケットの受信または転送時に、ルートノードＲへの経路を経路テーブルに格納し、データパケットの送信および転送時に該経路テーブルを参照しているので、ルートノードＲからノードＡ〜Ｄへの経路と、ノードＡ〜ＤからルートノードＲへの経路が同一（対称経路）となる。
【００７４】
つぎに、本実施の形態のデータ転送経路について、補足説明する。図８は、本実施の形態の各ノードの経路テーブルの一例を示す図である。図８は、図７に示したステップＳ１０２を実施した時点で各ノードが保持する経路テーブルを示している。
【００７５】
この状態で、ノードＣでルートノードＲへのデータが発生すると、ノードＣは、自身が保持する経路テーブル（経路テーブルＣ−４の状態）を参照し、データの送信先であるルートノードＲに対応するノードＡにＤａｔａを送信する（ステップＳ１０３）。Ｄａｔａを受信したノードＡは、自身が保持する経路テーブル（経路テーブルＡ−２の状態）を参照し、ルートノードＲに、Ｄａｔａを送信する（ステップＳ１０４）。このように、ルートノードであるルートノードＲからノードＣへの経路と、ノードＣからルートノードＲへの経路は、同一の経路（対称経路）となる。
【００７６】
また、この状態で、たとえば、ルートノードＲからノードＤへのデータ伝送に対する応答ではなく、ノードＤで、新たにルートノードＲ宛のＤａｔａが発生した場合の動作を説明する。この場合、ノードＤは、自身が保持する経路テーブル（図８の経路テーブルＤ−１の状態）を参照し、生成したＤａｔａをノードＣに送信する（ステップＳ１０５）。Ｄａｔａを受信したノードＣは、自身が保持する経路テーブル（図８の経路テーブルＣ−４の状態）を参照し、送信先のルートノードＲに対応する次ホップであるノードＡにＤａｔａを送信する（ステップＳ１０６）。Ｄａｔａを受信したノードＡは、自身が保持する経路テーブル（経路テーブルＡ−２の状態）を参照し、ルートノードＲへＤａｔａを送信する（ステップＳ１０７）。
【００７７】
以上のように、本実施の形態では、ルートノードからのデータパケットの受信または転送時に、ルートノードへの経路を経路テーブルに格納するので、経路キャッシュを別途備えることなく、ルートノードＲからノードＡ〜Ｄへの経路と、ノードＡ〜ＤからルートノードＲへの経路が同一となる。ただし、該当ノード以外のノード（たとえば、図８の場合のルートＤ）に関する経路が、通常の経路探索手順による経路と異なる場合があることに注意が必要である。
【００７８】
つぎに、本実施の形態の各ノードの動作を説明する。図９は、本実施の形態のノードが実施するデータ転送の処理手順の一例を示すフローチャートである。ステップＳ８１，ステップＳ８２は実施の形態１と同様である。ステップＳ８２で受信したデータパケットの送信元がルートノードである場合（ステップＳ８２  Ｙｅｓ）、自身が保持する経路テーブルのルートノードへの経路のエントリを受信したデータパケットの送信経路の逆経路に更新する（ステップＳ８３ａ）。なお、ステップＳ８３ａでは、経路テーブルにルートノードへの経路のエントリがない場合には、ルートノードへの経路のエントリを格納する。
【００７９】
つぎに、受信したデータパケットが自局宛てであるか否かを判断し（ステップＳ８４ａ）、自局宛てである場合（ステップＳ８４ａ  Ｙｅｓ）、処理を終了し、アプリケーションにデータパケットを渡す。送信先が自局でない場合（ステップ８４ａ  Ｎｏ）、およびデータパケットを送信する場合（ステップＳ９１）には、実施の形態１と同様のステップＳ９５を実施する。またステップＳ９６，９７は実施の形態１と同様である。
【００８０】
以上のように、本実施の形態では、各ノードが、ルートノードからの受信したデータパケットの転送時に、ルートノードへの経路を経路テーブルに格納し、データパケットの送信および転送時に経路テーブルを参照する。そのため、ルートノードからノードへの経路と、ノードからルートノードへの経路が同一（対称経路）となる。また、実施の形態１では、各ノードが経路キャッシュを用いたが、本実施の形態では経路キャッシュを用いる必要がない。
【産業上の利用可能性】
【００８１】
以上のように、本発明にかかる経路制御方法、ノードおよび通信システムは、マルチホップ無線アドホックネットワークに有用であり、特に、無線リソースに制約のある通信システムに適している。
【符号の説明】
【００８２】
１  ルートノード
２−１〜２−４  ノード
【図１】
0005424818.tif 000002
【図２】
0005424818.tif 000003
【図３】
0005424818.tif 000004
【図４】
0005424818.tif 000005
【図５】
0005424818.tif 000006
【図６】
0005424818.tif 000007
【図７】
0005424818.tif 000008
【図８】
0005424818.tif 000009
【図９】
0005424818.tif 000010