[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