(57)【特許請求の範囲】
【請求項１】
最大スリープ時間を設定した無線マルチホップネットワークに含まれる隣接ノードからの、前記隣接ノードの同期パケット送信時刻から復帰時刻までの相対復帰時刻を含む前記同期パケットの受信に応答して、前記隣接ノードの相対復帰時刻に基づいて決定した復帰時刻から、所与の条件から決定したアクティブ時間の間継続する、前記隣接ノードと通信可能なアクティブ状態と、
前記アクティブ時間経過後の休止時刻からの、前記隣接ノードと通信不可能なスリープ状態とを有することを特徴とする無線マルチホップ通信装置。
【請求項２】
前記所与の条件は、省電力に係る条件と前記同期パケットに含まれる前記隣接ノードのアクティブ時間とのいずれか一方であることを特徴とする請求項1記載の無線マルチホップ通信装置。
【請求項３】
前記スリープ状態は、高々、前記最大スリープ時間から前記アクティブ時間を減じた時間であることを特徴とする請求項2記載の無線マルチホップ通信装置。
【請求項４】
前記隣接ノードの複数の前記相対復帰時刻が前記同期パケットに含まれるとき、前記最大スリープ時間の間に、前記アクティブ状態と前記スリープ状態との状態変化を前記複数に対応する回数繰り返すことを特徴とする請求項3記載の無線マルチホップ通信装置。
【請求項５】
複数の前記隣接ノードからの複数の前記同期パケットを受信したとき、前記複数の同期パケットに含まれる各々の相対復帰時刻に応じて、自ノードの前記復帰時刻を決定することを特徴とする請求項3記載の無線マルチホップ通信装置。
【請求項６】
前記無線マルチホップネットワークに含まれる他の隣接ノードからの、通信経路を構築するためのルーティングパケットとデータパケットとのいずれか一方のパケットの受信に応答して、前記アクティブ状態にあるときに、前記パケットを前記隣接ノードへ送信することを特徴とする請求項3記載の無線マルチホップ通信装置。
【請求項７】
前記パケットを受信したときが前記隣接ノードと通信不可能なスリープ状態にあるとき、前記パケットの前記隣接ノードへの送信を、前記アクティブ状態になるまで待つことを特徴とする請求項6記載の無線マルチホップ通信装置。
【請求項８】
最大スリープ時間を設定した無線マルチホップネットワークに含まれる隣接ノードからの、前記隣接ノードの同期パケット送信時刻から復帰時刻までの相対復帰時刻を含む前記同期パケットを受信する無線通信部、
前記無線通信部が受信した前記同期パケットに含まれる前記隣接ノードの相対復帰時刻に基づいて決定した復帰時刻から所与の条件から決定したアクティブ時間の間、前記隣接ノードと通信可能なアクティブ状態を継続するCPU、及び
前記アクティブ時間経過後の休止時刻からの、前記隣接ノードと通信不可能なスリープ状態の継続するスリープ時間を制御するタイマを有することを特徴とする無線マルチホップ通信装置。
【請求項９】
前記所与の条件は、省電力に係る条件と前記同期パケットに含まれる前記隣接ノードのアクティブ時間とのいずれか一方であることを特徴とする請求項8記載の無線マルチホップ通信装置。
【請求項１０】
前記スリープ状態は、高々、前記最大スリープ時間から前記アクティブ時間を減じた時間であることを特徴とする請求項9記載の無線マルチホップ通信装置。
【請求項１１】
前記CPUは、前記アクティブ状態に復帰するために必要な電力以外の電力消費を可能な限り抑制した前記スリープ状態に移行させるためのスリープ命令を、前記休止時刻に実行することを特徴とする請求項10記載の無線マルチホップ通信装置。
【請求項１２】
前記スリープ時間の終了時に、前記タイマは前記CPUに復帰信号を出力し、前記復帰信号の入力に応答して前記CPUは前記スリープ状態から前記アクティブ状態へ移行させることを特徴とする請求項10記載の無線マルチホップ通信装置。
【請求項１３】
前記無線通信部は、前記無線マルチホップネットワークに含まれる他の隣接ノードからの、通信経路を構築するためのルーティングパケットとデータパケットとのいずれか一方のパケットを受信し、前記アクティブ状態にあるときに、前記無線通信部が前記パケットを前記隣接ノードへ送信するように、前記CPUが前記無線通信部を制御することを特徴とする請求項10記載の無線マルチホップ通信装置。
【請求項１４】
前記パケットを受信したときが前記隣接ノードと通信不可能なスリープ状態にあるとき、前記パケットを保存するメモリを有することを特徴とする請求項13記載の無線マルチホップ通信装置。
【請求項１５】
最大スリープ時間を設定した無線マルチホップネットワークに含まれる無線マルチホップ通信装置は、隣接ノードからの、前記隣接ノードの同期パケット送信時刻から復帰時刻までの相対復帰時刻を含む前記同期パケットを受信し、前記隣接ノードの相対復帰時刻に基づいて復帰時刻を決定し、
前記隣接ノードと通信可能なアクティブ状態を継続するアクティブ時間を、所与の条件から決定し、
前記アクティブ時間経過後の時刻を前記隣接ノードと通信不可能なスリープ状態に移行する休止時刻とすることを特徴とする無線マルチホップ通信制御方法。
【請求項１６】
前記所与の条件は、省電力に係る条件と前記同期パケットに含まれる前記隣接ノードのアクティブ時間とのいずれか一方であることを特徴とする請求項15記載の無線マルチホップ通信制御方法。
【請求項１７】
前記スリープ状態は、高々、前記最大スリープ時間から前記アクティブ時間を減じた時間であることを特徴とする請求項16記載の無線マルチホップ通信制御方法。
【請求項１８】
前記無線マルチホップ通信装置は、前記無線マルチホップネットワークに含まれる他の隣接ノードからの、通信経路を構築するためのルーティングパケットとデータパケットとのいずれか一方のパケットを受信し、
前記パケットを前記アクティブ状態にあるときに、前記隣接ノードへ送信することを特徴とする請求項17記載の無線マルチホップ通信制御方法。
【請求項１９】
前記パケットを受信したときが前記隣接ノードと通信不可能なスリープ状態にあるとき、前記パケットの前記隣接ノードへの送信を、前記アクティブ状態になるまで待つことを特徴とする請求項18記載の無線マルチホップ通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、無線マルチホップネットワークにおいて、パケットを中継するノード（無線マルチホップ通信装置）とその通信制御方法に係り、特に隣接ノードと通信するための同期技術に関する。
【背景技術】
【０００２】
無線ネットワークにおいて、ノード間で動的に無線マルチホップネットワークを構成するアドホックネットワークという技術がある。アドホックネットワークでは、各ノードがパケットの中継機能を持ち、各ノードのルーティングテーブルにしたがいパケットを送信／転送することでマルチホップ通信を行う。アドホックネットワークでは、バッテリ駆動の中継ノードを配置することで配線工事を行わずに無線ネットワークを構築することが可能となるが、中継ノードのバッテリ切れにより無線通信エリアが狭くなったり、通信不可能になったりする。無線ネットワークを長時間使用するためには、中継ノードの省電力化を行うことが望ましい。無線マルチホップネットワークにおいて、中継ノードの省電力化を行う技術として特許文献1に記載の技術がある。特許文献1記載の省電力化技術は、中継ノードの時刻を基地局の時刻に合わせ（時刻同期）、決まった時刻に前記中継ノードがスリープし、復帰することで間欠動作を行う。また中継ノードの時刻同期を行わずに間欠動作を行う技術に特許文献2に記載の技術がある。
【０００３】
【特許文献１】特開2007-116408号公報
【特許文献２】特開2007-318676号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献1に記載の技術により無線マルチホップネットワークを構成する中継ノードが通信可能な時刻に復帰、スリープを行うことが可能となるが時刻同期を行うための基地局が必要となる。しかしながら、バッテリ駆動の中継ノードを配置し即座に無線ネットワークを構築する場合、時刻同期を行う基地局が存在するとは限らず、時刻同期がとれずに間欠動作の同期を取ることが出来ないという課題がある。
【０００５】
また、特許文献2に記載の技術では中継ノード間の時刻同期を行わずに間欠動作での通信を可能としているが、通信経路（通信相手）はあらかじめ決められ、応答の送受信後の所定期間の休止により同期を維持しており、中継ノードを配置し、動的に通信経路を構築することや同期を新たに確立することは考慮されていない。
【課題を解決するための手段】
【０００６】
本発明の無線マルチホップ通信装置及びその通信制御方法は、最大スリープ時間を設定した無線マルチホップネットワークに含まれる隣接ノードからの、隣接ノードの相対復帰時刻（同期パケット送信時刻から復帰時刻までの時刻）を含む同期パケットの受信に応答して、隣接ノードの相対復帰時刻に基づいて決定した復帰時刻から、所与の条件から決定したアクティブ時間の間継続する、隣接ノードと通信可能なアクティブ状態と、アクティブ時間経過後の休止時刻からの、隣接ノードと通信不可能なスリープ状態とを有する。
【０００７】
本発明の他の望ましい態様は、所与の条件が、省電力に係る条件と同期パケットに含まれる隣接ノードのアクティブ時間とのいずれか一方である。
【０００８】
本発明のさらに他の望ましい態様は、スリープ状態は、高々、最大スリープ時間からアクティブ時間を減じた時間である。
【０００９】
本発明のさらに他の望ましい態様は、無線マルチホップネットワークに含まれる他の隣接ノードからの、通信経路を構築するためのルーティングパケットとデータパケットとのいずれか一方のパケットの受信に応答して、アクティブ状態にあるときに、パケットを隣接ノードへ送信する。
【００１０】
本発明のさらに他の望ましい態様は、パケットの受信したときが隣接ノードと通信不可能なスリープ状態にあるとき、パケットの隣接ノードへの送信を、アクティブ状態になるまで待つ。
【００１１】
本発明の他の態様は、最大スリープ時間を設定した無線マルチホップネットワークに含まれる隣接ノードからの、隣接ノードの相対復帰時刻（同期パケット送信時刻から復帰時刻までの時刻）を含む同期パケットの受信する無線通信部、無線通信部が受信した同期パケットに含まれる隣接ノードの相対復帰時刻に基づいて決定した復帰時刻から所与の条件から決定したアクティブ時間の間、隣接ノードと通信可能なアクティブ状態を継続するCPU、及びアクティブ時間経過後の休止時刻からの、隣接ノードと通信不可能なスリープ状態の継続するスリープ時間を制御するタイマを有する。
【００１２】
本発明の他の望ましい態様は、CPUが、アクティブ状態に復帰するために必要な電力以外の電力消費を可能な限り抑制したスリープ状態に移行させるためのスリープ命令を、休止時刻に実行する。
【００１３】
本発明のさらに他の望ましい態様は、スリープ時間の終了時に、タイマはCPUに復帰信号を出力し、復帰信号の入力に応答してCPUはスリープ状態からアクティブ状態へ移行させる。
【００１４】
本発明のさらに他の望ましい態様は、無線通信部は、無線マルチホップネットワークに含まれる他の隣接ノードからの、通信経路を構築するためのルーティングパケットとデータパケットとのいずれか一方のパケットを受信し、アクティブ状態にあるときに受信したパケットを隣接ノードへ送信するように無線通信部をCPUが制御する。
【００１５】
本発明のさらに他の望ましい態様は、パケットを受信したときが隣接ノードと通信不可能なスリープ状態にあるとき、ルーティングパケットを保存するメモリを有する。
【発明の効果】
【００１６】
本発明によれば、隣接ノード間で時刻同期をとらずに間欠動作の復帰のタイミングを同期させる（通信可能な時間帯を設ける）ことが可能である。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施形態を説明する。本明細書では、次のように用語を用いる。無線マルチホップネットワークにおいてパケットを中継するノード（無線マルチホップ通信装置）を中継ノードと呼ぶ。なお、中継ノードと呼ぶが、自らが情報の送受信の主体であってもよい。隣接する中継ノードを隣接ノードと呼ぶ。隣接とは、パケットを直接的に送受信可能であることを表す。中継ノードは、通信可能な状態と通信不可能な状態とを有し、前者をアクティブ状態、後者をスリープ状態と呼ぶ。中継ノードの、スリープ状態からアクティブ状態への変化（移行）を復帰（する）、アクティブ状態からスリープ状態への変化（移行）を休止（する）と呼ぶ。これらの状態変化の時刻を、それぞれ復帰時刻、休止時刻と呼び、状態の継続時間をアクティブ時間、スリープ時間と呼ぶ。他の用語については必要に応じて説明する。
【００１８】
図1は、本実施形態における無線マルチホップネットワークのトポロジーの例を示す図である。図１において、101〜109は中継ノードであり、隣接する中継ノード間で通信可能である。隣接している状況を図1では、ノード間を接続するブランチ（枝）で表している。たとえば、中継ノード101は、中継ノード102及び中継ノード106とそれぞれ隣接し、通信可能である。中継ノード102は、中継ノード101及び中継ノード103とそれぞれ隣接し、通信可能である。中継ノード103〜109においても、図示するとおりである。
【００１９】
図2は、中継ノード1の構成例を示す図である。中継ノード1は、ＣＰＵ3、無線通信部4、メモリ5、及びタイマ6が相互に接続され、無線通信部4にアンテナ2が接続された構成である。バッテリ7は、中継ノード1の各部に電源を供給している。中継ノード1は、前述のようにアクティブ状態とスリープ状態を有し、ＣＰＵ3によるスリープ命令の実行により、中継ノード1の各部はアクティブ状態からスリープ状態への移行する。スリープ状態は、中継ノード1が省電力状態にある。省電力状態とは、中継ノード1の各部がスリープ状態からアクティブ状態に復帰するために必要な電力以外の電力消費を可能な限り抑制した状態である。一方、ＣＰＵ3がスリープ状態に入るときにスリープ状態を継続するスリープ時間をタイマ6に設定すると、スリープ時間経過後にタイマ6はＣＰＵ3に復帰信号（ウェイクアップ信号）を送り、復帰信号に応答してＣＰＵ3は中継ノード1をアクティブ状態に移行させる。
【００２０】
図1の各中継ノード101〜109に、最大スリープ時間（Ｔs）を設定しておく。各中継ノードは、最大スリープ時間（Ｔs）の間に、少なくとも一度以上、ネットワーク内のすべての隣接ノードと通信可能な時間があるように制御する。各中継ノードは隣接ノードのアクティブ時間に復帰することで、隣接ノードとの通信が可能となる。復帰時刻とは中継ノードが、前述したように、アクティブ状態に復帰する時刻であるが、各中継ノードの時刻の同期をとる（各中継ノードのタイマ6の時刻を同じにする（時計合わせする））ことは行わず、各中継ノードの起動時刻からの経過時間を、中継ノード毎の絶対時刻とする。
【００２１】
本実施形態においては、ネットワーク内のすべての中継ノードが同時刻に復帰する必要はなく、各中継ノードは、隣接ノードとのそれぞれのアクティブ時間の中に共通の時間帯が得られればよい。ある中継ノードに隣接ノードが複数あり、その複数の隣接ノードとの間の、アクティブ時間の中に共通の時間帯が異なっていても、それぞれの隣接ノードとの、アクティブ時間の中の共通の時間帯に通信可能である。このように中継ノードが隣接ノードとの間で、それぞれのアクティブ時間の中に共通の時間帯を持つことを隣接ノード間同期と呼ぶことにする。
【００２２】
図3に、隣接ノード間同期を確立する例を示す。図5は、図1に示すトポロジーにおいて、中継ノード101〜中継ノード106と中継ノード109が同期する例である。中継ノード（図中、（数字）で表す。）のアクティブ状態（ハッチング部分）とスリープ状態（白色部分）との時間的変化を表している。説明が分かり易くするために、必要に応じて時刻を例示する。例示する時刻は、次のとおりである。図中の時刻経過に対応して、時刻t０は−500ms、時刻t1は−250ms、時刻t2は0ms、時刻t3は500ms、時刻t4は1250ms、時刻t5は1500ms、時刻t6は2000ms、時刻t7は2250msである。また最大スリープ時間（Ｔs）を2000msとする。
【００２３】
時刻t０（中継ノード102の絶対時刻0ms）の時点では、中継ノード105〜中継ノード109はすでに隣接ノード間同期が確立している。中継ノード102は時刻t０に、中継ノード103は時刻t1に、中継ノード101は時刻t2に、中継ノード104は時刻t3に、それぞれ起動（電源がオンし、動作開始）する。時刻t4には中継ノード106から同期パケット31が、時刻t5には中継ノード102から同期パケット32が送信されている。
【００２４】
図3の中継ノード101の例を用いながら、図4に示す隣接ノード間同期フローチャートに従い、隣接ノード間同期を確立する処理を説明する。中継ノード101は起動後、一定時間が経過したかをチェックする（ステップ405）。一定時間は最大スリープ時間（Ｔs）以上の時間（Ｔs≦一定時間）とする。各中継ノードは、最大スリープ時間（Ｔs）の間に、少なくとも一度以上、ネットワーク内のすべての隣接ノードと通信可能な時間があるように制御されているからである。一定時間を経過していなければステップ410へ進み、一定時間経過していればステップ420へ進む。
【００２５】
同期パケットの受信をチェックする（ステップ410）。同期パケットを受信すればステップ413へ進み、同期パケット受信しなければステップ405へ戻る。
【００２６】
同期パケットのペイロード部50のフォーマット例を図5に示す。同期パケットのペイロード部50には、自ノードID51、相対復帰時刻52及びアクティブ時間53を格納する。自ノードID51には、IPアドレスやノード番号などの中継ノードを識別する識別子を使用する。相対復帰時刻52には、同期パケット送信元の中継ノードにおける、送信時から復帰時刻までの時間を格納する。アクティブ時間53には、同期パケット送信元の中継ノードが復帰してからアクティブ状態を継続する時間を格納する。
【００２７】
隣接ノードから送信された同期パケットを受信しているならば、受信した同期パケットに基づいて通信可能時刻管理テーブルを作成し（ステップ415）、ステップ405に戻る。
【００２８】
図3において、中継ノード101は時刻t2に起動し、時刻t4に中継ノード106から同期パケット31を受信し、時刻514 t5に中継ノード102から同期パケット32を受信したとする。中継ノード106からの同期パケット31には自ノードID51に106、相対復帰時刻52に0、アクティブ時間53にＴ6A（500ms）が格納されており、中継ノード102からの同期パケット32には自ノードID51に102、相対復帰時刻52にＴ2S（750ms）、アクティブ時間303にＴ2A（500ms）が格納されていたとする。
【００２９】
図6(a)に、中継ノード101の時刻t4における隣接ノード通信可能時刻管理テーブル60の例を示す。隣接ノードID62には、受信した同期パケット31に格納されている自ノードID51を格納する。隣接ノード通信可能時刻管理テーブル60の列61は隣接ノードID62が「106」に関する情報である。
【００３０】
復帰時刻63には、同期パケットの送信元中継ノードの復帰時刻を、同期パケットを受信した中継ノードにおける絶対時刻で表し、受信した同期パケットに格納されている相対復帰時刻52と現在時刻の和から求めて格納する。例えば、中継ノード101の絶対時刻t4−t2（1250ms）を現在時刻とし、隣接ノードID62が「106」の復帰時刻63は時刻t4（1250ms）であり、それを中継ノード101の絶対時刻で表すとt4−t2（1250ms）となり、この絶対時刻と同期パケット31内の相対復帰時刻「0」との和はt4−t2（1250ms）となる。したがって、隣接ノード106のアクティブ時間は現在からである。
【００３１】
アクティブ時間64には、受信した同期パケットに格納されているアクティブ時間53を格納する。例えば、隣接ノードID62が「106」のアクティブ時間64はＴ6A（500ms）である。休止時刻65には隣接ノードが休止する時刻、つまりアクティブ状態が終了する時刻を格納する。休止時刻65は絶対時刻であらわし、復帰時刻63と同期パケットのアクティブ時間53の和を格納する。例えば、隣接ノードID62が「106」の休止時刻65は、t4−t2＋Ｔ6A（1750ms）であり、復帰時刻t4−t2（1250ms）からＴ6A（500ms）の間、アクティブ状態にあることを示している。
【００３２】
記録時刻66には、隣接ノード通信可能時刻管理テーブル60の列の情報を記録した時刻を格納する。隣接ノードID62が「106」の記録時刻66は絶対時刻t4−t2（1250ms）である。
【００３３】
説明を図4に戻す。一定時間経過するまで（ステップ405）、同期パケット受信チェック（ステップ410）と、同期パケットを受信した場合の隣接ノード通信可能時刻管理テーブル60の作成（ステップ415）の処理を繰り返す。この繰返し処理により、時刻t4に受信した同期パケット32に関して、中継ノード101の隣接ノード通信可能時刻管理テーブル60は、図6（b）に示すように、列67が追加される。
【００３４】
一定時間内に同期パケットを受信したかをチェックする（ステップ420）。同期パケットを受信していなければステップ435に進む。受信していれば、隣接ノード通信時刻管理テーブル60を更新する（ステップ425）。更新対象は復帰時刻63と休止時刻65と記録時刻66である。
【００３５】
隣接ノード通信可能時刻管理テーブル60の更新処理フローチャートを図7に示す。現在時刻と復帰時刻とを比較し（ステップ705）、復帰時刻が過去（復帰時刻＜現在時刻）であれば、復帰時刻63を更新し（ステップ710）、休止時刻65を更新する（ステップ715）。復帰時刻63に最大スリープ時間（Ｔs）を加算した結果を次の復帰時刻63とする。次の復帰時刻63からアクティブ時間64を経過した時刻を次の休止時刻65とする。隣接ノード通信時刻管理テーブル60を更新した現在時刻を記録時刻66とする（ステップ720）。
【００３６】
中継ノード101が時刻t6（2000ms）に、隣接ノード通信可能時刻管理テーブル60を更新した結果を図6（c）に示す。隣接ノードID62が「106」の復帰時刻63はt4−t2＋Ｔs（3250ms）であり、隣接ノードID62が「102」の復帰時刻63はt7−t2（2250ms）である。隣接ノードID62が「106」の休止時刻65はt4−t2＋Ｔs＋Ｔ6A（3750ms）であり、隣接ノードID62が「102」の休止時刻65はt7−t2＋Ｔ2A（2750ms）である。記録時刻66は、現在時刻である時刻t6−t2であり、隣接ノードID62が「106」の記録時刻66にt6−t2（2000ms）を格納し、隣接ノードID62が「102」の記録時刻66にt6−t2（2000ms）を格納する。
【００３７】
説明を図４に戻す。中継ノードの復帰時刻とアクティブ時間を設定する（ステップ430）。中継ノードの復帰時刻とアクティブ時間を、式（1）で表す、アクティブ状態にある時刻の和集合によって求める。
【００３８】
ｌn≦x≦mn          （1）
ここで、xはアクティブ状態にある時刻、lnは隣接ノード通信可能時刻管理テーブル60の列nの復帰時刻63、mnは休止時刻である。
【００３９】
隣接ノード通信可能時刻管理テーブル60の各列において、式（1）で表されるアクティブ状態にある時刻xを求め、すべての列のxの和集合が、中継ノードがアクティブ状態にある時刻となる。xは、最大スリープ時間（Ｔs）の中でいくつかの区間に分かれることがあり、各々の区間の開始時刻を復帰時刻、区間の終了時刻を休止時刻とすることで中継ノードの復帰時刻とアクティブ時間を求める。
【００４０】
最大スリープ時間（Ｔs）の間で中継ノードがアクティブ状態であってもよい時間をアクティブ可能時間とし、アクティブ状態にある時刻xはアクティブ可能時間が定められていない場合に適用する。中継ノードのバッテリをより長く維持させるために、中継ノードにアクティブ可能時間をあらかじめ設定する。中継ノードのアクティブ可能時間は、すべての中継ノードで同じである必要はなく、中継ノードに搭載されているバッテリ容量と所望する中継ノードの稼動時間から求めてもよい。
【００４１】
アクティブ可能時間を設定した場合、アクティブ状態にある時刻xは区間の長さがアクティブ可能時間を越えている場合がある。このとき、アクティブ状態にある時刻xの区間の長さをアクティブ可能時間内に収める必要がある。アクティブ可能時間を設定した場合の、アクティブ時間を求める処理のフローチャートを図８に示す。
【００４２】
隣接ノード通信可能管理テーブル60より隣接ノードID数（テーブルの列数）nを求める（ステップ805）。同一隣接ノードIDで、復帰時刻63などが異なる列が複数ある場合、複数回カウントする。
【００４３】
隣接ノードあたり復帰可能時間をTn、復帰可能時間をTとし、Tn＝T÷nによりTnを求める（ステップ810）。隣接ノード通信可能管理テーブル60に、アクティブ状態にある時刻xを求めていない列があれば（ステップ815）、mn＞ln+Tnかどうかを調べる（ステップ820）。mn＞ln+Tnであれば、当該隣接ノードの休止時刻以降も中継ノードがアクティブ状態にあることになる。よって、mn＞ln+Tnであれば、バッテリ消費を抑えるために、ｌn≦x≦ln+Tnとし（ステップ825）、 mn＞ln+Tnでなければ、ｌn≦x≦mnとする（ステップ830）。求めたxの和集合を求める（ステップ835）。
【００４４】
なお、Tn＝T÷nとしたが、隣接ノード通信可能管理テーブル60の隣接ノードあたりアクティブ可能時間をTnとして、その和ΣTnが、ΣTn≦Ｔであればよく、これを満足するように隣接ノード毎のアクティブ可能時間Tnを定めてもよい。
【００４５】
以上のフローに従って求めた、アクティブ可能時間を設定した場合のxも、最大スリープ時間（Ｔs）の中でいくつかの区間に分かれることがあり、各々の区間の開始時刻を復帰時刻、区間の終了時刻を休止時刻とすることで中継ノードの復帰時刻とアクティブ時間を求めることができる。
【００４６】
求めた復帰時刻とアクティブ時間を復帰時刻管理テーブルに保持する。中継ノード101の復帰時刻管理テーブル90の例を図9に示す。復帰時刻93は中継ノードの復帰時刻であり、絶対時刻で格納する、列91は復帰時刻93が3250msであるものに関する記述であり、列92は復帰時刻93が2250msであるものに関する記述である。
【００４７】
アクティブ時間94には、アクティブ状態を継続する時間を格納する。例えば、このテーブルが作成された時刻をt6（2000ms）とし、中継ノード101の復帰可能時間が500msと設定されている場合、Tn＝T÷n＝500ms÷2＝250msであり、復帰時刻93が3250msのアクティブ時間94を250msとし、復帰時刻93が2250msのアクティブ時間94を250msとする。休止時刻95には、アクティブ状態を終了する時刻を格納する。例えば、復帰時刻93が3250msの休止時刻95は3500msであり、復帰時刻93が2250msの休止時刻95は2500msである。記録時刻96はテーブルを作成もしくは更新した時刻であり、中継ノードの起動からの絶対時刻を格納する。
【００４８】
中継ノード101の通信可能時間を設定しない場合、隣接ノード通信可能時刻管理テーブル60（図６（c））の復帰時刻63は3250msと2250msであり、アクティブ時間は500msであるが、復帰可能時間を500msと設定した場合、図9に示されるような復帰時刻93は前記と同じ時刻（3250msと2250ms）となるが、アクティブ時間は250msとなる。以上がステップ430の復帰時刻とアクティブ時間の設定処理であり、次にステップ440へ進む。
【００４９】
同期パケットを受信していなかった場合（ステップ420）、ステップ435に進む。復帰時刻とアクティブ時間の設定を行うが、隣接ノードが見つからない（同期パケットを受信していない）ので、ランダム値や固定値を用いて復帰時刻の設定を行う（ステップ435）。また、アクティブ時間は復帰可能時間が設定されていれば復帰可能時間とし、復帰可能時間が設定されていない場合はランダム値もしくは固定値を設定する。ここで設定した値を復帰時刻管理テーブル90に格納する。
【００５０】
同期パケットを送信する（ステップ440）。同期パケットは、通信可能な隣接ノードに到達させるために、ブロードキャストもしくはマルチキャストにて送信する。同期パケットのフォーマットは図5であり、相対復帰時刻52には復帰時刻管理テーブル90の復帰時刻93の値と現在時刻の差を格納し、アクティブ時間53には復帰時刻管理テーブル90のアクティブ時間94の値を格納する。フォーマットの中には複数の復帰時刻とアクティブ時間を格納してもよい。
【００５１】
中継ノードは次回の復帰時刻までスリープ状態を継続する（ステップ445）。例えば、中継ノード101の次回復帰時刻は復帰時刻管理テーブル90の最も早い復帰時刻93は2250msであり、現在時刻（復帰時刻管理テーブルの作成時刻）が2000msであるので、250ms後の時刻ｔ7までスリープする。
【００５２】
中継ノードは復帰時刻が来ると、復帰する。図10に復帰時の中継ノードの復帰処理フローチャートを示す。
【００５３】
中継ノードは復帰すると、同期パケットを送信する（ステップ1005）。同期パケットの送信処理は図4のステップ440と同じである。復帰時刻管理テーブル90の現時刻に対応する復帰時刻93と休止時刻95を更新する（ステップ1010）。復帰時刻93と休止時刻95を最大スリープ時間（Ts）経過後の時刻とする。休止時刻が経過していなかをチェックし（ステップ1015）、休止時刻が経過していなければ、同期パケットの受信チェックを行う（ステップ1020）。同期パケットを受信していなければ、ステップ1015に戻る。同期パケットを受信していれば、隣接ノード通信可能時刻管理テーブル60を更新する処理を行う（ステップ1025）。隣接ノード通信可能時間管理テーブル60の更新は、隣接ノードID62の同期パケットの送信元ノードIDに該当する列を削除した後、図4のステップ425と同じ処理を行う。隣接ノード通信可能時刻管理テーブル60の更新が終了すると、ステップ1015に戻る。ステップ1015において休止時刻を経過していれば、次回復帰時刻までスリープ状態に入る（ステップ1030）。
【００５４】
以上により、中継ノードは起動後、隣接ノードの復帰時刻に合わせて復帰し、隣接ノード間同期を実現する。
【００５５】
次に、通信経路構築方法について説明する。アドホックネットワークにおいて、通信経路の構築は、ＩＥＴＦ（Internet Engineering Task Force）のＭＡＮＥＴ（Mobile Ad-hoc Networks） ＷＧにて標準化が議論されているルーティングプロトコルを使用することにより動的に経路を構築することができる。アドホックネットワークにおけるルーティングプロトコルでは、隣接ノード間の無線リンクの検知は、ルーティングパケットの交換により行われる。例えば、IETF（Internet Engineering Task Force）にから公表されている技術文書RFC3626（T. Clausen, P. Jacquet, “Optimized Link State Routing Protocol (OLSR)” 2003/10, http://www.ietf.org/rfc/rfc3626.txt）ではHELLOメッセージと呼ばれるルーティングパケットの交換により隣接ノードを把握し、TCメッセージと呼ばれるルーティングパケットの交換によりネットワークトポロジーを把握する。各メッセージの送信は定期的に行われる。
【００５６】
しかしながら、上記のルーティングプロトコルは、各メッセージを交換するノードが間欠動作することを考慮していない。前述のように、隣接する中継ノード間ですべての復帰時刻が同じになっていない場合、ルーティングパケットを送信しても隣接ノードが復帰状態ではなく、隣接ノードはルーティングパケットを受信できない可能性がある。この場合、ルーティングパケットをロスすることとなり、隣接ノード間の無線リンクの検知を失敗し、通信経路の構築ができないという課題がある。
【００５７】
この課題に対し、通信経路の構築方法を説明する。ルーティングプロトコルとして、OLSRを例に説明する。OLSRでは、隣接ノードを定期的なHELLOメッセージの交換により検知する。隣接ノードとの無線リンクの検知は、HELLOインターバルと呼ばれるHELLOメッセージの送信間隔でHELLOメッセージを受信するかをチェックすることにより行う。また、トポロジーの把握を行うためにTCメッセージの交換を行う。中継ノードはTCメッセージをTCインターバルと呼ばれるTCメッセージの送信間隔で送信する。すべての中継ノードがTCメッセージを送信する必要はないが、どの中継ノードがTCメッセージを送信するかはOLSRによって規定されている。OLSRによれば、少なくともMPR（Multi  Point  Relay）と呼ばれる中継ノードはTCメッセージを送信する必要がある。
【００５８】
HELLOメッセージ、TCメッセージなどのルーティングパケットは、中継ノード上でルーティングプロトコルを実行しているプログラムによって、ルーティングパケットの送信時刻になるとブロードキャスト送信される。このとき、従来のルーティングパケットは送信時刻になるとルーティングパケットを一度ブロードキャストするだけであるが、ルーティングパケットを最大スリープ時間の間にすべての隣接ノードに対して送信可能にするため、隣接ノードの復帰状態である時刻にあわせてルーティングパケットの送信を一回もしくは複数回行う。
【００５９】
間欠動作をする中継ノード間において通信経路を構築するためのOLSRのルーティングパケットの送信フローチャートを図11に示す。ルーティングパケットの送信時刻となると、以下の送信フローを実行する。以下のフローはルーティングパケットの種類（HELLOメッセージ、TCメッセージなどOLSRで規定されているメッセージ）に関係なく、同じフローを使用することができる。最大スリープ時間（Ts）が経過かしたかを調べる（ステップ1105）。最大スリープ時間（Ts）を経過していれば、ステップ1130へ進む。
【００６０】
隣接ノード通信可能時刻管理テーブル60より現在時刻が隣接ノードの復帰時刻63と休止時刻65の間であるかを調べる（ステップ1110）。現在時刻が隣接ノードの復帰時刻63と休止時刻65の間でなければ、ステップ1105へ戻る。
【００６１】
隣接ノード通信可能時刻管理テーブル60において、ステップ1110に調べた条件に合致した１列もしくは複数列の隣接ノードID62に格納される隣接ノードのすべてに対し、ルーティングパケットを送信済みどうかを調べる（ステップ1115）。まだ送信していない隣接ノードID62が存在しなければ、ステップ1105へ戻る。図示を省略しているが、
送信済み隣接ノードIDの管理は図12に示すルーティングパケットの送信済み隣接ノード管理リスト120により行う。列121、列122には送信済み隣接ノードの例として、106、102が格納されている。ステップ1110で調べた条件に合致した隣接ノードID62がすべて送信済み隣接ノード管理リスト120に格納されていれば、ルーティングパケットの送信を送る必要はないため、ステップ1105に戻る。ルーティングパケットの送信を行う（ステップ1120）。ルーティングパケットの内容はOLSRに従い、変更は行わない。図示を省略しているが、ルーティングパケットを送信済みではない隣接ノードが存在する間は、ルーティングパケットをメモリ５に格納しておく。
【００６２】
ルーティングパケットの送信後、ステップ1110で調べた条件に合致する隣接ノードID62に格納される隣接ノードIDのうち、送信済み隣接ノード管理リスト120に登録されていないものを追加し（ステップ1125）、ステップ1105に戻る。
【００６３】
ステップ1105において最大スリープ時間（Ts）が経過すると、送信済み隣接ノード管理リスト120をクリアし（ステップ1130）、処理を終了する。
【００６４】
以上のフローに従えば、ルーティングパケットを規定値の送信間隔より短く受信することがあるが、OLSRにおいて通信経路を構築する上で問題にならない。以上により間欠動作をする中継ノード間でルーティングパケットの交換を実現し通信経路を構築する。
【００６５】
図1のネットワークトポロジーにおける、上記に従ったOLSRによる経路構築結果（ルーティングテーブル）例130を図13に示す。Dst131は宛先ノードを示し、Next132は宛先ノード131に対するゲートウェイとなる隣接ノードを示す。また直接通信できる宛先ノード131に対して、隣接ノード132は存在しないので「＊」で直接通信可能であることを示す。
【００６６】
図13のルーティングテーブルに従い、中継ノード101から中継ノード109にデータパケットの送信を行うとすると、中継ノード106が復帰していない時刻であれば、中継ノード106はデータパケットを中継できず、パケットロスとなり通信できない。また、中継ノード106がアクティブ状態であっても、中継ノード106から中継ノード109までの経路でアクティブ状態でない中継ノードが存在すれば、パケットロスなり通信することができない。
【００６７】
次に、この新たな課題を解決するためのデータパケットの転送方法を説明する。
【００６８】
ルーティングプロトコルとして例えばOLSRを使用し、通信経路を構築すると図13に示す宛先ノードと隣接ノードのルーティングテーブル130が構築可能である。ここで、データパケットの宛先ノードへのゲートウェイとなる隣接ノードもしくは直接通信可能な場合の宛先ノードを転送先隣接ノードと呼ぶことにする。パケット転送方式として、転送先隣接ノードが復帰していないときは、中継ノード1のメモリ5に転送すべきデータパケットを保存しておき、転送先隣接ノードがアクティブ状態のときにデータパケットを転送するストア・アンド・フォワード方式で転送する。転送先隣接ノードが、転送時にアクティブ状態にあるかどうかは隣接ノード通信可能時刻管理テーブル60から判別可能である。
【００６９】
図14にストア・アンド・フォワード方式の処理フローチャートを示す。パケット転送時、転送先隣接ノードの通信可能時刻を把握しているかを、隣接ノード通信可能時刻管理テーブル60の転送先隣接ノードのIDと隣接ノードID62が一致する列があるかをチェックすることにより調べる（ステップ1405）。転送先隣接ノードの通信可能時刻を把握していない場合は、当該データパケットの破棄を行う（ステップ1425）。転送先隣接ノードの通信可能時刻を把握している場合、転送先隣接ノードが現在時刻において通信可能であるかのチェックを行う（ステップ1410）。このチェックは現在時刻が、転送先隣接ノードの復帰時刻と休止時刻との間にあるかチェックすることにより可能である。現在時刻が転送先隣接ノードの復帰時刻と休止時刻の間である場合、転送先隣接ノードは通信可能であるので、通信制御部4を制御して、データパケットの転送を行う（ステップ1415）。ステップ1410において、現在時刻が転送先隣接ノードの復帰時刻と休止時刻の間にない場合、転送先隣接ノードは通信不可能な時間帯であるとし、通信可能な時間帯になるまで待つために、データパケットをメモリに保存する（ステップ1420）。メモリ上に保存されたデータパケットが残っていないかをチェックし（ステップ1430）、データパケットが残っていればステップ1405に戻り、パケットが残っていなければ処理を終了する。
【００７０】
以上の処理により、転送先隣接ノードがアクティブ状態でない時刻に、データパケットの転送要求が発生してもパケットをロスせずに転送することが可能となる。
【００７１】
本実施形態によれば、隣接ノード間で時刻同期をとらずに間欠動作の復帰の相対時刻を同期させる（通信可能な時間帯を設ける）ことが可能である。
【００７２】
また本実施形態によれば、間欠動作を行う中継ノード間で動的に通信経路を構築することが可能である。
【００７３】
本実施形態によれば、中継ノードの復帰時刻とアクティブ時間を決定し、隣接ノードと通信可能な時刻に復帰することが可能となる。
【００７４】
また本実施形態によれば、ルーティングパケットやデータパケットの転送時に、アクティブ状態でない隣接ノードにパケットを転送することを防ぎ、パケットロスを減らすことが可能となる。
【図面の簡単な説明】
【００７５】
【図１】ネットワークトポロジーの例である。
【図２】中継ノード1の構成例例である。
【図３】隣接ノード間同期を確立する例である。
【図４】隣接ノード間同期フローチャートである。
【図５】同期パケットのペイロード部50のフォーマット例である。
【図６】隣接ノード通信可能時刻管理テーブルの例である。
【図７】隣接ノード通信可能時刻管理テーブルの更新処理フローチャートである。
【図８】アクティブ時間を求める処理フローチャートである。
【図９】復帰時刻管理テーブルの例である。
【図１０】中継ノードの復帰処理フローチャートである。
【図１１】ルーティングパケットの送信フローチャートである。
【図１２】送信済み隣接ノード管理リストの例である。
【図１３】ルーティングテーブルの例である。
【図１４】ストア・アンド・フォワード方式の処理フローチャートである。
【符号の説明】
【００７６】
101〜109:中継ノード、1: 中継ノード、2: アンテナ、3:CPU、4:無線通信部、5:メモリ、6:タイマ、7:バッテリ。
【図１】
0005073587.tif 000002
【図２】
0005073587.tif 000003
【図３】
0005073587.tif 000004
【図４】
0005073587.tif 000005
【図５】
0005073587.tif 000006
【図６】
0005073587.tif 000007
【図７】
0005073587.tif 000008
【図８】
0005073587.tif 000009
【図９】
0005073587.tif 000010
【図１０】
0005073587.tif 000011
【図１１】
0005073587.tif 000012
【図１２】
0005073587.tif 000013
【図１３】
0005073587.tif 000014
【図１４】
0005073587.tif 000015