Hi Apache teams,
In my httpd module, I would like to increase the receive window (rwnd) size.
For some mysterious reasons, if I set a value greater than 4 Mb, the rwnd
stucks to 4193 Kb.
Here is my investigation states :
* This is for upload (client uploads to httpd)
* The correct TCP options are enabled on the server
* I got another homemade app on the same server and the rwnd can go up to 8
Mb - so this exclude the server
* The sizeof(int) is 4 bytes
Ton increase receive window size, I do :
int opt = 5000000;
if (setsockopt(this->mSocket, SOL_SOCKET, SO_RCVBUF, &opt, sizeof(opt)) < 0) {
throw invalid_argument(string(CLASSNAME) + " Could not set SO_RCVBUF option : "
+ string(strerror(errno)));
}
I can check the window size status using getsockopt, and values are correct at
the beginning and at the end of the upload.
In wireshark, I can see this :
Frame 36818: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Ethernet II, Src: XXXXX, Dst: YYYYY
Internet Protocol Version 4, Src: XXXXX, Dst: YYYYY
Transmission Control Protocol, Src Port: 8443, Dst Port: 65168, Seq: 6136, Ack:
31241018, Len: 0
Source Port: 8443
Destination Port: 65168
[Stream index: 0]
[TCP Segment Len: 0]
Sequence number: 6136 (relative sequence number)
[Next sequence number: 6136 (relative sequence number)]
Acknowledgment number: 31241018 (relative ack number)
1000 .... = Header Length: 32 bytes (8)
Flags: 0x010 (ACK)
Window size value: 4095
[Calculated window size: 4193280]
[Window size scaling factor: 1024]
Checksum: 0x048c [unverified]
[Checksum Status: Unverified]
Urgent pointer: 0
Options: (12 bytes), No-Operation (NOP), No-Operation (NOP), Timestamps
[SEQ/ACK analysis]
[Timestamps]
Does a specific mechanism in Apache cause this behaviour ?
Thanks a lot for helping.
Seb.