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

TCP initial congestion window (slow-start)

0

I have noticed that the initial congestion window in my traces is 8920bytes~=6*1448. rfc3390 states the initial cwand should be max 4000 bytes(around 3*1448).

At first i thought it might be because i'm running my server on mac os x, so apple might have modified the tcp stack. Therefore I tried running the server on a Linux box (2.6.38) however i'm getting similar results 13032bytes=9*1448. Both server and client machines are running on a local network (via a router). Any ideas why the initial cwand is so large?

asked 23 Dec '11, 16:09

ddayan's gravatar image

ddayan
41151720
accept rate: 0%

edited 24 Dec '11, 02:59


2 Answers:

1

You already correctly used the term "should" in your question ;)

RFCs recommend lots of stuff, especially when it comes to tcp behaviour and the more you spend time to get inside views into the real behaviour of certain stacks, the more you will find that there are LOTS of differences in implementation.

Initial cwnd "should" have an upper limit like e.g. 2-4 MSS in bytes but I would not worry if it was larger (like in your trace), especially when looking at open source OSs.

slowstart_flightsize and local_slowstart_flightsize from their description posted by you both use packets to measure initial cwnd. Be aware that at least on Microsoft stacks years ago there was a change to measure initial cwnd in bytes instead of packets in order to better deal with different MTUs and when pulling up cwnd better applying to delayed ACKs and stuff, because the ACK frequency also is highly dependent on the OS and its version etc.

answered 24 Dec '11, 12:05

Landi's gravatar image

Landi
2.3k51442
accept rate: 28%

0

I have found that the reason is both the server and the client are on the same subnet: FreeBSD tcp stack has these configurations:

 slowstart_flightsize
        The number of packets allowed to be in-flight during
        the TCP slow-start phase on a non-local network.

local_slowstart_flightsize The number of packets allowed to be in-flight during the TCP slow-start phase to local machines in the same subnet.

Anyone knows how these configurations are called in Linux kernels?

answered 24 Dec ‘11, 07:50

ddayan's gravatar image

ddayan
41151720
accept rate: 0%