Previous Contents

C   Bimodal Multicast (by Ken Birman, Mark Hayden, and Zhen Xiao)

There are many methods for making a multicast protocol reliable. The majority protocols in Ensemble aim to provide virtually synchronous properties. However, these properties come with a price in terms of the possibility of unstable or unpredictable performance under stress and limited scalability. This is unacceptable to some applications where system stability and scalability are viewed as inextricable from other aspects of reliability.

This section describes a bimodal multicast protocol that not only has much better scalability properties but also provides predictable reliability even under highly perturbed conditions. This work is described in the Bimodal Multicast paper (ncstrl.cornell/TR98-1683) by Ken Birman, Mark Hayden, Oznur Ozkasap, Zhen Xiao, Mihai Budiu and Yaron Minsky (this documentation is based on that paper). The original version of the protocol was implemented by Mark Hayden. It was reimplemented by Zhen Xiao with many new optimizations and is described in the ZBCAST layer. In the remainder of the section, we will refer to our new protocol as Zbcast.

C.1   Protocol description

Zbcast protocol consists of two stages:

C.2   Usage

To use Zbcast protocol, specify the ``Zbcast'' property on the command line as follows(using perf demo as an example):

  perf -prog 1-n -add_prop Zbcast -groupd

This assumes that IP-multicast is available in the underlying network. Remember to set the related environment variables:

ENS_DEERING_PORT=38350
ENS_MODES=Deering:UDP

Otherwise the Gcast layer needs be linked into the stack:

  perf -prog 1-n -add_prop Zbcast -add_prop Gcast -groupd

Note that in both cases we need groupd to track group membership information. This is the state of art of the current implementation and is not something intrinsic to the protocol. If sufficient needs arise, we are going to remove this restriction.

Message losses are reported to the application via Up(ELostMessage) event. The application can either ignore those messages (i.e. multimedia applications) or leave the process groups and then rejoin them, triggering state transfer.
Previous Contents