Towards a Formal Specification of the Spread Group Communication System
Mark-Oliver Stehr,
Carolyn Talcott, and
Grit Denker
(in collaboration with Yair Amir)
This work is supported by:
the DARPA FTN Project
Composable Formal Models for High-Assurance Fault Tolerant Networks and
the ONR MURI Project CONTESSA.
Keywords: Group Communication System, Spread, Extended Virtual
Synchrony Semantics, Failure Atomicity, Formal Specification, Secure
Group Communication
The Spread group communication system (see Spread web page) emerged from the
work on Transis and Totem and has been designed to cope with node
failure and network partitions. To this end the semantics of extended
virtual synchrony (also called failure atomicity) has been extended to
deal with the case of network partitions. In addition, Spread provides
different levels of service with different reliability and ordering
gurantees: Messages can be reliable, fifo, causally ordered, totally
ordered (also called agreed), or safe, where the later means that
messages are only delivered if it is known that everybody in the group
has actually received it. Stronger properties such as virtual
synchrony and security are achieved at higher layers by Flush Spread
and Secure Spread (see Secure
Spread web page). The later is built upon the Cliques toolkit
(see Cliques web page )
which we have specified as an independent component (see this link).
Our effort to develop a formal specification of Spread is based on the
references below, the Spread source code, and discussions with the
Spread team. An important goal is to obtain a mathematically
satisfactory and conceise description that abstracts from
implementation specific aspects and covers the most general behaviour
that an application of Spread can observe. All this is done in a
modular way so that different layers can be specified independently
and composed at the specification level.
The current state of our specification is available below, but please
note that it is a snapshot of ongoing work and still incomplete
regarding various aspects.
In the CONTESSA
project this specification is used as a basis for our work on Adaptive Group
Communication.
Relevant References:
- Yair Amir: Replication Using Group Communication Over a Partitioned
Network, Ph.D. thesis, Hebrew University of Jerusalem, 1995. Available
here .
- Louise E. Moser, Yair Amir, P. Michael Melliar-Smith and Deborah
A. Agarwal: Extended Virtual Synchrony The 14th IEEE International
Conference on Distributed Computing Systems (IC-DCS), pages 56-65,
June 1994. Available here
.
- John Schultz: Partitionable Virtual Synchrony Using Extended Virtual
Synchrony, Masters Thesis, Masters Thesis, Johns Hopkins University,
2001. Available
here .
- Yair Amir and Jonathan Stanton: The Spread Wide Area Group
Communication System, Technical Report CNDS-98-4. Available here
.
- Y. Amir, Y. Kim, C. Nita-Rotaru, J. Schultz, J. Stanton,
G. Tsudik: Secure Group Communication Using Robust Contributory Key
Agreement. IEEE Transactions on Parallel and Distributed Systems
archive, pp. 468 - 480, 15(5), IEEE Press, 2004.
- S. Gutierrez-Nolasco, N. Venkatasubramanian, M.-O. Stehr, and
C. Talcott: Exploring Adaptability of Secure Group Communication using
Formal Prototyping Techniques. In Proceedings of the 3rd Workshop on
Reflective and Adaptive Middleware (RM2004). October 19, 2004,
Toronto, Ontario, Canada. To appear in ACM Digital Library. Paper
available in ps and pdf. Extended version
available here.
Presentations:
- Formal Specification of Group Communication Middleware, Workshop
on Context Sensitive Systems Assurance (Contessa'03), April 1, 2003,
Philadelphia. Slides available here:
ps
pdf.
- Composable Formal Models for High-Assurance Fault Tolerance
Networks, FTN PI Meeting, July 21-23,
2003, Honolulu, Hawaii. Slides available here:
ps
pdf.
The Formal Specification in Maude 2.0 (available
here) can be found
here.
This package contains the
following files:
- README:
instructions on how to run the examples
- Common data types and operations
- Spread configuration layer:
- Spread group layer:
- Flush Spread layer:
- Secure Spread layer:
- Load all layers (Spread, Flush Spread, and Secure Spread):
- Controlling the Execution:
- Examples using Spread configuration layer:
- Examples using Spread group layer:
- Examples using Spread flush layer:
- Examples using Spread secure layer:
Supplementary documentation including proofs of GCS properties can be found
here.
This package contains the
following files: