paper

Implementing Fault-Tolerant Services Using the State Machine Approach: A Tutorial

  • Authors:

📜 Abstract

The state machine approach is a general method for implementing fault-tolerant services in distributed systems. This paper reviews the approach and describes protocols for two different failure models—Byzantine and fail stop. System reconfiguration techniques for removing faulty components and integrating repaired components are also discussed.

✨ Summary

The paper established a systematic formulation of state machine replication for fault-tolerant distributed services. Its central requirements—deterministic replicas, agreement on requests, and consistent request ordering—became a standard framework for reasoning about replicated services under fail-stop and Byzantine failures. The paper also addressed output voting, faulty clients, timing-based request generation, dynamic reconfiguration, and state transfer for repaired replicas. (cs.cornell.edu)

Subsequent research explicitly builds on this framework. Castro and Liskov’s Byzantine Fault-Tolerant Replication work describes its protocol as a form of state machine replication and applies the model to Byzantine-resilient services. (usenix.org) Later work on nondeterministic replicated applications used the paper as a reference while extending state machine replication beyond strictly deterministic execution. (usenix.org) The approach also informed practical systems research involving replicated virtual machines, cloud and container services, and modern replicated storage and coordination systems. (usenix.org)