Synchronous Mortal Byzantine A Fault Tolerant Mechanism For Distributed SystemsSeminar Report By:Bibaswann BandyopadhyayCSE, 7th SemesterRoll No. 20081017University Institute of Technology
Introduction Several divisions of the Byzantine army are camped outside an enemy city, each division commanded by its own general. However, some of the generals may be traitors. Since the Byzantine Empire ceased to exists, we observe that Byzantines were mortal, their traitors doubly so. In what follows, we treat them as such.
Faults Deviation from expected behavior Variety of factors hardware software operator Network Three categories transient faults intermittent faults permanent faults Any fault may be fail-silent (fail-stop) Byzantine
What is a Byzantine Failure? Three primary differences from Fail-Stop Failure 1) Component can produce arbitrary output • Fail-stop: produces correct output or none 2) Cannot always detect output is faulty • Fail-stop: can always detect that component has stopped 3) Components may work together maliciously • No collusion across components
Motivation Build reliable systems in the presence of faulty components Common approach: Have multiple (potentially faulty) components compute same function Perform majority vote on outputs to get “right” result C1 C2 majority(v1,v2,v3) C3 f faulty, f+1 good components ==> 2f+1 total
Key StepA commanding general must send an order to his n-1 lieutenantgenerals such thatIC1. All loyal lieutenants obey the same order.IC2. If the commanding general is loyal, then every loyallieutenant obeys the order he sends.
Option 1: Loyal Commander commander attack attack L1 L2 retreatWhat must L1 do?By IC2: L1 must obey commander and attack
Option 2: Loyal L2 commander retreat attack L1 L2 retreat What must L1 do?By IC1: L1 and L2 must obey same order --> L1 must retreatProblem: L1 can’t distinguish between 2 scenarios
Oral Message Algorithm OM(0) Commander sends his value to every lieutenant OM(m), m>0 Commander sends his value to every lieutenant For each i, let vi be value Lieutenant i receives from commander; act as commander for OM(m-1) and send vi to n-2 other lieutenants For each i and each j i, let vj be value Lieutenant i received from Lieutenant j. Lieutenant i computes majority(v1,...,vn-1)
Example: Bad Lieutenant Scenario: m=1, n=4, traitor = L3 A C AOM(1): A L1 L2 L3 COM(0):??? A L2 L3 L1 R A RDecision?? L1 = m (A, A, R); L2 = m (A, A, R); Both attack!
Example: Bad Commander Scenario: m=1, n=4, traitor = C A C AOM(1): R L1 L2 L3 AOM(0):??? A R L1 L2 L3 A R ADecision?? L1=m(A, R, A); L2=m(A, R, A); L3=m(A,R,A); Attack!
Three Phase Protocol state of each replica is stored in a message log. Primary p receives a client request m , it starts a three-phase protocol. Three phases are: pre-prepare, prepare, commit. Pre-prepare and prepare phases is used to totally order requests. In pre-prepare phase Primary assigns sequence number n to request. Multicast pre-prepare msg. to all backups and appends the msg. to its log.
Conclusion The algorithm works correctly in asynchronous system like the internet. Previous algorithms are too slow to be used in practical (proportional to the number of faulty nodes vs. number of phases) One reason why Byzantine fault tolerant algorithms is important in future is that they allow the system to work correctly even when there are software errors. not all, software errors that occur in all replicas It can mask errors that occur independently at different replicas Non-deterministic software errors Persistent errors