Messages in this thread Patch in this message | | | Subject | Re: TCP bug? hanging outgoing connections in 2.2.14 | From | Andi Kleen <> | Date | 17 Feb 2000 15:26:32 +0100 |
| |
jeremy@goop.org (Jeremy Fitzhardinge) writes: > 12:49:20.562071 gw.goop.org.1031 > csla.csl.sri.com.smtp: S > 1693701511:1693701511(0) win 32120 <mss 1460,sackOK,timestamp 22854 > 3[|tcp]> (DF) (ttl 64, id 4107) > 12:49:20.585798 csla.csl.sri.com.smtp > gw.goop.org.1031: S > 570048000:570048000(0) ack 1693701512 win 4096 (ttl 50, id 21364)
Very small window. That is not exactly normal.
Does it help if you turn the tcp options off ? (echo 0 > /proc/sys/net/ipv4/tcp_{window_scaling,sack,timestamps)
> 12:49:46.116687 gw.goop.org.1031 > csla.csl.sri.com.smtp: . ack 2 win 32696 > (DF) (ttl 64, id 4192)
Linux does window probing now. This means Linux decided that the window is far too small and it is better * to wait for a bigger one. The bigger one never comes.
Linux's small window handling in TCP could be certainly improved, although using a 4096 window on the internet looks rather bogus too. Could you try if this patch helps?
--- linux/net/ipv4/tcp_input.c-o Wed Feb 9 14:35:59 2000 +++ linux/net/ipv4/tcp_input.c Thu Feb 17 15:23:42 2000 @@ -2182,11 +2181,11 @@ /* RFC1323: The window in SYN & SYN/ACK segments is * never scaled. */ - tp->snd_wnd = htons(th->window); + tp->max_window = tp->snd_wnd = htons(th->window); tp->snd_wl1 = TCP_SKB_CB(skb)->seq; tp->snd_wl2 = TCP_SKB_CB(skb)->ack_seq; tp->fin_seq = TCP_SKB_CB(skb)->seq; - + tcp_set_state(sk, TCP_ESTABLISHED); tcp_parse_options(sk, th, tp, 0); > 12:49:46.118020 gw.goop.org.1031 > csla.csl.sri.com.smtp: F 1:1(0) ack 2 win > 32696 > (DF) (ttl 64, id 4193)
Now you killed it.
-Andi
-- This is like TV. I don't like TV.
- 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/
| |