Windows File transfers are slow or: what I have been troubleshooting for the last two months

Over the last couple of months, I have spent a lot of time trying to improve the performance of file transfers across the LAN. Try as I might, I could not isolate the bottleneck. This is on a small network, a large RAID array, plenty of RAM and CPU power, 100 megabit switches. File transfers to and from the file server were topping off at less than 5 megabytes per second, but client-to-client transfers faired better, near 10 MB/s. WHY?!

Finally, it occurred to me to test if the SMB (Server message block) protocol might be the issue. This is the 'language' of file transfers in Windows Explorer between computers on a network. I could download a file with the HTTP protocol very quickly, ~10-11 MB/s. Now I was getting somewhere. The file server was capable of reading the files fast enough, and the network was capable of handling the data alright.

The solution, it turns out, was simple. Disable Server Message Block Signing on the file server. This signing, also called security signatures, is a security feature to prevent man-in-the-middle attacks. It requires the file server to do extra work on every file transfer, and thus slow down the transfer. In my case, this setting reduced my SMB throughput to half (or even less, when under a load) of the 100-megabit network capacity.

If you have mitigated this man-in-the-middle vulnerability in another way (such as 802.1x network authentication), try disabling this security setting.

Here are the instructions from Microsoft:

Also, be sure to read these precautions, also from Microsoft:

If this has helped you to increase your file transfer speed, please leave a comment below!