560 likes | 926 Views
ビザンチン故障と分散制御 九州大学 システム情報科学研究院 山内由紀子. 最適化ワークショップ 2013,02,19. 講演概要. 分散システムとアルゴリズム ビザンチン合意アルゴリズム 移動ビザンチン合意アルゴリズム 今後の展開. 分散システム. 通信リンクで相互接続され, 協調動作する多数の計算機(プロセス) から成るシステム インターネット, ATM 網,みどりの窓口 分子計算,膜計算,などなど 分散させて上手く計算する 並列処理 分散してしまっていても上手く計算する 分散・協調処理. 合意問題. n 人いる参加者で, 1 ビットについて合意したい
E N D
ビザンチン故障と分散制御九州大学 システム情報科学研究院山内由紀子ビザンチン故障と分散制御九州大学 システム情報科学研究院山内由紀子 最適化ワークショップ2013,02,19
講演概要 • 分散システムとアルゴリズム • ビザンチン合意アルゴリズム • 移動ビザンチン合意アルゴリズム • 今後の展開
分散システム • 通信リンクで相互接続され,協調動作する多数の計算機(プロセス)から成るシステム • インターネット,ATM網,みどりの窓口 • 分子計算,膜計算,などなど • 分散させて上手く計算する • 並列処理 • 分散してしまっていても上手く計算する • 分散・協調処理
合意問題 • n人いる参加者で,1ビットについて合意したい • 各参加者は提案値∈{0, 1}を持つ • 誰かの持つ値に全員で合意する • 応用:分散データベース等の一貫性維持 • 処理速度向上,故障耐性のための冗長化,分散配置 • サーバ間の一貫性維持
合意問題 • n人いる参加者で,1ビットについて合意したい • 各参加者は提案値∈{0, 1}を持つ • 誰かの持つ値に全員で合意する • 応用:分散データベース等の一貫性維持 • 処理速度向上,故障耐性のための冗長化,分散配置 • サーバ間の一貫性維持 分散アルゴリズム • Q:各参加者の計算手順を考えてください • どんな通信(情報の送信/受信)をするか • どんな情報を記録し,受信した情報と合わせて何を計算するか
分散システムの難しさ (1/3) • 局所性 • 各計算機がローカルに持つデータだけをもとに計算 • 通信リンクがある計算機間でのみ計算結果を交換(送信,受信)できる
分散システムの難しさ (2/3) • 非同期性 • 各計算機の計算速度,通信の遅延はばらばら • スケジューラ(アドバーサリ)に対する最悪時評価
分散システムの難しさ (3/3) • 自律適応的運用 • 大規模,遠隔地に広がるシステムは管理困難 • 計算機が多ければ,故障も発生 • 故障耐性,自己組織化,自己最適化,等
合意問題 • n人いる参加者で,1ビットについて合意したい • 各参加者は提案値∈{0, 1}を持つ • 誰かの持つ値に全員で合意する • 計算手順案 • 全員で (提案者, 提案値) を交換 • n人ぶん集まったら,多数決/最大値/etc. 故障
ビザンチン合意問題 • ビザンチン故障 • アルゴリズムに従わず,任意の動作(停止,偽メッセージの送信,等) • ビザンチン故障に対する前提知識なし 定義 [ビザンチン合意問題] プロセス集合P={P1, P2, …, Pn}の各プロセスPiが提案値vi∈{0, 1}を持つ.また,合意値をただ1度だけ書き込める変数wiを持つ. 以下の条件を満たす合意値を決定するアルゴリズムを設計せよ. (合意性) すべての正常なプロセスは同じ値を合意値とする (停止性) すべての正常なプロセスはいずれ合意値を決定する (妥当性) 合意値はいずれかの正常プロセスの提案値である
ビザンチン合意問題:ゴール • 不可能性:故障プロセス数fの上限 • アルゴリズムの設計 • 効率性:計算時間,通信量 ビザンチン 1 0 0 1 0
ビザンチン合意の難しさ 提案値の交換による 3プロセス間でのビザンチン合意アルゴリズムが存在すれば? 0 1 A A 1 0 1 0 0 0 1 1 A:故障 0 0 1 0 1 1 B B:故障 C:故障 C 合意値:0 1 0 合意値:1 1 0 0 1 1 0 合意不可能 B C
ビザンチン合意問題の不可能性 • 停止故障⊂ビザンチン故障 • 同期システム • 各プロセスがラウンドごとに送信,受信,計算を繰り返す環境 • 通信遅延を無視 定理1 (Fisher et al, 1985) 任意の通信遅延を許す非同期システムでは1プロセスの停止故障に対しても合意問題は解けない 定理2 (Pease et al, 1980) n<3fのとき,同期システムにおいてもビザンチン合意問題は解けない
ビザンチン合意アルゴリズム M. Pease, R. Shostak, and L. Lamport, Reaching Agreement in the Presence of faults, J. of the Association for Computing Machinery, 27 (2), pp.228—234, 1980.
n>3fならばやさしい? • 例)提案値を集めて多数決 • 故障プロセスが別々の値を送れば多数決が覆る事も P1 故障 P2 P7 提案値0 1 P3 P6 0 0 1 提案値1 P4 P5
アルゴリズムのアイデア • 全プロセスの提案値について合意 • 正常プロセスに同じ(提案者,提案値)集合を持たせる • 各プロセスの提案値を様々な経路で収集 • P1(自分)の提案値はbだ • P1の提案値はbだ,とP2が言っている • P1の提案値はbだ,とP3が言っている • … • P1の提案値はbだ,とP2が言っている,とP3が言っている • … P1 P2 P7 P3 P6 P4 P5 目標:異なる(f+1) 人以下に中継された値を収集すれば,正常プロセスでは提案値を復元できることを保証
中継経路集合Tf+1 • 今回使用する中継経路 • 各プロセスは高々1回だけ出現 • 長さは(f+1)以下 • アルファベットS={1, 2, …, n} P1 P2 P7 P3 P6 S上の同一文字が高々1回しか出現しない長さf+1以下の文字列の集合 Tf+1 = P4 P5
中継経路集合Tf+1 (Contd.) • 接頭辞の最長共通部分で木構造Tf+1 • レベルhの頂点の子の数はn-h • 各プロセスPiにおいて,x∈Tf+1について • ui(x) :xの経路で伝達された値 • ui(l) = vi (Piの提案値) • maji(x):xの子の過半数値 l(空系列) レベル0 1 2 3 7 レベル1 12 13 14 17 レベル2 123 124 125 127 レベル3
システムモデル再掲 • 同期システム:ラウンドごとに,送信,受信,計算 • nプロセス中,fプロセスがビザンチン故障 • ただし,n>3f P1 P1 P3 P2 P2 P3 第1ラウンド 第2ラウンド 第3ラウンド 時刻
アルゴリズムByzCons (1/2) • 最初の(f+1)ラウンドはTf+1の値を回収 • (中継経路,提案値)を交換 • 例) 「P1の提案値はbだ,とP2が言っている」をP3が受信 • ((1 2), b) を受信 • u3(12)=bとし,((1 2 3), b)を送信 l(空系列) 1 2 3 7 12 13 14 17 123 124 125 127
アルゴリズムByzCons(2/2) • Tf+1の各頂点に中継値が入れば • 葉から順番に以下の操作:x 子の過半数を超える中継値をmaji(x)に入れる( 葉ではui(x) = maji(x) ) • ただし,そのような値がなければ0 • 最後にmaji(l) に入った値を合意値wiとする l(空系列) 1 2 3 7 12 13 14 17 123 124 125 127
アルゴリズムの正当性:合意性 • 正常プロセスのTf+1でmaj(l)が一致すれば合意 • レベル1の各頂点xについて,任意の正常プロセスi, jでmaji(x)=majj(x)を示す • 定義:頂点x∈Tf+1が値共有すべての正常プロセスPi, Pjでmaji(x) = majj(x) l(空系列) l(空系列) 正常プロセスi 正常プロセスj 1 1 2 2 3 3 n n
アルゴリズムの正当性:合意性 合意性の根拠: 正常プロセスで終了するx∈Tf+1は値共有 故障プロセスのみから成るy∈Tf+1は値共有 • 正常プロセスのTf+1でmaj(l)が一致すれば合意 • レベル1の各頂点xについて,任意の正常プロセスi, jでmaji(x)=majj(x)を示す • 定義:頂点x∈Tf+1が値共有すべての正常プロセスPi, Pjでmaji(x) = majj(x) l(空系列) l(空系列) 正常プロセスi 正常プロセスi 1 1 2 2 3 3 n n
合意性の根拠(1) • Base case • レベルf+1 の x = x’jにおいて • jが正常プロセスであれば,j はuj(x’)を送信 • アルゴリズムより,任意の正常プロセス Piでmaji(x) = uj(x’) 補題1:正常プロセスで終了するx∈Tf+1について,ある値bが存在し,任意の正常プロセスPiにおいて,ui(x)= maji(x) = b
合意性の根拠(1) • Induction: レベルh+1以上で補題が成立と仮定 • レベルhの正常プロセスPiでui(x) = bのとき 補題1:正常プロセスで終了するx∈Tf+1について,ある値bが存在し,任意の正常プロセスPiにおいて,ui(x)= maji(x) = b レベル h x' x' x' b 正常プロセスPj 正常プロセスPk 正常プロセスPi x= x’j x= x’j x= x’j b b xk ui(xk) = b = maji(xk)
合意性の根拠(1) • xの子の数> n-h > n-(f+1) > n-f > 2f • よって,xの子の過半数以上でmaji(xk) = b • したがって,任意の正常プロセスPiでmaji(x) = ui(x) = b 補題1:正常プロセスで終了するx∈Tf+1について,ある値bが存在し,任意の正常プロセスPiにおいて,ui(x)= maji(x) = b レベル h x' x' x' b 正常プロセスPj 正常プロセスPk 正常プロセスPi x= x’j x= x’j x= x’j b b xk ui(xk) = b = maji(xk)
合意性の根拠(2) • 故障プロセスはf個しかないので,yの長さは高々f • Base case: |y|=fのとき • yの任意の子yj ∈Tf+1について,jは必ず正常プロセス • よって,yjは値共有 • アルゴリズムより,任意の正常プロセスPi, Pjでmaji(y) = majj(y) 補題2:故障プロセスのみから成るy∈Tf+1は値共有 l(空系列)
合意性の根拠(2) • Induction: 長さh以上の故障プロセスのみから成る中継路で補題が成り立つと仮定 • 長さ h-1 の故障プロセスのみから成る中継路y • yの子はすべて補題1,補題2を満たす • よって,アルゴリズムよりyも任意の正常プロセスPi, Pjでmaji(y) = majj(y) 補題2:故障プロセスのみから成るy∈Tf+1は値共有
妥当性の根拠 • レベル1の各xについて • xが正常プロセスならばui(x) = maji(x) = (xの提案値) • xが故障プロセスでも値共有 • maji(l) は値共有かつ妥当性を満たす 補題1:正常プロセスで終了するx∈Tf+1について,ある値bが存在し,任意の正常プロセスPiにおいて,ui(x) = maji(x) = b 補題2:故障プロセスのみから成るy∈Tf+1は値共有 正常プロセスi l(空系列) 1 2 3 n
アルゴリズムByz-Consの正当性 • 合意性:補題1,補題2 • 停止性:f+1ラウンドで必ず終了 • 妥当性:合意性の議論より 定理3 アルゴリズムByz-Consはn>3fの時,同期システムでビザンチン合意問題を解く
時間複雑度,通信複雑度 • アルゴリズムが停止するまでに要する • 時間:f+1ラウンド • 通信:O(nf+1 log n)ビット • ビザンチン合意問題の下限
移動ビザンチン合意アルゴリズム J. A. Garay, Reaching (and Maintaining) Agreement in the Presence of Mobile Faults, In Proc. of Workshop on Distributed Algorithms, pp.253–264,1994.
移動ビザンチン故障 • ビザンチン故障プロセス集合が時々刻々と変化 • メモリの内容の書き換え • 送信メッセージの操作 • アルゴリズムのコードの書き換え • たとえば • コンピュータウィルス,ボットプログラムの活動
移動ビザンチン故障 • ビザンチン故障プロセス集合が時々刻々と変化 • メモリの内容の書き換え • 送信メッセージの操作 • アルゴリズムのコードの書き換え • たとえば • コンピュータウィルス,ボットプログラムの活動 0 0 0 0 0 0 0 0 0
移動ビザンチン故障 • ビザンチン故障プロセス集合が時々刻々と変化 • メモリの内容の書き換え • 送信メッセージの操作 • アルゴリズムのコードの書き換え • たとえば • コンピュータウィルス,ボットプログラムの活動 1 0 0 0 0 0 0 1 0
移動ビザンチン故障 • ビザンチン故障プロセス集合が時々刻々と変化 • メモリの内容の書き換え • 送信メッセージの操作 • アルゴリズムのコードの書き換え • たとえば • コンピュータウィルス,ボットプログラムの活動 1 0 0 0 0 1 1 1 0
移動ビザンチン合意問題 定義 [移動ビザンチン合意問題] プロセス集合P={P1, P2, …, Pn}の各プロセスPiが提案値vi∈{0, 1}を持つ.また,合意値を書き込む変数wiを持つ. 以下の条件を満たす合意値を決定するアルゴリズムを設計せよ. (合意性) すべての正常なプロセスは同じ値を合意値とする (停止性) すべての正常なプロセスはいずれ合意値を決定する (妥当性) 合意値はいずれかのプロセスの提案値である (合意維持性)合意達成後は,正常プロセスは毎ラウンド終了 時点で合意性を満たす
定義:移動ビザンチン故障 • Fr⊆P:ラウンドrでのビザンチン故障プロセス集合 • 故障数f = maxr>0{|Fr|} • 復帰プロセス • ひとつ前のラウンドでの故障していた正常プロセス • 例)書き換えられた合意値,コードをもつ可能性 P1 ビザンチン P2 P3 第1ラウンド 第2ラウンド 第3ラウンド 時刻
ビザンチン合意アルゴリズム適用は困難 • 補題2のベースケースで使用した性質 • (故障プロセスのみから成る系列)(正常プロセス)という系列が作成できない • 合意値の一致を保証できない • 情報を大量に集めても有効ではない 補題1:正常プロセスで終了するx∈Tf+1について,ある値bが存在し,任意の正常プロセスPiにおいて,ui(x) = maji(x) = b 補題2:故障プロセスのみから成るy∈Tf+1は値共有 l(空系列)
アイデア • 少ない情報交換で合意値を決める • 提案値の一斉送信,過半数計算を繰り返す • 最終的にはリーダーに従う • 各プロセスがフェーズごとに順にリーダー役 (IDで決定) • 合意が取れていない時は,リーダーの提案値を採用 補題3 毎時間故障プロセス集合が変化する時,f>0で合意は不可能 故障しないプロセスを1つだけ仮定すれば合意可能(Garay, 1994)
移動ビザンチン合意アルゴリズムMobileByz-Cons • 第2ラウンド • 合意性,停止性を保証 • 正常プロセスがリーダーとなれば,合意達成 • 第1ラウンド • 合意維持性を保証 • 一度合意すれば,過半数計算で十分 • wi = (Piの提案値) • 全隣接プロセスにwiを送信;受信値の過半数以上が1なら,wi = 1, otherwise wi = 0; • counti = (wiの出現回数); 第1ラウンド • リーダーならwiを送信; • counti < n-2fならばwi =(リーダーの合意値); 第2ラウンド
移動ビザンチン合意アルゴリズムMobileByz-Cons • 第2ラウンド • 合意性,停止性を保証 • 正常プロセスがリーダーとなれば,合意達成 • 第1ラウンド • 合意維持性を保証 • 一度合意すれば,過半数計算で十分 • wi = (Piの提案値) • 全隣接プロセスにwiを送信;受信値の過半数以上が1なら,wi = 1, otherwise wi = 0; • counti = (wiの出現回数); 第1ラウンド 復帰プロセスではcountiの値が正しい保証なし • リーダーならwiを送信; • counti < n-2fならばwi =(リーダーの合意値); 第2ラウンド
復帰プロセスのカウンタ値 • 修復が必要 • 第1ラウンドでの値が必要 • 再度全プロセスから合意値を収集 • wi = (Piの提案値) • 全隣接プロセスにwiを送信;受信値の過半数以上が1なら,wi = 1, otherwise wi = 0; • counti = (wiの出現回数); 第1ラウンド P1 P2 P7 P3 P6 • リーダーならwiを送信; • counti < n-2fならばwi =(リーダーの合意値); 第2ラウンド P4 P5
カウンタ値の修復 • 手順 • 全プロセスで第1ラウンドで受信した合意値,送信者を交換 • 受信値からラウンド1での受信値を再計算 P1 P2 P7 P3 P6 P4 P5
カウンタ値の修復 • 手順 • 全プロセスで第1ラウンドで受信した合意値,送信者を交換 • 受信値からラウンド1での受信値を再計算 Pjから受信した情報 n-2f個以上値bがあるなら,復元値=b, otherwise 0 復元した受信値
移動ビザンチン合意アルゴリズムMobileByz-Cons • wi = (Piの提案値) • 合意性 • 停止性 • 妥当性 • 合意維持性 定理4 アルゴリズムMobileByz-Consはn>6f,かつ,少なくとも1プロセスが故障しない同期システムで移動ビザンチン合意問題を解く • 全隣接プロセスにwiを送信;受信値の過半数以上が1なら,wi = 1, otherwise wi = 0; • counti = (wiの出現回数); 第1ラウンド • 第1ラウンドの受信値の復元リーダーならwiを送信; • counti < n-2fならばwi =(リーダーの合意値); 第2ラウンド
通信ネットワーク • 完全ネットワーク • 任意の2プロセス間で直接通信可能 • 一般ネットワークへ • 任意の2点間で通信可能の保証なし • 複数プロセスで通信を中継 • 一般ネットワークでのビザンチン合意の必要十分条件(Dolev, 1982) • 点連結度d > 2f
通信ネットワーク(Contd.) • 移動ビザンチン合意については未解決 • 情報伝搬に時間がかかるほど,移動ビザンチンが悪影響 • 一部には光明(佐々木,2013) • 故障数の上界:n < 6tで合意不可能 • グラフ上での移動ビザンチン合意アルゴリズム • 完全k部グラフ:n-3(n/k-1)>8tの場合 • リングのd/2 冪グラフ:max{d, 4d-2n+4} > 8tの場合
完全k部グラフ上での移動ビザンチン合意問題完全k部グラフ上での移動ビザンチン合意問題 • 完全k部グラフ • 各頂点が直接通信可能なのはn(k-1)/k頂点 • 残りのn/k頂点との距離は2 • MobileByz-Consを拡張 • 第1ラウンド:過半数計算 • 第2ラウンド:リーダーの合意値配布 • 第3ラウンド:過半数計算(リーダーの合意値配布)