Perpetual: Byzantine Fault Tolerance for Federated Distributed Applications
Sajeeva L. Pallemulle · 2007
Modern distributed applications rely upon the function-ality of services from multiple providers. Mission-critical services, possibly shared by multiple applications, must be replicated to guarantee correct execution and availabil-ity in spite of arbitrary (Byzantine) faults. Furthermore, shared services must enforce strict fault isolation policies to prevent cascading failures across organizational and ap-plication boundaries. Most existing protocols for Byzan-tine fault-tolerant execution do not support interoperabil-ity between replicated services while others provide poor fault isolation. Moreover, existing protocols place imprac-tical limitations on application development by disallowing long-running threads of computation, asynchronous opera-tion invocation, and asynchronous request processing. We present Perpetual, a protocol that facilitates unre-stricted interoperability between replicated services while enforcing strict fault isolation criteria. Perpetual supports both asynchronous operation invocation and asynchronous request processing. Perpetual also supports long-running threads of computation, enabling Byzantine fault-tolerant execution of services that carry out active computations. We present performance evaluations demonstrating a moderate overhead due to replication.