Check out the new USENIX Web site. next up previous
Next: Recursive Use of the Up: Reliable Multicast: an Example Previous: Reliable Multicast: an Example

Overview of the Protocol.

The protocol starts when operation rmcast() is invoked on some initiator object aRMCObjecttex2html_wrap_inline869, passing it a message m and a destination set destSet. In this operation, context aRMCObjecttex2html_wrap_inline869 first creates a strategy aRMCAlgotex2html_wrap_inline869, and then invokes operation rmcast() on it, with the arguments it just received. Strategy aRMCAlgotex2html_wrap_inline869 builds message m, containing both m and destSet. It then issues a reliable point-to-point communication with each protocol object referenced in destSet; in order to do this, strategy aRMCAlgotex2html_wrap_inline869 relies on inherited service rSend() of context aRMCObjecttex2html_wrap_inline869. When message m reaches aRMCObjecttex2html_wrap_inline881, one of the target objects, operation rDeliver() is triggered by the protocol. Operation rDeliver() detects that m is a multicast message and forwards it to aRMCAlgotex2html_wrap_inline881, the strategy in charge of that particular execution of the reliable multicast protocol. When aRMCAlgotex2html_wrap_inline881 receives m for the first time, it re-issues a reliable point-to-point communication with each protocol object referenced in destSet (extracted from m), and then invokes rmDeliver() on its context aRMCObjecttex2html_wrap_inline881, passing it message m (also extracted from m). This retransmission scheme is necessary because of the agreement property of the reliable multicast primitive, which requires that either all correct objects in destSet or none receive message m [2].

Wed May 14 17:28:46 MET DST 1997