This is a static archive of our old Q&A Site. Please post any new questions and answers at ask.wireshark.org.

TCP Window Updates

0

Hi,

I have a case example of a connection that I thought would be a great way to start learning Wireshark. However I have a number of questions.

First of the issue is when trying to download an image from a webserver it takes an extremely long time. This connection is however going through an F5. If : I download the image directly from the server it is fine. If I download the image via a VIP it takes a long time.

Now on digging about I found that the issue was because one of the ports was at half duplex. This was changed and everything was fine. But for the sake of learning I thought Id look into why one connection was fine and one was not.

I have an output of the connection that was failing.

16:54:21.430108 IP 172.16.1.100.51825 > 8.8.8.8.http: P 1607486190:1607486783(593) ack 220110437 win 257 <--- The HTTP GET. Though this appears in the wrong sequence.
16:54:21.431053 IP 8.8.8.8.http > 172.16.1.100.51825: . ack 593 win 2053
16:54:21.434377 IP 172.16.1.100.51837 > 8.8.8.8.http: S 2012441610:2012441610(0) win 8192 <mss 1260,nop,wscale 8,nop,nop,sackOK>
16:54:21.435982 IP 8.8.8.8.http > 172.16.1.100.51837: S 1139646199:1139646199(0) ack 2012441611 win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 2>
16:54:21.436069 IP 172.16.1.100.51837 > 8.8.8.8.http: . ack 1 win 260 --> Long delay until the next packet (?)
16:54:29.609962 IP 8.8.8.8.http > 172.16.1.100.51825: P 1:359(358) ack 593 win 2053
16:54:29.610271 IP 8.8.8.8.http > 172.16.1.100.51825: . 359:1619(1260) ack 593 win 2053
16:54:29.610306 IP 172.16.1.100.51825 > 8.8.8.8.http: . ack 1619 win 260 <-- Is this a Window Update
16:54:29.610339 IP 8.8.8.8.http > 172.16.1.100.51825: . 1619:2879(1260) ack 593 win 2053
16:54:29.611179 IP 8.8.8.8.http > 172.16.1.100.51825: . 2879:4139(1260) ack 593 win 2053
16:54:29.611200 IP 172.16.1.100.51825 > 8.8.8.8.http: . ack 4139 win 260
16:54:29.611224 IP 8.8.8.8.http > 172.16.1.100.51825: . 4139:5399(1260) ack 593 win 2053
16:54:29.611238 IP 8.8.8.8.http > 172.16.1.100.51825: . 5399:6659(1260) ack 593 win 2053
16:54:29.611253 IP 172.16.1.100.51825 > 8.8.8.8.http: . ack 6659 win 260
16:54:29.612069 IP 8.8.8.8.http > 172.16.1.100.51825: . 6659:7919(1260) ack 593 win 2053
16:54:29.612088 IP 8.8.8.8.http > 172.16.1.100.51825: . 7919:9179(1260) ack 593 win 2053
16:54:29.612105 IP 172.16.1.100.51825 > 8.8.8.8.http: . ack 9179 win 260
16:54:29.612130 IP 8.8.8.8.http > 172.16.1.100.51825: . 9179:10439(1260) ack 593 win 2053

Based on the above I have 3 questions (based on the above) :

1) What would cause the HTTP get to be shown in the wrong position/sequence (poss corrupt seq number ?)

2) Though Im seeing a huge difference in time stamps, there appears to be not retransmissions or duplicate ACKs showing any sign of packet loss ?

3) Finally is this actually a window update. The amount of traffic being sent compared to the window size doesn't seem to correlate ?

If anyone can shed any light of this it would be greatly appreciated.

Thanks,

asked 19 Nov '12, 01:14

bart80's gravatar image

bart80
11121316
accept rate: 0%

edited 19 Nov '12, 01:15

ASCII dumps of traces are pretty hard to read, so if you can, upload the file/excerpt to www.cloudshark.org and post the link.

(19 Nov '12, 08:04) Jasper ♦♦

Yep I appreciate that. The problem I have is that the captures are from a customer so I have to do a find and replace on the IP`s. Which wouldnt be so easy within a capture. Are there no pointers you can provide based on just the above ??

(19 Nov '12, 08:36) bart80

One Answer:

0

Hi bart80,

First, it looks like you're showing two different conversations:

172.16.1.100.51825 > 8.8.8.8.http
172.16.1.100.51837 > 8.8.8.8.http

172.16.1.100 (or a node in the path) seem to be limiting it's TCP MSS to 1260 bytes.

1) What would cause the HTTP get to be shown in the wrong position/sequence (poss corrupt seq number ?)

Are you using both relative and absolute sequence numbers?

"Long delay until the next packet (?)

Line 5 and 6 are two different conversations, so the 8 second delay is not path delay for instance.

2) Though Im seeing a huge difference in time stamps, there appears to be not retransmissions or duplicate ACKs showing any sign of packet loss ?

Doesn't look like it.

3) Finally is this actually a window update. The amount of traffic being sent compared to the window size doesn't seem to correlate ?

Yes the receiver window is oddly small.. Are the window sizes showing as calculated (since you seem to support window scaling)?

For simpler analysis, open the packet capture in Wireshark, right click on a conversation of interest and select "Follow TCP Stream" or something, save that file, run it through a pcap-anonymizer and upload it to Cloudshark.

answered 20 Nov '12, 04:08

holmahenkel's gravatar image

holmahenkel
12
accept rate: 0%

edited 20 Nov '12, 04:11

Thanks, for your updates. I`ll look over these points and try to get a file up to cloud shark. One point I wanted to ask, is that I checked the calculated window size. For the ACK it shows win=260 with 260 also for the calculated side. But for each TCP segment (data) is shows a Window size of 2053. Is the Window showing in the packet for the receive window for the source it is coming from. The reason I ask is that 2 1260 byte (tcp.len) packets are sent from the server even though the window is 2053 ?

Thanks again...

(20 Nov '12, 04:47) bart80

Ah, yes a window size is advertised in both directions, so if 172.16.1.100 (sender) where to send data to 8.8.8.8 (receiver) it would know that 8.8.8.8's advertised window (rwnd) is 2053 bytes. In your example 8.8.8.8 is sending data to 172.16.1.100, so 8.8.8.8 only worries about 172.16.1.100's advertised window of 260[*] bytes. Hopes this makes sense :-D

    • Yes, a strange value. I thought 8.8.8.8 should wait for a Window Update.. Sure the packet capture is 100%?

http://tools.ietf.org/html/rfc793#page-4 - "Flow Control" have some more information regarding windows.

(20 Nov '12, 06:28) holmahenkel

Thanks for your response but using the following example -- 172.16.1.100.51825 > 8.8.8.8.http: . ack 4139 win 260
-- From my understanding this is 172.16.1.00 telling 8.8.8.8 that the rwin size is 260. So 8.8.8.8 can only send upto 260 bytes of data before waiting for an ACK ?

(04 Dec '12, 01:01) bart80