On fate sharing and end-to-end reliability in proxy based networking systems

Adrian Segall, Pravin Bhagwat, David Maltz
In the Internet architecture, state associated with a transport layer connection is maintained only at the connection end-points. So long as IP can find a path between the two end-points, the transport layer connection can stay alive. This property known as fate-sharing is violated when a proxy is interposed in the middle of the communication path. The proxy, in most networking 
systems, acts as a transport layer broker between the two end-points. If the proxy fails, communication between the two end-points is also disrupted. 

We describe a protocol called MSOCKS+ for restoring fate-sharing property in proxy based systems. MSOCKS+ operates at the session layer between the client and the proxy and presents 
unix sockets style interface to the higher layer. An MSOCKS+ socket remains connected to the server even if the client moves or the proxy fails. The key idea is to maintain a copy of the proxy 
state at the client side, and use it to reconstruct the state at the proxy following a crash or host movement. The proposed protocol ensures reliable, in-sequence delivery property of TCP over all 
scenarios of exceptions resulting from mobility, including repeated incomplete reconnections, followed by a successful one. It also provides the mechanism for recovery from proxy failure and hot-replacement of proxies. Algorithm description and validation proofs of its properties are also provided. 
 

Paper (postscript)