Slow bandwidth with iperf3 when using Windows but Linux runs at full speed

2

3

I have a DigitalOcean Droplet that shares a gigabit connection and my college dorm fortunately also has gigabit connection. I noticed data transfers between the two were quite slow so I ran iperf3 with the Droplet as the server and my computer as the client. The test showed abysmal speeds. When I ran the same test with UDP or enough parallel streams(80), I reached the full gigabit speed.

I ran iperf3 on another Windows machine and got the same results. After troubleshooting some more, I discovered using Ubuntu instead of Windows reached gigabit speeds.

I have an EC2 instance that is located a few states closer to me than the Droplet and when I set that as the server and my Windows computer as the client, I reached around 30 megabits and again with UDP or enough parallel streams, I was also able to get gigabit.

With this information, I tried running iperf with a larger window size and fiddling with some Windows network setting themselves but nothing seems to have helped. I found an article that is almost exactly similar to my situation but with no solution available.

I would really appreciate any help or advice to help me get this working. Thank you.

EDIT: I contacted the author of the article and he responded that I would need a WAN optimizer. Here's a pastebin of the email he sent me. Can anyone confirm this or suggest a simpler solution? While I like to think I'm tech savy, I'm only a college freshman and almost everything in that email went over my head.

EDIT2: http://www.dslreports.com/speedtest/41142166

kimsbrian

Posted 2018-10-30T21:08:52.093

Reputation: 21

What is your RTT (Round-Trip Time, e.g. "ping time") from your dorm to your Droplet? What was the largest window size you tried? IPerf by default "uploads" data from the client to the server. Was that the direction you wanted to concentrate on first? Run http://dslreports.com/speedtest and edit your question to include a link to your results page. I'd like to see your bufferbloat score and upload speed.

– Spiff – 2018-10-30T23:50:15.990

Another interesting thing to try would be to enable Windows 10's experimental support for the CUBIC TCP congestion control algorithm. I believe both Linux and macOS currently default to CUBIC, whereas Windows defaults to something called "Compound TCP (CTCP)". It's possible that something about the network path between your dorm and your Droplet confounds CTCP but doesn't faze CUBIC. Here are instructions for enabling CUBIC in Windows 10: https://blogs.technet.microsoft.com/networking/2017/07/13/core-network-stack-features-in-the-creators-update-for-windows-10/

– Spiff – 2018-10-30T23:58:13.650

How does a speed test, like speedtest.net, compare in the two OS's? – Xen2050 – 2018-10-31T15:26:01.807

My ping time to my Droplet from my server is less than a ms. I've tried 64KB and 1M but it seems to have made no difference. My main concentration is the default behavior of uploading from my computer to the Droplet. I've edited my post above to include the report. I also tried enabling CUBIC but again I don't see a difference in speeds. To confirm, this is the command "netsh int tcp set supplemental template=internet congestionprovider=cubic"? My speed tests on both reach up to gigabit speeds. My Windows machine can get gigabit in P2P and other applications.

– kimsbrian – 2018-10-31T15:47:27.400

FYI, should add a @kimsbrian to let a user know you're replying to them – Xen2050 – 2018-10-31T16:01:34.793

@Spiff Thank you for your help so far. If you could take another look, I'd really appreciate it. – kimsbrian – 2018-10-31T20:06:31.463

@Xen2050 I'm new to these forums so thanks for the heads up. – kimsbrian – 2018-10-31T20:07:47.980

@kimsbrian I wanted you to ping the Droplet from your Windows machine in your dorm room. There's no way "<1ms" is the right answer. – Spiff – 2018-10-31T21:40:25.250

@Spiff I had the same thought as well. I tried pinging other websites as well and also got <1ms for a lot of them. For example Amazon and Superuser were <1ms but Google was 7ms. On speedtest.net, I also get 1ms ping.

– kimsbrian – 2018-11-01T03:32:13.250

@kimsbrian Is your Windows machine in the dorm set to use some kind of on-campus proxy or something? I suspect something on-campus is responding to your pings. Do you know where your Droplet's underlying hardware is physically located? If it's 93 miles away or more, light can't travel there and back within 1ms, so we could use that to rule out "<1ms" being correct. – Spiff – 2018-11-01T23:31:49.390

@kimsbrian Anyway, judging from ping times in your dslreports results, I think you should estimate at least 20ms RTT to your Droplet. That makes your "bandwidth * delay product" (BDP) 0.020 seconds * 1,000,000,000 bits/sec = 20,000,000 bits = ~2.4 MebiBytes. So you should be running iperf with -w 3M to make sure you can keep that pipe full. Can you try running iperf that way and post your results? – Spiff – 2018-11-01T23:34:52.830

@Spiff I'm not 100% sure if there's a proxy but I wouldn't be surprised. My Droplet is definitely more than 93 miles away. I'm in Virginia and the Droplet is in New York. I noticed that my EC2 instance also located in Virginia seemed to get better performance at 30mbps if that indicates anything. Here are the results of running iperf with -w 3M to my Droplet.

– kimsbrian – 2018-11-02T13:24:48.870

@kimsbrian At this point I think you need to get in touch with your campus IT staff and figure out why some device on campus is replying to pings for IP addresses other than its own. It may turn out that your traffic is going through some kind of proxy that's limiting your performance. – Spiff – 2018-11-05T19:37:43.777

No answers