Multicast communication

Group communication (multicasting) allows a process to send the same message to a group of processes. This is more than a notational convenience, as multicast operations can provide the programmer with delivery guarantees that are difficult to realise for the application programmer using ordinary unicast operations. We start the lecture with a review of the multicast operations provided in the internet protocol suite that provide the programmer with a basic unordered best effort delivery semantics, with are unsuitable for many purposes in distributed systems. This leads us to consider how one can implement more useful multicast operations that can e.g. guarantee delivery, or that messages are delivered in a specific order.

Literature

[DS] Chapter 4.5, 12.4

Exercises
  1. Design and sketch the code for an implementation of a distributed chatroom with the requirements:
    • A visitor can join the chat room
    • A visitor can send quotes to other visitors
    • A visitor can recieve quotes from other visitors
    • A visitor can quit the chat room
    • The chat room offers different discussion topics (only visitors with the same discussion topic can exchange messages)
    • What ordering and reliability requirements do you propose for exchange of messages and group-membership (topics) management ? How many users can you handle? What happens if a users machine crashes?

     

  2. DS 12.14, 12.22
  3. Consider a distributed shoot'm-up computer game where the state (eg. position of players and monsters) of the game is replicated at each players machine. Discuss the tradeoff between real-time requirements and requirements for event ordering and state-consistency. What kind of multi-cast do you want to use? Would it be different if you were implementing a distributed poker game instead? 
  4. Devise an algorithm for FIFO+TOTALLY ordered multicast, i.e messages must be delivered both according to TOTAL and FIFO-order