Re: Possible BUG in IPv4 TCP window handling, all recent 2.4.x/2.6.xkernels

From: Ion Badulescu
Date: Fri Sep 02 2005 - 07:12:33 EST


On Fri, 2 Sep 2005, Noritoshi Demizu wrote:

By the way, if tcpdump does not track the window scale option, the right
edge (ack + real win) does not change between the following two ACKs.

11:34:54.337167 10.2.20.246.33060 > 10.2.224.182.8700: . ack 84402527 win 15340 <nop,nop,timestamp 226080473 99717814> (DF)
(259 ACKs are omitted here)
11:34:54.611769 10.2.20.246.33060 > 10.2.224.182.8700: . ack 84454467 win 2355 <nop,nop,timestamp 226080721 99717841> (DF)

The first line is the 37th ACK and the second line is the 295th ACK.

ACK#37: ack=84402527 win=15340 right_edge=84463887 (= ack + win * 4)
ACK#295: ack=84454467 win=2355 right_edge=84463887 (= ack + win * 4)

And all ACKs later than ACK#295 has win=2355 (2355*4=9420).

This may be a hint. But, sorry, I do not know the internal of Linux TCP.

Oh, it's absolutely possible (even likely) that the application was slow between 11:34:54.337167 and 11:34:54.611769 and data kept accumulating in the socket buffer. The real problem is not the shrinking of the window, but the fact that it never increases back to normal once the socket buffer is emptied.

I think there is a possibility that some middle-box does something,
for example, some middle-box between the two machines does kinda
traffic-shaping by tweaking the TCP window size field.

Not really: the tcpdump is taken on the very box that generates the acks with the shrinking window, so it can't possibly be affected by any shaper. Unless the shaper is the Linux kernel itself...

-Ion
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html