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.