What i wan to know how much time i have on different systems , if i
decide to migrate a server which has client connected to it and they
should not know about this. I think the answer is dependent upon
1: Platform (linux , BSD, Solaris, Windows)
2: Particular implementation (say linux kernel 2.6 TCP etc)
3: system wide settings related to TCP
4: The state connected client is .
Now please correct me if i am wrong in any of these statements.
1: I believe the TCP as a protocol just suggests few things but doesn't
enforce any specific value on implementation. Different system uses
and have used different values for this .So may i know what are the
values on these platforms. If i reestablish those connections ( by some
way. How ?? keeping this part aside of this discussion as it takes it
away from main question.
2: Things may be changed in implementations on single platform from
time to time . Has this really happened with TCP implementations and
mainly time out values ??
3: At least on linux , we can change these value using proc interface
and it will affect lot of important TCP parameters like
tcp_keepalive_time,tcp_retries1, tcp_retries2
,tcp_syn_retries,tcp_synack_retries . I understand that changes in
these values will change answer my question but isn't it the case ,
that most of the systems will use , default values ??
4: Also , TCP timeout value seem to be different in different TCP
states. In active connect , syn timeout , fin timeout, normal data
transfer timeout are different.
Considering all of these issues , still how much time can we think of
we have in our hand , we have to migrate these connections
transparently.(please assume i will do it some way)
on linux tcp_syn_retries shows default timeout value 180 sec = 3
minutes
same for tcp_synack_retries = 3 minutes
for tcp_fin_timeout = 60 sec 1 minute.
for normal data packet = RTO = some complex measurements ?? But what
is minimum value here ??
I guess for tcp_fin_timeout being so small, i may discard it . Anyway
it is not going to bother about state after getting timeout.
So minimum of timeout value for data transfer and default for
syn/synack timeout i.e. 3 minutes , can i consider this (min val ) as
the time that i have in hand before client TCP notices anything
happening at server side ??
What is minimum timeout value that TCP can have with all default
settings in linux 2.6 and 2.4 kernel ,
after which TCP can start thinking something is wrong at other end ??
And how this is calculated in linux.
Thanks ,
Rohit
|