Skip to content

Very slow network speed on WSL2 #4901

Open

Description

@carl-berg

Windows build number: 10.0.19041.84
Dist: Ubuntu 18.04 LTS

I just installed WSL2 on my home computer for the first time and something i notice that i don't see on my work computer is that WSL2 has dramatically lower network speed (wget or git clone tested). Speeds on WSL seem to be about 10-20 kb/s wheras windows download speed seem to be correlating to my ISP spec of 100/10 Mbps or above.

Activity

  1. therealkenc commented on Feb 16, 2020

    @therealkenc

    Screencap speedtest-cli as a starting point.

    $ sudo apt install speedtest-cli
    $ speedtest-cli
    [...]
    

    image

  2. carl-berg commented on Feb 17, 2020

    @carl-berg
    Author

    Okies, here's speedtest on windows, in the browser:
    Speedtest_win

    ...and here's speedtest from wsl2:
    Wpeedtest_wsl2

  3. acirulis commented on Feb 17, 2020

    @acirulis

    Same here. Especially upload speed was drastically reduced - 36.61 -> 3.85 Mbit/s

  4. guilhermehrcosta commented on Mar 1, 2020

    @guilhermehrcosta

    Hi, same here. My download was drastrically reduced of 200Mbit/s to 2 Mbit/s. Is there a solution?

  5. AndrewGaspar commented on Mar 7, 2020

    @AndrewGaspar

    I'm hitting this issue, as well. Very frustrating.

  6. kennethnipper commented on Mar 11, 2020

    @kennethnipper

    I'm seeing same issue. Speedtest-cli in bash:
    image

    speedtest in Windows:
    image

  7. tin-liu commented on Mar 14, 2020

    @tin-liu

    Edit: After several reboots and adding the related folders as exceptions in Windows Defender as jituanlin 's referred blog pointed out, and then tried removing the exceptions because I wanted to check which folder exception actually helped (so eventually theoretically equivalent to reboots-only, but who knows?), now in WSL Ubuntu Ver. 2 I have down = ~80 Mbit/s & up = ~4 Mbit/s. The upload is still about only 1/10 of the actual limit, but the download is up-to-standard now.

    Also, the command speedtest is ~15 Mbit/s faster (download) than speedtest-cli for me.

    Old comment:
    Windows network faster than WSL Ubuntu Ver. 1 which faster than WSL Ubuntu Ver. 2 here:

    1. Windows Ookla on Web browser
      down ~88 Mbit/s
      up ~38 Mbit/s
    2. WSL Ubuntu Ver. 1 speedtest-cli
      down ~32 Mbit/s
      up ~4 Mbit/s
    3. WSL Ubuntu Ver. 2 speedtest-cli
      down ~3 Mbit/s
      up ~4 Mbit/s

    Cheers

  8. jituanlin commented on Mar 14, 2020

    @jituanlin

    After follow this blog
    My network/file access improve more than 5 times speed.

  9. rducom commented on Apr 8, 2020

    @rducom

    Same here, really annoying. Disabling AV (defender) doesn't helps
    image

  10. markgaze commented on May 3, 2020

    @markgaze

    Same here. Getting about 7Mbit/s on WSL2 and 30+ in Windows.

    Disabling Defender also made no difference for me either.

  11. Vildevil commented on May 15, 2020

    @Vildevil

    Same here :
    Windows and WSL :

    • Up 261mb/s
    • Down 248mb/s

    WSL 2 :

    • Up 1.60mb/s
    • Down 0.08mb/s
  12. copeland3300 commented on May 15, 2020

    @copeland3300

    Oddly, I'm getting decent results from the speedtest-cli, but things such as apt update are extremely slow, that is, less than a MB/s, where I'm used to seeing 30-40MB/s on my standard Ubuntu systems...

    Speedtest results...

    Retrieving speedtest.net configuration...
    Testing from Verizon Fios (108.28.56.14)...
    Retrieving speedtest.net server list...
    Selecting best server based on ping...
    Hosted by QTS Data Centers (Dulles, VA) [5.59 km]: 27.576 ms
    Testing download speed................................................................................
    Download: 427.07 Mbit/s
    Testing upload speed......................................................................................................
    Upload: 85.70 Mbit/s
    

    apt update results

    Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]
    Hit:2 http://archive.ubuntu.com/ubuntu focal InRelease
    Get:3 http://archive.ubuntu.com/ubuntu focal-updates InRelease [107 kB]
    Get:4 http://archive.ubuntu.com/ubuntu focal-backports InRelease [98.3 kB]
    Get:5 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [94.0 kB]
    Get:6 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [30.5 kB]
    Fetched 437 kB in 2s (197 kB/s)
    
  13. oliver-dungey commented on May 21, 2020

    @oliver-dungey

    Same issue here, dire network speed in WSL2. Performance with Linux or WSL is fine.

  14. 387 remaining items

  15. nielsq commented on Apr 8, 2025

    @nielsq

    I just had a crazy hunt with that issue on my Setup. It started with some developers on the team having very slow download speeds while pushing Git changes and downloading docker Container. We using Windows 10 and 11.
    Loading a 10 GB test file was in windows around 12 MB while the same link in WSL was around 200KB

    I switch from WiFi to LAN, different networks in the Company Infrastructure and even Phone hotspots.
    Nothing helped until I used a USB C Ethernet Adapter. Then suddenly it was full speed.
    Switching to a USB A Ethernet one. Slow again.

    Looking the driver version I saw that USB C was using
    Realtek USB FE Family Controller (Version 10.??) while all other (except Wifi) where using
    Realtek USB GbE Family Controller (Version 1159)

    Some research showed:
    10.?? format is the Windows 10 driver
    11?? (without the dot) is the Windows 11 driver

    FE was using Windows 10 and GBE Windows 11 driver

    Updating both to 1157 did nothing
    Downgrading both to 10.63 worked.

    You can download them from the Realtek site.

    But the Wifi is still slow. Downgrading the driver did not help here.
    I guess is a issue between windows driver and WSL

  16. AndreiOsipov commented on Apr 14, 2025

    @AndreiOsipov

    For resolve github download network issue i found this guide #6602
    setting nameserver 8.8.8.8 (google dns instead of windows incorrect dns ) in /etc/resolve.conf should help.

  17. tbaroti commented on Apr 21, 2025

    @tbaroti

    I also had similar issues recently. For me, only the upload speed was very slow. I tried all the followings with no luck:

    • switch between connecting to internet via ethernet or wifi
    • downgrade the ethernet/wifi driver on the host to older versions and update to latest
    • disable/enable IPv6 on the host ethernet/wifi interfaces
    • disable/enable LSO of the ethernet/wifi interface on the host via GUI (interface properties -> configure -> advanced)
    • switch between WSL networking mode NAT and mirrored
    • disable/enable LSO of the vEthernet* interfaces of the host (powershell Disable-NetAdapterLso / Enable-NetAdapterLso) -- this method actually solved the issue in NAT networking mode, but I couldn't find a way to persist the setting between reboots or even host wifi/ethernet connection changes

    Then I finally managed to make it work thanks to microsoft/vscode-remote-release#10717 (comment) with the following config:

    • WSL networking mode "mirrored" (.wslconfig)
    • using systemd on guest OS (wsl.conf)
    • on the guest OS (Ubuntu 24.04): adding "TCPSegmentationOffload=false" in the [Link] section of 99-default.link file, so TCP segmentation offload is set to false when the guest OS boots. if you're unsure about the .link file, what it is used for or its whereabouts, I suggest to read first about it: https://manpages.ubuntu.com/manpages/focal/man5/systemd.link.5.html
    [Match]
    OriginalName=*
    
    [Link]
    NamePolicy=keep kernel database onboard slot path
    AlternativeNamesPolicy=database onboard slot path
    MACAddressPolicy=persistent
    TCPSegmentationOffload=false
    
  18. ravihlb commented on May 10, 2025

    @ravihlb

    https://townsyio.medium.com/wsl2-how-to-fix-download-speed-3edb0c348e29

    disabling Large Send Offload Version 2 (IPv4) and Large Send Offload Version 2 (IPv6) fixed the issue for me

    Thank you so much man this also solved it for me. Windows 10 Version 10.0.19045 Build 19045.

  19. Gordon01 commented on May 23, 2025

    @Gordon01

    In Windows 11 it's very hard to find those settings in GUI. However, this works:

    Get LSO settings:

    Get-NetAdapterAdvancedProperty -Name vEthernet* | ? DisplayName -like 'Large Send Offload*' | ft -wrap
    

    Disable LSO (requires admin privileges):

    Get-NetAdapterAdvancedProperty -Name vEthernet* | ? DisplayName -like 'Large Send Offload*v4*' | Set-NetAdapterAdvancedProperty -DisplayValue "Disabled"
    
  20. hedgineer-norm commented on Jun 1, 2025

    @hedgineer-norm

    For me this turned out to be an issue with the Virtualbox Host-only network. After disabling those in Control Panel\Network and Internet\Network Connections it was normal.

  21. manzoliric commented on Jul 26, 2025

    @manzoliric

    In Windows 11 it's very hard to find those settings in GUI. However, this works:

    Get LSO settings:

    Get-NetAdapterAdvancedProperty -Name vEthernet* | ? DisplayName -like 'Large Send Offload*' | ft -wrap
    

    Disable LSO (requires admin privileges):

    Get-NetAdapterAdvancedProperty -Name vEthernet* | ? DisplayName -like 'Large Send Offload*v4*' | Set-NetAdapterAdvancedProperty -DisplayValue "Disabled"
    

    thank you!

  22. paulo101977 commented on Aug 16, 2025

    @paulo101977

    Just for people still looking for a complete solution
    Create this file in C:\Users\YOURUSER\.wslconfig

    [wsl2]
    
    [experimental]
    networkingMode=mirrored
    

    And run wsl --shutdown in your terminal
    Thats it, when you re-start your WSL distro, it should have the same speed as your Windows host
    Read more about this here: https://learn.microsoft.com/en-us/windows/wsl/wsl-config#wslconfig

    That really hit the spot. Well done!

    It works very well. Thanks!!!!!!!!!!!!!

  23. AmricprogrammerReal commented on Nov 11, 2025

    @AmricprogrammerReal

    use awsome linux driver for this thing i increase the internet speed (0V0)

  24. classicrocker883 commented on Nov 12, 2025

    @classicrocker883

    for anyone still wondering about the issue... I have found out it isn't just WSL2.
    I found this roadblock on just straight Ubuntu, no Windows.

    Recently updating an Ubuntu installed on a drive (that I haven't used in a while), I found having the same issue, specifically in the Terminal. While using WIFI only.
    I have two WIFI things installed, one PCI and one USB. I mean why not - you get faster DL speeds.

    I want you to try this - use your phone with USB Tethering for internet.
    Following done using Android:

    • Plug your phone into the computer
      (use a data usb-c to USB >=3.0)
    • You may receive a pop-up to Allow Data or something - Hit 'Allow' or whatever
    • Go to Settings > Search for Tether
    • Enable USB Tethering.
      I haven't tried Bluetooth tethering
      but I suppose that can work...
      Only that USB speeds don't have bottlenecks.

    Doing this I noticed Terminal DL speeds were normal, or as it should be.

    also related - for more info:
    https://www.linux.org/threads/how-to-fix-very-slow-download-speed-on-ubuntu-22-04-lts-specially-on-terminal-downloads.46574/

    The iwlwifi driver is actually one of those supported by the manufacturer for linux, unlike a lot of other wifi drivers which have been reverse engineered by linux developers, and which don't work optimally at times, so I guess in theory the iwlwifi one should work as well in linux as elsewhere.
    ...
    the speed issue has in some cases been resolved by using one or more driver options which are placed in a file created for the purpose:
    /etc/modprobe.d/iwlwifi.conf

    Some success has occurred using the option: 11n_disable=8 in that created file with the following contents:
    options iwlwifi 11n_disable=8

    If by chance there already is an option somewhere such as: 11n_disable=1, then just change the number to 8 to see if it makes a difference.

    Other suggested options include: lar_disable=1 swcrypto=1 bt_coex_active=0, which can be added to the options line to see if they are useful. The process is a bit experimental.

    Sometimes the problem has been sourced in the "2.4 GHz vs 5 GHz" issue, which led to the suggested modprobe entry:
    options cfg80211 cfg80211_disable_40mhz_24ghz=Y
    which disables the 40 MHz channels usage on the 2.4GHz band.

  25. ericblade commented on Nov 26, 2025

    @ericblade

    fwiw, i generally only have this problem in docker containers now, or in command line linux applications. with recent versions of wsl, anything that is GUI based i get full speed, command line i get around about 300mbps on a 1.2gb link, and in docker, i get up to 150mbps .. (improved from 100mbps cap a few months ago)

  26. nicolashenry commented on Jan 16, 2026

    @nicolashenry

    If it can help some people, using "MediaTek Wi-FI 6E MT7922 (RZ616) 160MHz PCIe Adapter", I had to revert the update of the driver to an old version to make it work properly with WSL2. With the updated version of the driver, once WSL2 is started, all the computer networks became slow/unstable, the fact that it worked properly using wired connection helped me a lot to understand this.

  27. dropdeadfu commented on Mar 9, 2026

    @dropdeadfu

    for me disabling ipv6 on the host network interface solved the issue, at least a workaround

  28. Natzukashi commented on Apr 2, 2026

    @Natzukashi

    I also had similar issues recently. For me, only the upload speed was very slow. I tried all the followings with no luck:

    * switch between connecting to internet via ethernet or wifi
    
    * downgrade the ethernet/wifi driver on the host to older versions and update to latest
    
    * disable/enable IPv6 on the host ethernet/wifi interfaces
    
    * disable/enable LSO of the ethernet/wifi interface on the host via GUI (interface properties -> configure -> advanced)
    
    * switch between WSL networking mode NAT and mirrored
    
    * disable/enable LSO of the vEthernet* interfaces of the host (powershell Disable-NetAdapterLso / Enable-NetAdapterLso) -- this method actually solved the issue in NAT networking mode, but I couldn't find a way to persist the setting between reboots or even host wifi/ethernet connection changes
    

    Then I finally managed to make it work thanks to microsoft/vscode-remote-release#10717 (comment) with the following config:

    * WSL networking mode "mirrored" (.wslconfig)
    
    * using systemd on guest OS (wsl.conf)
    
    * on the guest OS (Ubuntu 24.04): adding "TCPSegmentationOffload=false" in the [Link] section of 99-default.link file, so TCP segmentation offload is set to false when the guest OS boots. if you're unsure about the .link file, what it is used for or its whereabouts, I suggest to read first about it: https://manpages.ubuntu.com/manpages/focal/man5/systemd.link.5.html
    
    [Match]
    OriginalName=*
    
    [Link]
    NamePolicy=keep kernel database onboard slot path
    AlternativeNamesPolicy=database onboard slot path
    MACAddressPolicy=persistent
    TCPSegmentationOffload=false
    

    Man i want to thank you so much

    this was bugging me for so long and you saved me omg.

  29. yukkes commented on Nov 15, 2026

    @yukkes

    Could WSL disable TSO by default on eth0 in NAT mode (or disable LSOv2 on vEthernet (WSL)), and fix hv_netvsc ignoring TCPSegmentationOffload=false in systemd .link files?

    Several comments above (Tamas Baroti (@tbaroti), Alexander (@Gordon01), Nicolas HENRY (@nicolashenry), Parijat (@Natzukashi)) hit the same bug: on MediaTek MT7922 (RZ616) driver 3.4.0.x+, multi-segment TSO bursts from WSL2 (NAT mode) wedge the Wi-Fi TX queue, stalling both WSL uploads and host Wi-Fi. Users can't persist a fix because HNS resets vEthernet (WSL) LSO on reboot and hv_netvsc ignores .link TSO settings.

    Measured on Win11 26300 + WSL 3.0.5.0 (6.18.58.1) + MT7922:

    • NAT mode only: mirrored is fine; guest-to-host (172.19.80.1) runs at 240 MB/s with TSO on.
    • 3+ TSO segments trigger it: 1-2 segments (gso_max_size <= 2200) work; 3+ segments (>= 2896) stall at 0.01 MB/s. ethtool -K eth0 tso off (keeping gso on) restores 20-29 MB/s.
    • MT7922 driver >= 3.4.0.x: 3.3.0.1030 works; 3.4.0.1329+ stalls and spikes host LAN ping to 220-1350 ms.
    • hv_netvsc ignores .link TSO: TCPSegmentationOffload=false leaves tcp-segmentation-offload: on. Only ethtool works.

    Defaulting tso off in NAT mode (keeping gso on) has negligible CPU cost and avoids this out of the box.

    Workaround for NAT mode today: roll back MT7922 to 3.3.0.1030 (Catalog ID f754692c-0662-454c-b874-659742cd6e2d), or add /etc/udev/rules.d/90-wsl-tso.rules:
    ACTION=="add", SUBSYSTEM=="net", KERNEL=="eth*", RUN+="/usr/sbin/ethtool -K %k tso off"

    Repro & details

    Repro (WSL2 NAT mode, MT7922 >= 3.4.0)

    IFACE=$(ip route show default | awk '{for(i=1;i<=NF;i++) if($i=="dev"){print $(i+1); exit}}')
    sudo ethtool -K "$IFACE" tso on
    head -c 8388608 /dev/urandom > /tmp/8mb.bin
    curl -o /dev/null --max-time 20 -X POST --data-binary @/tmp/8mb.bin \
      -H 'Content-Type: application/octet-stream' -w '%{speed_upload}\n' \
      https://speed.cloudflare.com/__up
    # stalls at ~0.01 MB/s; `sudo ethtool -K "$IFACE" tso off` recovers to 20-29 MB/s

    Environment

    • HP OmniBook 7 Aero 13-bg1xxx, Win11 26300, WSL 3.0.5.0 (6.18.58.1-microsoft-standard-WSL2), Ubuntu 26.04
    • MediaTek MT7922 (RZ616), PCI\VEN_14C3&DEV_0616&SUBSYS_223C14C3&REV_02

    Driver bisect (8 MB upload with tso on)

    • Working: 3.3.0.1030 -> 19-25 MB/s, host LAN ping 6-9 ms
    • Broken: 3.4.0.1329, 3.5.0.1380, 3.6.0.1425 -> 0.00-0.01 MB/s (stalls), host LAN ping 222-1352 ms

    Ruled out

    • pktmon: 0 drops in Windows (frames leave Wi-Fi segmented at 1472 B)
    • No effect: Disable-NetAdapterRsc, disabling A-MSDU, guest GSO/GRO/MTU 1400, reinstalling the same driver
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions