|
In passive replication most of the state is inferred by the backup server
in case of failure, thus reducing the number of synchronizations and
the cost of keeping backup connections. In a typical server behaviour
where almost all of the traffic is from the server to the client
the synchronizarion can be almost free.
In case of failure the backup server send a packet which is out of the send window of
the client. According to the TCP standard, the client must answer with an ack, which has
most of the necessary data to recover the connection, that is, the correct sequence
numbers and the window size. All the other data (congestion window, round trip time,...)
can be recomputed over time. By not needing to keep the backup server updated
every time a packet is sent, the synchronization costs are much lower.
As it can be seen in the next figure, only one synchronization is done at the begining of
the connection. After that, the backup server would use the information from the client
to recover the connection state.
This is not so easy when receiving, as the data received cannot be lost in case of server failure. The
only optimization possible is to defer sending acks as much as possible. By not sending acks the client
will keep the data in its buffers in case a retransmission is needed. However, the overall effect
is much smaller than in the previous case.
|