• 検索結果がありません。

システム構成

ドキュメント内 目 次 (ページ 44-47)

提案ミドルウェアは,役割別に三つのサブシステムから構成される.すなわち,位置計算 サーバ,スニファ,セッションマネージャである.サブシステムの関係を図4.3に示す.こ のうち,スニファとセッションマネージャは全ての端末上で動作し,位置計算サーバは,位 置推定サービスを提供する端末でのみ動作する.ホスト間の通信は無線通信によって行なわ れる.本研究では,見通しの効く範囲という極限られた範囲での通信を対象としており,全 ての端末が直接通信可能であることを前提としている.このため,すべての端末で同じ計算 をする無駄を避ける意味で代表となる端末が集中して位置計算を行なう形式を採用している.

また将来的には,計算資源や消費電力に余裕のある端末が位置計算を担う仕組みを備えるこ とで,端末数が多い場合にも適切な負荷分散をはかる予定である.位置計算サーバによって 計算された位置情報は,各端末に配布され,アプリケーションから利用可能となる.各サブ システムの詳細について記述する.

スニファは,自端末と周囲の端末との距離を測定し,自端末の通信識別子,自端末の名前,

および周囲端末との距離を位置計算サーバへ周期的に通知する役割を担う.自端末は他の端 末の通信を常に観測し,その通信の電波強度から距離を測定する.ここで,全ての端末間で 距離を測定するためのハローメッセージを投げ合うと,通信トラフィックが増大してしまう.

端末A

スニファ アプリケーション セッションマネージャ

ロケーションサーバー

無線デバイス

端末B

スニファ アプリケーション セッションマネージャ

無線デバイス

端末C

スニファ アプリケーション セッションマネージャ

無線デバイス 距離測定

距離情報 相対位置情報

提案 ミド ルウ ェア

図 4.3: ミドルウェアを構成するサブシステム

このため,無線LANデバイスのプロミスキャスモードを用いて他の端末宛てのユニキャスト パケットも常に受信し,距離測定に用いる.距離測定のためのハローメッセージは,一定期 間通信の行われなかった端末のみが送信する.位置計算サーバは,ネットワークに参加して いる端末の名前と通信識別子を収集し管理する.新たな端末の追加や削除により,この情報 の更新があったときに,すべての端末に最新の端末情報を配布する.この端末情報は,各端 末のスニファで利用される.つまり,端末情報に記載された端末との距離が測定されること になる.また,位置計算サーバの別の仕事として,各端末のスニファから端末間距離情報を 周期的に収集し,それらの情報から各端末の相対位置を計算する.得られた相対位置は各端 末のセッションマネージャへ配布されることになる.セッションマネージャは位置計算サー バから情報を受信し,それらの情報をキャッシュしておく.このキャッシュ情報は,バッファ を通じてアプリケーションに提供する.位置計算の周期はアプリケーションの要求するリア ルタイム性にしたがって適当な周期とする.また,スニファがハローメッセージや距離情報 を送る周期もそれと同一の周期とする.例として,4.1で述べた応用アプリケーションでは,

1秒を周期として設定している.スニファは一周期の間に同じ端末からの距離情報が複数得 られた場合,その平均値を位置計算サーバに通知する.

提案ミドルウェアでは,位置計算サーバをすべての端末の中から自動的に選出する必要が ある.このため,位置計算サーバをもっとも早く起動した端末が選ばれるようにしている.以 下に,位置計算サーバを選出する具体的な手順を示す.

1. 各端末は,位置計算サーバを探索するために,ミドルウェア起動時に特定のポートに対 してブロードキャストする.

2. 位置計算サーバから応答がなかった場合,その端末は自身の端末に位置計算サーバを立 ち上げ,手順3に進む.位置計算サーバからの応答があった場合は,何もせずにそのま ま手順3に進む.

3. 端末は,自分の名前と通信識別子を位置計算サーバに登録し,位置計算サーバから周囲 の端末の通信識別子を受け取る.

4. 位置計算サーバはすでにサービスに登録されている他の端末らに対し,現在登録され ている端末の名前と通信識別子を通知する.

複数の端末から位置計算を担う一台を選出するのは,リーダ選出問題の一つと捉えること ができ,従来の解決方法が利用できる.本研究における実装では,負荷分散のために位置計 算を担う端末を順に交代する.位置計算端末の選出,交代の詳しい手順は4.6節にて述べる.

ネットワークへの端末の参加や離脱を考慮すると,サーバの欠落および一つのネットワー クにサーバが複数存在する状況が考えられる.サーバが欠落した場合,各端末は位置情報が 一定時間送られて来ないことでサーバの欠落を検知することができる.この場合,各端末は ランダムな時間待ち,再度サーバを探索する上記の手順を行なう.ランダムな待ち時間を設 けることで,同時に複数のサーバが立ち上がる可能性を低く抑えている.一つのネットワー クにサーバが複数存在する場合,スニファは全てのサーバに距離情報を通知し,セッション マネージャはどれか一つのサーバから位置情報を受け取る.サーバを担う複数の端末が同じ

計算を行なうため冗長ではあるが,ミドルウェアを利用するアプリケーションへの不都合は 特に生じない.

ドキュメント内 目 次 (ページ 44-47)