論文翻訳: Impossibility of Distributed Consensus with One Faulty Process
NANCY A. LYNCH Massachusetts Institute of Technology, Cambridge, Massachusetts
MICHAEL S. PATERSON University of Warwick, Coventry, England
Abstract
コンセンサスの問題にはプロセスの非同期システムが含まれており、そのいくつかは信頼性が欠落していることがある。課題は、信頼できるプロセスが 2 値の下で合意することである。本論文では、この課題に対するどのようなプロトコルであっても、たった 1 つでも不完全なプロセスが含まれるのなら終了に達しない可能性を持つことを示している。対照的に、同期のケースでは "Byzantine Generals" 問題として解決が知られている。
Table of Contents
- Abstract
- 1 Introduction
- 2 Consensus Protocols
- 3 Main Result
- 4 Initially Dead Processes
- 5 Conclusion
- 参考文献
1 Introduction
リモートプロセス間で合意に達するという課題は分散コンピューティングにおける最も基本的な問題の一つであり、分散データ処理、分散ファイル管理、および障害耐性のある分散アプリケーションに対する数多くのアルゴリズムの中核である。
この問題のよく知られた形式は分散データベースシステムで発生する ”transaction commit problem" である [6,13,15-17,21-241] ([151] で引用されている G.LeLann の私信も参照)。問題は、特定のトランザクションの処理に関与しているすべてのデータマネージャプロセスが、トランザクションの結果をデータベースに反映させるか、それらを破棄するかについて合意することである。例えば何らかの理由で一部のデータベースマネージャが必要なトランザクション処理を実行できなかった場合、破棄のアクションが必要となることがある。どのような決定が下されても、データベースの一貫性を保つためにすべてのデータベースマネージャは同じ決定をしなければならない。
参加しているプロセスとネットワークが完全に信頼できるものであれば "commit" 問題に必要なタイプの合意に達することは簡潔明瞭である。しかし、実際のシステムではプロセスのクラッシュ、ネットワーク分断、メッセージの紛失・改変・重複など様々な障害が発生する可能性がある。不完全なプロセスが完全に発狂してしまう可能性や、さらには悪意を持った計画に従ってメッセージを送信する可能性もあるビザンチン型 [5,7,11,14,18,191] の障害を考慮することもできる。したがって、そのような障害が発生した場合でも可能な限り信頼性の高い合意プロトコルが望まれている。もちろん、どのようなプロトコルでも頻繁すぎるまたは重大すぎる障害に屈する可能性があるため、希望の最良解は"期待する" 障害の規定数に耐えられるプロトコルである。
我々は本稿において、完全な非同期コンセンサスプロトコルは単一のプロセス死も許容できないという驚くべき結果を示す。我々はビザンチン障害を考慮せず、またメッセージシステムが信頼できると仮定する -- 正しく正確に 1 度だけ (exactly once) メッセージを配信する。これらの仮定を置いたにもかかわらず、折の悪いタイミングで一つのプロセスが停止すると、どのような分散コミットプロトコルでも合意に達することができなくなる可能性がある。したがって、この重要な問題には、コンピューティング環境におけるさらなる仮定や許容される障害の種類に大きな制限がないかぎり堅牢な解決策はない!
我々の証明において重要なことは処理が完全に非同期であることである; つまり、プロセス間の相対速度やメッセージ配信の遅延時間については想定を置いていない。また、プロセスは同期クロックにアクセスできないと想定しているため、例えばタイムアウトに基づくアルゴリズムは使用することはできない。(特に [6] の解決策は適用できない。) 最終的に、我々はプロセスの死を検出する能力を仮定していないため、あるプロセスが別のプロセスを死んだ (完全に停止した) のか、それとも非常にゆっくり動いているのかを知ることは不可能である。
我々の不可能性の結果は非常に弱い形のコンセンサス問題でさえも当てはまる。すべてのプロセスが初期値 {0, 1} で開始すると仮定する。非障害プロセスは適切な決定状態に入ることによって {0, 1} 値を決定する。決定を下すすべての非障害プロセスは同じ値を選択しなければならない。不可能性証明の目的のために、我々はあるプロセスが eventually に決定を下すことだけを必要とする。(もちろん、興味のあるどのようなアルゴリズムもすべての非障害プロセスが決定を下す必要があるだろう。) 例えば 0 が常に選択されるという些細な解決策は、0 と 1 の両方を取りうる決定値であると規定する事によって除外されるが、おそらく初期構成は異なる。
我々のシステムモデルは不可能性証明を限りなく適用可能にするためかなり強力である。プロセスはメッセージの意味によって通信するオートマタ (おそらく無限に多くの状態を持つ) としてモデル化される。一つのアトミックなステップにおいて、プロセスはメッセージの受信を試み、メッセージが配信されたかどうか (そして配信された場合はどのメッセージか) に基づいてローカルの計算処理を実行し、他のプロセスに対して任意だが有限のメッセージセットを送信することができる。特に "atomic broadcast" 機能が想定されているため、もし任意の非故障プロセスがメッセージを受信したならば、すべての非故障プロセスが受信しているという前提の上で、プロセスは他のすべてのプロセスに対して 1 ステップで同じメッセージを送信することができる。宛先のプロセスが無制限に受信を試行する限りすべてのメッセージは最終的 (eventually) に配信されるが、メッセージは任意の長さで遅延し順序どおりに配信されない可能性がある。
現在使用されている非同期コミットプロトコルはすべて "window of vulnerability" (脆弱性の窓) -- つまり単一プロセスの遅延やアクセス不能によってアルゴリズム全体が無期限待機を引き起こす可能性があるようなアルゴリズム実行中の時間枠が存在するように見受けられる。我々の不可能性結果は、すべてのコミットプロトコルがそのような "window" を持ち、民間伝承的に広く信じられている確証を裏付けるものである。
2 Consensus Protocols
コンセンサスプロトコル
プロセスは互いにメッセージを送信して通信する。メッセージは
したがって、メッセージシステムは
システム構成はメッセージバッファの内容と共に各プロセスの内部状態で構成されている。初期構成は各プロセスが初期状態で開始しメッセージバッファがからの構成である。
ステップはある構成を別の構成にし、単一のプロセス
以下の補題はスケジュールの "commutativity" (可換性) 特性を表している。
補題 1 . ある構成 から、スケジュール , がそれぞれ構成 , に至ると仮定する。 および のそれぞれのステップをとるプロセスのセットが互いに素である場合、 を に適用することができ、 を に適用することができ、両方とも同じ構成 をもたらすことができる ( Figure 1 参照)
証明.
あるプロセス
- アクセス可能な構成が複数の決定値を持たない。
- 各
に対してあるアクセス可能な構成は決定値 を持つ。
プロセス
ある実行がその実行で決定状態に達するという条件で、実行は決定的 (deciding) 実行である。コンセンサスプロトコル
3 Main Result
定理 1 . たった一つの故障だったとしても完全に正しいコンセンサスプロトコルは存在しない。
THEOREM 1. No consensus protocol is totally correct in spite of one fault.
証明. 逆に
基本的な考えはプロトコルが永遠に決定的ではない状況を示すことである。これには 2 つのステップがある。まず決定がまだ事前に決定されていないある初期構成が存在していることを論議する。次に、システムを特定の決定にコミットするようなステップを取ることを回避する容認可能な実行を構成する。
補題 2 . は 2 価の初期構成を持つ。
証明. そうではないと仮定する。この場合、
ここで、プロセス
補題 3 . を の 2 価構成とし、 を に適用できる事象とする。 を適用せずに から到達することのできる構成の集合を とし、 and is ablicable to とする。このとき は 2 価の構成を含む。
証明.
ここで
単一のステップで一方が他方から発生した場合、2つの構成は近傍 (neighbors) と呼ぶ。簡単な機能法により
ケース1.
ケース2.
対応するスケジュールを
いずれの場合も矛盾に達するため
どのような実行構成も2価の初期構成から1価の構成へと進むため、2価から1価へ進むある単一のステップが存在しなければならない。このようなステップは最終的に決定値を決定する。ここで我々は、そのようなステップを回避してシステムを実行することが常に可能であり、許可できる非決定実行につながることを示す。
実行は初期構成から始まり段階的に構築される。我々は実行が次の方法で許容されることを保証する。プロセスのキューは最初は任意の順序で維持され、構成内のメッセージバッファはメッセージが送信された時間に従い最も早いメッセージが先頭に来るように順序付けられる。各ステージは1つ以上のステップで構成される。プロセスキューの最初のプロセスが、ステージの開始時にそのメッセージキューが空でなかった場合にその最も早いメッセージを受信する、というステップを取ることでステージは終了する。その後このプロセスはプロセスキューの最後に移動される。このようなステージの無限のシーケンスでは、すべてのプロセスは無限に多いステップを取り、それに送られたすべてのメッセージを受信する。したがって実行は許容可能である。もちろん我々の問題は到達される決定を避けるような方法でこれを行うことである。
各ステージは 2 価の構成で終了するため、無限スケジュールの構成における各ステージは成功する。結果の実行は許容され、どのような決定にも到達しない。したがって
4 Initially Dead Processes
この章では過半数の非故障プロセスがプロトコルの実行中に停止しない状況において、
プロトコルは 2 段階で機能する。第 1 段階の間、プロセスは各プロセスに対応するノードを持つ有向グラフ
第 2 段階では、各プロセスがこの段階の完了時に、それぞれのプロセス
この段階を実行するために、各プロセスは他の全てのプロセスに対してそのプロセス番号と初期値を、第1段階で得た
この時点で、各プロセスは自分自身の祖先と
最後に、各プロセスは任意の合意されたルールを用いて初期クリークにおけるプロセスの初期値に基づいて決定を行う。全てのプロセスは初期クリークの全てのメンバーの初期値を認識しているため、それらは全て同じ決定に到達する。
このプロトコルの正しさは次の定理を証明する。
定理2 . その実行中にどのプロセスも死ぬことがなく、厳密に過半数のプロセスが初期状態で生きているという条件が与えられたとき、全ての非故障プロセスが常に決定に達するという部分的に正しい合意プロトコルが存在する。
THEOREM 2. There is a partially correct consensus protocol in which all nonfaulty processes always reach a decision, provided no processes die during its execution and a strict majority of the processes are alive initially.
5 Conclusion
フォールトトレラント協調コンピューティングの自然で重要な問題は、完全に非同期の計算モデルでは解決できないことを示した。これらの結果は、そのような問題が実際に "解決" できないことを示すものではない; むしろこれらは、現実的なプロセッサと通信タイミングの過程をよりよく反映した分散コンピューティングのより洗練されたモデルと、そのような問題のためのそれほど厳しくない要件の必要を指摘している。(例えば終了は確率1のみで必要とされるかも知れない。) これらの結果の最初の発表 [12] に続いて、進展はこれら [1-4, 9, 10, 20, 25] の両方のラインに沿って成された。
参考文献
- MICHAEL J. FISCHER, NANCY A. LYNCH, MICHAEL S. PATERSON (1985) Impossibility of Distributed Consensus with One Faulty Process
- A Brief Tour of FLP Impossibility