Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
7th Seminar Report
1. Synchronous Mortal Byzantine
A Fault Tolerant Mechanism For Distributed
Systems
Seminar Report By:
Bibaswann Bandyopadhyay
CSE, 7th Semester
Roll No. 20081017
University Institute of Technology
2. 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.
3. 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
4. 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
5. 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
6. Key Step
A commanding general must send an order to his n-1 lieutenant
generals such that
IC1. All loyal lieutenants obey the same order.
IC2. If the commanding general is loyal, then every loyal
lieutenant obeys the order he sends.
7. Option 1: Loyal Commander
commander
attack
attack
L1 L2
retreat
What must L1 do?
By IC2: L1 must obey commander and attack
8. 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 retreat
Problem: L1 can’t distinguish between 2 scenarios
9. 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)
10. Example: Bad Lieutenant
Scenario: m=1, n=4, traitor = L3
A C A
OM(1):
A
L1 L2 L3
C
OM(0):???
A L2 L3
L1
R
A
R
Decision?? L1 = m (A, A, R); L2 = m (A, A, R); Both attack!
11. Example: Bad Commander
Scenario: m=1, n=4, traitor = C
A C A
OM(1):
R
L1 L2 L3
A
OM(0):???
A R
L1 L2 L3
A
R
A
Decision?? L1=m(A, R, A); L2=m(A, R, A); L3=m(A,R,A); Attack!
12. 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.
14. 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