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

What is the window scaling graph showing exactly and how to use it

0

This question focuses on the graph produced by:

Statistics -> TCP StreamGraph -> Window Scaling Graph

I'm sure this should be simple, but I'm confused by what this graph is showing me and I can't find documentation explicitly stating what the graph displays. Is this a graph of:

a) The size of the receive window regardless of the number of unacked bytes.

or

b) The size of the window minus the number of unacked bytes

Here's the question I'm trying to answer: there's a bottleneck in a network I'm analyzing from packet captures. I looked at various things and noticed that the TCP receive window from the Wireshark window scaling graph from one host was very erratic. That is, instead of being a smooth line maxed out at a certain value like I'm used to seeing, it rapidly oscillated in value. I thought this was a clear indication that the host's receive buffer was being maxed out and that TCP flow control was throttling the throughput via the receive window. A graph of the bandwidth over time seemed to corroborate this theory since it seemed to follow the same trend as the window scaling graph.

However, someone else looked at the window scaling graph and doubted my conclusion because the receive window in the chart never went to zero, and therefore thought that the sender would never be impacted by the window. Their impression of the graph was that it was showing the window with respect to unacknowledged data, and since it never went to zero, the sender would never stop sending data because of it.

Can someone help bring clarity to this for me?

Thanks!

asked 06 Dec '13, 22:27

firebush's gravatar image

firebush
21337
accept rate: 0%

edited 06 Dec '13, 22:28


One Answer:

3

The window scaling graph shows what you mentioned in option a.)

The size of the advertized receive window incl. scaling factor.

So, basically the graph tells you how well the receiver can handle the received data.

  • a 'flat line' means the receiver did not adjust it's window size, hence it had no problem at all to handle the incoming bytes fast enough.
  • an 'oscillating' graph (like a saw tooth) means: The receiver advertized a smaller window size, as it was not able to handle the incoming traffic fast enough, hence the buffer got filled up. By lowering the window size, it tells the sender about that fact. The sender may or may not take action in that case. Most certainly it would be clever to send less data at once. However, you'll often see no reaction at all in real world scenarios. It depends on the OS and applications in use.

The reason for an oscillating window size are many fold. Think about a system that does not only receive data and store then somewhere (maybe with RAM caching), but also need to process the data as soon as they are received (like doing calculations, printing data if it is a printer, etc.). In that case the receiver might get more data than it can process in a defined time slot and then it would lower the receive window, to let the sender know.

So, the oscillating window size alone does not necessarily have an effect on the throughput. If the window size does not drop to far (let's say 10-20%), the sender can still send data fast enough in most cases. It will have an effect on links with a very high RTT, where the sender could potentially fill the whole pipe with one receive window. If in that case the receive window gets smaller, it will have an effect on throughput.

Anyway: Throughput problems are more often related to packet loss than to windows size updates, unless the receive window drops to far (near 0 or to 0). In that case it will obviously have an effect on throughput.

So, to figure out what's going on in your TCP connection you need to look at several things

  • RTT (see TCP RTT graph)
  • Window updates (Window scaling graph + Expert messages: Zero Window, etc.)
  • Packet loss (Expert messages: DUP ACK, Retransmission, etc.)

Those things, together, will affect your throughput.

Regards
Kurt

answered 07 Dec '13, 07:22

Kurt%20Knochner's gravatar image

Kurt Knochner ♦
24.8k1039237
accept rate: 15%

Thanks for the quick reply, Kurt! Great answer. A small request: it looks like you're quoting something when you give that definition of the window scaling graph. Mind indicating or linking where that came from? That may help me or someone else in the future. Thanks again!

(07 Dec '13, 10:18) firebush

looks like you're quoting something when you give that definition of the window scaling graph

Mainly I quoted your definition as it was correct ;-)

The rest comes from my memory. If you want a link to that, you'll need a class 3 neuro interlink with a mid range subspace transmitter, powered by a quantum point energy cell. I'm not sure if that is available at RadioShack in this region of the Galaxy...

(08 Dec '13, 13:45) Kurt Knochner ♦

I don't need to go to RadioShack. I'll just use the one in my garage. :)

(13 Dec '13, 09:19) firebush

Fine. Plug it in and join me for a journey through a weird world of bit, bytes, protocols and other silly stuff.... ;-)

(13 Dec '13, 09:22) Kurt Knochner ♦

Danger, Will Robinson, danger! :-D

(13 Dec '13, 11:04) Jasper ♦♦

Yep, beware!!!

My secret nickname is Rex Kramer - Danger Seeker. I'm always there were it hurts. In the late seventies I played myself in one of those B-movies...

(13 Dec '13, 11:32) Kurt Knochner ♦

Kentucky Fried Movie FTW! :-)

(13 Dec '13, 12:52) Jasper ♦♦
showing 5 of 7 show 2 more comments