Abstractions of components of a distributed system to simulate implementations of distributed algorithms.