JGroups is a toolkit for reliable multicast communication. It can be used to create groups of processes whose members can send messages to each other.
The most powerful feature of JGroups is its flexible protocol stack, which allows developers to adapt it to exactly match their application requirements and network characteristics. (http://www.jgroups.org/)