[CLUE-Tech] Linux TCP sockets SYN -> long delay waiting for tcp_syn_retries
Jim Ockers
ockers at ockers.net
Wed Oct 6 23:19:26 MDT 2004
Hi Dave,
David Anselmi wrote:
>
> > The VSAT mangles the RST to strip off the ACK. Thanks again for the
> > clue. We are going to complain to the VSAT provider about this, and
> > hopefully they can fix it.
>
> If the server sends the correct RST/ACK and something in between mangles
> it, does the mangled packet have the right ACK number in it? Does it
> have the right IP and TCP checksums? Might give a clue whether this is
> broken gear or a broken implementation.
The connection is to a closed port, so I think there is no sequence
number. The SYN sent packets seemed to have a seq of 0, and the I
didn't observe a seq on the RST packets that came back.
The TCP checksums were all good in every packet I looked at.
I was looking at the kernel's source code in net/ipv4/tcp_input.c and
found this:
static int tcp_rcv_synsent_state_process(...)
{ ...
/* No ACK in the segment */
if (th->rst) {
/* rfc793:
* "If the RST bit is set
*
* Otherwise (no ACK) drop the segment and return."
*/
goto discard_and_undo;
}
...
}
That tells me that the Linux kernel is correctly ignoring the RST
packets if the ACK bit is not set, per the RFC.
More information about the clue-tech
mailing list