Browse Prior Art Database

A proxy for intelligent failover of a stateful communication protocol.

IP.com Disclosure Number: IPCOM000010141D
Original Publication Date: 2002-Oct-25
Included in the Prior Art Database: 2002-Oct-25
Document File: 2 page(s) / 43K

Publishing Venue

IBM

Abstract

The intelligent proxy provides a mechanism for the assured once and once only delivery of messages by tolerating the failure of one or more servers which are front-ended by the proxy. The proxy caters for the messaging scenario where delivering a message from a client to the server has been initiated but not completed and message state exists on either the client, server or both when the server fails. This technology relies on the proxy being able to uniquely identify each client when it connects.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 50% of the total text.

Page 1 of 2

A proxy for intelligent failover of a stateful communication protocol.

Disclosed is a proxy for the intelligent failover of a stateful communication protocol .

The problem relates to a messaging scenario where a system must provide assured once and once only delivery of messages, and provide a highly available server function, which can tolerate the failure of a server.

     This must cater for the scenario where the process of delivering a message from a client to the server has been initiated but not completed and message state exists on either the client, server or both when the server fails.

     The problem can be solved in two ways depending on the functionality required. An "intelligent proxy" is introduced into the client-server architecture, in a manner described below.

     The architecture of the solution is as follows: two or more servers are front-ended by the "intelligent proxy". The IP address of the proxy is advertised as the IP address of the server to which the clients connect. When a client connects to the proxy, one of the back-end servers is selected as the nominated "home" server for that connection. This is the server to which pubished messages from the client will be delivered.

Solution 1

     For clients that are publishers but which are not also allowed to be subscribers, the high-availability function can be achieved in the following way. The "intelligent proxy" monitors the flow of packets between clients and servers, and is thus aware of any messages currently in transit between a particular publishing client and a server. In the event of the server failing, the proxy disconnects all clients that were connected to that server. When a client reconnects to the proxy, and as part of the initial protocol flows, uniquely identifies itself (to the server, but the proxy is able to see this information), the proxy checks an internal state table to determine whether or not the publishing client had any persistent (once-and-once-only) messages in transit when the server failed (which would mean that additional acknowledgements would need to be passed between client and server for this message to be successfully delivered). If the proxy determines that there were no persistent messages "in flight" at the time of the server failure, the proxy establishes a connection to an alternative server and thus creates a proxied connection from client to server, and the client can continue publishing. If there was one or more persistent messages in flight at the time of the failure, the proxy returns a "negative connection acknowledgement" to the client, and closes the client connection. It is assumed that the client will periodically retry the connection attempt, until the failed server recovers. The proxy then establishes a connection to the original server, and enables a proxied connec...