You are not logged in.
This is my first experience with Arch Linux and my first experience with Linux.
I have been enjoying using Arch Linux, but one thing is bothering me and which I could not find a fix for. My download speeds for Steam specifically (speedtest.net is not throttled) seem to be limited in some fashion to around 15 MB/s. After looking up the issue, I installed dnsmasq as a DNS cache, but to no avail. I was hoping to see if others have experienced this, if there is a possible fix for it or if it is a Steam bug. I could not find any other resources to help solve the issue.
If needed: ISP is Videotron and I am located in Québec, Canada.
EDIT: this does not happen on an Arch Linux virtual machine, so it is something wrong with my configuration, I think. I am unsure of what, though.
EDIT2: interestingly, connecting to a VPN dramatically increases the download speed to ~50 MB/s max. This is not a proper solution.
Last edited by alluminy (2024-01-15 23:24:00)
Offline
Do you have conflicting network services?
find /etc/systemd -type l -exec test -f {} \; -print | awk -F'/' '{ printf ("%-40s | %s\n", $(NF-0), $(NF-1)) }' | sort -fOffline
I do not believe so. This is the output I receive from the terminal:
dbus-org.freedesktop.nm-dispatcher.service | system
dbus-org.freedesktop.timesync1.service | system
display-manager.service | system
dnsmasq.service | multi-user.target.wants
getty@tty1.service | getty.target.wants
NetworkManager.service | multi-user.target.wants
NetworkManager-wait-online.service | network-online.target.wants
nordvpnd.service | default.target.wants
p11-kit-server.socket | sockets.target.wants
pipewire-pulse.socket | sockets.target.wants
pipewire-session-manager.service | user
pipewire.socket | sockets.target.wants
remote-fs.target | multi-user.target.wants
systemd-timesyncd.service | sysinit.target.wants
wireplumber.service | pipewire.service.wants
xdg-user-dirs-update.service | default.target.wantsOffline
interestingly, connecting to a VPN dramatically increases the download speed to ~50 MB/s max
So either your ISP or Steam quotas you.
this does not happen on an Arch Linux virtual machine
On the critical arch host?
Otherwise, same ISP? Same segment? Do both systems resolve the same IP for the steam server?
IPv6 ./. IPv4 issue?
Does it happen if you disable IPv6?
Offline
I don't know why my ISP or Steam would quota me on Arch and not Windows.
No, the virtual machine was hosted on Windows.
Same ISP, same segment, same IP for the Steam server.
Disabling IPv6 did not change anything.
Offline
Are you running windows on the same host?
3rd link below. Mandatory.
Disable it (it's NOT the BIOS setting!) and reboot windows and linux twice for voodo reasons.
Offline
Yes, the OSes are on the same host, although, they're not on the same disk that is partitioned off. I am unsure if that detail matters.
I have disabled the option using the command prompt and rebooted both OSes twice.
Offline
I am unsure if that detail matters.
No, disk is irrelevant. Does the original issue remain?
In doubt also reboot the router.
Offline
Still present. Reboot didn't help.
Offline
Compare
ip a; ip r; dig <critical steam domain here>between VM, VPN and troublesome host.
The VPN tells us that it's not the client or a library or LAN/disk IO, the VM tells us that it's not routing/peering or your IP being quota'd.
It basically has to be DNS, but dnsmasq should™ prevent that - you're not (also) using resolved?
Offline
For the comparison,
for the ip a, ip r commands: while connected to VPN, there was no inet6 header section. On the virtual machine, there was no eno1 or wlp11s0 section, and instead there was enp0s3.
For the dig, the header opcode id was different on all three instances but it's probably random. There was an "ad" flag while connected to VPN and AUTHORITY was 1. This meant that there was an authority section while connected to the VPN that was not there on the other two instances. opt pseudosection udp was different for all three, but that's also probably random. The query time was the fastest on the host, at 0 ms, then when connected to VPN, it was slightly slower, then virtual machine was a little bit more slow. The server was 127.0.0.1 on the host, but something random while connected to VPN and for the virtual machine. The message size on the host was 42, while it was 117 on the other two instances.
Please tell me if anything is unclear. Should I just post the outputs directly?
I don't know what you mean by "resolved."
Offline
"systemd-resolved" - You can check whether you're running it w/ "resolvectl status"
And yes - please don't paraphrase, https://bbs.archlinux.org/viewtopic.php?id=57855
If you can query the domain at 0ms, it's not the DNS.
Can you please detail the specific steam domain/url you use as a testcase?
Offline
Sorry about that!
Host:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether e8:9c:25:33:9d:86 brd ff:ff:ff:ff:ff:ff
altname enp10s0
inet 10.0.0.5/24 brd 10.0.0.255 scope global dynamic noprefixroute eno1
valid_lft 171888sec preferred_lft 171888sec
3: wlp11s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether b6:82:0f:67:90:7a brd ff:ff:ff:ff:ff:ff permaddr 10:68:38:f2:5e:5a
default via 10.0.0.1 dev eno1 proto dhcp src 10.0.0.5 metric 100
10.0.0.0/24 dev eno1 proto kernel scope link src 10.0.0.5 metric 100
; <<>> DiG 9.18.21 <<>> 104.91.99.223
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 34915
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;104.91.99.223. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Thu Jan 11 18:36:24 EST 2024
;; MSG SIZE rcvd: 42Host while connected to VPN:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether e8:9c:25:33:9d:86 brd ff:ff:ff:ff:ff:ff
altname enp10s0
inet 10.0.0.5/24 brd 10.0.0.255 scope global dynamic noprefixroute eno1
valid_lft 171619sec preferred_lft 171619sec
3: wlp11s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether b6:82:0f:67:90:7a brd ff:ff:ff:ff:ff:ff permaddr 10:68:38:f2:5e:5a
4: nordlynx: <POINTOPOINT,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.5.0.2/32 scope global nordlynx
valid_lft forever preferred_lft forever
default via 10.0.0.1 dev eno1 proto dhcp src 10.0.0.5 metric 100
10.0.0.0/24 dev eno1 proto kernel scope link src 10.0.0.5 metric 100
; <<>> DiG 9.18.21 <<>> 104.91.99.223
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 3481
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;104.91.99.223. IN A
;; AUTHORITY SECTION:
. 1800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2024011102 1800 900 604800 86400
;; Query time: 9 msec
;; SERVER: 103.86.96.100#53(103.86.96.100) (UDP)
;; WHEN: Thu Jan 11 18:40:53 EST 2024
;; MSG SIZE rcvd: 117Virtual machine:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:d1:1c:fb brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
valid_lft 86246sec preferred_lft 86246sec
inet6 fe80::1ec1:5a4e:4921:3703/64 scope link noprefixroute
valid_lft forever preferred_lft forever
default via 10.0.2.2 dev enp0s3 proto dhcp src 10.0.2.15 metric 100
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100
; <<>> DiG 9.18.21 <<>> 104.91.99.223
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 7419
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;104.91.99.223. IN A
;; AUTHORITY SECTION:
. 10800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2024011102 1800 900 604800 86400
;; Query time: 19 msec
;; SERVER: 24.201.245.77#53(24.201.245.77) (UDP)
;; WHEN: Thu Jan 11 18:46:48 EST 2024
;; MSG SIZE rcvd: 117Running resolvectl status returns Failed to get global data: Could not activate remote peer: activation request failed: unknown unit., so I don't have it running.
EDIT: The Steam server is at steampowered.com
Last edited by alluminy (2024-01-12 18:33:38)
Offline
Errr… you dig the domain, not an IP.
104.91.99.223 is an akamai server in Boston and the VM uses the DNS from your ISP.
Edit: ie "dig steampowered.com", this is particularily important since if the different environments resolve different akamai servers for the domain, that can have VAST impact on the performance.
Last edited by seth (2024-01-12 23:51:17)
Offline
Woah I don't know how I did that. Sorry!
Host:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host proto kernel_lo
valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether e8:9c:25:33:9d:86 brd ff:ff:ff:ff:ff:ff
altname enp10s0
inet 10.0.0.5/24 brd 10.0.0.255 scope global dynamic noprefixroute eno1
valid_lft 168708sec preferred_lft 168708sec
3: wlp11s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether d6:a2:c3:10:e9:3e brd ff:ff:ff:ff:ff:ff permaddr 10:68:38:f2:5e:5a
default via 10.0.0.1 dev eno1 proto dhcp src 10.0.0.5 metric 100
10.0.0.0/24 dev eno1 proto kernel scope link src 10.0.0.5 metric 100
; <<>> DiG 9.18.21 <<>> steampowered.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15728
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;steampowered.com. IN A
;; ANSWER SECTION:
steampowered.com. 20 IN A 104.110.149.164
;; Query time: 19 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Fri Jan 12 18:50:05 EST 2024
;; MSG SIZE rcvd: 61Host while connected to VPN:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether e8:9c:25:33:9d:86 brd ff:ff:ff:ff:ff:ff
altname enp10s0
inet 10.0.0.5/24 brd 10.0.0.255 scope global dynamic noprefixroute eno1
valid_lft 168670sec preferred_lft 168670sec
3: wlp11s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether d6:a2:c3:10:e9:3e brd ff:ff:ff:ff:ff:ff permaddr 10:68:38:f2:5e:5a
5: nordlynx: <POINTOPOINT,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.5.0.2/32 scope global nordlynx
valid_lft forever preferred_lft forever
default via 10.0.0.1 dev eno1 proto dhcp src 10.0.0.5 metric 100
10.0.0.0/24 dev eno1 proto kernel scope link src 10.0.0.5 metric 100
; <<>> DiG 9.18.21 <<>> steampowered.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24482
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;steampowered.com. IN A
;; ANSWER SECTION:
steampowered.com. 20 IN A 104.127.80.173
;; Query time: 76 msec
;; SERVER: 103.86.96.100#53(103.86.96.100) (UDP)
;; WHEN: Fri Jan 12 18:50:44 EST 2024
;; MSG SIZE rcvd: 61Virtual machine:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:d1:1c:fb brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
valid_lft 86283sec preferred_lft 86283sec
inet6 fe80::1ec1:5a4e:4921:3703/64 scope link noprefixroute
valid_lft forever preferred_lft forever
default via 10.0.2.2 dev enp0s3 proto dhcp src 10.0.2.15 metric 100
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100
; <<>> DiG 9.18.21 <<>> steampowered.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6340
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;steampowered.com. IN A
;; ANSWER SECTION:
steampowered.com. 20 IN A 104.110.149.164
;; Query time: 26 msec
;; SERVER: 24.201.245.77#53(24.201.245.77) (UDP)
;; WHEN: Fri Jan 12 18:54:36 EST 2024
;; MSG SIZE rcvd: 61Offline
VM and host system get you the same IP (akamai in New York), though and the VPN hands you an akamai server in New Jersey
All in acceptable time (w/ teh VPN expectably the slowest response) - it's not the DNS
I'd suggest to reboot your modem until you get a new WAN IP, but that doesn't fit the VM situation ![]()
MTUs are all standard, power saving doesn't fit either VPN or "steam only", shy of "steam quotas your client ID specifically"
Do you have the url of the file you're downloading from steampowered as test object?
You could test the behavior of wget/curl to see whether it's somehow browser/extension specific.
Offline
I will try to obtain a new IP.
I don't have a URL. I am trying to download games from the Steam client, which probably does more voodoo stuff behind the scenes when downloading. If it was a direct HTTP download, I'm thinking I wouldn't have problems.
Offline
You can sniff steam out w/ wireshark.
Offline
It seems to get packets from multiple Valve IP addresses, but I don't have a domain still.
Offline
Do you run some local FW (iptables, nftables, ufw, firewalld)?
It's a wacko-theory, but you might be blocking or rate-controlling some steam related IPs that are not used through the VPN?
Offline
No.
Offline
I had the same problem
https://wiki.archlinux.org/title/steam# … _downloads
Offline
Thank you so much, panym! This has significantly improved speeds, from ~15 MB/s to ~30 MB/s. Another console command, @fDownloadRateImprovementToAddAnotherConnection 1.0, has also made an improvement in my experience, but it trashed download speeds for other users, so this one is hit-or-miss. I am at ~50 MB/s now. Not as good as on Windows @ ~100 MB/s, but I feel like just taking it at this point. This is a sufficient solution.
I am now wondering why my system would struggle with HTTP2 connections? Is it a Steam bug or is it my system configuration?
Offline
https://en.wikipedia.org/wiki/HTTP/2#TC … e_blocking
You could try to increase the buffer: https://www.cyberciti.biz/faq/linux-tcp-tuning/
I'm not really sure how to sqare that w/ the VPN situation, though…
Offline
Thank you, seth! It's higher now. It's hovering between 60 MB/s and 90 MB/s.
Offline