deliver messages to all processes in the same order ... solves the common&easy failure-free case by itself. 2 ... wh
Using real time in fault-tolerant systems low-latency atomic broadcast in the presence of contention
Piotr Zieli´ nski Cavendish Laboratory University of Cambridge
DISC 2006
Piotr Zieli´ nski
Using real time in fault-tolerant systems
Ordering in distributed systems time p1 p2 p3 Atomic Broadcast deliver messages to all processes in the same order fault-tolerance: processes crash, messages get lost asynchrony: messages can get arbitrarily delayed ♦S failure detector
Optimism: prepare for the worst, hope for the best Piotr Zieli´ nski
Using real time in fault-tolerant systems
Ordering in distributed systems time p1 p2 p3 Atomic Broadcast deliver messages to all processes in the same order fault-tolerance: processes crash, messages get lost asynchrony: messages can get arbitrarily delayed ♦S failure detector
Optimism: prepare for the worst, hope for the best Piotr Zieli´ nski
Using real time in fault-tolerant systems
Ordering in distributed systems time p1 p2
Atomic Broadcast
p3 Atomic Broadcast deliver messages to all processes in the same order fault-tolerance: processes crash, messages get lost asynchrony: messages can get arbitrarily delayed ♦S failure detector
Optimism: prepare for the worst, hope for the best Piotr Zieli´ nski
Using real time in fault-tolerant systems
Protocol [Chandra and Toueg, 1996] [Pedone and Schiper, 1999] [Aguilera et al., 2000] [Pedone and Schiper, 2003] [Zieli´ nski, 2005] [Vicente and Rodrigues, 2002] this work
clocks
no clocks
Related broadcast protocols
ordinary broadcast (no order)
Steps
Condition
3 2 2 2 2
always no conflicts no conflicts no contention either
2+δ 2
always (δ > 0) always
1
always
This protocol 1
solves the common&easy failure-free case by itself
2
delegates failure-handling to Generic Broadcast
Piotr Zieli´ nski
Using real time in fault-tolerant systems
Timestamp-based Atomic Broadcast abcast a:21
p1
abcast b:151
abcast c:72
p2
abcast d:93
p3
delay 0
50
100
150
200
250
300
Principle: deliver messages in the order of increasing timestamps abcast timestamps: a:21, b:151, c:72, d:93 delivery order: a, c, d, b
Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Protocol for the failure-free case abcast a:21 hmesg p1 , 21, ai
p1
abcast b:151 hmesg p1 , 151, bi
abcast c:72 hmesg p2 , 72, ci
p2
abcast d:93 hmesg p3 , 93, di
p3 0
50
100
delay 150
200
250
300
Statements positive statements: hmesg p1 , 21, ai
hmesg p1 , 21, ai hmesg p2 , 72, ci hmesg p3 , 93, di Piotr Zieli´ nski
hmesg p1 , 151, bi
Using real time in fault-tolerant systems
350
Protocol for the failure-free case hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
deliver c
deliver a
deliver c
deliver a
deliver c
hmesg p2 , 72, ci hempty p3 , 1, 92i
p3
hmesg p3 , 93, di 0
50
100
delay 150
200
250
300
Statements positive statements: hmesg p1 , 21, ai negative statements: 1
when sending a message: hempty p1 , 22, 150i
hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p1 , 22, 150i hmesg p1 , 151, bi hempty p2 , 1, 71i hmesg p2 , 72, ci hempty p3 , 1, 92i hmesg p3 , 93, di Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Protocol for the failure-free case hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
hempty p3 , 1, 92i hmesg p3 , 93, di 0
50
100
deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci
p3
deliver c
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Statements positive statements: hmesg p1 , 21, ai negative statements: 1 2
when sending a message: hempty p1 , 22, 150i when receiving a message: hempty p1 , 73, 93i
hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p1 , 22, 150i hmesg p1 , 151, bi hempty p2 , 1, 71i hmesg p2 , 72, ci hempty p2 , 73, 93i hempty p2 , 94, 151i hempty p3 , 1, 92i hmesg p3 , 93, di hempty p3 , 94, 151i Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Protocol for the failure-free case hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
hempty p3 , 1, 92i hmesg p3 , 93, di 0
50
100
deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci
p3
deliver c
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Statements positive statements: hmesg p1 , 21, ai negative statements: 1 2
when sending a message: hempty p1 , 22, 150i when receiving a message: hempty p1 , 73, 93i
hempty p1 , 1, 20i hmesg p1 , 21, ai
Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Protocol for the failure-free case hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
hempty p3 , 1, 92i hmesg p3 , 93, di 0
50
100
deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci
p3
deliver c
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Statements positive statements: hmesg p1 , 21, ai negative statements: 1 2
when sending a message: hempty p1 , 22, 150i when receiving a message: hempty p1 , 73, 93i
hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p2 , 1, 71i hmesg p2 , 72, ci Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Protocol for the failure-free case hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
hempty p3 , 1, 92i hmesg p3 , 93, di 0
50
100
deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci
p3
deliver c
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Statements positive statements: hmesg p1 , 21, ai negative statements: 1 2
when sending a message: hempty p1 , 22, 150i when receiving a message: hempty p1 , 73, 93i
hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p2 , 1, 71i hmesg p2 , 72, ci hempty p3 , 1, 92i hmesg p3 , 93, di Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Protocol for the failure-free case hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
hempty p3 , 1, 92i hmesg p3 , 93, di 0
50
100
deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci
p3
deliver c
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Statements positive statements: hmesg p1 , 21, ai negative statements: 1 2
when sending a message: hempty p1 , 22, 150i when receiving a message: hempty p1 , 73, 93i
hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p1 , 22, 150i hmesg p1 , 151, bi hempty p2 , 1, 71i hmesg p2 , 72, ci hempty p3 , 1, 92i hmesg p3 , 93, di Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Protocol for the failure-free case hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
hempty p3 , 1, 92i hmesg p3 , 93, di 0
50
100
deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci
p3
deliver c
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Statements positive statements: hmesg p1 , 21, ai negative statements: 1 2
when sending a message: hempty p1 , 22, 150i when receiving a message: hempty p1 , 73, 93i
hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p1 , 22, 150i hmesg p1 , 151, bi hempty p2 , 1, 71i hmesg p2 , 72, ci hempty p2 , 73, 93i hempty p3 , 1, 92i hmesg p3 , 93, di Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Protocol for the failure-free case hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
hempty p3 , 1, 92i hmesg p3 , 93, di 0
50
100
deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci
p3
deliver c
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Statements positive statements: hmesg p1 , 21, ai negative statements: 1 2
when sending a message: hempty p1 , 22, 150i when receiving a message: hempty p1 , 73, 93i
hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p1 , 22, 150i hmesg p1 , 151, bi hempty p2 , 1, 71i hmesg p2 , 72, ci hempty p2 , 73, 93i hempty p2 , 94, 151i hempty p3 , 1, 92i hmesg p3 , 93, di hempty p3 , 94, 151i Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Failures can hurt hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
hempty p3 , 1, 92i hmesg p3 , 93, di 0
50
100
deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci
p3
deliver c
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Problem: lost negative statements prevent delivery hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p1 , 22, 150i hmesg p1 , 151, bi hempty p2 , 1, 71i hmesg p2 , 72, ci hempty p2 , 73, 93i hempty p2 , 94, 151i hempty p3 , 1, 92i hmesg p3 , 93, di hempty p3 , 94, 151i
Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Failures can hurt hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
hempty p3 , 1, 92i hmesg p3 , 93, di 0
50
100
deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci
p3
deliver c
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Problem: lost negative statements prevent delivery hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p1 , 22, 150i hmesg p1 , 151, bi hempty p2 , 1, 71i hmesg p2 , 72, ci hempty p3 , 1, 92i hmesg p3 , 93, di hempty p3 , 94, 151i
Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Failures can hurt hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
hempty p3 , 1, 92i hmesg p3 , 93, di 0
50
100
deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci
p3
deliver c
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Problem: lost negative statements prevent delivery hempty p1 , 1, 20i hmesg p1 , 21, ai
Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Failures can hurt hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
hempty p3 , 1, 92i hmesg p3 , 93, di 0
50
100
deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci
p3
deliver c
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Problem: lost negative statements prevent delivery hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p2 , 1, 71i hmesg p2 , 72, ci
Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Failures can hurt hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
hempty p3 , 1, 92i hmesg p3 , 93, di 0
50
100
deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci
p3
deliver c
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Problem: lost negative statements prevent delivery hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p2 , 1, 71i hmesg p2 , 72, ci hempty p3 , 1, 92i hmesg p3 , 93, di
Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Failures can hurt hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
hempty p3 , 1, 92i hmesg p3 , 93, di 0
50
100
deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci
p3
deliver c
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Problem: lost negative statements prevent delivery hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p1 , 22, 150i hmesg p1 , 151, bi hempty p2 , 1, 71i hmesg p2 , 72, ci hempty p3 , 1, 92i hmesg p3 , 93, di
Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Failures can hurt hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
hempty p3 , 1, 92i hmesg p3 , 93, di 0
50
100
deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci
p3
deliver c
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Problem: lost negative statements prevent delivery hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p1 , 22, 150i hmesg p1 , 151, bi hempty p2 , 1, 71i hmesg p2 , 72, ci hempty p3 , 1, 92i hmesg p3 , 93, di hempty p3 , 94, 151i
Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Fault-tolerant protocol hempty p1 , 1, 20i hempty p1 , 22, 150i deliver a hmesg p1 , 21, ai hmesg p1 , 151, bi
p1
hempty p2 , 1, 71i
p2
hempty p3 , 1, 92i hmesg p3 , 93, di 0
50
100
deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci
p3
deliver c
delay
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i
150
200
250
300
Fault tolerance leader p1 simulates crashed processes: hempty p2 , 1, 151i if conflicts, the first statement wins hmesg p2 , 72, ci hempty p2 , 1, 151i hmesg p2 , 82, ei ⇐⇒ hempty p2 , 1, 72i hmesg p2 , 72, ci hempty p2 , 73, 151i
ordering conflicting statements 1 2
negative self-statements use ordinary broadcast (1 step) other statements use generic broadcast (2 steps) Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Fault-tolerant protocol p1
hempty p1 , 1, 20i
hempty p1 , 22, 150i
hmesg p1 , 21, ai
hmesg p1 , 151, bi
hempty p2 , 1, 71i
p2
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci hempty p3 , 1, 92i
p3
hmesg p3 , 93, di 0
50
100
deliver a deliver c deliver d deliver b
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Broadcasts 1
negative self-statements use ordinary broadcast (1 step)
2
other statements use generic broadcast (2 steps)
hempty p1 , 1, 20i
Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Fault-tolerant protocol p1
hempty p1 , 1, 20i
hempty p1 , 22, 150i
hmesg p1 , 21, ai
hmesg p1 , 151, bi
hempty p2 , 1, 71i
p2
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci hempty p3 , 1, 92i
p3
hmesg p3 , 93, di 0
50
100
deliver a deliver c deliver d deliver b
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Broadcasts 1
negative self-statements use ordinary broadcast (1 step)
2
other statements use generic broadcast (2 steps)
hempty p1 , 1, 20i hempty p2 , 1, 71i
Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Fault-tolerant protocol p1
hempty p1 , 1, 20i
hempty p1 , 22, 150i
hmesg p1 , 21, ai
hmesg p1 , 151, bi
hempty p2 , 1, 71i
p2
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci hempty p3 , 1, 92i
p3
hmesg p3 , 93, di 0
50
100
deliver a deliver c deliver d deliver b
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Broadcasts 1
negative self-statements use ordinary broadcast (1 step)
2
other statements use generic broadcast (2 steps)
hempty p1 , 1, 20i hempty p2 , 1, 71i hempty p3 , 1, 92i Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Fault-tolerant protocol p1
hempty p1 , 1, 20i
hempty p1 , 22, 150i
hmesg p1 , 21, ai
hmesg p1 , 151, bi
hempty p2 , 1, 71i
p2
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci hempty p3 , 1, 92i
p3
hmesg p3 , 93, di 0
50
100
deliver a deliver c deliver d deliver b
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Broadcasts 1
negative self-statements use ordinary broadcast (1 step)
2
other statements use generic broadcast (2 steps)
hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p2 , 1, 71i hempty p3 , 1, 92i Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Fault-tolerant protocol p1
hempty p1 , 1, 20i
hempty p1 , 22, 150i
hmesg p1 , 21, ai
hmesg p1 , 151, bi
hempty p2 , 1, 71i
p2
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci hempty p3 , 1, 92i
p3
hmesg p3 , 93, di 0
50
100
deliver a deliver c deliver d deliver b
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Broadcasts 1
negative self-statements use ordinary broadcast (1 step)
2
other statements use generic broadcast (2 steps)
hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p1 , 22, 150i hempty p2 , 1, 71i hempty p3 , 1, 92i Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Fault-tolerant protocol p1
hempty p1 , 1, 20i
hempty p1 , 22, 150i
hmesg p1 , 21, ai
hmesg p1 , 151, bi
hempty p2 , 1, 71i
p2
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci hempty p3 , 1, 92i
p3
hmesg p3 , 93, di 0
50
100
deliver a deliver c deliver d deliver b
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Broadcasts 1
negative self-statements use ordinary broadcast (1 step)
2
other statements use generic broadcast (2 steps)
hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p1 , 22, 150i hempty p2 , 1, 71i hmesg p2 , 72, ci hempty p3 , 1, 92i Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Fault-tolerant protocol p1
hempty p1 , 1, 20i
hempty p1 , 22, 150i
hmesg p1 , 21, ai
hmesg p1 , 151, bi
hempty p2 , 1, 71i
p2
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci hempty p3 , 1, 92i
p3
hmesg p3 , 93, di 0
50
100
deliver a deliver c deliver d deliver b
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Broadcasts 1
negative self-statements use ordinary broadcast (1 step)
2
other statements use generic broadcast (2 steps)
hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p1 , 22, 150i hempty p2 , 1, 71i hmesg p2 , 72, ci hempty p2 , 73, 93i hempty p3 , 1, 92i hmesg p3 , 93, di Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Fault-tolerant protocol p1
hempty p1 , 1, 20i
hempty p1 , 22, 150i
hmesg p1 , 21, ai
hmesg p1 , 151, bi
hempty p2 , 1, 71i
p2
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci hempty p3 , 1, 92i
p3
hmesg p3 , 93, di 0
50
100
deliver a deliver c deliver d deliver b
delay 150
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i 200
250
300
Broadcasts 1
negative self-statements use ordinary broadcast (1 step)
2
other statements use generic broadcast (2 steps)
hempty p1 , 1, 20i hmesg p1 , 21, ai hempty p1 , 22, 150i hmesg p1 , 151, bi hempty p2 , 1, 71i hmesg p2 , 72, ci hempty p2 , 73, 93i hempty p2 , 94, 151i hempty p3 , 1, 92i hmesg p3 , 93, di hempty p2 , 94, 151i Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Algorithm summary p1
hempty p1 , 1, 20i
hempty p1 , 22, 150i
hmesg p1 , 21, ai
hmesg p1 , 151, bi
hempty p2 , 1, 71i
p2
deliver a deliver c deliver d deliver b
deliver a deliver c deliver d deliver b hempty p2 , 73, 93i hempty p2 , 94, 151i
hmesg p2 , 72, ci hempty p3 , 1, 92i
p3
hmesg p3 , 93, di 0
50
100
deliver a deliver c deliver d deliver b hempty p3 , 94, 151i
delay 150
200
250
300
Algorithm summary positive and negative statements leader issues negative statements for crashed processes if conflicts, the first statement wins 1 2
negative self-statements use ordinary broadcast (1 step) other statements use generic broadcast (2 steps) Piotr Zieli´ nski
Using real time in fault-tolerant systems
350
Properties Algorithm properties 2-step latency if no failures clocks required only if contention
safety and liveness always guaranteed even if failures or unsynchronized clocks
quiet if no messages broadcast unlike [Vicente and Rodrigues, 2002] with latency 2 + δ
Lower bounds 1 2
1-step latency impossible even in synchronous model 2-step latency requires clocks no external processes no failures
Piotr Zieli´ nski
Using real time in fault-tolerant systems
Conclusion: don’t condemn real time!
Conclusion real time gives useful hints that can reduce latency 3 steps
=⇒
2 steps
asynchronous model
=⇒
synchronous model
Future other problems might benefit from similar solutions look for syncho-asynchro discrepancy in latency
Piotr Zieli´ nski
Using real time in fault-tolerant systems
References Marcos Kawazoe Aguilera, Carole Delporte-Gallet, Hugues Fauconnier, and Sam Toueg. Thrifty Generic Broadcast. In Proceedings of the 14th International Symposium on Distributed Computing, pages 268–282, Toledo, Spain, 2000. Tushar Deepak Chandra and Sam Toueg. Unreliable failure detectors for reliable distributed systems. Journal of the ACM, 43(2):225–267, 1996. Fernando Pedone and Andr´e Schiper. Optimistic Atomic Broadcast: a pragmatic viewpoint. Theoretical Computer Science, 291(1):79–101, 2003. Fernando Pedone and Andr´e Schiper. Generic Broadcast. In Proceedings of the 13th International Symposium on Distributed Computing, pages 94–108, 1999. Pedro Vicente and Lu´ıs Rodrigues. An indulgent uniform total order algorithm with optimistic delivery. In Proceedings of 21st Symposium on Reliable Distributed Systems, Osaka, Japan, 2002. IEEE Computer Society. Piotr Zieli´ nski. Optimistic Generic Broadcast. In Proceedings of the 19th International Symposium on Distributed Computing, pages 369–383, Krak´ ow, Poland, September 2005. Piotr Zieli´ nski
Using real time in fault-tolerant systems