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.
-
Possibility to plug in 'test code' that verifies that a prot. layer is
correct.
-
Clearly defined interface between GUI and debugging layer.
-
Goal: to visualize message sending/reception/delivery in a prot. 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)
-
Study architecture / implementation of RMI. Use SUN's source code or Ninja
(Berkeley).
-
Look at active and passive replication.
-
Show alternatives (document). Look at intrusive and non-intrusive designs
(transparency). Design solution and implement it.
-
Demo based on modified RMI