window field in TCP header.
Hello,
I am running linux kernal 2.4.2 .
My query is concerning the manner in which the TCP code handles the initial window size value ( RWIN ) in the TCP header.
I observed that RWIN that the client
announces is 5840 bytes in the <SYN> packet irrespective of what value I set using the setsockopt .
Is there any particular reason for this ?
It seems to me as a too small a value.
Secondly, any way to get around this ?
I checked the /proc/sys/net/core/* where the defaults are set. rmem_default is set to 65535 . Similarly wmem_default.
Further more, when I checked the complete packet trace using tcpdump for the FTP data connection ( for a large file transfer ) , it seems that though TCP starts with a RWIN of 5840 in the <SYN> segement but keeps on increasing the RWIN as the connection progresses upto 47784 .
Next, I modified FTP code to set the initial window field to 500 K bytes. The window field in the <SYN> packet should have been 64 K and wscale = 3. But again the window field was 5840 bytes and wscale = 1.
After some packets were transferred , the window field increased upto 47784 but not beyond that.
Now the RFC 1323 says that the receiver will left-shift window field of every incoming segemet by wscale bits.
Left shifting 47784 by 1 bit would in no way offer me th desired window ( 500 K bytes ).
Is there some thing that I am doing wrong or is there something wrong in the TCP implementation ?
Please CC any replies to my email id.
Thanks,
Manish