Co-Designing Data Center Networks and Distributed Systems
Distributed systems are traditionally designed independently from the underlying network, making worst-case assumptions about its behavior. Such an approach is well-suited for the Internet, where one cannot predict what paths messages might take or what might happen to them along the way. However, many distributed applications are today deployed in data centers, where the network is more reliable, predictable, and extensible. We argue that in these environments, it is possible to co-design distributed systems with their network layer, and doing so can offer substantial benefits. We are applying this approach to improve the robustness and efficiency of state machine replication, the standard mechanism for keeping critical data center services highly available.