A few days ago I changed my ISP (to T-mobile, because it's currently the only possibility). The stable speeds are: 150Mb/s download, ~34Mb/s upload.

I tried to upload a single 2GB file to my VPS (using SFTP) and I noticed a strange problem with upload speed drops after few seconds. It means: for around 20MB it's uploading with the full speed, and after that only ~5Mb/s.

As first I thought it's an issue with the current VPS, but then I tested uploading to other servers with the same effect. However, uploading to services like: YouTube, GoogleDrive, OneDrive, etc. always goes with the full speed (34Mb/s) without any problems.

I was testing this problem more, using php upload scripts(instead of SFTP), VPNs and it always resulted in upload speed drops (after a very short while). I thought this ISP limits upload speed to "unknown" addresses, but then I ordered an Arubacloud server and the upload speed by SFTP was just fine.

After that I set up OpenVPN on that VPS, and connected to it from my laptop. Upload speeds to this Aruba server were still fine, but not to others. Whenever I tried to upload file to my other VPS it resulted in upload speed at max. 5Mb/s. I was very confused and double checked if the VPN is actually used.

I didn't find any logical explanation why it happens, and I started testing it on Virtual Machines with "NAT Network Adapter" configured (so my host IP address was shared). I was surprised to see that file upload to all VPS which I tested before goes with the full speed, without any speed drops, without using any VPN...

I thought it's a problem with some software/service running on my laptop. I booted Windows 10 in safe-mode with Network. Same issues. I installed a clean Windows 10 copy on another HDD - same upload speed problems... Of course the same problem is present when I use a wired connection (Ethernet). I also tested connecting to 2 different routers (my main router and the LTE router from Huawei).

When I changed a Windows XP Virtual Machine to use a "Bridged" connection (instead of NAT) - the same issues were happening, so it most likely isn't a Windows 10 problem.

I'm very confused and I don't know how to detect what causes those issues. I would be very grateful for any tips and test recommendations.

Update 27.05.2018 17:10

Just to give more details. I made more tests: I used the SIM card from the LTE router in my smartphone, and shared Internet connection by the "mobile hotspot". The same problem occurs.

I also tested on my mum's laptop. The same problem persists.

It doesn't only affect Filezilla (SFTP) transfers, but normal file uploads by HTTP/HTTPS, sending files by Riot Messenger (Matrix client), etc. I also tested with a VPN configured to use port 443.

So this is actually the ISP problem, but something must trigger it. Just to remind: When I use a Virtual Machine with "NAT" Network adapter - I can upload files with full speed, without decrease.

Of course I tested the wired (Ethernet) connection more than 1 time. It actually shouldn't matter, because I get ~600Mb/s upload speeds from my NAS by Wi-Fi AC.

Update 28.05.2018 00:15

I detected something interesting:

netsh int tcp show global:
Receive Window Auto-Tuning Level    : normal

When I disable Window Auto-Tuning by "netsh int tcp set global autotuninglevel=disabled" - upload speeds are low all time time (without full speed boost at start). Setting it to "experimental" has the same effects as default "normal", this is: around 10-40MiB are uploaded with the full speed, and then it drastically decreases to 2-5Mb/s.

Does anybody know what it could mean?

Update 28.05.2018 23:55

Yesterday I installed Windows 8.1 on another HDD. Seems like the upload speed isn't decreasing on it. Autotuning works fine.

I tested all possible Windows 10 versions (installed on the same laptop), and I've got the following test results:

  • The last version where autotuning works fine is: 1511 (10586).

  • The version where problems started is: 1607 (Anniversary Update).

On 1511 it works fine with default Wi-Fi/Ethernet drivers, and also with the newest possible drivers.

I tried to set the same TCP settings on the newest Win10 version using software called "TCP Optimizer". Unfortunately it doesn't help.

Here are TCP Optimizer settings for specified Windows versions:

Win 8.1 (works fine): https://i.imgur.com/A8mLlrO.png and https://i.imgur.com/8KyNPam.png

Win 10 (works fine): https://i.imgur.com/XbMSxTF.png and https://i.imgur.com/9la5Ydy.png

Win 10 1511 (works fine): https://i.imgur.com/ta8sFlc.png and https://i.imgur.com/WuDm937.png

Win 10 1607 (problems): https://i.imgur.com/kVyaNfG.png and https://i.imgur.com/F4YLLEU.png

Win 10 1703 (problems): https://i.imgur.com/hO2iQF6.png and https://i.imgur.com/FNo0oyk.png

Win 10 1709 (problems) https://i.imgur.com/LAPcuAa.png and https://i.imgur.com/smy5v5R.png

Unfortunately, setting the same options (manually, not by the "import" feature) doesn't help. Maybe somebody knows what changed in the Anniversary Update that could cause those issues?

Update 31.05.2018 16:05

The only work-around for this problem which I found is using a Linux Virtual machine which uses the "NAT" Network Adapter (shares host IP) + Kitty on Windows. There are my notes, hope it will be understandable enough:

Virtual Machine Local IP:
apt-get install sshpass autossh screen
nano /etc/ssh/sshd_config:
Port 777
service ssh restart

Kitty settings:
Name - > LinuxVM-Tunnel-SpeedFix (port 777 if 22 doesn't work)
Connection -> keepalives -> 30
Connection -> Data -> Autologin username/password
SSH -> Tunnels:
- Source port: 7771 Destination: localhost:8881 | Server1
- Source port: 7772 Destination: localhost:8882 | Server2
- Source port: 7773 Destination: localhost:8883 | Unused
- Source port: 7774 Destination: localhost:8884 | Unused

Connection -> Data login/pass
Connection -> Data -> Command:
screen -X -S VMTunnel1 quit; screen -X -S VMTunnel2 quit; screen -X -S VMTunnel3 quit; screen -X -S VMTunnel4 quit; screen -S VMTunnel1 -dm sshpass -p 'MyPassword' autossh -oStrictHostKeyChecking=no -L 8881: root@server1.example.com; screen -S VMTunnel2 -dm sshpass -p 'MyPassword' autossh -oStrictHostKeyChecking=no -L 8882: root@server2.example.com;

Profile: LinuxVM-server1.example.com | | 7771
Profile: LinuxVM-server2.example.com | | 7772

So basically, when a Virtual Machine running on my laptop tunnels traffic between my laptop and selected servers I get full upload speeds (34Mb/s). It stops working when I change the Virtual Machine Network Adapter to "Bridge", so it must be on "NAT".


Remember that ISP rate speeds in Mb/s [Megabit per second] while most apps [FTP included] rate speeds in terms of MiB/s [Mebibyte per second], and since 1 MiB = 8Mb your '5MiB/s' is actually '40Mb/s'.
Initial peak may be interperetewd as local buffers fill-up.

In 'time' terms you should be able to upload 2 GiB in about 7 minutes, if the time is comparable, your connection is fine.

| improve this answer | |
  • Thanks for your reply. When the problem occurs I can see how speed decreases from 34Mbs to 5 or lower in Windows task manager. Then it takes around 40 minutes for 1.5GiB file. At the same time, when I upload the same file from a Vritual Machine that uses NAT network adapter - it goes with full speed and takes only around 5 minutes to upload it. – Mona May 27 '18 at 11:58
  • In this case I'll say it may depend on your client configuration (there may be a parameter as 'limit upload speed'), very useful on old connections (such as ADSL) where uplink was really limited – DDS May 27 '18 at 12:27
  • I didn't find any "limit upload speed" parameters enabled on Windows nor routers which I use. Also if it was the case, I wouldn't be able to get the full upload speed to services like YouTube, OneDrive. As I mentioned in my question, I installed a "fresh" Windows 10 on another HDD, and I experience the same problem. – Mona May 27 '18 at 12:57
  • It's not on windows, it's in the software you use (i suppose Filezilla or similar). Are you testing always on ethernet or you're on wifi. If you test on wifi you simply may be unluky and get 'busy' spectrum, (from what you wrote it seems you tested by wire only once) – DDS May 27 '18 at 16:14
  • I updated my question with additional information and new tests I made. Basically, local upload speed (to NAS or other devices) is always around 600Mb/s (Wi-Fi AC). The problem also happens when I use my phone as router, and also affects my mum's laptop. Also, I found a VPS server which gives me a full upload speed using the same software settings/environment. So it's like T-mobile limits speeds for specified addresses only, and doesn't do it when I use a VirtualMachine -> NAT -> Host laptop. – Mona May 27 '18 at 17:22

I managed to fix this problem on server-side.

Seems like upgrading Ubuntu Server 16.04 to 18.04 fixed this problem for all of my VPS.

So basically, Windows 10 1607+ has problems with Ubuntu 16.04 / Debian 8 (and maybe older). After Server OS upgrade the problem is gone. It explains why even VPNs didn't help to resolve this issue. Too bad I noticed it so late, would have saved a lot of time.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.