Remote connections speed limited to about 1.5 MB / s

Tomasz Maciąg 116 Reputation points
2021-05-11T13:05:12.317+00:00

I've been struggling in my company setup with a strange problem. After diagnosis, the problem seems to be caused by Windows 10.

My setup

  • Windows 10 Pro machine serving as a file repository for workstations in LAN and for remote connections (let's call it a server).
  • Asus ZPA-U8 server board, Xeon E5 20603, 24GB RAM, 500GB SSD for system + 2 x RAID 0 (2TB)
  • Gigabit network with Netgear GS716T switch and Funbox 6 router
  • Internet connection with public IP: Orange Fiber 1000 Mbps / 300 Mbps

Usage scenario

  • We are a graphics studio, so the repository usually contains large graphic files (500MB +)
  • Local workstations (also on Windows 10) connect to the file repository within LAN, where we easily achieve transfers of 100 MB / s (both directions).
  • For remote employees, I have tested various access options, but on none of them I am able to go beyond the limit of about 1.5 MB / s (both directions). Even though, the Internet connection provides much higher speed.

What remote connection options have I tested?

  • FTP installed as a Windows service using the Filezilla server
  • HTTP installed as a Windows service using XAMPP
  • Access to the local network via VPN Hamachi
  • FTP server on Linux virtual machine (VirtualBox with Turnkey Linux)
  • VPN on Linux virtual machine (VirtualBox with Turnkey Linux and OpenVPN)
  • Owncloud server on Linux virtual machine (VirtualBox with ownCloud by Univention)

Regardless of the connection method (FTP, VPN, WebDAV, HTTP), I'm not able to go beyond the limit of about 1.5 MB / s. I tested on 3 different computers, and each of them had a much faster internet connection.

However, when I open two separate FTP connections, I can download two different files with speeds ranging from 1.2 - 1.5 MB / s (per connection). This may indicate that problem is somehow connected to TCP connection limit.

Previously, we had internet from a cable network (1000Mbps / 60Mbps), and there was the same problem with the speed limit.

I also tested all of those remote connection points from LAN, and I was getting much faster speeds (closer do LAN).

How did I diagnose that the restriction could be caused by Windows 10?

  • I'm able to achieve faster speeds while connecting from the server to other services (via FTP, HTTP, WebDAV, VPN). The speed depends on the service/server I'm connecting to, but It can be 10x faster. When testing with my hosting company I can upload over 6 Mb/s.
  • SpeedTest also shows much faster transfer rates.

I tried to look for answers in different forums and testing various Windows settings (including network card, protocols etc.), but with no luck.

Dose anyone have an idea what might be causing this problem?
I'm trying to figure this out before completely switching to Linux.

Windows 10 Network
Windows 10 Network
Windows 10: A Microsoft operating system that runs on personal computers and tablets.Network: A group of devices that communicate either wirelessly or via a physical connection.
2,272 questions
0 comments No comments
{count} vote

Accepted answer
  1. Tomasz Maciąg 116 Reputation points
    2021-05-13T10:44:42.543+00:00

    Thanks to help from @Gary Nebbett my issue was resolved.

    I can archive faster transfers after enabling "Receive Window Auto-Tuning Level" both on server and client side.

    It can be done by running this command in Command Line (as administrator)

    netsh interface tcp set global autotuninglevel=normal  
    
    1 person found this answer helpful.
    0 comments No comments

7 additional answers

Sort by: Most helpful
  1. Sunny Qi 10,896 Reputation points Microsoft Vendor
    2021-05-12T07:46:54.627+00:00

    Hi,

    Thanks for posting in Q&A platform.

    It seems your issue is that slow remote connection performance issue. For network speed slow performance issue, it's necessary to collect performance log and network traffic from both source and destination side simultaneously to find out what cause the TCP connection limits. However, analysis of log is beyond our forum support level and due to forum security policy, we have no such channel to collect user log information. So, we recommend you open a case with MS Professional tech support service, they will help you open a phone or email case to Microsoft, so that you would get a technical support on a one-to-one basis while ensuring private information.

    Here is the link, you could find phone number of your region accordingly from the link below::

    https://support.microsoft.com/en-us/gp/customer-service-phone-numbers

    Best Regards,
    Sunny

    ----------

    If the Answer is helpful, please click "Accept Answer" and upvote it.

    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

    1 person found this answer helpful.
    0 comments No comments

  2. Gary Nebbett 5,721 Reputation points
    2021-05-12T08:29:44.437+00:00

    Hello @Tomasz Maciąg ,

    As you may have noticed yourself when researching this topic, analysis of captured network traffic is an almost unavoidable aspect of understanding network performance.

    If you are prepared to gather such data and share it, then someone might be able to perform an analysis and give feedback about what they found. This is the type of thing that I and others do "for fun" (a bit like solving crossword puzzles).

    As Sunny correctly points out, the trace data may contain confidential information (e.g. any information exchanged by the test system over the network during the period of the network trace); many people are reluctant to share such network traces, but some do.

    Using MS Professional tech support service might be quite expensive and is not guaranteed to deliver a satisfactory result.

    If you want advice about how to create a network trace then let us know.

    Gary

    1 person found this answer helpful.

  3. Gary Nebbett 5,721 Reputation points
    2021-05-12T09:39:44.973+00:00

    Hello @Tomasz Maciąg ,

    This trace command use a feature from newer versions of Windows (since version 1809 (October 2018 )) and its syntax may also have changed since it was introduced. I tested the command on my Windows 20H2 system, so the syntax is at least correct for that version. There are other commands and mechanisms that we could use, but let's try once this way.

    The command to start the trace is:

    pktmon start --capture --comp nics --flags 0x17 --trace -p Microsoft-Windows-TCPIP -k 0x7FFFFFFFFFFFFFFF -l 255 -p Microsoft-Windows-WFP -k 0x7FFFFFFFFFFFFFFF -l 255 --file-name why.etl

    The command to stop the trace is:

    pktmon stop

    The idea is to start the trace, reproduce the poor performance and then stop the trace. The duration of the trace should be kept as short as possible because a lot of trace data is generated every second.

    The resulting trace file (why.etl) can be shared via a link to OneDrive, Google Drive, etc..

    You can post the link here or try to find me directly (for example, I am the only "Gary Nebbett" registered in LinkedIn - the surname Nebbett is rare).

    Gary

    1 person found this answer helpful.
    0 comments No comments

  4. Tomasz Maciąg 116 Reputation points
    2021-05-12T18:44:16.957+00:00

    @Gary Nebbett

    It seems the syntax has changed, so I wanted to check with You before running it.

    I couldn't find a way to set providers (-p Microsoft-Windows-TCPIP), but I can set up filter for protocol (TCP, UDP, ICMP, ICMPv6 - more details on adding filters).

    Basically I would run those commands

    pktmon filter add -t TCP  
    pktmon start -c nics --etw -k 0x17 -p 0 -f why.etl  
    pktmon stop  
    pktmon filter remove  
    
    1 person found this answer helpful.
    0 comments No comments