This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
RedBoot sends continuous ACKS in TIME_WAIT state.
- To: ecos-discuss at sources dot redhat dot com
- Subject: [ECOS] RedBoot sends continuous ACKS in TIME_WAIT state.
- From: Grant Edwards <grante at visi dot com>
- Date: Mon, 26 Mar 2001 19:49:32 -0600
Following __tcp_close() on a socket, the RedBoot TCP stack
exchanges a continuous stream of ACKs with my Linux box. The
RedBoot socket is in the TIME_WAIT state. Do we really want to
send out ACKs in TIME_WAIT state?
The socket has a 120000 tick timer set (I presume a 2 minute
2MSL value). But we're so busy sending ACKs that the system time
never advances.
The sequence of events:
No. Time Source Destination Protocol Info
1 0.000000 10.0.0.2 10.0.0.5 TCP 1511 > 9000 [SYN] Seq=3272446793 Ack=0 Win=32120 Len=0
2 0.000795 10.0.0.5 10.0.0.2 TCP 9000 > 1511 [SYN, ACK] Seq=0 Ack=3272446794 Win=1460 Len=0
3 0.000878 10.0.0.2 10.0.0.5 TCP 1511 > 9000 [ACK] Seq=3272446794 Ack=1 Win=32120 Len=0
4 0.011692 10.0.0.5 10.0.0.2 TCP 9000 > 1511 [PSH, ACK] Seq=1 Ack=3272446794 Win=1460 Len=10
5 0.011763 10.0.0.2 10.0.0.5 TCP 1511 > 9000 [ACK] Seq=3272446794 Ack=11 Win=32120 Len=0
6 2.285735 10.0.0.2 10.0.0.5 TCP 1511 > 9000 [PSH, ACK] Seq=3272446794 Ack=11 Win=32120 Len=6
7 2.286991 10.0.0.5 10.0.0.2 TCP 9000 > 1511 [ACK] Seq=11 Ack=3272446800 Win=1460 Len=0
8 3.303892 10.0.0.5 10.0.0.2 TCP 9000 > 1511 [FIN, ACK] Seq=11 Ack=3272446800 Win=1460 Len=0
9 3.303974 10.0.0.2 10.0.0.5 TCP 1511 > 9000 [ACK] Seq=3272446800 Ack=12 Win=32120 Len=0
10 3.304184 10.0.0.2 10.0.0.5 TCP 1511 > 9000 [FIN, ACK] Seq=3272446800 Ack=12 Win=32120 Len=0
Linux should be in the LAST_ACK state, and isn't supposed to
send anything in response to the next ACK.
11 3.318369 10.0.0.5 10.0.0.2 TCP 9000 > 1511 [ACK] Seq=11 Ack=3272446801 Win=1460 Len=0
RedBoot stack is in the TIME_WAIT state.
Linux ACKs the ACK (why?)
12 3.318424 10.0.0.2 10.0.0.5 TCP 1511 > 9000 [ACK] Seq=3272446801 Ack=12 Win=32120 Len=0
13 3.319083 10.0.0.5 10.0.0.2 TCP 9000 > 1511 [ACK] Seq=11 Ack=3272446801 Win=1460 Len=0
14 3.319116 10.0.0.2 10.0.0.5 TCP 1511 > 9000 [ACK] Seq=3272446801 Ack=12 Win=32120 Len=0
15 3.319754 10.0.0.5 10.0.0.2 TCP 9000 > 1511 [ACK] Seq=11 Ack=3272446801 Win=1460 Len=0
This continues as fast as they can send ACKs back and forth.
I don't understand why the Linux stack is ACKing ACKs, but
there's not much I can do about that. Does RedBoot really need
to send ACKs in reponse to received ACKs while in the TIME_WAIT
state?
--
Grant Edwards
grante@visi.com