JP2013168883A - 通信装置 - Google Patents
通信装置 Download PDFInfo
- Publication number
- JP2013168883A JP2013168883A JP2012032044A JP2012032044A JP2013168883A JP 2013168883 A JP2013168883 A JP 2013168883A JP 2012032044 A JP2012032044 A JP 2012032044A JP 2012032044 A JP2012032044 A JP 2012032044A JP 2013168883 A JP2013168883 A JP 2013168883A
- Authority
- JP
- Japan
- Prior art keywords
- group
- node
- mobile terminal
- data
- terminal
- 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.)
- Pending
Links
Landscapes
- Traffic Control Systems (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
【課題】移動端末のノードが所属するグループが切り替わる際の通信負荷の増大を抑制することができるようにする。
【解決手段】グループ決定部50では、グループID生成部52によって、自端末のグループ内の各移動端末のノードID及び自端末のノードIDのビットパターンを用いて、自グループのグループIDを生成する。関数h(x)により、データIDをランダムパターンに変換し、関数g(x、y)により、ランダムパターンを用いて、生成した自グループIDのビットパターンを含む各グループのビットパターンに処理を加える。評価部54によって、処理が加えられた各グループのビットパターンを評価して、エリアデータを割り当てる移動端末のグループを決定する。
【選択図】図21
【解決手段】グループ決定部50では、グループID生成部52によって、自端末のグループ内の各移動端末のノードID及び自端末のノードIDのビットパターンを用いて、自グループのグループIDを生成する。関数h(x)により、データIDをランダムパターンに変換し、関数g(x、y)により、ランダムパターンを用いて、生成した自グループIDのビットパターンを含む各グループのビットパターンに処理を加える。評価部54によって、処理が加えられた各グループのビットパターンを評価して、エリアデータを割り当てる移動端末のグループを決定する。
【選択図】図21
Description
この発明は、移動端末に係り、特に、エリアに関するデータを移動端末群で分散して記憶する移動端末に関する。
従来から、MANET環境への適応を目標としたDHT(Distributed Hash Table)の一つとして、MADPastryが知られている(非特許文献1)。MADPastryでは、ルーティングテーブルの肥大化、維持コストを抑えるために、複数のグループに分割して管理を行っている。Pastryと呼ばれるDHTに基づいた手法で、アドホックルーティングプロトコルにはAODVを用いている。
また、MADPastryに参加する移動体は必ず、どこかのグループに属している。各グループのマスターはグループのビーコンを発信し、グループマスター以外の移動体は受信したビーコンのホップ数が最も少ないグループに属する。また、各移動体はグループへのルーティングテーブルと同一グループの移動体リストを持ち、これらを用いてルーティングを行っている。
Thomas Zahn and Jochen Schiller,"A DHT substrate FOR practicably sized MANETs" in ASWN, June 2005
上記のMADPastryでは、位置情報を用いてグループに分けて管理しているが、グループIDにグループ内ノードの情報が反映されていないため、ノードのグループが切り替わるタイミングでノードは全データを入れ替える必要があり、通信負荷が大きくなってしまう、という問題がある。
本発明は、上記の問題点を解決するためになされたもので、移動端末のノードが所属するグループが切り替わる際の通信負荷の増大を抑制することができる移動端末を提供することを目的とする。
上記の目的を達成するために本発明に係る移動端末は、本発明に係る移動端末によれば、予め定められたエリアに関連するエリアデータを、移動端末群の各移動端末に対応するノードの集合に対して分散して割り当てることにより、前記エリアデータを前記移動端末群の各移動端末で分散して記憶するためのデータ分散記憶システムにおける移動端末であって、周辺の移動端末と無線通信を行うための通信手段と、前記エリアを分割した分割エリア内に存在する移動端末のグループを示すグループIDであって、前記分割エリア内に存在する各移動端末を示すノードIDを用いて定められるビットパターンで表わされるグループIDを前記エリアの各分割エリアについて取得すると共に、自端末が存在する前記分割エリア内に存在する各移動端末を示すノードIDを取得するID取得手段と、周辺の移動端末から、前記通信手段により前記エリアデータを受信した場合に、前記ID取得手段によって取得した自端末が存在する前記分割エリア内に存在する各移動端末のノードID及び自端末のノードIDを用いて、自端末が存在する前記分割エリアに対応する前記グループIDを生成すると共に、前記受信したエリアデータのデータIDを所定の関数を用いてランダムパターンに変換し、前記ランダムパターンを用いて、前記生成したグループIDを含む各分割エリアに対応する各グループIDのビットパターンに処理を加え、前記処理が加えられた各グループIDのビットパターンを評価して、前記エリアデータを割り当てる前記移動端末のグループを決定するグループ決定手段と、前記グループ決定手段によって決定された前記グループが、自端末が存在する前記分割エリアに対応するグループである場合、前記ID取得手段によって取得した自端末が存在する前記分割エリア内に存在する各移動端末のノードID及び自端末のノードIDの各々をビットパターンに変換すると共に、前記受信したエリアデータのデータIDを所定の関数を用いてランダムパターンに変換し、前記ランダムパターンを用いて、前記変換した各移動端末のノードID及び自端末のノードIDの各々のビットパターンに処理を加え、前記処理が加えられた各移動端末のノードID及び自端末のノードIDの各々のビットパターンを評価して、前記エリアデータを割り当てる前記ノードを決定するノード決定手段と、前記自端末のノードに割り当てられた前記エリアデータを記憶する記憶手段と、前記グループ決定手段によって決定されたグループが、自端末が存在する前記分割エリアに対応するグループでない場合、及び前記ノード決定手段によって決定されたノードが、自端末のノードでない場合、前記受信した前記エリアデータを他の移動端末へ転送するように前記通信手段を制御する転送制御手段と、を含んで構成されている。
本発明の移動端末によれば、ID取得手段によって、前記エリアを分割した分割エリア内に存在する移動端末のグループを示すグループIDであって、前記分割エリア内に存在する各移動端末を示すノードIDを用いて定められるビットパターンで表わされるグループIDを前記エリアの各分割エリアについて取得すると共に、自端末が存在する前記分割エリア内に存在する各移動端末を示すノードIDを取得する。
そして、グループ決定手段によって、周辺の移動端末から、前記通信手段により前記エリアデータを受信した場合に、前記ID取得手段によって取得した自端末が存在する前記分割エリア内に存在する各移動端末のノードID及び自端末のノードIDを用いて、自端末が存在する前記分割エリアに対応する前記グループIDを生成すると共に、前記受信したエリアデータのデータIDを所定の関数を用いてランダムパターンに変換し、前記ランダムパターンを用いて、前記生成したグループIDを含む各分割エリアに対応する各グループIDのビットパターンに処理を加え、前記処理が加えられた各グループIDのビットパターンを評価して、前記エリアデータを割り当てる前記移動端末のグループを決定する。ノード決定手段によって、前記グループ決定手段によって決定された前記グループが、自端末が存在する前記分割エリアに対応するグループである場合、前記ID取得手段によって取得した自端末が存在する前記分割エリア内に存在する各移動端末のノードID及び自端末のノードIDの各々をビットパターンに変換すると共に、前記受信したエリアデータのデータIDを所定の関数を用いてランダムパターンに変換し、前記ランダムパターンを用いて、前記変換した各移動端末のノードID及び自端末のノードIDの各々のビットパターンに処理を加え、前記処理が加えられた各移動端末のノードID及び自端末のノードIDの各々のビットパターンを評価して、前記エリアデータを割り当てる前記ノードを決定する。
そして、転送制御手段によって、前記グループ決定手段によって決定されたグループが、自端末が存在する前記分割エリアに対応するグループでない場合、及び前記ノード決定手段によって決定されたノードが、自端末のノードでない場合、前記受信した前記エリアデータを他の移動端末へ転送するように前記通信手段を制御する。
このように、グループ内のノードIDを用いて定められるグループIDに基づいて、エリアデータを割り当てるグループを決定すると共に、グループ内のノードIDに基づいて、エリアデータを割り当てるノードを決定することにより、移動端末のノードが所属するグループが切り替わっても、当該ノードにエリアデータが割り当てられる可能性があるため、移動端末のノードが所属するグループが切り替わる際の通信負荷の増大を抑制することができる。
本発明に係るグループIDのビットパターンを、ノードIDに応じて1以上である所定数のビットを1にしたビットパターンを、対応する前記分割エリア内に存在する各移動端末のノードIDについて足し合わせて求めるようにすることができる。これによって、エリアデータを移動端末群で安定して分散記憶することができる。
本発明に係るグループ決定手段は、前記ID取得手段によって取得した自端末が存在する前記分割エリア内に存在する各移動端末のノードID及び自端末のノードIDをビットパターンに変換し、前記変換した各移動端末のノードID及び自端末のノードIDのビットパターンを足し合わせることにより、自端末が存在する前記分割エリアに対応する前記グループIDのビットパターンを生成するようにすることができる。
本発明に係るグループ決定手段は、前記ランダムパターンを用いて、前記生成したグループIDのビットパターンを含む各分割エリアに対応する各グループIDのビットパターンを並び替えるように処理を加え、前記ノード決定手段は、前記ランダムパターンを用いて、前記変換した各移動端末のノードID及び自端末のノードIDの各々のビットパターンを並び替えるように処理を加えるようにすることができる。
本発明に係る前記ID取得手段は、自端末が存在する前記分割エリアに隣接する前記分割エリアの各々について、前記隣接する分割エリア内に存在する前記グループを経由してルーティング可能な前記グループのグループIDのビットパターンを足し合わせたビットパターンを取得すると共に、自端末が存在する前記分割エリア内に存在する各移動端末のノードIDを取得し、前記グループ決定手段は、前記ID取得手段によって取得した前記隣接する分割エリアの各々に対する前記グループIDのビットパターンを足し合わせたビットパターンと、前記生成したグループIDとの各々に処理を加え、前記処理が加えられたビットパターンを評価して、前記エリアデータを割り当てる前記移動端末のグループを決定するようにすることができる。これによって、取得するグループIDのビットパターンのデータ量を削減することができる。
以上説明したように、本発明の移動端末によれば、グループ内のノードIDを用いて定められるグループIDに基づいて、エリアデータを割り当てるグループを決定すると共に、グループ内のノードIDに基づいて、エリアデータを割り当てるノードを決定することにより、移動端末のノードが所属するグループが切り替わっても、当該ノードにエリアデータが割り当てられる可能性があるため、移動端末のノードが所属するグループが切り替わる際の通信負荷の増大を抑制することができる、という効果が得られる。
以下、図面を参照して、本発明の好適な実施の形態について説明する。なお、本発明を適用した移動端末を車両に搭載し、複数の移動端末の間で無線通信を行って、データを分散して記憶するデータ分散記憶システムを例に説明する。
図1に示すように、第1の実施の形態に係るデータ分散記憶システムの移動端末10は、自端末を搭載している車両に設けられ、かつ、自端末の位置を測定するためのGPS12と、周辺の他の移動端末10と無線通信を行うためのデータ通信部14と、GPS12によって測定された自端末の位置に基づいて、周辺の複数の移動端末10を含む移動端末群でのデータの分散管理を行うコンピュータ16とを備えている。
データ通信部14は、無線アドホック通信を行って、周辺の他の移動端末10と通信を行い、アドホックルーティングによってエリア内にネットワークを形成する。なお、アドホックルーティングのプロトコルは任意である。データ通信部14は、送信データとして、GPS12によって計測した自端末の位置情報を含むデータを送信する。
コンピュータ16は、移動端末10全体の制御を司るCPU、後述する参加時処理ルーチン、参加中処理ルーチン、グループ内ルーティング情報受信時処理ルーチン、グループ間ルーティング情報受信時処理ルーチン、データ受信時処理ルーチン、及びグループ間ルーティング情報受け渡し処理ルーチンのプログラム等を記憶した記憶媒体としてのROM、ワークエリアとしてデータを一時格納するRAM、及びこれらを接続するバスを含んで構成されている。このような構成の場合には、各構成要素の機能を実現するためのプログラムをROMに記憶しておき、これをCPUが実行することによって、各機能が実現されるようにする。
このコンピュータ16をハードウエアとソフトウエアとに基づいて定まる機能実現手段毎に分割した機能ブロックで説明すると、上記図1に示すように、各交差点エリアの位置情報及び後述する分割エリアの位置情報を含む道路地図データを記憶する地図データベース20と、GPS12によって計測された自端末の位置を取得する共に、地図データベース20から自車両の直近の交差点エリアの位置情報及び分割エリアの位置情報を取得する位置取得部22と、位置取得部22によって取得された自端末位置と交差点エリアの中心位置との距離、及び分割エリアの中心位置との距離に基づいて、後述するグループ内ルーティングテーブル管理部26及びグループ間ルーティングテーブル管理部30を制御する制御部24と、グループ内のルーティングを行うためのグループ内ルーティングテーブルを管理するグループ内ルーティングテーブル管理部26と、グループ内ルーティングテーブルを記憶するグループ内ルーティングテーブル記憶部28と、グループ間のルーティングを行うためのグループ間ルーティングテーブルを管理するグループ間ルーティングテーブル管理部30と、グループ間ルーティングテーブルを記憶するグループ間ルーティングテーブル記憶部32と、DHTに従ってデータ分散管理を行うデータ管理部34と、自端末に対して割り当てられたエリアデータを記憶するデータ記憶部36と、グループ内ルーティング情報を生成すると共に、グループ間ルーティングテーブルに基づいてグループ間ルーティング情報を生成するルーティング情報生成部38とを備えている。なお、グループ内ルーティングテーブル管理部26及びグループ間ルーティングテーブル管理部30がID取得手段の一例である。また、データ管理部34が、グループ決定手段、ノード決定手段、転送制御手段の一例であり、DHTデータ記憶部36が、記憶手段の一例である。
ここで、本実施の形態に係るデータ分散管理を行う原理について説明する。
本実施の形態では、移動体が無線通信を行う環境下で、位置に依存した情報(エリアデータ)を、特定のエリア(例えば、交差点)内の複数の移動端末によって維持し、分散管理する。エリアから離脱する移動端末は、エリア内の他の移動端末にデータを転送することで、エリア内へ情報を維持する。データの分散管理を、DHTを用いて実現する。
DHT(Distributed Hash Table)とは、分散環境でデータを管理する手法の1つであり、ハッシュテーブルを用いてデータを管理する手法である。また、ハッシュテーブルは、キーとデータの組を格納し、キーに対応するデータをすばやく参照するためのデータ構造である。
DHTの例としては、Chord、Pastry、Kademliaなどが挙げられ、DHTの応用例としては、Dynamo、Cassandra、Kaiなどがある。
DHTを用いることにより、データ管理負荷をノードに対して均等に分散でき、エリアデータを誰が持つか、サーバ無しで一意に決定でき、データのキーが分かれば正確な目的地がわからなくてもルーティング可能である。ただし、ルーティングテーブルが正しく構成されていることが条件である。また、DHTを無線通信環境で応用することで、特定エリアに仮想分散データベースを実現することができる。
ここで、Chordを用いたデータ分散管理について説明する。各移動端末の持つ固有のIDとデータの持つ固有のIDとをそれぞれ、ハッシュ関数を用いてハッシュ値にする。移動端末(ノード)とデータとは、図2のように対応付けられ、データは、自身のハッシュ値より大きいハッシュ値を持つ移動端末(ノード)の中で、最小のハッシュ値を持つ移動端末(ノード)に保存される。
また、自端末位置と交差点位置との距離が、所定値以内であれば、参加処理を行う。参加処理では、自端末EのIDのハッシュ値f(E)を計算して、自端末のノードを追加する。これによって、図3に示すように、自端末のノードに割り当てられるエリアデータが、他の移動端末Aから送信され、自端末が当該エリアデータを受け取る。なお、図3の例では、他の移動端末Dを介して、他の移動端末Aからのエリアデータを自端末Eが受け取っている。
また、自端末位置と交差点位置との距離が、所定値より大きくなると、離脱処理を行う。離脱処理では、自端末のノードを削除する。これによって、図4に示すように、自端末(図4のG参照)のノードに割り当てられていたエリアデータが、他の移動端末Dへ送信される。なお、図4の例では、他の移動端末Fを介して、自端末Gから他の移動端末Dへエリアデータが送信されている。
ここで、図5に示すような階層化されていないDHTでは、データを正しく管理するために、エリア内の全ノードIDを知る必要がある。そのため、DHTのルーティングテーブルを維持するための通信が多くなる。そこで、本実施の形態では、ルーティングテーブル維持通信を抑制するために、図6のような2階層DHTを用いる。2階層DHTでは、データを管理するために複数のノードで構成されるグループという単位を追加する。DHTを階層化する場合、データはまずどのグループで管理するかが決定され、その後グループ内のどのノードがデータを管理するかが決定される。各ノードは所属するグループ内の全ノードIDと情報保持エリア内のグループIDを知っていればルーティング可能であるためルーティングテーブルの維持コストを抑制できる。
しかし、グループ間をノードが移動すると、移動前のグループで管理していたデータを他ノードに送信し、移動後のグループで管理するデータを他ノードから受信する必要があるため、多くのデータ通信が発生する。上記図6の例ではノードがグループBからグループCに移動するときに、グループBで管理していたデータをグループB内の他ノードに送信し、グループCで新たに管理するデータをグループC内の他ノードから受信する。
そこで、本実施の形態では、グループ内のノードIDを用いてグループIDを変更する2階層DHTを採用する。すなわち、図7に示すように、グループIDをグループ内のノードIDのOR演算によって構成することで、グループとノードのIDの間で関連付けを行う。これによって、各ノードは全ノードIDを知る必要が無いため、ルーティングテーブル管理通信を低く抑えることが可能となる。また、グループ間をノードが移動する際に、ノードが管理しているデータが移動後のグループに所属する可能性があるように、グループIDが適切に変更されるため、グループ間を移動しても、同じノードに対して同じデータ割り当てられる可能性があり、データ通信の発生を抑えられる。
次に、グループ構成の具体例を図8に示す。情報保持エリア(交差点エリア)は位置情報を用いて複数の分割エリアに分割され、ノードのグループが、分割エリアの中心座標と範囲(x座標、y座標、範囲)によって定義される。例えば、グループAが(150、300、100)で定義され、グループBが(300、300、100)で定義され、グループCが(450、300、100)で定義される。
また、グループ(分割エリア)のサイズは、同一グループのノードが1ホップで通信可能なサイズを想定している。
グループIDは可変であり、内部ノードによって構成される。上記図8の例では、グループIDのサイズは10bitで、グループ内に存在するノードIDの各々からビットパターンに1を書き込む位置を決定している。グループAでは内部ノードIDの各々が1、2、3であり、1〜3ビットに1の書き込みを行うので、グループIDは”0000000111”となっている。
制御部24は、位置取得部22によって取得された自端末位置と分割エリアの中心位置との距離に基づいて、自端末が所属するグループ(自端末が存在する分割エリア)を判断する。また、制御部24は、所属するグループの変化により、グループ間の移動を判断する。
また、制御部24は、位置取得部22によって取得された自端末位置と交差点エリアの中心位置との距離が、所定の範囲内であれば、制御部24は、DHTへの参加を判断する。制御部24は、位置取得部22によって取得された自端末位置と交差点エリアの中心位置との距離が、所定の範囲より大きくなると、DHTからの離脱を判断する。
次に、ルーティングテーブル及びルーティング情報について説明する。
まず、参考例として、グループが存在しない場合のルーティングテーブルの具体例を図9に示す。ルーティングテーブルは、自端末が直接通信可能なノードから提供されたルーティング情報に基づいて生成され、自端末が直接通信可能なノードのノードID及びビットパターンから構成される。
次に、参考例として、グループが存在しない場合のルーティング情報の具体例について図10を用いて説明する。ルーティング情報は送信先・送信元ノードIDとビットパターンによって構成されている。ビットパターンは、ルーティングテーブルの中でノードIDが送信先ノードIDでないビットパターンをOR演算すると共に、送信元ノードIDによって決定されたビットを1にしたビット列である。
上記図10の例では、ノード4がノード5に対してルーティング情報を送信する。その場合、ノード4のルーティングテーブルの中で、ノードIDが5以外のビットパターンをOR演算し、さらに送信元ノードIDが4なので右から4ビット目に1を書き込んだものをビットパターンとする。作成したビットパターンに送信先ノードID(5)と送信元ノードID(4)を付加して、ノード5に対して送信する。
ビットパターンの具体例にはシンプルなものを用いたが、これ以外にもBFを用いる手法などが考えられる。
次に、本実施の形態におけるルーティングテーブル(グループ化したときのルーティングテーブル)の具体例について説明する。グループ内ルーティングテーブル及びグループ間ルーティングテーブルの具体例を図11に示す。各ノードはグループ間とグループ内の2つのルーティングテーブルを保持する。グループ間ルーティングテーブルは同一グループのノードの間では共通であり、隣接するグループとのデータのやりとりに用いる。グループ間ルーティングテーブルの行数は隣接するグループの数と一致し(グループAやCは1、グループBは2)、各行は隣接するグループの位置情報とビットパターンという項目を持つ。隣接グループ位置情報は、上記図11の例ではA、B、Cと書かれているが、実際には(x座標、y座標、範囲)である。以下、グループ位置情報の表記については同様である。グループ間ルーティングテーブルのビットパターンについては後述する。
グループ内ルーティングテーブルは同一グループ内でのデータのやりとりに用いる。同一グループの全ノードのIDがグループ内ルーティングテーブルに登録される。
グループ内ルーティングテーブル記憶部28は、上述したように、同一グループに所属する全ノードのノードIDからなるグループ内ルーティングテーブルを記憶する。グループ間ルーティングテーブル記憶部32は、隣接グループ毎の隣接グループ位置情報及びビットパターンからなるグループ間ルーティングテーブルを記憶する。
また、本実施の形態におけるグループ間ルーティング情報の具体例について図12を用いて説明する。
グループ間ルーティング情報は、送信先グループの位置情報と送信元グループの位置情報とビットパターンとによって構成される。
上記図12のようにグループBのノードからグループAのノードへグループ間ルーティング情報を送信する例を考える。送信先グループ位置情報はAで送信元グループ位置情報はBである。ビットパターンは、グループBで保持するグループ間ルーティングテーブルの中で隣接グループ位置情報がAではないビットパターンと自グループのグループID(自グループ内の各ノードIDをOR演算したもの)とをOR演算して構成する。
このとき、グループ間ルーティング情報は、同一グループのノードの間で共通であるため、グループ間ルーティング情報を送信するときに、1対1で送信する以外にも、1対多のブロードキャストでルーティング情報を伝える手法も考えられる。
このように、グループ間ルーティングテーブル記憶部32は、上述したように、隣接グループ位置情報と、当該隣接グループを経由してルーティング可能なグループのグループIDのOR演算により求まるビットパターンとからなるグループ間ルーティングテーブルを記憶する。
また、ルーティング情報生成部38は、グループ間ルーティングテーブル記憶部32に記憶されているグループ間ルーティングテーブルに基づいて、送信先グループ位置情報以外の隣接グループ位置情報のビットパターンと、自グループのグループID(自グループ内の各ノードIDをOR演算したもの)とをOR演算したビットパターン、送信先グループ位置情報、及び送信元グループ位置情報(自グループのグループ位置情報)からなるグループ間ルーティング情報を生成し、隣接する送信先グループに対してデータ通信部14により送信する。
また、グループ間ルーティングテーブル管理部30は、データ通信部14により他の移動端末10からブロードキャストされたグループ間ルーティング情報を受信すると、グループ間ルーティングテーブル記憶部32に記憶されているグループ間ルーティングテーブルを更新する。
また、本実施の形態におけるグループ内ルーティング情報の具体例について、図13を用いて説明する。
グループ内ルーティングテーブルを維持するためのグループ内ルーティング情報は、自端末が所属するグループの位置情報と自端末のノードIDとから構成され、グループ内のノードに対してブロードキャストされる。例えば、ノード3ならば、グループA内のノード1、2に対してグループ位置情報=A、ノードID=3というグループ内ルーティング情報が送信されるようにブロードキャストされる。
また、ノードがグループ間を移動する場合は、移動前と移動後のグループそれぞれに、新たに所属するグループ位置情報と自ノードIDをブロードキャストすることで、グループ内ルーティングテーブルを更新させる。例えば、ノード5がグループBからCへ移動する場合、ノード4、6、7、8、9に対して、グループ位置情報=C、ノードID=5というグループ内ルーティング情報が送信されるようにブロードキャストされる。グループ内ルーティング情報を受け取ることで、ノード4、6ではグループ内ルーティングテーブルからノード5の情報が削除され、ノード7、8、9では、グループ内ルーティングテーブルにノード5の情報が追加される。
このように、制御部24がグループ間の移動を判断すると、ルーティング情報生成部38は、移動後のグループ位置情報と自ノードIDとからなるグループ内ルーティング情報を生成し、データ通信部14によりブロードキャストする。このとき、グループ内ルーティングテーブル管理部26は、移動後のグループ内の移動端末10から、データ通信部14によりグループ内ルーティングテーブルを受信し、グループ内ルーティングテーブル記憶部28に格納する。また、グループ間ルーティングテーブル管理部30は、移動後のグループ内の移動端末10から、データ通信部14によりグループ間ルーティングテーブルを受信し、グループ間ルーティングテーブル記憶部32に格納する。
また、制御部24がDHTへの新たな参加を判断した場合には、グループ内ルーティングテーブル管理部26は、所属するグループ内の移動端末10から、データ通信部14によりグループ内ルーティングテーブルを受信し、グループ内ルーティングテーブル記憶部28に格納する。また、グループ間ルーティングテーブル管理部30は、所属するグループ内の移動端末10から、データ通信部14によりグループ間ルーティングテーブルを受信し、グループ間ルーティングテーブル記憶部32に格納する。ルーティング情報生成部38は、所属するグループ位置情報と自ノードIDとからなるグループ内ルーティング情報を生成し、データ通信部14によりブロードキャストする。
また、制御部24がDHTからの離脱を判断した場合には、ルーティング情報生成部38は、離脱後のグループ位置情報(=NULL)と自ノードIDとからなるグループ内ルーティング情報を生成し、データ通信部14によりブロードキャストする。このとき、グループ内ルーティングテーブル管理部26は、グループ内ルーティングテーブル記憶部28の内容を消去する。また、グループ間ルーティングテーブル管理部30は、グループ間ルーティングテーブル記憶部32の内容を消去する。
次に、グループ間ルーティング情報の交換方法について説明する。
本実施の形態では、図14に示すように、位置情報を考慮して、ルーティング可能なグループのグループIDを足し合わせたビットパターンを、隣接グループと交換することにより、DHTのデータのルーティングを可能とする。
例えば、図15のような状況を考える。グループDに存在するノードがデータを管理する場合、グループCまたはグループEのノードに当該データを転送するか、自グループで管理するかが判断できれば、どのグループでデータを管理するか詳細に知る必要はない。そのため、グループDのノードは、グループD内のノードIDとグループCのID、それ以外のグループのIDのOR(A∪B∪E∪F∪G∪H∪I)を所有していれば、データのルーティングが可能である。
そこで、図16から図20のように、隣接グループXに、グループ間ルーティング情報を送信するときには、グループ間ルーティングテーブルの中で、隣接グループX以外の隣接グループに対するビットパターンと、自グループIDのビットパターンとのOR演算を行い、それを含むグループ間ルーティング情報を隣接グループXに送信する。なお、図16は初期状態を示し、図17は、グループ間ルーティング情報の送信が1回行われた状態を示す。また、図18は、グループ間ルーティング情報の送信が2回行われた状態を示し、図19は、グループ間ルーティング情報の送信が3回行われた状態を示し、図20は、グループ間ルーティング情報の送信が4回行われた状態を示す。
上記のようなグループ間ルーティング情報の交換手法を用いることで、隣接グループに対して自グループを経由することで到着可能(ルーティング可能)な全グループIDを伝えることができる。つまり、各隣接グループとグループ間ルーティング情報のビットパターンを交換するだけで、情報保持エリア全体のグループ情報を入手することができる。
また、DHTへの参加中に、データ通信部14によりエリアデータを受信すると、データ管理部34は、エリアデータのデータIDと、グループ内ルーティングテーブル記憶部28に記憶されているグループ内ルーティングテーブルから得られる同一グループの各ノードIDと、グループ間ルーティングテーブル記憶部32に記憶されているグループ間ルーティングテーブルから得られる各隣接グループのビットパターン(ルーティング可能なグループのグループIDを足し合わせたもの)とに基づいて、エリアデータを割り当てるグループを決定し、決定されたグループが自グループである場合には、エリアデータを割り当てるノードIDを決定する。
ここで、グループIDとデータIDのハッシュ値から、データを管理するグループを決定し、その後、各ノードIDとデータIDのハッシュ値とから、データを管理するノードを決定する手法ではデータはグループ間には均等に分散されるものの、グループ内のノード間では均等に分散されない。これはデータを管理するグループを決定するときに、グループIDを数値として評価するため、グループIDを示すビットパターンの上位ビットの書き込みに影響されてデータを管理するグループが決定されるからである。
そのグループ内でデータを管理するノードを決定しても、上位ビットに書き込みを行ったノードに多くのデータが割り当てられる。また、グループIDを示すビットパターンの上位ビットに書き込みを行ったノードは、グループ間を移動しても、それによってグループIDが大きく変化するため、移動先で同一のデータを管理する可能性が高いものの、グループIDを示すビットパターンの上位ビットに書き込みを行っていないノードでは、グループ間の移動時に、データ通信が発生する可能性が高い。
そこで、本実施の形態では、グループ間移動時に全ノードがデータ通信を抑制でき、かつグループ内でデータ分布が均一になるデータ管理手法を提案する。
以下に、エリアデータを割り当てるノードが所属するグループの決定方法について説明する。
データ管理部34は、図21に示すグループ決定部50を備えており、グループ決定部50は、2階層のDHTに従って、どのグループでデータを管理するか決定する。このときに、グループIDを、グループ内のノードIDのOR演算によって構成することで、グループとノードのIDの間で関連付けを行う。
まず、同一グループ内の各ノードに対する関数f(x)により、同一グループ内のノードIDを引数としてビットパターンに変換して出力する。例えば、関数f(x)は、ハッシュ関数を用いて、ノードIDのハッシュ値を導き、そのハッシュ値を用いてビット列のどこか1ビットを1にしたビットパターンを出力する。もしくは、関数f(x)は、直接ノードIDから1にするビット数ビットの位置を決定する(例えば、ハッシュ値もしくはノードIDが3ならビットパターンの3ビット目を書き込む)ようにしてもよい。それ以外にも、関数f(x)は、ハッシュ関数から導かれたハッシュ値をそのままビットパターンとして出力してもよい。
次に、グループID生成部52は、OR演算を用いて、各関数f(x)から出力されたビットパターン(ビット列)を足し合わせて、自グループのグループIDを示すビットパターンを生成する。OR演算による足し合わせを行う場合、関数f(x)で生成するビットパターンはハッシュ値よりも、ノードIDやノードIDのハッシュ値を用いてビットパターンのどこか1ビットに書き込む手法を用いることが好ましい。
また、関数h(x)により、データIDを引数としてランダムパターンを生成して出力する。例えば、関数h(x)で導かれるランダムパターンは、データIDのハッシュ値から導かれる置換パターンである(具体的には、全てのビットの並び替えの順番が決定するまで、データIDからハッシュ値を生成し、まだ順番が決定していないビット数で割るという操作を繰り返してランダムパターンを生成する)。
また、自グループ及び隣接グループの各々に対する関数g(x、y)により、ランダムパターンを用いて、図22に示すように、自グループのグループIDを示すビットパターン、及び各隣接グループのビットパターンのビットの並び替えを行い、並び替えられたビットパターンを各々出力する。
評価部54は、関数g(x、y)から出力されたビットパターンから、どのグループのビットパターンがエリアデータを管理するのに適しているのかを決定する評価関数を持ち、決定されたビットパターンのグループを出力する。例えば、上記図22の例のように、ビットパターンを数値として評価して最も数値が大きいビットパターンのグループが、エリアデータが割り当てられるグループとして決定される。なお、隣接グループのビットパターンは、隣接グループを経由してルーティング可能なグループIDをOR演算したものであるため、評価部54によって出力されたグループが、隣接グループである場合には、隣接グループを経由してルーティング可能なグループの何れかが、エリアデータを管理するのに適しているグループとなる。
次に、エリアデータを割り当てるノードの決定方法について説明する。
データ管理部34は、図23に示すノード決定部60を備えており、ノード決定部60は、グループ決定部50により決定されたグループが、自グループである場合に、自グループ内のどのノードでデータを管理するか決定する。
まず、同一グループ内の各ノードに対する関数f(x)により、グループ決定部50と同様に、同一グループ内のノードIDを引数としてビットパターンに変換して出力する。
また、関数h(x)により、グループ決定部50と同様に、データIDを引数としてランダムパターンを生成して出力する。
また、各ノードIDに対する関数g(x、y)により、グループ決定部50と同様に、関数h(x)から出力されたランダムパターンを用いて、グループIDを示すビットパターンのビットの並び替えを行い、並び替えられたビットパターンを出力する。
評価部62は、各関数g(x、y)から出力されたビットパターンから、どのノードがエリアデータを管理するのに適しているのかを決定する評価関数を持ち、決定されたノードIDを出力する。例えば、ビットパターンを数値として評価して最も数値が大きいビットパターンに対応するノードIDが、エリアデータが割り当てられるノードのノードIDとして決定される。
データ管理部34は、エリアデータを受信すると、グループ決定部50及びノード決定部60により、エリアデータを割り当てるグループ又はグループ及びノードIDを決定し、決定されたノードIDが、自ノードIDである場合には、受信したエリアデータを、DHTデータ記憶部36に格納する。データ管理部34は、決定されたグループが、隣接グループである場合には、決定された隣接グループに対して、データ通信部14によりエリアデータを転送する。また、データ管理部34は、決定されたグループが、自グループであり、かつ、決定されたノードIDが、自ノードIDでない場合には、決定されたノードIDが示す自グループ内のノードに対して、データ通信部14によりエリアデータを転送する。
次に、本実施の形態に係る移動端末10の作用について説明する。移動端末10を搭載した車両の走行中に、DHTへ参加していない場合には、コンピュータ16において、図24に示す参加時処理ルーチンが実行される。
まず、ステップ100において、DHTへの参加を示す変数AInに、初期値Falseを設定し、ステップ102において、GPS12から自車両の位置を取得すると共に、自車両の直近にある交差点エリアの位置情報(予め求められた情報保持エリアの中心位置及び範囲)及び当該交差点エリアの分割エリアの位置情報(予め求められたグループの中心位置及び範囲)を、地図データベース20から取得する。
そして、ステップ104において、上記ステップ102で取得した自車両の位置と交差点エリアの中心位置との距離とが、交差点エリアの範囲内であるか否かに基づいて、交差点エリア内に存在するか否かを判定し、交差点エリア内に存在する場合には、AInにTrueを設定し、一方、交差点エリア内に存在しない場合には、AInにFalseを設定する。
次のステップ106では、変数AInがTrueであるか否かを判定する。変数AInがFalseであれば、上記ステップ102へ戻るが、変数AInがTrueであれば、DHTへ参加すると判断し、ステップ108へ進む。
ステップ108では、上記ステップ102で取得した自車両の位置と各分割エリアの中心位置との距離とに基づいて、自端末が所属するグループを特定し、同一グループ内に存在する周辺の移動端末10とデータ通信を行い、グループ内ルーティングテーブル及びグループ間ルーティングテーブルを、当該周辺の移動端末10から受信して取得し、グループ内ルーティングテーブル記憶部28及びグループ間ルーティングテーブル記憶部32に格納する。
そして、ステップ110において、上記ステップ108で特定した自端末が所属するグループの位置情報をG_Locに設定し、自端末のノードIDをN_IDに設定する。次のステップ112では、G_Locのグループ内の移動端末10に送信するように、グループ内ルーティング情報(N_IDとG_Loc)をブロードキャストし、参加中処理へ移行する。
次に、コンピュータ16によって実行される参加中処理ルーチンについて図25を用いて説明する。
ステップ120において、GPS12から自車両の位置を取得すると共に、自車両の直近にある交差点エリアの位置情報及び当該交差点エリアの各分割エリアの位置情報を、地図データベース20から取得する。
そして、ステップ122において、上記ステップ120で取得した自車両の位置と交差点エリアの中心位置との距離が、交差点エリアの範囲内であるか否かに基づいて、交差点エリア内に存在するか否かを判定し、交差点エリア内に存在する場合には、AInにTrueを設定し、一方、交差点エリア内に存在しない場合には、AInにFalseを設定する。また、上記ステップ120で取得した自車両の位置と各分割エリアの中心位置との距離とに基づいて、自端末が所属するグループを特定し、特定した自端末が所属するグループの位置情報をG_Locに設定する。
次のステップ124では、G_Locが変化したか否かを判定する。G_Locが変化していない場合には、上記ステップ120へ戻るが、G_Locが変化した場合には、グループ間移動があったと判断し、ステップ126へ移行する。
ステップ126では、変化前のG_Locを、G_Loc0に設定する。そして、ステップ128において、上記ステップ122で設定したG_Loc及び上記ステップ126で設定したG_Loc0を用いて、グループ間移動時処理を行う。
次のステップ130では、変数AInが、Falseであるか否かを判定する。AInがTrueであれば、DHTへ参加中であると判断し、上記ステップ120へ戻る。一方、AInがFalseであれば、DHTから離脱したと判断し、ステップ132において、グループ内ルーティングテーブル記憶部28及びグループ間ルーティングテーブル記憶部32の内容をクリアし、参加時処理へ移行する。
このように、参加中処理ルーチンが実行されることにより、自端末の位置情報と交差点エリア位置情報とグループ位置情報からAInとG_Locが周期的に更新される。また、自端末のノードがグループ間を移動することでG_Locが変化すると、グループ間移動時の処理を行う。AInがFalseの場合、エリアから離脱するため、現在所持しているグループ間ルーティングテーブルとグループ内ルーティングテーブルがクリアされる。
上記ステップ128は、図26に示すグループ間移動時処理ルーチンにより実現される。
ステップ140において、グループ内ルーティングテーブル記憶部28及びグループ間ルーティングテーブル記憶部32の内容をクリアする。そして、ステップ142において、変数AInが、Trueであるか否かを判定する。AInがTrueであれば、交差点エリア内に存在する(DHTへ参加中である)と判断し、ステップ144において、G_Locのグループ内に存在する周辺の移動端末10とデータ通信を行い、グループ内ルーティングテーブル及びグループ間ルーティングテーブルを、当該周辺の移動端末10から受信して取得し、グループ内ルーティングテーブル記憶部28及びグループ間ルーティングテーブル記憶部32に格納する。ステップ146では、G_Locのグループ内の移動端末10及びG_Loc0のグループ内の移動端末10に送信するように、グループ内ルーティング情報(N_IDとG_Loc)をブロードキャストする。
一方、AInがFalseであれば、自端末のノードがエリア外に存在する(DHTから離脱した)と判断し、ステップ148において、G_Loc0のグループ内の移動端末10に送信するように、グループ内ルーティング情報(N_IDとG_Loc(=NULL))をブロードキャストする。
そして、ステップ150では、自端末のDHTデータ記憶部36に格納されているエリアデータのデータID(n個)を、Data_ID[n]に設定する。ステップ152では、上記ステップ150で設定されたData_ID[n]を用いて、データ転送処理を行って、グループ間移動時処理ルーチンを終了する。データ転送処理では、現在自端末が管理しているエリアデータの管理者が変更されていないか判断し、変更されている場合には、当該エリアデータを転送し、また、交差点エリアの外に出る場合には全エリアデータを転送する。
上記ステップ152の処理は、図27に示すデータ転送処理ルーチンにより実現される。
まず、ステップ160では、グループ内ルーティングテーブル記憶部28に記憶されている、現在所属するグループ内の全ノードIDに基づいて、グループID(ビットパターン)を生成し、G_IDに設定する。そして、ステップ162において、自端末が保持するエリアデータを識別するための変数iを初期値1に設定する。
ステップ164では、グループ間ルーティングテーブル記憶部32に記憶されている各隣接グループに対するグループ間ルーティング情報のビットパターンと、G_IDと、i番目のエリアデータのデータID(Data_ID[i])とに基づいて、i番目のエリアデータが割り当てられるグループを決定する。決定されたグループが自グループである場合には、変数Go_jにTrueを設定し、一方、決定されたグループが自グループでない場合には、変数Go_jにFalseを設定する。
そして、ステップ166において、変数Go_jがTrueであるか否かを判定する。Go_jがFalseである場合、自ノードが所属するグループに割り当てられないと判断し、ステップ168において、上記ステップ164で決定された隣接グループに所属する移動端末10へ、i番目のエリアデータを転送し、ステップ176へ移行する。
一方、Go_jがTrueである場合、自ノードが所属するグループに割り当てられると判断し、ステップ170において、グループ内ルーティングテーブル記憶部28に記憶されている各ノードIDと、N_IDと、i番目のエリアデータのデータID(Data_ID[i])とに基づいて、i番目のエリアデータが割り当てられるノードを決定する。決定されたノードが自ノードである場合には、変数Gi_jにTrueを設定し、一方、決定されたノードが自ノードでない場合には、変数Gi_jにFalseを設定する。
そして、ステップ172において、変数Gi_jがTrueであるか否かを判定する。Gi_jがFalseである場合、自ノードに割り当てられないと判断し、ステップ176において、上記ステップ170で決定されたノードの移動端末10へ、i番目のエリアデータを転送し、ステップ176へ移行する。
一方、Gi_jがTrueである場合、i番目のエリアデータを、DHTデータ記憶部36にそのまま格納しておき、ステップ176へ移行する。
ステップ176では、変数iを1インクリメントする。そして、ステップ178において、変数iが、保持しているエリアデータの数を示すn以下であるか否かを判定し、変数iがn以下であれば、上記ステップ164へ戻るが、一方、変数iがnより大きい場合には、データ転送処理ルーチンを終了する。
次に、データ通信部14によって他の移動端末10からグループ内ルーティング情報を受信すると、コンピュータ16によって、図28に示すグループ内ルーティング情報受信時処理ルーチンが実行される。
ステップ180において、受信したグループ内ルーティング情報から、ノード(移動端末)のID及びグループ位置情報を取り出し、取り出したノードIDをRT_N_IDに設定し、取り出したグループ位置情報をRT_G_Locに設定する。
次のステップ182では、自端末が所属するグループの位置情報をG_Locに設定する。ステップ184では、RT_G_LocとG_Locとが一致するか否かを判定する。RT_G_LocとG_Locとが一致する場合には、ステップ186において、グループ内ルーティングテーブル記憶部28に記憶されているグループ内ルーティングテーブルに、RT_N_IDが登録されていなければ、RT_N_IDを追加登録して、グループ内ルーティング情報受信時処理ルーチンを終了する。一方、RT_G_LocとG_Locとが一致しない場合には、ステップ188において、グループ内ルーティングテーブル記憶部28に記憶されているグループ内ルーティングテーブルに、RT_N_IDが登録されていれば、RT_N_IDを削除して、グループ内ルーティング情報受信時処理ルーチンを終了する。
また、データ通信部14によって他の移動端末10からグループ間ルーティング情報を受信すると、コンピュータ16によって、図29に示すグループ間ルーティング情報受信時処理ルーチンが実行される。
ステップ190において、受信したグループ間ルーティング情報から、送信先グループの位置情報、送信元グループの位置情報、及びビットパターンを取り出し、取り出した送信元グループの位置情報をRT_G_Srcに設定し、取り出した送信先グループの位置情報をRT_G_Dstに設定し、取り出したビットパターンを、RT_Bitに設定する。
次のステップ192では、自端末が所属するグループの位置情報をG_Locに設定する。ステップ194では、RT_G_DstとG_Locとが一致するか否かを判定する。RT_G_DstとG_Locとが一致する場合には、ステップ196において、グループ間ルーティングテーブル記憶部32に記憶されているグループ間ルーティングテーブルの隣接グループ位置情報がRT_G_Srcである行のビットパターンをRT_Bitで更新し、あるいは隣接グループ位置情報としてRT_G_Srcが登録されていなければ、隣接グループ位置情報がRT_G_Srcであり、ビットパターンがRT_Bitである行を追加登録して、グループ間ルーティング情報受信時処理ルーチンを終了する。一方、RT_G_DstとG_Locとが一致しない場合には、グループ間ルーティング情報受信時処理ルーチンを終了する。
また、移動端末10が、データ通信部14によって他の移動端末10から送信されたエリアデータを受信した場合には、コンピュータ16によって、図30に示すデータ受信時処理ルーチンを実行する。
まず、ステップ200において、受信したデータから、データのIDを取り出し、Data_ID[1]に、取り出したデータIDを設定する。次のステップ202では、上記ステップ200で設定したData_ID[1]を用いて、上記図27で説明したデータ転送処理ルーチンを実行し、データ受信時処理ルーチンを終了する。これによって、エリアデータを自ノードで保持するか、他のノードに転送するかが判断される。
また、移動端末10がDHTへ参加しているときに、コンピュータ16において、図31に示すグループ間ルーティング情報受け渡し処理ルーチンが周期的に実行される。
まず、ステップ210において、現在自端末が所属するグループの位置情報をG_Locに設定する。また、グループ間ルーティングテーブル記憶部32に記憶されているグループ間ルーティングテーブルを用いて、現在隣接するグループの位置情報(m個の中心座標)をA_Loc[m]に設定すると共に、同一グループ内の各ノードから送信されたデータに含まれる位置情報を用いて、同一グループのノードID及び現在の位置情報(n個)をGN_Loc[n]に設定し、自端末のノードIDをN_IDに設定する。
そして、ステップ212において、隣接グループを識別するための変数iを初期値0に設定し、ステップ214で、自グループのノードの位置情報GN_Locの中で、隣接グループの位置情報A_Loc[i]に最も近いノードのノードIDを決定し、決定されたノードIDをNear_IDに設定する。
次のステップ216では、Near_IDとN_IDとが一致するか否かを判定する。Near_IDとN_IDとが一致する場合には、ステップ218において、グループ間ルーティング情報を生成する。このとき、送信元グループ位置情報をG_Locとし、送信先グループ位置情報をA_Loc[i]とする。また、グループ間ルーティングテーブルにおいて、グループ間ルーティング情報の隣接グループ位置情報がA_Loc[i]でない全てのビットパターンと、自グループのグループIDを示すビットパターン(グループ内ルーティングテーブルから得られる自グループ内のノードIDのビットパターンを足し合わせたもの)とのOR演算により構成されるビットパターンを、グループ間ルーティング情報のビットパターンとする。
そして、ステップ220では、上記ステップ218で生成したグループ間ルーティング情報をデータ通信部14により送信する。
一方、Near_IDとN_IDとが一致しない場合には、ステップ222へ移行する。
ステップ222では、変数iを1インクリメントし、ステップ224において、変数iが、隣接グループの数を示すm未満であるか否かを判定する。変数iがm未満であれば、上記ステップ214へ戻る。一方、変数iがm以上であれば、グループ間ルーティング情報受け渡し処理ルーチンを終了する。
上記のように、各種処理ルーチンが各移動端末10で実行されると、交差点エリアに関連するエリアデータが、交差点エリア内の移動端末群で分散して記憶される。
以上説明したように、第1の実施の形態に係る移動端末によれば、グループ内のノードIDを用いて生成されるグループIDのビットパターン及びデータIDに基づいて、エリアデータを割り当てるグループを決定すると共に、グループ内のノードIDのビットパターン及びデータIDに基づいて、エリアデータを割り当てるノードを決定することにより、移動端末のノードが所属するグループが切り替わっても、当該ノードにエリアデータが割り当てられる可能性があるため、移動端末のノードが所属するグループが切り替わる際のデータ通信負荷の増大を抑制することができる。
また、各グループIDのビットパターンはグループ内のノードIDのビットパターンの足し合わせである。そのため、ノードを何個追加してもグループIDのビットパターンの通信量は増加しないため、DHTの全ノードIDを知る場合と比べて、データ通信量を抑えることができる。
また、ノードがグループ間を移動すると、グループIDのビットパターンが変化し、その変化に応じて、データを管理するグループが、移動後のグループに変更される可能性が高い。以上より、ノードがグループを移動しても同じデータを所有する可能性がありデータ通信を抑制することができる。このように、DHTのルーティングテーブルを管理するための通信の増大とDHTを維持するためのデータ通信の増大とを抑制することができる。
次に、第2の実施の形態に係る移動端末について説明する。なお、第2の実施の形態に係る移動端末は、第1の実施の形態と同様の構成となるため、同一符号を付して説明を省略する。
第2の実施の形態では、図32に示すように、ノードID及びグループIDを示すビットパターンをBF(Bloom Filter)にしている点が、第1の実施の形態と異なっている。
ここで、BFについて説明する。BFとは要素が集合の一部であるかを調べるために用いられる固定長ビットパターンのデータ構造である。参考例として図33に動作例を示す。図33では、ノードAが作成したBFをノードBで参照し、ノードAとBの所有データの差を判定している。g(X)、f(X)はハッシュ関数であり、BFでのビットへの1の書き込みはハッシュ関数によって導いた値に基づいて行われる。本実施の形態では、ハッシュ関数によって導いた値をビットパターンの長さで割り、その剰余を用いてBFでの1を書き込むビットの位置を決定する。図33では、ビットパターンの長さが13なので、f(X)=1mod13、g(X)=8mod13のビットに1を書き込む。図33ではビットパターンの長さが13だが、実際には衝突を回避するためにもっと長いビットパターンを使用する。
BFの初期状態は全て0のビットパターンで、ノードAはハッシュ関数を用いてデータX、Y、Zを所有していることをBFに書き込む。ノードBはノードAの所有データを書き込んだBFを受信すると、自身の所有しているデータからハッシュ関数を用いて特定のビットを参照し、そのビットが全て1ならばデータを所有していると判断し、そうでないなら所有していないと判断する。上記図33の例では、f(Q)=1mod13、g(Q)=3mod13のビットを参照すると1と0であるためノードAはQを所有していないと判断できる。同様にf(W)=6mod13、g(W)=8mod13のビットは、0と1なのでノードAはWを所有していない。f(Z)=8mod13、g(Z)12mod13のビットは1と1なので、ノードAはZを所有していると判断できる。
また、BFには偽陽性による誤検出の問題はあるものの、ハッシュ関数の種類やビットパターンのサイズの調整により、偽陽性による誤検出の発生を十分低く抑えることが可能である。また、BFは固定長のメモリ消費でビット演算が使用可能であるため、一定サイズのグループIDに複数のノード情報を書き込み、かつBFを用いた素早いルーティング処理が可能となる。
また、本実施の形態におけるBFを用いたグループIDの構成を図34に示す。グループIDはBFであり、同一グループ内に存在するノードIDを示すBFを足し合わせたものである。このグループIDとノードIDを用いてDHTを管理する。
グループ間ルーティングテーブル記憶部32は、隣接グループ位置情報と、当該隣接グループを経由してルーティング可能なグループのグループIDを示すBFのOR演算により求まるBFとからなるグループ間ルーティングテーブルを記憶する。
データ管理部34は、エリアデータのデータIDと、グループ内ルーティングテーブル記憶部28に記憶されているグループ内ルーティングテーブルから得られる同一グループの各ノードIDと、グループ間ルーティングテーブル記憶部32に記憶されているグループ間ルーティングテーブルから得られる各隣接グループのBFとに基づいて、エリアデータを割り当てるグループを決定し、決定されたグループが自グループである場合には、エリアデータを割り当てるノードIDを決定する。
データ管理部34は、図35に示すグループ決定部250を備えており、グループ決定部250は、2階層のDHTに従って、どのグループでデータを管理するか決定する。
まず、同一グループ内の各ノードに対する関数f(x)により、同一グループ内のノードIDを引数として、1以上の所定個のビットを1にしたBFに変換して出力する。
次に、グループID生成部252は、OR演算を用いて、関数f(x)から出力されたBFを足し合わせて、自グループのグループIDを示すBFを生成する。
また、関数h(x)により、データIDを引数としてランダムパターンを生成して出力する。
また、自グループ及び隣接グループの各々に対する関数g(x、y)により、ランダムパターンを用いて、上記図34に示すように、自グループのグループIDを示すBF、及び各隣接グループのBFのビットの並び替えを行い、並び替えられたBFを各々出力する。
評価部254は、各関数g(x、y)から出力されたBFから、どのグループのBFがエリアデータを管理するのに適しているのかを決定する評価関数を持ち、決定されたBFのグループを出力する。例えば、上記図34の例のように、BFを数値として評価して最も数値が大きいBFのグループが、エリアデータが割り当てられるグループとして決定される。
また、データ管理部34は、第1の実施の形態で説明したノード決定部60と同様の構成を備えており、グループ決定部50により決定されたグループが、自グループである場合に、自グループ内の各ノードIDのBFとデータIDとに基づいて、自グループ内のどのノードでデータを管理するか決定する。
なお、第2の実施の形態に係る移動端末の他の構成及び作用については、第1の実施の形態と同様であるため、説明を省略する。
以上説明したように、第2の実施の形態に係る移動端末によれば、グループ内のノードIDのBFを用いて生成されるグループIDのBF、及びデータIDに基づいて、エリアデータを割り当てるグループを決定すると共に、グループ内のノードIDのBF及びデータIDに基づいて、エリアデータを割り当てるノードを決定することにより、移動端末のノードが所属するグループが切り替わっても、当該ノードにエリアデータが割り当てられる可能性があるため、移動端末のノードが所属するグループが切り替わる際のデータ通信負荷の増大を抑制することができる。
各ノードがビットパターン中の1ビットにID情報を埋める方式を用いる場合、DHTに参加できるノード数がビットパターンの長さに依存してしまう。これに対し、ビットパターンにハッシュ値を用いる場合、OR演算を行ってランダムパターンでビットパターンの並び替えを行っても、データが分散しない可能性が高い。そこで、本実施の形態では、上記図32に示すように、ノードIDについて、BFを用いて数ビットのビットパターンの書き込みを行うことによって、DHTに参加できるノード数を増加させつつ、データを分散させることが可能になる。
なお、上記の第1の実施の形態〜第2の実施の形態において、グループ間ルーティングテーブルには、隣接グループの各々に対する、グループ間ルーティング情報が登録されている場合を例に説明したが、これに限定されるものではない。例えば、グループ間ルーティングテーブルには、交差点エリア内の全てのグループについて、グループ位置情報及びグループIDを示すビットパターン又はBFからなるグループ間ルーティング情報が登録されていてもよい。この場合には、グループ決定部の入力として、全てのグループIDのビットパターン又はBFを用いて、エリアデータを管理するグループを決定するようにすればよく、エリアデータを管理するグループを知ることができる。
また、交差点エリア内の移動端末群で、データ分散記憶システムを実現する場合を例に説明したが、これに限定されるものではなく、交差点エリア内に、固定端末を設け、交差点エリア内の移動端末群と固定端末とで、データ分散記憶システムを実現するようにしてもよい。この場合には、エリア内に移動端末が存在しない場合であっても、エリア内にエリアデータを維持することができる。
また、交差点エリアの基準位置として、交差点エリアの中心位置を用いる場合を例に説明したが、これに限定されるものではなく、交差点内の他の所定位置を、交差点エリアの基準位置として用いてもよい。
また、仮想分散データベースを実現するエリアが、交差点である場合を例に説明したが、これに限定されるものではなく、他の所定エリアで、仮想分散データベースを実現するようにしてもよい。
10 移動端末
12 GPS
14 データ通信部
16 コンピュータ
20 地図データベース
22 位置取得部
24 制御部
26 グループ内ルーティングテーブル管理部
28 グループ内ルーティングテーブル記憶部
30 グループ間ルーティングテーブル管理部
32 グループ間ルーティングテーブル記憶部
34 データ管理部
36 DHTデータ記憶部
38 ルーティング情報生成部
50、250 グループ決定部
52、252 グループID生成部
54、62、254 評価部
60 ノード決定部
12 GPS
14 データ通信部
16 コンピュータ
20 地図データベース
22 位置取得部
24 制御部
26 グループ内ルーティングテーブル管理部
28 グループ内ルーティングテーブル記憶部
30 グループ間ルーティングテーブル管理部
32 グループ間ルーティングテーブル記憶部
34 データ管理部
36 DHTデータ記憶部
38 ルーティング情報生成部
50、250 グループ決定部
52、252 グループID生成部
54、62、254 評価部
60 ノード決定部
Claims (5)
- 予め定められたエリアに関連するエリアデータを、移動端末群の各移動端末に対応するノードの集合に対して分散して割り当てることにより、前記エリアデータを前記移動端末群の各移動端末で分散して記憶するためのデータ分散記憶システムにおける移動端末であって、
周辺の移動端末と無線通信を行うための通信手段と、
前記エリアを分割した分割エリア内に存在する移動端末のグループを示すグループIDであって、前記分割エリア内に存在する各移動端末を示すノードIDを用いて定められるビットパターンで表わされるグループIDを前記エリアの各分割エリアについて取得すると共に、自端末が存在する前記分割エリア内に存在する各移動端末を示すノードIDを取得するID取得手段と、
周辺の移動端末から、前記通信手段により前記エリアデータを受信した場合に、前記ID取得手段によって取得した自端末が存在する前記分割エリア内に存在する各移動端末のノードID及び自端末のノードIDを用いて、自端末が存在する前記分割エリアに対応する前記グループIDを生成すると共に、前記受信したエリアデータのデータIDを所定の関数を用いてランダムパターンに変換し、前記ランダムパターンを用いて、前記生成したグループIDを含む各分割エリアに対応する各グループIDのビットパターンに処理を加え、前記処理が加えられた各グループIDのビットパターンを評価して、前記エリアデータを割り当てる前記移動端末のグループを決定するグループ決定手段と、
前記グループ決定手段によって決定された前記グループが、自端末が存在する前記分割エリアに対応するグループである場合、前記ID取得手段によって取得した自端末が存在する前記分割エリア内に存在する各移動端末のノードID及び自端末のノードIDの各々をビットパターンに変換すると共に、前記受信したエリアデータのデータIDを所定の関数を用いてランダムパターンに変換し、前記ランダムパターンを用いて、前記変換した各移動端末のノードID及び自端末のノードIDの各々のビットパターンに処理を加え、前記処理が加えられた各移動端末のノードID及び自端末のノードIDの各々のビットパターンを評価して、前記エリアデータを割り当てる前記ノードを決定するノード決定手段と、
前記自端末のノードに割り当てられた前記エリアデータを記憶する記憶手段と、
前記グループ決定手段によって決定されたグループが、自端末が存在する前記分割エリアに対応するグループでない場合、及び前記ノード決定手段によって決定されたノードが、自端末のノードでない場合、前記受信した前記エリアデータを他の移動端末へ転送するように前記通信手段を制御する転送制御手段と、
を含む移動端末。 - 前記グループIDのビットパターンを、ノードIDに応じて1以上である所定数のビットを1にしたビットパターンを、対応する前記分割エリア内に存在する各移動端末のノードIDについて足し合わせて求めた請求項1記載の移動端末。
- 前記グループ決定手段は、前記ID取得手段によって取得した自端末が存在する前記分割エリア内に存在する各移動端末のノードID及び自端末のノードIDをビットパターンに変換し、前記変換した各移動端末のノードID及び自端末のノードIDのビットパターンを足し合わせることにより、自端末が存在する前記分割エリアに対応する前記グループIDのビットパターンを生成する請求項1又は2記載の移動端末。
- 前記グループ決定手段は、前記ランダムパターンを用いて、前記生成したグループIDのビットパターンを含む各分割エリアに対応する各グループIDのビットパターンを並び替えるように処理を加え、
前記ノード決定手段は、前記ランダムパターンを用いて、前記変換した各移動端末のノードID及び自端末のノードIDの各々のビットパターンを並び替えるように処理を加える請求項1〜請求項3の何れか1項記載の移動端末。 - 前記ID取得手段は、自端末が存在する前記分割エリアに隣接する前記分割エリアの各々について、前記隣接する分割エリア内に存在する前記グループを経由してルーティング可能な前記グループのグループIDのビットパターンを足し合わせたビットパターンを取得すると共に、自端末が存在する前記分割エリア内に存在する各移動端末のノードIDを取得し、
前記グループ決定手段は、前記ID取得手段によって取得した前記隣接する分割エリアの各々に対する前記グループIDのビットパターンを足し合わせたビットパターンと、前記生成したグループIDとの各々に処理を加え、前記処理が加えられたビットパターンを評価して、前記エリアデータを割り当てる前記移動端末のグループを決定する請求項1〜請求項4の何れか1項記載の移動端末。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012032044A JP2013168883A (ja) | 2012-02-16 | 2012-02-16 | 通信装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012032044A JP2013168883A (ja) | 2012-02-16 | 2012-02-16 | 通信装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013168883A true JP2013168883A (ja) | 2013-08-29 |
Family
ID=49178951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012032044A Pending JP2013168883A (ja) | 2012-02-16 | 2012-02-16 | 通信装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013168883A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016025659A (ja) * | 2014-07-16 | 2016-02-08 | ソニー株式会社 | 車両アドホックネットワーク(vanet) |
US9426610B2 (en) | 2014-07-16 | 2016-08-23 | Sony Corporation | Applying mesh network to luggage |
US9516461B2 (en) | 2014-07-16 | 2016-12-06 | Sony Corporation | Mesh network applied to arena events |
US9900748B2 (en) | 2014-07-16 | 2018-02-20 | Sony Corporation | Consumer electronics (CE) device and related method for providing stadium services |
US9906897B2 (en) | 2014-07-16 | 2018-02-27 | Sony Corporation | Applying mesh network to pet carriers |
US10127601B2 (en) | 2014-07-16 | 2018-11-13 | Sony Corporation | Mesh network applied to fixed establishment with movable items therein |
-
2012
- 2012-02-16 JP JP2012032044A patent/JP2013168883A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016025659A (ja) * | 2014-07-16 | 2016-02-08 | ソニー株式会社 | 車両アドホックネットワーク(vanet) |
US9426610B2 (en) | 2014-07-16 | 2016-08-23 | Sony Corporation | Applying mesh network to luggage |
US9516461B2 (en) | 2014-07-16 | 2016-12-06 | Sony Corporation | Mesh network applied to arena events |
US9826368B2 (en) | 2014-07-16 | 2017-11-21 | Sony Corporation | Vehicle ad hoc network (VANET) |
US9900748B2 (en) | 2014-07-16 | 2018-02-20 | Sony Corporation | Consumer electronics (CE) device and related method for providing stadium services |
US9906897B2 (en) | 2014-07-16 | 2018-02-27 | Sony Corporation | Applying mesh network to pet carriers |
US10127601B2 (en) | 2014-07-16 | 2018-11-13 | Sony Corporation | Mesh network applied to fixed establishment with movable items therein |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2013168883A (ja) | 通信装置 | |
CN107333312B (zh) | 机会网络中的路由选择方法 | |
CN104185242B (zh) | 一种降低干扰的无线Mesh网络信道分配与路由联合优化系统与方法 | |
WO2004110082B1 (en) | System and method for determining location of a device in a wireless communication network | |
Cao et al. | A geographic multicopy routing scheme for DTNs with heterogeneous mobility | |
US20110208828A1 (en) | Node apparatus and computer-readable storage medium for computer program | |
Mao et al. | S4: Small state and small stretch compact routing protocol for large static wireless networks | |
CN104618980B (zh) | 无线多跳链状网的路由实现方法 | |
Yang et al. | Heterogeneous task allocation in participatory sensing | |
CN102355406A (zh) | 车载自组网中基于节点密度分布的自适应数据分发方法 | |
Salehi_Panahi et al. | Proposing a method to solve energy hole problem in wireless sensor networks | |
Hara | Quantifying impact of mobility on data availability in mobile ad hoc networks | |
CN103929377A (zh) | 一种有线网络与无线网络联合调度方法、相关设备及系统 | |
Garg et al. | Link prediction techniques for opportunistic networks using machine learning | |
Lai et al. | A mobility-aware approach for distributed data update on unstructured mobile P2P networks | |
Sindhanaiselvan et al. | Designing a dynamic topology (DHT) for cluster head selection in mobile adhoc network | |
CN104683232B (zh) | 一种vanet中可提供长连接服务的路由选择方法 | |
JP5857791B2 (ja) | 通信装置 | |
Fu et al. | Evolution-cast: Temporal evolution in wireless social networks and its impact on capacity | |
Alnawafa et al. | EDMHT-LEACH: Enhancing the performance of the DMHT-LEACH protocol for wireless sensor networks | |
CN103945415A (zh) | 一种无线网络的通信实现方法 | |
Sasirekha et al. | Efficient route map based ant colony optimization for route discovery in vanet | |
Liu et al. | A deployment strategy of nodes in WSN based on “X” partition | |
Liu et al. | Research of multi-path routing protocol based on parallel ant colony algorithm optimization in mobile ad hoc networks | |
JP2012080390A (ja) | 位置情報分散管理システム |