Post a reply

Options
Add an Attachment

If you do not want to add an Attachment to your Post, please leave the Fields blank.

(maximum 10 MB; please compress large files; only common media, archive, text and programming file formats are allowed)

Options

Topic review

martin

Re: Adjusting SendSocketBuffer for newer Windows versions

Did you get my email?
martin

Re: Adjusting SendSocketBuffer for newer Windows versions

Thanks for your report.
I'm sending you an email with a dev version of WinSCP to address you have used to register on this forum.
scheste

Adjusting SendSocketBuffer for newer Windows versions

Hello,

Microsoft has changed with windows vista larger changes in the tcp stack!
Since Vista Windows use some algorithms to optimice the bandwidth on higher latency.
This algorithms optimize automatically the SendSocketBuffer.

https://en.wikipedia.org/wiki/TCP_congestion_control
https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-send
https://learn.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-getsockopt

I have the case, that I have 2 servers with 1Gbps dedicated internet line.
Between the servers are 8 hops with 16ms latency, this is not bad for a synchronization between 2 different locations.

If I would use WinSCP, the file transfer will be on 70Mbit/s, this is not bad, but it should be better.
Because if I use SMB to copy the same files, I have about 400Mbit/s.
The same case if I use the windows cmd ftp client with parameter ftp -x:262144
This will set the SendSocketBuffer to 262144 Bytes.

We have checked this with Wireshark and with a test tool NTttcpr from Microsoft.
This is an application problem, which are affected also many other ftp / ssh clients.
For example cURL, Filezilla are also affected.

Because the most ftp / ssh clients have fix values, are older as Windows Vista and have fix SendSocketBuffer values.
This was good for older Windows versions, because they had a very small value, but not for current windows versions.

Kind Regards,
Stefan Scheiffele