Transparent TCP Connection Failover 2003 IEEE Dependable Systems and Networks UC Department of Electrical and Computer Engineering R. R. Koch, S. Hortikar, L. E. Moser, P. M. Melliar-Smith
Outline Introduction Structure Loss of messages Failure of servers Connections Measurements Conclusion
Introduction The failover is achieved by only modifying the server’s TCP/IP stack. One new sublayer “Bridge” is inserted between TCP layer and IP layer. TCP Bridge IP PrimarySecondary Client router TCP Bridge IP
Structure Requirements of connection failover : Secondary server must have a copy of all TCP segments that : Client Primary, acknowledged Primary Client, not acknowledged Sequence numbers must be synchronized. Get offset of sequence numbers setting by Primary and Secondary servers. Offset = Pseq – Sseq
TCP IP P S Client router TCP IP Promiscuous mode Dest. P->S Dest. C->P C P output queue S output queue Application P’s bridge sends out data only when it receives those matching data from S.
Loss of messages “C (P,S)” or “P C”, segment m with Ack (k) loss : Sends segment k immediately. S P, segment m loss Retransmission of S is received by P’s bridge first. Send it immediately. (P send m twice) Retransmission of P is received by P’s bridge first. Discard the copy of P’s retransmission, waiting until receiving S’s retransmission.
Failure of servers Primary server failed: Tell the secondary server bridge to stop sending TCP segments. Secondary server : Disable Promiscuous receive mode. Disable Address translation. Take over the IP address of Primary server.
Secondary server failed : Primary server do: Remove all data from the primary server’s queue, place them into new segment to be sent. Primary’s Bridge routes all incoming TCP segment directly to TCP layer. Continue to synchronize segment numbers.
Connections Start connections Three-way handshake Connection termination Four-way handshake The primary’s bridge remains active as long as the connection is not fully closed.
Measurements Server : FreeBSD 4.4 lite kernel 566MHz PIII Celeron PC Client Mandrake 7.2 Linux 1GHz PIII PC