CISUC

Session-Based Fault-Tolerant Design Patterns

Authors

Abstract

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.

Keywords

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

Subject

Fault-Tolerance in Distributed Systems

Related Project

iCIS - Intelligent Computing in the Internet of Services

Conference

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

DOI


Cited by

No citations found