Lecture #11: Agreement Protocols

These topics are from Chapter 8 (Agreement Protocols) in Advanced Concepts in OS.

Dolev et alia Algorithm

This is an example of a time-message trade off

The Basis of the Algorithm

Messages Used by the Algorithm

Wix = set of processors that sent x to i = witnesses of x for i

i is a direct supporter of P iff P Wi*

i is an indirect supporter of P iff | WiP | LOW

i confirms P iff | WiP | HIGH

To make this algorithm work, I believe we need to assume the following:

Initiation Condition

The Algorithm

If time permits, go though an example of the algorithm.


In round 1, suppose the faulty processor A initiates, sending "*" messages to D & B, but not to C.


At the start of round 2, processors B & D have each received a "*" message from A and so become direct supporters of A. They respond by broadcasting "A". Since this is round 2, B & D initiate, which causes them to broadcast "*"


At the start of round 3, processors B & D have received "*" from B & D, so both become direct supporters of B & D, and broadcast "B" & "D". Processor C has received "*" from B & D, so it becomes a supporter of both, and broadcasts "B" & "D". Processor C has also received 2 witness messages for A, from B & D. Since LOW=m+1=2, C now becomes an indirect supporter of A and so it also broadcasts "A".


At the start of round 4, processor C has 3 witnesses for B & D. Since LOW + max{0, K/2 -2} = 2, C satisfies the initiation condition. C initiates broadcasts "*".


At the start of round 5, processors B, C, & D have all just received "*" from C. They become direct supporters of C and broadcast "C".


By the end of round 5 each nonfaulty processor has confirmed HIGH = 3 processors supporting commitment, so all three nonfaulty processors commit.

What happens if the fault processor A only sends a "*" message to one of the other processors?

What happens if the first initiating processor is not faulty?

Analysis of Dolev Algorithm