After a poke and a prod from someone else here about this delay
algorithm being used for timeouts, having that default to 0 doesn't seem
like it would be appropriate either as it could severely hamper network
connectivity in legitimate timeout cases.

It seems like MS' TCP stack seems to think a RST is the same as a
timeout.  argh!!

Andy

Jess Holle wrote:
> I just set this parameter to 0 and the issue went away entirely.
>
> Good catch, Ruediger!  Thank you -- and all who helped on this thread!
>
> It would appear that Microsoft's documentation slipped a decimal place
> somewhere as it would appear there is about 0.3 second delay on the
> initial retry and about a 0.6 second on the second -- resulting in
> about a 1 second overall delay when other overhead/latency is included.
>
> I don't see a way to reduce this delay and overall concur with Andy
> that this parameter should be 0 by all rights.  Any thoughts?
>
> --
> Jess Holle
>
> Andy Wang wrote:
>> Ruediger Pluem wrote:
>>>>>
>>>>> According to the Microsoft
>>>>> (http://support.microsoft.com/default.aspx/kb/314053)
>>>>>
>>>>> TcpMaxConnectRetransmissions
>>>>> Key: Tcpip\Parameters
>>>>> Value Type: REG_DWORD - Number
>>>>> Valid Range: 0 - 0xFFFFFFFF
>>>>> Default: 2
>>>>> Description: This parameter determines the number of times that TCP
>>>>> retransmits a connect request (SYN) before aborting the attempt. The
>>>>> retransmission timeout is doubled with each successive retransmission
>>>>> in a particular connect attempt. The initial timeout value is three
>>>>> seconds.
>>>>>
>>>>>
>>>>> So, looks like with default of 2 retransmits there is at least 9
>>>>> second delay.
>>>>>       
>>>> I thought the problem was with local connects to a port, to which no
>>>> process listens to. In this case the OS should immediately sending a RST
>>>> (reset) and the client should not resend the SYN. I expect this
>>>> TcpMaxConnectRetransmissions to be used in the case, were the remote
>>>> server doesn't send any answer (neither RST nor SYN/ACK) and the client
>>>> needs to retry the connection establishment after some timeout. That
>>>> shouldn't be the case here, because the local system should always be
>>>> able to send a RST if nothing is listening on the port.
>>>>
>>>> Except there's a local firewall with packet drop coming into the game
>>>> (or name resolution timeouts, or ...).
>>>>     
>>>
>>> Exactly my understanding of the problem. So I see no use in 
>>> TcpMaxConnectRetransmissions
>>> for this case.
>>>
>>> Regards
>>>
>>> RĂ¼diger
>>>
>>>
>>>   
>> Looks like it might be the retry issue:
>>    3963 13.831213   source         destination         TCP      1230
>> > 2608 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
>>    4087 14.280717   source         destination         TCP      2608
>> > 1230 [SYN] Seq=0 Win=65535 Len=0 MSS=1460
>>    4088 14.280735   source         destination         TCP      1230
>> > 2608 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
>>    4238 14.827581   source         destination         TCP      2608
>> > 1230 [SYN] Seq=0 Win=65535 Len=0 MSS=1460
>>    4239 14.827603   source         destination         TCP      1230
>> > 2608 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
>>
>>
>> The RSTs occur remotely and Windows retries twice.
>>
>> 1428    4.025656    unixsource     destination    TCP    57864 > 1230
>> [SYN] Seq=0 Win=32768 Len=0 MSS=1460 WS=0
>> 1429    4.025674    unixsource     destination    TCP    1230 > 57864
>> [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
>>
>> That's the same exchange from an HP-UX source to a linux destination.
>>
>> I'm assuming that windows pulls the same crap for localhost traffic
>> even though we can't capture it to prove the case.  Oh the joys of
>> TCP/IP troubleshooting on Windows :)
>>
>> Andy
>>
>

Reply via email to