(57)【要約】【課題】データパケットの通信経路を適切に構築することを目的とする。【解決手段】自律分散型ネットワークを形成するノード装置において、自装置と通信可能な複数の隣接ノード装置の各々が送信するパケットの送信先に関わる送信記録情報に基づき、他のパケットの送信先を、前記複数の隣接ノード装置の中から選択する選択部と、選択された前記隣接ノード装置に、前記他のパケットを送信する送信部とを有することを特徴とするノード装置。【選択図】  図８
2014212366.tif 000002
【特許請求の範囲】
【請求項１】
自律分散型ネットワークを形成するノード装置において、
自装置と通信可能な複数の隣接ノード装置の各々が送信するパケットの送信先に関わる送信記録情報に基づき、他のパケットの送信先を、前記複数の隣接ノード装置の中から選択する選択部と、
選択された前記隣接ノード装置に、前記他のパケットを送信する送信部とを有することを特徴とするノード装置。
【請求項２】
前記選択部は、前記送信記録情報に基づき、前記複数の隣接ノード装置のうち、自装置以外を前記パケットの送信先とする確率が高い隣接ノード装置を選択することを特徴とする請求項１に記載のノード装置。
【請求項３】
前記選択部は、自装置を前記パケットの送信先とする確率が高い他の隣接ノード装置を選択しないことを特徴とする請求項２に記載のノード装置。
【請求項４】
前記ノード装置は、さらに、
自装置から最終宛先までの経路であって、かつ前記複数の隣接ノードのいずれかを経由する複数の経路を生成するとともに、前記複数の経路のいずれかを、該最終宛先との通信において優先的に使用する優先経路に設定する生成部を備えることを特徴とする請求項１乃至請求項３のいずれか一項に記載のノード装置。
【請求項５】
前記優先経路を用いた前記他のパケットの送信が失敗した場合に、前記選択部は前記隣接ノード装置を選択するとともに、前記送信部は、前記隣接ノード装置に前記他のパケットを送信することを特徴とする請求項４に記載のノード装置。
【請求項６】
前記送信記録情報は、前記複数の隣接ノード装置各々が送信した前記パケットのうちの、前記自装置宛のパケットの割合であることを特徴とする請求項１乃至請求項５のいずれか一項に記載のノード装置。
【請求項７】
前記複数のパケットは一定周期で送信される場合に、前記送信記録情報は、前記複数の隣接ノード装置各々からの、前記パケットの受信数であることを特徴とする請求項１乃至請求項５のいずれか一項に記載のノード装置。
【請求項８】
前記自装置以外を前記パケットの送信先とする確率が高い前記隣接ノード装置が存在しない場合に、前記送信部は、前記複数の隣接ノード装置に対して、警告信号を送信することを特徴とする請求項２乃至請求項７のいずれか一項に記載のノード装置。
【請求項９】
前記警告信号を受信する受信部をさらに備え、
前記受信部が他のノード装置から前記警告信号を受信した場合に、前記選択部は、該他のノード装置を前記他のパケットの送信先から除外することを特徴とする請求項８に記載のノード装置。
【請求項１０】
自律分散型ネットワークを形成するコンピュータが、
自装置と通信可能な複数の隣接ノード装置の各々が送信するパケットの送信先に関わる送信記録情報に基づき、他のパケットの送信先を、前記複数の隣接ノード装置の中から選択し、
選択された前記隣接ノード装置に、前記他のパケットを送信する処理を実行することを特徴とする通信方法。
【請求項１１】
自律分散型ネットワークを形成するコンピュータに、
自装置と通信可能な複数の隣接ノード装置の各々が送信するパケットの送信先に関わる送信記録情報に基づき、他のパケットの送信先を、前記複数の隣接ノード装置の中から選択し、
選択された前記隣接ノード装置に、前記他のパケットを送信する処理を実行させることを特徴とする通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自律分散型ネットワークにおける通信技術に関する。
【背景技術】
【０００２】
近年、基地局やアクセスポイントなどのネットワークインフラを用いずに、通信装置同士が通信してネットワークを構築するアドホックネットワークなどの自律分散型ネットワークが利用されている。
【０００３】
自律分散型ネットワークは、例えばコンピュータ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、携帯電話端末等の無線接続に用いられている技術を用いて多数の通信装置をアクセスポイントの介在なしに相互に接続する。多数の通信装置は、マルチホップ通信によりパケットを送受信する。マルチホップ通信は、互いの通信圏内に存在しない通信装置同士であっても、各通信装置の通信圏内に存在する別の通信装置を介して通信を可能にする技術である。なお、各通信装置は、当該ネットワークにおけるノードと称される。
【０００４】
従来、各ノードが、ネットワーク内の通信経路を構築する手法が知られている。そして、当該手法においては、各ノードは、自ノードからデータパケットの最終宛先までの通信経路を自律的に構築する。各ノードは、自ノードから最終宛先までの経路のうち、品質が最もよい通信経路を優先経路とする。なお、マルチホップ通信におけるホップ数などに依存する経路コストが小さいほど、品質が良い経路ということになる。
【０００５】
一方、自律分散型のネットワークは、従来の固定的なネットワークとは異なり、トポロジーの変化が頻繁に発生する。したがって、経路構築時点で構築された優先経路が、実際のデータパケットの送信時点で利用できない場合もある。このような事態を考慮して、各ノードは、複数の通信経路のうち、優先経路以外に、代替経路を保持する。例えば、優先経路に通信障害が発生した場合に、ノードは、代替経路を利用したデータパケットの送信を行う。
【０００６】
ここで、代替経路の決定方法として、例えば、優先経路に次いで、ホップ数が少ない通信経路を代替経路として選択する方法が知られている。また、優先経路との空間相関性に基づき代替経路を選択する方法も知られている。
【０００７】
また、経路の構築において、ルーティングに利用される経路要求メッセージが中継ノードリストフィールドを備え、各ノードは中継ノードリストに自己のアドレスが存在する場合には、経路要求メッセージを破棄する方法もある。つまり、当該方法は、経路要求メッセージがループすることを防止するとともに、各ノードは、ループしない複数の経路を構築することができる。
【０００８】
さらに、有線アドホックネットワークに関する経路の構築においては、あるノード装置により送信された第１のフレームがネットワーク内をループして、第二のフレームとしてあるノードに受信された場合、ノード装置は、ループの発生を学習する方法がある。そして、ノードは、ループ検出テーブルにおいて、ループが生じるポートを学習し、ループが生じるポートへのフレーム送信を控える。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００４−３３６７６７号公報
【特許文献２】特開２００５−２５２４５２号公報
【特許文献３】特開２００５−６４７２１号公報
【特許文献４】特開２００６−２０２２１号公報
【特許文献５】国際公開ＷＯ２０１０／１３１２８８公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ホップ数や空間相関性に基づき代替経路を決定する方法は、ループが発生する通信経路を代替経路として決定する可能性がある。つまり、自ノードにおける優先経路に障害が発生した場合に、あるノードが代替経路へパケットを送信しなおしたとしても、自ノードにパケットが返ってくる可能性がある。
【００１１】
一方、経路要求メッセージに中継ノードフィールドを設ける方法は、ループを回避する経路の構築が可能である。しかし、経路の構築のためにノード間でやり取りされる経路要求メッセージのデータ量が、中継ノードリストの分だけ増加する。ひいては、ネットワーク全体の負荷が増大する。
【００１２】
また、自ノードが送信したフレームを再度受信したことでループを検出する方法においては、各ポートに対してフレームを一旦送信する必要がある。つまり、ループが発生するポートを予測した経路の構築を行うことはできない。
【００１３】
以上を踏まえて、一つの側面においては、本発明は、データパケットの通信経路を適切に構築することを目的とする。
【課題を解決するための手段】
【００１４】
上記課題を解決する為に、ひとつの実施態様においては、自律分散型ネットワークを形成するノード装置は、自装置と通信可能な複数の隣接ノード装置の各々が送信するパケットの送信先に関わる送信記録情報に基づき、他のパケットの送信先を、前記複数の隣接ノード装置の中から選択する選択部と、選択された前記隣接ノード装置に、前記他のパケットを送信する送信部とを有することを特徴とするノード装置。
【発明の効果】
【００１５】
本発明の一観点によれば、データパケットの通信経路を適切に構築することが可能になる。
【図面の簡単な説明】
【００１６】
【図１】図１は、本実施例に係るアドホックネットワークシステムの図である。
【図２】図２は、パケットのデータ構成例を示す図である。
【図３】図３は、ノードＮｘの機能ブロック図である。
【図４】図４は、経路情報記憶部１８が記憶するデータの例を示す図である。
【図５】図５は、送信記録情報記憶部１９が記憶するデータの例を示す図である。
【図６】図６は、他の実施例における送信記録情報記憶部１９が記憶するデータの例を示す図である。
【図７】図７は、取得部１６による送信記録情報の取得処理に関するフローチャートである。
【図８】図８は、代替経路の選択処理に関するフローチャートである。
【図９】図９は、警告信号の送信処理に関するフローチャートである。
【図１０】図１０は、警告信号の受信に伴う経路の再構築処理を説明するためのフローチャートである。
【図１１】図１１は、ノードＮｘのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１７】
以下詳細な本発明の実施例に関して説明する。なお、以下の各実施例は、処理の内容を矛盾させない範囲で適宜組み合わせることが可能である。以下、図面に基づいて各実施例について説明する。なお、以下では、自律分散型ネットワークの一例として、アドホックネットワークが利用される。
【００１８】
図１は、本実施例に係るアドホックネットワークシステムの図である。アドホックネットワークシステムは、複数のノードＮｘと、シンクノードＳＮと、サーバＳとを含む。
【００１９】
サーバＳとシンクノードＳＮとはインターネット、ＬＡＮ、ＷＡＮなどのネットワーク２を介して接続されている。ネットワーク２は、例えば固定ネットワークである。シンクノードＳＮとノードＮｘとは、アドホックネットワーク１を介して接続されている。なお、ノードＮｘは、無線通信が可能なコンピュータである。
【００２０】
アドホックネットワーク１内には、複数のノードＮｘが設けられている。図１では、代表としてノードＮａ〜Ｎｅを示している。以下、ノードＮａ乃至Ｎｅを区別する必要がない場合は、ノードＮｘと記す。
【００２１】
シンクノードＳＮは、アドホックネットワーク１とネットワーク２とを接続する中継機器である。シンクノードＳＮは、例えば、ゲートウェイ装置である。シンクノードＳＮは、アドホックネットワーク１のプロトコルの形式の情報とネットワーク２のプロトコルの形式の情報の両方を送受信可能である。
【００２２】
また、シンクノードＳＮは、アドホックネットワーク１とネットワーク２との間で情報をプロトコル変換する。例えば、アドホックネットワーク１内のノードＮｘのいずれかからサーバＳ宛に送信されたパケットは、シンクノードＳＮにてプロトコル変換される。その後、シンクノードＳＮが、パケットを、ネットワーク２に送信することで、パケットはサーバＳに到達する。
【００２３】
サーバＳは、アドホックネットワーク１を管理するとともに、各ノードＮｘからデータを収集するコンピュータである。
【００２４】
各ノードＮｘは、通信可能圏内に存在する他ノードＮｘ、または通信可能圏内に存在するシンクノードＳＮと、直接通信可能な装置である。また、各ノードＮｘは、自ノードと直接通信可能なノードを経由することで、自ノードと直接通信不要な他ノードＮｘや、自ノードと直接通信不能なシンクノードＳＮと通信することができる。つまり、各ノードＮｘは、構築した経路を利用して、他のノードＮｘやシンクノードＳＮと通信する。
【００２５】
図１においては、点線で接続されたノードＮｘ同士が、直接通信できる。さらに、自ノードと直接通信できるノードを、自ノードに対する隣接ノードと称する。
【００２６】
各ノードＮｘは、隣接ノードと各種パケットの送受信を行う。各種パケットの例としては、例えば、ハローパケットや、データパケットなどがある。
【００２７】
ハローパケットは、ブロードキャストされるパケットであって、マルチホップ転送の対象とはならないパケットである。ハローパケットは、各ノードＮｘが、自ノードと直接通信可能なノードに対して、自ノードの存在を通知するためのパケットである。
【００２８】
データパケットは、経路情報に従ってユニキャストされるパケットであって、マルチホップ転送を経て、後述のグローバルディスティネーションＧＤへ送られるパケットである。さらに、データパケットは、各ノードが取得したデータを含むパケットである。
【００２９】
図２は、各種パケットのデータ構成を説明するための図である。各種パケットは、ヘッダ情報格納部２１と、ペイロードデータ格納部２２とを有する。
【００３０】
ヘッダ情報格納部２１には、ローカルソースＬＳ、ローカルディスティネーションＬＤ、グローバルソースＧＳ、グローバルディスティネーションＧＤの情報が格納される。なお、ヘッダ情報格納部２１には、さらに当該パケットの種別を示すパケットタイプ等の情報が格納されてもよい。
【００３１】
ローカルソースＬＳは、当該パケットの送信元を示す情報である。例えば、ローカルソースＬＳは、１ホップの通信における送信元のアドレス情報である。ローカルディスティネーションＬＤは、当該パケットの送信先を示す情報である。例えば、ローカルディスティネーションＬＤは、１ホップの通信における送信先のアドレス情報である。
【００３２】
グローバルソースＧＳは、当該パケットの経路の始点を示す情報である。例えば、グローバルソースＧＳは、マルチホップ通信を構成する初めの通信における送信元のアドレス情報である。グローバルディスティネーションＧＤは、当該パケットの経路の終点を示す情報である。例えば、グローバルディスティネーションＧＤは、マルチホップ通信を構成する最後の通信における送信先のアドレス情報である。
【００３３】
ここで、ハローパケットのような、ブロードキャスト型のパケットの場合は、ローカルディスティネーションＬＤとして、ブロードキャスト用のアドレスが設定される。例えば、あらかじめ用意されたアドレス「２５５．２５５．２５５．２５５」が設定される。また、ハローパケットのように、マルチホップ通信の対象外のパケットであれば、グローバルソースＧＳおよびグローバルディスティネーションＧＤは、設定されない。または、「０００．０００．０００．０００」などの架空のアドレスが設定される。
【００３４】
一方、データパケットのように、ユニキャスト型のパケットの場合は、構築された経路に基づき、次の送信先となるノードＮｘのアドレスが、ローカルディスティネーションＬＤとして設定される。また、データパケットのように、マルチホップ通信の対象であるパケットであれば、グローバルソースＧＳには、経路の始点のノードＮｘのアドレスが、グローバルディスティネーションＧＤには、経路の終点のノードＮｘまたはシンクノードＳＮのアドレスが設定される。
【００３５】
なお、本アドホックネットワーク１においては、各データパケットは最終的にシンクノードＳＮに収集されるものとする。また、本実施例においては、当該データパケットに含まれるデータはシンクノードＳＮ経由でサーバＳにより収集される。
【００３６】
次に、ペイロードデータ格納部２２には、各パケットの毎に異なるデータが格納される。ハローパケットの場合は、例えば、シンクノードＳＮからのホップ数や、ハローパケットを生成した時刻の時刻情報が格納される。
【００３７】
また、データパケットの場合は、ペイロードデータ格納部２２には、シンクノードＳＮへ送信すべきデータが格納される。さらに、データパケットの検証に利用される値が格納されてもよい。例えば、メッセージ認証符号（ＭＡＣ）などが利用される。また、ペイロードデータ格納部２２に格納されたデータは、暗号化されたデータでもよい。本実施例においては、暗号処理、データ検証処理は省略するが、セキュリティ確保のため、暗号処理、データ検証処理が適宜実施されることが望ましい。
【００３８】
ここで、ハローパケットを利用した経路情報の生成について、説明する。各ノードＮｘは、アドホックネットワーク１内における経路を、ハローパケットを用いて構築する。構築された経路は、経路情報として記憶される。経路情報は、後述するグローバルディスティネーションＧＤとローカルディスティネーションＬＤとを含む情報である。つまり、経路は、ローカルディスティネーションＬＤ（隣接ノード）ごとに構築される。また、経路情報は、さらに、各経路の優劣を示す情報（優先順位）を含んでもよい。
【００３９】
各ノードＮｘおよびシンクノードＳＮは、定期的にハローパケットを送信する。まず、各ノードＮｘは、他のノードＮｘからハローパケットを受信することで、隣接ノードを把握することができる。また、各ノードＮｘは、各隣接ノードから受信したハローパケットに基づき、各隣接ノードを経由する経路についての経路コストを把握する。
【００４０】
経路コストは、自ノードからグローバルディスティネーションＧＤまで経路毎の品質を評価する値である。また、本実施例においては、経路コストは、自ノードからグローバルディスティネーションＧＤまでのホップ数に依存する。さらに、経路コストは、各隣接ノードからの単位時間当たりのハローパケットの受信数が加味されてもよい。ハローパケットには、経路コストまたは、経路コスト算出のために必要な情報の少なくとも一方が設定される。
【００４１】
例えば、図１において、シンクノードＳＮのハローパケットを、シンクノードＳＮに対する隣接ノードＮａおよびＮｃが受信する。なお、ハローパケットには、ホップ数＝１という経路コストを算出するための情報が含まれる。
【００４２】
ハローパケットを受信したノードＮａは、ホップ数に「１」を加算し、「ホップ数＝２」を設定したハローパケット生成する。そして、ハローパケットはブロードキャストされる。このとき、ブロードキャストされたハローパケットは、ノードＮａの隣接ノードＮｂ，Ｎｄ，Ｎｅ、シンクノードＳＮに受信される。同様に、ハローパケットを受信したノードＮｂ，Ｎｄ，Ｎｅは、ホップ数に「１」を加算し、「ホップ数＝３」を設定したハローパケットを、ブロードキャストする。
【００４３】
このとき、ノードＮａは、シンクノードＳＮから、「ホップ数＝１」というハローパケットを受信することで、シンクノードＳＮまでの経路のうち、直接シンクノードとパケットの授受を行う経路を把握する。そして、ノードＮａは、当該経路について、経路コスト「１」を得る。なお、本実施例においては、ホップ数を経路コストとして取り扱う。しかし、これに限らず、ホップ数を用いて他の値を算出し、算出した値を経路コストとしてもよい。
【００４４】
また、ノードＮａは、ノードＮｂから、「ホップ数＝３」というハローパケットを受信することで、シンクノードＳＮまでの経路のうち、ノードＮｂを経由する経路を把握する。そして、ノードＮａは、当該経路について、経路コスト「３」を得る。同様に、ノードＮａは、シンクノードＳＮまでの経路のうち、ノードＮｄを経由する経路を把握するとともに、当該経路の経路コスト「３」を得る。
【００４５】
少なくとも１以上の経路が構築されたあと、各ノードＮｘは、各経路の経路コストに基づき、もっとも品質がよい経路を、優先経路に設定する。例えば、ノードＮａは、シンクノードＳＮまでの経路のうち、シンクノードＳＮをローカルディスティネーションＬＤとする経路を、優先経路に設定する。
【００４６】
また、本実施例においては、各ノードＮｘは、各隣接ノードが送信したデータパケットを監視することなどにより、各隣接ノードの送信記録情報を取得する。なお、送信記録情報は、隣接ノードが送信したパケットの送信先（ローカルディスティネーションＬＤ）に関わる情報である。
【００４７】
例えば、送信記録情報は、各隣接ノードが送信したデータパケットのうち、自ノードをローカルディスティネーションＬＤにしていたパケットの割合である。なお、当該アドホックネットワークにおいて、各ノードが一定周期でデータパケットを送信する場合には、各ノードは、割合の代わりに、各隣接ノードから受信したパケット数を利用することができる。
【００４８】
そして、ノードＮｘは、送信記録情報に基づき、各隣接ノードの優先経路を推定する。ノードＮｘは、自ノード以外のノードを優先経路におけるローカルディスティネーションＬＤとする隣接ノードを、代替経路として選択する。つまり、ノードＮｘは、自ノードを優先経路とする隣接ノードを代替経路に選択しない。
【００４９】
ノードＮａが隣接ノード「Ｎｂ」「Ｎｄ」「Ｎｅ」を経由する経路を有している場合、ノードＮａは、隣接ノード「Ｎｂ」「Ｎｄ」「Ｎｅ」各々の送信記録情報を取得する。例えば、ノードＮｂはノードＮａをローカルディスティネーションＬＤに設定した経路を利用する割合が閾値以下であったとする。これを受けて、ノードＮａは、隣接ノードＮｂにて選択されている優先経路は、自ノードＮａを経由する経路ではないことを推定する。
【００５０】
よって、ノードＮａが優先経路上に通信障害が発生したことを検知した場合に、隣接ノードＮｂを経由する経路を代替経路として選択することで、自ノードにパケットが送り返されることを防ぐことができる。
【００５１】
一方、隣接ノード「Ｎｄ」の送信記録情報から、ノードＮｄが、自ノードＮａをローカルディスティネーションＬＤに設定した経路を利用する割合が閾値よりも大きいと判断される場合、ノードＮａは、隣接ノードＮｄにて選択されている優先経路は、自ノードＮａを経由する経路であることを推定する。
【００５２】
よって、ノードＮａが、自ノードの優先経路上に通信障害が発生したことを検知した場合に、隣接ノードＮｄを経由する経路を代替経路として選択すると、データパケットはループして、自ノードＮａに返却されることとなる。つまり、あらかじめループが生じる経路を特定することで、このような無駄なパケット送信を回避することができ、ネットワーク負荷の増大を防ぐことができる。
【００５３】
以上の通り、本実施例によれば、ノードＮｘは、隣接ノードにおける優先経路を推定することで、自ノードに対してデータパケットを送り返してくるような経路を代替経路として選択することを防ぐ。本実施例は、ネットワーク全体の負荷増大を防ぐことができる。
【００５４】
つぎに、各ノードＮｘの機能的構成について説明する。図３は、ノードＮｘの機能ブロック図である。ノードＮｘは、通信部１０、制御部１１、記憶部１２を含む。
【００５５】
通信部１０は、アドホックネットワーク１を構成するノードＮｘやシンクノードＳＮの少なくとも一部とパケットの授受を行う処理部である。制御部１１は、ノードＮｘ全体の処理を制御する処理部である。例えば、制御部１１は、各種パケットの生成、経路情報の生成、送信記録情報の取得等を行う。記憶部１２は、各種情報を記憶する記憶装置である。
【００５６】
通信部１０は、受信部１３および送信部１４を含む。受信部１３は、隣接ノードから、情報を受信する処理部である。たとえば、受信部１３は、ハローパケットやデータパケットを受信する。送信部１４は、隣接ノードへ、情報を送信する処理部である。たとえば、送信部１４は、ハローパケットをブロードキャストしたり、データパケットを特定の隣接ノードに対して送信する。
【００５７】
制御部１１は、生成部１５、取得部１６、選択部１７を有する。生成部１５は、受信部１３が受信したハローパケットを取得し、ハローパケットに基づき、経路情報を生成する。そして、生成部１５は、経路情報記憶部１８に生成した経路情報を記憶する。なお、生成部１５は定期的に経路情報の生成を行い、経路情報記憶部１８の経路情報を更新する。
【００５８】
取得部１６は、自ノードと直接通信可能な複数の隣接ノードの各々が送信する複数のパケットの送信先に関わる送信記録情報を取得する。例えば、取得部１６は、データパケットに基づき、送信記録情報を生成する。そして、取得部１６は、送信記録情報記憶部１９に送信記録情報を記憶する。なお、取得部１６は、定期的に送信記録情報の生成を行い、送信記録情報記憶部１９の送信記録情報を更新する。
【００５９】
選択部１７は、データパケットのローカルディスティネーションＬＤを選択する。そして、選択部１７は、データパケットのヘッダ情報に各種アドレスを設定し、送信部１４に対してデータパケットの送信を依頼する。
【００６０】
例えば、優先経路を利用したデータパケットの送信が失敗した場合に、選択部１７は、送信記録情報に基づき、複数の隣接ノードのうち、自ノード以外を優先経路とする隣接ノードを、代替経路として選択する。
【００６１】
さらに、選択部１７は、代替経路として選択可能な隣接ノードが存在しない場合に、送信部１４を制御して、警告信号を送信させる。警告信号は、自ノードは優先経路以外にループを回避する経路を持たない旨を、隣接ノードへ知らせる信号である。あるノードから警告信号を受信したノードＮｘにおける選択部１７は、警告信号の送信元である隣接ノードを経由する経路を、データパケットの送信経路から除外するように、経路の再構築を行う。
【００６２】
記憶部１２は、経路情報記憶部１８および送信記録情報記憶部１９を有する。経路情報記憶部１８は、経路情報を記憶する。なお、経路情報記憶部１８は、一般的に、ルーティングテーブルとも称される。送信記録情報記憶部１９は、送信記録情報を記憶する。
【００６３】
図４は、経路情報記憶部１８が記憶するデータの例を示す図である。図４は、図１におけるノードＮａの経路情報記憶部１８である。
【００６４】
経路情報記憶部１８は、グローバルディスティネーションＧＤ、ローカルディスティネーションＬＤ、経路コスト、優先順位、フラグを対応付けて記憶する。
【００６５】
グローバルディスティネーションＧＤには、各経路の終点となる装置のアドレスが格納される。本実施例においては、データパケットはシンクノードＳＮに集約されるため、グローバルディスティネーションＧＤには、シンクノードＳＮのアドレスが格納される。
【００６６】
ローカルディスティネーションＬＤは、各隣接ノードのアドレスが格納される。つまり、ローカルディスティネーションＬＤは、各隣接ノードを経由する各々の経路を示す。例えば、隣接ノード「ＳＮ」「Ｎｂ」「Ｎｄ」「Ｎｅ」各々のアドレスが、ローカルディスティネーションＬＤに格納される。
【００６７】
経路コストには、各経路の品質に関わる値が格納される。本実施例においては、経路コストとして、自ノードからグローバルディスティネーションＧＤまでのホップ数が、採用される。生成部１５は、各隣接ノードから取得したハローパケットからホップ数を取得し、経路コストとして格納する。
【００６８】
例えば、隣接ノード「Ｎｂ」を経由する経路の場合は、経路コスト「３」が記憶される。なお、生成部１５は、ホップ数に基づき経路コストを算出したのちに、経路情報記憶部１８へ記憶してもよい。
【００６９】
優先順位には、各経路の経路コストに基づく、各経路の優劣を示す情報が格納される。本実施例においては経路コストが小さいほど、優先順位が高くなる（より小さな値となる）。例えば、経路コスト「１」である経路に対して、優先順位「１」が付与される。優先順位「１」が付与された経路は、優先経路となる。また、優先順位「２」が付与された経路は、代替経路となる。
【００７０】
図４の例では、隣接ノード「Ｎｂ」「Ｎｄ」「Ｎｅ」の各々をローカルディスティネーションとする経路の経路コストは、等しい。よって、３つの経路には、優先順位「２」が与えられる。ただし、送信記録情報が参照されることで、ループを生じる経路は、優先順位「２」であっても、代替経路から除外される。
【００７１】
フラグは、送信記録情報に基づき生成される情報であって、各経路が代替経路として選択可能であるかを示す情報である。フラグ「１」は、当該経路を、代替経路として選択可能であることを示す。一方、フラグ「０」は、当該経路を、代替経路として選択不能であることを示す。なお、初期状態においては、フラグは「１」である。
【００７２】
ここで、取得部１６は、後述の送信記録情報記憶部１９を参照し、自ノード以外を優先経路とする隣接ノードについては、フラグ「１」を設定する。ただし、経路情報記憶部１８にフラグの領域を設けずとも、選択部１７が送信記録情報記憶部１９を参照することで、各経路が代替経路として選択可能であるかを判断することもできる。
【００７３】
本実施例においては、グローバルディスティネーションＧＤ、ローカルディスティネーションＬＤ、経路コスト、優先順位を経路情報と称する。そして、経路情報は、生成部１５により生成される。経路情報記憶部１８は、経路情報にさらにフラグを対応付けて記憶する。フラグは、送信記録情報に基づき設定される情報であって、取得部１６がフラグを設定する。
【００７４】
図５は、送信記録情報記憶部１９が記憶するデータの例を示す図である。なお、図５は、ノードＮａにおける送信記録情報記憶部１９を示す。送信記録情報記憶部１９は、隣接ノードと送信記録情報とを対応付けて記憶する。
【００７５】
隣接ノードには、自ノードと直接通信可能なノードの情報が記憶される。受信部１３がハローパケットを受信すると、生成部１５は経路の構築を行うが、先に述べたとおり、ハローパケットを受信することで隣接ノードを把握することができる。生成部１５は、自ノードと直接通信可能な隣接ノードを把握するたびに、送信記録情報記憶部１９に、隣接ノードの情報を追加する。例えば隣接ノードのＩＤやアドレスが記録される。
【００７６】
そして、送信記録情報には、各隣接ノードによるデータパケットの送信先に関する情報が記憶される。例えば、各ノードが一定周期でデータパケットを送信するアドホックネットワークシステムであれば、自ノードがローカルディスティネーションＬＤに設定されたデータパケットを、一定時間内に受信した数が、送信記録情報として記憶される。
【００７７】
なお、データパケットのローカルソースＬＳに隣接ノードが設定されていればよく、グローバルソースＧＳは隣接ノードである必要はない。また、データパケットに再送回数が設定されている場合には、再送されたデータパケットについては、集計の対象外とする。
【００７８】
例えば、１０分に１回データパケットを送信するアドホックネットワークシステムにおいて、取得部１６は、自ノードをローカルディスティネーションＬＤとするデータパケットを、１時間あたりに受信した数を求める。
【００７９】
図５の例では、ノードＮａが、隣接ノードＮｂから、１時間の中で、１回、自ノードＮａをローカルディスティネーションＬＤとするデータパケットを受信したことを示している。つまり、隣接ノードＮｂは、１時間当たり６個のデータパケットを送信しているにも関わらず、ノードＮａを経由する経路を１度しか利用していないことがわかる。
【００８０】
よって、ノードＮｂは、通常、他の経路を優先経路として利用していることが推測される。ノードＮａがノードＮｂを経由する経路にデータパケットを送信した場合、データパケットはノードＮｂに受信されたのち、ノードＮｂの優先経路にしたがって自ノードＮａ以外のノードへ転送される。
【００８１】
一方、隣接ノードＮｄは、ノードＮａを経由する経路を６度利用していることがわかる。よって、ノードＮａは、ノードＮｄが自ノードＮａを経由する経路を優先経路として利用していることを推測できる。したがって、ノードＮａがノードＮｄを経由する経路にデータパケットを送信した場合、データパケットはノードＮｄに受信されたのち、ノードＮｄの優先経路にしたがって自ノードＮａに転送される。つまり、ループが発生する。
【００８２】
ここで、取得部１６は、送信記録情報に基づき、条件を満たす隣接ノードを、自ノード以外を優先経路とする隣接ノードとして特定する。例えば、送信記録情報として記憶された値が、閾値以下である場合に、取得部１６は、条件を満たすと判定する。
【００８３】
閾値は、データパケットの送信周期と、送信記録情報の収集期間とを参照して、設定される値である。例えば、各ノードＮｘが１０分に１回データパケットを送信するネットワークにおいて、１時間ごとに送信記録情報を集計する場合には、閾値は４に設定される。
【００８４】
そして、取得部１６は、自ノード以外を優先経路とする隣接ノードを経由する経路については、経路情報記憶部１８のフラグに「１」を設定する。一方、自ノードを優先経路とする隣接ノードを経由する経路については、経路情報記憶部１８のフラグに「０」を設定する。そして、選択部１７は、フラグ「１」の経路のうち、優先順位がより上位の経路を、代替経路として選択する。
【００８５】
一方、送信記録情報に関わるフラグ情報が格納されていない場合には、選択部１７は、データパケットの送信経路を決定する際、送信記録情報が、閾値以下である隣接ノードを特定し、当該隣接ノードをローカルディスティネーションＬＤとする経路を、代替経路として選択する。
【００８６】
次に、各ノードＮｘが不定期でデータパケットを送信する場合の送信記録情報について説明する。図６は、他の実施例における送信記録情報記憶部１９が記憶するデータの例を示す図である。
【００８７】
他の実施例における送信記録情報記憶部１９は、隣接ノード、全データパケット数、自ノード宛データパケット数、送信記録情報を対応付けて記憶する。
【００８８】
隣接ノードには、自ノードと直接通信可能なノードの情報が記憶される。全データパケット数には、一定時間内に、各隣接ノードが送信したデータパケットの数が格納される。つまり、ローカルソースＬＳに隣接ノードのアドレスを持つデータパケットの受信数が格納される。
【００８９】
自ノード宛データパケット数には、ローカルディスティネーションＬＤに自ノードのアドレスが設定されたデータパケットの数が格納される。送信記録情報は、各隣接ノードが送信したデータパケットのうち、自ノードを経由する経路で送信されたデータパケットの割合に関する情報が格納される。つまり、全データパケット数に対する自ノード宛データパケット数の割合が格納される。
【００９０】
他の実施例においては、各ノードＮｘは無指向性のアンテナを有する。したがって、各ノードＮｘは、自ノードをローカルディスティネーションＬＤとしないデータパケットについても、受信することが可能である。
【００９１】
他の実施例においては、隣接ノードが送信した全データパケット数をカウントするために、受信したすべてのデータパケットを利用する。そして、取得部１６は、隣接ノードごとに、隣接ノードのアドレスをローカルソースＬＳとするデータパケットを計数する。なお、受信したデータパケットが、自ノードをローカルディスティネーションＬＤとしないデータパケットである場合には、取得部１６は、計数後、当該データパケットを破棄する。
【００９２】
また、取得部１６は、隣接ノードのアドレスをローカルソースＬＳとするデータパケットであって、さらに、自ノードをローカルディスティネーションＬＤとするデータパケットについても計数する。なお、自ノードをローカルディスティネーションＬＤとするデータパケットである場合は、取得部１６は、選択部１７へ、経路の選択を依頼したうえで、当該データパケットを転送する。
【００９３】
そして、取得部１６は、全データパケットおよび自ノードをローカルディスティネーションＬＤとするデータパケットの各々について、計数した値を用いて、隣接ノードが送信した全データパケット数に対する、自ノード宛データパケット数の割合を算出する。なお、本実施例においては、自ノードが受信できたデータパケットの数を、各隣接ノードが送信したデータパケットの全数とみなす。
【００９４】
図６の例では、隣接ノード「Ｎｂ」については、全データパケット数「１０」、自ノード宛データパケット数「１」であるため、送信記録情報は「０．１」となる。隣接ノード「Ｎｂ」がノードＮａを経由するデータパケットを送信する割合が低いため、隣接ノード「Ｎｂ」の優先経路は、ノードＮａを経由する経路ではないと推測する。
【００９５】
取得部１６は、条件を満たす隣接ノードを、自ノード以外を優先経路に設定するノードとして特定する。そして、取得部１６は、経路情報記憶部１８のフラグに「１」を設定する。一方、取得部１６は、条件を満たさない隣接ノードを、自ノードを優先経路に設定するノードとして特定する。そして、取得部１６は、経路情報記憶部１８のフラグに「０」を設定する。
【００９６】
例えば、送信記録情報として記憶された値が、閾値以下である場合に、取得部１６は、条件を満たすと判定する。閾値は、適宜設定される。例えば、閾値は０．６に設定される。
【００９７】
つぎに、各ノードＮｘにおける送信記録情報の取得処理について説明する。図７は、取得部１６による送信記録情報の取得処理に関するフローチャートである。図７に示すフローチャートは、各ノードＮｘが一定周期でデータパケットを、シンクノードＳＮに送信するアドホックネットワークにおいて、送信記録情報を取得する場合のフローチャートである。
【００９８】
取得部１６は、受信部１３が受信したパケットを取得し、当該パケットがデータパケットであるか判定する（Ｏｐ．１）。例えば、受信部１３が受信したパケットに、グローバルソースＧＳおよびグローバルディスティネーションＧＤが設定されている場合に、受信したパケットはデータパケットであると判定される。また、取得部はデータパケットを受信するまで（Ｏｐ．１Ｎｏ）、Ｏｐ．１を繰り返す。
【００９９】
なお、取得部１６は、各パケットがパケットタイプを有する場合には、当該パケットタイプから当該パケットがデータパケットであるか判定してもよい。例えば、パケットタイプが「１」であるパケットは、ハローパケットであることを示し、かつ、パケットタイプが「２」であるパケットは、データパケットを示す場合には、受信したパケットのパケットタイプが「２」である場合に、Ｏｐ．１にて、取得部１６は肯定の判断を行う。
【０１００】
次に、データパケットを受信した場合に（Ｏｐ．１Ｙｅｓ）、取得部１６は、受信したデータパケットのローカルディスティネーションＬＤに、自ノードのアドレスが設定されているかを判定する（Ｏｐ．２）。Ｏｐ．２は、ノードＮｘが指向性の高いアンテナを有する場合は省略してもよい。各ノードＮｘが無指向性のアンテナを有する場合には、自ノードのアドレスをローカルディスティネーションＬＤとするデータパケット以外にも、データパケットを受信することがあるため、Ｏｐ．２の処理が実行される。
【０１０１】
ローカルディスティネーションＬＤが自ノードのアドレスである場合には（Ｏｐ．２Ｙｅｓ）、取得部１６は、送信記録情報記憶部１９を参照し、データパケットのローカルソースＬＳに対応する隣接ノードについて、送信記録情報を生成する（Ｏｐ．３）。なお、すでに、送信記録情報が格納されている場合には、本処理において、送信記録情報は更新される。
【０１０２】
例えば、取得部１６は、図５に示した送信記録情報の例においては、受信したデータパケットのローカルソースＬＳに対応する隣接ノードについて、送信記録情報として記憶される受信数に１を加算する。
【０１０３】
そして、取得部１６は、送信記録情報を取得する（Ｏｐ．４）。そして、取得部１６は、送信記録情報が所定の条件を満たすかを判定する（Ｏｐ．５）。例えば、取得部１６は、送信記録情報として記憶された数値が閾値以下であるか否かを判定する。
【０１０４】
所定の条件を満たす場合に（Ｏｐ．５Ｙｅｓ）、取得部１６は、処理を終了する。つまり、経路情報記憶部１８におけるフラグは、初期状態である「１」のままとなる。一方、所定の条件を満たさない場合に（Ｏｐ．５Ｎｏ）、取得部１６は、データパケットのローカルソースＬＳに対応する隣接ノードについて、経路情報記憶部１８におけるフラグを、「０」に設定する（Ｏｐ．６）。
【０１０５】
また、図７の例では、ローカルディスティネーションＬＤに自ノードのアドレスが設定されていない場合（Ｏｐ．２Ｎｏ）については、処理をＯｐ．１へ戻す。しかし、取得部１６が図６に示す送信記録情報を取得する場合には、Ｏｐ．１へ処理を戻す前に、全データパケット数に１を加算する。
【０１０６】
なお、送信記録情報は、一定時間ごとにクリアされてもよい。この場合は、一期間前の送信記録情報に基づくフラグが、代替経路の選択に利用されることとなる。また、Ｏｐ．１乃至Ｏｐ．３を実施し、一定時間経過後に、Ｏｐ．４乃至Ｏｐ．６が実施されてもよい。つまり、各隣接ノードが一定以上のデータパケットの送信を行ったあとに、これらデータパケットの送信に関わる送信記録情報が取得される。そして、取得された送信記録情報を用いて、判定処理（Ｏｐ．５）が実施されるとしてもよい。
【０１０７】
以上のように、取得部１６は、隣接ノードに関する送信記録情報を取得することができる。さらに、取得部１６は、データパケットが一定周期で送信されるネットワークや、不定期で送信されるネットワークにおいても、送信記録情報を取得することができる。そして、送信記録情報を利用することで、ノードＮｘは、隣接ノードが、自ノードを経由する経路を優先経路として設定しているかを、把握することができる。
【０１０８】
次に、データパケット送信時における、代替経路の選択処理について説明する。図８は、代替経路の選択処理に関するフローチャートである。まず、制御部１１による制御の下、送信部１４は、優先経路に対してデータパケットを送信する（Ｏｐ．１１）。
【０１０９】
ここで、優先経路に対するデータパケットの送信について簡単に説明する。第一に、自ノードがグローバルソースＧＳとなる場合は、制御部１１は、サーバＳへ送信するデータを生成し、ペイロードデータ格納部２２へ格納する。そして、選択部１７は、経路情報記憶部１８を参照し、グローバルディスティネーション「シンクノードＳＮ」までの経路のうち、もっとも品質の良い経路を選択する。例えば、優先順位「１」の優先経路が選択される。
【０１１０】
そして、選択部１７は、選択した経路に対応するローカルディスティネーションＬＤを、経路情報記憶部１８から取得する。そして、各種ヘッダ情報が、ヘッダ情報格納部２１に設定される。なお、ローカルソースＬＳおよびローカルディスティネーションＬＤについては、自ノードのアドレスが設定される。そして、優先経路に対してデータパケットが送信される。
【０１１１】
第二に、自ノードがローカルソースＬＳとなる場合（データパケットの転送を行う場合）は、選択部１７は、隣接ノードから受信したデータパケットの、ヘッダ情報を書き換える。つまり、ローカルソースＬＳに自ノードのアドレスが、ローカルディスティネーションＬＤに自ノードにおける優先経路となる隣接ノードのアドレスが設定される。そして、優先経路に対して、データパケットが送信される。
【０１１２】
次に、選択部１７は、優先経路でのデータパケット送信が成功したか否かを判定する（Ｏｐ．１２）。例えば、データパケットの送信から一定時間以内に、選択部１７は、シンクノードＳＮからデータパケットの受信を知らせる応答を、受信したか否かに基づき、判定を行う。一定時間以内に、応答を受信した場合は、選択部１７は、優先経路でのデータパケット送信が成功したと判断する。
【０１１３】
データパケットの送信が成功した場合は（Ｏｐ．１２Ｙｅｓ）、代替経路の選択処理は終了する。一方、データパケットの送信が成功しなかった場合は（Ｏｐ．１２Ｎｏ）、選択部１７は、経路情報記憶部１８を参照し、フラグが「１」である経路が存在するか否かを判定する（Ｏｐ．１３）。ここでは、優先経路以外で、フラグが「１」である経路が存在するか否かが判定される。なお、フラグで判定する方法以外にも、例えば、Ｏｐ．１３において、図７のＯｐ．５の判定が実行されてもよい。
【０１１４】
つまり、Ｏｐ．１３においては、自ノード以外を優先経路とする隣接ノードが存在するか否かが判定される。各経路におけるローカルディスティネーションＬＤとなる隣接ノードへデータパケットを送信したとしても、当該隣接ノードからデータパケットが自ノードへ送信されることがないような経路が存在するかが判定される。
【０１１５】
フラグが「１」である経路が存在する場合は（Ｏｐ．１３Ｙｅｓ）、選択部１７は、フラグが「１」の経路のうち、優先順位が高い経路を選択する（ＯＰ．１４）。優先経路以外の経路のなかで、フラグが「１」であって、優先順位がより高い経路（優先順位が２以下の経路）が選択される。
【０１１６】
そして、選択部１７は選択した経路に基づきヘッダ情報を生成し、送信部１４は、データパケットを送信する（Ｏｐ．１５）。そして、制御部１１は、処理を終了させる。
【０１１７】
ただし、選択部１７は、優先経路同様、代替経路でのデータパケットの送信が成功したか否かを監視してもよい。そして、代替経路でのデータパケットの送信が成功しなかった場合には、他の代替経路を選択してもよい。
【０１１８】
一方、フラグが「１」の経路が存在しない場合は（Ｏｐ．１３Ｎｏ）、選択部１７は、一定時間待機する（Ｏｐ．１６）。そして、優先経路でデータパケットの送信を、再度試みる（Ｏｐ．１１）。
【０１１９】
以上のとおり、本実施例によれば、適切な代替経路が選択される。つまり、選択部１７は、自ノード以外を優先経路とする隣接ノードを、経路として選択する。したがって、自ノードにおける優先経路に障害が発生した場合に、各ノードは、当該優先経路を回避可能となる可能性の高い経路を選択することができる。
【０１２０】
次に、優先経路以外に利用可能な代替経路が存在しない場合の各ノードの処理について説明する。図９は、警告信号の送信処理に関するフローチャートである。本実施例においては、警告信号の送信処理は、優先経路に障害を検知したタイミングで実行される。しかし、これに限らず、定期的に実行されてもよい。
【０１２１】
まず、選択部１７は、経路情報記憶部１８を参照し、優先経路以外にフラグ「１」の経路があるか否かを判定する（Ｏｐ．２１）。優先経路以外にフラグ「１」の経路が存在しない場合（Ｏｐ．２１Ｎｏ）、制御部１１の制御の下、送信部１４は、警告信号を送信する（Ｏｐ．２２）。
【０１２２】
警告信号は、自ノードが優先経路以外に、利用可能な代替経路を有さないことを知らせるための信号である。そして、警告信号は、隣接ノードに対して送信される。つまり、警告信号送信時点で、経路情報記憶部１８にローカルディスティネーションＬＤとして記録された各隣接ノードに対して、警告信号が送信される。
【０１２３】
警告信号は、各隣接ノードに対してユニキャストされてもよいし、全隣接ノードに対してブロードキャストされてもよい。また、グローバルディスティネーションＧＤとなる装置が複数存在する場合には、いずれのグローバルディスティネーションＧＤに対する警告信号であるのかを示す識別情報が、警告信号に含まれる。
【０１２４】
次に、選択部１７は、警告信号の送信先を、記憶部１２に記憶する（Ｏｐ．２３）。例えば、警告信号送信時点で、経路情報記憶部１８にローカルディスティネーションＬＤとして記録された各隣接ノードが、記憶部１２に記憶される。そして、選択部１７は、処理を終了する。
【０１２５】
一方、優先経路以外にフラグ「１」の経路がある場合（Ｏｐ．２１Ｙｅｓ）、選択部１７は、過去に警告信号を送信したか否かを判定する（Ｏｐ．２４）。例えば、警告信号の送信先が記憶されている場合には、過去に警告信号を送信したことが判定される。
【０１２６】
過去に警告信号を送信している場合には（Ｏｐ．２４Ｙｅｓ）、選択部１７は、新たな経路を構築したか否かを判定する（Ｏｐ．２５）。新たな経路とは、警告信号の送信先以外の隣接ノードをローカルディスティネーションＬＤとする経路である。
【０１２７】
アドホックネットワークなどの自律分散型ネットワークにおいては、ネットワークのトポロジーの変化により、新たな経路が構築されることがある。これは、物理的にノードが追加された場合や、周囲の環境が変化したことにともない通信状況が変化した場合を含む。生成部１５は、経路情報を定期的に生成するが、選択部１７は、図９に示す警告信号の送信処理のタイミングで、新たな経路が経路情報記憶部１８に格納されている場合には、新たな経路を構築したと判定する。例えば、警告信号の送信先として記憶されたノード以外のノードをローカルディスティネーションＬＤとする経路が、経路情報記憶部１８に記憶されている場合に、新たな経路が構築されたことが判定される。
【０１２８】
なお、経路情報の生成処理は、警告信号の送信処理とは独立に実行される。しかし、２つの処理が同期してもよい。つまり、一定周期ごとに経路情報が生成または更新されると、それに続いて、警告信号の送信処理が実行されてもよい。
【０１２９】
新たな経路が構築されている場合には（Ｏｐ．２５Ｙｅｓ）、制御部１１の制御の下、送信部１４は、解除信号を送信する（Ｏｐ．２６）。解除信号は、自ノードが優先経路以外に、利用可能な代替経路を有することを知らせるための信号である。
【０１３０】
解除信号は、過去の警告信号の送信先に対して、送信されてもよいし、解除信号送信時点で、経路情報記憶部１８にローカルディスティネーションＬＤとして記録された各隣接ノードに対して、送信されてもよい。
【０１３１】
一方、過去に警告信号を送信していない場合（Ｏｐ．２４Ｎｏ）や、新たな経路を構築していない場合（Ｏｐ．２５Ｎｏ）には、選択部１７は処理を終了する。
【０１３２】
以上のように、ノードＮｘは、優先経路以外に利用可能な代替経路を持たないことを検知した場合に、自ノードが不安定であることを隣接ノードに通知することができる。そして、新たな経路が構築された場合には、優先経路以外に利用可能な代替経路を持つことを隣接ノードに通知することができる。
【０１３３】
次に、警告信号を受信した場合の各ノードの処理について説明する。図１０は、警告信号の受信に伴う経路の再構築処理を説明するためのフローチャートである。図９に示す警告信号の送信処理を受けて、ノードＮｘが他のノードから警告信号を受信した場合に、図１０の処理が実行される。
【０１３４】
受信部１３は、隣接ノードから警告信号を受信する（Ｏｐ．３１）。そして、生成部１５は、受信した警告信号は、優先経路となる隣接ノードから受信した警告信号であるか否かを判定する（Ｏｐ．３２）。例えば、生成部１５は、警告信号に設定されたローカルディスティネーションＬＤと、経路情報記憶部１８における優先順位「１」である経路のローカルディスティネーションＬＤとが一致するかを判定する。
【０１３５】
次に、受信した警告信号が、優先経路となる隣接ノードからの警告信号である場合（Ｏｐ．３２Ｙｅｓ）、生成部１５は、フラグが「１」の経路が、優先経路以外に存在するか否かを判定する（Ｏｐ．３３）。フラグが「１」の経路が、優先経路以外に存在する場合（Ｏｐ．３３Ｙｅｓ）は、生成部１５は、経路情報記憶部１８における経路情報を更新する（Ｏｐ．３４）。つまり、生成部１５は、各経路について、経路情報記憶部１８に設定された優先順位を更新する。
【０１３６】
例えば、生成部１５は、優先経路となっていた経路に対応する優先順位を「９９」などのあらかじめ決まった値に設定する。そして、生成部１５は、優先順位「９９」以外の値をもつ残りの経路について、順位が高いものから、順に「１」「２」「３」「・・・」を付与する。
【０１３７】
一方、受信した警告信号が、優先経路となる隣接ノードからの警告信号でない場合（Ｏｐ．３２Ｎｏ）や、フラグが「１」の経路が、優先経路以外に存在しない場合（Ｏｐ．３３Ｎｏ）は、生成部１５は、処理を終了する。
【０１３８】
本実施例においては、生成部１５は、受信した警告信号が、優先経路となる隣接ノードからの警告信号でない場合は、経路情報を更新する必要がないと判断する。なお、警告信号の送信元である隣接ノードをローカルディスティネーションＬＤとする経路の優先順位を最下位に設定するなどしてもよい。
【０１３９】
また、本実施例においては、生成部１５は、フラグが「１」の経路が、優先経路以外に存在しない場合は、経路情報を更新する必要がないと判断する。これは、自ノード以外を優先経路とする隣接ノードがない状態、つまり、利用可能な代替経路がない状態である。よって、他の経路を優先経路とすることができない状態においては、経路情報は更新しない。
【０１４０】
ここで、警告信号の受信にともない、優先経路ではなくなった経路は、解除信号の受信によって、再度優先経路に設定される。したがって、本実施例においては、解除信号を受信した場合、生成部１５は、解除信号の送信元をローカルディスティネーションＬＤとし、かつ優先順位に決まった値（例えば「９９」）を有する経路が存在するかを判定する。そして、該当する経路が存在する場合に、生成部１５は、当該経路に、再度、優先順位「１」を付与する。
【０１４１】
以上のように、警告信号の受信を受けて、自ノードにおける経路を再構築することができる。つまり、本実施例に係るノードＮｘは、不安定な隣接ノードをローカルディスティネーションＬＤとする経路以外を優先経路とする経路情報へ更新することができる。また、ノードＮｘは、適切なタイミングで、品質の良い経路を、再度優先経路とすることができる。
【０１４２】
例えば、図９に示す警告信号の送信処理が、複数のノードＮｘのうちの第一のノードにおける優先経路の障害検知を契機に実行される場合は、複数のノードＮｘのうちの警告信号を受信した第二のノードは、第一のノードにおける優先経路に障害が発生し、かつ、第一のノードは利用可能な代替経路を有しないことを把握することができる。
【０１４３】
そして、第二のノードが第一のノードを自ノードにとっての優先経路として設定している場合には、当該優先経路を利用しても、データパケットの送信が失敗する可能性が高いことが推測できる。したがって、第二のノードは、経路情報における優先順位を更新する。つまり、第二のノードは、第一のノードをローカルディスティネーションＬＤとする経路以外の経路を優先経路に、再設定する。
【０１４４】
一方、図９に示す警告信号の送信処理が定期的に実行される場合には、警告信号を受信した第二のノードは、警告信号の送信元である第一のノードにおいて、利用可能な代替経路が存在しないことを把握することができる。そして、第二のノードは、第一のノードが自ノードにとっての優先経路である場合であって、なんらかの理由で第一のノードにおける優先経路に障害が発生した場合に、データパケットの送信ができなくなる可能性があることを把握できる。
【０１４５】
なぜなら、第一のノードは利用可能な代替経路を有しないことから、優先経路以外でのデータパケットの転送ができないためである。したがって、第二のノードは、経路情報における優先順位を更新する。つまり、第二のノードは、第一のノードをローカルディスティネーションＬＤとする経路以外の経路を優先経路に、再設定する。
【０１４６】
なお、各ノードＮｘが、各隣接ノードに関する送信記録情報を取得するまでは、各ノードＮｘは、優先経路の次に品質が良い経路を、代替経路として利用してもよい。また、所定時間ごとの送信記録情報に基づき、各ノードは、代替経路として利用する隣接ノードを、定期的に選択してもよい。さらに、自ノード以外を優先経路とする隣接ノードが複数ある場合には、経路の品質がよりよい経路が選択される。
【０１４７】
また、優先経路を選択する際にも、送信記録情報が参照されてもよい。例えば、図４におけるフラグ「１」に対応する経路で、もっとも経路コストが小さい経路が優先経路に選択されるとしてもよい。
【０１４８】
次に、ノードＮｘのハードウェア構成を説明する。図１１は、ノードＮｘのハードウェア構成の一例を示す図である。図１１は、ノードＮｘのハードウェア構成例である。ノードＮｘは、無線通信機能を有するコンピュータである。ノードＮｘは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０２と、フラッシュメモリ１０３と、通信装置１０４と、バス１０７とを備えている。ＣＰＵ１０１乃至通信装置１０４は、バス１０７よってそれぞれ接続されている。
【０１４９】
ＣＰＵ１０１は、ノードＮｘの全体の制御を司る。ＣＰＵ１０１は、ＲＡＭ１０２にロードされたプログラムを実行することにより、制御部１１などとして機能する。
【０１５０】
ＲＡＭ１０２は、ＣＰＵ１０１のワークエリアとして使用される。フラッシュメモリ１０３は、プログラムや、経路情報、送信記録情報を記憶している。なお、フラッシュメモリ１０３は、記憶部１２の一例である。プログラムには、例えば、フローチャートに示した各処理を実行させる為のプログラムが含まれる。例えば、図７乃至図１０に示す通信処理を、ノードＮｘに実行させる為の制御プログラムが、フラッシュメモリ１０３に記憶される。
【０１５１】
フラッシュメモリ１０３に記憶されたプログラムを、ＲＡＭ１０２にロードし、ＣＰＵ１０１が実行することで、ノードＮｘは、図３に記載した制御部１１として機能する。また、ノードＮｘは、図７乃至図１０に示した各種処理を実行する。
【０１５２】
通信装置１０４は、マルチホップ通信によりパケットを送受信する。通信装置１０４は、通信部１０の一例である。通信装置１０４は、アンテナや通信回路を含む。
【０１５３】
ノードＮｘは、さらに、暗号化回路１０５や、センサ１０６を備えてもよい。暗号化回路１０５は、データを暗号化する場合に暗号鍵によりデータを暗号化する回路である。例えば、パケットを暗号化して送信する場合は、暗号化回路１０５が機能する。暗号化をソフトウェア的に実行する場合は、暗号化回路１０５に相当するプログラムをフラッシュメモリ１０３に記憶させておくことで、暗号化回路１０５は不要となる。
【０１５４】
センサ１０６は、センサ１０６固有のデータを検出する。例えば、温度、湿度、水位、降水量、風量、音量、電力使用量、時間、時刻、加速度など、測定対象にあったデータを検出する。なお、ＣＰＵ１０１が、センサ１０６からデータを取得することができる。例えば、センサ１０６が取得したデータが、データパケットのペイロードデータ格納部２２に格納されて、サーバＳにより収集される。
【０１５５】
また、ノードＮｘは、無線通信機能を有する汎用コンピュータや、携帯電話、スマートフォンなどのコンピュータでもよい。この場合、ノードＮｘは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、通信装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、入力装置、表示装置、媒体読取装置を有しており、各部はバスを介して相互に接続されている。
【０１５６】
各種フローチャートに示した通信プログラムは、コンピュータが読み取り可能な記録媒体に記録される。コンピュータが読み取り可能な記録媒体には、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）などがある。
【０１５７】
光ディスクには、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  −  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ（Ｒｅｃｏｒｄａｂｌｅ）／ＲＷ（ＲｅＷｒｉｔａｂｌｅ）などがある。光磁気記録媒体には、ＭＯ（Ｍａｇｎｅｔｏ  −  Ｏｐｔｉｃａｌ  ｄｉｓｋ）などがある。このプログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売されることが考えられる。
【０１５８】
そして本実施例にかかる通信プログラムを実行するコンピュータは、例えば媒体読取装置が、通信プログラムを記録した記録媒体から、該プログラムを読み出す。ＣＰＵは、読み出されたプログラムをＨＤＤ若しくはＲＯＭ、ＲＡＭに格納する。
【０１５９】
ＣＰＵは、ノードＮｘ全体の動作制御を司る中央処理装置である。そして、ＣＰＵが、通信プログラムをＨＤＤから読み出して実行することで、ＣＰＵは、図３に示す制御部１１として機能するようになる。通信プログラムはＣＰＵとアクセス可能なＲＯＭまたはＲＡＭに格納されていても良い。また、通信装置は、ＣＰＵの制御の下、通信部１０として機能する。
【０１６０】
さらに、ＨＤＤは、ＣＰＵの管理下で図２に示す記憶部１２として機能する。つまり、ＨＤＤは、経路情報や送信記録情報を記憶する。通信プログラム同様、経路情報や送信記録情報はＣＰＵとアクセス可能なＲＯＭまたはＲＡＭに格納されても良い。さらに、処理の過程で生成される各種情報は、例えば、ＲＡＭに格納される。
【０１６１】
入力装置は、各種入力を受け付ける。入力装置は、例えばキーボードやマウスである。表示装置は、各種情報を表示する。表示装置は、例えばディスプレイである。
【符号の説明】
【０１６２】
１        アドホックネットワーク
２        ネットワーク
Ｎｘ      ノード
ＳＮ      シンクノード
Ｓ        サーバ
１０      通信部
１１      制御部
１２      記憶部
１３      受信部
１４      送信部
１５      生成部
１６      取得部
１７      選択部
１８      経路情報記憶部
１９      送信記録情報記憶部
１０１    ＣＰＵ
１０２    ＲＡＭ
１０３    フラッシュメモリ
１０４    通信装置
１０５    暗号化回路
１０６    センサ
１０７    バス
【図１】
2014212366.tif 000003
【図２】
2014212366.tif 000004
【図３】
2014212366.tif 000005
【図４】
2014212366.tif 000006
【図５】
2014212366.tif 000007
【図６】
2014212366.tif 000008
【図７】
2014212366.tif 000009
【図８】
2014212366.tif 000010
【図９】
2014212366.tif 000011
【図１０】
2014212366.tif 000012
【図１１】
2014212366.tif 000013