Assignment 2: Totally Ordered Multicast
Due: April 7 2021
This is only for graduate students taking 534 or 510. Undergrad students enrolled in 434 can submit this as extra credit.
1 Summary
The totally ordered multicast algorithm is the "hero" of this course, and we will use it in many different contexts. To make sure that you really understand it, this assignment asks you to implement it.
This is a fairly open-ended assignment, but you must carefully document all your assumptions.
2 Details
You need to implement the totally ordered multicast "on top" of a lower-layer messaging interface such as sockets or ZeroMQ. You can assume that your layer intercepts all incoming and outgoing network traffic, but must be able to deal with both ordered-multicasts and regular unordered point-to-point messages.
3 Hints and Design Decisions
- Think of this as a protocol on top of the transport layer
- What is the format/layout of the messages?
- You can assume all network sends are either
send_unordered(msg, destination)
orsend_tom(msg, recipients)
- How should you handle receiving both multicast and point-to-point messages?
4 What to Submit
You must submit your code, examples, test-cases, and a report.
Think carefully of how you can test the code for correctness. These are a major evaluation component. The test cases should ideally consist of multiple processes with random delays in sending/responding to messages, so that the correctess of the implementation is tested. Atleast one testcase should show that the total order of messages is different from real-time order.
The report should have describe the pseudo-code of the algorithm implementation, design details, and some experimental evaluation.
Component | Weight |
---|---|
Working code | 50% |
Test-cases | 30% |
Report | 20% |