Skip to content
Related Articles

Related Articles

Birman Schiper Stephenson Protocol
  • Difficulty Level : Basic
  • Last Updated : 18 Jan, 2021

This algorithm is used to maintain the causal ordering of the messages i.e. the message which is sent first should be received first. If send (M1)–>send(M2) then for all processes which receive the messages M1 and M2 should receive M1 before M2.

Features :

  • Broadcast based messaging.
  • Size of the messages are small.
  • More no. of messages are sent.
  • Limited state information.

Key Points :

  • Each process increases its vector clock by 1 upon sending of messages.
  • Message is delivered to a process if the process has received all the messages preceding to it.
  • Else buffer the message.
  • Update the vector clock for the process.

Reference :

  • Process: Pi
  • Event: eij , where i:process is number & j: jth event in ith process.
  • Tm:vector time stamp for message m.
  • Ci vector clock associated with process Pi; jth element is Ci[j] and contains Pi‘s latest value for the current time in process Pj

Protocol :
Pi sending a message to Pj



  • Pi increments Ci[i] and sets the timestamp tm = Ci[i] for message m.

Pj receiving a message from Pi

  • When Pj, j != i, receives m with timestamp tm, it delays the message’s delivery until both as follows.
    Cj[i] = tm[i] - 1; and
    for all k <= n and k != i, Cj[k] <= tm[k].
  • When the message is delivered to Pj, update Pj‘s vector clock.
  • Check buffer to see if any can be delivered.

Example –

  • Initial state for all the processes are 000.
  • M1 is broadcasted from P3 to P1 and P2. e31 updates the vector clock to (001) and sends P1 and P2.
  • P2 accepts the M1 with timestamp (001) because when it compares it with its initial timestamp i.e. (000) it finds that M1 is the 1st message it is receiving.
  • Now we consider that before M1 could reach P1, P2 sends M2 to P1 and P3 with time stamp (011).
  • P1 could not accept M2 because upon comparing the timestamp of M2 with its initial timestamp a discrepancy is found because P1 has no message with timestamp (001) received earlier, so M2 is stored in buffer.
  • Now M1 is received by P1 and accepted.
  • M2 is removed from buffer and accepted by P1.
  • M2 is accepted by P3 as there is no discrepancy in the time stamp.
My Personal Notes arrow_drop_up
Recommended Articles
Page :