Session-Based Fault-Tolerant Design Patterns



Despite offering reliability against dropped and reordered packets, the widely adopted Transmission Control Protocol (TCP) provides nearly no recovery options for long-term network outages.
When the network fails, developers must rollback the application to some coherent state on their own using error-prone solutions. Overcoming this limitation is, therefore, a deeply investigated and challenging problem. Existing solutions range from transport-layer to application-layer protocols, including additions to TCP, usually transparent to the application. None of these solutions is perfect for the task, because they all impact TCP's simplicity, performance or ubiquity, if not all.

To avoid these shortcomings, we contain TCP connection crashes inside a single session layer exposed as a sockets interface. Based on this interface, we create a blocking and a non-blocking fault-tolerant design pattern. We explore the blocking design in an open source File Transfer Protocol (FTP) server and perform a thorough evaluation of performance, complexity and overhead of both designs. Our results show that using one of the patterns to tolerate TCP connection crashes, in new or existing applications, involves a very limited effort and negligible penalties.


TCP, Connection Failure, Fault-Tolerance, Session Layer, Design Pattern


Fault-Tolerance in Distributed Systems

Related Project

iCIS - Intelligent Computing in the Internet of Services


The 20th International Conference on Parallel and Distributed Systems (ICPADS 2014), December 2014


Cited by

No citations found