Because failures are part of the real world, there is the need for reliable distributed protocols, e.g., consensus, atomic commitment, total order multicast. Reliable distributed protocols are challenging to implement because they imply complex relationships with other underlying protocols. For example, both the atomic commitment and the total order multicast rely on consensus, while the latter is itself based on failure detections, on reliable point-to-point communications, and on reliable multicasts. In turn, reliable multicasts can be built on top of reliable point-to-point communications. Figure 1 (a) presents an overview of some distributed protocol dependencies.
Figure 1: Protocols and protocol classes in BAST
In BAST, protocol classes are organized into a single inheritance
hierarchy which follows protocol dependencies, as pictured in
Figure 1 (b). Each protocol class implements only one
protocol, but instances of some Object class can execute any
protocol inherited from
Object's superclasses. Protocol objects
are able to run several executions of identical and/or distinct protocols
concurrently.