lkml.org 
[lkml]   [1999]   [Mar]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: Linux not seeing ACK on FIN|ACK packets
On Mon, 29 Mar 1999, Pete Wyckoff wrote:

> Yes, please do repost. If possible, can you add a "how to reproduce"
> formula so I (and others) can play around with it with debugging on in
> the kernel? It could be something that only happens under some odd
> timing conditions between you and your popper, though. Having it show
> up between two boxes of which you have control would be ideal, though
> possibly not going to happen.

Okay. After much agonizing and rebooting (I don't think I've ever rebooted
as much as for kernel debugging, even in <gasp> Windows), I found the
problem. Attached are the patch and the tcpdump which exhibits the faulty
behavior.

Taral
--- tcp_input.c.nodebug Mon Mar 29 17:37:43 1999
+++ tcp_input.c Mon Mar 29 18:25:58 1999
@@ -2190,7 +2190,8 @@
}

/* step 1: check sequence number */
- if (!tcp_sequence(tp, TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq)) {
+ /* Taral - retransmitted FIN fix */
+ if (!tcp_sequence(tp, TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq) && !(th->fin && TCP_SKB_CB(skb)->end_seq == tp->rcv_nxt)) {
if (!th->rst) {
tcp_send_ack(sk);
goto discard;17:57:35.114069 208.247.22.222.1044 > 128.83.126.1.110: S 1949272623:1949272623(0) win 32120 <mss 1460,sackOK,timestamp 112649[|tcp]> (DF) (ttl 64, id 2901)
17:57:35.150707 128.83.126.1.110 > 208.247.22.222.1044: S 7608503:7608503(0) ack 1949272624 win 8760 <mss 1460,nop,wscale 0,nop,nop,timestamp[|tcp]> (DF) (ttl 49, id 48180)
17:57:35.150946 208.247.22.222.1044 > 128.83.126.1.110: . ack 1 win 32120 <nop,nop,timestamp 112653 32361353> (DF) (ttl 64, id 2902)
17:57:35.179615 128.83.126.1.110 > 208.247.22.222.1044: P 1:39(38) ack 1 win 8760 <nop,nop,timestamp 32361353 112653> (DF) (ttl 49, id 48206)
17:57:35.179830 208.247.22.222.1044 > 128.83.126.1.110: . ack 39 win 32120 <nop,nop,timestamp 112655 32361353> (DF) (ttl 64, id 2903)
17:57:35.180286 208.247.22.222.1044 > 128.83.126.1.110: P 1:13(12) ack 39 win 32120 <nop,nop,timestamp 112655 32361353> (DF) (ttl 64, id 2904)
17:57:35.204147 128.83.126.1.110 > 208.247.22.222.1044: P 39:45(6) ack 13 win 8760 <nop,nop,timestamp 32361353 112655> (DF) (ttl 49, id 48214)
17:57:35.204518 208.247.22.222.1044 > 128.83.126.1.110: P 13:29(16) ack 45 win 32120 <nop,nop,timestamp 112658 32361353> (DF) (ttl 64, id 2905)
17:57:35.340956 128.83.126.1.110 > 208.247.22.222.1044: . ack 29 win 8760 <nop,nop,timestamp 32361353 112658> (DF) (ttl 49, id 48332)
17:57:35.533011 128.83.126.1.110 > 208.247.22.222.1044: P 45:75(30) ack 29 win 8760 <nop,nop,timestamp 32361354 112658> (DF) (ttl 49, id 48424)
17:57:35.550386 208.247.22.222.1044 > 128.83.126.1.110: . ack 75 win 32120 <nop,nop,timestamp 112693 32361354> (DF) (ttl 64, id 2906)
17:57:38.540077 208.247.22.222.1044 > 128.83.126.1.110: P 29:35(6) ack 75 win 32120 <nop,nop,timestamp 112992 32361354> (DF) (ttl 64, id 2907)
17:57:38.559787 128.83.126.1.110 > 208.247.22.222.1044: P 75:84(9) ack 35 win 8760 <nop,nop,timestamp 32361360 112992> (DF) (ttl 49, id 50503)
17:57:38.567185 208.247.22.222.1044 > 128.83.126.1.110: P 35:41(6) ack 84 win 32120 <nop,nop,timestamp 112994 32361360> (DF) (ttl 64, id 2908)
17:57:38.601569 128.83.126.1.110 > 208.247.22.222.1044: P 84:98(14) ack 41 win 8760 <nop,nop,timestamp 32361360 112994> (DF) (ttl 49, id 50547)
17:57:38.602030 208.247.22.222.1044 > 128.83.126.1.110: F 41:41(0) ack 98 win 32120 <nop,nop,timestamp 112998 32361360> (DF) (ttl 64, id 2909)
17:57:38.603186 128.83.126.1.110 > 208.247.22.222.1044: F 98:98(0) ack 41 win 8760 <nop,nop,timestamp 32361360 112994> (DF) (ttl 49, id 50549)
17:57:38.603274 208.247.22.222.1044 > 128.83.126.1.110: . ack 99 win 32120 <nop,nop,timestamp 112998 32361360> (DF) (ttl 64, id 2910)
17:57:38.630922 128.83.126.1.110 > 208.247.22.222.1044: F 98:98(0) ack 42 win 8760 <nop,nop,timestamp 32361360 112998> (DF) (ttl 49, id 50580)
17:57:38.631042 208.247.22.222.1044 > 128.83.126.1.110: . ack 99 win 32120 <nop,nop,timestamp 113001 32361360> (DF) (ttl 64, id 2913)
17:57:38.819870 208.247.22.222.1044 > 128.83.126.1.110: F 41:41(0) ack 99 win 32120 <nop,nop,timestamp 113020 32361360> (DF) (ttl 64, id 2916)
17:57:39.259780 208.247.22.222.1044 > 128.83.126.1.110: F 41:41(0) ack 99 win 32120 <nop,nop,timestamp 113064 32361360> (DF) (ttl 64, id 2917)
17:57:40.139639 208.247.22.222.1044 > 128.83.126.1.110: F 41:41(0) ack 99 win 32120 <nop,nop,timestamp 113152 32361360> (DF) (ttl 64, id 2918)
17:57:41.899346 208.247.22.222.1044 > 128.83.126.1.110: F 41:41(0) ack 99 win 32120 <nop,nop,timestamp 113328 32361360> (DF) (ttl 64, id 2919)
\
 
 \ /
  Last update: 2005-03-22 13:51    [W:0.065 / U:0.912 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site