Re: 2.1.130UP and network connections

Mark Hahn (hahn@coffee.psychology.mcmaster.ca)
Thu, 3 Dec 1998 13:38:37 -0500 (EST)


I reported a problem with these symptoms about a month ago,
and included tcpdump logs for Alan & co. turns out that some
widely-used stack out there sends syn-less acks in response to syn,
presumably when under load. examples of this include quote.yahoo.com,
necxdirect.necx.com and other indispensible sites ;)

2.1 resets the connection when this happens, but dropping the packet
is the right thing to do. with the following patch, it looks like this:

0.620429 me.1753 > necxdirect.necx.com.http: S 255782508:255782508(0)
win 32120 <mss 1460,sackOK,timestamp 9460369[|tcp]> (DF)
0.713838 necxdirect.necx.com.http > me.1753: . ack 255782509
win 65160 <nop,nop,timestamp 190827742 9460069> (DF)
0.233134 necxdirect.necx.com.http > me.1753: S 1457983341:1457983341(0)
ack 255782509 win 65160
<nop,nop,timestamp 190827794 9460069,nop,[|tcp]> (DF)
0.233201 me.1753 > necxdirect.necx.com.http: . ack 1 win 32120
<nop,nop,timestamp 9460430 190827794> (DF)

--- linux-2.1.131/net/ipv4/tcp_input.c Wed Nov 18 12:06:05 1998
+++ linux/net/ipv4/tcp_input.c Thu Dec 3 12:28:04 1998
@@ -2056,13 +2056,11 @@
}

if(!th->syn) {
- /* A valid ack from a different connection
- * start. Shouldn't happen but cover it.
+ /* Some stacks apparently send an syn-less
+ * ack in response to a syn under load.
+ * We used to reset, but dropping is correct.
*/
- sk->err = ECONNRESET;
- sk->state_change(sk);
- tcp_statistics.TcpAttemptFails++;
- return 1;
+ goto discard;
}

/* Ok.. it's good. Set up sequence numbers and

regards, mark hahn.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/