I am trying to use TCPProbe over my network to study TCP but the logs it is generating for a simple iperf TCP connection doesn't seem to make any sense. I am running an iperf over two nodes in my network which is a 1Gbps network and I capture TCPProbe logs on the client side (sender). Based on that the snd_cwnd is just increasing to values as big as 8000. I have used TCPProbe in the past and my understanding is that this value is in segments. So a window of 8000 segments in a network of 0.1 msec RTT, means 8000*1500bytes/0.1msec = 960Gbps which is ridiculous. I am wondering if anyone else has seen such a behaviour or has any clue why TCPProbe is reporting such a non-sense values for snd_cwnd?
migrated from stackoverflow.com Apr 23 '11 at 12:26
This question came from our site for professional and enthusiast programmers.
I've not used TCPProbe but snd_cwnd is almost undoubtedly the congestion window size. This is normally in bytes and indicates the maximum number of unacknowledged bytes that will be sent.
The window size is maintained by the sender and adjusted based on throughput, if segments are not being acknowledged (because they are being dropped or there is too much fragmentation in the path) then the segment size will be dropped down (halved if I remember correctly), then TCP will go through a slow start routine which gradually increases the segment size.