Outline Theoretical Foundations Fundamental limitations of distributed systems Logical clocks 1/18/2019 COP5611
Lamport’s Logical Clocks – review Definitions Happened before relation Happened before relation () captures the causal dependencies between events It is defined as follows a b, if a and b are events in the same process and a occurred before b. a b, if a is the event of sending a message m in a process and b is the event of receipt of the same message m by another process If a b and b c, then a c, i.e., “” is transitive 1/18/2019 COP5611
Lamport’s Logical Clocks – review Definitions – continued Causally related events Event a causally affects event b if a b Concurrent events Two distinct events a and b are said to be concurrent (denoted by a || b) if a b and b a For any two events, either a b, b a, or a || b 1/18/2019 COP5611
Lamport’s Logical Clocks – review There is a clock at each process Pi in the system Which is a function that assigns a number to any event a, called the timestamp of event a at Pi The numbers assigned by the system of the clocks have no relation to physical time The logical clocks take monotonically increasing values and can be implemented as counters 1/18/2019 COP5611
Lamport’s Logical Clocks – cont. Conditions satisfied by the system of clocks For any two events, if a b, then C(a) < C(b) [C1] For any two events a and b in a process Pi, if a occurs before b, then Ci(a) < Ci(b) [C2] If a is the event of sending a message m in process Pi and b is the event of receiving the same message m at process Pj, then Ci(a) < Cj(b) 1/18/2019 COP5611
Lamport’s Logical Clocks – cont. Implementation rules [IR1] Clock Ci is incremented between any two successive events in process Pi Ci := Ci + d ( d > 0) [IR2] If event a is the sending of message m by process Pi, then message m is assigned a timestamp tm = Ci(a). On receiving the same message m by process Pj, Cj is set to Cj := max(Cj, tm + d) 1/18/2019 COP5611
An Example 1/18/2019 COP5611
Total Ordering Using Lamport’s Clocks If a is any event at process Pi and b is any event at process Pj, then a => b if and only if either Where is any arbitrary relation that totally orders the processes to break ties 1/18/2019 COP5611
Example: Totally-Ordered Multicasting 1/18/2019 COP5611
A Limitation of Lamport’s Clocks In Lamport’s system of logical clocks If a b, then C(a) < C(b) The reverse if not necessarily true if the events have occurred on different processes 1/18/2019 COP5611
A Limitation of Lamport’s Clocks 1/18/2019 COP5611
Vector Clocks Implementation rules [IR1] Clock Ci is incremented between any two successive events in process Pi Ci[i] := Ci[i] + d ( d > 0) [IR2] If event a is the sending of message m by process Pi, then message m is assigned a timestamp tm = Ci(a). On receiving the same message m by process Pj, Cj is set to Cj[k] := max(Cj[k], tm[k]) 1/18/2019 COP5611
Vector Clocks – cont. 1/18/2019 COP5611
Vector Clocks – cont. 1/18/2019 COP5611
Vector Clocks – cont. Assertion At any instant, Events a and b are casually related if ta < tb or tb < ta. Otherwise, these events are concurrent In a system of vector clocks, 1/18/2019 COP5611
Causal Ordering of Messages The causal ordering of messages try to maintain the same causal relationship that holds among “message send” events with the corresponding “message receive” events In other words, if Send(M1) -> Send(M2), then Receive(M1) -> Receive(M2) This is different from causal ordering of events 1/18/2019 COP5611
Causal Ordering of Messages – cont. 1/18/2019 COP5611
Causal Ordering of Messages – cont. The basic idea It is very simple Deliver a message only when no causality constraints are violated Otherwise, the message is not delivered immediately but is buffered until all the preceding messages are delivered 1/18/2019 COP5611
Birman-Schiper-Stephenson Protocol 1/18/2019 COP5611
Schiper-Eggli-Sando Protocol 1/18/2019 COP5611
Schiper-Eggli-Sando Protocol – cont. 1/18/2019 COP5611
Schiper-Eggli-Sando Protocol – cont. 1/18/2019 COP5611