Alternating Bit Protocol m[2],0 m[1],1 m[0],0 m[0],0 R S ack, 0 ABP is a link layer protocol. Works on FIFO channels only. Guarantees reliable message delivery with a 1-bit sequence number (this is the traditional version with window size = 1). Study how this works. Alternating Bit Protocol program ABP; {program for process S} define sent, b : 0 or 1; next : integer; initially next = 0, sent = 1, b = 0, and channels are empty; do sent ≠b send (m[next], b); next := next+1; sent := b (ack, j) is received if j = b b := 1-b j ≠ b skip fi timeout (R,S) send (m[next-1], b) od {program for process R} define j : 0 or 1; {initially j = 0}; do (m[ ], b) is received if j = b accept the message; send (ack, j); j:= 1 - j j ≠ b send (ack, 1-j) fi od S m[2],0 m[1],1 a,0 m[0],0 m[0],0 R How TCP works Supports end-to-end logical connection between any two computers on the Internet. Basic idea is the same as those of sliding window protocols. But TCP uses bounded sequence numbers! It is safe to re-use a sequence number when it is unique. With a high probability, a random 32 or 64-bit number is unique. Also, current sequence numbers are flushed out of the system after a time = 2d, where d is the round trip delay. How TCP works Sender Receiver SY N seq = x SY N, seq=y, ack = x+1 ACK, ack =y+1 send (m, y+1) ack (y+2) How TCP works • Three-way handshake. Sequence numbers are unique w.h.p. • Why is the knowledge of roundtrip delay important? • What if the window is too small / too large? • What if the timeout period is too small / toolarge? • Adaptive retransmission: receiver can throttle sender and control the window size to save its buffer space. Distributed Consensus Reaching agreement is a fundamental problem in distributed computing. Some examples are Leader election / Mutual Exclusion Commit or Abort in distributed transactions Reaching agreement about which process has failed Clock phase synchronization Air traffic control system: all aircrafts must have the same view If there is no failure, then reaching consensus is trivial. All-to-all broadcast Followed by a applying a choice function … Consensus in presence of failures can however be complex. Problem Specification input output p0 u0 v p1 v p2 u1 u2 p3 u3 v v Here, v must be equal to the value at some input line. Also, all outputs must be identical. Problem Specification Termination. Every non-faulty process must eventually decide. Agreement. The final decision of every non-faulty process must be identical. Validity. If every non-faulty process begins with the same initial value v, then their final decision must be v. Asynchronous Consensus Seven members of a busy household decided to hire a cook, since they do not have time to prepare their own food. Each member separately interviewed every applicant for the cook’s position. Depending on how it went, each member voted "yes" (means “hire”) or "no" (means “don't hire”). These members will now have to communicate with one another to reach a uniform final decision about whether the applicant will be hired. The process will be repeated with the next applicant, until someone is hired. Consider various modes of communication… Asynchronous Consensus Theorem. In a purely asynchronous distributed system, the consensus problem is impossible to solve if even a single process crashes Famous result due to Fischer, Lynch, Patterson (commonly known as FLP 85) Proof Bivalent and Univalent states A decision state is bivalent, if starting from that state, there exist two distinct executions leading to two distinct decision values 0 or 1. Otherwise it is univalent. A univalent state may be either 0-valent or 1-valent. Proof Lemma. No execution can lead from a 0-valent to a 1-valent state or vice versa. Proof. Follows from the definition of 0-valent and 1-valent states. Proof Lemma. Every consensus protocol must have a bivalent initial state. Proof by contradiction. Suppose not. Then consider the following scenario: s[0] s[n-1] 0 0 0 0 0 0 …0 0 0 0 0 0 0 0 0 …0 0 1 0 0 0 0 0 0 …0 1 1 … … … 1 1 1 1 1 1 …1 1 1 {0-valent) … {1-valent} s[j] is 0-valent s[j+1] is 1-valent (differ in jth position) What if process (j+1) crashes at the first step? Proof Lemma. Q In a consensus protocol, starting from any initial bivalent state, there must exist a reachable bivalent state T, such that every action taken by some process bivalent The adversary tries to prevent The system from reaching consensus bivalent bivalent S R action 0 R0 o-valent bivalent U action 1 R1 1-valent bivalent T action 0 T0 o-valent action 1 T1 1-valent p in state T leads to either a 0-valent or a 1-valent state. Actions 0 and 1 from T must be taken by the same process p. Why?