THE ENSEMBLE DISTRIBUTED COMMUNICATION SYSTEM

overview
general
roadmap
distribution
documentation
publications
mailing list
CVS
people
performance
links
news
Ensemble is the next generation of the Horus group communication toolkit. Developed at Cornell University, as well as at the Hebrew University of Jerusalem.

Language support

The current distribution provides support for applications developed in ML, C, C++, and Java.
  • ML: Ensemble is implemented in the Objective Caml programming language (a dialect of ML). The use of ML supports a variety of optimizations that enable Ensemble to achieve communication latencies an order of magnitude faster than Horus (some of these optimizations are still under research)
  • Native C interface. Since version 1.31, the system includes a native C interface whereby an application can send io-vectors directly to the network. Received message are copied directly into user buffers. This facilitates a C interface that has the same performance as the ML interface
  • C++: Maestro Group Tools provide an object-oriented interface to Ensemble.
  • Native Java interface. Since version 1.38, the system includes native Java interface. This allows Java applications to tap the power of Ensemble without having to step out of the Java virtual machine. Preliminary performance assessments show good latency and throughput.

Building applications with Ensemble

For an application builder, Ensemble provides a library of protocols that can be used for quickly building complex distributed applications. An application registers 10 or so event handlers with Ensemble, and then the Ensemble protocols handle the details of reliably sending and receiving messages, transferring state, implementing security, detecting failures, and managing reconfigurations in the system.

A research tool

For a distributed systems researcher, Ensemble is a highly modular and reconfigurable toolkit. The high-level protocols provided to applications are really stacks of tiny protocol "layers." These protocol layers each implement several simple properties: they are composed to provide sets of high-level properties, such as total ordering, security, virtual synchrony, etc.... Individual layers can be modified or rebuilt to experiment with new properties or change the performance characteristics of the system. This makes Ensemble a very flexible platform on which to do research.

Ensemble support questions to Alon Kama
Last modified: Wed Feb 9 22:50:00 Jerusalem Daylight Time 2005