Your system information
- Steam client version: 1782952760
- Distribution: CachyOS
- Kernel: 7.1.1-2-cachyos
- CPU: Ryzen 7 9800X3D
- GPU: RTX 5090
- Storage: WD Black SN850X 2TB NVMe
- Network: Intel X520 10GbE, driver
ixgbe
- Internet: AT&T 5Gb service
- Router: UDM Pro SE
Problem
Steam downloads on Linux are much slower than expected. On my normal AT&T route, Steam usually downloads around 100 to 350 Mbps, despite having a 5Gb connection and a 10GbE NIC. The same system can do much faster speeds outside Steam, and the NIC is linked correctly at 10Gbps full duplex.
Steam is not CPU or disk bottlenecked. During downloads, pidstat did not show Steam maxing out the CPU, and the system is using a fast NVMe drive.
Network/NIC verification
Linux detects the active NIC correctly:
driver: ixgbe
version: 7.1.1-2-cachyos
Speed: 10000Mb/s
Duplex: Full
Link detected: yes
Things I tried that did not fix it
- Changed Steam download regions
- Cleared Steam download cache
- Verified Steam bandwidth limit is disabled
- Tried Steam Linux HTTP/2 workaround in
steam_dev.cfg
- Tried forcing more Steam download sources/connections
- Tried disabling IPv6
- Tried different DNS providers
- Tried local
dnsmasq caching
- Tried disabling NIC offloads with
ethtool
- Tried BBR TCP congestion control
- Tried native Steam / Steam runtime options
- Restarted NetworkManager
- Checked CPU usage during downloads with
pidstat
- Confirmed NIC is linked at 10Gbps full duplex
- Confirmed MTR showed 0% loss to final Valve CDN destinations
Key finding
Using a VPN immediately raised Steam downloads to around 900 Mbps, which appears to be the VPN throughput limit.
The major difference was the number and selection of Steam CDN endpoints.
Without VPN, Steam heavily favored these two Valve CDN IPs:
205.196.6.165
162.254.194.27
Example without VPN:
8 205.196.6.165
8 162.254.194.27
1 23.12.3.102
1 199.232.215.82
1 162.254.194.57
With VPN, Steam opened many more CDN connections across more Valve cache nodes:
8 205.196.6.177
8 205.196.6.173
8 205.196.6.171
8 205.196.6.168
8 205.196.6.167
8 205.196.6.164
8 162.254.194.27
8 162.254.193.7
8 162.254.193.6
8 162.254.193.42
8 162.254.193.4
8 162.254.193.39
8 162.254.193.38
8 162.254.193.37
8 162.254.193.36
8 162.254.193.13
3 205.196.6.165
Workaround
I blackholed the two slow CDN IPs locally:
sudo ip route add blackhole 205.196.6.165
sudo ip route add blackhole 162.254.194.27
pkill -9 -f 'steam|steamwebhelper'
steam
After doing this, Steam selected different CDN endpoints:
8 34.104.36.43
8 23.215.11.61
8 23.215.11.34
8 199.232.215.82
8 199.232.211.82
2 23.12.3.102
2 23.10.165.29
1 23.12.12.110
1 199.232.211.52
1 13.35.226.166
Download speed improved to around 1.9 Gbps.
Command used to inspect Steam CDN IPs
ss -tnp | grep steam | grep ':443' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
MTR observations
Off VPN, MTR to the final Valve CDN destinations showed 0% loss. So this does not look like simple packet loss.
Example final destinations:
162-254-194-27.valve.net 0.0% loss, ~25 ms
205.196.6.165 0.0% loss, ~48 ms
Conclusion
This appears to be a Steam CDN selection/fanout issue or a route specific CDN assignment problem. On my normal AT&T route, Steam heavily favors a small number of slow Valve CDN IPs. When those IPs are blocked, or when I use a VPN, Steam selects a broader/faster set of CDN endpoints and download speed improves dramatically.
The workaround is not ideal because users should not need to manually blackhole CDN IPs. It would be helpful if Steam could detect poor CDN throughput and rotate away from underperforming cache nodes more aggressively.
Your system information
ixgbeProblem
Steam downloads on Linux are much slower than expected. On my normal AT&T route, Steam usually downloads around 100 to 350 Mbps, despite having a 5Gb connection and a 10GbE NIC. The same system can do much faster speeds outside Steam, and the NIC is linked correctly at 10Gbps full duplex.
Steam is not CPU or disk bottlenecked. During downloads,
pidstatdid not show Steam maxing out the CPU, and the system is using a fast NVMe drive.Network/NIC verification
Linux detects the active NIC correctly:
Things I tried that did not fix it
steam_dev.cfgdnsmasqcachingethtoolpidstatKey finding
Using a VPN immediately raised Steam downloads to around 900 Mbps, which appears to be the VPN throughput limit.
The major difference was the number and selection of Steam CDN endpoints.
Without VPN, Steam heavily favored these two Valve CDN IPs:
Example without VPN:
With VPN, Steam opened many more CDN connections across more Valve cache nodes:
Workaround
I blackholed the two slow CDN IPs locally:
sudo ip route add blackhole 205.196.6.165 sudo ip route add blackhole 162.254.194.27 pkill -9 -f 'steam|steamwebhelper' steamAfter doing this, Steam selected different CDN endpoints:
Download speed improved to around 1.9 Gbps.
Command used to inspect Steam CDN IPs
MTR observations
Off VPN, MTR to the final Valve CDN destinations showed 0% loss. So this does not look like simple packet loss.
Example final destinations:
Conclusion
This appears to be a Steam CDN selection/fanout issue or a route specific CDN assignment problem. On my normal AT&T route, Steam heavily favors a small number of slow Valve CDN IPs. When those IPs are blocked, or when I use a VPN, Steam selects a broader/faster set of CDN endpoints and download speed improves dramatically.
The workaround is not ideal because users should not need to manually blackhole CDN IPs. It would be helpful if Steam could detect poor CDN throughput and rotate away from underperforming cache nodes more aggressively.