none
TCP download speed over high latency connections is poor (compared to Linux)

    Question

  • I've been transferring some large (1gb+) files over HTTP (TCP) between two Windows servers, and noticed that the download speed never exceeds 10Mb/s. Even though the available bandwidth is 1000Mb/s.
    The servers are located in Roubaix, France and New York, USA. The RTT/ping between the servers is 72ms.

    What I've noticed is that over the same network, with a Linux guest in Hyper-V, the download speed exceeded 400Mb/s!

    When downloading from the Linux machine the performance was similar to the Windows > Windows transfer.
    After doing some tests it became clear that the TCP receive window doesn't grow large enough on the Windows machines, when the network latency is "high" (above 50ms).

    I've tried fiddling around with the TCP auto tuning levels and even disabling TCP auto tuning, but this didn't cause a increase in download speeds. (disabling auto tuning even reduced the download speed)

    My question is: What settings should I change in Windows to increase the download speed, to get similar results to Linux?

    I think this can be achieved by making TCP auto tuning in Windows Server 2016 more aggressive on high latency connections.

    • Edited by Gijs007 Friday, June 8, 2018 3:22 PM
    Friday, June 8, 2018 2:39 PM

All replies

  • Hi,

    Thanks for your question.

    Please try the following suggestions to see if it could be of help.

     

    Maximum achievable throughput for a single TCP connection is determined by different factors.

    We can consider from these aspects:

    • Window size

    In all recent Microsoft Windows implementations, windows scaling is enabled by default.

    You can change registry values by editing the registry key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters\DefaultSendWindow

    • Packet loss

    When packet loss occurs in the network, an additional limit is imposed on the connection.

    The TCP selective acknowledgment option (SACK, RFC 2018) allows a TCP receiver to precisely inform the TCP sender about which segments have been lost. This increases performance on high-RTT links, when multiple losses per window are possible.

    The SackOpts value in the following registry key can be edited to control the use of selective acknowledgements:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

    • Windows scaling

    For more efficient use of high bandwidth networks, a larger TCP window size may be used. TCP window scale is an option used to increase the maximum window size from 65,535 bytes to 1 Gigabyte.

    The Tcp1323Opts value in the following registry key can be added to control scaling windows and timestamp:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters

    • TCP retransmission behavior and fast retransmit

    By default, Windows resends a segment if it receives three ACKs for the same sequence number, (one ACK and 2 duplicates) and that sequence number lags the current one. This is controllable with the TcpMaxDupAcks registry parameter.

    The TcpMaxDupAcks value in the following registry key can be edited to control the number of ACKs necessary to start a fast retransmits:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

     

    Specific operation please refer to the following link:

    Description of Windows 2000 and Windows Server 2003 TCP Features

    https://support.microsoft.com/en-us/help/224829/description-of-windows-2000-and-windows-server-2003-tcp-features

     

    Hope you have a nice day!

    Best regards,

    Travis 



    Please remember to mark the replies as an answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com

    Monday, June 11, 2018 10:11 AM
  • Hi,

    Was your issue resolved?

    If you resolved it using our solution, please "mark it as answer" to help other community members find the helpful reply quickly.

    If you resolve it using your own solution, please share your experience and solution here. It will be very beneficial for other community members who have similar questions.

    If no, please reply and tell us the current situation in order to provide further help.

    Best Regards,

    Travis


    Please remember to mark the replies as an answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com

    Friday, June 15, 2018 6:08 AM
  • Hi Travis,

    Thank you for your reply.

    Unfortenetly my download speed is still at 3.52MB/s.

    I've set in: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

    SackOpts=1
    Tcp1323Opts=3
    TcpMaxDupAcks=2

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters

    DefaultReceiveWindow=64512
    DefaultSendWindow=64512


    • Edited by Gijs007 Friday, June 15, 2018 1:35 PM
    Friday, June 15, 2018 1:34 PM