The purpose of this section is to sketch the principles and issues related to implementing the multicast communication protocols and relate those principles and issues to the middleware that relies on the protocols.
At this point, you should be able to explain how local multicast communication provided by hardware is extended to global scale through addressing and routing and explain how the use of multicast differs from the use of multiple unicasts in this context.
You should understand how the approaches used to cope with communication failures are extended from unicast to multicast.
You should be able to define the properties of various message ordering guarantees and outline both the approaches used to provide such guarantees and the applications likely to require such guarantees.
Questions.Â
The sender initiated and receiver initiated error recovery schemes differ in which of the two communicating sides is responsible for keeping track of delivered packets. Explain how this difference impacts the management of memory used to store packets.
The use of positive acknowledgements in multicast can lead to network congestion problems due to excessive acknowledgement traffic, also termed as ACK implosion. Outline scenarios in which this problem occurs and approaches used to remedy the problem while preserving positive acknowledgements.
The use of negative acknowledgements in multicast can lead to network congestion problems due to excessive acknowledgement traffic, also termed as NAK implosion. Outline scenarios in which this problem occurs and approaches used to remedy the problem while preserving negative acknowledgements.
Define the source ordering guarantees in the context of multicast communication and explain in what situations and why this ordering is useful.
Define the causal ordering guarantees in the context of multicast communication and explain in what situations and why this ordering is useful.
Define the total ordering guarantees in the context of multicast communication and explain in what situations and why this ordering is useful.
In a form of algorithms used by the senders and the receivers, sketch the approach used to achieve source ordering in multicast communication.
In a form of algorithms used by the senders and the receivers, sketch the approach used to achieve causal ordering in multicast communication. Use of a distributed algorithm is considered better than use of a centralized one.
In a form of algorithms used by the senders and the receivers, sketch the approach used to achieve total ordering in multicast communication. Use of a distributed algorithm is considered better than use of a centralized one.
Stronger ordering does not necessarily require more complex logical clock.
The Lamport Clock is a logical clock used in some distributed algorithms. Outline the algorithm used to calculate the Lamport Clock timestamp and explain what are the useful properties of the timestamp.
The Vector Clock is a logical clock used in some distributed algorithms. Outline the algorithm used to calculate the Vector Clock timestamp and explain what are the useful properties of the timestamp.
Present a suitable example of a multicast communication in which sender ordering is violated. Explain why the ordering is violated. Use a notation in which S(A,X->B,C) denotes node A sending message X to nodes B and C and R(A,X) denotes node A receiving message X.
Present a suitable example of a multicast communication in which causal ordering is violated, but less strict ordering guarantees are preserved. Explain why the ordering is violated. Use a notation in which S(A,X->B,C) denotes node A sending message X to nodes B and C and R(A,X) denotes node A receiving message X.
Present a suitable example of a multicast communication in which total ordering is violated, but less strict ordering guarantees are preserved. Explain why the ordering is violated. Use a notation in which S(A,X->B,C) denotes node A sending message X to nodes B and C and R(A,X) denotes node A receiving message X.
Exercises.Â
NavrhnÄ›te pĹ™enosovĂ˝ protokol, kterĂ˝ bude zaruÄŤovat spolehlivĂ© doruÄŤovánĂ zpráv od jednoho odesĂlatele vĂce pĹ™ĂjemcĹŻm. Váš návrh by mÄ›l definovat tyto funkce:
void ReliableSend (tMsg *pMessage, tAddrList *pTargetList); // OdeslánĂ zprávy, blokuje do pĹ™ijetĂ zprávy všemi pĹ™Ăjemci void ReliableReceive (tMsg &*pMessage, tAddr &*pSource); // PĹ™Ăjem zprávy, blokuje do pĹ™ijetĂ zprávy, zaruÄŤuje // právÄ› jeden pĹ™Ăjem nepoškozenĂ© odeslanĂ© zprávy
Váš návrh by mÄ›l pouĹľĂvat tyto funkce:
void UnreliableSend (tMsg *pMessage, tAddr *pTarget); // OdeslánĂ zprávy, neblokuje, nemusĂ odeslat void UnreliableReceive (tMsg &*pMessage, tAddr &*pSource, int iTimeout); // PĹ™Ăjem zprávy, blokuje do timeoutu, mĹŻĹľe pĹ™ijmout // poškozenou zprávu nebo tutéž zprávu vĂcekrát
Dále pĹ™edpokládejte existenci rozumnĂ˝ch funkcĂ pro manipulaci se zprávami jako je jejich vytvářenĂ a rušenĂ, nastavovánĂ a dotazovánĂ atributĹŻ pĹ™enášenĂ˝ch spolu s obsahem zprávy a podobnÄ› a existenci rozumnĂ˝ch funkcĂ pro manipulaci se seznamem adres jako je jeho procházenĂ.
ZadánĂ vyĹľaduje návrh protokolu pro spolehlivĂ˝ multicast nad nespolehlivĂ˝m unicastem, na rozdĂl od obvyklejšĂho návrhu spolehlivĂ©ho multicastu nad nespolehlivĂ˝m multicastem. VysvÄ›tlete, jakĂ˝ má toto omezenĂ vliv na vlastnosti vašeho návrhu.
For those unfamiliar with the particular programming language, note that the sending functions expect the message and the address as their inputs, but the receiving functions as their outputs.