論 文
分散移動シ ステムのための前後関係保存放送プ ロト コル
大堀 力
†∗井上美智子
†増澤 利光
†藤原 秀雄
†A Causal Broadcast Protocol for Distributed Mobile Systems
Chikara OHORI†∗, Michiko INOUE†, Toshimitsu MASUZAWA†, and Hideo FUJIWARA†
あらまし 本論文では ,分散移動シ ステムのための前後関係保存放送プ ロト コルを提案する.移動計算機は 一 般に 不特定多数であり,計算能力,通信能力が 固定計算機に 比べて著し く劣っているため ,複雑度が 移動計算機 数にできるだけ 依存せず,移動計算機の実行する計算量と通信量の小さいアルゴ リズムが 求められ る.また ,移 動計算機の移動に 伴うハンド オフへ対処するために 行われ る処理のより小さいアルゴ リズムが 求められ る.本論 文は 移動計算機と移動支援局の階層構造に 着目し た ,効率の良い前後関係保存放送アルゴ リズムを提案する.提 案手法は ,メッセージ オーバヘッド( 各 メッセージに 追加する情報量 )が 移動計算機数に依存し ていない.更に , 既知の手法に 比べて ,メッセージオーバヘッド が 小さく,移動端末移動時のハンド オフに 対処するための遅延時 間と メッセージ 数が 小さい点で優れている.
キーワード 分散アルゴ リズム,移動通信,放送,前後関係
1. ま え がき
小型計算機の高性能化と無線通信技術の進歩によっ て ,移動計算機が 無線通信を利用し てネット ワークに 接続す るこ とが 可能に なった .分散移動シ ステ ムは , 固定ネット ワー クに 移動計 算機(mobile host, MH) を付加し たシ ステムである.MHは 計算の実行中に移 動することができ,無線機能をもつ固定計算機と無線 通信が 可能である.無線機能をもつ固定計算機を特に 移動支援局(mobile support station, MSS)と呼び , 各MSSの地理的,あ るいは ,論理的な 無線通信可能 領域を そのMSSのセル と 呼ぶ .あ るMSSのセル 内 に 存在するMHが 別のMSSのセルに 移動すると ,移 動元のMSSとMHとの間の無線通信チャネルが 切断 され ,移動先のMSSとMHとの間に 無線通信チャネ ルが 開かれ る.この移動し たMHの無線通信チャネル の切換動作をMHのハンド オフと 呼ぶ.また ,移動元 のMSSから 移動先のMSSへMHが ハンド オフされ るともい う.
MHを 含 まな い 分 散シ ステ ムで 問 題を 解 くプ ロト コル に ついて は ,これ まで 数 多 くの 研 究が な され て
†奈良先端科学技術大学院大学情報科学研究科 ,生駒市
Graduate School of Information Science, Nara Institute of Science and Technology, Ikoma-shi, 630–0101 Japan
∗
現在,( 株 )NTTデ ータ
いる[2]∼[4], [6].し かし ,これらはハンド オフに 伴う ネット ワークの形状の動的な変化に 対応できず,分散 移動シ ステ ムに 適用で きな いこ とが 多い.そのた め , 分散移動シ ステムのためのプ ロト コルの設計が 必要で あり,さまざ まな 研究が 行われ ている[7]∼[9].更に , 分散移動シ ステム上のプ ロトコルの設計には ,次の三 つの 目標を考慮し なければ ならない.
1. MSSに 比べ てMHは 性 能( 記 憶の 容 量と 信 頼 性 ,処理能 力 ,使用可能 電力量など )が 低い .更に , MH-MSS間の無線通信チャネルは ,MSS間の有線通
信チャネルに比べて通信帯域が 著し く小さい.よって, MHで 記憶する情報量,MHの計算量,MHの通信量
をできるだけ小さくする必要がある.
2.シ ステ ム 内に 存 在す るMHの 数はMSSの 数に
比べは るかに 大きいと 考えられ る.また ,MHの数が プ ロト コル 開始時に 既知でないことや ,実行中に 変化 することもある.よって ,プ ロト コル 全体のコストが MHの数にできるだけ 依存し ないことが 望まれ る.
3.ハンド オフ発生時に ,プ ロトコルの実行を正し く
継続するため特別の処理が 必要となる場合がある.ハ ンド オフに よって 引き 起こ され る特別な 情報交換や , プ ロト コル 実行の遅延操作など をできるだけ 少なくす る必要がある.
本論文では ,上記の三つの目標を達成する分散移動
シ ステム上の前後関係保存放送プ ロト コルを提案する. 任意の計算機から 送信され た メッセージ 間に 何らかの 因果関係がある場合,その順序に 従って受信するよう な メッセージ 交換を ,前後関係保存 メッセージ 交換と 呼ぶ .前後関係保存 メッセージ 交換は ,シ ステムの監 視,資源割当て ,電子ニュース,電子会議など ,分散 シ ステムのさまざ まな 場面において 利用され る.MH 間前後関係保存放送とは ,放送 メッセージ のあて 先が 常にすべての計算機である前後関係保存 メッセージ 交 換のことを指す.
しかし ,非同期式分散システムでは,計算機の処理の 非同期性と通信の非同期性から ,異なる計算機におけ る イベント の生起し た順序( 実時間に 基づいた前後関 係 )を決めることは不可能である.そこで ,Lamport は イベント 間の 因果関係に 基づいた前後関係(causal relation (→))を提案し ている[1].ここで ,任意の イ
ベント a,bについて ,a→ bが 成り立つのは 以下の いずれかの条件が 成り立つ場合である .(1)同一計算 機内でa,bの順に イベントが 生起し た .(2)あるメッ セージの送信と受信に対応する イベントがそれぞれa, bである .(3) a → cか つc→ bが 成り立つよ うな , ある イベント cが 存在する.
このLamportの前 後関係を 利用し て ,さまざ まな 前 後 関 係 保 存 メッセ ージ 交 換プ ロト コ ルが 提 案され ている.まず,MHを含まない分散シ ステムにおいて 前後関係保存マルチキャ スト( 任意の複数の計算機を あ て 先と す る メッセ ージ 交 換 )が 提 案され た[3].文 献[3]のプ ロト コルは 各 メッセ ージ に それ 以前に 送信 された メッセージを添付する方法を用いている.この, 各 メッセージに 何らかの情報を メッセージ ヘッダ とし て添付する方法は ,その 後のさまざ まな前後関係保存 メッセ ージ 交換プ ロト コル[4], [6], [7], [9]で も利 用さ れており,ヘッダ の大きさ( メッセージ オーバヘッド ) がプ ロト コル の重要な 評価尺度とな る.文献[3]のプ ロト コルは ,過去の メッセージをすべてヘッダに 含む ので 非常に メッセージ オーバヘッド が 大きい.そこで , RSTプ ロト コル[6]では ,ベクト ル 時計[2]のア イデ
アを利用し メッセージ オーバヘッド を削減し た.シ ス テム内の総計算機数をN とすると,RSTプ ロト コル で 使用する メッセ ージ ヘッダ は N 個のN 次ベ クト ルだけでよい.つまり,RSTプ ロト コルの メッセージ オーバヘッド はΘ(N2)である .また ,文献[4]では , RSTプ ロト コル を 放送に 特化することで ,使用す る
メッセージ ヘッダ は1個の N 次ベ クト ルとし ,メッ
セージ オーバヘッド をΘ(N )とし ている.
近年,分散移動シ ステムにおいても,ベクトル 時計 のア イデアを用いたMH間の前後関係保存メッセージ 交換プ ロト コルが 多数提案され ている.文献[7]では , メッセージ オーバヘッド が O(N2)である前後関係保 存マルチキャストプ ロト コルが 提案され ている.この プ ロト コルは ,メッセージのあて先MHの数が 多いほ ど 使用する メッセージヘッダ は 小さくなり,特に 放送 に適用し た場合,メッセージ オーバヘッド はΘ(N )と な る .また ,MHの 処理を そのMHと 接続し て いる MSSが 代理することで ,MHで 必要な 記憶量 ,計算
量,通信量を小さく抑えており,目標1を満たし てい る.し かし ,このプ ロト コルの メッセージ オーバヘッ ド は すべての計算機数N に 依存し ているため ,目標 2を満たさない.文献[9]では メッセージ オーバヘッド がMHの 数に 依存し な い目 標2を 満た す前後関係保 存マルチキャストプ ロト コルを提案し ている.シ ステ ム内のMSSの数を Nmssとすると ,このプ ロト コル の メッセージ オーバヘッド は ,Θ(Nmss2)である.ま た ,文献[7]と 同様にMHの 処理をMSSが 代理する ことで ,目標1も満たし ている.し かし ,このプ ロト コルでは ,前後関係を保証するために ,MHのハンド オフが 生じ たときに ,そのMHをあて先とする伝送中 の メッセージが あるかど うかをすべてのMSSに 問い 合わせる.このため ,ハンド オフ 発生時の処理に 必要 な メッセージ 数が 多く,その遅延時間も大きい.この ため ,目標3を満たし ているとはいえない.
本論文では ,分散 移動シ ステムに おけ るMH間の 前後関係保存放送を 実現するプ ロト コル を 提案する . 提案す るプ ロト コルは ,分散移動シ ステムのMHと MSSによる階層構造を利用し ,放送の メッセージオー
バヘッド をMHの数に 依存し ないΘ(Nmss)とし てい る.また ,文献[7], [9]と 同様に ,MHの 処理をMSS が 代理することで ,MHで 必要な記憶量,計算量,通 信量を小さく抑えている.ハンド オフが 発生し た場合, 提案するプ ロトコルでは ,MHをハンド オフする二つ のMSS間で 情 報を 伝 達す るの みで あ り,文 献[9]の プ ロト コルのよ うなMSS全体にかかわ る情報交換を 必要とし ない .更に ,文献[7], [9]のプ ロト コルでは , MHをハンド オフするMSS間でそのMHあての メッ
セージ を転送する必要がある.し かし ,提案するプ ロ ト コルは ,各MSSで 必要な 過去の メッセージ を 保存 することで ,このよ うなMSS間での メッセージ 転送 を不要とし ている.
2.では分散移動シ ステムのモデルとこのモデルにお ける前後関係保存放送を定義する.3.では 移動計算機 間におけ る前後関係保存放送を実現するプ ロトコルを 提案する.4.でプ ロト コルの正当性を示し ,最後に5. でプ ロト コルの評価を行う.
2. 諸 定 義
2. 1 分散移動シ ステム
本 論 文で は ,分 散 移 動シ ステ ム の モデ ル とし て 文 献[8]の モデ ル を 用 い る .以 下 で は ,こ の モデ ル を 簡 単に 示す( 図 1).分 散 移 動シ ステ ム S を3項 組 S = (MSS, MH, CH) と 定 義 す る .MSSは 移 動
支援局(MSS)と 呼ば れ るプ ロセ スの 集合,MHは 移動計算機(MH)と 呼ば れ るプ ロセ スの集 合,CH はMSS間の静的通信チャネル の集合である .本論文 で は 簡 単のた め に ,シ ステ ム 内に 存 在 す る 固 定 計 算 機は すべ てMSSで あ ると する .MSSの数を Nmss, MHの 数 を Nmh とし ,MSS = {s1,· · · , sNmss}, MH= {h1,· · · , hN
mh}とする.各プ ロセスは固有の 識別子をもち ,簡単のために si,hi の識 別子を 単に si,hiと表す.
二つのMSS間に静的通信チャネルが 存在する場合, その 両端のMSSは 相互に 通信可能で あ る.MSSと CHから構成され るネット ワークは連結であるとする. つまり,任意のMSS間に 静的通信チャネルに よ る経 路が 少なくとも一つ存在する.各MHは 動的通信チャ ネル と 呼ば れ る通信チャネル を 用いて ,一つのMSS
図1 分散移動シ ステム Fig. 1 A distributed mobile system.
と 相互に 通信可能で あ る .ハンド オフが 発生すると , MHが 動的通信チャネルで 接続し ているMSSが 変更
され る.例えば ,MH hがMSS sに 接続し ていると きに ,sから別のMSS s′へhのハンド オフが 発生し たとすると ,hとsとの間の動的通信チャネルが 消失 し ,hと s′ との間に 新たに 動的通信チャネルが 生成 され る.このように ,動的通信チャネルはMHとど の MSSとの 間に 存在するか 決まって おら ず 動的に 変化
するため ,分散移動シ ステムのモデ ルにおいて動的通 信チャネルは ,その 両端のMSSの状態とMHの状態 の組とし て表され ているとする.つまり,各プ ロセ ス の状態には 接続状態とし て ,動的チャネルで 接続され ているプ ロセ スの識別子の 集合が 含まれ ている.MH のハンド オフ処理は 有限時間内に 終了し ,ハンド オフ 処理中を除いてすべてのMHはいずれかのMSSと接 続し ていると仮定する.
すべての静的・動的通信チャネルはFIFOキューで あるとする.すなわち,通信チャネルを用いて送信し た メッセージは 送信され た順に 相手に 受信され る.更 に ,チャネルを用いて 送信され た メッセージは紛失さ れないとする.文献[8]のモデルでは ,ハンド オフ時に 動的通信チャネルが 消失し た場合,そのFIFOキュー 内の メッセージは 紛失するとし ている.し かし 本論文 では ,簡単のために ,静的,動的にかかわらずすべて の通信チャネルに 入力され た メッセージは 有限時間内 に出力され ,メッセージの紛失は起きないと仮定する. ただし 本論文のプ ロト コルは ,動的通信チャネルにお け る メッセージの紛失に 対応できるように簡単に 拡張 できる.
分 散 移 動シ ステ ム の 状 況は ,シ ステ ム 内の すべ て のプ ロセ スの 状 態と すべ て の 通 信チャネル の 状 態か ら 構 成 され る .プ ロ セ スで イベント が 生 起す るこ と により,分散移動シ ステムの 状況が 変化する.一般性 を 失わず シ ステ ム 全 体で 同 時に 一つの イベントし か 生 起し な いと 仮 定で き る .状 況と イベント の 交 互 列 γ0, e1, γ1, e2, γ2,· · ·(γi,eiはそれぞれ 状況,イベン
ト を表す )を分散移動シ ステムの実行と定義する.た だし ,e
i
はγi−1 で 生起可能な イベントであり,γi−1 でe
i
が 生起し た後の状況がγ
i
である.実行は無限系 列であってもよく,有限の場合は 状況で 終わるものと する .ここで ,γ0 は 分散移動シ ステムの 初期状況で あり,初期状況では すべてのMHが いずれかのMSS と接続し ているとする.
プ ロセスで生起する イベント とし て次の7種類の イ
ベントを定義する.まず,(MHを含まない )従来の分 散シ ステムで 用いられている3種類の イベント を定義 する.
1. internal:プ ロセ スの内部計算を表す イベント. 2. send: メッセージ の送信を表す イベント. 3. receive: メッセージの受信を表す イベント.
次に ,分散移動シ ステム特有のハンド オフを扱うた めの4種類の イベントを定義する.これらは ,MH hi がMSS sj からMSS skへ ハンド オフされ たときに , 4. 5. 6. 7.の順にそれぞれ1回ず つ生起する イベント
で ,ハンド オフにかかわるプ ロセ スの接続状態の変化 と ,移動情報の交換を表す.移動情報とは ,MHのハ ンド オフの際に ,ハンド オフにかかわるプ ロセス間で 交換され る情報で ,hiからsjへ ,sjからskへ ,sk からhi への順に 交換され る情報であ る.分散移動シ ステム上で 動作するプ ロト コルも,移動情報を利用し て情報交換可能であるものとする.
4. disconnecti:hiで 生起する イベント.hiの接続
状態が 空になることと,hiからsjへの移動情報fの 送信を表す.
5. removej:sj で 生起する イベント.sj の 接続状
態からのhiの削除と ,hiから送信され た移動情報f の受信,skへの移動情報f
′
の送信を表す.
6. acceptk:skで生起するイベント.skの接続状態
へのhi の追加と ,sjから 送信され た移動情報f′ の 受信,hiへの移動情報f′′の送信を表す.
7. connecti:hiで 生起する イベント.hi の 接続状
態が{sk}になることと,skから送信された移動情報 f′′の受信を表す.
2. 2 前後関係保存放送
あるプ ロセスからすべてのプ ロセ スへあるメッセー ジを伝達することを放送と呼び ,放送を実現するプ ロ ト コルを放送プ ロト コルと呼ぶ.プ ロセ スが メッセー ジ の 放 送を 行 うと き ,まず 放 送プ ロト コル へ 放 送 要 求を出す.放送要求を受けた放送プ ロト コルはすべて のプ ロセ スで放送要求され た メッセージ の配達処理を 行う.
プ ロ セ スpi に お け る 放 送 メッセ ージ m の 放 送 要 求と 配 達を ,それ ぞ れ pi の イベン ト cbcasti(m), deliveri(m)で表す.混乱が 生じ ない限り,i,mを省 略することがある.cbcast,deliverをまとめて放送イ ベント と呼ぶ.以後,簡単のために ,任意の実行にお いて 放送要求がなされ る放送メッセージは 相異なると 仮定する.
[ 定義1( 放送 イベント 間の前 後関係 )分散移動シ ス] テムにおけ る任意の実行をE,E に 含まれ るすべての 放 送 イベント の 集合をEB と す る .EB 上の 前 後関 係(
→B)は 以下のいずれかを満たす最小の2項関係で ある.
1.同じプ ロセ スの異なる二つの 放送 イベントe,e′
で ,Eにおいてeがe′より前に現れ るとき,e→ eB ′. 2.任意の放送メッセージ mと任意のプ ロセスpiに
対し ,cbcast(m)
→ deliverB i(m). 3.次の推移律が 成り立つ.
∀e, e′, e′′∈ EB[(e→ eB ′) ∧ (e′ B→ e′′) ⇒ e→ eB ′′].
✷ 二つの 放送要求間に 前後関係がある場合,対応する 同一プ ロセ ス上の二つの 配達が その前後関係を保存す る放送を ,前後関係保存放送と呼ぶ .
[ 定義2( 前後関係保存放送 )分散移動シ ステムにおけ] る任意の実行Eについて ,以下の三つの性質を保証す る放送を前後関係保存放送と定義する.
1.各cbcast(m)に 対し ,任 意のプ ロセ ス pi 上で deliveri(m)が 正確に1回生起する.
2.あ るプ ロセ スで deliver(m)が 生起するならば , cbcast(m)が 生起するあ るプ ロセ スが 存在する.
3.任意の二つの放送メッセージm1,m2について , cbcast(m1)→ cbcast(mB 2)ならば ,任意のプ ロセスpi においてdeliveri(m1)
→ deliverB i(m2)である.✷
本論文では ,以下に定義するMH間前後関係保存放 送プ ロト コルを提案する.
[ 定義3(]MH間前後関係保存放送 )定義2の 条件1, 2,3の対象をすべてのプ ロセ スではなく,シ ステム上
のすべてのMHに限定し て定義し た前後関係保存放送 をMH間前後関係保存放送と定義する. ✷
本論文では ,簡単のため ,定義3のよ うに ,MHの みが 放送要求を出し ,MHのみに メッセージを配達す ることを考え る.MSSも放送要求を出し ,MSSへの メッセ ージ 配達が 必要な 場合には ,MSS内に 一つの
( 移動し ない )MHを仮想的に 考え ,このMHの放送 要求,メッセージ 配達とし て処理することにより,本 論文のプ ロトコルを適用できる.
3. MH間前後関係保存放送プ ロト コル
3. 1 基本ア イデア
MH間前後関係保存放送を実現するプ ロトコルを提
案する.本プ ロトコルではシ ステム内に存在するMSS とその識別子が 全MSSで 利用可能とする.MHの総
数や識別子は利用可能である必要はない.ただし ,す べて のMHは ハンド オフを 行 う場合を 除いて いずれ かのMSSに 接続し ていると 仮定する.また ,ハンド オフは 有限時間内に 完了するものとする.つまり,あ るMHでdisconnectが 生起し た 場合 ,有限時間内に 必ずconnectが そのMHで 生起すると 仮定する.
BirmanはMHを含まない分散シ ステム上の前後関
係 保存 放送プ ロト コル を 提案し て いる[4].こ のプ ロ ト コルはベクト ル 時計[2]のア イデ アを 次のよ うに 利 用し て いる .シ ステ ム内のプ ロセ スを p1, p2,· · · , pN
(N は総プ ロセス数 )とする.プ ロセスpiが 放送メッ セージmを放送するとき,ベクトル(v1, v2,· · · , vN) をヘッダ としてmに添付する.ここで ,各vj(j |= i) は ,piがmの 放送要求を 行 う前に piで 配達され た pjの放送し た放送 メッセージの 個数であり,viはm を 含めて piが 放送要求を 行った 放送 メッセージ の 個 数を 意味する .mを 受信し たプ ロセ スは ,piの 放送
し たvi− 1個,各プ ロセ スpj(j |= i)の放送し たvj 個の 放送 メッセージ を 配達するまでmの配達を 延期 することにより,前後関係保存放送を実現する.
Birmanのプ ロト コルをその まま分散移動シ ステム
上のMHへ適用すると,各メッセージに 付加するヘッ ダ はNmh 次ベクトルとなり,前後関係保存放送を 実 現するための通信オーバヘッド が 非常に大きい.また , MHのハンド オフを考慮し ていないためいくつかの問 題点が 発生する.そこで ,まずMHのハンド オフが 発 生し ない場合について ,メッセージのヘッダ サイズを 減らす方法を考案する.その後,MHのハンド オフに 伴う問題点とその対策法を示す.
分散移動シ ステムは ,MSSとMHによる階層構造 をなし ている.すなわち,MHが 他のMHと メッセー ジを交換するときは,必ずMSSを介してのみ行う.更 に ,MHとMSSの 間の 通信チャネルでは ,メッセー ジは 送信され た 順番に 受信され る.し たが って ,MH の ハンド オフが 発生し な い 場合は ,MSS間に おいて 前後関係保存放送を行うことで ,MH間の前後関係保 存放送を実現することができる( 図2).
MSS間前後関係保存放送に おいてMSS sj の放 送
メッセージmの放送要求イベントをmss cbcastj(m), 配 達 イベン ト を mss deliverj(m)と 表す.あ る二つ のMH h1,h2 が それ ぞ れMSS s1,s2 に 接 続し て い る と き に ,放 送 メッセ ー ジ m1,m2 を そ れ ぞ れ 送 信し た と き ,cbcast1(m1)
→ cbcastB 2(m2)が 成 り 立 つな らば ,mss cbcast1(m1)
→ mss cbcastB 2(m2)
図2 MSS 間前後関係保存放送の利用 Fig. 2 Application of causal broadcast on MSSs.
も 成 り 立 つ .こ の と き ,MSS間 前 後 関 係 保 存 放 送 は すべ て のMSS sj に つ いて mss deliverj(m1) →B mss deliverj(m2)を保証するため ,すべてのMH hi
についてdeliveri(m1)
→ deliverB i(m2)が保証され る. MSS間前後関係保存放送を実現するためにBirman
のプ ロト コルを用いると ,各放送 メッセージに付加す るベ クト ル の 次 元は Nmss と な り,ヘッダ サ イズが MHの数Nmhに依存し ないプ ロト コルを実現できる.
3. 2 ハンド オフ への対応
MHのハンド オフに 対応するために ,前節の基本ア
イデ アを以下のよ うに 拡張する.
a.配達 メッセージ の重複・欠落の回避:MH hiが MSS sj か ら MSS sk へ ハンド オ フ され た と す る . MSS間に おけ る メッセージ 交換は 非同期であ るため ,
ある時点においてMSS sjとMSS skの配達済み放送 メッセージは 一般に 異なる.このため,hiが 放送 メッ セージ mをsjから 受信し た 後,ハンド オフ先の sk から も更に mを 受信し てし ま うと,hiはmを 重複 し て配達し てし まうことがある( 配達 メッセージの重 複 ).また ,ある放送 メッセージ m
′
がsjで 未配達で あり,hiのハンド オフ 先のskで 既に m′が 配達済み であるとき,hiは永久にm′を受信・配達ができない
( 配達 メッセージの欠落 )ことがある.
配達 メッセージの重複,欠落を回避するために ,各 MSS sjはsjに接続している各MH hiで配達済みの放
送メッセージ 数を表すNmss次ベクトルRECVj[hi] を 管理する .ここで ,RECVj[hi][sk] (sk∈ MSS) はMSS skから放送された メッセージのうち,既にhi へ送信された放送メッセージの数を表す.RECVj[hi] を用いることにより,hiで配達され るメッセージの重
複,欠落は 容易に 回避できる.ただし ,メッセージの 欠落を回避するために ,各MSS sjで 配達済みの 放送 メッセージをキューDELIV MESjに配達順に保存 する.
b.メッセージ の 前後関係非保存の回避:MH hiが MSS sjからskへハンド オフされたとする.また,hi
はsjへ放送メッセージm1を送信した後,skへハンド オフされ ,更にskへ放送メッセージm2を送信したと する( 図3).このとき ,cbcasti(m1)
→ cbcastB i(m2)
という前後関係が 成り立つため ,m1はm2 より先に 各MSSで 配達され なければ ならない .し かし ,基本 ア イデアにおけ る放送メッセージに添付するヘッダは , MSS間放送における前後関係のみ表し ており,同一の MHが 異な るMSSに 対し て送信し た放送 メッセージ
間の 前後関係を 表し て いな い .そのた め ,別のMSS ではm1 より前にm2が 配達され ることがある.
上記の問題を回避するために ,次のようにプロトコル を拡張する.各MSS sjは次に送信する放送メッセージ に先行する放送メッセージ数をNmss次のベクトルによ ってMSSごとに管理している.このベクトルをSENTj とする.MkをMSS skの送信し た放送メッセージの 集合とすると,sjでmss cbcastj(m)が 生起し たとき には ,各MSS slに 対し て ,SENTj[sl] = |{m
′|m′∈ Ml∧ mss cbcastl(m′)→ mss cbcastB j(m)}|が 成り 立つものとする.hiがハンド オフの前後で送信し た放 送メッセージの前後関係を保存するためには,各MSS sl に 対し ,hi の ハンド オフ 直後の SENTk[sl]の 値
が ,hiのハンド オフ 直前の SENTj[sl]以上となれば 十分である.そこで ,ハンド オフ 時に 移動情報を用い てSENTjの値をskへ伝え ,skは ,各MSS slに対 し て,SENTk[sl] := max(SENTk[sl], SENTj[sl])を 実行し SENTkを更新する( 図3).
この よ うにMSS sk に おいて SENTkを 更新する
図3 ハンド オフ時のSENT の転送 Fig. 3 Transfer of SENT in the handoff procedure.
と,例えば ,MSS sjで配達済みの メッセージがskで
未配達の場 合 ,SENTkが sk で 配達済みの 放送 メッ セ ージ 数より も 大き く な るこ とが あ る .そこ で ,sk で 配 達 済み の メッセ ージ 数を 管 理 す る 別のベ クト ル DELIVkを用意し て,配達の実行・延期の判断に使用
する.
3. 3 配達済みキューからの放送メッセージ の削除 配 達 メッセ ージ の 欠 落 を 避け るた め に 各MSS sj にDELIV MESjを導入し たが ,すべての放送 メッ セージ をすべてのMSSで 保存するためには 膨大な 記 憶容量を必要とする.そこで ,提案するプ ロトコルで は ,各メッセージのヘッダに 更に Nmss次ベクトルを
加えることで ,すべてのMHで配達済みと 確認された 放送 メッセ ージ を キューDELIV MESから 効率良 く削除する.
各MSS sjは新たな放送メッセージを他のMSSへ送 信する際に ,接続し ているすべてのMHで配達済みの 放送メッセージを表すNmss次ベクトルREDUCEを 放送メッセージに添付する.ここで,REDUCE[sk]は, sjに 接続し ているすべてのMHで 受信済みの ,MSS skから 送信され た 放送 メッセージ 数を 表す.各MSS sjは受信したREDUCEを配列RECV RDCj[MSS]
で管理する.RECV RDCj[sk]はsjがMSS skから 受 信し たREDUCEの 最 大 ベ クト ル と す る .sj は sk が 送 信し た 放 送 メッセ ー ジ を 配 達 す る と き に , RECV RDCj[sk] を 更 新し ,す べ て のMHで 配 達
済みと 確認できた放送 メッセージ をDELIV MESj から 削除する.ただし ,MH hiがMSS sjからMSS sk へ ハンド オフされ ると き ,hi で 配達済み放送 メッ セージを表すRECViが 移動情報を用いてsjからsk へ送られ るが ,RECViがsjにもskにも存在し ない 瞬間が 生じ るため,hiの配達済み放送メッセージの情 報が sj とsk のど ちらの メッセージ のREDUCEに も反映されず,hiで未配達の放送 メッセージが 削除さ れ てし ま う可能性が ある .そこで ,sj はRECVi を skへ送った後,skがRECViを受け 取ったこと(sk
上のacceptの 生 起 )を 確認し てから ,sj はRECVi を 削除する .以上の手法に より,すべて のMSSが 適 当な頻度で 放送 メッセージ を送信することが 保証され ていれば ,すべてのMHで配達済みの放送メッセージ をDELIV MESから 削除できる.
3. 4 プ ロト コルの詳細
前後関係保存放送プ ロト コルを ,MSSとMHのそ れぞれについて ,イベント 駆動型のプ ログ ラムで 記述
する.あるイベントに 対するプ ログ ラムの実行中に 別 の イベント が 生 起し た 場 合 ,実 行 中のプ ログ ラ ムが 終 了し てか ら それ ら の イベント に 対す るプ ログ ラ ム が イベント の 生 起 順に 実 行され る .プ ログ ラ ム 中の wait(e)という記述は ,wait(e)が 呼び 出され てから
イベント eが 生起するまで ,そのプ ログ ラムの実行が 停止することを表す.プ ログ ラム中の演算max,min が 配列に 対し て 適用され た 場合 ,配列の要 素ご とに , 最 大 値 ,最 小 値を 選ぶ 演 算で あ ると す る .また ,プ ログ ラム中の任意の二つのNmss 次配列( ベクトル ) V1,V2 に ついて ,∀s ∈ MSS[V1[s] <= V2[s]] ∧ ∃s′∈ MSS[V1[s′] < V2[s′]]が 成り立つとき,V1< V2であ るとする .更に ,プ ログ ラムではMSS間の放送を 行 うマクロ命令を利用できるとする.このマクロ命令は , メッセージ の受信順には 何の保証もし ないが ,送信さ れ た メッセージ は 有限時間内に すべてのMSSで 正確 に1回受信され ることを保証するものとする.
分 散 移 動 シ ス テ ム に お け る7種 の イ ベ ン ト の う ち ,プ ロト コ ル 中 で プ ロ グ ラ ム の 駆 動 に 利 用 す る イベン ト は internal,receive,disconnect,remove, accept,connectの 6 種 類 で あ る .特 に MHで 生
起 す る イ ベ ン ト internalの う ち ,放 送 メッセ ー ジ m の 放 送 要 求 が 出 さ れ た こ と を 表 すMHの 内 部 イベ ン ト を cbcast(m) とし てプ ログ ラ ム の 駆 動 に 利 用 す る .receive(p, m) は ,プ ロ セ ス(MH 又 は MSS)pか ら m と い う メッセ ージ を 受 信し た こ と
を 表 す.disconnect(old),remove(new, mh, P U T ), accept(old, mh, GET ),connect(new)はMH mhが MSS oldからMSS newへ ハンド オフ され たと きに
この 順番で 生起する イベントである .ここで ,P U T, GET はoldからnewへ送受信され る移動情報を 表
す.以下に ,MH hi の 実 行するプ ログ ラム 中で 使用 する変数を説明する.ここで ,変数の添字はその変数 をもつMHの添字に 等し い.
• TELEPOINTi:hi が 接 続 中のMSSを 指 す. ただし ,ハンド オフ 処理中で 接続するMSSが 存在し ないときは 値とし てnullを使用する. 以下に ,MSS sjで 実行するプ ログ ラム中で 使用す る変数を 説明する.ここで ,MSSはシ ステム内に 存 在するすべてのMSSの識別子の集合を表す.また,変 数の添字はその変数をもつMSSの添字に 等し い.
• MHj:MSS sj が 接 続 中 のMHの 識 別 子 の 集合.
• DELIVj[MSS]:DELIVj[sk]はMSS skから
の 放送 メッセージ の うちsjで 配達済みの 放送
メッセージ 数( 初期値:すべての要素が0).
• SENTj[MSS]:放送メッセージの前後関係の管 理に使用.MSS間で交換する メッセージのヘッ ダ となる( 初期値:すべての要素が0).
• RECVj[MHj][MSS]:RECVi[hi][sk]はMSS sjと 接続中のMH hiで 配達され た ,MSS sk
から 送信され た放 送 メッセージ の 数( 初期値: すべての要素が0).
• DELIV MESj:MSS sj で 配 達 済 みの 放 送
メッセージを ,配達順に 保存するキュー( 初期 値:空キュー ).要素の順序を保存し たまま,任 意のキューの 要素を削除可能であるとする.
• WAITINGj:MSS sjで 受信され たが ,前後 関係を 保存するためにsjでの配達を 延期し て いる放送 メッセージ を保存するバッファ.
• MOVINGj:MSS sjから別のMSSへハンド オフされ たが ,ハンド オフ 先のMSSとの 接続 を 確認し ていな いMHの識 別子と そのMHに 対するRECVの2項組を 要素とする集合( 初 期値:∅).
• RECV RDCj[MSS] : RECV RDCj[sk] は MSS sjがMSS skから受信し たベクトルRE- DUCE( 削除可能な放送 メッセージ の情報 )を 表す( 初期値:すべての要素が 零ベクトル ).
MSS sjで 実行するアルゴ リズム 1. receive(hi, m): /∗ hiからm の放送要求∗/
SENTj[sj] := SENTj[sj] + 1; REDUCE:= DELIVj;
foreach(mh, RECV ) ∈ MOVINGj do REDUCE:= min(REDUCE, RECV ); (SENTj,REDUCE, m) をすべての MSS へ放送; 2. receive(sk,(S, R, m)) :
/∗ Deliver Check 開始 ∗/ if S[sk] = DELIVj[sk] + 1 and
∀mss ∈ (MSS − {sk})[S[mss] <= DELIVj[mss]] then begin/∗ 配達処理 ∗/
foreach mh∈ MHj do
ifRECVj[mh][sk] = DELIVj[sk] then begin m を mh へ送信;
RECVj[mh][sk] := RECVj[mh][sk] + 1; end;
DELIVj[sk] := S[sk];
SENTj[sk] := max(SENTj[sk], S[sk]); (sk, S, m) を DELIV MESjの最後尾に 追加; foreach(s′, S′, m′)]) ∈ WAITINGj do
(s′, S′, m′) を WAITINGjから
取り出し てDeliver Check
( 配達すれば(s′, S′, m′) を WAITINGjから削除 ); end else
WAITINGj:= WAITINGj∪ {(sk, S, m)};
/∗ Deliver Check 終了 ∗/
RECV RDCj[sk] := max(RECV RDCj[sk], R); M IN R:= min{RECV RDCj[s]|s ∈ MSS}; foreach(s′, S′, m′) ∈ DELIV MESj do
/∗ キューの先頭要素から順に選択 ∗/ if S′<= MIN R then
(s′, S′, m′) を DELIV MESjから削除; else
break foreach;
3. remove(sk, hi,(RECVj[hi], SENTj)): MHj:= MHj− {hi};
MOVINGj:= MOVINGj∪ {(hi,RECVj[hi])}; 4. accept(sk, hi,(RECVj[hi], S)):
MHj:= MHj∪ {hi}; SENTj:= max(SENTj, S);
foreach(s′, S′, m′) ∈ DELIV MESj do /∗ キューの先頭要素から順に選択 ∗/
ifRECVj[hi][s′] < S′[s′] then m′をhiへ送信;
RECVj[hi] := max(RECVj[hi], DELIVj); (accept, hi) を skに 送信;
5. receive(sk,(accept, hi)):
MOVINGj:= MOVINGj− {(hi,∗)};
MH hiで 実行するアルゴ リズム 1. cbcast(m):
m をTELEPOINTiへ送信; 2. receive(mss, m):
deliver(m); 3. disconnect(mss):
TELEPOINTi:= null wait(connect); 4. connect(mss):
TELEPOINTi:= mss
4. 正当性の証明
証明のために ,まず 分散移動シ ステムの実行に 現れ るすべての イベント 間の前後関係(
→L)[8]を定義する. MHでは ,放送 メッセージの放送要求と同時にその
放送 メッセージの送信が 行われ ,放送 メッセージの受 信と同時に 受信し た放送 メッセージの配達が 行われ る ので ,MH hiの放送メッセージmに 関する イベント に ついて ,cbcasti(m)と sendi(m),deliveri(m)と receivei(m)はそれぞれ 同一の イベントとし て扱う.
MSS間の放送に 関する イベント を 次のよ うに 表す. MSS sjにおける放送メッセージmの放送要求イベン
ト をmss bcastj(m)とする.mの放送要求と同時に mの送信が 行われ るので ,mss bcastj(m)と ,mの あて先がMSSである送信 イベント sendj(m)を同一 とし て扱う.あるMSSから 送信され た メッセージ m のMSS sjにおける受信イベントreceivej(m)を特に mss recvj(m)と 呼ぶ .また ,放送 メッセージ mの
MSS sj におけ る配達 イベント(sj の内部 イベント )
をmss delivj(m)とする.
[ 定義4( イベントの前後関係 )分散移動シ ステムにお] ける任意の実行をEとし ,Eに現れ るすべての イベン ト の集合をEとする.E上の前後関係(
→L)は以下
の条件を満たす最小の2項関係である. 1.同じ プ ロセ スの異な る二つの イベント e,e
′
で , Eにおいて eがe′より前に 現れ るとき,e
→ eL ′.
2.任意のメッセージmに関する送受信イベントをそ
れぞれsend(m),receive(m)とすると ,send(m)
→L
receive(m).
3.任意のハンド オフに 対応する四つの イベントにつ
いて ,disconnect
→ removeL → acceptL → connectL . 4. ∀e, e′, e′′∈ E[(e→ eL ′) ∧ (e′ L→ e′′) ⇒ e→ eL ′′]
✷ MSS間で交換され る放送 メッセージmに 添付され
るベクトルをSENT(m)と 表す.SENT(m)に つい て ,次の補題が 成り立つ.
[ 補題1]任意の実行において以下の性質が 成り立つ.
( 性 質1)sj を 任 意 の MSS,m1,m2 を sj が 放 送 し た 任 意 の 放 送 メッセ ー ジ と す る .こ の と き , mss bcastj(m1) →L mss bcastj(m2) な ら ば , SENT(m1)[sj] < SENT (m2)[sj]が 成り立つ.
( 性 質2)sj を 任意のMSS,m1 を 任 意の 放送 メッ セージとする.このとき,1 <= a <= SENT (m1)[sj]な る 任 意の aに 対し ,MSS sj が 放 送し た メッセージ m2が 存在し ,SENT(m2)[sj] = aが 成り立つ.
( 性 質 3) m1,m2 を 相 異 な る 放 送 メッセ ー ジ , sk を m1 を 放 送 し た MSS と す る .こ の と き ,SENT(m1)[sk] <= SENT (m2)[sk] な ら ば, SENT(m1) < SENT (m2)が 成り立つ.
[ 補 題 2]m,m
′
を 任 意 の 放 送 メッセ ー ジ と す る .cbcast(m)
→ cbcast(mB ′)ならば ,SENT(m) < SENT(m′)が 成り立つ.
( 証明 )cbcast(m)
→ cbcast(mB ′)より,放送メッセー
ジ の 連鎖 m1 (= m), m2,· · · , mq (= m′) が 存 在し , 各p(1 <= p < q)に 対し て次のいずれかを満たすMH hiが 存在し ている.
1. cbcasti(mp)→ cbcastB i(mp+1). 2. deliveri(mp)→ cbcastB i(mp+1).
いずれ の 場合に も ,SENT(mp) < SENT (mp+1)が 成り立つことを示せば 十分である.
(1の 場 合 )hi が mp を MSS sj へ ,mp+1 を MSS sk へ 放 送し た と す る .sj = sk の 場 合 ,sj
は mp,mp+1 の 順 に hi か ら メッセ ージ を 受 信 す る の で ,mss bcastj(mp)
→ mss bcastL j(mp+1) で
あ り,性 質 1よ り SENT[mp] < SENT [mp+1]が 成 り 立 つ .sj = s| k の 場 合 ,sj が mp を 放 送し て か ら sk が mp+1 を 放 送 す る ま で に ,sj か ら sk ま で ,hi の ハ ン ド オ フ の 連 鎖 が あ る .hi は
σ1(= sj), σ2,· · · , σb(= sk)の順にハンド オフされた とする .ここで ,σa (1 <= a <= b)はMSSであ りσa のもつSENTをSENTσ(a)と表す.各a(1 <= a < b) に 対し て,hiがσaからσa+1へハンド オフされ ると き,σa+1は移動情報としてσaからSENTσ(a)を受け 取り,SENTσ(a+1):= max(SENTσ(a),SENTσ(a+1)) とし て SENTσ(a+1) を 更 新 す る .よって ,hiが sk へ ハンド オフされ たとき,SENT(mp) <= SENTk で あ る .こ の 後 ,sk は SENTk[sk]を1増やし てから mp+1を放送するので ,SENT(mp) < SENT (mp+1)
が 成り立つ.
(2 の 場 合 )1 の 場 合 と 同 様 に ,SENT(mp) < SENT(mp+1)が 成り立つ. ✷
RECVj[h]は ,MH hが 接続中のMSS sjが もつ
変数であるが ,hが 別のMSS skに ハンド オフされ る とRECVj[h]の値はそのままRECVk[h]とし て引き 継がれ ,RECVj[h]は 破棄され る.つまり,hの接続 中のMSS sjのみが RECVj[h]をもつため ,この 変 数を単にRECV[h]と表す.
[ 補 題3]m を 任 意の 放 送 メッセ ージ ,hを 任 意の MHとする.このと き,hはmをたかだか1回受信
する.
[ 補 題4]m を 任 意の 放 送 メッセ ージ ,hを 任 意の MHとする.このと き,hはmを少な くとも1回受
信する.
補題4を証明するために 次の補題5を示す.
[ 補 題5] mを 任 意の 放 送 メッセ ージ ,s を 任 意の MSSとすると ,sはいずれmを配達する.
( 補 題5の 証 明 )あ るMSS sj で 配 達 され な い 放 送 メッセ ージ mが 存 在す ると 仮 定し ,矛 盾を 導 く. 一 般 性を 失 うこ とな く,sj が 配達し な い メッセ ージ の 中 で ,m が 極 小 の ヘッダ SENT(m)を も つ と す る .m を 放 送し たMSSを sk とし た と き ,永 久に SENT(m)[sk] > DELIVj[sk] + 1,あ るいは ,∃s ∈ (MSS − {sk})[SENT (m)[s] > DELIVj[s]]が 成 り 立つ.いずれ の場合も性質2,3より,SENT(m
′) <
SENT(m)なる放送メッセージm′が 存在する.mの 極小性よりSENT(m
′) < SENT (m)なるsjが 配達
し ない放送 メッセージm′が 存在することが 示せ,m のヘッダ の極小性に 矛盾する. ✷
( 補題4の証 明 ) MH hは 永久に 放送 メッセージ m を 受信し ていな いと 仮定し て矛盾を 導く.MSS sjで mの配達が 行われたときにhがsjと接続し ている場
合,hはsj からmを 受信する.よって ,hがMSS sj と 接 続し て い ると きに sj で m の 配 達は 行われ
ていな い.ここで ,補題5よりすべてのMSSはいず れ mを 配達す るので ,hは まだ mを 配達し ていな いMSS skから ,既にmを配達済みのMSS slへハ ンド オフされ る .mが hで 配 達され な いこ とか ら , こ の ハンド オフの 完 了時 点で ,slの 保持す るキュー
DELIV MESlからmは削除されている.つまり,m を放送したMSSをspとするとすべてのMSS sjから SENT(m)[sp] <= REDUCEj[sp]な るREDUCEj を
受信している.skでSENT(m)[sp] <= REDUCEj[sp] が 成り立つた めにはskで 既に mが 配達され て いな ければ な ら な い .hの ハンド オフ 直 前の 時 点で ,sk は mを まだ 配 達し て い な いの で ,hの ハンド オ フ 発 生 後に sk は m を 配 達し たこ とに な る .し かし , hの ハンド オ フが 開 始し てか ら ,ハンド オフが 完 了
し た こ と を 伝え る メッセ ージ を sl か ら 受 信 す る ま で は ,sk の 保 持 す る MOVINGk に は RECV[h] が 存 在 す る .h は m を 受 信し て い な い こ と か ら RECV[h][sp] < SENT (m)[sp]が 成り立つため ,sk
がhのハンド オフ中にslへ送信し たREDUCEkに ついて ,REDUCEk[sp] < SENT (m)[sp]であること が いえ る.これは ,slがhのハンド オフ 完了時点で mをキューDELIV MESlから 削除し て いる 条 件
に 反し ている. ✷
[ 定理1]m,m′ を 任意の放送 メッセージ ,hiを 任 意のMHとする.cbcast(m)
→ cbcast(mB ′)が 成り立 つならば ,deliveri(m)
→ deliverB i(m′)が 成り立つ.
( 証明)まず,任意のMSS sjに対し ,mss deliverj(m)
→ mss deliverL j(m′)が 成り立つこ とを 示す.補題2
よ り SENT(m) < SENT (m′) が 成 り 立 つ .補 題5 よ り,sj は m,m
′
を い ず れ 配 達 す る .こ の と き , mss deliverj(m)→ mss deliverL j(m′)とな るのはプ ロトコルより明らか.補題3,4より,各MHはすべて の放送メッセージを正確に1度配達する.あるMH h でより前にm′が 配達されたと仮定し て,矛盾を導く. すべてのMSS sjはm
′
の配達前にmを配達するため, これらの メッセージはキューDELIV MESjにおい て,m,m
′
の順に1回ずつ現れ る.hがあるMSS sj