Possible projects on JavaGroups

Below is a selection of projects related to JavaGroups. Each project can be done by a 1-4 person group. Please contact me if you are interested, or need more information.

Token-passing total order protocol

Implement a total order protocol based on token-passing. Algorithms described in "The Totem Single-Ring Ordering and Membership Protocol" (Amir, Moser, Melliar-Smith, Agarwal, Cirafella)

Sequencer-based total order protocol (in work)

Based on the sequencer algorithm: any member that wants to send a multicast message to the group, contacts a coordinator (or sequencer). The coordinator multicasts on behalf of that member, guaranteeing ordered messages (receivers have to provide FIFO ordering on coordinator's messages). A special protocol has to be executed when the sequencer crashes (will be detected by failure detection layer, FD).

Flow control protocol

Based on static or dynamic 'sliding window's for receivers and senders. Receiver sends message to receiver when window is full and sends another message when window was emptied below a certain threshold. Project involves studying literature on flow-control (e.g. TCP).

Causal order protocol

Implemented using vector clocks. Description in Tanenbaum (Operating Systems) and "Lightweight Causal and Atomic Group Multicast" (Birman, Schiper, Stevenson)

Uniform delivery protocol

Guarantees that - if a message is delivered at 1 non-faulty member - it will eventually be delivered at all non-faulty members. Partially implemented (JavaGroups/JavaStack/Protocols/SAFE.java)

Primary View layer

Keeps track of primary views in the event of partitions. Only members in primary views can make progress (i.e., modify their state etc.) When views of the same group merge, the state of the pimary view is accepted by all non-primary members. "Building Reliable Interoperable Distributed Objects with the Maestro Tools" [Vaysburd, 1998] describes one possible approach to implement primary partitions.

Message Stability protocol (SAFE, STABLE)

Garbage collects messages that have been received by all members (periodically).

Pbcast protocol

Implementation of PBCAST protocol as defined by Birman/Hayden and Birman/Xiao/Hayden et al.

Piggyback protocol

Combines multiple messages into a single one. Collects messages within a certain time period. Sends a combined message when time period is over and messages are available (period ~ 10ms). Important messages are sent right away (possibly together with others).

Debugging protocol and GUI frontend

Debugging/trace protocol wrapped around the layer(s) to be inspected. This could be 1 single layer, or an entire stack. GUI displays messages traveling up/down the stack. 'Step mode' enables single stepping through protocol stack. Filters define what types of events/messages are displayed. Possibility to set breakpoint, based on logical assertion. Possibility to reorder events, delete events, or inject new events into the stack.


Extension of TUNNEL layer

The TUNNEL layer allows traffic to pass through firewalls. A JRouter process is started outside the firewall. Every channel has a TUNNEL layer as bottommost layer, replacing the UDP layer. It is configured with the TCP address of the JRouter (parameters of TUNNEL). When started, TUNNEL established a TCP connection to JRouter, over which it sends all outgoing traffic. Incoming traffic is also send via this connection by JRouter.
The problem with such a solution is that JRouter is a centralized single point of failure. This project would modifyJRouter as follows: the connection between a channel behind the firewall and JRouter outside the firewall is via TCP, but JRouter uses IP multicast to re-cast outgoing traffic to its destination channels. When incoming IP multicasts are received, they are sent via TCP to the channel. Thus, every firewall would use 1 JRouter for tunneling, and then re-multicasting the outgoing traffic.

Testing of network partitions on NetSim

Design and implementation of an example network. Simulate partitioning of the network and its consequences on JavaGroups' GMS layer.

Extension of RMI with group communication (in work)