You are on page 1of 3

Birman-Schiper-Stephenson Protocol Example:

Given below is a time-space diagram depicting 3 processes in a distributed system. Apply Birman-
Schiper-Stephenson (BSS) protocol to verify if there is any causal ordering violation?

Solution:

e31: P3 broadcasts a:

C3 = [0 0 1] ta = [0 0 1]

e21: Message a arrives at P2 from P3:

C2 = [0 0 0] ta = [0 0 1]

(i) C2[3] = ta[3] – 1 = 1 - 1 = 0 (satisfied)


(ii) C2[1] >= ta[1] (satisfied)
C2[2] >= ta[2] (satisfied)

Message is delivered to P2
Updated C2 = [0 0 1]
e11: Message a arrives at P1 from P3:

C1 = [0 0 0] ta = [0 0 1]

(i) C1[3] = ta[3] – 1 = 1 - 1 = 0 (satisfied)


(ii) C1[1] >= ta[1] (satisfied)
C1[2] >= ta[2] (satisfied)

Message is delivered to P1.


Updated C1 = [0 0 1]

e12: P1 broadcasts b:

C1 = [1 0 1] tb = [1 0 1]

e13: P1 broadcasts c:

C1 = [2 0 1] tc = [2 0 1]

e22: Message c arrives at P2 from P1:

C2 = [0 0 1] tc = [2 0 1]

(i) C2[1] ≠ tc[1] – 1 (dissatisfied)


Message c is buffered.

e32: Message b arrives at P3 from P1:

C3 = [0 0 1] tb = [1 0 1]

(i) C3[1] = tb[1] – 1 = 1 - 1 = 0 (satisfied)


(ii) C3[2] >= tb[2] (satisfied)
C3[3] >= tb[3] (satisfied)
Message is delivered to P3
Updated C3 = [1 0 1]

e23 : Message b arrives at P2 from P1:


C2 = [0 0 1] tb = [1 0 1]
(i) C2[1] = tb[1] – 1 = 1 – 1 = 0 (satisfied)
(iii) C2[2] >= tb[2] (satisfied)
C2[3] >= tb[3] (satisfied)
Message is delivered to P2
Updated C2 = [1 0 1]

Check message buffer: Message c found

Message c can now be delivered to P2 as:

C2 = [1 0 1] tc = [2 0 1]

(i) C2[1] = tc[1] – 1 =2 - 1 = 1 (satisfied)


(ii) C2[2] >= tc[2] (satisfied)
C2[3] >= tc[3] (satisfied)
Updated C2 = [2 0 1]

e33: Message c arrives at P3 from P1:

C3 = [1 0 1] tc = [2 0 1]

(i) C3[1] = tc[1] – 1 = 2 - 1 = 1(satisfied)


(ii) C3[2] >= tc[2] (satisfied)
C3[3] >= tc[3] (satisfied)
Message is delivered to P3.
Update C3 = [2 0 1]

You might also like