以下、所定のエリア(地域)に存在する複数の通信装置間において蓄積転送型通信を行うことにより、エンドツーエンドでメッセージの通信を行う通信装置の実施形態について図面を参照して具体的に説明する。
図1は、本発明における通信装置1によるメッセージ通信の概略を説明する図である。図1において、符号1A〜1Sで示した円形は、互いに異なる場所にある通信装置1を表している。本実施形態における通信装置1は、蓄積転送型通信を行うことが可能な通信機能を有する固定端末又は移動端末であり、例えば、利用者に所持される携帯電話、スマートフォン、タブレットや、家庭や会社に設置されるPC/サーバ、警備装置、家電製品、スマートメーターや、車/飛行船/飛行ロボットなどに搭載される通信モジュールなどが挙げられる。また、同図において、通信装置1の間を結んだ点線は、有線又は無線により互いに直接的に通信可能であることを表している。すなわち、当該点線で結ばれた通信装置1は、通信的に接触状態にあることを意味しており、以下では、これらの通信装置1を「隣接している」として表現する。また、同図では、便宜上、通信装置1ごとに設定された「信頼度」に基づく階層(レイヤー)により各通信装置1を隔てて表現している。ここで、信頼度とは、通信装置1における、受信したメッセージを長期間管理(記憶)して他の通信装置1に送信できる能力の高さを表すパラメータであり、管理者等により予め設定されていたり、自動的に生成・更新したりすることにより、通信装置1毎に設定されるものである。後述するように、信頼度は、通信装置1に固定的に設定される静的信頼度と動的に更新される動的信頼度とから構成されるが、ここでは簡易的に静的信頼度と動的信頼度を包含する概念である信頼度を用いて説明する。
はじめに、通信装置1Aから通信装置1F宛にメッセージを送信する場合について、図1(a)を用いて説明する。まず、任意のタイミングで通信装置1F宛のメッセージを送信しようとする通信装置1Aは、隣接している通信装置である隣接通信装置1B(信頼度1)、1G(信頼度2)の全てに対してメッセージを送信する「感染形中継転送方式」とは異なり、自装置の信頼度以上であって最も信頼度が大きい隣接通信装置1G(信頼度2)に対してのみメッセージを送信する。以下、本実施形態において、自装置の信頼度以上であって最も信頼度が大きい隣接通信装置を「隣接上位装置」という。そして、通信装置1Aからメッセージを受信した通信装置1Gは、当該メッセージの内容(以下、「メッセージデータ」という)を一旦記憶し、当該メッセージのコピーを、隣接上位装置1M(信頼度3)、1N(信頼度3)に対して送信する。このように、隣接上位装置へのメッセージの送信(転送)を繰り返すことにより、通信装置1Aから送信されたメッセージは、同図における実線の矢印で示したように、A→G→N→O→R→Sと転送されていき、メッセージを受信したこれらの通信装置1夫々には、当該メッセージ(のコピー)が記憶されることになる。
一方、任意のタイミングで自分宛のメッセージが送信されているか否かを確認しようとする通信装置1Fは、隣接上位装置1L(信頼度2)に対してのみメッセージ要求を送信する。ここで、任意のタイミングとは、例えば、通信装置1Fを利用している利用者がメッセージの確認操作をしたタイミングや、通信装置1Fが定期的(例えば1時間に1回)に行うタイミングなどが挙げられる。そして、通信装置1Fからメッセージ要求を受信した通信装置1Lは、通信装置1F宛のメッセージデータを記憶していないならば、受信したメッセージ要求を隣接上位装置1Kに対して送信する。このように、隣接上位装置へのメッセージ要求の送信(転送)を繰り返すことにより、通信装置1Fから送信されたメッセージ要求は、図1(a)における点線の矢印で示したように、F→L→K→Q→P→Sと転送されていく。そして、当該メッセージ要求を受信した通信装置1Sは、通信装置1F宛のメッセージデータを記憶しているため、当該メッセージ要求を送信した隣接通信装置1Pに対して、当該メッセージデータを記したメッセージ応答を送信する。そして、当該メッセージ応答を受信した通信装置1Pは、当該メッセージ応答に記されたメッセージデータを一旦記憶し、当該メッセージ応答に対応するメッセージ要求を送信した隣接通信装置1Qに対して、受信したメッセージ応答を送信(転送)する。このように、メッセージ要求を送信した隣接通信装置へのメッセージ応答の送信(転送)を繰り返すことにより、通信装置1Sから送信されたメッセージ応答は、図1(a)における破線の矢印で示したように、S→P→Q→K→L→Fと転送されていく。いわば、メッセージ要求によって確立していることが確認された通信経路を遡ってメッセージ応答が転送されていくことにより、メッセージ応答がメッセージ要求を生成した通信装置1Fに到達することが保証される。
このように、通信装置1Fは、メッセージ応答に記された自分宛のメッセージデータを受信することができる。したがって、たとえ断続的通信環境であったとしても、通信装置1Aと通信装置1Fとの間でエンドツーエンドにより通信を行うことが可能となる。また、同図において、黒色の円形で表した通信装置は、メッセージデータを記憶している通信装置を表しており、白色の円形で表した通信装置は、メッセージデータを記憶していない通信装置を表している。したがって、本発明における通信装置1は、「感染形中継転送方式」とは異なり、隣接上位装置に対してのみ、メッセージ(及びメッセージ要求)を送信するため、情報の輻輳(通信トラフィックの増大、ノードの記憶領域の逼迫)を抑制することができる。例えば、図1(a)の例では、通信装置1B〜1E、1H〜1Jに対してメッセージ・メッセージ要求・メッセージ応答のいずれも送信されないため、これらの通信装置1における不要な通信を削減することができ、かつ、これらの通信装置1に対して不要なメッセージを記憶させないようにすることができる。
次に、通信装置1Dから通信装置1F宛にメッセージを送信する場合について、図1(b)を用いて説明する。まず、任意のタイミングで通信装置1F宛のメッセージを送信しようとする通信装置1Dは、隣接上位装置1K(信頼度2)に対してメッセージを送信する。そして、通信装置1Dからメッセージを受信した通信装置1Kは、当該メッセージデータを一旦記憶し、当該メッセージのコピーを、隣接上位装置1Q(信頼度3)に対して送信する。このように、隣接上位装置へのメッセージの送信(転送)を繰り返すことにより、通信装置1Dから送信されたメッセージは、同図における実線の矢印で示したように、D→K→Q→P→S→Rと転送されていき、メッセージを受信したこれらの通信装置1夫々には、当該メッセージ(のコピー)が記憶されることになる。
一方、任意のタイミングで自分宛のメッセージが送信されているか否かを確認しようとする通信装置1Fは、メッセージ要求を隣接上位装置1L(信頼度2)に対して送信する。そして、通信装置1Fからメッセージ要求を受信した通信装置1Lは、通信装置1F宛のメッセージデータを記憶していないため、受信したメッセージ要求を隣接上位装置1Kに対して送信する。当該メッセージ要求を受信した通信装置1Kは、通信装置1F宛のメッセージデータを記憶しているため、当該メッセージ要求を送信した隣接通信装置1Lに対して、当該メッセージデータを記したメッセージ応答を送信する。そして、当該メッセージ応答は、通信装置1Lを介して通信装置1Fに転送される。
図1(b)で例示したように、通信装置1Fから送信されたメッセージ要求は、メッセージデータを記憶している通信装置1Kまで転送されるものの、当該通信装置1K以降の隣接上位装置1Q、1P、1S、1Rには送信(転送)されない。同様に、メッセージデータを記憶している通信装置1Q、1P、1S、1Rから通信装置1Fに対してメッセージ応答が送信されていない。したがって、本発明における通信装置1は、必ずしも最上位の通信装置1に対するメッセージの有無の問合せ(メッセージ要求)を行うことを要さずに、必要最小限の通信によってメッセージデータの送受が可能であるため、信頼度が最上位の通信装置1と通信ができない通信環境であったとしても、情報の輻輳(通信トラフィックの増大、ノードの記憶領域の逼迫)を抑制して通信装置間でエンドツーエンドにより通信を行うことができる。
このように、本発明における通信装置1は、メッセージの送信側が信頼度の高い複数の通信装置1に対してのみメッセージデータを分散して記憶させていき、かつ、メッセージの受信側が信頼度の高い通信装置1に対してのみメッセージデータの有無を問い合わせる。したがって、本発明における通信装置1は、メッセージの送信先とメッセージの問い合わせ先(メッセージ要求の送信先)とが互いに高信頼度の通信装置に向かって収斂していく(集まっていく)性質を有することから、情報の輻輳を抑制することができるだけでなく、高い到達率でメッセージを相手に到達させることができる。
次に、上述した実施形態を実現する通信装置1の実施例について説明する。図2は、通信装置1の概略構成図である。通信装置1は、入力部11、出力部12、通信部13、記憶部14、制御部15を有する。なお、本実施例では、通信装置1を、専用のデバイスにより構成している。しかし、これに限らず、汎用のデバイス(例えば、パーソナルコンピュータ、スマートフォンなど)に、専用のアプリケーションプログラムをインストールすることによって、通信装置1を構成することも可能である。
入力部11は、キーボードやマウス、タッチパネル、可搬記憶媒体の読取装置、マイク、カメラ等の情報入力デバイスである。利用者は、入力部11を用いて、通信装置1に対して、文字情報、音声情報、画像情報などのメッセージデータを入力することができる。なお、入力部11は、外部の装置からのメッセージデータを入力できる通信インタフェースを含んでもよい。この場合、入力部11は、通信部13と共通のインタフェース装置であってもよい。
出力部12は、図示していないディスプレイやスピーカ等の情報出力デバイスであり、制御部15からの出力信号に基づいて表示出力や音声出力等の情報出力を行う。利用者は、出力部12からの情報出力に基づいて、自らが入力したメッセージデータの確認や、他の通信装置1から受信したメッセージデータの確認などを行うことができる。なお、出力部12は、外部の装置に対してメッセージデータを出力できる通信インタフェースを含んでもよい。この場合、出力部12は、通信部13と共通のインタフェース装置であってもよい。
通信部13は、他の通信装置1との間で通信を行う通信インタフェースである。通信部13は、例えば、有線LANやUSB等の有線通信が可能な有線通信インタフェースであってもよいし、IEEE802.11諸規格のいずれかに準拠したいわゆる無線LANやBluetooth(登録商標)等の無線通信が可能な無線インタフェースであってもよい。
記憶部14は、ROM、RAM又はHDDにて構成され、通信装置1を動作させるための各種データ及び各種プログラムなどを記憶する。各種データには、信頼度情報141、メッセージ情報142、応答待ち状態情報143、その他、制御部15の処理に使用される各種情報(例えば、送受信したパケットIDのリスト、各種閾値など)を記憶している。
信頼度情報141は、自らの通信装置及び隣接通信装置の信頼度について示した情報であり、図3に例示するように、通信装置1の識別情報(以下「装置ID」という)と、静的信頼度と、近接上位信頼度と、近接距離とを対応付けたテーブル情報である。静的信頼度とは、各通信装置1における記憶装置の記憶容量の大きさやその多重化レベル、電源設備の安定度やその多重化レベル、通信設備の安定度やその多重化レベルなどによって定められる、通信装置1がメッセージを長期間管理・中継できることを示す指標であり、管理者等により各通信装置1に固定的に設定される値である。近接上位信頼度とは、自らの通信装置1の静的信頼度よりも上位の静的信頼度を有する複数の他の通信装置1の中で、自らの通信装置1から最も近接し(最もホップ数の小さい位置に存在し)、最も高い静的信頼度を有する他の通信装置(以下、「近接上位装置」という)の静的信頼度である。近接距離とは、当該近接上位装置までの距離(ホップ数)のことをいう。
図4を用いて、近接上位信頼度と近接距離とを具体的に説明する。図4において、符号1a〜1gで示した円形は、互いに異なる場所にある通信装置1を表しており、通信装置1の間を結んだ点線は、隣接関係にあることを表している。通信装置1aにとっての近接上位装置は、通信装置1c(静的信頼度2、ホップ数2)であるため、近接上位信頼度が2、近接距離が2となる。また、通信装置1dにとっての近接上位装置は、通信装置1g(静的信頼度3、ホップ数3)であるため、近接上位信頼度が3、近接距離が3となる。
信頼度情報141における動的信頼度は、初期値は0(又はNULL)と設定されており、後述する制御部15の信頼度情報更新手段154にて、通信に伴って動的に更新される。なお、以下では、近接上位信頼度と近接距離とを併せて動的信頼度と称して、値が変動しない静的信頼度に対応する用語として用いることがある。また、本明細書において、信頼度と記載しているときは、静的信頼度と動的信頼度とを含んだものとして用いることとする。
メッセージ情報142は、通信部13にて隣接通信装置から受信した他の通信装置1宛のメッセージの複製を記録した情報であり、メッセージを受信する度に当該メッセージに記載された情報を基に追記される情報である。具体的には、メッセージ情報142は、図5に示したように、受信したメッセージの宛先となる通信装置1の装置IDである宛先IDと、当該メッセージの内容であるメッセージデータと、破棄スコアとを対応付けたテーブル情報である。破棄スコアとは、通信装置1の記憶容量がオーバーフローしてしまわないよう、後述するメッセージ破棄手段156にて、メッセージ情報142に記憶された各メッセージのレコードを所定のタイミングにて破棄(データの削除)する際に参照される値である。すなわち、当該破棄スコアが大きい値のレコードであるほど、メッセージ破棄手段156により優先的にメッセージ情報142から破棄される。なお、破棄スコアは、後述するようにメッセージ又はメッセージ応答を送信(転送)するたびに、メッセージ破棄手段156により更新される。
応答待ち状態情報143は、通信部13にて隣接通信装置から受信したメッセージ要求を隣接上位装置に転送した際に、当該隣接上位装置からメッセージ応答が送信されるまでの待ち状態(応答待ち状態)を記した情報である。応答待ち状態情報143は、メッセージ要求に対するメッセージ応答を転送する際の転送経路に関する情報として利用され、いわばメッセージ応答をどの隣接通信装置に転送するかを判断するための情報として利用される。具体的には、応答待ち状態情報143は、図6に示したように、受信したメッセージ要求に記された宛先IDと、当該メッセージ要求を直接送信してきた隣接通信装置の装置IDである送信元IDと、当該メッセージ要求の受信時刻とを対応付けたテーブル情報である。後述するように、メッセージ応答を受信したとき、当該メッセージ応答に記された宛先IDに対応する送信元IDの隣接通信装置に対して、当該メッセージ応答を送信する。なお、受信時刻は、応答待ち状態を解除するためのタイムアウトを計時するための開始時刻として利用され、制御部15は、受信時刻から現在時刻までの時間間隔が予め定めた閾値を超えたとき、状態待ち状態を解除し、応答待ち状態情報143から該当するレコードを削除する。
制御部15は、CPU等を備えたマイクロコンピュータ並びにその周辺回路で構成され、上述した各部を制御して通信装置1を動作させる。制御部15は、上記のマイクロコンピュータ及びマイクロコンピュータ上で実行されるコンピュータプログラムによって実現される機能モジュールとして、メッセージ送信手段151、メッセージ要求手段152、メッセージ応答手段153、信頼度情報更新手段154、メッセージ応答転送手段155、メッセージ破棄手段156、メッセージ出力手段157を有する。
メッセージ送信手段151は、利用者からのメッセージに係る情報(例えば、利用者の安否情報)が入力部11により入力され、制御部15によりメッセージデータが生成されたとき、又は、他の通信装置1から他の通信装置1宛のメッセージを受信したときに、これらのメッセージを送信(又は転送)するための処理であるメッセージ送信処理を行う。
ここで、メッセージを送信するためのパケット(以下、「メッセージパケット」という)のパケット構造を図7に表す。図7に表すように、メッセージパケットは、メッセージの宛先となる通信装置1の装置IDである宛先IDと、メッセージを送信する通信装置1の装置IDである送信元IDと(自らが送信する場合は自装置の装置IDと等しい)、メッセージを送信する通信装置1の信頼度(静的信頼度及び動的信頼度)を示す送信元信頼度と、当該メッセージを受信することが可能な通信装置1の信頼度を示す受信許可信頼度(受信許可信頼度以上の通信装置1が受信可能)と、パケットの識別子であるパケットIDと、メッセージデータとにより、少なくとも構成される。以下、メッセージ送信手段151が実行するメッセージ送信処理の流れの一例について、図8のフローチャートを参照しながら詳細に説明する。
図8は、本実施形態におけるメッセージ送信処理を説明するフローチャートである。メッセージ送信手段151は、制御部15によりメッセージデータが生成されたとき、又は、他の通信装置1から他の通信装置1宛のメッセージを受信したときに、メッセージ送信処理を開始する。
メッセージ送信処理では、まず、制御部15によってメッセージデータが生成されたのか否かを判定する(ST11)。ST11にて、制御部15によってメッセージデータが生成されていないと判定したとき(ST11−No)、すなわち、他の通信装置1から他の通信装置1宛のメッセージを受信したとき、信頼度情報更新手段154に対して信頼度情報更新処理を実行させる(ST12)。信頼度情報更新処理は、受信したメッセージに記された送信元信頼度に基づいて、記憶部14の信頼度情報141を更新するための処理であり、後述する信頼度情報更新手段154にて実行される処理である。なお、信頼度情報更新処理の詳細については後述する。
次に、受信したメッセージパケットのパケットIDが、未送信(すなわち自分が以前送信したメッセージパケットを再受信していない)、かつ、未受信(すなわち以前受信したことがあるメッセージパケットを再受信していない)であるか否かを判定する(ST13)。この際、パケットの生成時及び受信時に記憶部14に一時的に記憶したパケットIDのリストを参照し、受信したメッセージパケットのパケットIDが記憶してあるかどうかを確認することにより判定する。なお、制御部15は、生成した全ての種類のパケット、及び受信した全ての種類のパケットに関するパケットIDを、記憶部14に一時的に記憶して管理しているものとする。ST13にて、受信したメッセージパケットのパケットIDが、未送信かつ未受信でないとき(ST13−No)、受信したメッセージパケットを破棄し、メッセージ送信処理を終了する。
一方、ST13にて、受信したメッセージパケットのパケットIDが、未送信かつ未受信であるとき(ST14−Yes)、受信したメッセージパケットに記された受信許可信頼度と、信頼度情報141に記された自装置の信頼度との間において、どちらが上位であるかを比較する信頼度比較処理を実行する(ST14)。なお、信頼度比較処理の詳細については後述する。
次に、ST14の信頼度比較処理の結果、受信したメッセージパケットに記された受信許可信頼度の方が、自装置の信頼度よりも上位であるか否かを判定する(ST15)。ST15にて、受信したメッセージパケットに記された受信許可信頼度の方が自装置の信頼度よりも上位であると判定されたとき(ST15−Yes)、受信したメッセージパケットを破棄し、メッセージ送信処理を終了する。
一方、ST15にて、受信したメッセージパケットに記された受信許可信頼度の方が自装置の信頼度よりも上位ではないと判定されたとき(ST15−No)、又は、ST11にて、制御部15によってメッセージデータが生成されたと判定したとき(ST11−Yes)、信頼度情報141に記された自装置及び隣接通信装置の中で信頼度の大きさを比較し、自装置の信頼度以上であって最も信頼度が大きい隣接通信装置(隣接上位装置)を特定する信頼度比較処理を実行する(ST16)。なお、信頼度比較処理の詳細については後述する。
ST16の信頼度比較処理にて隣接上位装置が求まると、当該隣接上位装置の信頼度を送信するメッセージパケットにおける受信許可信頼度の値に設定する信頼度設定処理を実行する(ST17)。なお、ST16の信頼度比較処理にて、信頼度情報141に隣接通信装置が全く存在していなかった場合、ST17における信頼度設定処理で設定される受信許可信頼度を、信頼度0として設定し、全ての隣接通信装置が当該メッセージパケットを受信することができるようにする。これにより、信頼度情報141には、隣接通信装置が存在していないと記憶していた場合であっても、他の通信装置の移動や起動に伴って、隣接通信装置が出現した場合に受信されることを想定して、メッセージをばら撒くことができる。また、ST16の信頼度比較処理にて、隣接通信装置が存在しているものの隣接上位装置が存在していないとき(すなわち全ての隣接通信装置の信頼度よりも自装置の信頼度の方が大きいとき)、ST17の信頼度設定処理にてメッセージパケットの信頼度を設定することなく、メッセージ送信処理を終了する。
ST17の信頼度設定処理にてメッセージパケットの信頼度が設定されると、当該メッセージパケットの送信元IDを自装置の装置IDとして設定した上で、当該メッセージパケットを通信部13により送信する処理を実行する(ST18)。この際、全てのメッセージデータを送信完了するまで、ST18の処理を繰り返して実行し、複数パケットによってメッセージデータを送信する。次に、ST18にて送信したメッセージパケットのメッセージデータを宛先IDと対応付けて、記憶部14のメッセージ情報142に記憶するメッセージ情報142の更新処理を実行する(ST19)。また、この際、メッセージ送信手段151は、後述するメッセージ破棄手段156に対して、更新したメッセージ情報142における破棄スコアも更新させる。メッセージ送信手段151は、ST19にて、メッセージ情報の更新処理を実施した後にメッセージ送信処理を終了する。
続いて、前述したメッセージ送信処理のST14及びST16にて実行される信頼度比較処理について説明する。信頼度比較処理は、「比較対象の信頼度」と「比較元の信頼度」とを比較して、どちらの信頼度が上位であるかを比較判定するための処理である。ここで、ST14の信頼度比較処理においては、「比較対象の信頼度」が受信したメッセージパケットに記された受信許可信頼度に相当し、「比較元の信頼度」が信頼度情報141に記された自装置の信頼度に相当する。また、ST16の信頼度比較処理においては、「比較対象の信頼度」及び「比較元の信頼度」のいずれも、信頼度情報141に記された各隣接通信装置の信頼度に相当する。すなわち、ST16では、各隣接通信装置の信頼度を順次比較していくことにより、最上位の信頼度を有する通信装置(隣接上位装置)を求める。
信頼度比較処理では、信頼度を比較するに際し、まず、静的信頼度の大きさを比較して、静的信頼度の大きい方を信頼度が上位であると判定する。静的信頼度の大きさが等しい場合、動的信頼度の大きさを比較して、動的信頼度の大きい方を信頼度が上位であると判定する。動的信頼度を比較するにあたって、まず、近接距離が小さい方を信頼度が上位であると判定し、近接距離が等しい場合は、近接上位信頼度の大きい方を信頼度が上位であると判定する。なお、静的信頼度及び動的信頼度(近接距離と近接上位信頼度)のいずれも等しいとき、比較元の信頼度が上位と判定する。以下、信頼度比較処理の流れの一例について、図9のフローチャートを参照しながら詳細に説明する。
信頼度比較処理では、まず、比較対象の静的信頼度と比較元の静的信頼度との大小を比較し(ST31)、比較対象の静的信頼度の方が比較元の静的信頼度よりも小さいと判定されたとき(ST31−Yes)、比較元の信頼度が上位であると判定し(ST32)、信頼度比較処理を終了する。ST31にて、比較対象の静的信頼度の方が比較元の静的信頼度よりも小さいくないと判定されたとき(ST31−No)、比較対象の静的信頼度と比較元の静的信頼度とが等しいか否かを判定し(ST33)、比較対象の静的信頼度と比較元の静的信頼度とが等しくないとき(ST33−No)、すなわち、比較対象の静的信頼度の方が比較元の静的信頼度よりも大きいとき、比較対象の信頼度が上位であると判定し(ST34)、信頼度比較処理を終了する。
一方、比較対象の静的信頼度と比較元の静的信頼度とが等しいとき(ST33−Yes)、動的信頼度を比較する処理を実行する(ST35〜ST37)。動的信頼度を比較するにあたり、まず、比較対象の近接距離が比較元の近接距離よりも大きいか否かを判定し(ST35)、比較対象の近接距離が比較元の近接距離よりも大きいとき(ST35−Yes)、比較元の信頼度が上位であると判定し(ST32)、信頼度比較処理を終了する。一方、ST35にて、比較対象の近接距離が比較元の近接距離よりも大きくないとき(ST35−No)、比較対象の近接距離と比較元の近接距離とが等しいか否かを判定し(ST36)、比較対象の静的信頼度と比較元の静的信頼度とが等しくないとき(ST36−No)、すなわち、比較対象の近接距離の方が比較元の近接距離よりも小さいとき、比較対象の信頼度が上位であると判定し(ST34)、信頼度比較処理を終了する。
ST36にて、比較対象の静的信頼度と比較元の静的信頼度とが等しいとき(ST36−Yes)、比較対象の近接上位信頼度と比較元の近接上位信頼度とを比較する処理を実行する(ST37)。ST37にて、比較対象の近接上位信頼度が比較元の近接上位信頼度以下であるとき(ST37−Yes)、比較元の信頼度が上位であると判定し(ST32)、信頼度比較処理を終了する。
メッセージ要求手段152は、自装置宛のメッセージの有無を確認する「メッセージ要求」を生成して送信するための処理であるメッセージ要求処理を行う。メッセージ要求処理は、任意のタイミングに実施され、例えば、利用者が入力部11からの入力操作に基づくタイミングや、予め定めたスケジュールに基づくタイミングに実施される。
ここで、メッセージ要求を送信するためのパケット(以下、「メッセージ要求パケット」という)のパケット構造を図10に表す。図10に表すように、メッセージ要求パケットは、メッセージの宛先となる通信装置1であってメッセージ要求を生成した通信装置1の装置IDである宛先IDと、メッセージ要求を送信する通信装置1の装置IDである送信元IDと、メッセージ要求を送信する通信装置1の信頼度(静的信頼度及び動的信頼度)を示す送信元信頼度と、当該メッセージ要求を受信することが可能な通信装置1の信頼度を示す受信許可信頼度(受信許可信頼度以上の通信装置1が受信可能)と、パケットの識別子であるパケットIDとにより、少なくとも構成される。ここで、メッセージ要求パケットにおける受信許可信頼度は、メッセージパケットと同様に信頼度情報141を参照して識別された隣接上位装置の信頼度が設定されるものとする。
メッセージ応答手段153は、通信部13からメッセージ要求を受信したとき、当該メッセージ要求に記された宛先IDのメッセージデータをメッセージ情報142に記憶しているならば当該メッセージデータを「メッセージ応答」として送信し、当該メッセージ要求に記された宛先IDのメッセージデータをメッセージ情報142に記憶していないならば隣接上位装置に対して当該メッセージ要求を送信(転送)するメッセージ応答処理を行う。
ここで、メッセージ応答を送信するためのパケット(以下、「メッセージ応答パケット」という)のパケット構造を図11に表す。図11に表すように、メッセージ応答パケットは、メッセージ応答の宛先となる通信装置1の装置IDである宛先IDと、メッセージ応答の送信先である隣接通信装置の装置IDである送信先IDと、パケットの識別子であるパケットIDと、メッセージデータとにより、少なくとも構成される。以下、メッセージ応答手段153が実行するメッセージ応答処理の流れの一例について、図12のフローチャートを参照しながら詳細に説明する。
図12は、本実施形態におけるメッセージ応答処理を説明するフローチャートである。メッセージ応答手段153は、通信部13からメッセージ要求を受信したときに、メッセージ応答処理を開始する。
メッセージ応答処理では、まず、受信したメッセージ要求に記された送信元信頼度に基づいて、記憶部14の信頼度情報141を更新する信頼度情報更新処理を、後述する信頼度情報更新手段154に対して実行させる(ST41)。なお、信頼度情報更新処理の詳細については後述する。
次に、受信したメッセージパケットのパケットIDが、未送信(すなわち自分が以前送信したメッセージ要求パケットを再受信していない)、かつ、未受信(すなわち以前受信したことがあるメッセージ要求パケットを再受信していない)であるか否かを判定する(ST42)。この際、パケットの生成時及び受信時に記憶部14に一時的に記憶したパケットIDのリストを参照し、受信したメッセージ要求パケットのパケットIDが記憶してあるかどうかを確認することにより判定する。ST42にて、受信したメッセージ要求パケットのパケットIDが、未送信かつ未受信でないとき(ST42−No)、受信したメッセージ要求パケットを破棄し、メッセージ応答処理を終了する。
一方、ST42にて、受信したメッセージ要求パケットのパケットIDが、未送信かつ未受信であるとき(ST42−Yes)、受信したメッセージ要求パケットに記された受信許可信頼度と、信頼度情報141に記された自装置の信頼度との間において、どちらが上位であるかを比較する信頼度比較処理を実行する(ST43)。メッセージ応答処理における信頼度比較処理は、メッセージ送信処理における信頼度比較処理(ST14)と同じであるため、ここでは説明を省略する。
次に、ST43の信頼度比較処理の結果、受信したメッセージ要求パケットに記された受信許可信頼度の方が、自装置の信頼度よりも上位であるか否かを判定する(ST44)。ST44にて、受信したメッセージ要求パケットに記された受信許可信頼度の方が自装置の信頼度よりも上位であると判定されたとき(ST44−Yes)、受信したメッセージ要求パケットを破棄し、メッセージ応答処理を終了する。
一方、ST44にて、受信したメッセージ要求パケットに記された受信許可信頼度の方が自装置の信頼度よりも上位ではないと判定されたとき(ST44−No)、メッセージ情報142を参照して、受信したメッセージ要求パケットに記された宛先IDと一致するメッセージを受信済みであるか否かを判定する(ST45)。
受信したメッセージ要求パケットに記された宛先IDと一致するメッセージを受信済みであるとき(ST45−Yes)、当該メッセージのメッセージデータをメッセージ応答パケットにて送信するメッセージ返信処理(ST46、ST47)を実行する。メッセージ返信処理では、まず、メッセージ情報142からメッセージ要求パケットの宛先IDに対応するメッセージデータを読み出し、当該メッセージデータを用いてメッセージ応答パケットを生成し、メッセージ要求を送信した隣接通信装置に対して(当該隣接通信装置の装置IDを送信先IDに指定して)送信する処理を実行する(ST46)。次に、後述するメッセージ破棄手段156に対して、送信したメッセージデータに対応する破棄スコアを更新させるメッセージ情報の更新処理を実行する(ST47)。メッセージ返信処理を実行し終えると、メッセージ応答手段153は、メッセージ応答処理を終了する。
一方、受信したメッセージ要求パケットに記された宛先IDと一致するメッセージを受信済みではないとき(ST45−No)、当該メッセージ要求パケットを隣接上位装置に対して送信(転送)するメッセージ要求転送処理を実行する(ST48〜ST51)。メッセージ要求転送処理では、まず、隣接上位装置を特定する信頼度比較処理を実行し(ST48)、メッセージ要求パケットの受信許可信頼度の値を、特定した隣接上位装置の信頼度の値に設定する信頼度設定処理を実行する(ST49)。メッセージ要求転送処理における信頼度比較処理及び信頼度設定処理は、メッセージ送信処理における信頼度比較処理(ST16)及び信頼度設定処理(ST17)と同じであるため、ここでは説明を省略する。次に、ST49にて受信許可信頼度が設定されたメッセージ要求パケットについて、送信元IDと送信元信頼度とを自らの装置IDと信頼度に設定して、当該メッセージ要求パケットを送信(転送)するメッセージ要求パケットの送信処理を実行する(ST50)。次に、応答待ち状態情報143に、メッセージ要求パケットに記された宛先IDと送信元IDの組を記録するよう更新する(ST51)。メッセージ要求転送処理を実行し終えると、メッセージ応答手段153は、メッセージ応答処理を終了する。
信頼度情報更新手段154は、受信したメッセージ(パケット)及びメッセージ要求(パケット)に記された信頼度(静的信頼度及び動的信頼度)に基づいて、信頼度情報141を更新する信頼度情報更新処理を行う。信頼度情報更新処理では、受信したメッセージパケット(又はメッセージ要求パケット)に記された送信元信頼度に基づいて、信頼度情報141における隣接通信装置の信頼度(静的信頼度及び動的信頼度)を更新する第一の処理を行う。すなわち、第一の処理では、受信したメッセージパケット(又はメッセージ要求パケット)に記された送信元信頼度が、当該送信元(隣接通信装置)の最新の信頼度であるとして、信頼度情報141を上書き更新する。この際、信頼度情報141に送信元である隣接通信装置のレコードが存在しない場合、新規にレコードを追加する処理を行う。
また、信頼度情報更新処理では、受信したメッセージパケット(又はメッセージ要求パケット)に記された送信元信頼度に基づいて、信頼度情報141における自装置の動的信頼度を更新する第二の処理を行う。以下、信頼度情報更新処理(第二の処理)について、図13を用いて、詳細に説明する。図13において、符号1h〜1kで示した円形は、互いに異なる場所にある通信装置1を表しており、通信装置1の間を結んだ点線は、隣接関係にあることを表している。また、各通信装置1におけるフキダシ箇所に、それぞれの信頼度を記している。
図13(a)は、通信装置1iからメッセージ(又はメッセージ要求)を受信したときにおける通信装置1hの動的信頼度の更新を説明する図である。通信装置1hは、まず、受信パケットに記された送信元信頼度から、(1)静的信頼度“1”を抽出し、その距離を“1”(隣接装置の距離)として一時的に記憶する。また、通信装置1hは、受信パケットに記された送信元信頼度から、(2)動的信頼度である近接上位信頼度“3”及び近接距離“1”を抽出し、当該近接距離に“1”を加算した値を距離として一時的に記憶する。さらに、通信装置1hは、信頼度情報141から、(3)自装置の動的信頼度を抽出して一時的に記憶する。同図の例では、自装置の動的信頼度がまだ未登録の状態であるため「なし」として記憶する。そして、一時的に記憶した(1)〜(3)の値のうち、自装置の静的信頼度よりも大きく、距離が最も小さいものを自装置の新しい動的信頼度として採用し、信頼度情報141を更新する。すなわち、同図の例では(2)の近接上位信頼度3及び近接距離2を自装置の動的信頼度として信頼度情報141を更新する。
図13(b)は、図13(a)の後に、通信装置1kからメッセージ(又はメッセージ要求)を受信したときにおける通信装置1hの動的信頼度の更新を説明する図である。通信装置1hは、まず、受信パケットに記された送信元信頼度から、(1)静的信頼度“2”を抽出し、その距離を“1”(隣接装置の距離)として一時的に記憶する。また、通信装置1hは、受信パケットに記された送信元信頼度から、(2)動的信頼度(この場合は「なし」)を抽出して一時的に記憶する。さらに、通信装置1hは、信頼度情報141から、(3)自装置の動的信頼度である近接上位信頼度“3”及び近接距離“2”を抽出して一時的に記憶する。そして、一時的に記憶した(1)〜(3)の値のうち、自装置の静的信頼度よりも大きく、距離が最も小さいもの(この例では(1))を自装置の新しい動的信頼度として採用し、信頼度情報141を更新する。
なお、信頼度情報更新処理(第二の処理)では、静的信頼度が下位の隣接通信装置からメッセージ(又はメッセージ要求)を受信した場合、自装置の動的信頼度を更新しないようにしている。例えば、図13の通信装置1kが隣接通信装置1hからメッセージ(又はメッセージ要求)を受信した場合であっても、通信装置1kは自らの動的信頼度を更新しないようにする。本実施例では、静的信頼度が下位の隣接通信装置に対して、メッセージ(又はメッセージ要求)が送信されることはないため、このような下位の隣接通信装置を経由する動的信頼度は意味を成さない。そればかりか、このような意味を成さない動的信頼度によって、意味を成す動的信頼度が上書き更新されてしまう恐れもある。したがって、本実施例では、静的信頼度が下位の隣接通信装置からのメッセージ(又はメッセージ要求)によって自装置の動的信頼度を更新しないようにし、動的信頼度の有効な更新のみを行うようにしている。
このように、メッセージ(又はメッセージ要求)の受信により、静的信頼度の大きい通信装置1に近い(少ないホップ数である)ことが判明するほど、自らの動的信頼度をより大きい値に更新する処理を繰り返すことにより、信頼度の大きい通信装置1を中心に同心円状の信頼度の山を形成していくことが可能となる。なお、本実施例では、通信装置1が存在するうちに少しでも早く上位の通信装置1に対してデータを預けることを狙って、(1)〜(3)の比較において、距離の短いものを優先して自装置の新しい動的信頼度として採用している。しかし、これに限らず、(1)〜(3)の比較において、近接上位信頼度が大きいものを優先して自装置の新しい動的信頼度として採用してもよい。
メッセージ応答転送手段155は、通信部13から他装置宛(宛先IDが他の通信装置1の装置ID)のメッセージ応答を受信したとき、予め応答待ち状態情報143に記憶した隣接通信装置(応答待ち状態情報143の送信元IDの通信装置1)に対して、当該メッセージ応答を送信(転送)するメッセージ応答転送処理を行う。
図14は、本実施形態におけるメッセージ応答転送処理を説明するフローチャートである。メッセージ応答転送手段155は、通信部13から他装置宛のメッセージ応答を受信したときに、メッセージ応答転送処理を開始する。
メッセージ応答転送処理では、まず、受信したメッセージ応答パケットのパケットIDが、未送信(すなわち自分が以前送信したメッセージ応答パケットを再受信していない)、かつ、未受信(すなわち以前受信したことがあるメッセージ応答パケットを再受信していない)であるか否かを判定する(ST61)。この際、パケットの生成時及び受信時に記憶部14に一時的に記憶したパケットIDのリストを参照し、受信したメッセージ要求パケットのパケットIDが記憶してあるかどうかを確認することにより判定する。ST61にて、受信したメッセージ応答パケットのパケットIDが、未送信かつ未受信でないとき(ST61−No)、受信したメッセージ応答パケットを破棄し、メッセージ応答転送処理を終了する。
一方、ST61にて、受信したメッセージ応答パケットのパケットIDが、未送信かつ未受信であるとき(ST61−Yes)、受信したメッセージ応答パケットに記された送信先IDが自装置の装置IDと同じであるか否かを判定する(ST62)。受信したメッセージ応答パケットの送信先IDが、自装置の装置IDと同じでないとき(ST62−No)、受信したメッセージ応答パケットを破棄し、メッセージ応答転送処理を終了する。
一方、ST62にて、受信したメッセージ応答パケットの送信先IDが、自装置の装置IDと同じであるとき(ST62−Yes)、応答待ち状態情報143を参照してメッセージ応答パケットに記された宛先IDが、応答待ち状態情報143に登録されているか否かを判定する(ST63)。メッセージ応答パケットに記された宛先IDが、応答待ち状態情報143に登録されていないとき(ST63−No)、受信したメッセージ応答パケットを破棄し、メッセージ応答転送処理を終了する。
メッセージ応答パケットに記された宛先IDが、応答待ち状態情報143に登録されているとき(ST62−Yes)、メッセージ応答パケットを隣接通信装置に送信(転送)するメッセージ応答パケットの転送処理を実行する(ST64)。この際、メッセージ応答パケットの送信先IDを、応答待ち状態情報143においてメッセージ応答パケットに記された宛先IDに対応して記録された送信元IDに書き換える。これにより、メッセージ要求を前に送信した隣接通信装置を直接指定する形で、当該メッセージ要求に対応するメッセージ応答を転送することになる。このように、各通信装置1においてメッセージ応答転送処理を繰り返すことにより、メッセージ要求パケットの辿ったルートと同じルート(方向は逆方向)を辿って、メッセージ要求を生成した通信装置1(宛先ID)に対してメッセージ応答を送信することが可能となる。
メッセージ破棄手段156は、メッセージ又はメッセージ応答を送信する都度、メッセージ情報142の破棄スコアを更新する処理(ST19及びST47のメッセージ情報の更新処理にて実施)と、当該破棄スコアを参照して所定のタイミングにてメッセージ情報142に記憶されたレコードを破棄(データの削除)するメッセージ破棄処理とを実行する。
ここで、破棄スコアを更新する処理においては、メッセージをより信頼度の大きい通信装置1に送信するほど、優先的に破棄されるように破棄スコアを更新する。例えば、メッセージ送信処理にて、メッセージパケットを自分よりも信頼度の高い隣接通信装置に対して送信したときに破棄スコアを2増加させ、自分と同じ信頼度の隣接通信装置に対して送信したときに破棄スコアを1増加させる。このように、より信頼できる通信装置1にメッセージデータを伝えることができた場合においては、自己の通信装置1において当該メッセージデータを記憶しておく必要性がより低くなることから、より優先的に破棄されるように破棄スコアを更新する。また、破棄スコアを更新する処理においては、メッセージデータを宛先の通信装置1に送信できた可能性が高いほど、優先的に破棄されるように破棄スコアを更新する。例えば、メッセージ応答処理にて、メッセージ応答パケットを送信したときに破棄スコアを4増加させる。このように、メッセージ要求が到達したということは、メッセージデータの宛先となる通信装置1とネットワーク的に接続状態にある可能性が高いことを意味しているため、当該メッセージ要求に対してメッセージ応答を行ったときは、当該メッセージデータを記憶しておく必要性がより低くなることから、より優先的に破棄されるように破棄スコアを更新する。
メッセージ破棄処理は、例えば、通信装置1におけるメッセージ情報142の記憶容量が予め定めた閾値以上となったとき、通信装置1の残記憶容量が予め定めた閾値以下となったとき、全記憶容量に占める使用済み記憶容量の割合が予め定めた閾値以上となったとき、予め定めた所定時刻になったとき、利用者が入力部11を用いてメッセージの破棄命令を入力したとき、などのタイミングで実行される。メッセージ破棄処理では、メッセージ情報142における破棄スコアを参照して、破棄スコアが大きいメッセージであるほど、優先的に当該メッセージのレコードを破棄(データの削除)する処理を実行する。このように、メッセージ破棄手段156は、メッセージ(又はメッセージ応答)を送信する度に、保持する必要性の低いメッセージデータをスコアリングし、このような保持する必要性の低いメッセージデータを優先的に破棄する。これにより、不必要なメッセージを大量に記憶することによる、通信装置1の記憶容量のオーバーフローを抑制することができる。
メッセージ出力手段157は、他の通信装置1から自分宛のメッセージ(又は自分宛のメッセージ応答)を受信したとき、当該メッセージ(又は当該メッセージ応答)に記されたメッセージデータを出力部12から出力するための出力処理を実行する。出力処理では、メッセージデータのデータ形式によって出力方法を変えてもよい。例えば、メッセージデータが、テキストデータであれば液晶ディスプレイ等の出力部12に表示出力し、音声データであればスピーカ等の出力部12に音声出力する。また、メッセージを受信した旨を表す出力だけを行い、入力部11からの利用者による操作入力により、メッセージデータを出力してもよい。
このように、本発明の通信装置1は、断続的通信環境であったとしても、信頼度に基づいて蓄積転送型通信を行うことによって、情報の輻輳(通信トラフィックの増大、ノードの記憶領域の逼迫)を抑制して、エンドツーエンドのメッセージの送受信を行うことができる。特に、上記実施例に記載したように、通信装置1が、たとえ初期状態において自らの動的信頼度や、隣接通信装置の信頼度を把握していなかったとしても、隣接通信装置と通信していくにつれて、これらの信頼度の値を最新の値として更新していく。これにより、大規模災害時のように、通信可能な装置が変動する不安定な通信環境であったとしても、環境に適応しながら、エンドツーエンドのメッセージの送受信を行うことができる。そして、時間の経過とともに信頼度の大きい通信装置1を中心とした同心円状の信頼度の山を形成していく。信頼度の山を形成すると、本発明の通信装置1は、山の頂上に向かってメッセージを送信し、また、山の頂上に向かってメッセージ要求を送信するため、メッセージとメッセージ要求とが出会う可能性が高まる。したがって、より高い到達率により、エンドツーエンドのメッセージの送受信を行うことが可能となる。
また、本発明の通信装置1は、メッセージの受信側の通信装置1が、自らメッセージを取り出しに行く通信形態(プル型通信)としている。したがって、利用者は、自らが携帯する通信装置1を、任意のタイミングで電源ONとしてメッセージを送信し、又はメッセージ要求を送信して自分宛のメッセージを任意のタイミングで受信することができる。これにより、通信装置1の電力消費を最小限とすることができることから、大規模災害等によって電源供給が途切れるような状態であっても、長期間、エンドツーエンドにより、メッセージの送受を行うことが可能となる。
ところで、本発明は、上記実施形態及び実施例に限定されるものではなく、特許請求の範囲に記載した技術的思想の範囲内で、更に種々の異なる実施例で実施されてもよいものである。また、実施例に記載した効果は、これに限定されるものではない。
上記実施例では、メッセージ応答転送手段155は、メッセージ応答転送処理にて、他の通信装置1宛のメッセージ応答を予め応答待ち状態情報143に記憶した隣接通信装置に転送している。しかし、これに限らず、メッセージ応答を転送しない、いわば、メッセージ応答転送手段155を不要とする構成であってもよい。すなわち、受信した他の通信装置1宛のメッセージ応答を転送せずに、記憶部14のメッセージ情報142に記憶しておく。そして、当該メッセージ応答の宛先となる通信装置1から再度、メッセージ要求を受信したとき、メッセージ応答手段153におけるメッセージ返信処理にて隣接通信装置にメッセージ応答を送信する。このように、メッセージ要求が届くたびに、1ホップずつ、宛先となる通信装置1にメッセージ応答(メッセージデータ)が近づくような構成であってもよい。これにより、宛先となる通信装置1は、複数のメッセージ要求を送信しなければならないため、通信トラフィックが増加するものの、メッセージデータが複数の通信装置1に、より分散保管されることから、変動が大きいような通信環境においては、より到達率を高くすることができる。
上記実施例では、メッセージ送信処理、メッセージ要求処理、メッセージ要求転送処理にて、「自装置の信頼度以上であって最も信頼度が大きい隣接上位装置」に対してのみメッセージ(又はメッセージ要求)を送信している。しかし、これに限らず、「最も信頼度が大きい隣接通信装置」を隣接上位装置として、当該隣接上位装置に対してメッセージ(又はメッセージ要求)を送信してもよい。すなわち、自装置の信頼度よりも下位の隣接通信装置しか存在しなかったとしても、それらの隣接通信装置の中で最も信頼度が大きい隣接通信装置に対して、メッセージ(又はメッセージ要求)を送信(転送)する。これにより、メッセージ(又はメッセージ要求)がより広範囲に拡散するため、通信トラフィックが増加する反面、到達率をより高くすることができる。
上記実施例では、固定的に設定される「静的信頼度」と、近接上位装置の静的信頼度(近接上位信頼度)及び当該近接上位装置までのホップ数(近接距離)からなる動的に変動しうる「動的信頼度」とを用いて、信頼度の大きさを表している。しかし、これに限らず、動的に変動しうる一つの値である「信頼度」を用いて、信頼度の大きさを表してもよい。すなわち、初期状態において設定された信頼度が、近接上位信頼度の大きさに応じて修正されるようにしてもよい。例えば、近接上位信頼度が大きいほど自らの信頼度を大きい値になるよう、自らの信頼度に対して係数を乗算した近接上位信頼度を加算する。また、近接距離が小さいほど自らの信頼度が大きい値になるよう、近接距離に反比例する値(距離信頼度)を求め、当該距離信頼度を自らの信頼度に加算する。
上記実施例では、メッセージ送信手段151(又はメッセージ要求手段152、メッセージ応答手段153)にて、信頼度情報141を参照して隣接上位装置に対してメッセージ(又はメッセージ要求)パケットを送信するに際し、当該メッセージ(又はメッセージ要求)パケットに隣接上位装置の信頼度である受信許可信頼度を記して送信している。これにより、受信許可信頼度よりも小さい通信装置1が当該パケットを受信できないようにすることによって、いわば間接的に隣接上位装置に対してメッセージ(又はメッセージ要求)を送信するようにしている。しかし、これに限らず、メッセージ(又はメッセージ要求)パケットに、隣接上位装置の装置IDを記して送信することにより、当該隣接上位装置が直接的に当該パケットを受信できるようにしてもよい。
上記実施形態及び実施例では、近接上位装置を求めるにあたってホップ数を基準に求めており、いわば動的信頼度をホップ数を基準に規定している。すなわち、本発明における「ネットワーク距離」をホップ数として説明している。しかし、これに限らず、本発明における「ネットワーク距離」を「帯域幅」や「ネットワークの信頼性」とし、これらの値に基づいて動的信頼度を規定してもよい。例えば、自らの通信装置1の静的信頼度よりも上位の静的信頼度を有する複数の他の通信装置1までに至る経路の中で、最も帯域幅の大きい経路の通信装置1であって、最も高い静的信頼度を有する他の通信装置1を近接上位装置としてもよい。この場合、近接距離は、当該近接上位装置までに至る経路の帯域幅を考慮した値として規定される。