$30
Page 1
ECE428 Homework 3
This assignment has 5 questions with 65 points in total. The solutions must be typed, and
submitted via Blackboard. However, the diagrams can be hand-drawn. You must acknowledge
any sources used to arrive at your solutions, other than the course materials and textbook. All
homework assignments are expected to be an individual work, so no collaborations are allowed.
Question 1: Bully Algorithm [14 points]
Consider the following modification of Bully algorithm: The initiating node (which is assumed not
to fail) sends Election message only to the process with the highest id. If it does not get a
response within a timeout, it sends Election message to the process with the second highest id.
If after another timeout there is no response, it tries the process with the third highest id, and so
on. If no higher numbered processes finally respond, it sends Coordinator message to all the
lower-numbered processes.
(a) (2 points) Complete the receive_message function (pseudocode is OK).
For the following parts, consider a distributed system with 8 processes that use a modified
Bully algorithm for the leader election (including your solution to part (a)). The processes are
called { P1, … ,P8 } with Pi having the PID i. Initially, all 8 processes are alive and P8 is the
leader. Then, P8 fails, and P4 detects this, and initiates a new leader election. Assume the
one-way message transmission time is T, and the timeout is set using knowledge of T.
(b) (2 points) If no other node fails during the election run, how many total messages will be
sent by all the processes in this election run?
(c) (2 points) If no other node fails during the election run, how long will it take for the
election to finish?
Page 2
(d) (2 points) Now assume that immediately after P4 detects P8’s failure, and initiates the
election while P7 fails. How many total messages will be sent by all processes in this
election run?
(e) (2 points) For the above scenario (where P7 fails right after P4 initiates the election upon
detecting P8’s failure), how long will it take for the election to finish?
(f) (4 points) What are the best and the worst-case turnaround times for Bully algorithm?
Question 2: Leader Election in a Ring [10 points]
Consider a system of N processes, { P1,…, PN } arranged in a ring. Each process can only
communicate to its ring successor, i.e., Pi can only send messages to Pi+1, and PN can only
send messages to P1. We assume that each message is a pair of two 16-bit signed integers, i.e.,
they can take on values from –32768 to +32767. Assume that N ≤ 1000, and that there are no
failures, and the communication channel delivers all messages correctly and exactly once.
(a) (6 points) In this problem, each process has a 16-bit signed integer zinput xk (−32768 ≤
xk ≤ 32767), and an output variable yk, initialized to None (meaning undecided). A
consensus algorithm is designed to calculate the maximum of all the input variables. In
other words, at any point, the safety condition is, yk is either None, or yk = max i∈{1,...,N } xi .
We will adapt the (first version of) ring-based election algorithm for this problem.
• A process Pi
initiates the algorithm by sending (0, xi) to its ring successor (the 0
indicates this is a proposal message).
• When a process Pj receives (0, x) from its ring predecessor:
- if x > xj, it forwards (0, x) to its successor.
- if x < xj, it sends while replacing x with xj ,i.e., send (0, xj) to its successor.
- if x = xj, it concludes that x = xj
is the minimum value, sets yj = x and sends
(1, x) to its successor (the 1 indicating it is a decided message).
• When a process Pj receives (1, x) and its yj
is None, it sets yj = x and forwards (1, x)
to its successor. If yj
is not None, it ignores any received messages.
Note that multiple processes may initiate the algorithm simultaneously. Here is a Python
implementation:
Page 3
Does the algorithm described above guarantee safety condition for this problem? If yes, prove
how. If not, (i) describe a scenario where safety is violated, and (ii) suggest any modifications to
the algorithm that would guarantee the safety condition. You do not need to submit the code but
you should have enough details in your modified algorithm for the grader to be able to
implement the modification.
(b) (4 points) In this problem, the inputs xk are all either 0 or 1. In this case, the output variable
should be set to represent the majority value. In other words, if yk is not None, it must be 1 if
the majority of processes have input 1, and 0 if the majority of processes have input 0, and 2
if there is a tie. Describe the algorithm for solving this problem (using either Python or a
pseudocode). Assume that multiple processes may initiate your algorithm simultaneously.
Question 3: Consensus in Synchronous Systems [13 points]
Consider the following algorithm:
• A process Pi
initiates the consensus by multicasting a Query message to the group.
• Each process Pj unicasts a reply to Pi with message Value(xj) that includes its input.
• After receiving replies from everyone or a timeout, Pi computes the minimum of all
received values (including its own) yi = min xj and multicasts Decision(yi) to the group.
Assume that we operate in a synchronous system with the maximum one-way delay T for
unicast message transmissions including any message processing times. Assume also that
unicast channels are reliable.
(a) (3 points) For the multicast of Query message, should R-multicast or B-multicast be
used, and why?
(b) (2 points) What should the timeout value be?
(c) (3 points) For the multicast of Decision message, should R-multicast or B-multicast be
used, and why?
(d) (2 points) Assuming no failures, how long will the algorithm take to complete?
(e) (3 points) This algorithm can lead to a safety failure while trying to achieve consensus.
Explain how it could happen. (For this part, consider possibility of processes failure.)
Page 4
Question 4: Understanding Paxos [14 points]
Consider a system implementing Paxos with two proposers, P1 and P2, and three acceptors, A1,
A2, and A3. Assume that the input value for P1 is 1, and the input value for P2 is 2. Answer the
following sub-question. (Both sub-questions are unrelated.)
(a)
Refer to the figure above. It shows the Prepare messages sent by P1 and P2. The responses
(if any) are not shown. Assume that no other proposals are initiated.
i. (1 point) Which processes will reply back to P1’s Prepare messages?
ii. (1 point) Which processes will reply back to P2’s Prepare messages?
iii. (2 points) Assuming each Promise message take exactly 2 time units, at what time will P1 send
Accept messages? At what time will P2 send Accept messages?
iv. (2 points) Assuming each Accept message takes at least 1 time unit, and, as above, the
Promise messages take exactly 2 time units, is it possible for the Proposal #1 to be accepted
by a majority of acceptors? If no, explain why not. If yes, explain how.
Page 5
(b)
Refer to the figure above. P1 send Prepare messages at time 1, receives a Promise from all
the acceptors, and sends Accept messages at time 6. Meanwhile, P2 sends Prepare message
for the proposal #2 at time 7.
i. (1 point) Which processes will reply to P2’s Prepare message?
ii. (1 point) Which processes will accept P1’s proposal?
iii. (1 point) Assuming each Promise response for P2’s Prepare message takes exactly 2 units,
when will P2 send Accept messages?
iv. (1 point) Assuming P2 sends messages at the time stated in the previous parts, which
processes will accept P2’s proposal?
v. (1 point) What will be the value in P2’s proposal?
vi. (3 points) Come up with a scenario where the consensus value changes by switching the
arrival time of one message. Complete the diagram showing the timing of the promise
messages from the acceptors to P2 and the accept messages from P2 back to the acceptors.
(For this subpart any messages not shown on the original diagram must take at least one time
unit, but have no other constraints.)
Page 6
Question 5: Understanding Raft [14 points]
Consider a system of 5 processes, { P1, P2, P3, P4, P5 }, implementing the Raft’s algorithm for
leader election. The one-way delay between each process is specified in the figure below.
Assume that processing times can be ignored. Each of the question parts below assumes an
independent scenario.
(a) (1 point) Which server is the most likely to be elected leader in any term? No
justification is necessary.
(b) (4 points) Suppose P1 is the leader in term 1. It sends its last heartbeat at time 0 and
then fails. Suppose, upon receiving the heartbeat, P2, P3, P4, and P5 set their timeout
values to 50, 75, 100, and 150 ms, respectively. Who will each process vote for as the
leader in term 2?
(c) (2 points) Suppose now that P2, P3, P4, P5 set their timeout values to 150, 100, 75,
and 50 ms, respectively. Who will each process vote for as the leader in term 2?
(d) (2 points) Consider the processes logs below, where the number n denotes events
logged in term n. Order the servers from the least up-to-date to the most up-to-date.
P1 1, 1, 1, 2, 2, 3, 3, 6
P2 1, 1, 1, 2, 2, 3, 3, 3, 4
P3 1, 1, 1, 2, 2, 3, 3, 3, 4, 4
P4 1, 1, 1, 2, 2, 3, 3, 6, 6
P5 1, 1, 1, 2, 2, 3, 3, 3, 4, 5