Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Jul 2009 15:57:29 +0200
From:      <Hartmut.Brandt@dlr.de>
To:        <net@freebsd.org>
Subject:   TCP RST question
Message-ID:  <E086A96846579E4F932C168218DB1E550243BA@exbe5.intra.dlr.de>

next in thread | raw e-mail | index | archive | help
Hi all,

I'm looking at our TCP stack and found a change that was introduced with
the syncache. The original BSD code did send an RST segment when the
connection timed out in SYN-RECEIVED. The TCP would retransmit the
SYN+ACK several times and then give up and RST the peer.

With syncache, however, our TCP doesn't send the RST anymore. It just
silently discards local state.

So the question is whether TCP is supposed to RST or not. Looking at
RFC793 I found nothing useful. It talks about sending RSTs as response
to incoming segments and it looks like TCP is never supposed to give up
retransmitting. The state diagram has no line from SYN-RECEIVED to
CLOSED. Stevens, on the other hand, has this line and it is labeled
'send: RST'.

So the questions are:

 - is TCP supposed to send an RST when it times out in SYN-RECEIVED?
 - why was this changed (I suppose it is just one of the regressions
introduced with the syn-cache).

harti

NB: does anybody know a good mailing list where this kind of questions
can be discussed?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E086A96846579E4F932C168218DB1E550243BA>